@notmrabhi/flowforge 0.1.50 → 0.1.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{SchemaBuilderDrawer-BZ7-GVP_.js → SchemaBuilderDrawer-BP7aZgFe.js} +2 -2
- package/dist/{SchemaBuilderDrawer-BZ7-GVP_.js.map → SchemaBuilderDrawer-BP7aZgFe.js.map} +1 -1
- package/dist/{SchemaBuilderDrawer-CLZy4ZoT.js → SchemaBuilderDrawer-CIxQGffa.js} +2 -2
- package/dist/{SchemaBuilderDrawer-CLZy4ZoT.js.map → SchemaBuilderDrawer-CIxQGffa.js.map} +1 -1
- package/dist/canvas.cjs +1 -1
- package/dist/canvas.js +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.d.ts +7 -0
- package/dist/form.js +2 -2
- package/dist/{index-tyzgIY9U.js → index-B-D9UuLO.js} +152 -144
- package/dist/{index-tyzgIY9U.js.map → index-B-D9UuLO.js.map} +1 -1
- package/dist/{index-h1mUpS7l.js → index-B-vpguq_.js} +2 -2
- package/dist/{index-h1mUpS7l.js.map → index-B-vpguq_.js.map} +1 -1
- package/dist/{index-Cjql1zwT.js → index-BbYsmgpo.js} +2 -2
- package/dist/{index-Cjql1zwT.js.map → index-BbYsmgpo.js.map} +1 -1
- package/dist/{index-idr4zHMF.js → index-BsgdZXaY.js} +2 -2
- package/dist/{index-idr4zHMF.js.map → index-BsgdZXaY.js.map} +1 -1
- package/dist/{index-cwtx0Uej.js → index-DUbQPmIx.js} +6 -6
- package/dist/{index-cwtx0Uej.js.map → index-DUbQPmIx.js.map} +1 -1
- package/dist/{index-B-K6-s8t.js → index-hv7IJZ9j.js} +2 -2
- package/dist/{index-B-K6-s8t.js.map → index-hv7IJZ9j.js.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.js +3 -3
- package/dist/{templateSkeletons-Dj88q55j.js → templateSkeletons-f-XQQvyE.js} +2 -2
- package/dist/{templateSkeletons-Dj88q55j.js.map → templateSkeletons-f-XQQvyE.js.map} +1 -1
- package/dist/{templateSkeletons-DfkoJMrg.js → templateSkeletons-gOva2Xus.js} +2 -2
- package/dist/{templateSkeletons-DfkoJMrg.js.map → templateSkeletons-gOva2Xus.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templateSkeletons-DfkoJMrg.js","sources":["../node_modules/@dagrejs/dagre/dist/dagre.esm.js","../src/WorkflowCanvas/LayoutUpdater.tsx","../src/WorkflowCanvas/FlowForgeHeader.tsx","../src/WorkflowCanvas/BaseDrawer.tsx","../src/WorkflowCanvas/TriggerSelectorDrawer.tsx","../src/WorkflowCanvas/NodePickerDrawer.tsx","../src/WorkflowCanvas/NodeConfigDrawer.tsx","../src/WorkflowCanvas/SubWorkflowPreviewDrawer.tsx","../src/WorkflowCanvas/WorkflowCanvas.tsx","../src/WorkflowCanvas/WorkflowTemplateLibrary.tsx","../src/WorkflowCanvas/WorkflowExecutionHistory.tsx","../src/WorkflowCanvas/templateSkeletons.ts"],"sourcesContent":["var ge=Object.defineProperty;var hn=(e,n,t)=>n in e?ge(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var fn=(e,n)=>{for(var t in n)ge(e,t,{get:n[t],enumerable:!0})};var pe=(e,n,t)=>hn(e,typeof n!=\"symbol\"?n+\"\":n,t);var z={};fn(z,{Graph:()=>p,alg:()=>R,json:()=>ye,version:()=>pn});var bn=Object.defineProperty,Le=(e,n)=>{for(var t in n)bn(e,t,{get:n[t],enumerable:!0})},p=class{constructor(e){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},e&&(this._isDirected=\"directed\"in e?e.directed:!0,this._isMultigraph=\"multigraph\"in e?e.multigraph:!1,this._isCompound=\"compound\"in e?e.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[\"\\0\"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return typeof e!=\"function\"?this._defaultNodeLabelFn=()=>e:this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(e=>Object.keys(this._in[e]).length===0)}sinks(){return this.nodes().filter(e=>Object.keys(this._out[e]).length===0)}setNodes(e,n){return e.forEach(t=>{n!==void 0?this.setNode(t,n):this.setNode(t)}),this}setNode(e,n){return e in this._nodes?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=\"\\0\",this._children[e]={},this._children[\"\\0\"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return e in this._nodes}removeNode(e){if(e in this._nodes){let n=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],this.children(e).forEach(t=>{this.setParent(t)}),delete this._children[e]),Object.keys(this._in[e]).forEach(n),delete this._in[e],delete this._preds[e],Object.keys(this._out[e]).forEach(n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,n){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(n===void 0)n=\"\\0\";else{n+=\"\";for(let t=n;t!==void 0;t=this.parent(t))if(t===e)throw new Error(\"Setting \"+n+\" as parent of \"+e+\" would create a cycle\");this.setNode(n)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=!0,this}parent(e){if(this._isCompound){let n=this._parent[e];if(n!==\"\\0\")return n}}children(e=\"\\0\"){if(this._isCompound){let n=this._children[e];if(n)return Object.keys(n)}else{if(e===\"\\0\")return this.nodes();if(this.hasNode(e))return[]}return[]}predecessors(e){let n=this._preds[e];if(n)return Object.keys(n)}successors(e){let n=this._sucs[e];if(n)return Object.keys(n)}neighbors(e){let n=this.predecessors(e);if(n){let t=new Set(n);for(let r of this.successors(e))t.add(r);return Array.from(t.values())}}isLeaf(e){let n;return this.isDirected()?n=this.successors(e):n=this.neighbors(e),n.length===0}filterNodes(e){let n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph()),Object.entries(this._nodes).forEach(([o,i])=>{e(o)&&n.setNode(o,i)}),Object.values(this._edgeObjs).forEach(o=>{n.hasNode(o.v)&&n.hasNode(o.w)&&n.setEdge(o,this.edge(o))});let t={},r=o=>{let i=this.parent(o);return!i||n.hasNode(i)?(t[o]=i!=null?i:void 0,i!=null?i:void 0):i in t?t[i]:r(i)};return this._isCompound&&n.nodes().forEach(o=>n.setParent(o,r(o))),n}setDefaultEdgeLabel(e){return typeof e!=\"function\"?this._defaultEdgeLabelFn=()=>e:this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(e,n){return e.reduce((t,r)=>(n!==void 0?this.setEdge(t,r,n):this.setEdge(t,r),r)),this}setEdge(e,n,t,r){let o,i,s,a,d=!1;typeof e==\"object\"&&e!==null&&\"v\"in e?(o=e.v,i=e.w,s=e.name,arguments.length===2&&(a=n,d=!0)):(o=e,i=n,s=r,arguments.length>2&&(a=t,d=!0)),o=\"\"+o,i=\"\"+i,s!==void 0&&(s=\"\"+s);let l=C(this._isDirected,o,i,s);if(l in this._edgeLabels)return d&&(this._edgeLabels[l]=a),this;if(s!==void 0&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(o),this.setNode(i),this._edgeLabels[l]=d?a:this._defaultEdgeLabelFn(o,i,s);let u=gn(this._isDirected,o,i,s);return o=u.v,i=u.w,Object.freeze(u),this._edgeObjs[l]=u,me(this._preds[i],o),me(this._sucs[o],i),this._in[i][l]=u,this._out[o][l]=u,this._edgeCount++,this}edge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t);return this._edgeLabels[r]}edgeAsObj(e,n,t){let r=arguments.length===1?this.edge(e):this.edge(e,n,t);return typeof r!=\"object\"?{label:r}:r}hasEdge(e,n,t){return(arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t))in this._edgeLabels}removeEdge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t),o=this._edgeObjs[r];if(o){let i=o.v,s=o.w;delete this._edgeLabels[r],delete this._edgeObjs[r],Ee(this._preds[s],i),Ee(this._sucs[i],s),delete this._in[s][r],delete this._out[i][r],this._edgeCount--}return this}inEdges(e,n){return this.isDirected()?this.filterEdges(this._in[e],e,n):this.nodeEdges(e,n)}outEdges(e,n){return this.isDirected()?this.filterEdges(this._out[e],e,n):this.nodeEdges(e,n)}nodeEdges(e,n){if(e in this._nodes)return this.filterEdges({...this._in[e],...this._out[e]},e,n)}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}filterEdges(e,n,t){if(!e)return;let r=Object.values(e);return t?r.filter(o=>o.v===n&&o.w===t||o.v===t&&o.w===n):r}};function me(e,n){e[n]?e[n]++:e[n]=1}function Ee(e,n){e[n]!==void 0&&!--e[n]&&delete e[n]}function C(e,n,t,r){let o=\"\"+n,i=\"\"+t;if(!e&&o>i){let s=o;o=i,i=s}return o+\"\u0001\"+i+\"\u0001\"+(r===void 0?\"\\0\":r)}function gn(e,n,t,r){let o=\"\"+n,i=\"\"+t;if(!e&&o>i){let a=o;o=i,i=a}let s={v:o,w:i};return r&&(s.name=r),s}function Y(e,n){return C(e,n.v,n.w,n.name)}var pn=\"4.0.1\",ye={};Le(ye,{read:()=>yn,write:()=>mn});function mn(e){let n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:En(e),edges:Ln(e)},t=e.graph();return t!==void 0&&(n.value=structuredClone(t)),n}function En(e){return e.nodes().map(n=>{let t=e.node(n),r=e.parent(n),o={v:n};return t!==void 0&&(o.value=t),r!==void 0&&(o.parent=r),o})}function Ln(e){return e.edges().map(n=>{let t=e.edge(n),r={v:n.v,w:n.w};return n.name!==void 0&&(r.name=n.name),t!==void 0&&(r.value=t),r})}function yn(e){let n=new p(e.options);return e.value!==void 0&&n.setGraph(e.value),e.nodes.forEach(t=>{n.setNode(t.v,t.value),t.parent&&n.setParent(t.v,t.parent)}),e.edges.forEach(t=>{n.setEdge({v:t.v,w:t.w,name:t.name},t.value)}),n}var R={};Le(R,{CycleException:()=>D,bellmanFord:()=>we,components:()=>Gn,dijkstra:()=>F,dijkstraAll:()=>_n,findCycles:()=>xn,floydWarshall:()=>On,isAcyclic:()=>Cn,postorder:()=>Pn,preorder:()=>Mn,prim:()=>jn,shortestPaths:()=>Sn,tarjan:()=>Ge,topsort:()=>ke});var wn=()=>1;function we(e,n,t,r){return Nn(e,String(n),t||wn,r||function(o){return e.outEdges(o)})}function Nn(e,n,t,r){let o={},i,s=0,a=e.nodes(),d=function(c){let h=t(c);o[c.v].distance+h<o[c.w].distance&&(o[c.w]={distance:o[c.v].distance+h,predecessor:c.v},i=!0)},l=function(){a.forEach(function(c){r(c).forEach(function(h){let f=h.v===c?h.v:h.w,g=f===h.v?h.w:h.v;d({v:f,w:g})})})};a.forEach(function(c){let h=c===n?0:Number.POSITIVE_INFINITY;o[c]={distance:h,predecessor:\"\"}});let u=a.length;for(let c=1;c<u&&(i=!1,s++,l(),!!i);c++);if(s===u-1&&(i=!1,l(),i))throw new Error(\"The graph contains a negative weight cycle\");return o}function Gn(e){let n={},t=[],r;function o(i){i in n||(n[i]=!0,r.push(i),e.successors(i).forEach(o),e.predecessors(i).forEach(o))}return e.nodes().forEach(function(i){r=[],o(i),r.length&&t.push(r)}),t}var Ne=class{constructor(){this._arr=[],this._keyIndices={}}size(){return this._arr.length}keys(){return this._arr.map(e=>e.key)}has(e){return e in this._keyIndices}priority(e){let n=this._keyIndices[e];if(n!==void 0)return this._arr[n].priority}min(){if(this.size()===0)throw new Error(\"Queue underflow\");return this._arr[0].key}add(e,n){let t=this._keyIndices,r=String(e);if(!(r in t)){let o=this._arr,i=o.length;return t[r]=i,o.push({key:r,priority:n}),this._decrease(i),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key}decrease(e,n){let t=this._keyIndices[e];if(t===void 0)throw new Error(`Key not found: ${e}`);let r=this._arr[t].priority;if(n>r)throw new Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${n}`);this._arr[t].priority=n,this._decrease(t)}_heapify(e){let n=this._arr,t=2*e,r=t+1,o=e;t<n.length&&(o=n[t].priority<n[o].priority?t:o,r<n.length&&(o=n[r].priority<n[o].priority?r:o),o!==e&&(this._swap(e,o),this._heapify(o)))}_decrease(e){let n=this._arr,t=n[e].priority,r;for(;e!==0&&(r=e>>1,!(n[r].priority<t));)this._swap(e,r),e=r}_swap(e,n){let t=this._arr,r=this._keyIndices,o=t[e],i=t[n];t[e]=i,t[n]=o,r[i.key]=e,r[o.key]=n}},kn=()=>1;function F(e,n,t,r){let o=function(i){return e.outEdges(i)};return vn(e,String(n),t||kn,r||o)}function vn(e,n,t,r){let o={},i=new Ne,s,a,d=function(l){let u=l.v!==s?l.v:l.w,c=o[u],h=t(l),f=a.distance+h;if(h<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+l+\" Weight: \"+h);f<c.distance&&(c.distance=f,c.predecessor=s,i.decrease(u,f))};for(e.nodes().forEach(function(l){let u=l===n?0:Number.POSITIVE_INFINITY;o[l]={distance:u,predecessor:\"\"},i.add(l,u)});i.size()>0&&(s=i.removeMin(),a=o[s],a.distance!==Number.POSITIVE_INFINITY);)r(s).forEach(d);return o}function _n(e,n,t){return e.nodes().reduce(function(r,o){return r[o]=F(e,o,n,t),r},{})}function Ge(e){let n=0,t=[],r={},o=[];function i(s){let a=r[s]={onStack:!0,lowlink:n,index:n++};if(t.push(s),e.successors(s).forEach(function(d){d in r?r[d].onStack&&(a.lowlink=Math.min(a.lowlink,r[d].index)):(i(d),a.lowlink=Math.min(a.lowlink,r[d].lowlink))}),a.lowlink===a.index){let d=[],l;do l=t.pop(),r[l].onStack=!1,d.push(l);while(s!==l);o.push(d)}}return e.nodes().forEach(function(s){s in r||i(s)}),o}function xn(e){return Ge(e).filter(function(n){return n.length>1||n.length===1&&e.hasEdge(n[0],n[0])})}var Tn=()=>1;function On(e,n,t){return In(e,n||Tn,t||function(r){return e.outEdges(r)})}function In(e,n,t){let r={},o=e.nodes();return o.forEach(function(i){r[i]={},r[i][i]={distance:0,predecessor:\"\"},o.forEach(function(s){i!==s&&(r[i][s]={distance:Number.POSITIVE_INFINITY,predecessor:\"\"})}),t(i).forEach(function(s){let a=s.v===i?s.w:s.v,d=n(s);r[i][a]={distance:d,predecessor:i}})}),o.forEach(function(i){let s=r[i];o.forEach(function(a){let d=r[a];o.forEach(function(l){let u=d[i],c=s[l],h=d[l],f=u.distance+c.distance;f<h.distance&&(h.distance=f,h.predecessor=c.predecessor)})})}),r}var D=class extends Error{constructor(...e){super(...e)}};function ke(e){let n={},t={},r=[];function o(i){if(i in t)throw new D;i in n||(t[i]=!0,n[i]=!0,e.predecessors(i).forEach(o),delete t[i],r.push(i))}if(e.sinks().forEach(o),Object.keys(n).length!==e.nodeCount())throw new D;return r}function Cn(e){try{ke(e)}catch(n){if(n instanceof D)return!1;throw n}return!0}function Rn(e,n,t,r,o){Array.isArray(n)||(n=[n]);let i=(a=>{var d;return(d=e.isDirected()?e.successors(a):e.neighbors(a))!=null?d:[]}),s={};return n.forEach(function(a){if(!e.hasNode(a))throw new Error(\"Graph does not have node: \"+a);o=ve(e,a,t===\"post\",s,i,r,o)}),o}function ve(e,n,t,r,o,i,s){return n in r||(r[n]=!0,t||(s=i(s,n)),o(n).forEach(function(a){s=ve(e,a,t,r,o,i,s)}),t&&(s=i(s,n))),s}function _e(e,n,t){return Rn(e,n,t,function(r,o){return r.push(o),r},[])}function Pn(e,n){return _e(e,n,\"post\")}function Mn(e,n){return _e(e,n,\"pre\")}function jn(e,n){let t=new p,r={},o=new Ne,i;function s(d){let l=d.v===i?d.w:d.v,u=o.priority(l);if(u!==void 0){let c=n(d);c<u&&(r[l]=i,o.decrease(l,c))}}if(e.nodeCount()===0)return t;e.nodes().forEach(function(d){o.add(d,Number.POSITIVE_INFINITY),t.setNode(d)}),o.decrease(e.nodes()[0],0);let a=!1;for(;o.size()>0;){if(i=o.removeMin(),i in r)t.setEdge(i,r[i]);else{if(a)throw new Error(\"Input graph is not connected: \"+e);a=!0}e.nodeEdges(i).forEach(s)}return t}function Sn(e,n,t,r){return Fn(e,n,t,r!=null?r:(o=>{let i=e.outEdges(o);return i!=null?i:[]}))}function Fn(e,n,t,r){if(t===void 0)return F(e,n,t,r);let o=!1,i=e.nodes();for(let s=0;s<i.length;s++){let a=r(i[s]);for(let d=0;d<a.length;d++){let l=a[d],u=l.v===i[s]?l.v:l.w,c=u===l.v?l.w:l.v;t({v:u,w:c})<0&&(o=!0)}if(o)return we(e,n,t,r)}return F(e,n,t,r)}function w(e,n,t,r){let o=r;for(;e.hasNode(o);)o=j(r);return t.dummy=n,e.setNode(o,t),o}function xe(e){let n=new p().setGraph(e.graph());return e.nodes().forEach(t=>n.setNode(t,e.node(t))),e.edges().forEach(t=>{let r=n.edge(t.v,t.w)||{weight:0,minlen:1},o=e.edge(t);n.setEdge(t.v,t.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})}),n}function A(e){let n=new p({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(t=>{e.children(t).length||n.setNode(t,e.node(t))}),e.edges().forEach(t=>{n.setEdge(t,e.edge(t))}),n}function H(e,n){let t=e.x,r=e.y,o=n.x-t,i=n.y-r,s=e.width/2,a=e.height/2;if(!o&&!i)throw new Error(\"Not possible to find intersection inside of the rectangle\");let d,l;return Math.abs(i)*s>Math.abs(o)*a?(i<0&&(a=-a),d=a*o/i,l=a):(o<0&&(s=-s),d=s,l=s*i/o),{x:t+d,y:r+l}}function N(e){let n=k(X(e)+1).map(()=>[]);return e.nodes().forEach(t=>{let r=e.node(t),o=r.rank;o!==void 0&&(n[o]||(n[o]=[]),n[o][r.order]=t)}),n}function Te(e){let n=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MAX_VALUE:o}),t=L(Math.min,n);e.nodes().forEach(r=>{let o=e.node(r);Object.hasOwn(o,\"rank\")&&(o.rank-=t)})}function Oe(e){let n=e.nodes().map(s=>e.node(s).rank).filter(s=>s!==void 0),t=L(Math.min,n),r=[];e.nodes().forEach(s=>{let a=e.node(s).rank-t;r[a]||(r[a]=[]),r[a].push(s)});let o=0,i=e.graph().nodeRankFactor;Array.from(r).forEach((s,a)=>{s===void 0&&a%i!==0?--o:s!==void 0&&o&&s.forEach(d=>e.node(d).rank+=o)})}function q(e,n,t,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),w(e,\"border\",o,n)}function Dn(e,n=Ie){let t=[];for(let r=0;r<e.length;r+=n){let o=e.slice(r,r+n);t.push(o)}return t}var Ie=65535;function L(e,n){if(n.length>Ie){let t=Dn(n);return e(...t.map(r=>e(...r)))}else return e(...n)}function X(e){let t=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MIN_VALUE:o});return L(Math.max,t)}function Ce(e,n){let t={lhs:[],rhs:[]};return e.forEach(r=>{n(r)?t.lhs.push(r):t.rhs.push(r)}),t}function P(e,n){let t=Date.now();try{return n()}finally{console.log(e+\" time: \"+(Date.now()-t)+\"ms\")}}function M(e,n){return n()}var An=0;function j(e){let n=++An;return e+(\"\"+n)}function k(e,n,t=1){n==null&&(n=e,e=0);let r=i=>i<n;t<0&&(r=i=>n<i);let o=[];for(let i=e;r(i);i+=t)o.push(i);return o}function T(e,n){let t={};for(let r of n)e[r]!==void 0&&(t[r]=e[r]);return t}function O(e,n){let t;return typeof n==\"string\"?t=r=>r[n]:t=n,Object.entries(e).reduce((r,[o,i])=>(r[o]=t(i,o),r),{})}function Re(e,n){return e.reduce((t,r,o)=>(t[r]=n[o],t),{})}var _=\"\\0\";var U=\"3.0.0\";var K=class{constructor(){pe(this,\"_sentinel\");let n={};n._next=n._prev=n,this._sentinel=n}dequeue(){let n=this._sentinel,t=n._prev;if(t!==n)return Pe(t),t}enqueue(n){let t=this._sentinel;n._prev&&n._next&&Pe(n),n._next=t._next,t._next._prev=n,t._next=n,n._prev=t}toString(){let n=[],t=this._sentinel,r=t._prev;for(;r!==t;)n.push(JSON.stringify(r,Vn)),r=r._prev;return\"[\"+n.join(\", \")+\"]\"}};function Pe(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Vn(e,n){if(e!==\"_next\"&&e!==\"_prev\")return n}var Me=K;var Wn=()=>1;function Q(e,n){if(e.nodeCount()<=1)return[];let t=Yn(e,n||Wn);return Bn(t.graph,t.buckets,t.zeroIdx).flatMap(o=>e.outEdges(o.v,o.w)||[])}function Bn(e,n,t){var a;let r=[],o=n[n.length-1],i=n[0],s;for(;e.nodeCount();){for(;s=i.dequeue();)$(e,n,t,s);for(;s=o.dequeue();)$(e,n,t,s);if(e.nodeCount()){for(let d=n.length-2;d>0;--d)if(s=(a=n[d])==null?void 0:a.dequeue(),s){r=r.concat($(e,n,t,s,!0)||[]);break}}}return r}function $(e,n,t,r,o){let i=[],s=o?i:void 0;return(e.inEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=e.node(a.v);o&&i.push({v:a.v,w:a.w}),l.out-=d,J(n,t,l)}),(e.outEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=a.w,u=e.node(l);u.in-=d,J(n,t,u)}),e.removeNode(r.v),s}function Yn(e,n){let t=new p,r=0,o=0;e.nodes().forEach(a=>{t.setNode(a,{v:a,in:0,out:0})}),e.edges().forEach(a=>{let d=t.edge(a.v,a.w)||0,l=n(a),u=d+l;t.setEdge(a.v,a.w,u);let c=t.node(a.v),h=t.node(a.w);o=Math.max(o,c.out+=l),r=Math.max(r,h.in+=l)});let i=zn(o+r+3).map(()=>new Me),s=r+1;return t.nodes().forEach(a=>{J(i,s,t.node(a))}),{graph:t,buckets:i,zeroIdx:s}}function J(e,n,t){var r,o,i;t.out?t.in?(i=e[t.out-t.in+n])==null||i.enqueue(t):(o=e[e.length-1])==null||o.enqueue(t):(r=e[0])==null||r.enqueue(t)}function zn(e){let n=[];for(let t=0;t<e;t++)n.push(t);return n}function je(e){(e.graph().acyclicer===\"greedy\"?Q(e,t(e)):Hn(e)).forEach(r=>{let o=e.edge(r);e.removeEdge(r),o.forwardName=r.name,o.reversed=!0,e.setEdge(r.w,r.v,o,j(\"rev\"))});function t(r){return o=>r.edge(o).weight}}function Hn(e){let n=[],t={},r={};function o(i){Object.hasOwn(r,i)||(r[i]=!0,t[i]=!0,e.outEdges(i).forEach(s=>{Object.hasOwn(t,s.w)?n.push(s):o(s.w)}),delete t[i])}return e.nodes().forEach(o),n}function Se(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.reversed){e.removeEdge(n);let r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}})}function Fe(e){e.graph().dummyChains=[],e.edges().forEach(n=>Xn(e,n))}function Xn(e,n){let t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,s=n.name,a=e.edge(n),d=a.labelRank;if(i===r+1)return;e.removeEdge(n);let l,u,c;for(c=0,++r;r<i;++c,++r)a.points=[],u={width:0,height:0,edgeLabel:a,edgeObj:n,rank:r},l=w(e,\"edge\",u,\"_d\"),r===d&&(u.width=a.width,u.height=a.height,u.dummy=\"edge-label\",u.labelpos=a.labelpos),e.setEdge(t,l,{weight:a.weight},s),c===0&&e.graph().dummyChains.push(l),t=l;e.setEdge(t,o,{weight:a.weight},s)}function De(e){e.graph().dummyChains.forEach(n=>{let t=e.node(n),r=t.edgeLabel,o;for(e.setEdge(t.edgeObj,r);t.dummy;)o=e.successors(n)[0],e.removeNode(n),r.points.push({x:t.x,y:t.y}),t.dummy===\"edge-label\"&&(r.x=t.x,r.y=t.y,r.width=t.width,r.height=t.height),n=o,t=e.node(n)})}function S(e){let n={};function t(r){let o=e.node(r);if(Object.hasOwn(n,r))return o.rank;n[r]=!0;let i=e.outEdges(r),s=i?i.map(d=>d==null?Number.POSITIVE_INFINITY:t(d.w)-e.edge(d).minlen):[],a=L(Math.min,s);return a===Number.POSITIVE_INFINITY&&(a=0),o.rank=a}e.sources().forEach(t)}function v(e,n){return e.node(n.w).rank-e.node(n.v).rank-e.edge(n).minlen}var V=Kn;function Kn(e){let n=new p({directed:!1}),t=e.nodes();if(t.length===0)throw new Error(\"Graph must have at least one node\");let r=t[0],o=e.nodeCount();n.setNode(r,{});let i,s;for(;$n(n,e)<o&&(i=Jn(n,e),!!i);)s=n.hasNode(i.v)?v(e,i):-v(e,i),Qn(n,e,s);return n}function $n(e,n){function t(r){let o=n.nodeEdges(r);o&&o.forEach(i=>{let s=i.v,a=r===s?i.w:s;!e.hasNode(a)&&!v(n,i)&&(e.setNode(a,{}),e.setEdge(r,a,{}),t(a))})}return e.nodes().forEach(t),e.nodeCount()}function Jn(e,n){return n.edges().reduce((r,o)=>{let i=Number.POSITIVE_INFINITY;return e.hasNode(o.v)!==e.hasNode(o.w)&&(i=v(n,o)),i<r[0]?[i,o]:r},[Number.POSITIVE_INFINITY,null])[1]}function Qn(e,n,t){e.nodes().forEach(r=>n.node(r).rank+=t)}var{preorder:Zn,postorder:et}=R,Ve=x;x.initLowLimValues=ee;x.initCutValues=Z;x.calcCutValue=We;x.leaveEdge=Ye;x.enterEdge=ze;x.exchangeEdges=He;function x(e){e=xe(e),S(e);let n=V(e);ee(n),Z(n,e);let t,r;for(;t=Ye(n);)r=ze(n,e,t),He(n,e,t,r)}function Z(e,n){let t=et(e,e.nodes());t=t.slice(0,t.length-1),t.forEach(r=>nt(e,n,r))}function nt(e,n,t){let o=e.node(t).parent,i=e.edge(t,o);i.cutvalue=We(e,n,t)}function We(e,n,t){let o=e.node(t).parent,i=!0,s=n.edge(t,o),a=0;s||(i=!1,s=n.edge(o,t)),a=s.weight;let d=n.nodeEdges(t);return d&&d.forEach(l=>{let u=l.v===t,c=u?l.w:l.v;if(c!==o){let h=u===i,f=n.edge(l).weight;if(a+=h?f:-f,rt(e,t,c)){let b=e.edge(t,c).cutvalue;a+=h?-b:b}}}),a}function ee(e,n){arguments.length<2&&(n=e.nodes()[0]),Be(e,{},1,n)}function Be(e,n,t,r,o){let i=t,s=e.node(r);n[r]=!0;let a=e.neighbors(r);return a&&a.forEach(d=>{Object.hasOwn(n,d)||(t=Be(e,n,t,d,r))}),s.low=i,s.lim=t++,o?s.parent=o:delete s.parent,t}function Ye(e){return e.edges().find(n=>e.edge(n).cutvalue<0)}function ze(e,n,t){let r=t.v,o=t.w;n.hasEdge(r,o)||(r=t.w,o=t.v);let i=e.node(r),s=e.node(o),a=i,d=!1;return i.lim>s.lim&&(a=s,d=!0),n.edges().filter(u=>d===Ae(e,e.node(u.v),a)&&d!==Ae(e,e.node(u.w),a)).reduce((u,c)=>v(n,c)<v(n,u)?c:u)}function He(e,n,t,r){let o=t.v,i=t.w;e.removeEdge(o,i),e.setEdge(r.v,r.w,{}),ee(e),Z(e,n),tt(e,n)}function tt(e,n){let t=e.nodes().find(o=>!e.node(o).parent);if(!t)return;let r=Zn(e,[t]);r=r.slice(1),r.forEach(o=>{let s=e.node(o).parent,a=n.edge(o,s),d=!1;a||(a=n.edge(s,o),d=!0),n.node(o).rank=n.node(s).rank+(d?a.minlen:-a.minlen)})}function rt(e,n,t){return e.hasEdge(n,t)}function Ae(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}var Xe=ot;function ot(e){let n=e.graph().ranker;if(typeof n==\"function\")return n(e);switch(n){case\"network-simplex\":qe(e);break;case\"tight-tree\":st(e);break;case\"longest-path\":it(e);break;case\"none\":break;default:qe(e)}}var it=S;function st(e){S(e),V(e)}function qe(e){Ve(e)}var Ue=at;function at(e){let n=lt(e);e.graph().dummyChains.forEach(t=>{let r=e.node(t),o=r.edgeObj,i=dt(e,n,o.v,o.w),s=i.path,a=i.lca,d=0,l=s[d],u=!0;for(;t!==o.w;){if(r=e.node(t),u){for(;(l=s[d])!==a&&e.node(l).maxRank<r.rank;)d++;l===a&&(u=!1)}if(!u){for(;d<s.length-1&&e.node(s[d+1]).minRank<=r.rank;)d++;l=s[d]}l!==void 0&&e.setParent(t,l),t=e.successors(t)[0]}})}function dt(e,n,t,r){let o=[],i=[],s=Math.min(n[t].low,n[r].low),a=Math.max(n[t].lim,n[r].lim),d;d=t;do d=e.parent(d),o.push(d);while(d&&(n[d].low>s||a>n[d].lim));let l=d,u=r;for(;(u=e.parent(u))!==l;)i.push(u);return{path:o.concat(i.reverse()),lca:l}}function lt(e){let n={},t=0;function r(o){let i=t;e.children(o).forEach(r),n[o]={low:i,lim:t++}}return e.children(_).forEach(r),n}function Ke(e){let n=w(e,\"root\",{},\"_root\"),t=ut(e),r=Object.values(t),o=L(Math.max,r)-1,i=2*o+1;e.graph().nestingRoot=n,e.edges().forEach(a=>e.edge(a).minlen*=i);let s=ct(e)+1;e.children(_).forEach(a=>$e(e,n,i,s,o,t,a)),e.graph().nodeRankFactor=i}function $e(e,n,t,r,o,i,s){var c;let a=e.children(s);if(!a.length){s!==n&&e.setEdge(n,s,{weight:0,minlen:t});return}let d=q(e,\"_bt\"),l=q(e,\"_bb\"),u=e.node(s);e.setParent(d,s),u.borderTop=d,e.setParent(l,s),u.borderBottom=l,a.forEach(h=>{var y;$e(e,n,t,r,o,i,h);let f=e.node(h),g=f.borderTop?f.borderTop:h,b=f.borderBottom?f.borderBottom:h,m=f.borderTop?r:2*r,E=g!==b?1:o-((y=i[s])!=null?y:0)+1;e.setEdge(d,g,{weight:m,minlen:E,nestingEdge:!0}),e.setEdge(b,l,{weight:m,minlen:E,nestingEdge:!0})}),e.parent(s)||e.setEdge(n,d,{weight:0,minlen:o+((c=i[s])!=null?c:0)})}function ut(e){let n={};function t(r,o){let i=e.children(r);i&&i.length&&i.forEach(s=>t(s,o+1)),n[r]=o}return e.children(_).forEach(r=>t(r,1)),n}function ct(e){return e.edges().reduce((n,t)=>n+e.edge(t).weight,0)}function Je(e){let n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,e.edges().forEach(t=>{e.edge(t).nestingEdge&&e.removeEdge(t)})}var Ze=ft;function ft(e){function n(t){let r=e.children(t),o=e.node(t);if(r.length&&r.forEach(n),Object.hasOwn(o,\"minRank\")){o.borderLeft=[],o.borderRight=[];for(let i=o.minRank,s=o.maxRank+1;i<s;++i)Qe(e,\"borderLeft\",\"_bl\",t,o,i),Qe(e,\"borderRight\",\"_br\",t,o,i)}}e.children(_).forEach(n)}function Qe(e,n,t,r,o,i){let s={width:0,height:0,rank:i,borderType:n},a=o[n][i-1],d=w(e,\"border\",s,t);o[n][i]=d,e.setParent(d,r),a&&e.setEdge(a,d,{weight:1})}function nn(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n===\"lr\"||n===\"rl\")&&rn(e)}function tn(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n===\"bt\"||n===\"rl\")&&bt(e),(n===\"lr\"||n===\"rl\")&&(gt(e),rn(e))}function rn(e){e.nodes().forEach(n=>en(e.node(n))),e.edges().forEach(n=>en(e.edge(n)))}function en(e){let n=e.width;e.width=e.height,e.height=n}function bt(e){e.nodes().forEach(n=>ne(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(ne),Object.hasOwn(t,\"y\")&&ne(t)})}function ne(e){e.y=-e.y}function gt(e){e.nodes().forEach(n=>te(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(te),Object.hasOwn(t,\"x\")&&te(t)})}function te(e){let n=e.x;e.x=e.y,e.y=n}function re(e){let n={},t=e.nodes().filter(d=>!e.children(d).length),r=t.map(d=>e.node(d).rank),o=L(Math.max,r),i=k(o+1).map(()=>[]);function s(d){if(n[d])return;n[d]=!0;let l=e.node(d);i[l.rank].push(d);let u=e.successors(d);u&&u.forEach(s)}return t.sort((d,l)=>e.node(d).rank-e.node(l).rank).forEach(s),i}function oe(e,n){let t=0;for(let r=1;r<n.length;++r)t+=mt(e,n[r-1],n[r]);return t}function mt(e,n,t){let r=Re(t,t.map((l,u)=>u)),o=n.flatMap(l=>{let u=e.outEdges(l);return u?u.map(c=>({pos:r[c.w],weight:e.edge(c).weight})).sort((c,h)=>c.pos-h.pos):[]}),i=1;for(;i<t.length;)i<<=1;let s=2*i-1;i-=1;let a=new Array(s).fill(0),d=0;return o.forEach(l=>{let u=l.pos+i;a[u]+=l.weight;let c=0;for(;u>0;)u%2&&(c+=a[u+1]),u=u-1>>1,a[u]+=l.weight;d+=l.weight*c}),d}function ie(e,n=[]){return n.map(t=>{let r=e.inEdges(t);if(!r||!r.length)return{v:t};{let o=r.reduce((i,s)=>{let a=e.edge(s),d=e.node(s.v);return{sum:i.sum+a.weight*d.order,weight:i.weight+a.weight}},{sum:0,weight:0});return{v:t,barycenter:o.sum/o.weight,weight:o.weight}}})}function se(e,n){let t={};e.forEach((o,i)=>{let s={indegree:0,in:[],out:[],vs:[o.v],i};o.barycenter!==void 0&&(s.barycenter=o.barycenter,s.weight=o.weight),t[o.v]=s}),n.edges().forEach(o=>{let i=t[o.v],s=t[o.w];i!==void 0&&s!==void 0&&(s.indegree++,i.out.push(s))});let r=Object.values(t).filter(o=>!o.indegree);return Et(r)}function Et(e){let n=[];function t(o){return i=>{i.merged||(i.barycenter===void 0||o.barycenter===void 0||i.barycenter>=o.barycenter)&&Lt(o,i)}}function r(o){return i=>{i.in.push(o),--i.indegree===0&&e.push(i)}}for(;e.length;){let o=e.pop();n.push(o),o.in.reverse().forEach(t(o)),o.out.forEach(r(o))}return n.filter(o=>!o.merged).map(o=>T(o,[\"vs\",\"i\",\"barycenter\",\"weight\"]))}function Lt(e,n){let t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight),n.weight&&(t+=n.barycenter*n.weight,r+=n.weight),e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=!0}function ae(e,n){let t=Ce(e,u=>Object.hasOwn(u,\"barycenter\")),r=t.lhs,o=t.rhs.sort((u,c)=>c.i-u.i),i=[],s=0,a=0,d=0;r.sort(yt(!!n)),d=on(i,o,d),r.forEach(u=>{d+=u.vs.length,i.push(u.vs),s+=u.barycenter*u.weight,a+=u.weight,d=on(i,o,d)});let l={vs:i.flat(1)};return a&&(l.barycenter=s/a,l.weight=a),l}function on(e,n,t){let r;for(;n.length&&(r=n[n.length-1]).i<=t;)n.pop(),e.push(r.vs),t++;return t}function yt(e){return(n,t)=>n.barycenter<t.barycenter?-1:n.barycenter>t.barycenter?1:e?t.i-n.i:n.i-t.i}function W(e,n,t,r){let o=e.children(n),i=e.node(n),s=i?i.borderLeft:void 0,a=i?i.borderRight:void 0,d={};s&&(o=o.filter(h=>h!==s&&h!==a));let l=ie(e,o);l.forEach(h=>{if(e.children(h.v).length){let f=W(e,h.v,t,r);d[h.v]=f,Object.hasOwn(f,\"barycenter\")&&Nt(h,f)}});let u=se(l,t);wt(u,d);let c=ae(u,r);if(s&&a){c.vs=[s,c.vs,a].flat(1);let h=e.predecessors(s);if(h&&h.length){let f=e.node(h[0]),g=e.predecessors(a),b=e.node(g[0]);Object.hasOwn(c,\"barycenter\")||(c.barycenter=0,c.weight=0),c.barycenter=(c.barycenter*c.weight+f.order+b.order)/(c.weight+2),c.weight+=2}}return c}function wt(e,n){e.forEach(t=>{t.vs=t.vs.flatMap(r=>n[r]?n[r].vs:r)})}function Nt(e,n){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+n.barycenter*n.weight)/(e.weight+n.weight),e.weight+=n.weight):(e.barycenter=n.barycenter,e.weight=n.weight)}function de(e,n,t,r){r||(r=e.nodes());let o=Gt(e),i=new p({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(s=>e.node(s));return r.forEach(s=>{let a=e.node(s),d=e.parent(s);if(a.rank===n||a.minRank<=n&&n<=a.maxRank){i.setNode(s),i.setParent(s,d||o);let l=e[t](s);l&&l.forEach(u=>{let c=u.v===s?u.w:u.v,h=i.edge(c,s),f=h!==void 0?h.weight:0;i.setEdge(c,s,{weight:e.edge(u).weight+f})}),Object.hasOwn(a,\"minRank\")&&i.setNode(s,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]})}}),i}function Gt(e){let n;for(;e.hasNode(n=j(\"_root\")););return n}function le(e,n,t){let r={},o;t.forEach(i=>{let s=e.parent(i),a,d;for(;s;){if(a=e.parent(s),a?(d=r[a],r[a]=s):(d=o,o=s),d&&d!==s){n.setEdge(d,s);return}s=a}})}function B(e,n={}){if(typeof n.customOrder==\"function\"){n.customOrder(e,B);return}let t=X(e),r=sn(e,k(1,t+1),\"inEdges\"),o=sn(e,k(t-1,-1,-1),\"outEdges\"),i=re(e);if(an(e,i),n.disableOptimalOrderHeuristic)return;let s=Number.POSITIVE_INFINITY,a,d=n.constraints||[];for(let l=0,u=0;u<4;++l,++u){kt(l%2?r:o,l%4>=2,d),i=N(e);let c=oe(e,i);c<s?(u=0,a=Object.assign({},i),s=c):c===s&&(a=structuredClone(i))}an(e,a)}function sn(e,n,t){let r=new Map,o=(i,s)=>{r.has(i)||r.set(i,[]),r.get(i).push(s)};for(let i of e.nodes()){let s=e.node(i);if(typeof s.rank==\"number\"&&o(s.rank,i),typeof s.minRank==\"number\"&&typeof s.maxRank==\"number\")for(let a=s.minRank;a<=s.maxRank;a++)a!==s.rank&&o(a,i)}return n.map(function(i){return de(e,i,t,r.get(i)||[])})}function kt(e,n,t){let r=new p;e.forEach(function(o){t.forEach(a=>r.setEdge(a.left,a.right));let i=o.graph().root,s=W(o,i,r,n);s.vs.forEach((a,d)=>o.node(a).order=d),le(o,r,s.vs)})}function an(e,n){Object.values(n).forEach(t=>t.forEach((r,o)=>e.node(r).order=o))}function vt(e,n){let t={};function r(o,i){let s=0,a=0,d=o.length,l=i[i.length-1];return i.forEach((u,c)=>{let h=xt(e,u),f=h?e.node(h).order:d;(h||u===l)&&(i.slice(a,c+1).forEach(g=>{let b=e.predecessors(g);b&&b.forEach(m=>{let E=e.node(m),y=E.order;(y<s||f<y)&&!(E.dummy&&e.node(g).dummy)&&dn(t,m,g)})}),a=c+1,s=f)}),i}return n.length&&n.reduce(r),t}function _t(e,n){let t={};function r(i,s,a,d,l){k(s,a).forEach(u=>{let c=i[u];if(c!==void 0&&e.node(c).dummy){let h=e.predecessors(c);h&&h.forEach(f=>{if(f===void 0)return;let g=e.node(f);g.dummy&&(g.order<d||g.order>l)&&dn(t,f,c)})}})}function o(i,s){let a=-1,d=-1,l=0;return s.forEach((u,c)=>{if(e.node(u).dummy===\"border\"){let h=e.predecessors(u);if(h&&h.length){let f=h[0];if(f===void 0)return;d=e.node(f).order,r(s,l,c,a,d),l=c,a=d}}r(s,l,s.length,d,i.length)}),s}return n.length&&n.reduce(o),t}function xt(e,n){if(e.node(n).dummy){let t=e.predecessors(n);if(t)return t.find(r=>e.node(r).dummy)}}function dn(e,n,t){if(n>t){let o=n;n=t,t=o}let r=e[n];r||(e[n]=r={}),r[t]=!0}function Tt(e,n,t){if(n>t){let o=n;n=t,t=o}let r=e[n];return r!==void 0&&Object.hasOwn(r,t)}function Ot(e,n,t,r){let o={},i={},s={};return n.forEach(a=>{a.forEach((d,l)=>{o[d]=d,i[d]=d,s[d]=l})}),n.forEach(a=>{let d=-1;a.forEach(l=>{let u=r(l);if(u&&u.length){let c=u.sort((f,g)=>{let b=s[f],m=s[g];return(b!==void 0?b:0)-(m!==void 0?m:0)}),h=(c.length-1)/2;for(let f=Math.floor(h),g=Math.ceil(h);f<=g;++f){let b=c[f];if(b===void 0)continue;let m=s[b];if(m!==void 0&&i[l]===l&&d<m&&!Tt(t,l,b)){let E=o[b];E!==void 0&&(i[b]=l,i[l]=o[l]=E,d=m)}}}})}),{root:o,align:i}}function It(e,n,t,r,o=!1){let i={},s=Ct(e,n,t,o),a=o?\"borderLeft\":\"borderRight\";function d(f,g){let b=s.nodes().slice(),m={},E=b.pop();for(;E;){if(m[E])f(E);else{m[E]=!0,b.push(E);for(let y of g(E))b.push(y)}E=b.pop()}}function l(f){let g=s.inEdges(f);g?i[f]=g.reduce((b,m)=>{var I;let E=(I=i[m.v])!=null?I:0,y=s.edge(m);return Math.max(b,E+(y!==void 0?y:0))},0):i[f]=0}function u(f){let g=s.outEdges(f),b=Number.POSITIVE_INFINITY;g&&(b=g.reduce((E,y)=>{let I=i[y.w],be=s.edge(y);return Math.min(E,(I!==void 0?I:0)-(be!==void 0?be:0))},Number.POSITIVE_INFINITY));let m=e.node(f);b!==Number.POSITIVE_INFINITY&&m.borderType!==a&&(i[f]=Math.max(i[f]!==void 0?i[f]:0,b))}function c(f){return s.predecessors(f)||[]}function h(f){return s.successors(f)||[]}return d(l,c),d(u,h),Object.keys(r).forEach(f=>{var b;let g=t[f];g!==void 0&&(i[f]=(b=i[g])!=null?b:0)}),i}function Ct(e,n,t,r){let o=new p,i=e.graph(),s=jt(i.nodesep,i.edgesep,r);return n.forEach(a=>{let d;a.forEach(l=>{let u=t[l];if(u!==void 0){if(o.setNode(u),d!==void 0){let c=t[d];if(c!==void 0){let h=o.edge(c,u);o.setEdge(c,u,Math.max(s(e,l,d),h||0))}}d=l}})}),o}function Rt(e,n){return Object.values(n).reduce((t,r)=>{let o=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;Object.entries(r).forEach(([a,d])=>{let l=St(e,a)/2;o=Math.max(d+l,o),i=Math.min(d-l,i)});let s=o-i;return s<t[0]&&(t=[s,r]),t},[Number.POSITIVE_INFINITY,null])[1]}function Pt(e,n){let t=Object.values(n),r=L(Math.min,t),o=L(Math.max,t);[\"u\",\"d\"].forEach(i=>{[\"l\",\"r\"].forEach(s=>{let a=i+s,d=e[a];if(!d||d===n)return;let l=Object.values(d),u=r-L(Math.min,l);s!==\"l\"&&(u=o-L(Math.max,l)),u&&(e[a]=O(d,c=>c+u))})})}function Mt(e,n=void 0){let t=e.ul;return t?O(t,(r,o)=>{var s,a;if(n){let d=n.toLowerCase(),l=e[d];if(l&&l[o]!==void 0)return l[o]}let i=Object.values(e).map(d=>{let l=d[o];return l!==void 0?l:0}).sort((d,l)=>d-l);return(((s=i[1])!=null?s:0)+((a=i[2])!=null?a:0))/2}):{}}function ln(e){let n=N(e),t=Object.assign(vt(e,n),_t(e,n)),r={},o;[\"u\",\"d\"].forEach(s=>{o=s===\"u\"?n:Object.values(n).reverse(),[\"l\",\"r\"].forEach(a=>{a===\"r\"&&(o=o.map(c=>Object.values(c).reverse()));let l=Ot(e,o,t,c=>(s===\"u\"?e.predecessors(c):e.successors(c))||[]),u=It(e,o,l.root,l.align,a===\"r\");a===\"r\"&&(u=O(u,c=>-c)),r[s+a]=u})});let i=Rt(e,r);return Pt(r,i),Mt(r,e.graph().align)}function jt(e,n,t){return(r,o,i)=>{let s=r.node(o),a=r.node(i),d=0,l;if(d+=s.width/2,Object.hasOwn(s,\"labelpos\"))switch(s.labelpos.toLowerCase()){case\"l\":l=-s.width/2;break;case\"r\":l=s.width/2;break}if(l&&(d+=t?l:-l),l=void 0,d+=(s.dummy?n:e)/2,d+=(a.dummy?n:e)/2,d+=a.width/2,Object.hasOwn(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":l=a.width/2;break;case\"r\":l=-a.width/2;break}return l&&(d+=t?l:-l),d}}function St(e,n){return e.node(n).width}function un(e){e=A(e),Ft(e),Object.entries(ln(e)).forEach(([n,t])=>e.node(n).x=t)}function Ft(e){let n=N(e),t=e.graph(),r=t.ranksep,o=t.rankalign,i=0;n.forEach(s=>{let a=s.reduce((d,l)=>{var c;let u=(c=e.node(l).height)!=null?c:0;return d>u?d:u},0);s.forEach(d=>{let l=e.node(d);o===\"top\"?l.y=i+l.height/2:o===\"bottom\"?l.y=i+a-l.height/2:l.y=i+a/2}),i+=a+r})}function he(e,n={}){let t=n.debugTiming?P:M;return t(\"layout\",()=>{let r=t(\" buildLayoutGraph\",()=>Xt(e));return t(\" runLayout\",()=>Dt(r,t,n)),t(\" updateInputGraph\",()=>At(e,r)),r})}function Dt(e,n,t){n(\" makeSpaceForEdgeLabels\",()=>Ut(e)),n(\" removeSelfEdges\",()=>rr(e)),n(\" acyclic\",()=>je(e)),n(\" nestingGraph.run\",()=>Ke(e)),n(\" rank\",()=>Xe(A(e))),n(\" injectEdgeLabelProxies\",()=>Kt(e)),n(\" removeEmptyRanks\",()=>Oe(e)),n(\" nestingGraph.cleanup\",()=>Je(e)),n(\" normalizeRanks\",()=>Te(e)),n(\" assignRankMinMax\",()=>$t(e)),n(\" removeEdgeLabelProxies\",()=>Jt(e)),n(\" normalize.run\",()=>Fe(e)),n(\" parentDummyChains\",()=>Ue(e)),n(\" addBorderSegments\",()=>Ze(e)),n(\" order\",()=>B(e,t)),n(\" insertSelfEdges\",()=>or(e)),n(\" adjustCoordinateSystem\",()=>nn(e)),n(\" position\",()=>un(e)),n(\" positionSelfEdges\",()=>ir(e)),n(\" removeBorderNodes\",()=>tr(e)),n(\" normalize.undo\",()=>De(e)),n(\" fixupEdgeLabelCoords\",()=>er(e)),n(\" undoCoordinateSystem\",()=>tn(e)),n(\" translateGraph\",()=>Qt(e)),n(\" assignNodeIntersects\",()=>Zt(e)),n(\" reversePoints\",()=>nr(e)),n(\" acyclic.undo\",()=>Se(e))}function At(e,n){e.nodes().forEach(t=>{let r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,r.order=o.order,r.rank=o.rank,n.children(t).length&&(r.width=o.width,r.height=o.height))}),e.edges().forEach(t=>{let r=e.edge(t),o=n.edge(t);r.points=o.points,Object.hasOwn(o,\"x\")&&(r.x=o.x,r.y=o.y)}),e.graph().width=n.graph().width,e.graph().height=n.graph().height}var Vt=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],Wt={ranksep:50,edgesep:20,nodesep:50,rankdir:\"TB\",rankalign:\"center\"},Bt=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\",\"rankalign\"],Yt=[\"width\",\"height\",\"rank\"],cn={width:0,height:0},zt=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],Ht={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},qt=[\"labelpos\"];function Xt(e){let n=new p({multigraph:!0,compound:!0}),t=ce(e.graph());return n.setGraph(Object.assign({},Wt,ue(t,Vt),T(t,Bt))),e.nodes().forEach(r=>{let o=ce(e.node(r)),i=ue(o,Yt);Object.keys(cn).forEach(a=>{i[a]===void 0&&(i[a]=cn[a])}),n.setNode(r,i);let s=e.parent(r);s!==void 0&&n.setParent(r,s)}),e.edges().forEach(r=>{let o=ce(e.edge(r));n.setEdge(r,Object.assign({},Ht,ue(o,zt),T(o,qt)))}),n}function Ut(e){let n=e.graph();n.ranksep/=2,e.edges().forEach(t=>{let r=e.edge(t);r.minlen*=2,r.labelpos.toLowerCase()!==\"c\"&&(n.rankdir===\"TB\"||n.rankdir===\"BT\"?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function Kt(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.width&&t.height){let r=e.node(n.v),i={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};w(e,\"edge-proxy\",i,\"_ep\")}})}function $t(e){let n=0;e.nodes().forEach(t=>{let r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=Math.max(n,r.maxRank))}),e.graph().maxRank=n}function Jt(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy===\"edge-proxy\"){let r=t;e.edge(r.e).labelRank=t.rank,e.removeNode(n)}})}function Qt(e){let n=Number.POSITIVE_INFINITY,t=0,r=Number.POSITIVE_INFINITY,o=0,i=e.graph(),s=i.marginx||0,a=i.marginy||0;function d(l){let u=l.x,c=l.y,h=l.width,f=l.height;n=Math.min(n,u-h/2),t=Math.max(t,u+h/2),r=Math.min(r,c-f/2),o=Math.max(o,c+f/2)}e.nodes().forEach(l=>d(e.node(l))),e.edges().forEach(l=>{let u=e.edge(l);Object.hasOwn(u,\"x\")&&d(u)}),n-=s,r-=a,e.nodes().forEach(l=>{let u=e.node(l);u.x-=n,u.y-=r}),e.edges().forEach(l=>{let u=e.edge(l);u.points.forEach(c=>{c.x-=n,c.y-=r}),Object.hasOwn(u,\"x\")&&(u.x-=n),Object.hasOwn(u,\"y\")&&(u.y-=r)}),i.width=t-n+s,i.height=o-r+a}function Zt(e){e.edges().forEach(n=>{let t=e.edge(n),r=e.node(n.v),o=e.node(n.w),i,s;t.points?(i=t.points[0],s=t.points[t.points.length-1]):(t.points=[],i=o,s=r),t.points.unshift(H(r,i)),t.points.push(H(o,s))})}function er(e){e.edges().forEach(n=>{let t=e.edge(n);if(Object.hasOwn(t,\"x\"))switch((t.labelpos===\"l\"||t.labelpos===\"r\")&&(t.width-=t.labeloffset),t.labelpos){case\"l\":t.x-=t.width/2+t.labeloffset;break;case\"r\":t.x+=t.width/2+t.labeloffset;break}})}function nr(e){e.edges().forEach(n=>{let t=e.edge(n);t.reversed&&t.points.reverse()})}function tr(e){e.nodes().forEach(n=>{if(e.children(n).length){let t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(t.borderLeft[t.borderLeft.length-1]),s=e.node(t.borderRight[t.borderRight.length-1]);t.width=Math.abs(s.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2}}),e.nodes().forEach(n=>{e.node(n).dummy===\"border\"&&e.removeNode(n)})}function rr(e){e.edges().forEach(n=>{if(n.v===n.w){let t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}})}function or(e){N(e).forEach(t=>{let r=0;t.forEach((o,i)=>{let s=e.node(o);s.order=i+r,(s.selfEdges||[]).forEach(a=>{w(e,\"selfedge\",{width:a.label.width,height:a.label.height,rank:s.rank,order:i+ ++r,e:a.e,label:a.label},\"_se\")}),delete s.selfEdges})})}function ir(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy===\"selfedge\"){let r=t,o=e.node(r.e.v),i=o.x+o.width/2,s=o.y,a=t.x-i,d=o.height/2;e.setEdge(r.e,r.label),e.removeNode(n),r.label.points=[{x:i+2*a/3,y:s-d},{x:i+5*a/6,y:s-d},{x:i+a,y:s},{x:i+5*a/6,y:s+d},{x:i+2*a/3,y:s+d}],r.label.x=t.x,r.label.y=t.y}})}function ue(e,n){return O(T(e,n),Number)}function ce(e){let n={};return e&&Object.entries(e).forEach(([t,r])=>{typeof t==\"string\"&&(t=t.toLowerCase()),n[t]=r}),n}function fe(e){let n=N(e),t=new p({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(r=>{t.setNode(r,{label:r}),t.setParent(r,\"layer\"+e.node(r).rank)}),e.edges().forEach(r=>t.setEdge(r.v,r.w,{},r.name)),n.forEach((r,o)=>{let i=\"layer\"+o;t.setNode(i,{rank:\"same\"}),r.reduce((s,a)=>(t.setEdge(s,a,{style:\"invis\"}),a))}),t}var xo={time:P,notime:M},sr={graphlib:z,version:U,layout:he,debug:fe,util:{time:P,notime:M}},To=sr;export{p as Graph,fe as debug,To as default,z as graphlib,he as layout,xo as util,U as version};\n/*! For license information please see dagre.esm.js.LEGAL.txt */\n//# sourceMappingURL=dagre.esm.js.map\n","import { useEffect, useRef } from 'react';\r\nimport { useStore, useReactFlow, ReactFlowState } from 'reactflow';\r\n\r\ninterface Props {\r\n onHeightsReady: (heights: Record<string, number>) => void;\r\n nodeCount: number;\r\n}\r\n\r\n// Returns a stable string — only changes when a node height actually changes\r\nconst fingerprintSelector = (state: ReactFlowState): string => {\r\n const parts: string[] = [];\r\n state.nodeInternals.forEach((node, id) => parts.push(`${id}:${node.height ?? 0}`));\r\n return parts.join(',');\r\n};\r\n\r\nconst LayoutUpdater = ({ onHeightsReady, nodeCount }: Props) => {\r\n const fingerprint = useStore(fingerprintSelector);\r\n const prevRef = useRef('');\r\n const prevNodeCount = useRef(0);\r\n const { fitView } = useReactFlow();\r\n\r\n useEffect(() => {\r\n if (!fingerprint || fingerprint === prevRef.current) return;\r\n\r\n // Parse heights back from the fingerprint — avoids a second store subscription\r\n const heights: Record<string, number> = {};\r\n for (const part of fingerprint.split(',')) {\r\n const [id, h] = part.split(':');\r\n const height = Number(h);\r\n if (id && height > 0) heights[id] = height;\r\n }\r\n\r\n if (Object.keys(heights).length === 0) return;\r\n prevRef.current = fingerprint;\r\n onHeightsReady(heights);\r\n }, [fingerprint]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return null;\r\n};\r\n\r\nexport default LayoutUpdater;\r\n","import React from 'react';\n\n/**\n * FlowForgeHeader — top bar that ships with FlowForgeCanvas by default.\n *\n * Renders the workflow name, a status pill, Cancel, and primary Save\n * button. Calls back via `onSave` / `onCancel`. The canvas itself wires\n * `onSave` to the latest WorkflowState behind the scenes — consumers\n * only provide a callback that receives that state.\n *\n * Opt out of the built-in header by passing `hideHeader={true}` on\n * FlowForgeCanvas; you can still mount this component standalone.\n */\nexport interface FlowForgeHeaderProps {\n /** Workflow display name shown on the left. */\n workflowName?: string;\n /** Optional editable callback — when provided, name becomes click-to-edit. */\n onWorkflowNameChange?: (name: string) => void;\n /** Status pill text (e.g. 'Draft', 'Published', 'Unsaved'). */\n status?: string;\n /** Status pill color — one of these or a custom hex. */\n statusColor?: 'gray' | 'green' | 'amber' | 'red' | string;\n /** Click handler for the primary Save button. Async-aware: spinner shows during await. */\n onSave?: () => void | Promise<void>;\n /** Click handler for Cancel. Button hidden when not provided. */\n onCancel?: () => void;\n /** Custom label for the Save button. Defaults to \"Save\". */\n saveLabel?: string;\n /** Disable Save button (e.g. while there are no unsaved changes). */\n saveDisabled?: boolean;\n}\n\nconst STATUS_PALETTE: Record<string, { bg: string; fg: string }> = {\n gray: { bg: '#f1f5f9', fg: '#475569' },\n green: { bg: '#dcfce7', fg: '#166534' },\n amber: { bg: '#fef3c7', fg: '#92400e' },\n red: { bg: '#fee2e2', fg: '#991b1b' },\n};\n\nexport function FlowForgeHeader({\n workflowName,\n onWorkflowNameChange,\n status,\n statusColor = 'gray',\n onSave,\n onCancel,\n saveLabel = 'Save',\n saveDisabled = false,\n}: FlowForgeHeaderProps) {\n const [saving, setSaving] = React.useState(false);\n const [editingName, setEditingName] = React.useState(false);\n const [nameDraft, setNameDraft] = React.useState(workflowName ?? '');\n\n React.useEffect(() => { setNameDraft(workflowName ?? ''); }, [workflowName]);\n\n const handleSave = async () => {\n if (!onSave || saving || saveDisabled) return;\n setSaving(true);\n try {\n await onSave();\n } finally {\n setSaving(false);\n }\n };\n\n const statusPalette = STATUS_PALETTE[statusColor] ?? {\n bg: statusColor,\n fg: '#fff',\n };\n\n return (\n <div\n style={{\n display: 'flex', alignItems: 'center', gap: 12,\n padding: '10px 20px',\n background: '#fff',\n borderBottom: '1px solid #e2e8f0',\n flexShrink: 0,\n }}\n >\n {/* ── Left: name + status ─────────────────────────────────────────── */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, minWidth: 0 }}>\n {editingName && onWorkflowNameChange ? (\n <input\n value={nameDraft}\n onChange={(e) => setNameDraft(e.target.value)}\n onBlur={() => {\n setEditingName(false);\n if (nameDraft !== workflowName) onWorkflowNameChange(nameDraft);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') (e.target as HTMLInputElement).blur();\n if (e.key === 'Escape') { setNameDraft(workflowName ?? ''); setEditingName(false); }\n }}\n autoFocus\n style={{\n fontSize: 15, fontWeight: 600, color: '#0f172a',\n border: '1px solid #cbd5e1', borderRadius: 4,\n padding: '2px 6px', minWidth: 200,\n }}\n />\n ) : (\n <span\n onClick={() => onWorkflowNameChange && setEditingName(true)}\n style={{\n fontSize: 15, fontWeight: 600, color: '#0f172a',\n cursor: onWorkflowNameChange ? 'text' : 'default',\n whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis',\n maxWidth: 360,\n }}\n title={workflowName}\n >\n {workflowName || 'Untitled workflow'}\n </span>\n )}\n\n {status && (\n <span\n style={{\n fontSize: 11, fontWeight: 600,\n padding: '3px 8px', borderRadius: 999,\n background: statusPalette.bg, color: statusPalette.fg,\n textTransform: 'uppercase', letterSpacing: 0.4,\n flexShrink: 0,\n }}\n >\n {status}\n </span>\n )}\n </div>\n\n {/* ── Right: action buttons ───────────────────────────────────────── */}\n <div style={{ marginLeft: 'auto', display: 'flex', alignItems: 'center', gap: 8 }}>\n {onCancel && (\n <button\n type=\"button\"\n onClick={onCancel}\n disabled={saving}\n style={{\n padding: '6px 14px', fontSize: 13, fontWeight: 500,\n border: '1px solid #cbd5e1', background: '#fff',\n color: '#475569', borderRadius: 6,\n cursor: saving ? 'not-allowed' : 'pointer',\n opacity: saving ? 0.6 : 1,\n }}\n >\n Cancel\n </button>\n )}\n {onSave && (\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving || saveDisabled}\n style={{\n padding: '6px 16px', fontSize: 13, fontWeight: 600,\n border: 'none',\n background: saveDisabled ? '#94a3b8' : 'var(--ff-primary, #1dbf60)',\n color: '#fff', borderRadius: 6,\n cursor: saving || saveDisabled ? 'not-allowed' : 'pointer',\n display: 'inline-flex', alignItems: 'center', gap: 6,\n minWidth: 80, justifyContent: 'center',\n }}\n >\n {saving ? 'Saving…' : saveLabel}\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport default FlowForgeHeader;\n","import React, { ReactNode, useState } from 'react';\r\nimport { Drawer, Box, IconButton, Dialog } from '@mui/material';\r\nimport { MdClose } from 'react-icons/md';\r\nimport { BiExpand, BiCollapse } from 'react-icons/bi';\r\n\r\ninterface BaseDrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n title: string;\r\n icon?: ReactNode;\r\n children: ReactNode;\r\n footer?: ReactNode;\r\n width?: number;\r\n}\r\n\r\nconst BaseDrawer = ({ isOpen, onClose, title, icon, children, footer, width = 600 }: BaseDrawerProps) => {\r\n const [isModal, setIsModal] = useState(false);\r\n\r\n const toggleModal = () => setIsModal((v) => !v);\r\n\r\n const Header = () => (\r\n <Box sx={{ display: 'flex', alignItems: 'center', p: 2, pt: 3, borderBottom: '1px solid #e0e0e0', mb: 0, flexShrink: 0 }}>\r\n {icon && (\r\n <Box sx={{ mr: 1.5, display: 'flex', alignItems: 'center', fontSize: '1.25rem', color: '#1DBF60' }}>\r\n {icon}\r\n </Box>\r\n )}\r\n {/* Plain span instead of MUI Typography variant=\"h6\" — variant pulls a heavier\r\n fontWeight from the theme that overrides our sx prop in some apps.\r\n Matches Bootstrap's `text-14 fw-semibold` (14px / 600), inline so we don't\r\n drag in a Bootstrap dependency. */}\r\n <span style={{ flexGrow: 1, fontSize: 14, fontWeight: 500, color: '#212121' }}>\r\n {title}\r\n </span>\r\n <IconButton onClick={toggleModal} size=\"small\" sx={{ mr: 1 }} title={isModal ? 'Collapse' : 'Expand'} data-testid=\"expand-collapse-base-drawer-btn\">\r\n {isModal ? <BiCollapse /> : <BiExpand />}\r\n </IconButton>\r\n <IconButton onClick={onClose} size=\"small\" data-testid=\"close-drawer-button\">\r\n <MdClose />\r\n </IconButton>\r\n </Box>\r\n );\r\n\r\n const Footer = () =>\r\n footer ? (\r\n <Box sx={{ flexShrink: 0, p: 2, borderTop: '1px solid #e0e0e0', display: 'flex', justifyContent: 'flex-end', gap: 2 }}>\r\n {footer}\r\n </Box>\r\n ) : null;\r\n\r\n if (isModal) {\r\n return (\r\n <Dialog open={isOpen} onClose={onClose} maxWidth={false} fullWidth PaperProps={{ sx: { display: 'flex', flexDirection: 'column', height: '80vh', boxShadow: 24, width: '750px', maxWidth: '100%' } }}>\r\n <Header />\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 0 }}>{children}</Box>\r\n <Footer />\r\n </Dialog>\r\n );\r\n }\r\n\r\n return (\r\n <Drawer\r\n anchor=\"right\"\r\n open={isOpen}\r\n onClose={onClose}\r\n variant=\"persistent\"\r\n sx={{ zIndex: 900 }}\r\n ModalProps={{ keepMounted: false }}\r\n PaperProps={{\r\n sx: {\r\n width,\r\n position: 'fixed',\r\n top: '64px',\r\n height: 'calc(100% - 74px)',\r\n right: '10px',\r\n borderRadius: '8px',\r\n border: '1px solid #bdbdbd',\r\n boxShadow: 'none',\r\n zIndex: 900,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n }}\r\n >\r\n <Header />\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 0 }}>{children}</Box>\r\n <Footer />\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default BaseDrawer;\r\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport ReactSelect from 'react-select';\nimport { MdBolt, MdCalendarToday, MdArrowBack } from 'react-icons/md';\nimport { GrTrigger } from 'react-icons/gr';\nimport BaseDrawer from './BaseDrawer';\nimport { FlowForgeMessages, WorkflowTemplate } from './types';\nimport { buildSelectStyles } from '../FlowForm/fieldTokens';\n\n/**\n * Option shape consumed by the source picker — matches what FlowForm fields use,\n * so a host's existing `getGroups`-style functions can be reused without adapters.\n */\nexport interface TriggerSourceOption {\n label: string;\n value: string;\n}\n\ninterface TriggerSelectorDrawerProps {\n open: boolean;\n templates: WorkflowTemplate[];\n messages: FlowForgeMessages;\n /** Called when the user finalises picking a trigger (and its sources, if any). */\n onSelect: (template: WorkflowTemplate, sources?: TriggerSourceOption[]) => void;\n onClose: () => void;\n /**\n * Optional async loader for trigger sources. When provided, the drawer goes to\n * stage 2 after a trigger is picked — if the loader returns a non-empty list,\n * the user picks one or more sources before the canvas is seeded.\n *\n * Returns an empty array for triggers that have no sources (the drawer skips\n * stage 2 in that case and seeds the canvas immediately).\n */\n loadTriggerSources?: (triggerKey: string) => Promise<TriggerSourceOption[]>;\n}\n\nconst TriggerSelectorDrawer = ({\n open, templates, messages,\n onSelect, onClose,\n loadTriggerSources,\n}: TriggerSelectorDrawerProps) => {\n // ── Two-stage state machine ─────────────────────────────────────────────────\n const [stage, setStage] = useState<'trigger' | 'sources'>('trigger');\n const [pickedTemplate, setPickedTemplate] = useState<WorkflowTemplate | null>(null);\n const [sourceOptions, setSourceOptions] = useState<TriggerSourceOption[]>([]);\n const [selectedSources, setSelectedSources] = useState<TriggerSourceOption[]>([]);\n const [loadingSources, setLoadingSources] = useState(false);\n const [sourcesError, setSourcesError] = useState<string | null>(null);\n\n // Reset on drawer close so reopening always starts at stage 1.\n useEffect(() => {\n if (!open) {\n setStage('trigger');\n setPickedTemplate(null);\n setSourceOptions([]);\n setSelectedSources([]);\n setLoadingSources(false);\n setSourcesError(null);\n }\n }, [open]);\n\n // Stage 1 → either skip to canvas (no loader / no sources) or advance to stage 2.\n const handleTriggerPick = useCallback(async (template: WorkflowTemplate) => {\n if (!loadTriggerSources) {\n onSelect(template);\n return;\n }\n setPickedTemplate(template);\n setLoadingSources(true);\n setSourcesError(null);\n try {\n const sources = await loadTriggerSources(template.triggerKey);\n if (!sources || sources.length === 0) {\n // Trigger has no sources — seed canvas straight away.\n onSelect(template);\n return;\n }\n setSourceOptions(sources);\n setStage('sources');\n } catch (e) {\n setSourcesError(e instanceof Error ? e.message : 'Failed to load sources.');\n } finally {\n setLoadingSources(false);\n }\n }, [loadTriggerSources, onSelect]);\n\n const handleBack = () => {\n setStage('trigger');\n setPickedTemplate(null);\n setSourceOptions([]);\n setSelectedSources([]);\n setSourcesError(null);\n };\n\n const handleContinue = () => {\n if (!pickedTemplate) return;\n onSelect(pickedTemplate, selectedSources);\n };\n\n // ── Render ──────────────────────────────────────────────────────────────────\n const showingSources = stage === 'sources' && pickedTemplate;\n\n const footer = showingSources ? (\n <>\n <Button type=\"button\" variant=\"outlined\" size=\"small\" onClick={handleBack}>\n {messages.cancel ?? 'Back'}\n </Button>\n <Button\n type=\"button\"\n variant=\"contained\"\n size=\"small\"\n onClick={handleContinue}\n disabled={selectedSources.length === 0}\n >\n {messages.save ?? 'Continue'}\n </Button>\n </>\n ) : null;\n\n return (\n <BaseDrawer\n isOpen={open}\n onClose={onClose}\n title={showingSources ? pickedTemplate.label : messages.addTriggerTitle}\n icon={<GrTrigger />}\n width={500}\n footer={footer}\n >\n <Box sx={{ p: 2 }}>\n {/* ── Stage 1 — trigger list ─────────────────────────────────────── */}\n {!showingSources && (\n <>\n <p className=\"ff-text-muted ff-mb-3\" style={{ fontSize: 13 }}>\n {messages.chooseTrigger}\n </p>\n <div className=\"ff-d-flex ff-flex-column ff-gap-2\">\n {templates.map((t) => (\n <div\n key={t.triggerKey}\n className=\"ff-p-3 ff-rounded ff-border ff-d-flex ff-align-items-start ff-gap-3\"\n style={{ cursor: loadingSources ? 'wait' : 'pointer', transition: 'background 0.15s', opacity: loadingSources ? 0.6 : 1 }}\n onClick={() => !loadingSources && handleTriggerPick(t)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter' && !loadingSources) handleTriggerPick(t); }}\n onMouseEnter={(e) => { if (!loadingSources) e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n <div style={{ color: t.triggerCategory === 'scheduler' ? '#1976d2' : '#f57c00', marginTop: 2, flexShrink: 0 }}>\n {t.triggerCategory === 'scheduler' ? <MdCalendarToday size={18} /> : <MdBolt size={18} />}\n </div>\n <div>\n <div style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{t.label}</div>\n {t.description && <div style={{ fontSize: 12, color: '#757575', marginTop: 2 }}>{t.description}</div>}\n </div>\n </div>\n ))}\n {templates.length === 0 && (\n <p className=\"ff-text-muted ff-text-center\" style={{ fontSize: 13 }}>\n {messages.noTriggers}\n </p>\n )}\n </div>\n\n {loadingSources && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mt: 2, fontSize: 12, color: '#64748b' }}>\n <CircularProgress size={14} />\n <span>Loading sources for the selected trigger…</span>\n </Box>\n )}\n {sourcesError && (\n <p style={{ fontSize: 12, color: '#d32f2f', marginTop: 12 }}>{sourcesError}</p>\n )}\n </>\n )}\n\n {/* ── Stage 2 — source picker (only when sources exist) ──────────── */}\n {showingSources && (\n <>\n <div\n role=\"button\"\n tabIndex={0}\n onClick={handleBack}\n onKeyDown={(e) => { if (e.key === 'Enter') handleBack(); }}\n className=\"ff-d-flex ff-align-items-center ff-gap-1 ff-mb-3\"\n style={{ cursor: 'pointer', color: '#0066cc', fontSize: 13, fontWeight: 500, width: 'fit-content' }}\n >\n <MdArrowBack size={16} />\n <span>{messages.addTriggerTitle}</span>\n </div>\n\n <p className=\"ff-text-muted ff-mb-2\" style={{ fontSize: 13 }}>\n Pick one or more sources for <strong>{pickedTemplate.label}</strong>:\n </p>\n\n <ReactSelect\n isMulti\n options={sourceOptions}\n value={selectedSources}\n onChange={(v) => setSelectedSources((v as TriggerSourceOption[]) ?? [])}\n placeholder=\"Select sources…\"\n menuPosition=\"fixed\"\n menuPortalTarget={typeof document !== 'undefined' ? document.body : undefined}\n styles={buildSelectStyles(false, true)}\n />\n </>\n )}\n </Box>\n </BaseDrawer>\n );\n};\n\nexport default TriggerSelectorDrawer;\n","import React, { ReactNode, useMemo, useState, useEffect } from 'react';\nimport { Box } from '@mui/material';\nimport { MdAddCircleOutline, MdArrowBack, MdChevronRight, MdApps } from 'react-icons/md';\nimport BaseDrawer from './BaseDrawer';\nimport { FlowForgeMessages, NodeDescriptor } from './types';\n\ninterface NodePickerDrawerProps {\n open: boolean;\n availableDescriptors: NodeDescriptor[];\n messages: FlowForgeMessages;\n onSelect: (descriptor: NodeDescriptor) => void;\n onClose: () => void;\n}\n\ninterface AppGroup {\n key: string;\n label: string;\n icon?: ReactNode;\n description?: string;\n descriptors: NodeDescriptor[];\n}\n\nconst cardStyle: React.CSSProperties = {\n cursor: 'pointer',\n transition: 'background 0.15s',\n};\n\nconst cardClass = 'ff-p-3 ff-rounded ff-border ff-d-flex ff-align-items-center ff-gap-3';\n\n/**\n * Workato-style drill-down picker:\n * Stage 1: list of apps (descriptors with `app`) + ungrouped descriptors\n * Stage 2: actions of the selected app, plus a \"Back\" affordance\n *\n * Descriptors without an `app` field appear directly at stage 1 — backward\n * compatible with the old flat-list behaviour.\n */\nconst NodePickerDrawer = ({ open, availableDescriptors, messages, onSelect, onClose }: NodePickerDrawerProps) => {\n // Group descriptors by app.key; descriptors without `app` go in `ungrouped`.\n const { apps, ungrouped } = useMemo(() => {\n const appMap = new Map<string, AppGroup>();\n const flat: NodeDescriptor[] = [];\n for (const d of availableDescriptors) {\n if (d.app) {\n const existing = appMap.get(d.app.key);\n if (existing) {\n existing.descriptors.push(d);\n } else {\n appMap.set(d.app.key, {\n key: d.app.key,\n label: d.app.label,\n icon: d.app.icon,\n description: d.app.description,\n descriptors: [d],\n });\n }\n } else {\n flat.push(d);\n }\n }\n return { apps: [...appMap.values()], ungrouped: flat };\n }, [availableDescriptors]);\n\n const [activeAppKey, setActiveAppKey] = useState<string | null>(null);\n const activeApp = activeAppKey ? apps.find((a) => a.key === activeAppKey) ?? null : null;\n\n // Reset to stage 1 whenever the drawer closes/reopens or descriptors change.\n useEffect(() => {\n if (!open) setActiveAppKey(null);\n }, [open]);\n useEffect(() => { setActiveAppKey(null); }, [availableDescriptors]);\n\n const stage1 = !activeApp;\n\n return (\n <BaseDrawer\n isOpen={open}\n onClose={onClose}\n title={stage1 ? messages.addStepTitle : activeApp.label}\n icon={stage1 ? <MdAddCircleOutline /> : (activeApp.icon as React.ReactNode) ?? <MdApps />}\n width={500}\n >\n <Box sx={{ p: 2 }}>\n {/* Back affordance for stage 2 */}\n {!stage1 && (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => setActiveAppKey(null)}\n onKeyDown={(e) => { if (e.key === 'Enter') setActiveAppKey(null); }}\n className=\"ff-d-flex ff-align-items-center ff-gap-1 ff-mb-3\"\n style={{ cursor: 'pointer', color: '#0066cc', fontSize: 13, fontWeight: 500, width: 'fit-content' }}\n >\n <MdArrowBack size={16} />\n <span>{messages.addStepTitle}</span>\n </div>\n )}\n\n <p className=\"ff-text-muted ff-mb-3\" style={{ fontSize: 13 }}>\n {stage1 ? messages.chooseAction : `Pick an action from ${activeApp.label}`}\n </p>\n\n <div className=\"ff-d-flex ff-flex-column ff-gap-2\">\n {stage1 ? (\n <>\n {/* App cards — drill into stage 2 */}\n {apps.map((a) => (\n <div\n key={`app-${a.key}`}\n className={cardClass}\n style={cardStyle}\n onClick={() => setActiveAppKey(a.key)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') setActiveAppKey(a.key); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {a.icon && <div style={{ flexShrink: 0 }}>{a.icon as ReactNode}</div>}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{a.label}</div>\n <div style={{ fontSize: 12, color: '#757575', marginTop: 2 }}>\n {a.description ?? `${a.descriptors.length} action${a.descriptors.length === 1 ? '' : 's'}`}\n </div>\n </div>\n <MdChevronRight size={18} color=\"#9e9e9e\" />\n </div>\n ))}\n\n {/* Ungrouped descriptors — render inline at stage 1 */}\n {ungrouped.map((d) => (\n <div\n key={d.type}\n className={cardClass}\n style={cardStyle}\n onClick={() => onSelect(d)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') onSelect(d); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {d.icon && <div style={{ flexShrink: 0 }}>{d.icon as ReactNode}</div>}\n <span style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{d.label}</span>\n </div>\n ))}\n\n {apps.length === 0 && ungrouped.length === 0 && (\n <p className=\"ff-text-muted ff-text-center\" style={{ fontSize: 13 }}>{messages.noActions}</p>\n )}\n </>\n ) : (\n /* Stage 2 — actions for the selected app */\n activeApp.descriptors.map((d) => (\n <div\n key={d.type}\n className={cardClass}\n style={cardStyle}\n onClick={() => onSelect(d)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') onSelect(d); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {d.icon && <div style={{ flexShrink: 0 }}>{d.icon as ReactNode}</div>}\n <span style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{d.label}</span>\n </div>\n ))\n )}\n </div>\n </Box>\n </BaseDrawer>\n );\n};\n\nexport default NodePickerDrawer;\n","import React, { useEffect, useState } from 'react';\r\nimport { Box, Button } from '@mui/material';\r\nimport { FlowForm } from '../FlowForm/DynamicFormRenderer';\r\nimport { FieldDescriptor } from '../FlowForm/types';\r\nimport type { ConditionConfig } from '../FlowForm/types/formula';\r\nimport { FlowForgeMessages, NodeDescriptor } from './types';\r\nimport BaseDrawer from './BaseDrawer';\r\n\r\n/** Key under which a node's condition-builder data is stored in its nodeData. */\r\nexport const CONDITION_CONFIG_KEY = '_conditionConfig';\r\n\r\ninterface NodeConfigDrawerProps {\r\n open: boolean;\r\n nodeId: string | null;\r\n descriptor: NodeDescriptor | null;\r\n initialValues?: Record<string, unknown>;\r\n messages: FlowForgeMessages;\r\n onSave: (nodeId: string, values: Record<string, unknown>) => void;\r\n onClose: () => void;\r\n}\r\n\r\nconst NodeConfigDrawer = ({ open, nodeId, descriptor, initialValues, messages, onSave, onClose }: NodeConfigDrawerProps) => {\r\n const [schema, setSchema] = useState<FieldDescriptor[]>([]);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n // Condition-builder data lives outside form `values`; seed it from the saved node.\r\n const [conditionConfig, setConditionConfig] = useState<ConditionConfig>({});\r\n\r\n useEffect(() => {\r\n setConditionConfig((initialValues?.[CONDITION_CONFIG_KEY] as ConditionConfig) ?? {});\r\n }, [initialValues, nodeId]);\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n setError(null);\r\n if (!descriptor || !nodeId) { setSchema([]); setLoading(false); return; }\r\n const fs = descriptor.formSchema;\r\n if (typeof fs === 'function') {\r\n setLoading(true);\r\n fs(nodeId)\r\n .then((s) => {\r\n if (cancelled) return;\r\n setSchema(s);\r\n setLoading(false);\r\n })\r\n .catch((err) => {\r\n if (cancelled) return;\r\n setSchema([]);\r\n setError(err instanceof Error ? err.message : 'Unable to load configuration.');\r\n setLoading(false);\r\n });\r\n } else {\r\n setSchema(fs);\r\n setLoading(false);\r\n }\r\n return () => { cancelled = true; };\r\n }, [descriptor, nodeId]);\r\n\r\n // Stable id so a Save button outside the form can submit it via the HTML5\r\n // `form` attribute. Each open instance gets its own id to avoid collisions\r\n // when multiple drawers are mounted.\r\n const formId = nodeId ? `node-config-form-${nodeId}` : 'node-config-form';\r\n\r\n const hasForm = !loading && !error && schema.length > 0;\r\n\r\n const footer = hasForm ? (\r\n <>\r\n <Button type=\"button\" variant=\"outlined\" size=\"small\" onClick={onClose}>{messages.cancel}</Button>\r\n <Button type=\"submit\" form={formId} variant=\"contained\" size=\"small\">{messages.save}</Button>\r\n </>\r\n ) : null;\r\n\r\n return (\r\n <BaseDrawer\r\n isOpen={open}\r\n onClose={onClose}\r\n title={descriptor?.label ?? messages.configureStep}\r\n icon={descriptor?.icon as React.ReactNode}\r\n width={500}\r\n footer={footer}\r\n >\r\n <Box sx={{ p: 2 }}>\r\n {loading && <p className=\"ff-text-muted\" style={{ fontSize: 13 }}>{messages.loadingConfiguration}</p>}\r\n\r\n {!loading && error && (\r\n <p style={{ fontSize: 13, color: '#d32f2f' }}>{error}</p>\r\n )}\r\n\r\n {!loading && !error && schema.length === 0 && (\r\n <p className=\"ff-text-muted\" style={{ fontSize: 13 }}>{messages.noConfigurationNeeded}</p>\r\n )}\r\n\r\n {hasForm && (\r\n <FlowForm\r\n schema={{ layout: 'flat', fields: schema }}\r\n initialValues={initialValues ?? {}}\r\n formId={formId}\r\n conditionConfig={conditionConfig}\r\n onConditionConfigChange={setConditionConfig}\r\n onSubmit={(values) => {\r\n if (!nodeId) return;\r\n const hasConditions = Object.keys(conditionConfig).length > 0;\r\n onSave(nodeId, { ...values, [CONDITION_CONFIG_KEY]: hasConditions ? conditionConfig : undefined });\r\n onClose();\r\n }}\r\n />\r\n )}\r\n </Box>\r\n </BaseDrawer>\r\n );\r\n};\r\n\r\nexport default NodeConfigDrawer;\r\n","import React, { useEffect, useState } from 'react';\nimport { MdAccountTree, MdErrorOutline } from 'react-icons/md';\nimport BaseDrawer from './BaseDrawer';\nimport { WorkflowState } from './types';\nimport { NodeTypeRegistry } from '../nodeRegistry';\nimport { TemplateRegistry } from '../templateRegistry';\n\ninterface SubWorkflowPreviewDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n workflowId: string | null;\n workflowLabel?: string;\n /** Host-provided async loader — returns the WorkflowState for the given ID */\n onFetchWorkflow: (workflowId: string) => Promise<WorkflowState>;\n}\n\ntype LoadState = { status: 'idle' } | { status: 'loading' } | { status: 'loaded'; state: WorkflowState } | { status: 'error'; message: string };\n\nconst SubWorkflowPreviewDrawer: React.FC<SubWorkflowPreviewDrawerProps> = ({\n isOpen,\n onClose,\n workflowId,\n workflowLabel,\n onFetchWorkflow,\n}) => {\n const [loadState, setLoadState] = useState<LoadState>({ status: 'idle' });\n\n useEffect(() => {\n if (!isOpen || !workflowId) {\n setLoadState({ status: 'idle' });\n return;\n }\n setLoadState({ status: 'loading' });\n onFetchWorkflow(workflowId)\n .then((state) => setLoadState({ status: 'loaded', state }))\n .catch((err) => setLoadState({ status: 'error', message: err?.message ?? 'Failed to load workflow' }));\n }, [isOpen, workflowId, onFetchWorkflow]);\n\n return (\n <BaseDrawer\n isOpen={isOpen}\n onClose={onClose}\n title={workflowLabel ? `Preview: ${workflowLabel}` : 'Sub-Workflow Preview'}\n icon={<MdAccountTree size={18} color=\"#00695c\" />}\n width={700}\n >\n <div style={{ height: '100%', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', padding: 24 }}>\n {loadState.status === 'idle' && (\n <span style={{ color: '#9e9e9e', fontSize: 14 }}>Select a workflow to preview</span>\n )}\n\n {loadState.status === 'loading' && (\n <div style={{ textAlign: 'center', color: '#9e9e9e' }}>\n <div style={{ width: 32, height: 32, borderRadius: '50%', border: '3px solid #e0e0e0', borderTopColor: '#00897b', animation: 'spin 0.8s linear infinite', margin: '0 auto 12px' }} />\n <span style={{ fontSize: 14 }}>Loading workflow…</span>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n )}\n\n {loadState.status === 'error' && (\n <div style={{ textAlign: 'center', color: '#c62828' }}>\n <MdErrorOutline size={32} style={{ marginBottom: 8 }} />\n <p style={{ margin: 0, fontSize: 14 }}>{loadState.message}</p>\n </div>\n )}\n\n {loadState.status === 'loaded' && (\n <div style={{ width: '100%', flex: 1 }}>\n {/* Lazy-import FlowForgeCanvas to avoid circular deps at module level */}\n <SubWorkflowCanvasRenderer state={loadState.state} />\n </div>\n )}\n </div>\n </BaseDrawer>\n );\n};\n\n/**\n * Renders a loaded WorkflowState as a read-only canvas.\n * Uses dynamic import to avoid circular dependency with WorkflowCanvas.tsx.\n */\nconst SubWorkflowCanvasRenderer: React.FC<{ state: WorkflowState }> = ({ state }) => {\n const [Canvas, setCanvas] = useState<React.ComponentType<{ nodeRegistry: NodeTypeRegistry; templateRegistry: TemplateRegistry; initialValue?: WorkflowState; readOnly?: boolean }> | null>(null);\n const [Registries, setRegistries] = useState<{ nodeTypeRegistry: NodeTypeRegistry; templateRegistry: TemplateRegistry } | null>(null);\n\n useEffect(() => {\n Promise.all([\n import('./WorkflowCanvas').then((m) => m.default),\n import('../nodeRegistry').then((m) => m.nodeTypeRegistry),\n import('../templateRegistry').then((m) => m.templateRegistry),\n ]).then(([CanvasComp, nReg, tReg]) => {\n setCanvas(() => CanvasComp);\n setRegistries({ nodeTypeRegistry: nReg, templateRegistry: tReg });\n });\n }, []);\n\n if (!Canvas || !Registries) {\n return <div style={{ color: '#9e9e9e', fontSize: 13, textAlign: 'center' }}>Loading canvas…</div>;\n }\n\n // Fixed height: drawer body has no intrinsic height; ReactFlow requires an explicit container size\n return (\n <div style={{ width: '100%', height: 480, border: '1px solid #e0e0e0', borderRadius: 8, overflow: 'hidden' }}>\n <Canvas\n nodeRegistry={Registries.nodeTypeRegistry}\n templateRegistry={Registries.templateRegistry}\n initialValue={state}\n readOnly\n />\n </div>\n );\n};\n\nexport default SubWorkflowPreviewDrawer;\n","import React, { useCallback, useMemo, useState } from 'react';\r\nimport dagre from '@dagrejs/dagre';\r\nimport ReactFlow, { Background, BackgroundVariant, Controls, Edge, EdgeTypes, MiniMap, Node, NodeTypes } from 'reactflow';\r\nimport LayoutUpdater from './LayoutUpdater';\r\nimport { FlowForgeHeader } from './FlowForgeHeader';\r\nimport 'reactflow/dist/style.css';\r\nimport './WorkflowCanvas.css';\r\nimport { NodeTypeRegistry } from '../nodeRegistry';\r\nimport { TemplateRegistry } from '../templateRegistry';\r\nimport { BranchMap, CanvasSlot, ExecutionRecord, FlowForgeMessages, NodeDescriptor, WorkflowState, WorkflowTemplate } from './types';\r\nimport { WorkflowCanvasContext } from './WorkflowCanvasContext';\r\nimport { builtInNodeTypes } from './nodes';\r\nimport type { BranchRailSpec, BranchRailEntry } from './nodes/BranchRailDecoration';\r\nimport EdgeWithPlusLabel from './edges/EdgeWithPlusLabel';\r\nimport { AddStepContext } from './edges/EdgeWithPlusLabel';\r\nimport PlusEdge from './edges/PlusEdge';\r\nimport PlainEdge from './edges/PlainEdge';\r\nimport LabelPlusEdge from './edges/LabelPlusEdge';\r\nimport GatewayBranchEdge from './edges/GatewayBranchEdge';\r\nimport TriggerSelectorDrawer from './TriggerSelectorDrawer';\r\nimport NodePickerDrawer from './NodePickerDrawer';\r\nimport NodeConfigDrawer from './NodeConfigDrawer';\r\nimport SubWorkflowPreviewDrawer from './SubWorkflowPreviewDrawer';\r\nimport { mergeMessages } from './messages';\r\nimport { OptionsResolversProvider } from '../FlowForm/options/OptionsResolversContext';\r\nimport type { OptionsResolvers } from '../FlowForm/types';\r\n\r\nconst NODE_WIDTH = 350;\r\nconst EDGE_GAP = 70;\r\nconst CANVAS_START_Y = 60;\r\n\r\n// Fallback heights keyed by reactFlowType — used only on first render before DOM measurement\r\nconst FALLBACK_NODE_HEIGHT: Record<string, number> = {\r\n startNode: 40,\r\n endNode: 40,\r\n addTriggerNode: 56,\r\n triggerNode: 110,\r\n actionNode: 90,\r\n filterNode: 90,\r\n approvalNode: 90,\r\n delayNode: 80,\r\n notificationNode: 80,\r\n};\r\n\r\ntype DrawerMode = 'triggerSelect' | 'nodePicker' | 'nodeConfig' | null;\r\n\r\nconst defaultEdgeTypes: EdgeTypes = {\r\n plusEdge: PlusEdge,\r\n labelPlusEdge: LabelPlusEdge,\r\n plainEdge: PlainEdge,\r\n edgeWithPlusLabel: EdgeWithPlusLabel,\r\n gatewayBranchEdge: GatewayBranchEdge,\r\n};\r\n\r\n\r\nfunction buildInitialSlots(): CanvasSlot[] {\r\n return [\r\n { id: 'start', kind: 'start', reactFlowType: 'startNode' },\r\n { id: 'addTrigger', kind: 'addTrigger', reactFlowType: 'addTriggerNode' },\r\n { id: 'end', kind: 'end', reactFlowType: 'endNode' },\r\n ];\r\n}\r\n\r\nfunction applyDagreLayout(\r\n nodes: Node[],\r\n edges: Edge[],\r\n nodeSizes: Record<string, { width: number; height: number }>,\r\n layoutDirection: 'TB' | 'LR' = 'TB',\r\n): Node[] {\r\n const g = new dagre.graphlib.Graph();\r\n g.setGraph({ rankdir: layoutDirection, ranksep: 70, nodesep: 50 });\r\n g.setDefaultEdgeLabel(() => ({}));\r\n\r\n nodes.forEach((node) => {\r\n const size = nodeSizes[node.id] ?? { width: NODE_WIDTH, height: FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80 };\r\n g.setNode(node.id, { width: size.width, height: size.height });\r\n });\r\n\r\n edges.forEach((edge) => g.setEdge(edge.source, edge.target));\r\n\r\n dagre.layout(g);\r\n\r\n return nodes.map((node) => {\r\n const pos = g.node(node.id);\r\n const w = nodeSizes[node.id]?.width ?? NODE_WIDTH;\r\n const h = nodeSizes[node.id]?.height ?? (FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80);\r\n return { ...node, position: { x: pos.x - w / 2, y: pos.y - h / 2 } };\r\n });\r\n}\r\n\r\nconst isBranchingKind = (kind: string) => kind === 'filter' || kind === 'approval';\r\n\r\n// Vertical (Workato-style) branch layout: branches stack top-to-bottom under their\r\n// gateway. Each gateway gets a rail spec describing the Y positions of its branches'\r\n// bullets, which the gateway node renders as a vertical rail with labelled bullets.\r\nfunction applyVerticalBranchLayout(\r\n slots: CanvasSlot[],\r\n branches: BranchMap,\r\n nodes: Node[],\r\n nodeSizes: Record<string, { width: number; height: number }>,\r\n): { nodes: Node[]; railSpecs: Record<string, BranchRailSpec> } {\r\n const CENTER_X = 400;\r\n const INDENT = 180; // wide enough that rail + label sit between gateway card and step\r\n const STEP_GAP = EDGE_GAP;\r\n const BRANCH_GAP = 30;\r\n // Vertical gap between a branch's rail bullet/label and the top of its first step.\r\n // Must match VERTICAL_BULLET_OFFSET in GatewayBranchEdge so the L-routed edge\r\n // (horizontal at bullet Y, then down into step top) lines up with the rail bullet.\r\n const BULLET_TO_STEP_GAP = 30;\r\n\r\n const positions: Record<string, { x: number; y: number }> = {};\r\n const railSpecs: Record<string, BranchRailSpec> = {};\r\n\r\n // Slot lookup for branchLabels\r\n const slotById = new Map<string, CanvasSlot>();\r\n for (const s of slots) slotById.set(s.id, s);\r\n for (const branchMap of Object.values(branches)) {\r\n for (const chain of Object.values(branchMap)) {\r\n for (const s of chain) slotById.set(s.id, s);\r\n }\r\n }\r\n\r\n const placeNode = (id: string, centerX: number, y: number): number => {\r\n const size = nodeSizes[id] ?? { width: NODE_WIDTH, height: 80 };\r\n positions[id] = { x: centerX - size.width / 2, y };\r\n return y + size.height;\r\n };\r\n\r\n const placeChain = (chain: CanvasSlot[], centerX: number, startY: number): number => {\r\n let y = startY;\r\n for (const slot of chain) {\r\n const bottom = placeNode(slot.id, centerX, y);\r\n y = bottom + STEP_GAP;\r\n if (isBranchingKind(slot.kind) && branches[slot.id]) {\r\n y = placeNestedBranches(slot.id, centerX, y);\r\n }\r\n }\r\n return y;\r\n };\r\n\r\n const placeNestedBranches = (parentId: string, parentCenterX: number, startY: number): number => {\r\n const childCenterX = parentCenterX + INDENT;\r\n const branchMap = branches[parentId];\r\n const keys = Object.keys(branchMap);\r\n const parentSlot = slotById.get(parentId);\r\n const labels = parentSlot?.branchLabels ?? { pass: 'Pass', fail: 'Fail' };\r\n const parentPos = positions[parentId];\r\n const parentSize = nodeSizes[parentId] ?? { width: NODE_WIDTH, height: 80 };\r\n const parentBottomY = parentPos.y + parentSize.height;\r\n\r\n const railBranches: BranchRailEntry[] = [];\r\n let y = startY;\r\n keys.forEach((key, idx) => {\r\n const chain = branchMap[key];\r\n // Bullet sits above the first node (step or End); the node top is offset down\r\n // by BULLET_TO_STEP_GAP so the edge L-routes (90° elbow) through the gap.\r\n const bulletY = y;\r\n railBranches.push({\r\n y: bulletY - parentBottomY,\r\n label: labels[key] ?? key,\r\n isPass: idx === 0,\r\n });\r\n y = placeChain(chain, childCenterX, y + BULLET_TO_STEP_GAP);\r\n if (idx < keys.length - 1) y += BRANCH_GAP;\r\n });\r\n\r\n railSpecs[parentId] = {\r\n branches: railBranches,\r\n height: y - parentBottomY,\r\n indent: INDENT,\r\n };\r\n return y;\r\n };\r\n\r\n let cursorY = CANVAS_START_Y;\r\n for (const slot of slots) {\r\n const bottom = placeNode(slot.id, CENTER_X, cursorY);\r\n cursorY = bottom + STEP_GAP;\r\n if (isBranchingKind(slot.kind) && branches[slot.id]) {\r\n cursorY = placeNestedBranches(slot.id, CENTER_X, cursorY);\r\n }\r\n }\r\n\r\n return {\r\n nodes: nodes.map((n) => positions[n.id] ? { ...n, position: positions[n.id] } : n),\r\n railSpecs,\r\n };\r\n}\r\n\r\nfunction makeNode(slot: CanvasSlot): Node {\r\n return {\r\n id: slot.id,\r\n type: slot.reactFlowType,\r\n position: { x: 0, y: 0 },\r\n data: { ...slot.nodeData, ...slot.formData, descriptorType: slot.descriptorType },\r\n draggable: false,\r\n selectable: false,\r\n };\r\n}\r\n\r\nfunction makePlusEdge(\r\n prev: CanvasSlot,\r\n curr: CanvasSlot,\r\n edgeColor: string,\r\n onAddStepClick: ((sourceNodeId: string, ctx: AddStepContext) => void) | null,\r\n branchCtx?: { filterId: string; branch: string },\r\n): Edge {\r\n return {\r\n id: `e-${prev.id}-${curr.id}`,\r\n source: prev.id,\r\n target: curr.id,\r\n type: 'plusEdge',\r\n style: { stroke: edgeColor },\r\n data: {\r\n onAddStepClick,\r\n referenceNodeType: prev.reactFlowType,\r\n ...(branchCtx ?? {}),\r\n },\r\n };\r\n}\r\n\r\nfunction slotsToFlow(\r\n slots: CanvasSlot[],\r\n branches: BranchMap,\r\n onAddStepClick: ((sourceNodeId: string, context: AddStepContext) => void) | null,\r\n nodeMeasurements: Record<string, number>,\r\n theme: FlowForgeTheme = {},\r\n layoutDirection: 'TB' | 'LR' = 'TB',\r\n branchLayout: 'horizontal' | 'vertical' = 'horizontal',\r\n): { nodes: Node[]; edges: Edge[] } {\r\n const edgeColor = theme.edgeColor ?? '#b0bec5';\r\n const nodes: Node[] = [];\r\n const edges: Edge[] = [];\r\n\r\n\r\n // Recursively emit nodes + edges for a branching node's chains\r\n const emitFilterBranches = (filterId: string, branchLabels?: Record<string, string>) => {\r\n const b = branches[filterId];\r\n if (!b) return;\r\n const defaultLabels: Record<string, string> = { pass: 'Pass', fail: 'Fail' };\r\n const labels = branchLabels ?? defaultLabels;\r\n const branchKeys = Object.keys(b);\r\n\r\n const emitChain = (chain: CanvasSlot[], branchKey: string, branchLabel: string, branchIndex: number) => {\r\n if (chain.length === 0) return;\r\n chain.forEach((s) => nodes.push(makeNode(s)));\r\n edges.push({\r\n id: `e-${filterId}-${branchKey}-start`,\r\n source: filterId,\r\n target: chain[0].id,\r\n type: 'gatewayBranchEdge',\r\n style: { stroke: edgeColor },\r\n data: { branch: branchKey, filterId, label: branchLabel, isFirst: branchIndex === 0, onAddStepClick, verticalRouting: branchLayout === 'vertical' },\r\n });\r\n for (let j = 1; j < chain.length; j++) {\r\n if (isBranchingKind(chain[j - 1].kind)) continue;\r\n edges.push(makePlusEdge(chain[j - 1], chain[j], edgeColor, onAddStepClick, { filterId, branch: branchKey }));\r\n }\r\n for (const s of chain) {\r\n if (isBranchingKind(s.kind) && branches[s.id]) emitFilterBranches(s.id, s.branchLabels);\r\n }\r\n };\r\n\r\n branchKeys.forEach((key, idx) => {\r\n emitChain(b[key], key, labels[key] ?? key, idx);\r\n });\r\n };\r\n\r\n for (let i = 0; i < slots.length; i++) {\r\n const slot = slots[i];\r\n nodes.push(makeNode(slot));\r\n\r\n if (i > 0) {\r\n const prev = slots[i - 1];\r\n const isPlain = prev.kind === 'start' || prev.kind === 'addTrigger';\r\n\r\n // Branching nodes connect to branches, not to the next spine slot\r\n if (prev.kind === 'filter' || prev.kind === 'approval') continue;\r\n\r\n edges.push({\r\n id: `e-${prev.id}-${slot.id}`,\r\n source: prev.id,\r\n target: slot.id,\r\n type: isPlain ? 'plainEdge' : 'plusEdge',\r\n style: { stroke: edgeColor },\r\n data: isPlain ? {} : {\r\n onAddStepClick,\r\n referenceNodeType: prev.reactFlowType,\r\n },\r\n });\r\n }\r\n\r\n // If this is a branching node, emit its two branch chains\r\n if ((slot.kind === 'filter' || slot.kind === 'approval') && branches[slot.id]) {\r\n emitFilterBranches(slot.id, slot.branchLabels);\r\n }\r\n }\r\n\r\n const nodeSizes: Record<string, { width: number; height: number }> = {};\r\n nodes.forEach((node) => {\r\n nodeSizes[node.id] = {\r\n width: NODE_WIDTH,\r\n height: nodeMeasurements[node.id] ?? FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80,\r\n };\r\n });\r\n\r\n const hasBranches = Object.keys(branches).length > 0;\r\n\r\n if (!hasBranches) {\r\n // Linear flow — manual positioning gives constant gaps regardless of node height\r\n if (layoutDirection === 'LR') {\r\n const centerY = 300;\r\n let x = CANVAS_START_Y;\r\n const layoutedNodes = nodes.map((node) => {\r\n const w = nodeSizes[node.id].width;\r\n const h = nodeSizes[node.id].height;\r\n const positioned = { ...node, position: { x, y: centerY - h / 2 } };\r\n x += w + EDGE_GAP;\r\n return positioned;\r\n });\r\n return { nodes: layoutedNodes, edges };\r\n }\r\n const centerX = 400;\r\n let y = CANVAS_START_Y;\r\n const layoutedNodes = nodes.map((node) => {\r\n const h = nodeSizes[node.id].height;\r\n const positioned = { ...node, position: { x: centerX - NODE_WIDTH / 2, y } };\r\n y += h + EDGE_GAP;\r\n return positioned;\r\n });\r\n return { nodes: layoutedNodes, edges };\r\n }\r\n\r\n // Branching flow\r\n if (branchLayout === 'vertical') {\r\n const { nodes: layoutedNodes, railSpecs } = applyVerticalBranchLayout(slots, branches, nodes, nodeSizes);\r\n // Inject rail spec into each gateway node's data so the node renders its own rail.\r\n const withRails = layoutedNodes.map((n) =>\r\n railSpecs[n.id] ? { ...n, data: { ...n.data, _branchRail: railSpecs[n.id] } } : n\r\n );\r\n return { nodes: withRails, edges };\r\n }\r\n const layoutedNodes = applyDagreLayout(nodes, edges, nodeSizes, layoutDirection);\r\n return { nodes: layoutedNodes, edges };\r\n}\r\n\r\nexport interface FlowForgeTheme {\r\n primaryColor?: string;\r\n edgeColor?: string;\r\n textColor?: string;\r\n mutedTextColor?: string;\r\n surfaceColor?: string;\r\n borderColor?: string;\r\n dangerColor?: string;\r\n borderRadius?: number;\r\n fontFamily?: string;\r\n /** ReactFlow canvas background style. 'none' hides the background entirely. Default: 'dots' */\r\n background?: 'dots' | 'lines' | 'cross' | 'none';\r\n /** Background dot/line color. Default: '#e0e0e0' */\r\n backgroundColor?: string;\r\n}\r\n\r\n/** All ReactFlow behaviour settings — serialisable as JSON config */\r\nexport interface FlowForgeCanvasOptions {\r\n /** Fit the whole graph into view on mount. Default: true */\r\n fitView?: boolean;\r\n fitViewPadding?: number;\r\n /** Show the zoom-in / zoom-out / fit controls. Default: true */\r\n showControls?: boolean;\r\n /** Show the mini-map overview. Default: false */\r\n showMiniMap?: boolean;\r\n /** Pan the canvas by scrolling (no Ctrl needed). Default: true */\r\n panOnScroll?: boolean;\r\n /** Zoom with the scroll wheel. Default: false */\r\n zoomOnScroll?: boolean;\r\n minZoom?: number;\r\n maxZoom?: number;\r\n /** Snap nodes to a grid while dragging. Default: false */\r\n snapToGrid?: boolean;\r\n snapGrid?: [number, number];\r\n /**\r\n * How branches under a conditional/gateway node are arranged.\r\n * 'horizontal' (default): branches spread side-by-side (Dagre).\r\n * 'vertical': branches stack top-to-bottom, indented right under their parent (Workato style).\r\n */\r\n branchLayout?: 'horizontal' | 'vertical';\r\n /**\r\n * How much of a node's data to show on its card.\r\n * 'full' (default): show configured value badges / the descriptor's custom body.\r\n * 'title-only': show just the node title — for teams that want minimal cards.\r\n */\r\n nodeBody?: 'full' | 'title-only';\r\n}\r\n\r\n/** @deprecated Use FlowForgeCanvasProps */\r\nexport type WorkflowCanvasProps = FlowForgeCanvasProps;\r\n\r\nexport interface FlowForgeCanvasProps {\r\n nodeRegistry: NodeTypeRegistry;\r\n templateRegistry: TemplateRegistry;\r\n /** Pre-populate the canvas from a previously saved WorkflowState. */\r\n initialValue?: WorkflowState;\r\n nodeTypes?: NodeTypes;\r\n edgeTypes?: EdgeTypes;\r\n onSave?: (workflow: WorkflowState) => void;\r\n /** Disables all editing — no add/delete/config, edges have no \"+\" button */\r\n readOnly?: boolean;\r\n /** Brand colors applied across edges, plus button, and node accents */\r\n theme?: FlowForgeTheme;\r\n /** Built-in UI labels for i18n/white-label copy. */\r\n messages?: Partial<FlowForgeMessages>;\r\n /** ReactFlow behaviour settings — all serialisable as plain JSON */\r\n canvasOptions?: FlowForgeCanvasOptions;\r\n /** Replace the trigger selector UI entirely */\r\n renderTriggerSelector?: (templates: WorkflowTemplate[], onSelect: (t: WorkflowTemplate) => void, onClose: () => void) => React.ReactNode;\r\n /**\r\n * Optional async loader for trigger sources. When provided, the default\r\n * trigger selector goes to a second stage after the user picks a trigger:\r\n * the loader is called with the trigger's key, and if it returns a non-empty\r\n * list, the user picks one or more sources before the canvas is seeded.\r\n * Picked sources are merged into the trigger node's `nodeData.sources` so\r\n * TriggerNode can render the \"via [chip] [chip]\" line.\r\n *\r\n * Return `[]` for triggers that have no sources — stage 2 is skipped.\r\n */\r\n loadTriggerSources?: (triggerKey: string) => Promise<Array<{ label: string; value: string }>>;\r\n /** Replace the node picker UI entirely */\r\n renderNodePicker?: (descriptors: NodeDescriptor[], onSelect: (d: NodeDescriptor) => void, onClose: () => void) => React.ReactNode;\r\n /** Replace the node config drawer entirely */\r\n renderNodeConfig?: (descriptor: NodeDescriptor | undefined, slot: CanvasSlot | null, onSave: (id: string, values: Record<string, unknown>) => void, onClose: () => void) => React.ReactNode;\r\n /** Intercept node click — return true to suppress default behaviour */\r\n onNodeClick?: (slot: CanvasSlot) => boolean | void;\r\n /** Global cap on total user task nodes */\r\n maxNodes?: number;\r\n /** Flow layout direction. 'TB' = top-to-bottom (default), 'LR' = left-to-right */\r\n layoutDirection?: 'TB' | 'LR';\r\n /**\r\n * When provided, renders an execution overlay on the canvas nodes:\r\n * green = success, red = failed, grey = skipped/pending.\r\n * Combine with readOnly=true to show a past run without editing.\r\n */\r\n executionRecord?: ExecutionRecord;\r\n /**\r\n * Called when a SubWorkflowNode's \"Preview\" button is clicked.\r\n * Return the WorkflowState for the given workflowId to render it in a drawer.\r\n */\r\n onFetchWorkflow?: (workflowId: string) => Promise<WorkflowState>;\r\n\r\n // ── Built-in header chrome ───────────────────────────────────────────────\r\n /** Hide the built-in top bar (Save / Cancel / name). Default false. */\r\n hideHeader?: boolean;\r\n /** Display name in the header. */\r\n workflowName?: string;\r\n /** Make the header name click-to-edit. */\r\n onWorkflowNameChange?: (name: string) => void;\r\n /** Cancel button shows only when this handler is provided. */\r\n onCancel?: () => void;\r\n /** Status pill text + color (e.g. 'Draft' / 'amber'). */\r\n workflowStatus?: string;\r\n workflowStatusColor?: 'gray' | 'green' | 'amber' | 'red' | string;\r\n /** Override the Save button label. */\r\n saveLabel?: string;\r\n /**\r\n * Host-registered map of named option resolvers. Fields in any node's\r\n * `formSchema` may declare `optionsSource: { id, dependsOn, params }` to\r\n * populate a select asynchronously. Transport-agnostic — the host's\r\n * resolver can use axios, fetch, GraphQL, etc.\r\n *\r\n * Example:\r\n * optionsResolvers={{\r\n * 'app:groups': async ({ appId }, { cursor=0 }) => {\r\n * const res = await api.get(`/groups?startIndex=${cursor}&count=50`);\r\n * return {\r\n * options: res.data.map(g => ({ value: g.uuid, label: g.name })),\r\n * nextCursor: res.data.length === 50 ? cursor + 50 : undefined,\r\n * };\r\n * }\r\n * }}\r\n *\r\n * Resolvers are cached for the session keyed by (resolverId, deps). Use\r\n * `useOptionsResolvers().invalidate(id)` to bust a cache entry manually.\r\n */\r\n optionsResolvers?: OptionsResolvers;\r\n}\r\n\r\nconst FlowForgeCanvas = ({\r\n nodeRegistry,\r\n templateRegistry,\r\n initialValue,\r\n nodeTypes: consumerNodeTypes,\r\n edgeTypes: consumerEdgeTypes,\r\n onSave,\r\n readOnly = false,\r\n theme = {},\r\n messages: messageOverrides,\r\n canvasOptions = {},\r\n renderTriggerSelector,\r\n loadTriggerSources,\r\n renderNodePicker,\r\n renderNodeConfig,\r\n onNodeClick: onNodeClickProp,\r\n maxNodes,\r\n layoutDirection = 'TB',\r\n executionRecord,\r\n onFetchWorkflow,\r\n hideHeader = false,\r\n workflowName,\r\n onWorkflowNameChange,\r\n onCancel,\r\n workflowStatus,\r\n workflowStatusColor,\r\n saveLabel,\r\n optionsResolvers,\r\n}: FlowForgeCanvasProps) => {\r\n const {\r\n fitView: optFitView = true,\r\n fitViewPadding = 0.3,\r\n showControls = true,\r\n showMiniMap = false,\r\n panOnScroll: optPanOnScroll = true,\r\n zoomOnScroll: optZoomOnScroll = false,\r\n minZoom = 0.25,\r\n maxZoom = 2,\r\n snapToGrid = false,\r\n snapGrid = [15, 15] as [number, number],\r\n branchLayout = 'horizontal',\r\n nodeBody = 'full',\r\n } = canvasOptions;\r\n const messages = useMemo(() => mergeMessages(messageOverrides), [messageOverrides]);\r\n const [slots, setSlots] = useState<CanvasSlot[]>(() => initialValue?.slots ?? buildInitialSlots());\r\n const [branches, setBranches] = useState<BranchMap>(() => initialValue?.branches ?? {});\r\n const [drawerMode, setDrawerMode] = useState<DrawerMode>(null);\r\n const [activeSlotId, setActiveSlotId] = useState<string | null>(null);\r\n const [insertAfterSourceId, setInsertAfterSourceId] = useState<string | null>(null);\r\n const [insertBranchCtx, setInsertBranchCtx] = useState<{ filterId: string; branch: string } | null>(null);\r\n const [subWorkflowPreview, setSubWorkflowPreview] = useState<{ workflowId: string; workflowLabel?: string } | null>(null);\r\n const [selectedTemplate, setSelectedTemplate] = useState<WorkflowTemplate | null>(() => {\r\n const triggerSlot = initialValue?.slots.find((slot) => slot.kind === 'triggerFixed');\r\n const triggerKey = triggerSlot?.id.startsWith('trigger-') ? triggerSlot.id.slice('trigger-'.length) : undefined;\r\n return triggerKey ? templateRegistry.lookup(triggerKey) ?? null : null;\r\n });\r\n const [nodeMeasurements, setNodeMeasurements] = useState<Record<string, number>>({});\r\n\r\n const handleHeightsReady = useCallback((heights: Record<string, number>) => {\r\n setNodeMeasurements(heights);\r\n }, []);\r\n\r\n const mergedNodeTypes = useMemo<NodeTypes>(() => ({ ...builtInNodeTypes, ...consumerNodeTypes }), [consumerNodeTypes]);\r\n const mergedEdgeTypes = useMemo<EdgeTypes>(() => ({ ...defaultEdgeTypes, ...consumerEdgeTypes }), [consumerEdgeTypes]);\r\n\r\n // count tasks across main spine + all branch chains\r\n const userTaskCount = useMemo(() => {\r\n const spineCount = slots.filter((s) => s.kind === 'userTask').length;\r\n const branchCount = Object.values(branches).flatMap((b) => Object.values(b).flat()).filter((s) => s.kind === 'userTask').length;\r\n return spineCount + branchCount;\r\n }, [slots, branches]);\r\n const effectiveMaxNodes = maxNodes ?? selectedTemplate?.maxTasks;\r\n const atMaxNodes = effectiveMaxNodes !== undefined && userTaskCount >= effectiveMaxNodes;\r\n\r\n // find a slot in spine or any branch\r\n const findSlot = useCallback((slotId: string): CanvasSlot | null => {\r\n const spineSlot = slots.find((s) => s.id === slotId);\r\n if (spineSlot) return spineSlot;\r\n for (const b of Object.values(branches)) {\r\n const found = Object.values(b).flat().find((s) => s.id === slotId);\r\n if (found) return found;\r\n }\r\n return null;\r\n }, [slots, branches]);\r\n\r\n const onEditNode = useCallback((slotId: string) => {\r\n if (readOnly) return;\r\n setActiveSlotId(slotId);\r\n setDrawerMode('nodeConfig');\r\n }, [readOnly]);\r\n\r\n const onDeleteNode = useCallback((slotId: string) => {\r\n if (readOnly) return;\r\n // check spine first\r\n if (slots.some((s) => s.id === slotId)) {\r\n const removed = slots.find((s) => s.id === slotId);\r\n // deleting the trigger resets the canvas to initial state\r\n if (removed?.kind === 'triggerFixed') {\r\n setSlots(buildInitialSlots());\r\n setBranches({});\r\n setSelectedTemplate(null);\r\n return;\r\n }\r\n setSlots((prev) => {\r\n const next = prev.filter((s) => s.id !== slotId);\r\n if (isBranchingKind(removed?.kind ?? '') && !next.some((s) => s.kind === 'end')) {\r\n return [...next, { id: 'end', kind: 'end', reactFlowType: 'endNode' }];\r\n }\r\n return next;\r\n });\r\n setBranches((prev) => {\r\n const next = { ...prev };\r\n const collectAll = (id: string) => {\r\n if (!next[id]) return;\r\n Object.values(next[id]).flat().filter((s) => isBranchingKind(s.kind)).forEach((s) => collectAll(s.id));\r\n delete next[id];\r\n };\r\n collectAll(slotId);\r\n return next;\r\n });\r\n return;\r\n }\r\n // else it's in a branch chain\r\n setBranches((prev) => {\r\n // collect all nested filter IDs under a chain recursively\r\n const collectNestedFilterIds = (chain: CanvasSlot[], map: BranchMap): string[] => {\r\n const ids: string[] = [];\r\n for (const s of chain) {\r\n if (isBranchingKind(s.kind) && map[s.id]) {\r\n ids.push(s.id);\r\n Object.values(map[s.id]).forEach((c) => ids.push(...collectNestedFilterIds(c, map)));\r\n }\r\n }\r\n return ids;\r\n };\r\n\r\n const next = { ...prev };\r\n for (const filterId of Object.keys(next)) {\r\n for (const branch of Object.keys(next[filterId])) {\r\n const chain = next[filterId][branch];\r\n const idx = chain.findIndex((s) => s.id === slotId);\r\n if (idx === -1 || chain[idx].kind === 'end') continue;\r\n\r\n const deleted = chain[idx];\r\n let newChain = chain.filter((s) => s.id !== slotId);\r\n\r\n // if deleted node was a filter, restore End to this chain and remove its sub-branches\r\n if (deleted.kind === 'filter') {\r\n const nestedIds = deleted.id in next ? collectNestedFilterIds([deleted], next) : [];\r\n nestedIds.forEach((id) => delete next[id]);\r\n delete next[deleted.id];\r\n // restore End if chain has none\r\n if (!newChain.some((s) => s.kind === 'end')) {\r\n newChain = [...newChain, { id: `end-${filterId}-${branch}`, kind: 'end', reactFlowType: 'endNode' }];\r\n }\r\n }\r\n\r\n next[filterId] = { ...next[filterId], [branch]: newChain };\r\n return next;\r\n }\r\n }\r\n return next;\r\n });\r\n }, [readOnly, slots]);\r\n\r\n const onClickAddTrigger = useCallback(() => {\r\n if (readOnly) return;\r\n setDrawerMode('triggerSelect');\r\n }, [readOnly]);\r\n\r\n const handleAddStepClick = useCallback((sourceNodeId: string, context: AddStepContext) => {\r\n if (readOnly || atMaxNodes) return;\r\n setInsertAfterSourceId(sourceNodeId);\r\n setInsertBranchCtx(context.filterId && context.branch ? { filterId: context.filterId, branch: context.branch } : null);\r\n setDrawerMode('nodePicker');\r\n }, [readOnly, atMaxNodes]);\r\n\r\n const handleTriggerSelect = useCallback((template: WorkflowTemplate, pickedSources?: Array<{ label: string; value: string }>) => {\r\n setSelectedTemplate(template);\r\n setDrawerMode(null);\r\n\r\n // If the template declares a skeletonState, use it verbatim — that lets\r\n // templates pre-seed fixed steps (e.g. \"User Created\" event) alongside the\r\n // trigger. If the user picked sources (stage 2 of the trigger drawer),\r\n // merge them into the trigger slot's nodeData so TriggerNode shows the\r\n // \"via [chip] [chip]\" line.\r\n if (template.skeletonState) {\r\n const hasPickedSources = Array.isArray(pickedSources) && pickedSources.length > 0;\r\n const skeletonSlots = (template.skeletonState.slots ?? []).map((s) => {\r\n if (s.kind !== 'triggerFixed') return s;\r\n // Always merge the template's label into the trigger slot's nodeData\r\n // (unless the skeleton already provided one). This guarantees the\r\n // TriggerNode body shows the human-curated title (e.g. \"PAM Access\r\n // Request\") instead of an all-caps fallback from the eventType code.\r\n return {\r\n ...s,\r\n nodeData: {\r\n label: template.label,\r\n ...(s.nodeData ?? {}),\r\n ...(hasPickedSources && { sources: pickedSources }),\r\n },\r\n };\r\n });\r\n setBranches(template.skeletonState.branches ?? {});\r\n setSlots(skeletonSlots);\r\n return;\r\n }\r\n\r\n setBranches({});\r\n const hasPickedSources = Array.isArray(pickedSources) && pickedSources.length > 0;\r\n setSlots([\r\n { id: 'start', kind: 'start', reactFlowType: 'startNode' },\r\n {\r\n id: `trigger-${template.triggerKey}`,\r\n kind: 'triggerFixed',\r\n reactFlowType: 'triggerNode',\r\n nodeData: {\r\n label: template.label,\r\n source: template.source,\r\n eventType: template.triggerKey,\r\n type: template.triggerCategory === 'scheduler' ? 'scheduler' : 'event',\r\n ...(hasPickedSources && { sources: pickedSources }),\r\n },\r\n deletable: false,\r\n },\r\n { id: 'end', kind: 'end', reactFlowType: 'endNode' },\r\n ]);\r\n }, []);\r\n\r\n /**\r\n * Compute the InsertContext for the current pending insertion point —\r\n * upstream/downstream slots, branch info, active template. Used by\r\n * descriptors' position-aware `canInsert` / `insertAfter` / `insertBefore`.\r\n */\r\n const buildInsertContext = useCallback((): import('./types').InsertContext => {\r\n const ctx: import('./types').InsertContext = {\r\n insertAfterSlot: null,\r\n upstreamSlots: [],\r\n downstreamSlots: [],\r\n branch: insertBranchCtx,\r\n template: selectedTemplate,\r\n };\r\n if (!insertAfterSourceId) return ctx;\r\n\r\n if (insertBranchCtx) {\r\n // Inside a branch — upstream = spine up to (and including) the filter +\r\n // branch slots up to the click site; downstream = remaining branch slots.\r\n const { filterId, branch } = insertBranchCtx;\r\n const spineIdx = slots.findIndex((s) => s.id === filterId);\r\n const spineUp = spineIdx >= 0 ? slots.slice(0, spineIdx + 1) : [];\r\n const branchChain = branches[filterId]?.[branch] ?? [];\r\n const branchIdx = branchChain.findIndex((s) => s.id === insertAfterSourceId);\r\n const branchUp = branchIdx >= 0 ? branchChain.slice(0, branchIdx + 1) : [];\r\n ctx.upstreamSlots = [...spineUp, ...branchUp];\r\n ctx.downstreamSlots = branchIdx >= 0 ? branchChain.slice(branchIdx + 1) : branchChain;\r\n ctx.insertAfterSlot = branchUp[branchUp.length - 1] ?? null;\r\n return ctx;\r\n }\r\n\r\n // Spine\r\n const idx = slots.findIndex((s) => s.id === insertAfterSourceId);\r\n ctx.upstreamSlots = idx >= 0 ? slots.slice(0, idx + 1) : [];\r\n ctx.downstreamSlots = idx >= 0 ? slots.slice(idx + 1) : [];\r\n ctx.insertAfterSlot = ctx.upstreamSlots[ctx.upstreamSlots.length - 1] ?? null;\r\n return ctx;\r\n }, [slots, branches, insertAfterSourceId, insertBranchCtx, selectedTemplate]);\r\n\r\n /** Token match against descriptorType / id / kind — used by insertAfter / insertBefore. */\r\n const slotMatchesToken = (slot: CanvasSlot, token: string): boolean =>\r\n slot.descriptorType === token || slot.id === token || slot.kind === token;\r\n\r\n const getAvailableDescriptors = useCallback((): NodeDescriptor[] => {\r\n const all = nodeRegistry.list();\r\n const allowed = selectedTemplate?.availableTasks\r\n ? all.filter((d) => selectedTemplate.availableTasks!.includes(d.type))\r\n : all;\r\n const ctx = buildInsertContext();\r\n return allowed.filter((descriptor) => {\r\n // maxPerWorkflow filter (existing)\r\n if (descriptor.maxPerWorkflow !== undefined) {\r\n const currentCount = slots.filter((s) => s.descriptorType === descriptor.type).length\r\n + Object.values(branches)\r\n .flatMap((branchMap) => Object.values(branchMap).flat())\r\n .filter((s) => s.descriptorType === descriptor.type)\r\n .length;\r\n if (currentCount >= descriptor.maxPerWorkflow) return false;\r\n }\r\n\r\n // Position-aware filters\r\n if (descriptor.canInsert) {\r\n // Full custom rule — overrides insertAfter / insertBefore.\r\n return descriptor.canInsert(ctx);\r\n }\r\n if (descriptor.insertAfter && descriptor.insertAfter.length > 0) {\r\n const ok = ctx.upstreamSlots.some((s) =>\r\n descriptor.insertAfter!.some((t) => slotMatchesToken(s, t)),\r\n );\r\n if (!ok) return false;\r\n }\r\n if (descriptor.insertBefore && descriptor.insertBefore.length > 0) {\r\n const ok = ctx.downstreamSlots.some((s) =>\r\n descriptor.insertBefore!.some((t) => slotMatchesToken(s, t)),\r\n );\r\n if (!ok) return false;\r\n }\r\n return true;\r\n });\r\n }, [nodeRegistry, selectedTemplate, slots, branches, buildInsertContext]);\r\n\r\n const handleNodeTypeSelect = useCallback((descriptor: NodeDescriptor) => {\r\n if (!insertAfterSourceId) return;\r\n const newTaskId = `${descriptor.type}-${Date.now()}`;\r\n const isBranching = descriptor.reactFlowType === 'filterNode' || descriptor.reactFlowType === 'approvalNode' || descriptor.reactFlowType === 'conditionBranchNode';\r\n const branchLabels: Record<string, string> = descriptor.branchLabels ?? { pass: 'Pass', fail: 'Fail' };\r\n\r\n const taskSlot: CanvasSlot = {\r\n id: newTaskId,\r\n kind: isBranching ? (descriptor.reactFlowType === 'approvalNode' ? 'approval' : 'filter') : 'userTask',\r\n reactFlowType: descriptor.reactFlowType,\r\n descriptorType: descriptor.type,\r\n formData: {},\r\n nodeData: { title: descriptor.label },\r\n deletable: true,\r\n branchLabels,\r\n };\r\n\r\n if (insertBranchCtx) {\r\n // inserting into a branch chain\r\n const { filterId, branch } = insertBranchCtx;\r\n setBranches((prev) => {\r\n const chain = [...prev[filterId][branch]];\r\n if (isBranching) {\r\n // filter takes over termination — remove End from parent chain, init new filter's branches\r\n const chainWithoutEnd = chain.filter((s) => s.kind !== 'end');\r\n const insertIdx = chainWithoutEnd.findIndex((s) => s.id === insertAfterSourceId);\r\n const at = insertIdx === -1 ? chainWithoutEnd.length : insertIdx + 1;\r\n chainWithoutEnd.splice(at, 0, taskSlot);\r\n return {\r\n ...prev,\r\n [filterId]: { ...prev[filterId], [branch]: chainWithoutEnd },\r\n [newTaskId]: Object.fromEntries(\r\n Object.keys(branchLabels).map((k) => [k, [{ id: `end-${newTaskId}-${k}`, kind: 'end', reactFlowType: 'endNode' }]])\r\n ),\r\n };\r\n }\r\n // regular node — insert before End\r\n const sourceIdx = chain.findIndex((s) => s.id === insertAfterSourceId);\r\n const endIdx = chain.findIndex((s) => s.kind === 'end');\r\n const at = sourceIdx === -1\r\n ? (endIdx === -1 ? chain.length : endIdx)\r\n : sourceIdx + 1;\r\n chain.splice(at, 0, taskSlot);\r\n return { ...prev, [filterId]: { ...prev[filterId], [branch]: chain } };\r\n });\r\n } else {\r\n // inserting into main spine\r\n if (isBranching) {\r\n // filter takes over from here — remove end from spine, add branch ends\r\n setSlots((prev) => {\r\n const idx = prev.findIndex((s) => s.id === insertAfterSourceId);\r\n const spineWithoutEnd = prev.filter((s) => s.kind !== 'end');\r\n return [...spineWithoutEnd.slice(0, idx + 1), taskSlot];\r\n });\r\n setBranches((prev) => ({\r\n ...prev,\r\n [newTaskId]: Object.fromEntries(\r\n Object.keys(branchLabels).map((k) => [k, [{ id: `end-${newTaskId}-${k}`, kind: 'end', reactFlowType: 'endNode' }]])\r\n ),\r\n }));\r\n } else {\r\n setSlots((prev) => {\r\n const idx = prev.findIndex((s) => s.id === insertAfterSourceId);\r\n if (idx === -1) return prev;\r\n return [...prev.slice(0, idx + 1), taskSlot, ...prev.slice(idx + 1)];\r\n });\r\n }\r\n }\r\n\r\n setInsertAfterSourceId(null);\r\n setInsertBranchCtx(null);\r\n setActiveSlotId(newTaskId);\r\n setDrawerMode('nodeConfig');\r\n }, [insertAfterSourceId, insertBranchCtx]);\r\n\r\n const handleNodeSave = useCallback((nodeId: string, values: Record<string, unknown>) => {\r\n /**\r\n * Format a branch label with the IF / ELSE IF / ELSE prefix based on the\r\n * config's `kind` field. Backward-compatible: if `kind` is missing, the\r\n * label is rendered unchanged (legacy \"Branch N\" / \"Default\" style).\r\n */\r\n const formatBranchLabel = (cfg: { kind?: string; key: string; label?: string }): string => {\r\n const base = cfg.label || cfg.key;\r\n switch (cfg.kind) {\r\n case 'if': return `IF · ${base}`;\r\n case 'elseif': return `ELSE IF · ${base}`;\r\n case 'else': return base.toUpperCase() === 'ELSE' ? base : `ELSE · ${base}`;\r\n default: return base;\r\n }\r\n };\r\n\r\n // For conditionBranch nodes: sync the BranchMap keys to match formData.branchConfigs\r\n const syncConditionBranchKeys = (prevBranches: BranchMap): BranchMap => {\r\n const slot = findSlot(nodeId);\r\n if (slot?.descriptorType !== 'conditionBranch') return prevBranches;\r\n const configs = (values.branchConfigs as Array<{ kind?: string; key: string; label?: string }> | undefined) ?? [];\r\n const newKeys = configs.map((c) => c.key).filter(Boolean);\r\n if (newKeys.length === 0) return prevBranches;\r\n const existing = prevBranches[nodeId] ?? {};\r\n const synced: BranchMap[string] = {};\r\n newKeys.forEach((k) => {\r\n synced[k] = existing[k] ?? [{ id: `end-${nodeId}-${k}`, kind: 'end', reactFlowType: 'endNode' }];\r\n });\r\n return { ...prevBranches, [nodeId]: synced };\r\n };\r\n\r\n const patchSlotBranchLabels = (slot: CanvasSlot, values: Record<string, unknown>): CanvasSlot => {\r\n if (slot.descriptorType !== 'conditionBranch') return { ...slot, formData: values };\r\n const configs = (values.branchConfigs as Array<{ kind?: string; key: string; label?: string }> | undefined) ?? [];\r\n const labelMap: Record<string, string> = {};\r\n configs.forEach((c) => { if (c.key) labelMap[c.key] = formatBranchLabel(c); });\r\n return { ...slot, formData: values, branchLabels: labelMap };\r\n };\r\n\r\n // try spine first\r\n if (slots.some((s) => s.id === nodeId)) {\r\n setBranches((prevBranches) => {\r\n const synced = syncConditionBranchKeys(prevBranches);\r\n setSlots((prev) =>\r\n prev.map((s) =>\r\n s.id === nodeId ? patchSlotBranchLabels(s, values) : s,\r\n ),\r\n );\r\n return synced;\r\n });\r\n return;\r\n }\r\n // else update in branch\r\n setBranches((prev) => {\r\n const syncedOuter = syncConditionBranchKeys(prev);\r\n const next = { ...syncedOuter };\r\n for (const filterId of Object.keys(next)) {\r\n const updateChain = (chain: CanvasSlot[]) => chain.map((s) => s.id === nodeId ? patchSlotBranchLabels(s, values) : s);\r\n for (const branchKey of Object.keys(next[filterId])) {\r\n if (!next[filterId][branchKey].some((s) => s.id === nodeId)) continue;\r\n next[filterId] = { ...next[filterId], [branchKey]: updateChain(next[filterId][branchKey]) };\r\n return next;\r\n }\r\n }\r\n return next;\r\n });\r\n // onSave intentionally NOT fired from this state setter. The contract\r\n // is: onSave fires ONLY when the user clicks the header Save button\r\n // (via handleHeaderSave). Auto-firing here on every node config save\r\n // (a) caused 3× duplicate POSTs (React StrictMode double-invocation),\r\n // (b) is a state-mutation side-effect (anti-pattern), and (c) is\r\n // wrong UX — users expect Save to be deliberate.\r\n }, [slots, branches, findSlot]);\r\n\r\n const activeSlot = useMemo(() => findSlot(activeSlotId ?? ''), [findSlot, activeSlotId]);\r\n const activeDescriptor = useMemo(() => {\r\n if (!activeSlot?.descriptorType) return null;\r\n return nodeRegistry.forType(activeSlot.descriptorType) ?? null;\r\n }, [activeSlot, nodeRegistry]);\r\n\r\n const { nodes: rawNodes, edges } = useMemo(\r\n () => slotsToFlow(slots, branches, readOnly ? null : handleAddStepClick, nodeMeasurements, theme, layoutDirection, branchLayout),\r\n [slots, branches, readOnly, handleAddStepClick, nodeMeasurements, theme, layoutDirection, branchLayout],\r\n );\r\n\r\n const nodes = useMemo(() => {\r\n const stepByNodeId = executionRecord\r\n ? new Map(executionRecord.steps.map((s) => [s.nodeId, s]))\r\n : null;\r\n\r\n return rawNodes.map((n) => {\r\n let extra: Record<string, unknown> = {};\r\n\r\n if (stepByNodeId) {\r\n const step = stepByNodeId.get(n.id);\r\n if (step) extra = { _executionStatus: step.status, _executionError: step.error };\r\n }\r\n\r\n // Inject preview callback for sub-workflow nodes\r\n if (n.type === 'subWorkflowNode' && onFetchWorkflow) {\r\n extra.onPreview = (workflowId: string) => {\r\n const slot = findSlot(n.id);\r\n setSubWorkflowPreview({ workflowId, workflowLabel: (slot?.formData?.workflowLabel as string) ?? undefined });\r\n };\r\n }\r\n\r\n return Object.keys(extra).length > 0 ? { ...n, data: { ...n.data, ...extra } } : n;\r\n });\r\n }, [rawNodes, executionRecord, onFetchWorkflow, findSlot]);\r\n\r\n const handlers = useMemo(() => ({ onEditNode, onDeleteNode, onAddStep: () => {}, onClickAddTrigger, messages, nodeRegistry, nodeBody }), [onEditNode, onDeleteNode, onClickAddTrigger, messages, nodeRegistry, nodeBody]);\r\n\r\n // Header Save click → fire onSave with the current canvas state. Built-in\r\n // so consumers don't write Save chrome per integration. Opt out via\r\n // `hideHeader` if you want to render your own.\r\n const handleHeaderSave = useCallback(async () => {\r\n if (onSave) await onSave({ slots, branches });\r\n }, [onSave, slots, branches]);\r\n\r\n return (\r\n <OptionsResolversProvider resolvers={optionsResolvers}>\r\n <WorkflowCanvasContext.Provider value={handlers}>\r\n <div\r\n className=\"flowforge-canvas\"\r\n style={{\r\n width: '100%', height: '100%', position: 'relative',\r\n display: 'flex', flexDirection: 'column',\r\n // CSS variable consumed by edge SCSS for primary/hover color\r\n ['--ff-primary' as string]: theme.primaryColor ?? '#1dbf60',\r\n ['--ff-edge-color' as string]: theme.edgeColor ?? '#b0bec5',\r\n ['--ff-text' as string]: theme.textColor ?? '#212121',\r\n ['--ff-muted' as string]: theme.mutedTextColor ?? '#9ca3af',\r\n ['--ff-surface' as string]: theme.surfaceColor ?? '#fff',\r\n ['--ff-border' as string]: theme.borderColor ?? '#dee2e6',\r\n ['--ff-danger' as string]: theme.dangerColor ?? '#d32f2f',\r\n ['--ff-radius' as string]: `${theme.borderRadius ?? 6}px`,\r\n ['--ff-font-family' as string]: theme.fontFamily,\r\n }}\r\n >\r\n {!hideHeader && (onSave || onCancel || workflowName) && (\r\n <FlowForgeHeader\r\n workflowName={workflowName}\r\n onWorkflowNameChange={onWorkflowNameChange}\r\n status={workflowStatus}\r\n statusColor={workflowStatusColor}\r\n onSave={onSave ? handleHeaderSave : undefined}\r\n onCancel={onCancel}\r\n saveLabel={saveLabel}\r\n />\r\n )}\r\n <div style={{ flex: 1, minHeight: 0, position: 'relative' }}>\r\n <ReactFlow\r\n nodes={nodes}\r\n edges={edges}\r\n nodeTypes={mergedNodeTypes}\r\n edgeTypes={mergedEdgeTypes}\r\n fitView={optFitView}\r\n fitViewOptions={{ padding: fitViewPadding }}\r\n nodesDraggable={false}\r\n nodesConnectable={false}\r\n panOnScroll={optPanOnScroll}\r\n zoomOnScroll={optZoomOnScroll}\r\n minZoom={minZoom}\r\n maxZoom={maxZoom}\r\n snapToGrid={snapToGrid}\r\n snapGrid={snapGrid}\r\n proOptions={{ hideAttribution: true }}\r\n onNodeClick={(_event, node) => {\r\n const slot = findSlot(node.id);\r\n if (!slot) return;\r\n if (onNodeClickProp?.(slot)) return;\r\n if (slot.kind === 'addTrigger' || slot.kind === 'triggerFixed') onClickAddTrigger();\r\n else if (slot.kind === 'userTask' || slot.kind === 'filter' || slot.kind === 'approval') onEditNode(node.id);\r\n }}\r\n >\r\n {theme.background !== 'none' && (\r\n <Background\r\n variant={theme.background as unknown as BackgroundVariant | undefined}\r\n color={theme.backgroundColor ?? '#e0e0e0'}\r\n gap={20}\r\n />\r\n )}\r\n {showControls && <Controls showInteractive={false} />}\r\n {showMiniMap && <MiniMap zoomable pannable />}\r\n <LayoutUpdater onHeightsReady={handleHeightsReady} nodeCount={nodes.length} />\r\n </ReactFlow>\r\n\r\n {renderTriggerSelector\r\n ? drawerMode === 'triggerSelect' && renderTriggerSelector(templateRegistry.list(), handleTriggerSelect, () => setDrawerMode(null))\r\n : <TriggerSelectorDrawer open={drawerMode === 'triggerSelect'} templates={templateRegistry.list()} messages={messages} onSelect={handleTriggerSelect} onClose={() => setDrawerMode(null)} loadTriggerSources={loadTriggerSources} />\r\n }\r\n\r\n {renderNodePicker\r\n ? drawerMode === 'nodePicker' && renderNodePicker(getAvailableDescriptors(), handleNodeTypeSelect, () => { setDrawerMode(null); setInsertAfterSourceId(null); })\r\n : <NodePickerDrawer open={drawerMode === 'nodePicker'} availableDescriptors={getAvailableDescriptors()} messages={messages} onSelect={handleNodeTypeSelect} onClose={() => { setDrawerMode(null); setInsertAfterSourceId(null); }} />\r\n }\r\n\r\n {renderNodeConfig\r\n ? drawerMode === 'nodeConfig' && renderNodeConfig(activeDescriptor ?? undefined, activeSlot, handleNodeSave, () => setDrawerMode(null))\r\n : <NodeConfigDrawer open={drawerMode === 'nodeConfig'} nodeId={activeSlotId} descriptor={activeDescriptor} initialValues={activeSlot?.formData} messages={messages} onSave={handleNodeSave} onClose={() => setDrawerMode(null)} />\r\n }\r\n {onFetchWorkflow && subWorkflowPreview && (\r\n <SubWorkflowPreviewDrawer\r\n isOpen={!!subWorkflowPreview}\r\n onClose={() => setSubWorkflowPreview(null)}\r\n workflowId={subWorkflowPreview.workflowId}\r\n workflowLabel={subWorkflowPreview.workflowLabel}\r\n onFetchWorkflow={onFetchWorkflow}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </WorkflowCanvasContext.Provider>\r\n </OptionsResolversProvider>\r\n );\r\n};\r\n\r\nexport { FlowForgeCanvas as WorkflowCanvas };\r\nexport default FlowForgeCanvas;\r\n","import React, { useState, useMemo } from 'react';\nimport { MdSearch, MdAdd, MdCategory } from 'react-icons/md';\nimport { WorkflowTemplate } from './types';\nimport { TRIGGER_CATEGORY_STYLE } from './canvasTokens';\n\ninterface WorkflowTemplateLibraryProps {\n templates: WorkflowTemplate[];\n onSelectTemplate: (template: WorkflowTemplate) => void;\n onStartFromScratch?: () => void;\n}\n\nconst CATEGORY_ALL = 'All';\n\nfunction TemplateCard({ template, onSelect }: { template: WorkflowTemplate; onSelect: () => void }) {\n const badge = template.triggerCategory ? TRIGGER_CATEGORY_STYLE[template.triggerCategory] : null;\n const nodeCount = template.skeletonState?.slots.filter((s) => s.kind === 'userTask').length ?? 0;\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onSelect}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') onSelect(); }}\n style={{\n border: '1.5px solid #e0e0e0',\n borderRadius: 10,\n padding: '16px',\n background: '#fff',\n cursor: 'pointer',\n transition: 'border-color 0.15s, box-shadow 0.15s',\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n outline: 'none',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#1976d2';\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 2px 8px rgba(25,118,210,0.12)';\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#e0e0e0';\n (e.currentTarget as HTMLDivElement).style.boxShadow = 'none';\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'flex-start', gap: 10 }}>\n {template.icon && (\n <div style={{ flexShrink: 0, width: 36, height: 36, borderRadius: 8, background: '#f5f5f5', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n {template.icon as React.ReactNode}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 600, fontSize: 14, color: '#212121', marginBottom: 2 }}>{template.label}</div>\n {template.description && (\n <div style={{ fontSize: 12, color: '#757575', lineHeight: 1.4, display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical', overflow: 'hidden' }}>\n {template.description}\n </div>\n )}\n </div>\n </div>\n\n {/* Tags + meta row */}\n <div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap', gap: 4 }}>\n {badge && (\n <span style={{ fontSize: 10, fontWeight: 600, padding: '2px 7px', borderRadius: 10, background: badge.bg, color: badge.color }}>\n {badge.label}\n </span>\n )}\n {template.tags?.map((tag) => (\n <span key={tag} style={{ fontSize: 10, padding: '2px 7px', borderRadius: 10, background: '#f5f5f5', color: '#616161' }}>\n {tag}\n </span>\n ))}\n {nodeCount > 0 && (\n <span style={{ fontSize: 10, color: '#9e9e9e', marginLeft: 'auto' }}>\n {nodeCount} step{nodeCount !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n\n {template.author && (\n <div style={{ fontSize: 11, color: '#bdbdbd' }}>by {template.author}</div>\n )}\n </div>\n );\n}\n\nconst WorkflowTemplateLibrary: React.FC<WorkflowTemplateLibraryProps> = ({\n templates,\n onSelectTemplate,\n onStartFromScratch,\n}) => {\n const [search, setSearch] = useState('');\n const [activeCategory, setActiveCategory] = useState<string>(CATEGORY_ALL);\n\n const categories = useMemo(() => {\n const cats = new Set<string>();\n templates.forEach((t) => { if (t.category) cats.add(t.category); });\n return [CATEGORY_ALL, ...Array.from(cats)];\n }, [templates]);\n\n const filtered = useMemo(() => {\n let list = templates;\n if (activeCategory !== CATEGORY_ALL) {\n list = list.filter((t) => t.category === activeCategory);\n }\n if (search.trim()) {\n const q = search.toLowerCase();\n list = list.filter(\n (t) =>\n t.label.toLowerCase().includes(q) ||\n t.description?.toLowerCase().includes(q) ||\n t.tags?.some((tag) => tag.toLowerCase().includes(q)),\n );\n }\n return [...list].sort((a, b) => (b.popularity ?? 0) - (a.popularity ?? 0));\n }, [templates, activeCategory, search]);\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', height: '100%', fontFamily: 'inherit' }}>\n {/* Header */}\n <div style={{ padding: '24px 24px 0', borderBottom: '1px solid #f0f0f0', paddingBottom: 16 }}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 16 }}>\n <div>\n <h2 style={{ margin: 0, fontSize: 20, fontWeight: 700, color: '#212121' }}>Workflow Templates</h2>\n <p style={{ margin: '4px 0 0', fontSize: 13, color: '#757575' }}>\n Choose a pre-built template or start from scratch\n </p>\n </div>\n {onStartFromScratch && (\n <button\n onClick={onStartFromScratch}\n style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 16px', border: '1.5px solid #1976d2', borderRadius: 6, background: '#fff', color: '#1976d2', fontSize: 13, fontWeight: 600, cursor: 'pointer' }}\n >\n <MdAdd size={16} />\n Start from Scratch\n </button>\n )}\n </div>\n\n {/* Search */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, background: '#f5f5f5', borderRadius: 8, padding: '8px 12px', marginBottom: 12 }}>\n <MdSearch size={18} color=\"#9e9e9e\" />\n <input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search templates...\"\n style={{ border: 'none', background: 'transparent', outline: 'none', fontSize: 14, color: '#212121', flex: 1 }}\n />\n </div>\n\n {/* Category tabs */}\n {categories.length > 1 && (\n <div style={{ display: 'flex', gap: 4, flexWrap: 'wrap' }}>\n {categories.map((cat) => (\n <button\n key={cat}\n onClick={() => setActiveCategory(cat)}\n style={{\n padding: '4px 12px',\n borderRadius: 20,\n border: '1.5px solid',\n borderColor: activeCategory === cat ? '#1976d2' : '#e0e0e0',\n background: activeCategory === cat ? '#e3f2fd' : '#fff',\n color: activeCategory === cat ? '#1565c0' : '#616161',\n fontSize: 12,\n fontWeight: activeCategory === cat ? 600 : 400,\n cursor: 'pointer',\n }}\n >\n {cat}\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Grid */}\n <div style={{ flex: 1, overflowY: 'auto', padding: 24 }}>\n {filtered.length === 0 ? (\n <div style={{ textAlign: 'center', padding: '40px 0', color: '#9e9e9e' }}>\n <MdCategory size={36} style={{ marginBottom: 8 }} />\n <p style={{ margin: 0, fontSize: 14 }}>No templates found</p>\n </div>\n ) : (\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(280px, 1fr))', gap: 16 }}>\n {filtered.map((t) => (\n <TemplateCard key={t.triggerKey} template={t} onSelect={() => onSelectTemplate(t)} />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default WorkflowTemplateLibrary;\n","import React, { useState } from 'react';\nimport { MdCheckCircle, MdCancel, MdError, MdHourglassEmpty, MdPlayArrow, MdChevronRight, MdPerson, MdSchedule, MdExpandMore, MdExpandLess } from 'react-icons/md';\nimport { ExecutionRecord, ExecutionStep, ExecutionStatus, StepStatus } from './types';\nimport { EXECUTION_STATUS_COLOR } from './canvasTokens';\n\n// ── Status helpers ──────────────────────────────────────────────────────────\n\nconst STATUS_META: Record<ExecutionStatus, { label: string; color: string; icon: React.ReactElement }> = {\n running: { label: 'Running', color: EXECUTION_STATUS_COLOR.running, icon: React.createElement(MdPlayArrow, { size: 14 }) },\n success: { label: 'Success', color: EXECUTION_STATUS_COLOR.success, icon: React.createElement(MdCheckCircle, { size: 14 }) },\n failed: { label: 'Failed', color: EXECUTION_STATUS_COLOR.failed, icon: React.createElement(MdError, { size: 14 }) },\n cancelled: { label: 'Cancelled', color: EXECUTION_STATUS_COLOR.cancelled, icon: React.createElement(MdCancel, { size: 14 }) },\n};\n\nconst STEP_META: Record<StepStatus, { color: string; icon: React.ReactElement }> = {\n pending: { color: EXECUTION_STATUS_COLOR.pending, icon: React.createElement(MdHourglassEmpty, { size: 14 }) },\n running: { color: EXECUTION_STATUS_COLOR.running, icon: React.createElement(MdPlayArrow, { size: 14 }) },\n success: { color: EXECUTION_STATUS_COLOR.success, icon: React.createElement(MdCheckCircle, { size: 14 }) },\n failed: { color: EXECUTION_STATUS_COLOR.failed, icon: React.createElement(MdError, { size: 14 }) },\n skipped: { color: EXECUTION_STATUS_COLOR.skipped, icon: React.createElement(MdCancel, { size: 14 }) },\n};\n\nfunction formatDate(iso: string): string {\n try {\n return new Date(iso).toLocaleString();\n } catch {\n return iso;\n }\n}\n\nfunction duration(start: string, end?: string): string {\n try {\n const ms = new Date(end ?? new Date().toISOString()).getTime() - new Date(start).getTime();\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;\n } catch {\n return '—';\n }\n}\n\n// ── Step detail row ──────────────────────────────────────────────────────────\n\nfunction StepRow({ step }: { step: ExecutionStep }) {\n const [expanded, setExpanded] = useState(false);\n const meta = STEP_META[step.status];\n const hasDetail = !!(step.inputs || step.outputs || step.error);\n\n return (\n <div style={{ borderBottom: '1px solid #f5f5f5' }}>\n <div\n style={{ display: 'flex', alignItems: 'center', gap: 8, padding: '8px 12px', cursor: hasDetail ? 'pointer' : 'default' }}\n onClick={() => { if (hasDetail) setExpanded((v) => !v); }}\n role={hasDetail ? 'button' : undefined}\n tabIndex={hasDetail ? 0 : undefined}\n onKeyDown={(e) => { if (hasDetail && (e.key === 'Enter' || e.key === ' ')) setExpanded((v) => !v); }}\n >\n <span style={{ color: meta.color, flexShrink: 0 }}>\n {React.cloneElement(meta.icon, { color: meta.color })}\n </span>\n <span style={{ flex: 1, fontSize: 13, color: '#212121' }}>{step.label || step.nodeId}</span>\n {step.branchTaken && (\n <span style={{ fontSize: 10, padding: '1px 6px', borderRadius: 10, background: '#e3f2fd', color: '#1565c0', fontWeight: 600 }}>\n {step.branchTaken}\n </span>\n )}\n <span style={{ fontSize: 11, color: '#9e9e9e', flexShrink: 0 }}>\n {step.startedAt ? duration(step.startedAt, step.completedAt) : '—'}\n </span>\n {hasDetail && (\n <span style={{ color: '#9e9e9e', flexShrink: 0 }}>\n {expanded ? React.createElement(MdExpandLess, { size: 16 }) : React.createElement(MdExpandMore, { size: 16 })}\n </span>\n )}\n </div>\n\n {expanded && hasDetail && (\n <div style={{ padding: '0 12px 10px 32px', fontSize: 12 }}>\n {step.error && (\n <div style={{ padding: '6px 10px', borderRadius: 6, background: '#ffebee', color: '#c62828', marginBottom: 6 }}>\n {step.error}\n </div>\n )}\n {step.inputs && Object.keys(step.inputs).length > 0 && (\n <details style={{ marginBottom: 4 }}>\n <summary style={{ cursor: 'pointer', color: '#616161', marginBottom: 4 }}>Inputs</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 8, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(step.inputs, null, 2)}\n </pre>\n </details>\n )}\n {step.outputs && Object.keys(step.outputs).length > 0 && (\n <details>\n <summary style={{ cursor: 'pointer', color: '#616161', marginBottom: 4 }}>Outputs</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 8, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(step.outputs, null, 2)}\n </pre>\n </details>\n )}\n </div>\n )}\n </div>\n );\n}\n\n// ── Run list item ─────────────────────────────────────────────────────────────\n\nfunction RunListItem({ record, selected, onSelect }: { record: ExecutionRecord; selected: boolean; onSelect: () => void }) {\n const meta = STATUS_META[record.status];\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onSelect}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') onSelect(); }}\n style={{\n padding: '10px 14px',\n borderBottom: '1px solid #f0f0f0',\n cursor: 'pointer',\n background: selected ? '#e3f2fd' : '#fff',\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n outline: 'none',\n }}\n >\n <span style={{ color: meta.color, flexShrink: 0 }}>\n {React.cloneElement(meta.icon, { color: meta.color, size: 16 })}\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 12, color: '#212121', fontWeight: selected ? 600 : 400, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {formatDate(record.triggeredAt)}\n </div>\n <div style={{ fontSize: 11, color: '#9e9e9e' }}>\n {record.triggeredBy ? `by ${record.triggeredBy}` : 'System'} · {record.steps.length} step{record.steps.length !== 1 ? 's' : ''}\n </div>\n </div>\n <span style={{ fontSize: 11, fontWeight: 600, color: meta.color, flexShrink: 0 }}>{meta.label}</span>\n <MdChevronRight size={14} color=\"#bdbdbd\" />\n </div>\n );\n}\n\n// ── Main component ────────────────────────────────────────────────────────────\n\ninterface WorkflowExecutionHistoryProps {\n records: ExecutionRecord[];\n /** Called when the \"view on canvas\" button is clicked for a record */\n onViewOnCanvas?: (record: ExecutionRecord) => void;\n}\n\nconst WorkflowExecutionHistory: React.FC<WorkflowExecutionHistoryProps> = ({ records, onViewOnCanvas }) => {\n const [selectedId, setSelectedId] = useState<string | null>(records[0]?.id ?? null);\n const selected = records.find((r) => r.id === selectedId) ?? null;\n const sorted = [...records].sort((a, b) => new Date(b.triggeredAt).getTime() - new Date(a.triggeredAt).getTime());\n\n if (records.length === 0) {\n return (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: 300, color: '#9e9e9e', gap: 8 }}>\n <MdSchedule size={36} />\n <p style={{ margin: 0, fontSize: 14 }}>No executions yet</p>\n <p style={{ margin: 0, fontSize: 12 }}>Run history will appear here</p>\n </div>\n );\n }\n\n return (\n <div style={{ display: 'flex', height: '100%', fontFamily: 'inherit', border: '1px solid #e0e0e0', borderRadius: 8, overflow: 'hidden' }}>\n {/* Left: run list */}\n <div style={{ width: 260, flexShrink: 0, borderRight: '1px solid #e0e0e0', overflowY: 'auto', background: '#fafafa' }}>\n <div style={{ padding: '12px 14px', borderBottom: '1px solid #e0e0e0', fontWeight: 600, fontSize: 13, color: '#212121' }}>\n Run History ({records.length})\n </div>\n {sorted.map((r) => (\n <RunListItem key={r.id} record={r} selected={r.id === selectedId} onSelect={() => setSelectedId(r.id)} />\n ))}\n </div>\n\n {/* Right: detail */}\n <div style={{ flex: 1, overflowY: 'auto' }}>\n {selected ? (\n <div>\n {/* Detail header */}\n <div style={{ padding: '16px 20px', borderBottom: '1px solid #f0f0f0', display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 12 }}>\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 4 }}>\n {React.cloneElement(STATUS_META[selected.status].icon, { color: STATUS_META[selected.status].color, size: 18 })}\n <span style={{ fontWeight: 700, fontSize: 15, color: '#212121' }}>{STATUS_META[selected.status].label}</span>\n </div>\n <div style={{ fontSize: 12, color: '#757575', display: 'flex', flexDirection: 'column', gap: 2 }}>\n <span style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <MdSchedule size={13} /> {formatDate(selected.triggeredAt)}\n {selected.completedAt && ` → ${formatDate(selected.completedAt)} (${duration(selected.triggeredAt, selected.completedAt)})`}\n </span>\n {selected.triggeredBy && (\n <span style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <MdPerson size={13} /> {selected.triggeredBy}\n </span>\n )}\n </div>\n </div>\n {onViewOnCanvas && (\n <button\n onClick={() => onViewOnCanvas(selected)}\n style={{ padding: '6px 12px', border: '1.5px solid #1976d2', borderRadius: 6, background: '#fff', color: '#1976d2', fontSize: 12, fontWeight: 600, cursor: 'pointer', flexShrink: 0 }}\n >\n View on Canvas\n </button>\n )}\n </div>\n\n {/* Error banner */}\n {selected.error && (\n <div style={{ margin: '12px 16px', padding: '10px 14px', borderRadius: 6, background: '#ffebee', color: '#c62828', fontSize: 13 }}>\n {selected.error}\n </div>\n )}\n\n {/* Step timeline */}\n <div>\n <div style={{ padding: '10px 12px', fontSize: 12, fontWeight: 600, color: '#757575', borderBottom: '1px solid #f0f0f0' }}>\n STEPS ({selected.steps.length})\n </div>\n {selected.steps.map((step, i) => (\n <StepRow key={`${step.nodeId}-${i}`} step={step} />\n ))}\n </div>\n\n {/* Inputs */}\n {selected.inputs && Object.keys(selected.inputs).length > 0 && (\n <div style={{ padding: '10px 16px' }}>\n <details>\n <summary style={{ cursor: 'pointer', fontSize: 12, fontWeight: 600, color: '#757575', marginBottom: 6 }}>TRIGGER INPUTS</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 10, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(selected.inputs, null, 2)}\n </pre>\n </details>\n </div>\n )}\n </div>\n ) : (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%', color: '#9e9e9e', fontSize: 14 }}>\n Select a run to see details\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default WorkflowExecutionHistory;\n","import { WorkflowState } from './types';\n\n// Each skeleton is a standalone WorkflowState loaded into a fresh canvas via initialValue.\n// IDs only need to be unique within a single skeleton — no cross-skeleton collision risk.\n\nexport const userOnboardingSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-END_USER_CREATION', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'New User Registration', nodeData: { label: 'New User Registration' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Welcome Email', nodeData: { title: 'Welcome Email' } },\n { id: 'approval-1', kind: 'approval', reactFlowType: 'approvalNode', descriptorType: 'approval', deletable: true, label: 'Manager Approval', branchLabels: { pass: 'Approved', fail: 'Rejected' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {\n 'approval-1': {\n pass: [{ id: 'notification-pass-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Approval Confirmed', nodeData: { title: 'Approval Confirmed' } }],\n fail: [{ id: 'notification-fail-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Rejection Notice', nodeData: { title: 'Rejection Notice' } }],\n },\n },\n};\n\nexport const accessRequestSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-ACCESS_REQUEST', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'Access Request Submitted', nodeData: { label: 'Access Request Submitted' } },\n { id: 'approval-1', kind: 'approval', reactFlowType: 'approvalNode', descriptorType: 'approval', deletable: true, label: 'Access Approval', branchLabels: { pass: 'Approved', fail: 'Denied' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {\n 'approval-1': {\n pass: [\n { id: 'restApi-1', kind: 'userTask', reactFlowType: 'restApiNode', descriptorType: 'restApi', deletable: true, label: 'Provision Access', nodeData: { title: 'Provision Access' } },\n { id: 'notification-pass-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Access Granted Email', nodeData: { title: 'Access Granted Email' } },\n ],\n fail: [\n { id: 'notification-fail-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Access Denied Email', nodeData: { title: 'Access Denied Email' } },\n ],\n },\n },\n};\n\nexport const offboardingSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-USER_DEACTIVATION', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'User Deactivation', nodeData: { label: 'User Deactivation' } },\n { id: 'delay-1', kind: 'userTask', reactFlowType: 'delayNode', descriptorType: 'delay', deletable: true, label: 'Grace Period', nodeData: { title: 'Grace Period', duration: 7, unit: 'days' }, formData: { duration: 7, unit: 'days' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Notify IT Team', nodeData: { title: 'Notify IT Team' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {},\n};\n\nexport const webhookIntegrationSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-WEBHOOK_TRIGGER', kind: 'triggerFixed', reactFlowType: 'webhookTriggerNode', deletable: true, label: 'Incoming Webhook', nodeData: { label: 'Incoming Webhook' } },\n { id: 'restApi-1', kind: 'userTask', reactFlowType: 'restApiNode', descriptorType: 'restApi', deletable: true, label: 'Call External API', nodeData: { title: 'Call External API' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Notify on Completion', nodeData: { title: 'Notify on Completion' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {},\n};\n"],"names":["ge","hn","n","t","fn","pe","z","p","R","ye","pn","bn","Le","a","l","C","gn","me","Y","Ee","yn","mn","En","Ln","D","we","Gn","F","_n","xn","On","Cn","Pn","Mn","jn","Sn","Ge","ke","wn","Nn","c","f","g","Ne","kn","vn","Tn","In","Rn","ve","_e","Fn","w","j","xe","A","H","N","k","X","Te","L","Oe","q","Dn","Ie","r","o","Ce","P","M","An","T","O","Re","_","U","K","Pe","Vn","Me","Wn","Q","Yn","Bn","i","s","$","J","zn","je","Hn","Se","Fe","Xn","De","S","v","V","Kn","$n","Jn","Qn","Zn","et","Ve","x","ee","Z","We","Ye","ze","He","nt","d","u","h","rt","b","Be","Ae","tt","Xe","ot","qe","st","it","Ue","at","lt","dt","Ke","ut","ct","$e","y","m","E","Je","Ze","ft","Qe","nn","rn","tn","bt","gt","en","ne","te","re","oe","mt","ie","se","Et","Lt","ae","yt","on","W","Nt","wt","de","Gt","le","B","sn","an","kt","vt","xt","dn","_t","Tt","Ot","It","Ct","I","be","jt","Rt","St","Pt","Mt","ln","un","Ft","he","Xt","Dt","At","Ut","rr","Kt","$t","Jt","or","ir","tr","er","Qt","Zt","nr","Vt","Wt","Bt","Yt","cn","zt","Ht","qt","ce","ue","fe","sr","To","fingerprintSelector","state","parts","node","id","LayoutUpdater","onHeightsReady","nodeCount","fingerprint","useStore","prevRef","useRef","fitView","useReactFlow","useEffect","heights","part","height","STATUS_PALETTE","FlowForgeHeader","workflowName","onWorkflowNameChange","status","statusColor","onSave","onCancel","saveLabel","saveDisabled","saving","setSaving","React","editingName","setEditingName","nameDraft","setNameDraft","handleSave","statusPalette","jsxs","jsx","e","BaseDrawer","isOpen","onClose","title","icon","children","footer","width","isModal","setIsModal","useState","toggleModal","Header","Box","IconButton","BiCollapse","BiExpand","MdClose","Footer","Dialog","Drawer","TriggerSelectorDrawer","open","templates","messages","onSelect","loadTriggerSources","stage","setStage","pickedTemplate","setPickedTemplate","sourceOptions","setSourceOptions","selectedSources","setSelectedSources","loadingSources","setLoadingSources","sourcesError","setSourcesError","handleTriggerPick","useCallback","template","sources","handleBack","handleContinue","showingSources","Fragment","Button","GrTrigger","MdCalendarToday","MdBolt","CircularProgress","MdArrowBack","ReactSelect","buildSelectStyles","cardStyle","cardClass","NodePickerDrawer","availableDescriptors","apps","ungrouped","useMemo","appMap","flat","existing","activeAppKey","setActiveAppKey","activeApp","stage1","MdAddCircleOutline","MdApps","MdChevronRight","CONDITION_CONFIG_KEY","NodeConfigDrawer","nodeId","descriptor","initialValues","schema","setSchema","loading","setLoading","error","setError","conditionConfig","setConditionConfig","cancelled","fs","err","formId","hasForm","FlowForm","values","hasConditions","SubWorkflowPreviewDrawer","workflowId","workflowLabel","onFetchWorkflow","loadState","setLoadState","MdAccountTree","MdErrorOutline","SubWorkflowCanvasRenderer","Canvas","setCanvas","Registries","setRegistries","WorkflowCanvas","CanvasComp","nReg","tReg","NODE_WIDTH","EDGE_GAP","CANVAS_START_Y","FALLBACK_NODE_HEIGHT","defaultEdgeTypes","PlusEdge","LabelPlusEdge","PlainEdge","EdgeWithPlusLabel","GatewayBranchEdge","buildInitialSlots","applyDagreLayout","nodes","edges","nodeSizes","layoutDirection","dagre","size","edge","pos","_a","_b","isBranchingKind","kind","applyVerticalBranchLayout","slots","branches","STEP_GAP","BRANCH_GAP","BULLET_TO_STEP_GAP","positions","railSpecs","slotById","branchMap","chain","placeNode","centerX","placeChain","startY","slot","placeNestedBranches","parentId","parentCenterX","childCenterX","keys","parentSlot","labels","parentPos","parentSize","parentBottomY","railBranches","key","idx","bulletY","cursorY","makeNode","makePlusEdge","prev","curr","edgeColor","onAddStepClick","branchCtx","slotsToFlow","nodeMeasurements","theme","branchLayout","emitFilterBranches","filterId","branchLabels","branchKeys","emitChain","branchKey","branchLabel","branchIndex","isPlain","positioned","layoutedNodes","FlowForgeCanvas","nodeRegistry","templateRegistry","initialValue","consumerNodeTypes","consumerEdgeTypes","readOnly","messageOverrides","canvasOptions","renderTriggerSelector","renderNodePicker","renderNodeConfig","onNodeClickProp","maxNodes","executionRecord","hideHeader","workflowStatus","workflowStatusColor","optionsResolvers","optFitView","fitViewPadding","showControls","showMiniMap","optPanOnScroll","optZoomOnScroll","minZoom","maxZoom","snapToGrid","snapGrid","nodeBody","mergeMessages","setSlots","setBranches","drawerMode","setDrawerMode","activeSlotId","setActiveSlotId","insertAfterSourceId","setInsertAfterSourceId","insertBranchCtx","setInsertBranchCtx","subWorkflowPreview","setSubWorkflowPreview","selectedTemplate","setSelectedTemplate","triggerSlot","triggerKey","setNodeMeasurements","handleHeightsReady","mergedNodeTypes","builtInNodeTypes","mergedEdgeTypes","userTaskCount","spineCount","branchCount","effectiveMaxNodes","atMaxNodes","findSlot","slotId","spineSlot","found","onEditNode","onDeleteNode","removed","next","collectAll","collectNestedFilterIds","map","ids","branch","deleted","newChain","onClickAddTrigger","handleAddStepClick","sourceNodeId","context","handleTriggerSelect","pickedSources","hasPickedSources","skeletonSlots","buildInsertContext","ctx","spineIdx","spineUp","branchChain","branchIdx","branchUp","slotMatchesToken","token","getAvailableDescriptors","all","allowed","handleNodeTypeSelect","newTaskId","isBranching","taskSlot","chainWithoutEnd","insertIdx","sourceIdx","endIdx","handleNodeSave","formatBranchLabel","cfg","base","syncConditionBranchKeys","prevBranches","newKeys","synced","patchSlotBranchLabels","configs","labelMap","updateChain","activeSlot","activeDescriptor","rawNodes","stepByNodeId","extra","step","handlers","handleHeaderSave","OptionsResolversProvider","WorkflowCanvasContext","ReactFlow","_event","Background","Controls","MiniMap","CATEGORY_ALL","TemplateCard","badge","TRIGGER_CATEGORY_STYLE","tag","WorkflowTemplateLibrary","onSelectTemplate","onStartFromScratch","search","setSearch","activeCategory","setActiveCategory","categories","cats","filtered","list","MdAdd","MdSearch","cat","MdCategory","STATUS_META","EXECUTION_STATUS_COLOR","MdPlayArrow","MdCheckCircle","MdError","MdCancel","STEP_META","MdHourglassEmpty","formatDate","iso","duration","start","end","ms","StepRow","expanded","setExpanded","meta","hasDetail","MdExpandLess","MdExpandMore","RunListItem","record","selected","WorkflowExecutionHistory","records","onViewOnCanvas","selectedId","setSelectedId","sorted","MdSchedule","MdPerson","userOnboardingSkeleton","accessRequestSkeleton","offboardingSkeleton","webhookIntegrationSkeleton"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"templateSkeletons-gOva2Xus.js","sources":["../node_modules/@dagrejs/dagre/dist/dagre.esm.js","../src/WorkflowCanvas/LayoutUpdater.tsx","../src/WorkflowCanvas/FlowForgeHeader.tsx","../src/WorkflowCanvas/BaseDrawer.tsx","../src/WorkflowCanvas/TriggerSelectorDrawer.tsx","../src/WorkflowCanvas/NodePickerDrawer.tsx","../src/WorkflowCanvas/NodeConfigDrawer.tsx","../src/WorkflowCanvas/SubWorkflowPreviewDrawer.tsx","../src/WorkflowCanvas/WorkflowCanvas.tsx","../src/WorkflowCanvas/WorkflowTemplateLibrary.tsx","../src/WorkflowCanvas/WorkflowExecutionHistory.tsx","../src/WorkflowCanvas/templateSkeletons.ts"],"sourcesContent":["var ge=Object.defineProperty;var hn=(e,n,t)=>n in e?ge(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var fn=(e,n)=>{for(var t in n)ge(e,t,{get:n[t],enumerable:!0})};var pe=(e,n,t)=>hn(e,typeof n!=\"symbol\"?n+\"\":n,t);var z={};fn(z,{Graph:()=>p,alg:()=>R,json:()=>ye,version:()=>pn});var bn=Object.defineProperty,Le=(e,n)=>{for(var t in n)bn(e,t,{get:n[t],enumerable:!0})},p=class{constructor(e){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},e&&(this._isDirected=\"directed\"in e?e.directed:!0,this._isMultigraph=\"multigraph\"in e?e.multigraph:!1,this._isCompound=\"compound\"in e?e.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[\"\\0\"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return typeof e!=\"function\"?this._defaultNodeLabelFn=()=>e:this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(e=>Object.keys(this._in[e]).length===0)}sinks(){return this.nodes().filter(e=>Object.keys(this._out[e]).length===0)}setNodes(e,n){return e.forEach(t=>{n!==void 0?this.setNode(t,n):this.setNode(t)}),this}setNode(e,n){return e in this._nodes?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=\"\\0\",this._children[e]={},this._children[\"\\0\"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return e in this._nodes}removeNode(e){if(e in this._nodes){let n=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],this.children(e).forEach(t=>{this.setParent(t)}),delete this._children[e]),Object.keys(this._in[e]).forEach(n),delete this._in[e],delete this._preds[e],Object.keys(this._out[e]).forEach(n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,n){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(n===void 0)n=\"\\0\";else{n+=\"\";for(let t=n;t!==void 0;t=this.parent(t))if(t===e)throw new Error(\"Setting \"+n+\" as parent of \"+e+\" would create a cycle\");this.setNode(n)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=!0,this}parent(e){if(this._isCompound){let n=this._parent[e];if(n!==\"\\0\")return n}}children(e=\"\\0\"){if(this._isCompound){let n=this._children[e];if(n)return Object.keys(n)}else{if(e===\"\\0\")return this.nodes();if(this.hasNode(e))return[]}return[]}predecessors(e){let n=this._preds[e];if(n)return Object.keys(n)}successors(e){let n=this._sucs[e];if(n)return Object.keys(n)}neighbors(e){let n=this.predecessors(e);if(n){let t=new Set(n);for(let r of this.successors(e))t.add(r);return Array.from(t.values())}}isLeaf(e){let n;return this.isDirected()?n=this.successors(e):n=this.neighbors(e),n.length===0}filterNodes(e){let n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph()),Object.entries(this._nodes).forEach(([o,i])=>{e(o)&&n.setNode(o,i)}),Object.values(this._edgeObjs).forEach(o=>{n.hasNode(o.v)&&n.hasNode(o.w)&&n.setEdge(o,this.edge(o))});let t={},r=o=>{let i=this.parent(o);return!i||n.hasNode(i)?(t[o]=i!=null?i:void 0,i!=null?i:void 0):i in t?t[i]:r(i)};return this._isCompound&&n.nodes().forEach(o=>n.setParent(o,r(o))),n}setDefaultEdgeLabel(e){return typeof e!=\"function\"?this._defaultEdgeLabelFn=()=>e:this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(e,n){return e.reduce((t,r)=>(n!==void 0?this.setEdge(t,r,n):this.setEdge(t,r),r)),this}setEdge(e,n,t,r){let o,i,s,a,d=!1;typeof e==\"object\"&&e!==null&&\"v\"in e?(o=e.v,i=e.w,s=e.name,arguments.length===2&&(a=n,d=!0)):(o=e,i=n,s=r,arguments.length>2&&(a=t,d=!0)),o=\"\"+o,i=\"\"+i,s!==void 0&&(s=\"\"+s);let l=C(this._isDirected,o,i,s);if(l in this._edgeLabels)return d&&(this._edgeLabels[l]=a),this;if(s!==void 0&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(o),this.setNode(i),this._edgeLabels[l]=d?a:this._defaultEdgeLabelFn(o,i,s);let u=gn(this._isDirected,o,i,s);return o=u.v,i=u.w,Object.freeze(u),this._edgeObjs[l]=u,me(this._preds[i],o),me(this._sucs[o],i),this._in[i][l]=u,this._out[o][l]=u,this._edgeCount++,this}edge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t);return this._edgeLabels[r]}edgeAsObj(e,n,t){let r=arguments.length===1?this.edge(e):this.edge(e,n,t);return typeof r!=\"object\"?{label:r}:r}hasEdge(e,n,t){return(arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t))in this._edgeLabels}removeEdge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t),o=this._edgeObjs[r];if(o){let i=o.v,s=o.w;delete this._edgeLabels[r],delete this._edgeObjs[r],Ee(this._preds[s],i),Ee(this._sucs[i],s),delete this._in[s][r],delete this._out[i][r],this._edgeCount--}return this}inEdges(e,n){return this.isDirected()?this.filterEdges(this._in[e],e,n):this.nodeEdges(e,n)}outEdges(e,n){return this.isDirected()?this.filterEdges(this._out[e],e,n):this.nodeEdges(e,n)}nodeEdges(e,n){if(e in this._nodes)return this.filterEdges({...this._in[e],...this._out[e]},e,n)}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}filterEdges(e,n,t){if(!e)return;let r=Object.values(e);return t?r.filter(o=>o.v===n&&o.w===t||o.v===t&&o.w===n):r}};function me(e,n){e[n]?e[n]++:e[n]=1}function Ee(e,n){e[n]!==void 0&&!--e[n]&&delete e[n]}function C(e,n,t,r){let o=\"\"+n,i=\"\"+t;if(!e&&o>i){let s=o;o=i,i=s}return o+\"\u0001\"+i+\"\u0001\"+(r===void 0?\"\\0\":r)}function gn(e,n,t,r){let o=\"\"+n,i=\"\"+t;if(!e&&o>i){let a=o;o=i,i=a}let s={v:o,w:i};return r&&(s.name=r),s}function Y(e,n){return C(e,n.v,n.w,n.name)}var pn=\"4.0.1\",ye={};Le(ye,{read:()=>yn,write:()=>mn});function mn(e){let n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:En(e),edges:Ln(e)},t=e.graph();return t!==void 0&&(n.value=structuredClone(t)),n}function En(e){return e.nodes().map(n=>{let t=e.node(n),r=e.parent(n),o={v:n};return t!==void 0&&(o.value=t),r!==void 0&&(o.parent=r),o})}function Ln(e){return e.edges().map(n=>{let t=e.edge(n),r={v:n.v,w:n.w};return n.name!==void 0&&(r.name=n.name),t!==void 0&&(r.value=t),r})}function yn(e){let n=new p(e.options);return e.value!==void 0&&n.setGraph(e.value),e.nodes.forEach(t=>{n.setNode(t.v,t.value),t.parent&&n.setParent(t.v,t.parent)}),e.edges.forEach(t=>{n.setEdge({v:t.v,w:t.w,name:t.name},t.value)}),n}var R={};Le(R,{CycleException:()=>D,bellmanFord:()=>we,components:()=>Gn,dijkstra:()=>F,dijkstraAll:()=>_n,findCycles:()=>xn,floydWarshall:()=>On,isAcyclic:()=>Cn,postorder:()=>Pn,preorder:()=>Mn,prim:()=>jn,shortestPaths:()=>Sn,tarjan:()=>Ge,topsort:()=>ke});var wn=()=>1;function we(e,n,t,r){return Nn(e,String(n),t||wn,r||function(o){return e.outEdges(o)})}function Nn(e,n,t,r){let o={},i,s=0,a=e.nodes(),d=function(c){let h=t(c);o[c.v].distance+h<o[c.w].distance&&(o[c.w]={distance:o[c.v].distance+h,predecessor:c.v},i=!0)},l=function(){a.forEach(function(c){r(c).forEach(function(h){let f=h.v===c?h.v:h.w,g=f===h.v?h.w:h.v;d({v:f,w:g})})})};a.forEach(function(c){let h=c===n?0:Number.POSITIVE_INFINITY;o[c]={distance:h,predecessor:\"\"}});let u=a.length;for(let c=1;c<u&&(i=!1,s++,l(),!!i);c++);if(s===u-1&&(i=!1,l(),i))throw new Error(\"The graph contains a negative weight cycle\");return o}function Gn(e){let n={},t=[],r;function o(i){i in n||(n[i]=!0,r.push(i),e.successors(i).forEach(o),e.predecessors(i).forEach(o))}return e.nodes().forEach(function(i){r=[],o(i),r.length&&t.push(r)}),t}var Ne=class{constructor(){this._arr=[],this._keyIndices={}}size(){return this._arr.length}keys(){return this._arr.map(e=>e.key)}has(e){return e in this._keyIndices}priority(e){let n=this._keyIndices[e];if(n!==void 0)return this._arr[n].priority}min(){if(this.size()===0)throw new Error(\"Queue underflow\");return this._arr[0].key}add(e,n){let t=this._keyIndices,r=String(e);if(!(r in t)){let o=this._arr,i=o.length;return t[r]=i,o.push({key:r,priority:n}),this._decrease(i),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key}decrease(e,n){let t=this._keyIndices[e];if(t===void 0)throw new Error(`Key not found: ${e}`);let r=this._arr[t].priority;if(n>r)throw new Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${n}`);this._arr[t].priority=n,this._decrease(t)}_heapify(e){let n=this._arr,t=2*e,r=t+1,o=e;t<n.length&&(o=n[t].priority<n[o].priority?t:o,r<n.length&&(o=n[r].priority<n[o].priority?r:o),o!==e&&(this._swap(e,o),this._heapify(o)))}_decrease(e){let n=this._arr,t=n[e].priority,r;for(;e!==0&&(r=e>>1,!(n[r].priority<t));)this._swap(e,r),e=r}_swap(e,n){let t=this._arr,r=this._keyIndices,o=t[e],i=t[n];t[e]=i,t[n]=o,r[i.key]=e,r[o.key]=n}},kn=()=>1;function F(e,n,t,r){let o=function(i){return e.outEdges(i)};return vn(e,String(n),t||kn,r||o)}function vn(e,n,t,r){let o={},i=new Ne,s,a,d=function(l){let u=l.v!==s?l.v:l.w,c=o[u],h=t(l),f=a.distance+h;if(h<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+l+\" Weight: \"+h);f<c.distance&&(c.distance=f,c.predecessor=s,i.decrease(u,f))};for(e.nodes().forEach(function(l){let u=l===n?0:Number.POSITIVE_INFINITY;o[l]={distance:u,predecessor:\"\"},i.add(l,u)});i.size()>0&&(s=i.removeMin(),a=o[s],a.distance!==Number.POSITIVE_INFINITY);)r(s).forEach(d);return o}function _n(e,n,t){return e.nodes().reduce(function(r,o){return r[o]=F(e,o,n,t),r},{})}function Ge(e){let n=0,t=[],r={},o=[];function i(s){let a=r[s]={onStack:!0,lowlink:n,index:n++};if(t.push(s),e.successors(s).forEach(function(d){d in r?r[d].onStack&&(a.lowlink=Math.min(a.lowlink,r[d].index)):(i(d),a.lowlink=Math.min(a.lowlink,r[d].lowlink))}),a.lowlink===a.index){let d=[],l;do l=t.pop(),r[l].onStack=!1,d.push(l);while(s!==l);o.push(d)}}return e.nodes().forEach(function(s){s in r||i(s)}),o}function xn(e){return Ge(e).filter(function(n){return n.length>1||n.length===1&&e.hasEdge(n[0],n[0])})}var Tn=()=>1;function On(e,n,t){return In(e,n||Tn,t||function(r){return e.outEdges(r)})}function In(e,n,t){let r={},o=e.nodes();return o.forEach(function(i){r[i]={},r[i][i]={distance:0,predecessor:\"\"},o.forEach(function(s){i!==s&&(r[i][s]={distance:Number.POSITIVE_INFINITY,predecessor:\"\"})}),t(i).forEach(function(s){let a=s.v===i?s.w:s.v,d=n(s);r[i][a]={distance:d,predecessor:i}})}),o.forEach(function(i){let s=r[i];o.forEach(function(a){let d=r[a];o.forEach(function(l){let u=d[i],c=s[l],h=d[l],f=u.distance+c.distance;f<h.distance&&(h.distance=f,h.predecessor=c.predecessor)})})}),r}var D=class extends Error{constructor(...e){super(...e)}};function ke(e){let n={},t={},r=[];function o(i){if(i in t)throw new D;i in n||(t[i]=!0,n[i]=!0,e.predecessors(i).forEach(o),delete t[i],r.push(i))}if(e.sinks().forEach(o),Object.keys(n).length!==e.nodeCount())throw new D;return r}function Cn(e){try{ke(e)}catch(n){if(n instanceof D)return!1;throw n}return!0}function Rn(e,n,t,r,o){Array.isArray(n)||(n=[n]);let i=(a=>{var d;return(d=e.isDirected()?e.successors(a):e.neighbors(a))!=null?d:[]}),s={};return n.forEach(function(a){if(!e.hasNode(a))throw new Error(\"Graph does not have node: \"+a);o=ve(e,a,t===\"post\",s,i,r,o)}),o}function ve(e,n,t,r,o,i,s){return n in r||(r[n]=!0,t||(s=i(s,n)),o(n).forEach(function(a){s=ve(e,a,t,r,o,i,s)}),t&&(s=i(s,n))),s}function _e(e,n,t){return Rn(e,n,t,function(r,o){return r.push(o),r},[])}function Pn(e,n){return _e(e,n,\"post\")}function Mn(e,n){return _e(e,n,\"pre\")}function jn(e,n){let t=new p,r={},o=new Ne,i;function s(d){let l=d.v===i?d.w:d.v,u=o.priority(l);if(u!==void 0){let c=n(d);c<u&&(r[l]=i,o.decrease(l,c))}}if(e.nodeCount()===0)return t;e.nodes().forEach(function(d){o.add(d,Number.POSITIVE_INFINITY),t.setNode(d)}),o.decrease(e.nodes()[0],0);let a=!1;for(;o.size()>0;){if(i=o.removeMin(),i in r)t.setEdge(i,r[i]);else{if(a)throw new Error(\"Input graph is not connected: \"+e);a=!0}e.nodeEdges(i).forEach(s)}return t}function Sn(e,n,t,r){return Fn(e,n,t,r!=null?r:(o=>{let i=e.outEdges(o);return i!=null?i:[]}))}function Fn(e,n,t,r){if(t===void 0)return F(e,n,t,r);let o=!1,i=e.nodes();for(let s=0;s<i.length;s++){let a=r(i[s]);for(let d=0;d<a.length;d++){let l=a[d],u=l.v===i[s]?l.v:l.w,c=u===l.v?l.w:l.v;t({v:u,w:c})<0&&(o=!0)}if(o)return we(e,n,t,r)}return F(e,n,t,r)}function w(e,n,t,r){let o=r;for(;e.hasNode(o);)o=j(r);return t.dummy=n,e.setNode(o,t),o}function xe(e){let n=new p().setGraph(e.graph());return e.nodes().forEach(t=>n.setNode(t,e.node(t))),e.edges().forEach(t=>{let r=n.edge(t.v,t.w)||{weight:0,minlen:1},o=e.edge(t);n.setEdge(t.v,t.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})}),n}function A(e){let n=new p({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(t=>{e.children(t).length||n.setNode(t,e.node(t))}),e.edges().forEach(t=>{n.setEdge(t,e.edge(t))}),n}function H(e,n){let t=e.x,r=e.y,o=n.x-t,i=n.y-r,s=e.width/2,a=e.height/2;if(!o&&!i)throw new Error(\"Not possible to find intersection inside of the rectangle\");let d,l;return Math.abs(i)*s>Math.abs(o)*a?(i<0&&(a=-a),d=a*o/i,l=a):(o<0&&(s=-s),d=s,l=s*i/o),{x:t+d,y:r+l}}function N(e){let n=k(X(e)+1).map(()=>[]);return e.nodes().forEach(t=>{let r=e.node(t),o=r.rank;o!==void 0&&(n[o]||(n[o]=[]),n[o][r.order]=t)}),n}function Te(e){let n=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MAX_VALUE:o}),t=L(Math.min,n);e.nodes().forEach(r=>{let o=e.node(r);Object.hasOwn(o,\"rank\")&&(o.rank-=t)})}function Oe(e){let n=e.nodes().map(s=>e.node(s).rank).filter(s=>s!==void 0),t=L(Math.min,n),r=[];e.nodes().forEach(s=>{let a=e.node(s).rank-t;r[a]||(r[a]=[]),r[a].push(s)});let o=0,i=e.graph().nodeRankFactor;Array.from(r).forEach((s,a)=>{s===void 0&&a%i!==0?--o:s!==void 0&&o&&s.forEach(d=>e.node(d).rank+=o)})}function q(e,n,t,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),w(e,\"border\",o,n)}function Dn(e,n=Ie){let t=[];for(let r=0;r<e.length;r+=n){let o=e.slice(r,r+n);t.push(o)}return t}var Ie=65535;function L(e,n){if(n.length>Ie){let t=Dn(n);return e(...t.map(r=>e(...r)))}else return e(...n)}function X(e){let t=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MIN_VALUE:o});return L(Math.max,t)}function Ce(e,n){let t={lhs:[],rhs:[]};return e.forEach(r=>{n(r)?t.lhs.push(r):t.rhs.push(r)}),t}function P(e,n){let t=Date.now();try{return n()}finally{console.log(e+\" time: \"+(Date.now()-t)+\"ms\")}}function M(e,n){return n()}var An=0;function j(e){let n=++An;return e+(\"\"+n)}function k(e,n,t=1){n==null&&(n=e,e=0);let r=i=>i<n;t<0&&(r=i=>n<i);let o=[];for(let i=e;r(i);i+=t)o.push(i);return o}function T(e,n){let t={};for(let r of n)e[r]!==void 0&&(t[r]=e[r]);return t}function O(e,n){let t;return typeof n==\"string\"?t=r=>r[n]:t=n,Object.entries(e).reduce((r,[o,i])=>(r[o]=t(i,o),r),{})}function Re(e,n){return e.reduce((t,r,o)=>(t[r]=n[o],t),{})}var _=\"\\0\";var U=\"3.0.0\";var K=class{constructor(){pe(this,\"_sentinel\");let n={};n._next=n._prev=n,this._sentinel=n}dequeue(){let n=this._sentinel,t=n._prev;if(t!==n)return Pe(t),t}enqueue(n){let t=this._sentinel;n._prev&&n._next&&Pe(n),n._next=t._next,t._next._prev=n,t._next=n,n._prev=t}toString(){let n=[],t=this._sentinel,r=t._prev;for(;r!==t;)n.push(JSON.stringify(r,Vn)),r=r._prev;return\"[\"+n.join(\", \")+\"]\"}};function Pe(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Vn(e,n){if(e!==\"_next\"&&e!==\"_prev\")return n}var Me=K;var Wn=()=>1;function Q(e,n){if(e.nodeCount()<=1)return[];let t=Yn(e,n||Wn);return Bn(t.graph,t.buckets,t.zeroIdx).flatMap(o=>e.outEdges(o.v,o.w)||[])}function Bn(e,n,t){var a;let r=[],o=n[n.length-1],i=n[0],s;for(;e.nodeCount();){for(;s=i.dequeue();)$(e,n,t,s);for(;s=o.dequeue();)$(e,n,t,s);if(e.nodeCount()){for(let d=n.length-2;d>0;--d)if(s=(a=n[d])==null?void 0:a.dequeue(),s){r=r.concat($(e,n,t,s,!0)||[]);break}}}return r}function $(e,n,t,r,o){let i=[],s=o?i:void 0;return(e.inEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=e.node(a.v);o&&i.push({v:a.v,w:a.w}),l.out-=d,J(n,t,l)}),(e.outEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=a.w,u=e.node(l);u.in-=d,J(n,t,u)}),e.removeNode(r.v),s}function Yn(e,n){let t=new p,r=0,o=0;e.nodes().forEach(a=>{t.setNode(a,{v:a,in:0,out:0})}),e.edges().forEach(a=>{let d=t.edge(a.v,a.w)||0,l=n(a),u=d+l;t.setEdge(a.v,a.w,u);let c=t.node(a.v),h=t.node(a.w);o=Math.max(o,c.out+=l),r=Math.max(r,h.in+=l)});let i=zn(o+r+3).map(()=>new Me),s=r+1;return t.nodes().forEach(a=>{J(i,s,t.node(a))}),{graph:t,buckets:i,zeroIdx:s}}function J(e,n,t){var r,o,i;t.out?t.in?(i=e[t.out-t.in+n])==null||i.enqueue(t):(o=e[e.length-1])==null||o.enqueue(t):(r=e[0])==null||r.enqueue(t)}function zn(e){let n=[];for(let t=0;t<e;t++)n.push(t);return n}function je(e){(e.graph().acyclicer===\"greedy\"?Q(e,t(e)):Hn(e)).forEach(r=>{let o=e.edge(r);e.removeEdge(r),o.forwardName=r.name,o.reversed=!0,e.setEdge(r.w,r.v,o,j(\"rev\"))});function t(r){return o=>r.edge(o).weight}}function Hn(e){let n=[],t={},r={};function o(i){Object.hasOwn(r,i)||(r[i]=!0,t[i]=!0,e.outEdges(i).forEach(s=>{Object.hasOwn(t,s.w)?n.push(s):o(s.w)}),delete t[i])}return e.nodes().forEach(o),n}function Se(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.reversed){e.removeEdge(n);let r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}})}function Fe(e){e.graph().dummyChains=[],e.edges().forEach(n=>Xn(e,n))}function Xn(e,n){let t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,s=n.name,a=e.edge(n),d=a.labelRank;if(i===r+1)return;e.removeEdge(n);let l,u,c;for(c=0,++r;r<i;++c,++r)a.points=[],u={width:0,height:0,edgeLabel:a,edgeObj:n,rank:r},l=w(e,\"edge\",u,\"_d\"),r===d&&(u.width=a.width,u.height=a.height,u.dummy=\"edge-label\",u.labelpos=a.labelpos),e.setEdge(t,l,{weight:a.weight},s),c===0&&e.graph().dummyChains.push(l),t=l;e.setEdge(t,o,{weight:a.weight},s)}function De(e){e.graph().dummyChains.forEach(n=>{let t=e.node(n),r=t.edgeLabel,o;for(e.setEdge(t.edgeObj,r);t.dummy;)o=e.successors(n)[0],e.removeNode(n),r.points.push({x:t.x,y:t.y}),t.dummy===\"edge-label\"&&(r.x=t.x,r.y=t.y,r.width=t.width,r.height=t.height),n=o,t=e.node(n)})}function S(e){let n={};function t(r){let o=e.node(r);if(Object.hasOwn(n,r))return o.rank;n[r]=!0;let i=e.outEdges(r),s=i?i.map(d=>d==null?Number.POSITIVE_INFINITY:t(d.w)-e.edge(d).minlen):[],a=L(Math.min,s);return a===Number.POSITIVE_INFINITY&&(a=0),o.rank=a}e.sources().forEach(t)}function v(e,n){return e.node(n.w).rank-e.node(n.v).rank-e.edge(n).minlen}var V=Kn;function Kn(e){let n=new p({directed:!1}),t=e.nodes();if(t.length===0)throw new Error(\"Graph must have at least one node\");let r=t[0],o=e.nodeCount();n.setNode(r,{});let i,s;for(;$n(n,e)<o&&(i=Jn(n,e),!!i);)s=n.hasNode(i.v)?v(e,i):-v(e,i),Qn(n,e,s);return n}function $n(e,n){function t(r){let o=n.nodeEdges(r);o&&o.forEach(i=>{let s=i.v,a=r===s?i.w:s;!e.hasNode(a)&&!v(n,i)&&(e.setNode(a,{}),e.setEdge(r,a,{}),t(a))})}return e.nodes().forEach(t),e.nodeCount()}function Jn(e,n){return n.edges().reduce((r,o)=>{let i=Number.POSITIVE_INFINITY;return e.hasNode(o.v)!==e.hasNode(o.w)&&(i=v(n,o)),i<r[0]?[i,o]:r},[Number.POSITIVE_INFINITY,null])[1]}function Qn(e,n,t){e.nodes().forEach(r=>n.node(r).rank+=t)}var{preorder:Zn,postorder:et}=R,Ve=x;x.initLowLimValues=ee;x.initCutValues=Z;x.calcCutValue=We;x.leaveEdge=Ye;x.enterEdge=ze;x.exchangeEdges=He;function x(e){e=xe(e),S(e);let n=V(e);ee(n),Z(n,e);let t,r;for(;t=Ye(n);)r=ze(n,e,t),He(n,e,t,r)}function Z(e,n){let t=et(e,e.nodes());t=t.slice(0,t.length-1),t.forEach(r=>nt(e,n,r))}function nt(e,n,t){let o=e.node(t).parent,i=e.edge(t,o);i.cutvalue=We(e,n,t)}function We(e,n,t){let o=e.node(t).parent,i=!0,s=n.edge(t,o),a=0;s||(i=!1,s=n.edge(o,t)),a=s.weight;let d=n.nodeEdges(t);return d&&d.forEach(l=>{let u=l.v===t,c=u?l.w:l.v;if(c!==o){let h=u===i,f=n.edge(l).weight;if(a+=h?f:-f,rt(e,t,c)){let b=e.edge(t,c).cutvalue;a+=h?-b:b}}}),a}function ee(e,n){arguments.length<2&&(n=e.nodes()[0]),Be(e,{},1,n)}function Be(e,n,t,r,o){let i=t,s=e.node(r);n[r]=!0;let a=e.neighbors(r);return a&&a.forEach(d=>{Object.hasOwn(n,d)||(t=Be(e,n,t,d,r))}),s.low=i,s.lim=t++,o?s.parent=o:delete s.parent,t}function Ye(e){return e.edges().find(n=>e.edge(n).cutvalue<0)}function ze(e,n,t){let r=t.v,o=t.w;n.hasEdge(r,o)||(r=t.w,o=t.v);let i=e.node(r),s=e.node(o),a=i,d=!1;return i.lim>s.lim&&(a=s,d=!0),n.edges().filter(u=>d===Ae(e,e.node(u.v),a)&&d!==Ae(e,e.node(u.w),a)).reduce((u,c)=>v(n,c)<v(n,u)?c:u)}function He(e,n,t,r){let o=t.v,i=t.w;e.removeEdge(o,i),e.setEdge(r.v,r.w,{}),ee(e),Z(e,n),tt(e,n)}function tt(e,n){let t=e.nodes().find(o=>!e.node(o).parent);if(!t)return;let r=Zn(e,[t]);r=r.slice(1),r.forEach(o=>{let s=e.node(o).parent,a=n.edge(o,s),d=!1;a||(a=n.edge(s,o),d=!0),n.node(o).rank=n.node(s).rank+(d?a.minlen:-a.minlen)})}function rt(e,n,t){return e.hasEdge(n,t)}function Ae(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}var Xe=ot;function ot(e){let n=e.graph().ranker;if(typeof n==\"function\")return n(e);switch(n){case\"network-simplex\":qe(e);break;case\"tight-tree\":st(e);break;case\"longest-path\":it(e);break;case\"none\":break;default:qe(e)}}var it=S;function st(e){S(e),V(e)}function qe(e){Ve(e)}var Ue=at;function at(e){let n=lt(e);e.graph().dummyChains.forEach(t=>{let r=e.node(t),o=r.edgeObj,i=dt(e,n,o.v,o.w),s=i.path,a=i.lca,d=0,l=s[d],u=!0;for(;t!==o.w;){if(r=e.node(t),u){for(;(l=s[d])!==a&&e.node(l).maxRank<r.rank;)d++;l===a&&(u=!1)}if(!u){for(;d<s.length-1&&e.node(s[d+1]).minRank<=r.rank;)d++;l=s[d]}l!==void 0&&e.setParent(t,l),t=e.successors(t)[0]}})}function dt(e,n,t,r){let o=[],i=[],s=Math.min(n[t].low,n[r].low),a=Math.max(n[t].lim,n[r].lim),d;d=t;do d=e.parent(d),o.push(d);while(d&&(n[d].low>s||a>n[d].lim));let l=d,u=r;for(;(u=e.parent(u))!==l;)i.push(u);return{path:o.concat(i.reverse()),lca:l}}function lt(e){let n={},t=0;function r(o){let i=t;e.children(o).forEach(r),n[o]={low:i,lim:t++}}return e.children(_).forEach(r),n}function Ke(e){let n=w(e,\"root\",{},\"_root\"),t=ut(e),r=Object.values(t),o=L(Math.max,r)-1,i=2*o+1;e.graph().nestingRoot=n,e.edges().forEach(a=>e.edge(a).minlen*=i);let s=ct(e)+1;e.children(_).forEach(a=>$e(e,n,i,s,o,t,a)),e.graph().nodeRankFactor=i}function $e(e,n,t,r,o,i,s){var c;let a=e.children(s);if(!a.length){s!==n&&e.setEdge(n,s,{weight:0,minlen:t});return}let d=q(e,\"_bt\"),l=q(e,\"_bb\"),u=e.node(s);e.setParent(d,s),u.borderTop=d,e.setParent(l,s),u.borderBottom=l,a.forEach(h=>{var y;$e(e,n,t,r,o,i,h);let f=e.node(h),g=f.borderTop?f.borderTop:h,b=f.borderBottom?f.borderBottom:h,m=f.borderTop?r:2*r,E=g!==b?1:o-((y=i[s])!=null?y:0)+1;e.setEdge(d,g,{weight:m,minlen:E,nestingEdge:!0}),e.setEdge(b,l,{weight:m,minlen:E,nestingEdge:!0})}),e.parent(s)||e.setEdge(n,d,{weight:0,minlen:o+((c=i[s])!=null?c:0)})}function ut(e){let n={};function t(r,o){let i=e.children(r);i&&i.length&&i.forEach(s=>t(s,o+1)),n[r]=o}return e.children(_).forEach(r=>t(r,1)),n}function ct(e){return e.edges().reduce((n,t)=>n+e.edge(t).weight,0)}function Je(e){let n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,e.edges().forEach(t=>{e.edge(t).nestingEdge&&e.removeEdge(t)})}var Ze=ft;function ft(e){function n(t){let r=e.children(t),o=e.node(t);if(r.length&&r.forEach(n),Object.hasOwn(o,\"minRank\")){o.borderLeft=[],o.borderRight=[];for(let i=o.minRank,s=o.maxRank+1;i<s;++i)Qe(e,\"borderLeft\",\"_bl\",t,o,i),Qe(e,\"borderRight\",\"_br\",t,o,i)}}e.children(_).forEach(n)}function Qe(e,n,t,r,o,i){let s={width:0,height:0,rank:i,borderType:n},a=o[n][i-1],d=w(e,\"border\",s,t);o[n][i]=d,e.setParent(d,r),a&&e.setEdge(a,d,{weight:1})}function nn(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n===\"lr\"||n===\"rl\")&&rn(e)}function tn(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n===\"bt\"||n===\"rl\")&&bt(e),(n===\"lr\"||n===\"rl\")&&(gt(e),rn(e))}function rn(e){e.nodes().forEach(n=>en(e.node(n))),e.edges().forEach(n=>en(e.edge(n)))}function en(e){let n=e.width;e.width=e.height,e.height=n}function bt(e){e.nodes().forEach(n=>ne(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(ne),Object.hasOwn(t,\"y\")&&ne(t)})}function ne(e){e.y=-e.y}function gt(e){e.nodes().forEach(n=>te(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(te),Object.hasOwn(t,\"x\")&&te(t)})}function te(e){let n=e.x;e.x=e.y,e.y=n}function re(e){let n={},t=e.nodes().filter(d=>!e.children(d).length),r=t.map(d=>e.node(d).rank),o=L(Math.max,r),i=k(o+1).map(()=>[]);function s(d){if(n[d])return;n[d]=!0;let l=e.node(d);i[l.rank].push(d);let u=e.successors(d);u&&u.forEach(s)}return t.sort((d,l)=>e.node(d).rank-e.node(l).rank).forEach(s),i}function oe(e,n){let t=0;for(let r=1;r<n.length;++r)t+=mt(e,n[r-1],n[r]);return t}function mt(e,n,t){let r=Re(t,t.map((l,u)=>u)),o=n.flatMap(l=>{let u=e.outEdges(l);return u?u.map(c=>({pos:r[c.w],weight:e.edge(c).weight})).sort((c,h)=>c.pos-h.pos):[]}),i=1;for(;i<t.length;)i<<=1;let s=2*i-1;i-=1;let a=new Array(s).fill(0),d=0;return o.forEach(l=>{let u=l.pos+i;a[u]+=l.weight;let c=0;for(;u>0;)u%2&&(c+=a[u+1]),u=u-1>>1,a[u]+=l.weight;d+=l.weight*c}),d}function ie(e,n=[]){return n.map(t=>{let r=e.inEdges(t);if(!r||!r.length)return{v:t};{let o=r.reduce((i,s)=>{let a=e.edge(s),d=e.node(s.v);return{sum:i.sum+a.weight*d.order,weight:i.weight+a.weight}},{sum:0,weight:0});return{v:t,barycenter:o.sum/o.weight,weight:o.weight}}})}function se(e,n){let t={};e.forEach((o,i)=>{let s={indegree:0,in:[],out:[],vs:[o.v],i};o.barycenter!==void 0&&(s.barycenter=o.barycenter,s.weight=o.weight),t[o.v]=s}),n.edges().forEach(o=>{let i=t[o.v],s=t[o.w];i!==void 0&&s!==void 0&&(s.indegree++,i.out.push(s))});let r=Object.values(t).filter(o=>!o.indegree);return Et(r)}function Et(e){let n=[];function t(o){return i=>{i.merged||(i.barycenter===void 0||o.barycenter===void 0||i.barycenter>=o.barycenter)&&Lt(o,i)}}function r(o){return i=>{i.in.push(o),--i.indegree===0&&e.push(i)}}for(;e.length;){let o=e.pop();n.push(o),o.in.reverse().forEach(t(o)),o.out.forEach(r(o))}return n.filter(o=>!o.merged).map(o=>T(o,[\"vs\",\"i\",\"barycenter\",\"weight\"]))}function Lt(e,n){let t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight),n.weight&&(t+=n.barycenter*n.weight,r+=n.weight),e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=!0}function ae(e,n){let t=Ce(e,u=>Object.hasOwn(u,\"barycenter\")),r=t.lhs,o=t.rhs.sort((u,c)=>c.i-u.i),i=[],s=0,a=0,d=0;r.sort(yt(!!n)),d=on(i,o,d),r.forEach(u=>{d+=u.vs.length,i.push(u.vs),s+=u.barycenter*u.weight,a+=u.weight,d=on(i,o,d)});let l={vs:i.flat(1)};return a&&(l.barycenter=s/a,l.weight=a),l}function on(e,n,t){let r;for(;n.length&&(r=n[n.length-1]).i<=t;)n.pop(),e.push(r.vs),t++;return t}function yt(e){return(n,t)=>n.barycenter<t.barycenter?-1:n.barycenter>t.barycenter?1:e?t.i-n.i:n.i-t.i}function W(e,n,t,r){let o=e.children(n),i=e.node(n),s=i?i.borderLeft:void 0,a=i?i.borderRight:void 0,d={};s&&(o=o.filter(h=>h!==s&&h!==a));let l=ie(e,o);l.forEach(h=>{if(e.children(h.v).length){let f=W(e,h.v,t,r);d[h.v]=f,Object.hasOwn(f,\"barycenter\")&&Nt(h,f)}});let u=se(l,t);wt(u,d);let c=ae(u,r);if(s&&a){c.vs=[s,c.vs,a].flat(1);let h=e.predecessors(s);if(h&&h.length){let f=e.node(h[0]),g=e.predecessors(a),b=e.node(g[0]);Object.hasOwn(c,\"barycenter\")||(c.barycenter=0,c.weight=0),c.barycenter=(c.barycenter*c.weight+f.order+b.order)/(c.weight+2),c.weight+=2}}return c}function wt(e,n){e.forEach(t=>{t.vs=t.vs.flatMap(r=>n[r]?n[r].vs:r)})}function Nt(e,n){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+n.barycenter*n.weight)/(e.weight+n.weight),e.weight+=n.weight):(e.barycenter=n.barycenter,e.weight=n.weight)}function de(e,n,t,r){r||(r=e.nodes());let o=Gt(e),i=new p({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(s=>e.node(s));return r.forEach(s=>{let a=e.node(s),d=e.parent(s);if(a.rank===n||a.minRank<=n&&n<=a.maxRank){i.setNode(s),i.setParent(s,d||o);let l=e[t](s);l&&l.forEach(u=>{let c=u.v===s?u.w:u.v,h=i.edge(c,s),f=h!==void 0?h.weight:0;i.setEdge(c,s,{weight:e.edge(u).weight+f})}),Object.hasOwn(a,\"minRank\")&&i.setNode(s,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]})}}),i}function Gt(e){let n;for(;e.hasNode(n=j(\"_root\")););return n}function le(e,n,t){let r={},o;t.forEach(i=>{let s=e.parent(i),a,d;for(;s;){if(a=e.parent(s),a?(d=r[a],r[a]=s):(d=o,o=s),d&&d!==s){n.setEdge(d,s);return}s=a}})}function B(e,n={}){if(typeof n.customOrder==\"function\"){n.customOrder(e,B);return}let t=X(e),r=sn(e,k(1,t+1),\"inEdges\"),o=sn(e,k(t-1,-1,-1),\"outEdges\"),i=re(e);if(an(e,i),n.disableOptimalOrderHeuristic)return;let s=Number.POSITIVE_INFINITY,a,d=n.constraints||[];for(let l=0,u=0;u<4;++l,++u){kt(l%2?r:o,l%4>=2,d),i=N(e);let c=oe(e,i);c<s?(u=0,a=Object.assign({},i),s=c):c===s&&(a=structuredClone(i))}an(e,a)}function sn(e,n,t){let r=new Map,o=(i,s)=>{r.has(i)||r.set(i,[]),r.get(i).push(s)};for(let i of e.nodes()){let s=e.node(i);if(typeof s.rank==\"number\"&&o(s.rank,i),typeof s.minRank==\"number\"&&typeof s.maxRank==\"number\")for(let a=s.minRank;a<=s.maxRank;a++)a!==s.rank&&o(a,i)}return n.map(function(i){return de(e,i,t,r.get(i)||[])})}function kt(e,n,t){let r=new p;e.forEach(function(o){t.forEach(a=>r.setEdge(a.left,a.right));let i=o.graph().root,s=W(o,i,r,n);s.vs.forEach((a,d)=>o.node(a).order=d),le(o,r,s.vs)})}function an(e,n){Object.values(n).forEach(t=>t.forEach((r,o)=>e.node(r).order=o))}function vt(e,n){let t={};function r(o,i){let s=0,a=0,d=o.length,l=i[i.length-1];return i.forEach((u,c)=>{let h=xt(e,u),f=h?e.node(h).order:d;(h||u===l)&&(i.slice(a,c+1).forEach(g=>{let b=e.predecessors(g);b&&b.forEach(m=>{let E=e.node(m),y=E.order;(y<s||f<y)&&!(E.dummy&&e.node(g).dummy)&&dn(t,m,g)})}),a=c+1,s=f)}),i}return n.length&&n.reduce(r),t}function _t(e,n){let t={};function r(i,s,a,d,l){k(s,a).forEach(u=>{let c=i[u];if(c!==void 0&&e.node(c).dummy){let h=e.predecessors(c);h&&h.forEach(f=>{if(f===void 0)return;let g=e.node(f);g.dummy&&(g.order<d||g.order>l)&&dn(t,f,c)})}})}function o(i,s){let a=-1,d=-1,l=0;return s.forEach((u,c)=>{if(e.node(u).dummy===\"border\"){let h=e.predecessors(u);if(h&&h.length){let f=h[0];if(f===void 0)return;d=e.node(f).order,r(s,l,c,a,d),l=c,a=d}}r(s,l,s.length,d,i.length)}),s}return n.length&&n.reduce(o),t}function xt(e,n){if(e.node(n).dummy){let t=e.predecessors(n);if(t)return t.find(r=>e.node(r).dummy)}}function dn(e,n,t){if(n>t){let o=n;n=t,t=o}let r=e[n];r||(e[n]=r={}),r[t]=!0}function Tt(e,n,t){if(n>t){let o=n;n=t,t=o}let r=e[n];return r!==void 0&&Object.hasOwn(r,t)}function Ot(e,n,t,r){let o={},i={},s={};return n.forEach(a=>{a.forEach((d,l)=>{o[d]=d,i[d]=d,s[d]=l})}),n.forEach(a=>{let d=-1;a.forEach(l=>{let u=r(l);if(u&&u.length){let c=u.sort((f,g)=>{let b=s[f],m=s[g];return(b!==void 0?b:0)-(m!==void 0?m:0)}),h=(c.length-1)/2;for(let f=Math.floor(h),g=Math.ceil(h);f<=g;++f){let b=c[f];if(b===void 0)continue;let m=s[b];if(m!==void 0&&i[l]===l&&d<m&&!Tt(t,l,b)){let E=o[b];E!==void 0&&(i[b]=l,i[l]=o[l]=E,d=m)}}}})}),{root:o,align:i}}function It(e,n,t,r,o=!1){let i={},s=Ct(e,n,t,o),a=o?\"borderLeft\":\"borderRight\";function d(f,g){let b=s.nodes().slice(),m={},E=b.pop();for(;E;){if(m[E])f(E);else{m[E]=!0,b.push(E);for(let y of g(E))b.push(y)}E=b.pop()}}function l(f){let g=s.inEdges(f);g?i[f]=g.reduce((b,m)=>{var I;let E=(I=i[m.v])!=null?I:0,y=s.edge(m);return Math.max(b,E+(y!==void 0?y:0))},0):i[f]=0}function u(f){let g=s.outEdges(f),b=Number.POSITIVE_INFINITY;g&&(b=g.reduce((E,y)=>{let I=i[y.w],be=s.edge(y);return Math.min(E,(I!==void 0?I:0)-(be!==void 0?be:0))},Number.POSITIVE_INFINITY));let m=e.node(f);b!==Number.POSITIVE_INFINITY&&m.borderType!==a&&(i[f]=Math.max(i[f]!==void 0?i[f]:0,b))}function c(f){return s.predecessors(f)||[]}function h(f){return s.successors(f)||[]}return d(l,c),d(u,h),Object.keys(r).forEach(f=>{var b;let g=t[f];g!==void 0&&(i[f]=(b=i[g])!=null?b:0)}),i}function Ct(e,n,t,r){let o=new p,i=e.graph(),s=jt(i.nodesep,i.edgesep,r);return n.forEach(a=>{let d;a.forEach(l=>{let u=t[l];if(u!==void 0){if(o.setNode(u),d!==void 0){let c=t[d];if(c!==void 0){let h=o.edge(c,u);o.setEdge(c,u,Math.max(s(e,l,d),h||0))}}d=l}})}),o}function Rt(e,n){return Object.values(n).reduce((t,r)=>{let o=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;Object.entries(r).forEach(([a,d])=>{let l=St(e,a)/2;o=Math.max(d+l,o),i=Math.min(d-l,i)});let s=o-i;return s<t[0]&&(t=[s,r]),t},[Number.POSITIVE_INFINITY,null])[1]}function Pt(e,n){let t=Object.values(n),r=L(Math.min,t),o=L(Math.max,t);[\"u\",\"d\"].forEach(i=>{[\"l\",\"r\"].forEach(s=>{let a=i+s,d=e[a];if(!d||d===n)return;let l=Object.values(d),u=r-L(Math.min,l);s!==\"l\"&&(u=o-L(Math.max,l)),u&&(e[a]=O(d,c=>c+u))})})}function Mt(e,n=void 0){let t=e.ul;return t?O(t,(r,o)=>{var s,a;if(n){let d=n.toLowerCase(),l=e[d];if(l&&l[o]!==void 0)return l[o]}let i=Object.values(e).map(d=>{let l=d[o];return l!==void 0?l:0}).sort((d,l)=>d-l);return(((s=i[1])!=null?s:0)+((a=i[2])!=null?a:0))/2}):{}}function ln(e){let n=N(e),t=Object.assign(vt(e,n),_t(e,n)),r={},o;[\"u\",\"d\"].forEach(s=>{o=s===\"u\"?n:Object.values(n).reverse(),[\"l\",\"r\"].forEach(a=>{a===\"r\"&&(o=o.map(c=>Object.values(c).reverse()));let l=Ot(e,o,t,c=>(s===\"u\"?e.predecessors(c):e.successors(c))||[]),u=It(e,o,l.root,l.align,a===\"r\");a===\"r\"&&(u=O(u,c=>-c)),r[s+a]=u})});let i=Rt(e,r);return Pt(r,i),Mt(r,e.graph().align)}function jt(e,n,t){return(r,o,i)=>{let s=r.node(o),a=r.node(i),d=0,l;if(d+=s.width/2,Object.hasOwn(s,\"labelpos\"))switch(s.labelpos.toLowerCase()){case\"l\":l=-s.width/2;break;case\"r\":l=s.width/2;break}if(l&&(d+=t?l:-l),l=void 0,d+=(s.dummy?n:e)/2,d+=(a.dummy?n:e)/2,d+=a.width/2,Object.hasOwn(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":l=a.width/2;break;case\"r\":l=-a.width/2;break}return l&&(d+=t?l:-l),d}}function St(e,n){return e.node(n).width}function un(e){e=A(e),Ft(e),Object.entries(ln(e)).forEach(([n,t])=>e.node(n).x=t)}function Ft(e){let n=N(e),t=e.graph(),r=t.ranksep,o=t.rankalign,i=0;n.forEach(s=>{let a=s.reduce((d,l)=>{var c;let u=(c=e.node(l).height)!=null?c:0;return d>u?d:u},0);s.forEach(d=>{let l=e.node(d);o===\"top\"?l.y=i+l.height/2:o===\"bottom\"?l.y=i+a-l.height/2:l.y=i+a/2}),i+=a+r})}function he(e,n={}){let t=n.debugTiming?P:M;return t(\"layout\",()=>{let r=t(\" buildLayoutGraph\",()=>Xt(e));return t(\" runLayout\",()=>Dt(r,t,n)),t(\" updateInputGraph\",()=>At(e,r)),r})}function Dt(e,n,t){n(\" makeSpaceForEdgeLabels\",()=>Ut(e)),n(\" removeSelfEdges\",()=>rr(e)),n(\" acyclic\",()=>je(e)),n(\" nestingGraph.run\",()=>Ke(e)),n(\" rank\",()=>Xe(A(e))),n(\" injectEdgeLabelProxies\",()=>Kt(e)),n(\" removeEmptyRanks\",()=>Oe(e)),n(\" nestingGraph.cleanup\",()=>Je(e)),n(\" normalizeRanks\",()=>Te(e)),n(\" assignRankMinMax\",()=>$t(e)),n(\" removeEdgeLabelProxies\",()=>Jt(e)),n(\" normalize.run\",()=>Fe(e)),n(\" parentDummyChains\",()=>Ue(e)),n(\" addBorderSegments\",()=>Ze(e)),n(\" order\",()=>B(e,t)),n(\" insertSelfEdges\",()=>or(e)),n(\" adjustCoordinateSystem\",()=>nn(e)),n(\" position\",()=>un(e)),n(\" positionSelfEdges\",()=>ir(e)),n(\" removeBorderNodes\",()=>tr(e)),n(\" normalize.undo\",()=>De(e)),n(\" fixupEdgeLabelCoords\",()=>er(e)),n(\" undoCoordinateSystem\",()=>tn(e)),n(\" translateGraph\",()=>Qt(e)),n(\" assignNodeIntersects\",()=>Zt(e)),n(\" reversePoints\",()=>nr(e)),n(\" acyclic.undo\",()=>Se(e))}function At(e,n){e.nodes().forEach(t=>{let r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,r.order=o.order,r.rank=o.rank,n.children(t).length&&(r.width=o.width,r.height=o.height))}),e.edges().forEach(t=>{let r=e.edge(t),o=n.edge(t);r.points=o.points,Object.hasOwn(o,\"x\")&&(r.x=o.x,r.y=o.y)}),e.graph().width=n.graph().width,e.graph().height=n.graph().height}var Vt=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],Wt={ranksep:50,edgesep:20,nodesep:50,rankdir:\"TB\",rankalign:\"center\"},Bt=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\",\"rankalign\"],Yt=[\"width\",\"height\",\"rank\"],cn={width:0,height:0},zt=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],Ht={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},qt=[\"labelpos\"];function Xt(e){let n=new p({multigraph:!0,compound:!0}),t=ce(e.graph());return n.setGraph(Object.assign({},Wt,ue(t,Vt),T(t,Bt))),e.nodes().forEach(r=>{let o=ce(e.node(r)),i=ue(o,Yt);Object.keys(cn).forEach(a=>{i[a]===void 0&&(i[a]=cn[a])}),n.setNode(r,i);let s=e.parent(r);s!==void 0&&n.setParent(r,s)}),e.edges().forEach(r=>{let o=ce(e.edge(r));n.setEdge(r,Object.assign({},Ht,ue(o,zt),T(o,qt)))}),n}function Ut(e){let n=e.graph();n.ranksep/=2,e.edges().forEach(t=>{let r=e.edge(t);r.minlen*=2,r.labelpos.toLowerCase()!==\"c\"&&(n.rankdir===\"TB\"||n.rankdir===\"BT\"?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function Kt(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.width&&t.height){let r=e.node(n.v),i={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};w(e,\"edge-proxy\",i,\"_ep\")}})}function $t(e){let n=0;e.nodes().forEach(t=>{let r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=Math.max(n,r.maxRank))}),e.graph().maxRank=n}function Jt(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy===\"edge-proxy\"){let r=t;e.edge(r.e).labelRank=t.rank,e.removeNode(n)}})}function Qt(e){let n=Number.POSITIVE_INFINITY,t=0,r=Number.POSITIVE_INFINITY,o=0,i=e.graph(),s=i.marginx||0,a=i.marginy||0;function d(l){let u=l.x,c=l.y,h=l.width,f=l.height;n=Math.min(n,u-h/2),t=Math.max(t,u+h/2),r=Math.min(r,c-f/2),o=Math.max(o,c+f/2)}e.nodes().forEach(l=>d(e.node(l))),e.edges().forEach(l=>{let u=e.edge(l);Object.hasOwn(u,\"x\")&&d(u)}),n-=s,r-=a,e.nodes().forEach(l=>{let u=e.node(l);u.x-=n,u.y-=r}),e.edges().forEach(l=>{let u=e.edge(l);u.points.forEach(c=>{c.x-=n,c.y-=r}),Object.hasOwn(u,\"x\")&&(u.x-=n),Object.hasOwn(u,\"y\")&&(u.y-=r)}),i.width=t-n+s,i.height=o-r+a}function Zt(e){e.edges().forEach(n=>{let t=e.edge(n),r=e.node(n.v),o=e.node(n.w),i,s;t.points?(i=t.points[0],s=t.points[t.points.length-1]):(t.points=[],i=o,s=r),t.points.unshift(H(r,i)),t.points.push(H(o,s))})}function er(e){e.edges().forEach(n=>{let t=e.edge(n);if(Object.hasOwn(t,\"x\"))switch((t.labelpos===\"l\"||t.labelpos===\"r\")&&(t.width-=t.labeloffset),t.labelpos){case\"l\":t.x-=t.width/2+t.labeloffset;break;case\"r\":t.x+=t.width/2+t.labeloffset;break}})}function nr(e){e.edges().forEach(n=>{let t=e.edge(n);t.reversed&&t.points.reverse()})}function tr(e){e.nodes().forEach(n=>{if(e.children(n).length){let t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(t.borderLeft[t.borderLeft.length-1]),s=e.node(t.borderRight[t.borderRight.length-1]);t.width=Math.abs(s.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2}}),e.nodes().forEach(n=>{e.node(n).dummy===\"border\"&&e.removeNode(n)})}function rr(e){e.edges().forEach(n=>{if(n.v===n.w){let t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}})}function or(e){N(e).forEach(t=>{let r=0;t.forEach((o,i)=>{let s=e.node(o);s.order=i+r,(s.selfEdges||[]).forEach(a=>{w(e,\"selfedge\",{width:a.label.width,height:a.label.height,rank:s.rank,order:i+ ++r,e:a.e,label:a.label},\"_se\")}),delete s.selfEdges})})}function ir(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy===\"selfedge\"){let r=t,o=e.node(r.e.v),i=o.x+o.width/2,s=o.y,a=t.x-i,d=o.height/2;e.setEdge(r.e,r.label),e.removeNode(n),r.label.points=[{x:i+2*a/3,y:s-d},{x:i+5*a/6,y:s-d},{x:i+a,y:s},{x:i+5*a/6,y:s+d},{x:i+2*a/3,y:s+d}],r.label.x=t.x,r.label.y=t.y}})}function ue(e,n){return O(T(e,n),Number)}function ce(e){let n={};return e&&Object.entries(e).forEach(([t,r])=>{typeof t==\"string\"&&(t=t.toLowerCase()),n[t]=r}),n}function fe(e){let n=N(e),t=new p({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(r=>{t.setNode(r,{label:r}),t.setParent(r,\"layer\"+e.node(r).rank)}),e.edges().forEach(r=>t.setEdge(r.v,r.w,{},r.name)),n.forEach((r,o)=>{let i=\"layer\"+o;t.setNode(i,{rank:\"same\"}),r.reduce((s,a)=>(t.setEdge(s,a,{style:\"invis\"}),a))}),t}var xo={time:P,notime:M},sr={graphlib:z,version:U,layout:he,debug:fe,util:{time:P,notime:M}},To=sr;export{p as Graph,fe as debug,To as default,z as graphlib,he as layout,xo as util,U as version};\n/*! For license information please see dagre.esm.js.LEGAL.txt */\n//# sourceMappingURL=dagre.esm.js.map\n","import { useEffect, useRef } from 'react';\r\nimport { useStore, useReactFlow, ReactFlowState } from 'reactflow';\r\n\r\ninterface Props {\r\n onHeightsReady: (heights: Record<string, number>) => void;\r\n nodeCount: number;\r\n}\r\n\r\n// Returns a stable string — only changes when a node height actually changes\r\nconst fingerprintSelector = (state: ReactFlowState): string => {\r\n const parts: string[] = [];\r\n state.nodeInternals.forEach((node, id) => parts.push(`${id}:${node.height ?? 0}`));\r\n return parts.join(',');\r\n};\r\n\r\nconst LayoutUpdater = ({ onHeightsReady, nodeCount }: Props) => {\r\n const fingerprint = useStore(fingerprintSelector);\r\n const prevRef = useRef('');\r\n const prevNodeCount = useRef(0);\r\n const { fitView } = useReactFlow();\r\n\r\n useEffect(() => {\r\n if (!fingerprint || fingerprint === prevRef.current) return;\r\n\r\n // Parse heights back from the fingerprint — avoids a second store subscription\r\n const heights: Record<string, number> = {};\r\n for (const part of fingerprint.split(',')) {\r\n const [id, h] = part.split(':');\r\n const height = Number(h);\r\n if (id && height > 0) heights[id] = height;\r\n }\r\n\r\n if (Object.keys(heights).length === 0) return;\r\n prevRef.current = fingerprint;\r\n onHeightsReady(heights);\r\n }, [fingerprint]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return null;\r\n};\r\n\r\nexport default LayoutUpdater;\r\n","import React from 'react';\n\n/**\n * FlowForgeHeader — top bar that ships with FlowForgeCanvas by default.\n *\n * Renders the workflow name, a status pill, Cancel, and primary Save\n * button. Calls back via `onSave` / `onCancel`. The canvas itself wires\n * `onSave` to the latest WorkflowState behind the scenes — consumers\n * only provide a callback that receives that state.\n *\n * Opt out of the built-in header by passing `hideHeader={true}` on\n * FlowForgeCanvas; you can still mount this component standalone.\n */\nexport interface FlowForgeHeaderProps {\n /** Workflow display name shown on the left. */\n workflowName?: string;\n /** Optional editable callback — when provided, name becomes click-to-edit. */\n onWorkflowNameChange?: (name: string) => void;\n /** Status pill text (e.g. 'Draft', 'Published', 'Unsaved'). */\n status?: string;\n /** Status pill color — one of these or a custom hex. */\n statusColor?: 'gray' | 'green' | 'amber' | 'red' | string;\n /** Click handler for the primary Save button. Async-aware: spinner shows during await. */\n onSave?: () => void | Promise<void>;\n /** Click handler for Cancel. Button hidden when not provided. */\n onCancel?: () => void;\n /** Custom label for the Save button. Defaults to \"Save\". */\n saveLabel?: string;\n /** Disable Save button (e.g. while there are no unsaved changes). */\n saveDisabled?: boolean;\n}\n\nconst STATUS_PALETTE: Record<string, { bg: string; fg: string }> = {\n gray: { bg: '#f1f5f9', fg: '#475569' },\n green: { bg: '#dcfce7', fg: '#166534' },\n amber: { bg: '#fef3c7', fg: '#92400e' },\n red: { bg: '#fee2e2', fg: '#991b1b' },\n};\n\nexport function FlowForgeHeader({\n workflowName,\n onWorkflowNameChange,\n status,\n statusColor = 'gray',\n onSave,\n onCancel,\n saveLabel = 'Save',\n saveDisabled = false,\n}: FlowForgeHeaderProps) {\n const [saving, setSaving] = React.useState(false);\n const [editingName, setEditingName] = React.useState(false);\n const [nameDraft, setNameDraft] = React.useState(workflowName ?? '');\n\n React.useEffect(() => { setNameDraft(workflowName ?? ''); }, [workflowName]);\n\n const handleSave = async () => {\n if (!onSave || saving || saveDisabled) return;\n setSaving(true);\n try {\n await onSave();\n } finally {\n setSaving(false);\n }\n };\n\n const statusPalette = STATUS_PALETTE[statusColor] ?? {\n bg: statusColor,\n fg: '#fff',\n };\n\n return (\n <div\n style={{\n display: 'flex', alignItems: 'center', gap: 12,\n padding: '10px 20px',\n background: '#fff',\n borderBottom: '1px solid #e2e8f0',\n flexShrink: 0,\n }}\n >\n {/* ── Left: name + status ─────────────────────────────────────────── */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, minWidth: 0 }}>\n {editingName && onWorkflowNameChange ? (\n <input\n value={nameDraft}\n onChange={(e) => setNameDraft(e.target.value)}\n onBlur={() => {\n setEditingName(false);\n if (nameDraft !== workflowName) onWorkflowNameChange(nameDraft);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') (e.target as HTMLInputElement).blur();\n if (e.key === 'Escape') { setNameDraft(workflowName ?? ''); setEditingName(false); }\n }}\n autoFocus\n style={{\n fontSize: 15, fontWeight: 600, color: '#0f172a',\n border: '1px solid #cbd5e1', borderRadius: 4,\n padding: '2px 6px', minWidth: 200,\n }}\n />\n ) : (\n <span\n onClick={() => onWorkflowNameChange && setEditingName(true)}\n style={{\n fontSize: 15, fontWeight: 600, color: '#0f172a',\n cursor: onWorkflowNameChange ? 'text' : 'default',\n whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis',\n maxWidth: 360,\n }}\n title={workflowName}\n >\n {workflowName || 'Untitled workflow'}\n </span>\n )}\n\n {status && (\n <span\n style={{\n fontSize: 11, fontWeight: 600,\n padding: '3px 8px', borderRadius: 999,\n background: statusPalette.bg, color: statusPalette.fg,\n textTransform: 'uppercase', letterSpacing: 0.4,\n flexShrink: 0,\n }}\n >\n {status}\n </span>\n )}\n </div>\n\n {/* ── Right: action buttons ───────────────────────────────────────── */}\n <div style={{ marginLeft: 'auto', display: 'flex', alignItems: 'center', gap: 8 }}>\n {onCancel && (\n <button\n type=\"button\"\n onClick={onCancel}\n disabled={saving}\n style={{\n padding: '6px 14px', fontSize: 13, fontWeight: 500,\n border: '1px solid #cbd5e1', background: '#fff',\n color: '#475569', borderRadius: 6,\n cursor: saving ? 'not-allowed' : 'pointer',\n opacity: saving ? 0.6 : 1,\n }}\n >\n Cancel\n </button>\n )}\n {onSave && (\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving || saveDisabled}\n style={{\n padding: '6px 16px', fontSize: 13, fontWeight: 600,\n border: 'none',\n background: saveDisabled ? '#94a3b8' : 'var(--ff-primary, #1dbf60)',\n color: '#fff', borderRadius: 6,\n cursor: saving || saveDisabled ? 'not-allowed' : 'pointer',\n display: 'inline-flex', alignItems: 'center', gap: 6,\n minWidth: 80, justifyContent: 'center',\n }}\n >\n {saving ? 'Saving…' : saveLabel}\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport default FlowForgeHeader;\n","import React, { ReactNode, useState } from 'react';\r\nimport { Drawer, Box, IconButton, Dialog } from '@mui/material';\r\nimport { MdClose } from 'react-icons/md';\r\nimport { BiExpand, BiCollapse } from 'react-icons/bi';\r\n\r\ninterface BaseDrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n title: string;\r\n icon?: ReactNode;\r\n children: ReactNode;\r\n footer?: ReactNode;\r\n width?: number;\r\n}\r\n\r\nconst BaseDrawer = ({ isOpen, onClose, title, icon, children, footer, width = 600 }: BaseDrawerProps) => {\r\n const [isModal, setIsModal] = useState(false);\r\n\r\n const toggleModal = () => setIsModal((v) => !v);\r\n\r\n const Header = () => (\r\n <Box sx={{ display: 'flex', alignItems: 'center', p: 2, pt: 3, borderBottom: '1px solid #e0e0e0', mb: 0, flexShrink: 0 }}>\r\n {icon && (\r\n <Box sx={{ mr: 1.5, display: 'flex', alignItems: 'center', fontSize: '1.25rem', color: '#1DBF60' }}>\r\n {icon}\r\n </Box>\r\n )}\r\n {/* Plain span instead of MUI Typography variant=\"h6\" — variant pulls a heavier\r\n fontWeight from the theme that overrides our sx prop in some apps.\r\n Matches Bootstrap's `text-14 fw-semibold` (14px / 600), inline so we don't\r\n drag in a Bootstrap dependency. */}\r\n <span style={{ flexGrow: 1, fontSize: 14, fontWeight: 500, color: '#212121' }}>\r\n {title}\r\n </span>\r\n <IconButton onClick={toggleModal} size=\"small\" sx={{ mr: 1 }} title={isModal ? 'Collapse' : 'Expand'} data-testid=\"expand-collapse-base-drawer-btn\">\r\n {isModal ? <BiCollapse /> : <BiExpand />}\r\n </IconButton>\r\n <IconButton onClick={onClose} size=\"small\" data-testid=\"close-drawer-button\">\r\n <MdClose />\r\n </IconButton>\r\n </Box>\r\n );\r\n\r\n const Footer = () =>\r\n footer ? (\r\n <Box sx={{ flexShrink: 0, p: 2, borderTop: '1px solid #e0e0e0', display: 'flex', justifyContent: 'flex-end', gap: 2 }}>\r\n {footer}\r\n </Box>\r\n ) : null;\r\n\r\n if (isModal) {\r\n return (\r\n <Dialog open={isOpen} onClose={onClose} maxWidth={false} fullWidth PaperProps={{ sx: { display: 'flex', flexDirection: 'column', height: '80vh', boxShadow: 24, width: '750px', maxWidth: '100%' } }}>\r\n <Header />\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 0 }}>{children}</Box>\r\n <Footer />\r\n </Dialog>\r\n );\r\n }\r\n\r\n return (\r\n <Drawer\r\n anchor=\"right\"\r\n open={isOpen}\r\n onClose={onClose}\r\n variant=\"persistent\"\r\n sx={{ zIndex: 900 }}\r\n ModalProps={{ keepMounted: false }}\r\n PaperProps={{\r\n sx: {\r\n width,\r\n position: 'fixed',\r\n top: '64px',\r\n height: 'calc(100% - 74px)',\r\n right: '10px',\r\n borderRadius: '8px',\r\n border: '1px solid #bdbdbd',\r\n boxShadow: 'none',\r\n zIndex: 900,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n }}\r\n >\r\n <Header />\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 0 }}>{children}</Box>\r\n <Footer />\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default BaseDrawer;\r\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport ReactSelect from 'react-select';\nimport { MdBolt, MdCalendarToday, MdArrowBack } from 'react-icons/md';\nimport { GrTrigger } from 'react-icons/gr';\nimport BaseDrawer from './BaseDrawer';\nimport { FlowForgeMessages, WorkflowTemplate } from './types';\nimport { buildSelectStyles } from '../FlowForm/fieldTokens';\n\n/**\n * Option shape consumed by the source picker — matches what FlowForm fields use,\n * so a host's existing `getGroups`-style functions can be reused without adapters.\n */\nexport interface TriggerSourceOption {\n label: string;\n value: string;\n}\n\ninterface TriggerSelectorDrawerProps {\n open: boolean;\n templates: WorkflowTemplate[];\n messages: FlowForgeMessages;\n /** Called when the user finalises picking a trigger (and its sources, if any). */\n onSelect: (template: WorkflowTemplate, sources?: TriggerSourceOption[]) => void;\n onClose: () => void;\n /**\n * Optional async loader for trigger sources. When provided, the drawer goes to\n * stage 2 after a trigger is picked — if the loader returns a non-empty list,\n * the user picks one or more sources before the canvas is seeded.\n *\n * Returns an empty array for triggers that have no sources (the drawer skips\n * stage 2 in that case and seeds the canvas immediately).\n */\n loadTriggerSources?: (triggerKey: string) => Promise<TriggerSourceOption[]>;\n}\n\nconst TriggerSelectorDrawer = ({\n open, templates, messages,\n onSelect, onClose,\n loadTriggerSources,\n}: TriggerSelectorDrawerProps) => {\n // ── Two-stage state machine ─────────────────────────────────────────────────\n const [stage, setStage] = useState<'trigger' | 'sources'>('trigger');\n const [pickedTemplate, setPickedTemplate] = useState<WorkflowTemplate | null>(null);\n const [sourceOptions, setSourceOptions] = useState<TriggerSourceOption[]>([]);\n const [selectedSources, setSelectedSources] = useState<TriggerSourceOption[]>([]);\n const [loadingSources, setLoadingSources] = useState(false);\n const [sourcesError, setSourcesError] = useState<string | null>(null);\n\n // Reset on drawer close so reopening always starts at stage 1.\n useEffect(() => {\n if (!open) {\n setStage('trigger');\n setPickedTemplate(null);\n setSourceOptions([]);\n setSelectedSources([]);\n setLoadingSources(false);\n setSourcesError(null);\n }\n }, [open]);\n\n // Stage 1 → either skip to canvas (no loader / no sources) or advance to stage 2.\n const handleTriggerPick = useCallback(async (template: WorkflowTemplate) => {\n if (!loadTriggerSources) {\n onSelect(template);\n return;\n }\n setPickedTemplate(template);\n setLoadingSources(true);\n setSourcesError(null);\n try {\n const sources = await loadTriggerSources(template.triggerKey);\n if (!sources || sources.length === 0) {\n // Trigger has no sources — seed canvas straight away.\n onSelect(template);\n return;\n }\n setSourceOptions(sources);\n setStage('sources');\n } catch (e) {\n setSourcesError(e instanceof Error ? e.message : 'Failed to load sources.');\n } finally {\n setLoadingSources(false);\n }\n }, [loadTriggerSources, onSelect]);\n\n const handleBack = () => {\n setStage('trigger');\n setPickedTemplate(null);\n setSourceOptions([]);\n setSelectedSources([]);\n setSourcesError(null);\n };\n\n const handleContinue = () => {\n if (!pickedTemplate) return;\n onSelect(pickedTemplate, selectedSources);\n };\n\n // ── Render ──────────────────────────────────────────────────────────────────\n const showingSources = stage === 'sources' && pickedTemplate;\n\n const footer = showingSources ? (\n <>\n <Button type=\"button\" variant=\"outlined\" size=\"small\" onClick={handleBack}>\n {messages.cancel ?? 'Back'}\n </Button>\n <Button\n type=\"button\"\n variant=\"contained\"\n size=\"small\"\n onClick={handleContinue}\n disabled={selectedSources.length === 0}\n >\n {messages.save ?? 'Continue'}\n </Button>\n </>\n ) : null;\n\n return (\n <BaseDrawer\n isOpen={open}\n onClose={onClose}\n title={showingSources ? pickedTemplate.label : messages.addTriggerTitle}\n icon={<GrTrigger />}\n width={500}\n footer={footer}\n >\n <Box sx={{ p: 2 }}>\n {/* ── Stage 1 — trigger list ─────────────────────────────────────── */}\n {!showingSources && (\n <>\n <p className=\"ff-text-muted ff-mb-3\" style={{ fontSize: 13 }}>\n {messages.chooseTrigger}\n </p>\n <div className=\"ff-d-flex ff-flex-column ff-gap-2\">\n {templates.map((t) => (\n <div\n key={t.triggerKey}\n className=\"ff-p-3 ff-rounded ff-border ff-d-flex ff-align-items-start ff-gap-3\"\n style={{ cursor: loadingSources ? 'wait' : 'pointer', transition: 'background 0.15s', opacity: loadingSources ? 0.6 : 1 }}\n onClick={() => !loadingSources && handleTriggerPick(t)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter' && !loadingSources) handleTriggerPick(t); }}\n onMouseEnter={(e) => { if (!loadingSources) e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n <div style={{ color: t.triggerCategory === 'scheduler' ? '#1976d2' : '#f57c00', marginTop: 2, flexShrink: 0 }}>\n {t.triggerCategory === 'scheduler' ? <MdCalendarToday size={18} /> : <MdBolt size={18} />}\n </div>\n <div>\n <div style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{t.label}</div>\n {t.description && <div style={{ fontSize: 12, color: '#757575', marginTop: 2 }}>{t.description}</div>}\n </div>\n </div>\n ))}\n {templates.length === 0 && (\n <p className=\"ff-text-muted ff-text-center\" style={{ fontSize: 13 }}>\n {messages.noTriggers}\n </p>\n )}\n </div>\n\n {loadingSources && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mt: 2, fontSize: 12, color: '#64748b' }}>\n <CircularProgress size={14} />\n <span>Loading sources for the selected trigger…</span>\n </Box>\n )}\n {sourcesError && (\n <p style={{ fontSize: 12, color: '#d32f2f', marginTop: 12 }}>{sourcesError}</p>\n )}\n </>\n )}\n\n {/* ── Stage 2 — source picker (only when sources exist) ──────────── */}\n {showingSources && (\n <>\n <div\n role=\"button\"\n tabIndex={0}\n onClick={handleBack}\n onKeyDown={(e) => { if (e.key === 'Enter') handleBack(); }}\n className=\"ff-d-flex ff-align-items-center ff-gap-1 ff-mb-3\"\n style={{ cursor: 'pointer', color: '#0066cc', fontSize: 13, fontWeight: 500, width: 'fit-content' }}\n >\n <MdArrowBack size={16} />\n <span>{messages.addTriggerTitle}</span>\n </div>\n\n <p className=\"ff-text-muted ff-mb-2\" style={{ fontSize: 13 }}>\n Pick one or more sources for <strong>{pickedTemplate.label}</strong>:\n </p>\n\n <ReactSelect\n isMulti\n options={sourceOptions}\n value={selectedSources}\n onChange={(v) => setSelectedSources((v as TriggerSourceOption[]) ?? [])}\n placeholder=\"Select sources…\"\n menuPosition=\"fixed\"\n menuPortalTarget={typeof document !== 'undefined' ? document.body : undefined}\n styles={buildSelectStyles(false, true)}\n />\n </>\n )}\n </Box>\n </BaseDrawer>\n );\n};\n\nexport default TriggerSelectorDrawer;\n","import React, { ReactNode, useMemo, useState, useEffect } from 'react';\nimport { Box } from '@mui/material';\nimport { MdAddCircleOutline, MdArrowBack, MdChevronRight, MdApps } from 'react-icons/md';\nimport BaseDrawer from './BaseDrawer';\nimport { FlowForgeMessages, NodeDescriptor } from './types';\n\ninterface NodePickerDrawerProps {\n open: boolean;\n availableDescriptors: NodeDescriptor[];\n messages: FlowForgeMessages;\n onSelect: (descriptor: NodeDescriptor) => void;\n onClose: () => void;\n}\n\ninterface AppGroup {\n key: string;\n label: string;\n icon?: ReactNode;\n description?: string;\n descriptors: NodeDescriptor[];\n}\n\nconst cardStyle: React.CSSProperties = {\n cursor: 'pointer',\n transition: 'background 0.15s',\n};\n\nconst cardClass = 'ff-p-3 ff-rounded ff-border ff-d-flex ff-align-items-center ff-gap-3';\n\n/**\n * Workato-style drill-down picker:\n * Stage 1: list of apps (descriptors with `app`) + ungrouped descriptors\n * Stage 2: actions of the selected app, plus a \"Back\" affordance\n *\n * Descriptors without an `app` field appear directly at stage 1 — backward\n * compatible with the old flat-list behaviour.\n */\nconst NodePickerDrawer = ({ open, availableDescriptors, messages, onSelect, onClose }: NodePickerDrawerProps) => {\n // Group descriptors by app.key; descriptors without `app` go in `ungrouped`.\n const { apps, ungrouped } = useMemo(() => {\n const appMap = new Map<string, AppGroup>();\n const flat: NodeDescriptor[] = [];\n for (const d of availableDescriptors) {\n if (d.app) {\n const existing = appMap.get(d.app.key);\n if (existing) {\n existing.descriptors.push(d);\n } else {\n appMap.set(d.app.key, {\n key: d.app.key,\n label: d.app.label,\n icon: d.app.icon,\n description: d.app.description,\n descriptors: [d],\n });\n }\n } else {\n flat.push(d);\n }\n }\n return { apps: [...appMap.values()], ungrouped: flat };\n }, [availableDescriptors]);\n\n const [activeAppKey, setActiveAppKey] = useState<string | null>(null);\n const activeApp = activeAppKey ? apps.find((a) => a.key === activeAppKey) ?? null : null;\n\n // Reset to stage 1 whenever the drawer closes/reopens or descriptors change.\n useEffect(() => {\n if (!open) setActiveAppKey(null);\n }, [open]);\n useEffect(() => { setActiveAppKey(null); }, [availableDescriptors]);\n\n const stage1 = !activeApp;\n\n return (\n <BaseDrawer\n isOpen={open}\n onClose={onClose}\n title={stage1 ? messages.addStepTitle : activeApp.label}\n icon={stage1 ? <MdAddCircleOutline /> : (activeApp.icon as React.ReactNode) ?? <MdApps />}\n width={500}\n >\n <Box sx={{ p: 2 }}>\n {/* Back affordance for stage 2 */}\n {!stage1 && (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => setActiveAppKey(null)}\n onKeyDown={(e) => { if (e.key === 'Enter') setActiveAppKey(null); }}\n className=\"ff-d-flex ff-align-items-center ff-gap-1 ff-mb-3\"\n style={{ cursor: 'pointer', color: '#0066cc', fontSize: 13, fontWeight: 500, width: 'fit-content' }}\n >\n <MdArrowBack size={16} />\n <span>{messages.addStepTitle}</span>\n </div>\n )}\n\n <p className=\"ff-text-muted ff-mb-3\" style={{ fontSize: 13 }}>\n {stage1 ? messages.chooseAction : `Pick an action from ${activeApp.label}`}\n </p>\n\n <div className=\"ff-d-flex ff-flex-column ff-gap-2\">\n {stage1 ? (\n <>\n {/* App cards — drill into stage 2 */}\n {apps.map((a) => (\n <div\n key={`app-${a.key}`}\n className={cardClass}\n style={cardStyle}\n onClick={() => setActiveAppKey(a.key)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') setActiveAppKey(a.key); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {a.icon && <div style={{ flexShrink: 0 }}>{a.icon as ReactNode}</div>}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{a.label}</div>\n <div style={{ fontSize: 12, color: '#757575', marginTop: 2 }}>\n {a.description ?? `${a.descriptors.length} action${a.descriptors.length === 1 ? '' : 's'}`}\n </div>\n </div>\n <MdChevronRight size={18} color=\"#9e9e9e\" />\n </div>\n ))}\n\n {/* Ungrouped descriptors — render inline at stage 1 */}\n {ungrouped.map((d) => (\n <div\n key={d.type}\n className={cardClass}\n style={cardStyle}\n onClick={() => onSelect(d)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') onSelect(d); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {d.icon && <div style={{ flexShrink: 0 }}>{d.icon as ReactNode}</div>}\n <span style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{d.label}</span>\n </div>\n ))}\n\n {apps.length === 0 && ungrouped.length === 0 && (\n <p className=\"ff-text-muted ff-text-center\" style={{ fontSize: 13 }}>{messages.noActions}</p>\n )}\n </>\n ) : (\n /* Stage 2 — actions for the selected app */\n activeApp.descriptors.map((d) => (\n <div\n key={d.type}\n className={cardClass}\n style={cardStyle}\n onClick={() => onSelect(d)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') onSelect(d); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {d.icon && <div style={{ flexShrink: 0 }}>{d.icon as ReactNode}</div>}\n <span style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{d.label}</span>\n </div>\n ))\n )}\n </div>\n </Box>\n </BaseDrawer>\n );\n};\n\nexport default NodePickerDrawer;\n","import React, { useEffect, useState } from 'react';\r\nimport { Box, Button } from '@mui/material';\r\nimport { FlowForm } from '../FlowForm/DynamicFormRenderer';\r\nimport { FieldDescriptor } from '../FlowForm/types';\r\nimport type { ConditionConfig } from '../FlowForm/types/formula';\r\nimport { FlowForgeMessages, NodeDescriptor } from './types';\r\nimport BaseDrawer from './BaseDrawer';\r\n\r\n/** Key under which a node's condition-builder data is stored in its nodeData. */\r\nexport const CONDITION_CONFIG_KEY = '_conditionConfig';\r\n\r\ninterface NodeConfigDrawerProps {\r\n open: boolean;\r\n nodeId: string | null;\r\n descriptor: NodeDescriptor | null;\r\n initialValues?: Record<string, unknown>;\r\n messages: FlowForgeMessages;\r\n onSave: (nodeId: string, values: Record<string, unknown>) => void;\r\n onClose: () => void;\r\n}\r\n\r\nconst NodeConfigDrawer = ({ open, nodeId, descriptor, initialValues, messages, onSave, onClose }: NodeConfigDrawerProps) => {\r\n const [schema, setSchema] = useState<FieldDescriptor[]>([]);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n // Condition-builder data lives outside form `values`; seed it from the saved node.\r\n const [conditionConfig, setConditionConfig] = useState<ConditionConfig>({});\r\n\r\n useEffect(() => {\r\n setConditionConfig((initialValues?.[CONDITION_CONFIG_KEY] as ConditionConfig) ?? {});\r\n }, [initialValues, nodeId]);\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n setError(null);\r\n if (!descriptor || !nodeId) { setSchema([]); setLoading(false); return; }\r\n const fs = descriptor.formSchema;\r\n if (typeof fs === 'function') {\r\n setLoading(true);\r\n fs(nodeId)\r\n .then((s) => {\r\n if (cancelled) return;\r\n setSchema(s);\r\n setLoading(false);\r\n })\r\n .catch((err) => {\r\n if (cancelled) return;\r\n setSchema([]);\r\n setError(err instanceof Error ? err.message : 'Unable to load configuration.');\r\n setLoading(false);\r\n });\r\n } else {\r\n setSchema(fs);\r\n setLoading(false);\r\n }\r\n return () => { cancelled = true; };\r\n }, [descriptor, nodeId]);\r\n\r\n // Stable id so a Save button outside the form can submit it via the HTML5\r\n // `form` attribute. Each open instance gets its own id to avoid collisions\r\n // when multiple drawers are mounted.\r\n const formId = nodeId ? `node-config-form-${nodeId}` : 'node-config-form';\r\n\r\n const hasForm = !loading && !error && schema.length > 0;\r\n\r\n const footer = hasForm ? (\r\n <>\r\n <Button type=\"button\" variant=\"outlined\" size=\"small\" onClick={onClose}>{messages.cancel}</Button>\r\n <Button type=\"submit\" form={formId} variant=\"contained\" size=\"small\">{messages.save}</Button>\r\n </>\r\n ) : null;\r\n\r\n return (\r\n <BaseDrawer\r\n isOpen={open}\r\n onClose={onClose}\r\n title={descriptor?.label ?? messages.configureStep}\r\n icon={descriptor?.icon as React.ReactNode}\r\n width={500}\r\n footer={footer}\r\n >\r\n <Box sx={{ p: 2 }}>\r\n {loading && <p className=\"ff-text-muted\" style={{ fontSize: 13 }}>{messages.loadingConfiguration}</p>}\r\n\r\n {!loading && error && (\r\n <p style={{ fontSize: 13, color: '#d32f2f' }}>{error}</p>\r\n )}\r\n\r\n {!loading && !error && schema.length === 0 && (\r\n <p className=\"ff-text-muted\" style={{ fontSize: 13 }}>{messages.noConfigurationNeeded}</p>\r\n )}\r\n\r\n {hasForm && (\r\n <FlowForm\r\n schema={{ layout: 'flat', fields: schema }}\r\n initialValues={initialValues ?? {}}\r\n formId={formId}\r\n conditionConfig={conditionConfig}\r\n onConditionConfigChange={setConditionConfig}\r\n onSubmit={(values) => {\r\n if (!nodeId) return;\r\n const hasConditions = Object.keys(conditionConfig).length > 0;\r\n onSave(nodeId, { ...values, [CONDITION_CONFIG_KEY]: hasConditions ? conditionConfig : undefined });\r\n onClose();\r\n }}\r\n />\r\n )}\r\n </Box>\r\n </BaseDrawer>\r\n );\r\n};\r\n\r\nexport default NodeConfigDrawer;\r\n","import React, { useEffect, useState } from 'react';\nimport { MdAccountTree, MdErrorOutline } from 'react-icons/md';\nimport BaseDrawer from './BaseDrawer';\nimport { WorkflowState } from './types';\nimport { NodeTypeRegistry } from '../nodeRegistry';\nimport { TemplateRegistry } from '../templateRegistry';\n\ninterface SubWorkflowPreviewDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n workflowId: string | null;\n workflowLabel?: string;\n /** Host-provided async loader — returns the WorkflowState for the given ID */\n onFetchWorkflow: (workflowId: string) => Promise<WorkflowState>;\n}\n\ntype LoadState = { status: 'idle' } | { status: 'loading' } | { status: 'loaded'; state: WorkflowState } | { status: 'error'; message: string };\n\nconst SubWorkflowPreviewDrawer: React.FC<SubWorkflowPreviewDrawerProps> = ({\n isOpen,\n onClose,\n workflowId,\n workflowLabel,\n onFetchWorkflow,\n}) => {\n const [loadState, setLoadState] = useState<LoadState>({ status: 'idle' });\n\n useEffect(() => {\n if (!isOpen || !workflowId) {\n setLoadState({ status: 'idle' });\n return;\n }\n setLoadState({ status: 'loading' });\n onFetchWorkflow(workflowId)\n .then((state) => setLoadState({ status: 'loaded', state }))\n .catch((err) => setLoadState({ status: 'error', message: err?.message ?? 'Failed to load workflow' }));\n }, [isOpen, workflowId, onFetchWorkflow]);\n\n return (\n <BaseDrawer\n isOpen={isOpen}\n onClose={onClose}\n title={workflowLabel ? `Preview: ${workflowLabel}` : 'Sub-Workflow Preview'}\n icon={<MdAccountTree size={18} color=\"#00695c\" />}\n width={700}\n >\n <div style={{ height: '100%', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', padding: 24 }}>\n {loadState.status === 'idle' && (\n <span style={{ color: '#9e9e9e', fontSize: 14 }}>Select a workflow to preview</span>\n )}\n\n {loadState.status === 'loading' && (\n <div style={{ textAlign: 'center', color: '#9e9e9e' }}>\n <div style={{ width: 32, height: 32, borderRadius: '50%', border: '3px solid #e0e0e0', borderTopColor: '#00897b', animation: 'spin 0.8s linear infinite', margin: '0 auto 12px' }} />\n <span style={{ fontSize: 14 }}>Loading workflow…</span>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n )}\n\n {loadState.status === 'error' && (\n <div style={{ textAlign: 'center', color: '#c62828' }}>\n <MdErrorOutline size={32} style={{ marginBottom: 8 }} />\n <p style={{ margin: 0, fontSize: 14 }}>{loadState.message}</p>\n </div>\n )}\n\n {loadState.status === 'loaded' && (\n <div style={{ width: '100%', flex: 1 }}>\n {/* Lazy-import FlowForgeCanvas to avoid circular deps at module level */}\n <SubWorkflowCanvasRenderer state={loadState.state} />\n </div>\n )}\n </div>\n </BaseDrawer>\n );\n};\n\n/**\n * Renders a loaded WorkflowState as a read-only canvas.\n * Uses dynamic import to avoid circular dependency with WorkflowCanvas.tsx.\n */\nconst SubWorkflowCanvasRenderer: React.FC<{ state: WorkflowState }> = ({ state }) => {\n const [Canvas, setCanvas] = useState<React.ComponentType<{ nodeRegistry: NodeTypeRegistry; templateRegistry: TemplateRegistry; initialValue?: WorkflowState; readOnly?: boolean }> | null>(null);\n const [Registries, setRegistries] = useState<{ nodeTypeRegistry: NodeTypeRegistry; templateRegistry: TemplateRegistry } | null>(null);\n\n useEffect(() => {\n Promise.all([\n import('./WorkflowCanvas').then((m) => m.default),\n import('../nodeRegistry').then((m) => m.nodeTypeRegistry),\n import('../templateRegistry').then((m) => m.templateRegistry),\n ]).then(([CanvasComp, nReg, tReg]) => {\n setCanvas(() => CanvasComp);\n setRegistries({ nodeTypeRegistry: nReg, templateRegistry: tReg });\n });\n }, []);\n\n if (!Canvas || !Registries) {\n return <div style={{ color: '#9e9e9e', fontSize: 13, textAlign: 'center' }}>Loading canvas…</div>;\n }\n\n // Fixed height: drawer body has no intrinsic height; ReactFlow requires an explicit container size\n return (\n <div style={{ width: '100%', height: 480, border: '1px solid #e0e0e0', borderRadius: 8, overflow: 'hidden' }}>\n <Canvas\n nodeRegistry={Registries.nodeTypeRegistry}\n templateRegistry={Registries.templateRegistry}\n initialValue={state}\n readOnly\n />\n </div>\n );\n};\n\nexport default SubWorkflowPreviewDrawer;\n","import React, { useCallback, useMemo, useState } from 'react';\r\nimport dagre from '@dagrejs/dagre';\r\nimport ReactFlow, { Background, BackgroundVariant, Controls, Edge, EdgeTypes, MiniMap, Node, NodeTypes } from 'reactflow';\r\nimport LayoutUpdater from './LayoutUpdater';\r\nimport { FlowForgeHeader } from './FlowForgeHeader';\r\nimport 'reactflow/dist/style.css';\r\nimport './WorkflowCanvas.css';\r\nimport { NodeTypeRegistry } from '../nodeRegistry';\r\nimport { TemplateRegistry } from '../templateRegistry';\r\nimport { BranchMap, CanvasSlot, ExecutionRecord, FlowForgeMessages, NodeDescriptor, WorkflowState, WorkflowTemplate } from './types';\r\nimport { WorkflowCanvasContext } from './WorkflowCanvasContext';\r\nimport { builtInNodeTypes } from './nodes';\r\nimport type { BranchRailSpec, BranchRailEntry } from './nodes/BranchRailDecoration';\r\nimport EdgeWithPlusLabel from './edges/EdgeWithPlusLabel';\r\nimport { AddStepContext } from './edges/EdgeWithPlusLabel';\r\nimport PlusEdge from './edges/PlusEdge';\r\nimport PlainEdge from './edges/PlainEdge';\r\nimport LabelPlusEdge from './edges/LabelPlusEdge';\r\nimport GatewayBranchEdge from './edges/GatewayBranchEdge';\r\nimport TriggerSelectorDrawer from './TriggerSelectorDrawer';\r\nimport NodePickerDrawer from './NodePickerDrawer';\r\nimport NodeConfigDrawer from './NodeConfigDrawer';\r\nimport SubWorkflowPreviewDrawer from './SubWorkflowPreviewDrawer';\r\nimport { mergeMessages } from './messages';\r\nimport { OptionsResolversProvider } from '../FlowForm/options/OptionsResolversContext';\r\nimport type { OptionsResolvers } from '../FlowForm/types';\r\n\r\nconst NODE_WIDTH = 350;\r\nconst EDGE_GAP = 70;\r\nconst CANVAS_START_Y = 60;\r\n\r\n// Fallback heights keyed by reactFlowType — used only on first render before DOM measurement\r\nconst FALLBACK_NODE_HEIGHT: Record<string, number> = {\r\n startNode: 40,\r\n endNode: 40,\r\n addTriggerNode: 56,\r\n triggerNode: 110,\r\n actionNode: 90,\r\n filterNode: 90,\r\n approvalNode: 90,\r\n delayNode: 80,\r\n notificationNode: 80,\r\n};\r\n\r\ntype DrawerMode = 'triggerSelect' | 'nodePicker' | 'nodeConfig' | null;\r\n\r\nconst defaultEdgeTypes: EdgeTypes = {\r\n plusEdge: PlusEdge,\r\n labelPlusEdge: LabelPlusEdge,\r\n plainEdge: PlainEdge,\r\n edgeWithPlusLabel: EdgeWithPlusLabel,\r\n gatewayBranchEdge: GatewayBranchEdge,\r\n};\r\n\r\n\r\nfunction buildInitialSlots(): CanvasSlot[] {\r\n return [\r\n { id: 'start', kind: 'start', reactFlowType: 'startNode' },\r\n { id: 'addTrigger', kind: 'addTrigger', reactFlowType: 'addTriggerNode' },\r\n { id: 'end', kind: 'end', reactFlowType: 'endNode' },\r\n ];\r\n}\r\n\r\nfunction applyDagreLayout(\r\n nodes: Node[],\r\n edges: Edge[],\r\n nodeSizes: Record<string, { width: number; height: number }>,\r\n layoutDirection: 'TB' | 'LR' = 'TB',\r\n): Node[] {\r\n const g = new dagre.graphlib.Graph();\r\n g.setGraph({ rankdir: layoutDirection, ranksep: 70, nodesep: 50 });\r\n g.setDefaultEdgeLabel(() => ({}));\r\n\r\n nodes.forEach((node) => {\r\n const size = nodeSizes[node.id] ?? { width: NODE_WIDTH, height: FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80 };\r\n g.setNode(node.id, { width: size.width, height: size.height });\r\n });\r\n\r\n edges.forEach((edge) => g.setEdge(edge.source, edge.target));\r\n\r\n dagre.layout(g);\r\n\r\n return nodes.map((node) => {\r\n const pos = g.node(node.id);\r\n const w = nodeSizes[node.id]?.width ?? NODE_WIDTH;\r\n const h = nodeSizes[node.id]?.height ?? (FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80);\r\n return { ...node, position: { x: pos.x - w / 2, y: pos.y - h / 2 } };\r\n });\r\n}\r\n\r\nconst isBranchingKind = (kind: string) => kind === 'filter' || kind === 'approval';\r\n\r\n// Vertical (Workato-style) branch layout: branches stack top-to-bottom under their\r\n// gateway. Each gateway gets a rail spec describing the Y positions of its branches'\r\n// bullets, which the gateway node renders as a vertical rail with labelled bullets.\r\nfunction applyVerticalBranchLayout(\r\n slots: CanvasSlot[],\r\n branches: BranchMap,\r\n nodes: Node[],\r\n nodeSizes: Record<string, { width: number; height: number }>,\r\n): { nodes: Node[]; railSpecs: Record<string, BranchRailSpec> } {\r\n const CENTER_X = 400;\r\n const INDENT = 180; // wide enough that rail + label sit between gateway card and step\r\n const STEP_GAP = EDGE_GAP;\r\n const BRANCH_GAP = 30;\r\n // Vertical gap between a branch's rail bullet/label and the top of its first step.\r\n // Must match VERTICAL_BULLET_OFFSET in GatewayBranchEdge so the L-routed edge\r\n // (horizontal at bullet Y, then down into step top) lines up with the rail bullet.\r\n const BULLET_TO_STEP_GAP = 30;\r\n\r\n const positions: Record<string, { x: number; y: number }> = {};\r\n const railSpecs: Record<string, BranchRailSpec> = {};\r\n\r\n // Slot lookup for branchLabels\r\n const slotById = new Map<string, CanvasSlot>();\r\n for (const s of slots) slotById.set(s.id, s);\r\n for (const branchMap of Object.values(branches)) {\r\n for (const chain of Object.values(branchMap)) {\r\n for (const s of chain) slotById.set(s.id, s);\r\n }\r\n }\r\n\r\n const placeNode = (id: string, centerX: number, y: number): number => {\r\n const size = nodeSizes[id] ?? { width: NODE_WIDTH, height: 80 };\r\n positions[id] = { x: centerX - size.width / 2, y };\r\n return y + size.height;\r\n };\r\n\r\n const placeChain = (chain: CanvasSlot[], centerX: number, startY: number): number => {\r\n let y = startY;\r\n for (const slot of chain) {\r\n const bottom = placeNode(slot.id, centerX, y);\r\n y = bottom + STEP_GAP;\r\n if (isBranchingKind(slot.kind) && branches[slot.id]) {\r\n y = placeNestedBranches(slot.id, centerX, y);\r\n }\r\n }\r\n return y;\r\n };\r\n\r\n const placeNestedBranches = (parentId: string, parentCenterX: number, startY: number): number => {\r\n const childCenterX = parentCenterX + INDENT;\r\n const branchMap = branches[parentId];\r\n const keys = Object.keys(branchMap);\r\n const parentSlot = slotById.get(parentId);\r\n const labels = parentSlot?.branchLabels ?? { pass: 'Pass', fail: 'Fail' };\r\n const parentPos = positions[parentId];\r\n const parentSize = nodeSizes[parentId] ?? { width: NODE_WIDTH, height: 80 };\r\n const parentBottomY = parentPos.y + parentSize.height;\r\n\r\n const railBranches: BranchRailEntry[] = [];\r\n let y = startY;\r\n keys.forEach((key, idx) => {\r\n const chain = branchMap[key];\r\n // Bullet sits above the first node (step or End); the node top is offset down\r\n // by BULLET_TO_STEP_GAP so the edge L-routes (90° elbow) through the gap.\r\n const bulletY = y;\r\n railBranches.push({\r\n y: bulletY - parentBottomY,\r\n label: labels[key] ?? key,\r\n isPass: idx === 0,\r\n });\r\n y = placeChain(chain, childCenterX, y + BULLET_TO_STEP_GAP);\r\n if (idx < keys.length - 1) y += BRANCH_GAP;\r\n });\r\n\r\n railSpecs[parentId] = {\r\n branches: railBranches,\r\n height: y - parentBottomY,\r\n indent: INDENT,\r\n };\r\n return y;\r\n };\r\n\r\n let cursorY = CANVAS_START_Y;\r\n for (const slot of slots) {\r\n const bottom = placeNode(slot.id, CENTER_X, cursorY);\r\n cursorY = bottom + STEP_GAP;\r\n if (isBranchingKind(slot.kind) && branches[slot.id]) {\r\n cursorY = placeNestedBranches(slot.id, CENTER_X, cursorY);\r\n }\r\n }\r\n\r\n return {\r\n nodes: nodes.map((n) => positions[n.id] ? { ...n, position: positions[n.id] } : n),\r\n railSpecs,\r\n };\r\n}\r\n\r\nfunction makeNode(slot: CanvasSlot): Node {\r\n return {\r\n id: slot.id,\r\n type: slot.reactFlowType,\r\n position: { x: 0, y: 0 },\r\n data: { ...slot.nodeData, ...slot.formData, descriptorType: slot.descriptorType },\r\n draggable: false,\r\n selectable: false,\r\n };\r\n}\r\n\r\nfunction makePlusEdge(\r\n prev: CanvasSlot,\r\n curr: CanvasSlot,\r\n edgeColor: string,\r\n onAddStepClick: ((sourceNodeId: string, ctx: AddStepContext) => void) | null,\r\n branchCtx?: { filterId: string; branch: string },\r\n): Edge {\r\n return {\r\n id: `e-${prev.id}-${curr.id}`,\r\n source: prev.id,\r\n target: curr.id,\r\n type: 'plusEdge',\r\n style: { stroke: edgeColor },\r\n data: {\r\n onAddStepClick,\r\n referenceNodeType: prev.reactFlowType,\r\n ...(branchCtx ?? {}),\r\n },\r\n };\r\n}\r\n\r\nfunction slotsToFlow(\r\n slots: CanvasSlot[],\r\n branches: BranchMap,\r\n onAddStepClick: ((sourceNodeId: string, context: AddStepContext) => void) | null,\r\n nodeMeasurements: Record<string, number>,\r\n theme: FlowForgeTheme = {},\r\n layoutDirection: 'TB' | 'LR' = 'TB',\r\n branchLayout: 'horizontal' | 'vertical' = 'horizontal',\r\n): { nodes: Node[]; edges: Edge[] } {\r\n const edgeColor = theme.edgeColor ?? '#b0bec5';\r\n const nodes: Node[] = [];\r\n const edges: Edge[] = [];\r\n\r\n\r\n // Recursively emit nodes + edges for a branching node's chains\r\n const emitFilterBranches = (filterId: string, branchLabels?: Record<string, string>) => {\r\n const b = branches[filterId];\r\n if (!b) return;\r\n const defaultLabels: Record<string, string> = { pass: 'Pass', fail: 'Fail' };\r\n const labels = branchLabels ?? defaultLabels;\r\n const branchKeys = Object.keys(b);\r\n\r\n const emitChain = (chain: CanvasSlot[], branchKey: string, branchLabel: string, branchIndex: number) => {\r\n if (chain.length === 0) return;\r\n chain.forEach((s) => nodes.push(makeNode(s)));\r\n edges.push({\r\n id: `e-${filterId}-${branchKey}-start`,\r\n source: filterId,\r\n target: chain[0].id,\r\n type: 'gatewayBranchEdge',\r\n style: { stroke: edgeColor },\r\n data: { branch: branchKey, filterId, label: branchLabel, isFirst: branchIndex === 0, onAddStepClick, verticalRouting: branchLayout === 'vertical' },\r\n });\r\n for (let j = 1; j < chain.length; j++) {\r\n if (isBranchingKind(chain[j - 1].kind)) continue;\r\n edges.push(makePlusEdge(chain[j - 1], chain[j], edgeColor, onAddStepClick, { filterId, branch: branchKey }));\r\n }\r\n for (const s of chain) {\r\n if (isBranchingKind(s.kind) && branches[s.id]) emitFilterBranches(s.id, s.branchLabels);\r\n }\r\n };\r\n\r\n branchKeys.forEach((key, idx) => {\r\n emitChain(b[key], key, labels[key] ?? key, idx);\r\n });\r\n };\r\n\r\n for (let i = 0; i < slots.length; i++) {\r\n const slot = slots[i];\r\n nodes.push(makeNode(slot));\r\n\r\n if (i > 0) {\r\n const prev = slots[i - 1];\r\n const isPlain = prev.kind === 'start' || prev.kind === 'addTrigger';\r\n\r\n // Branching nodes connect to branches, not to the next spine slot\r\n if (prev.kind === 'filter' || prev.kind === 'approval') continue;\r\n\r\n edges.push({\r\n id: `e-${prev.id}-${slot.id}`,\r\n source: prev.id,\r\n target: slot.id,\r\n type: isPlain ? 'plainEdge' : 'plusEdge',\r\n style: { stroke: edgeColor },\r\n data: isPlain ? {} : {\r\n onAddStepClick,\r\n referenceNodeType: prev.reactFlowType,\r\n },\r\n });\r\n }\r\n\r\n // If this is a branching node, emit its two branch chains\r\n if ((slot.kind === 'filter' || slot.kind === 'approval') && branches[slot.id]) {\r\n emitFilterBranches(slot.id, slot.branchLabels);\r\n }\r\n }\r\n\r\n const nodeSizes: Record<string, { width: number; height: number }> = {};\r\n nodes.forEach((node) => {\r\n nodeSizes[node.id] = {\r\n width: NODE_WIDTH,\r\n height: nodeMeasurements[node.id] ?? FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80,\r\n };\r\n });\r\n\r\n const hasBranches = Object.keys(branches).length > 0;\r\n\r\n if (!hasBranches) {\r\n // Linear flow — manual positioning gives constant gaps regardless of node height\r\n if (layoutDirection === 'LR') {\r\n const centerY = 300;\r\n let x = CANVAS_START_Y;\r\n const layoutedNodes = nodes.map((node) => {\r\n const w = nodeSizes[node.id].width;\r\n const h = nodeSizes[node.id].height;\r\n const positioned = { ...node, position: { x, y: centerY - h / 2 } };\r\n x += w + EDGE_GAP;\r\n return positioned;\r\n });\r\n return { nodes: layoutedNodes, edges };\r\n }\r\n const centerX = 400;\r\n let y = CANVAS_START_Y;\r\n const layoutedNodes = nodes.map((node) => {\r\n const h = nodeSizes[node.id].height;\r\n const positioned = { ...node, position: { x: centerX - NODE_WIDTH / 2, y } };\r\n y += h + EDGE_GAP;\r\n return positioned;\r\n });\r\n return { nodes: layoutedNodes, edges };\r\n }\r\n\r\n // Branching flow\r\n if (branchLayout === 'vertical') {\r\n const { nodes: layoutedNodes, railSpecs } = applyVerticalBranchLayout(slots, branches, nodes, nodeSizes);\r\n // Inject rail spec into each gateway node's data so the node renders its own rail.\r\n const withRails = layoutedNodes.map((n) =>\r\n railSpecs[n.id] ? { ...n, data: { ...n.data, _branchRail: railSpecs[n.id] } } : n\r\n );\r\n return { nodes: withRails, edges };\r\n }\r\n const layoutedNodes = applyDagreLayout(nodes, edges, nodeSizes, layoutDirection);\r\n return { nodes: layoutedNodes, edges };\r\n}\r\n\r\nexport interface FlowForgeTheme {\r\n primaryColor?: string;\r\n edgeColor?: string;\r\n textColor?: string;\r\n mutedTextColor?: string;\r\n surfaceColor?: string;\r\n borderColor?: string;\r\n dangerColor?: string;\r\n borderRadius?: number;\r\n fontFamily?: string;\r\n /** ReactFlow canvas background style. 'none' hides the background entirely. Default: 'dots' */\r\n background?: 'dots' | 'lines' | 'cross' | 'none';\r\n /** Background dot/line color. Default: '#e0e0e0' */\r\n backgroundColor?: string;\r\n}\r\n\r\n/** All ReactFlow behaviour settings — serialisable as JSON config */\r\nexport interface FlowForgeCanvasOptions {\r\n /** Fit the whole graph into view on mount. Default: true */\r\n fitView?: boolean;\r\n fitViewPadding?: number;\r\n /** Show the zoom-in / zoom-out / fit controls. Default: true */\r\n showControls?: boolean;\r\n /** Show the mini-map overview. Default: false */\r\n showMiniMap?: boolean;\r\n /** Pan the canvas by scrolling (no Ctrl needed). Default: true */\r\n panOnScroll?: boolean;\r\n /** Zoom with the scroll wheel. Default: false */\r\n zoomOnScroll?: boolean;\r\n minZoom?: number;\r\n maxZoom?: number;\r\n /** Snap nodes to a grid while dragging. Default: false */\r\n snapToGrid?: boolean;\r\n snapGrid?: [number, number];\r\n /**\r\n * How branches under a conditional/gateway node are arranged.\r\n * 'horizontal' (default): branches spread side-by-side (Dagre).\r\n * 'vertical': branches stack top-to-bottom, indented right under their parent (Workato style).\r\n */\r\n branchLayout?: 'horizontal' | 'vertical';\r\n /**\r\n * How much of a node's data to show on its card.\r\n * 'full' (default): show configured value badges / the descriptor's custom body.\r\n * 'title-only': show just the node title — for teams that want minimal cards.\r\n */\r\n nodeBody?: 'full' | 'title-only';\r\n}\r\n\r\n/** @deprecated Use FlowForgeCanvasProps */\r\nexport type WorkflowCanvasProps = FlowForgeCanvasProps;\r\n\r\nexport interface FlowForgeCanvasProps {\r\n nodeRegistry: NodeTypeRegistry;\r\n templateRegistry: TemplateRegistry;\r\n /** Pre-populate the canvas from a previously saved WorkflowState. */\r\n initialValue?: WorkflowState;\r\n nodeTypes?: NodeTypes;\r\n edgeTypes?: EdgeTypes;\r\n onSave?: (workflow: WorkflowState) => void;\r\n /** Disables all editing — no add/delete/config, edges have no \"+\" button */\r\n readOnly?: boolean;\r\n /** Brand colors applied across edges, plus button, and node accents */\r\n theme?: FlowForgeTheme;\r\n /** Built-in UI labels for i18n/white-label copy. */\r\n messages?: Partial<FlowForgeMessages>;\r\n /** ReactFlow behaviour settings — all serialisable as plain JSON */\r\n canvasOptions?: FlowForgeCanvasOptions;\r\n /** Replace the trigger selector UI entirely */\r\n renderTriggerSelector?: (templates: WorkflowTemplate[], onSelect: (t: WorkflowTemplate) => void, onClose: () => void) => React.ReactNode;\r\n /**\r\n * Optional async loader for trigger sources. When provided, the default\r\n * trigger selector goes to a second stage after the user picks a trigger:\r\n * the loader is called with the trigger's key, and if it returns a non-empty\r\n * list, the user picks one or more sources before the canvas is seeded.\r\n * Picked sources are merged into the trigger node's `nodeData.sources` so\r\n * TriggerNode can render the \"via [chip] [chip]\" line.\r\n *\r\n * Return `[]` for triggers that have no sources — stage 2 is skipped.\r\n */\r\n loadTriggerSources?: (triggerKey: string) => Promise<Array<{ label: string; value: string }>>;\r\n /** Replace the node picker UI entirely */\r\n renderNodePicker?: (descriptors: NodeDescriptor[], onSelect: (d: NodeDescriptor) => void, onClose: () => void) => React.ReactNode;\r\n /** Replace the node config drawer entirely */\r\n renderNodeConfig?: (descriptor: NodeDescriptor | undefined, slot: CanvasSlot | null, onSave: (id: string, values: Record<string, unknown>) => void, onClose: () => void) => React.ReactNode;\r\n /** Intercept node click — return true to suppress default behaviour */\r\n onNodeClick?: (slot: CanvasSlot) => boolean | void;\r\n /** Global cap on total user task nodes */\r\n maxNodes?: number;\r\n /** Flow layout direction. 'TB' = top-to-bottom (default), 'LR' = left-to-right */\r\n layoutDirection?: 'TB' | 'LR';\r\n /**\r\n * When provided, renders an execution overlay on the canvas nodes:\r\n * green = success, red = failed, grey = skipped/pending.\r\n * Combine with readOnly=true to show a past run without editing.\r\n */\r\n executionRecord?: ExecutionRecord;\r\n /**\r\n * Called when a SubWorkflowNode's \"Preview\" button is clicked.\r\n * Return the WorkflowState for the given workflowId to render it in a drawer.\r\n */\r\n onFetchWorkflow?: (workflowId: string) => Promise<WorkflowState>;\r\n\r\n // ── Built-in header chrome ───────────────────────────────────────────────\r\n /** Hide the built-in top bar (Save / Cancel / name). Default false. */\r\n hideHeader?: boolean;\r\n /** Display name in the header. */\r\n workflowName?: string;\r\n /** Make the header name click-to-edit. */\r\n onWorkflowNameChange?: (name: string) => void;\r\n /** Cancel button shows only when this handler is provided. */\r\n onCancel?: () => void;\r\n /** Status pill text + color (e.g. 'Draft' / 'amber'). */\r\n workflowStatus?: string;\r\n workflowStatusColor?: 'gray' | 'green' | 'amber' | 'red' | string;\r\n /** Override the Save button label. */\r\n saveLabel?: string;\r\n /**\r\n * Host-registered map of named option resolvers. Fields in any node's\r\n * `formSchema` may declare `optionsSource: { id, dependsOn, params }` to\r\n * populate a select asynchronously. Transport-agnostic — the host's\r\n * resolver can use axios, fetch, GraphQL, etc.\r\n *\r\n * Example:\r\n * optionsResolvers={{\r\n * 'app:groups': async ({ appId }, { cursor=0 }) => {\r\n * const res = await api.get(`/groups?startIndex=${cursor}&count=50`);\r\n * return {\r\n * options: res.data.map(g => ({ value: g.uuid, label: g.name })),\r\n * nextCursor: res.data.length === 50 ? cursor + 50 : undefined,\r\n * };\r\n * }\r\n * }}\r\n *\r\n * Resolvers are cached for the session keyed by (resolverId, deps). Use\r\n * `useOptionsResolvers().invalidate(id)` to bust a cache entry manually.\r\n */\r\n optionsResolvers?: OptionsResolvers;\r\n}\r\n\r\nconst FlowForgeCanvas = ({\r\n nodeRegistry,\r\n templateRegistry,\r\n initialValue,\r\n nodeTypes: consumerNodeTypes,\r\n edgeTypes: consumerEdgeTypes,\r\n onSave,\r\n readOnly = false,\r\n theme = {},\r\n messages: messageOverrides,\r\n canvasOptions = {},\r\n renderTriggerSelector,\r\n loadTriggerSources,\r\n renderNodePicker,\r\n renderNodeConfig,\r\n onNodeClick: onNodeClickProp,\r\n maxNodes,\r\n layoutDirection = 'TB',\r\n executionRecord,\r\n onFetchWorkflow,\r\n hideHeader = false,\r\n workflowName,\r\n onWorkflowNameChange,\r\n onCancel,\r\n workflowStatus,\r\n workflowStatusColor,\r\n saveLabel,\r\n optionsResolvers,\r\n}: FlowForgeCanvasProps) => {\r\n const {\r\n fitView: optFitView = true,\r\n fitViewPadding = 0.3,\r\n showControls = true,\r\n showMiniMap = false,\r\n panOnScroll: optPanOnScroll = true,\r\n zoomOnScroll: optZoomOnScroll = false,\r\n minZoom = 0.25,\r\n maxZoom = 2,\r\n snapToGrid = false,\r\n snapGrid = [15, 15] as [number, number],\r\n branchLayout = 'horizontal',\r\n nodeBody = 'full',\r\n } = canvasOptions;\r\n const messages = useMemo(() => mergeMessages(messageOverrides), [messageOverrides]);\r\n const [slots, setSlots] = useState<CanvasSlot[]>(() => initialValue?.slots ?? buildInitialSlots());\r\n const [branches, setBranches] = useState<BranchMap>(() => initialValue?.branches ?? {});\r\n const [drawerMode, setDrawerMode] = useState<DrawerMode>(null);\r\n const [activeSlotId, setActiveSlotId] = useState<string | null>(null);\r\n const [insertAfterSourceId, setInsertAfterSourceId] = useState<string | null>(null);\r\n const [insertBranchCtx, setInsertBranchCtx] = useState<{ filterId: string; branch: string } | null>(null);\r\n const [subWorkflowPreview, setSubWorkflowPreview] = useState<{ workflowId: string; workflowLabel?: string } | null>(null);\r\n const [selectedTemplate, setSelectedTemplate] = useState<WorkflowTemplate | null>(() => {\r\n const triggerSlot = initialValue?.slots.find((slot) => slot.kind === 'triggerFixed');\r\n const triggerKey = triggerSlot?.id.startsWith('trigger-') ? triggerSlot.id.slice('trigger-'.length) : undefined;\r\n return triggerKey ? templateRegistry.lookup(triggerKey) ?? null : null;\r\n });\r\n const [nodeMeasurements, setNodeMeasurements] = useState<Record<string, number>>({});\r\n\r\n const handleHeightsReady = useCallback((heights: Record<string, number>) => {\r\n setNodeMeasurements(heights);\r\n }, []);\r\n\r\n const mergedNodeTypes = useMemo<NodeTypes>(() => ({ ...builtInNodeTypes, ...consumerNodeTypes }), [consumerNodeTypes]);\r\n const mergedEdgeTypes = useMemo<EdgeTypes>(() => ({ ...defaultEdgeTypes, ...consumerEdgeTypes }), [consumerEdgeTypes]);\r\n\r\n // count tasks across main spine + all branch chains\r\n const userTaskCount = useMemo(() => {\r\n const spineCount = slots.filter((s) => s.kind === 'userTask').length;\r\n const branchCount = Object.values(branches).flatMap((b) => Object.values(b).flat()).filter((s) => s.kind === 'userTask').length;\r\n return spineCount + branchCount;\r\n }, [slots, branches]);\r\n const effectiveMaxNodes = maxNodes ?? selectedTemplate?.maxTasks;\r\n const atMaxNodes = effectiveMaxNodes !== undefined && userTaskCount >= effectiveMaxNodes;\r\n\r\n // find a slot in spine or any branch\r\n const findSlot = useCallback((slotId: string): CanvasSlot | null => {\r\n const spineSlot = slots.find((s) => s.id === slotId);\r\n if (spineSlot) return spineSlot;\r\n for (const b of Object.values(branches)) {\r\n const found = Object.values(b).flat().find((s) => s.id === slotId);\r\n if (found) return found;\r\n }\r\n return null;\r\n }, [slots, branches]);\r\n\r\n const onEditNode = useCallback((slotId: string) => {\r\n if (readOnly) return;\r\n setActiveSlotId(slotId);\r\n setDrawerMode('nodeConfig');\r\n }, [readOnly]);\r\n\r\n const onDeleteNode = useCallback((slotId: string) => {\r\n if (readOnly) return;\r\n // check spine first\r\n if (slots.some((s) => s.id === slotId)) {\r\n const removed = slots.find((s) => s.id === slotId);\r\n // deleting the trigger resets the canvas to initial state\r\n if (removed?.kind === 'triggerFixed') {\r\n setSlots(buildInitialSlots());\r\n setBranches({});\r\n setSelectedTemplate(null);\r\n return;\r\n }\r\n setSlots((prev) => {\r\n const next = prev.filter((s) => s.id !== slotId);\r\n if (isBranchingKind(removed?.kind ?? '') && !next.some((s) => s.kind === 'end')) {\r\n return [...next, { id: 'end', kind: 'end', reactFlowType: 'endNode' }];\r\n }\r\n return next;\r\n });\r\n setBranches((prev) => {\r\n const next = { ...prev };\r\n const collectAll = (id: string) => {\r\n if (!next[id]) return;\r\n Object.values(next[id]).flat().filter((s) => isBranchingKind(s.kind)).forEach((s) => collectAll(s.id));\r\n delete next[id];\r\n };\r\n collectAll(slotId);\r\n return next;\r\n });\r\n return;\r\n }\r\n // else it's in a branch chain\r\n setBranches((prev) => {\r\n // collect all nested filter IDs under a chain recursively\r\n const collectNestedFilterIds = (chain: CanvasSlot[], map: BranchMap): string[] => {\r\n const ids: string[] = [];\r\n for (const s of chain) {\r\n if (isBranchingKind(s.kind) && map[s.id]) {\r\n ids.push(s.id);\r\n Object.values(map[s.id]).forEach((c) => ids.push(...collectNestedFilterIds(c, map)));\r\n }\r\n }\r\n return ids;\r\n };\r\n\r\n const next = { ...prev };\r\n for (const filterId of Object.keys(next)) {\r\n for (const branch of Object.keys(next[filterId])) {\r\n const chain = next[filterId][branch];\r\n const idx = chain.findIndex((s) => s.id === slotId);\r\n if (idx === -1 || chain[idx].kind === 'end') continue;\r\n\r\n const deleted = chain[idx];\r\n let newChain = chain.filter((s) => s.id !== slotId);\r\n\r\n // if deleted node was a filter, restore End to this chain and remove its sub-branches\r\n if (deleted.kind === 'filter') {\r\n const nestedIds = deleted.id in next ? collectNestedFilterIds([deleted], next) : [];\r\n nestedIds.forEach((id) => delete next[id]);\r\n delete next[deleted.id];\r\n // restore End if chain has none\r\n if (!newChain.some((s) => s.kind === 'end')) {\r\n newChain = [...newChain, { id: `end-${filterId}-${branch}`, kind: 'end', reactFlowType: 'endNode' }];\r\n }\r\n }\r\n\r\n next[filterId] = { ...next[filterId], [branch]: newChain };\r\n return next;\r\n }\r\n }\r\n return next;\r\n });\r\n }, [readOnly, slots]);\r\n\r\n const onClickAddTrigger = useCallback(() => {\r\n if (readOnly) return;\r\n setDrawerMode('triggerSelect');\r\n }, [readOnly]);\r\n\r\n const handleAddStepClick = useCallback((sourceNodeId: string, context: AddStepContext) => {\r\n if (readOnly || atMaxNodes) return;\r\n setInsertAfterSourceId(sourceNodeId);\r\n setInsertBranchCtx(context.filterId && context.branch ? { filterId: context.filterId, branch: context.branch } : null);\r\n setDrawerMode('nodePicker');\r\n }, [readOnly, atMaxNodes]);\r\n\r\n const handleTriggerSelect = useCallback((template: WorkflowTemplate, pickedSources?: Array<{ label: string; value: string }>) => {\r\n setSelectedTemplate(template);\r\n setDrawerMode(null);\r\n\r\n // If the template declares a skeletonState, use it verbatim — that lets\r\n // templates pre-seed fixed steps (e.g. \"User Created\" event) alongside the\r\n // trigger. If the user picked sources (stage 2 of the trigger drawer),\r\n // merge them into the trigger slot's nodeData so TriggerNode shows the\r\n // \"via [chip] [chip]\" line.\r\n if (template.skeletonState) {\r\n const hasPickedSources = Array.isArray(pickedSources) && pickedSources.length > 0;\r\n const skeletonSlots = (template.skeletonState.slots ?? []).map((s) => {\r\n if (s.kind !== 'triggerFixed') return s;\r\n // Always merge the template's label into the trigger slot's nodeData\r\n // (unless the skeleton already provided one). This guarantees the\r\n // TriggerNode body shows the human-curated title (e.g. \"PAM Access\r\n // Request\") instead of an all-caps fallback from the eventType code.\r\n return {\r\n ...s,\r\n nodeData: {\r\n label: template.label,\r\n ...(s.nodeData ?? {}),\r\n ...(hasPickedSources && { sources: pickedSources }),\r\n },\r\n };\r\n });\r\n setBranches(template.skeletonState.branches ?? {});\r\n setSlots(skeletonSlots);\r\n return;\r\n }\r\n\r\n setBranches({});\r\n const hasPickedSources = Array.isArray(pickedSources) && pickedSources.length > 0;\r\n setSlots([\r\n { id: 'start', kind: 'start', reactFlowType: 'startNode' },\r\n {\r\n id: `trigger-${template.triggerKey}`,\r\n kind: 'triggerFixed',\r\n reactFlowType: 'triggerNode',\r\n nodeData: {\r\n label: template.label,\r\n source: template.source,\r\n eventType: template.triggerKey,\r\n type: template.triggerCategory === 'scheduler' ? 'scheduler' : 'event',\r\n ...(hasPickedSources && { sources: pickedSources }),\r\n },\r\n deletable: false,\r\n },\r\n { id: 'end', kind: 'end', reactFlowType: 'endNode' },\r\n ]);\r\n }, []);\r\n\r\n /**\r\n * Compute the InsertContext for the current pending insertion point —\r\n * upstream/downstream slots, branch info, active template. Used by\r\n * descriptors' position-aware `canInsert` / `insertAfter` / `insertBefore`.\r\n */\r\n const buildInsertContext = useCallback((): import('./types').InsertContext => {\r\n const ctx: import('./types').InsertContext = {\r\n insertAfterSlot: null,\r\n upstreamSlots: [],\r\n downstreamSlots: [],\r\n branch: insertBranchCtx,\r\n template: selectedTemplate,\r\n };\r\n if (!insertAfterSourceId) return ctx;\r\n\r\n if (insertBranchCtx) {\r\n // Inside a branch — upstream = spine up to (and including) the filter +\r\n // branch slots up to the click site; downstream = remaining branch slots.\r\n const { filterId, branch } = insertBranchCtx;\r\n const spineIdx = slots.findIndex((s) => s.id === filterId);\r\n const spineUp = spineIdx >= 0 ? slots.slice(0, spineIdx + 1) : [];\r\n const branchChain = branches[filterId]?.[branch] ?? [];\r\n const branchIdx = branchChain.findIndex((s) => s.id === insertAfterSourceId);\r\n const branchUp = branchIdx >= 0 ? branchChain.slice(0, branchIdx + 1) : [];\r\n ctx.upstreamSlots = [...spineUp, ...branchUp];\r\n ctx.downstreamSlots = branchIdx >= 0 ? branchChain.slice(branchIdx + 1) : branchChain;\r\n ctx.insertAfterSlot = branchUp[branchUp.length - 1] ?? null;\r\n return ctx;\r\n }\r\n\r\n // Spine\r\n const idx = slots.findIndex((s) => s.id === insertAfterSourceId);\r\n ctx.upstreamSlots = idx >= 0 ? slots.slice(0, idx + 1) : [];\r\n ctx.downstreamSlots = idx >= 0 ? slots.slice(idx + 1) : [];\r\n ctx.insertAfterSlot = ctx.upstreamSlots[ctx.upstreamSlots.length - 1] ?? null;\r\n return ctx;\r\n }, [slots, branches, insertAfterSourceId, insertBranchCtx, selectedTemplate]);\r\n\r\n /** Token match against descriptorType / id / kind — used by insertAfter / insertBefore. */\r\n const slotMatchesToken = (slot: CanvasSlot, token: string): boolean =>\r\n slot.descriptorType === token || slot.id === token || slot.kind === token;\r\n\r\n const getAvailableDescriptors = useCallback((): NodeDescriptor[] => {\r\n const all = nodeRegistry.list();\r\n const allowed = selectedTemplate?.availableTasks\r\n ? all.filter((d) => selectedTemplate.availableTasks!.includes(d.type))\r\n : all;\r\n const ctx = buildInsertContext();\r\n return allowed.filter((descriptor) => {\r\n // maxPerWorkflow filter (existing)\r\n if (descriptor.maxPerWorkflow !== undefined) {\r\n const currentCount = slots.filter((s) => s.descriptorType === descriptor.type).length\r\n + Object.values(branches)\r\n .flatMap((branchMap) => Object.values(branchMap).flat())\r\n .filter((s) => s.descriptorType === descriptor.type)\r\n .length;\r\n if (currentCount >= descriptor.maxPerWorkflow) return false;\r\n }\r\n\r\n // Position-aware filters\r\n if (descriptor.canInsert) {\r\n // Full custom rule — overrides insertAfter / insertBefore.\r\n return descriptor.canInsert(ctx);\r\n }\r\n if (descriptor.insertAfter && descriptor.insertAfter.length > 0) {\r\n const ok = ctx.upstreamSlots.some((s) =>\r\n descriptor.insertAfter!.some((t) => slotMatchesToken(s, t)),\r\n );\r\n if (!ok) return false;\r\n }\r\n if (descriptor.insertBefore && descriptor.insertBefore.length > 0) {\r\n const ok = ctx.downstreamSlots.some((s) =>\r\n descriptor.insertBefore!.some((t) => slotMatchesToken(s, t)),\r\n );\r\n if (!ok) return false;\r\n }\r\n return true;\r\n });\r\n }, [nodeRegistry, selectedTemplate, slots, branches, buildInsertContext]);\r\n\r\n const handleNodeTypeSelect = useCallback((descriptor: NodeDescriptor) => {\r\n if (!insertAfterSourceId) return;\r\n const newTaskId = `${descriptor.type}-${Date.now()}`;\r\n const isBranching = descriptor.reactFlowType === 'filterNode' || descriptor.reactFlowType === 'approvalNode' || descriptor.reactFlowType === 'conditionBranchNode';\r\n const branchLabels: Record<string, string> = descriptor.branchLabels ?? { pass: 'Pass', fail: 'Fail' };\r\n\r\n const taskSlot: CanvasSlot = {\r\n id: newTaskId,\r\n kind: isBranching ? (descriptor.reactFlowType === 'approvalNode' ? 'approval' : 'filter') : 'userTask',\r\n reactFlowType: descriptor.reactFlowType,\r\n descriptorType: descriptor.type,\r\n formData: {},\r\n nodeData: { title: descriptor.label },\r\n deletable: true,\r\n branchLabels,\r\n };\r\n\r\n if (insertBranchCtx) {\r\n // inserting into a branch chain\r\n const { filterId, branch } = insertBranchCtx;\r\n setBranches((prev) => {\r\n const chain = [...prev[filterId][branch]];\r\n if (isBranching) {\r\n // filter takes over termination — remove End from parent chain, init new filter's branches\r\n const chainWithoutEnd = chain.filter((s) => s.kind !== 'end');\r\n const insertIdx = chainWithoutEnd.findIndex((s) => s.id === insertAfterSourceId);\r\n const at = insertIdx === -1 ? chainWithoutEnd.length : insertIdx + 1;\r\n chainWithoutEnd.splice(at, 0, taskSlot);\r\n return {\r\n ...prev,\r\n [filterId]: { ...prev[filterId], [branch]: chainWithoutEnd },\r\n [newTaskId]: Object.fromEntries(\r\n Object.keys(branchLabels).map((k) => [k, [{ id: `end-${newTaskId}-${k}`, kind: 'end', reactFlowType: 'endNode' }]])\r\n ),\r\n };\r\n }\r\n // regular node — insert before End\r\n const sourceIdx = chain.findIndex((s) => s.id === insertAfterSourceId);\r\n const endIdx = chain.findIndex((s) => s.kind === 'end');\r\n const at = sourceIdx === -1\r\n ? (endIdx === -1 ? chain.length : endIdx)\r\n : sourceIdx + 1;\r\n chain.splice(at, 0, taskSlot);\r\n return { ...prev, [filterId]: { ...prev[filterId], [branch]: chain } };\r\n });\r\n } else {\r\n // inserting into main spine\r\n if (isBranching) {\r\n // filter takes over from here — remove end from spine, add branch ends\r\n setSlots((prev) => {\r\n const idx = prev.findIndex((s) => s.id === insertAfterSourceId);\r\n const spineWithoutEnd = prev.filter((s) => s.kind !== 'end');\r\n return [...spineWithoutEnd.slice(0, idx + 1), taskSlot];\r\n });\r\n setBranches((prev) => ({\r\n ...prev,\r\n [newTaskId]: Object.fromEntries(\r\n Object.keys(branchLabels).map((k) => [k, [{ id: `end-${newTaskId}-${k}`, kind: 'end', reactFlowType: 'endNode' }]])\r\n ),\r\n }));\r\n } else {\r\n setSlots((prev) => {\r\n const idx = prev.findIndex((s) => s.id === insertAfterSourceId);\r\n if (idx === -1) return prev;\r\n return [...prev.slice(0, idx + 1), taskSlot, ...prev.slice(idx + 1)];\r\n });\r\n }\r\n }\r\n\r\n setInsertAfterSourceId(null);\r\n setInsertBranchCtx(null);\r\n setActiveSlotId(newTaskId);\r\n setDrawerMode('nodeConfig');\r\n }, [insertAfterSourceId, insertBranchCtx]);\r\n\r\n const handleNodeSave = useCallback((nodeId: string, values: Record<string, unknown>) => {\r\n /**\r\n * Format a branch label with the IF / ELSE IF / ELSE prefix based on the\r\n * config's `kind` field. Backward-compatible: if `kind` is missing, the\r\n * label is rendered unchanged (legacy \"Branch N\" / \"Default\" style).\r\n */\r\n const formatBranchLabel = (cfg: { kind?: string; key: string; label?: string }): string => {\r\n const base = cfg.label || cfg.key;\r\n switch (cfg.kind) {\r\n case 'if': return `IF · ${base}`;\r\n case 'elseif': return `ELSE IF · ${base}`;\r\n case 'else': return base.toUpperCase() === 'ELSE' ? base : `ELSE · ${base}`;\r\n default: return base;\r\n }\r\n };\r\n\r\n // For conditionBranch nodes: sync the BranchMap keys to match formData.branchConfigs\r\n const syncConditionBranchKeys = (prevBranches: BranchMap): BranchMap => {\r\n const slot = findSlot(nodeId);\r\n if (slot?.descriptorType !== 'conditionBranch') return prevBranches;\r\n const configs = (values.branchConfigs as Array<{ kind?: string; key: string; label?: string }> | undefined) ?? [];\r\n const newKeys = configs.map((c) => c.key).filter(Boolean);\r\n if (newKeys.length === 0) return prevBranches;\r\n const existing = prevBranches[nodeId] ?? {};\r\n const synced: BranchMap[string] = {};\r\n newKeys.forEach((k) => {\r\n synced[k] = existing[k] ?? [{ id: `end-${nodeId}-${k}`, kind: 'end', reactFlowType: 'endNode' }];\r\n });\r\n return { ...prevBranches, [nodeId]: synced };\r\n };\r\n\r\n const patchSlotBranchLabels = (slot: CanvasSlot, values: Record<string, unknown>): CanvasSlot => {\r\n if (slot.descriptorType !== 'conditionBranch') return { ...slot, formData: values };\r\n const configs = (values.branchConfigs as Array<{ kind?: string; key: string; label?: string }> | undefined) ?? [];\r\n const labelMap: Record<string, string> = {};\r\n configs.forEach((c) => { if (c.key) labelMap[c.key] = formatBranchLabel(c); });\r\n return { ...slot, formData: values, branchLabels: labelMap };\r\n };\r\n\r\n // try spine first\r\n if (slots.some((s) => s.id === nodeId)) {\r\n setBranches((prevBranches) => {\r\n const synced = syncConditionBranchKeys(prevBranches);\r\n setSlots((prev) =>\r\n prev.map((s) =>\r\n s.id === nodeId ? patchSlotBranchLabels(s, values) : s,\r\n ),\r\n );\r\n return synced;\r\n });\r\n return;\r\n }\r\n // else update in branch\r\n setBranches((prev) => {\r\n const syncedOuter = syncConditionBranchKeys(prev);\r\n const next = { ...syncedOuter };\r\n for (const filterId of Object.keys(next)) {\r\n const updateChain = (chain: CanvasSlot[]) => chain.map((s) => s.id === nodeId ? patchSlotBranchLabels(s, values) : s);\r\n for (const branchKey of Object.keys(next[filterId])) {\r\n if (!next[filterId][branchKey].some((s) => s.id === nodeId)) continue;\r\n next[filterId] = { ...next[filterId], [branchKey]: updateChain(next[filterId][branchKey]) };\r\n return next;\r\n }\r\n }\r\n return next;\r\n });\r\n // onSave intentionally NOT fired from this state setter. The contract\r\n // is: onSave fires ONLY when the user clicks the header Save button\r\n // (via handleHeaderSave). Auto-firing here on every node config save\r\n // (a) caused 3× duplicate POSTs (React StrictMode double-invocation),\r\n // (b) is a state-mutation side-effect (anti-pattern), and (c) is\r\n // wrong UX — users expect Save to be deliberate.\r\n }, [slots, branches, findSlot]);\r\n\r\n const activeSlot = useMemo(() => findSlot(activeSlotId ?? ''), [findSlot, activeSlotId]);\r\n const activeDescriptor = useMemo(() => {\r\n if (!activeSlot?.descriptorType) return null;\r\n return nodeRegistry.forType(activeSlot.descriptorType) ?? null;\r\n }, [activeSlot, nodeRegistry]);\r\n\r\n const { nodes: rawNodes, edges } = useMemo(\r\n () => slotsToFlow(slots, branches, readOnly ? null : handleAddStepClick, nodeMeasurements, theme, layoutDirection, branchLayout),\r\n [slots, branches, readOnly, handleAddStepClick, nodeMeasurements, theme, layoutDirection, branchLayout],\r\n );\r\n\r\n const nodes = useMemo(() => {\r\n const stepByNodeId = executionRecord\r\n ? new Map(executionRecord.steps.map((s) => [s.nodeId, s]))\r\n : null;\r\n\r\n return rawNodes.map((n) => {\r\n let extra: Record<string, unknown> = {};\r\n\r\n if (stepByNodeId) {\r\n const step = stepByNodeId.get(n.id);\r\n if (step) extra = { _executionStatus: step.status, _executionError: step.error };\r\n }\r\n\r\n // Inject preview callback for sub-workflow nodes\r\n if (n.type === 'subWorkflowNode' && onFetchWorkflow) {\r\n extra.onPreview = (workflowId: string) => {\r\n const slot = findSlot(n.id);\r\n setSubWorkflowPreview({ workflowId, workflowLabel: (slot?.formData?.workflowLabel as string) ?? undefined });\r\n };\r\n }\r\n\r\n return Object.keys(extra).length > 0 ? { ...n, data: { ...n.data, ...extra } } : n;\r\n });\r\n }, [rawNodes, executionRecord, onFetchWorkflow, findSlot]);\r\n\r\n const handlers = useMemo(() => ({ onEditNode, onDeleteNode, onAddStep: () => {}, onClickAddTrigger, messages, nodeRegistry, nodeBody }), [onEditNode, onDeleteNode, onClickAddTrigger, messages, nodeRegistry, nodeBody]);\r\n\r\n // Header Save click → fire onSave with the current canvas state. Built-in\r\n // so consumers don't write Save chrome per integration. Opt out via\r\n // `hideHeader` if you want to render your own.\r\n const handleHeaderSave = useCallback(async () => {\r\n if (onSave) await onSave({ slots, branches });\r\n }, [onSave, slots, branches]);\r\n\r\n return (\r\n <OptionsResolversProvider resolvers={optionsResolvers}>\r\n <WorkflowCanvasContext.Provider value={handlers}>\r\n <div\r\n className=\"flowforge-canvas\"\r\n style={{\r\n width: '100%', height: '100%', position: 'relative',\r\n display: 'flex', flexDirection: 'column',\r\n // CSS variable consumed by edge SCSS for primary/hover color\r\n ['--ff-primary' as string]: theme.primaryColor ?? '#1dbf60',\r\n ['--ff-edge-color' as string]: theme.edgeColor ?? '#b0bec5',\r\n ['--ff-text' as string]: theme.textColor ?? '#212121',\r\n ['--ff-muted' as string]: theme.mutedTextColor ?? '#9ca3af',\r\n ['--ff-surface' as string]: theme.surfaceColor ?? '#fff',\r\n ['--ff-border' as string]: theme.borderColor ?? '#dee2e6',\r\n ['--ff-danger' as string]: theme.dangerColor ?? '#d32f2f',\r\n ['--ff-radius' as string]: `${theme.borderRadius ?? 6}px`,\r\n ['--ff-font-family' as string]: theme.fontFamily,\r\n }}\r\n >\r\n {!hideHeader && (onSave || onCancel || workflowName) && (\r\n <FlowForgeHeader\r\n workflowName={workflowName}\r\n onWorkflowNameChange={onWorkflowNameChange}\r\n status={workflowStatus}\r\n statusColor={workflowStatusColor}\r\n onSave={onSave ? handleHeaderSave : undefined}\r\n onCancel={onCancel}\r\n saveLabel={saveLabel}\r\n />\r\n )}\r\n <div style={{ flex: 1, minHeight: 0, position: 'relative' }}>\r\n <ReactFlow\r\n nodes={nodes}\r\n edges={edges}\r\n nodeTypes={mergedNodeTypes}\r\n edgeTypes={mergedEdgeTypes}\r\n fitView={optFitView}\r\n fitViewOptions={{ padding: fitViewPadding }}\r\n nodesDraggable={false}\r\n nodesConnectable={false}\r\n panOnScroll={optPanOnScroll}\r\n zoomOnScroll={optZoomOnScroll}\r\n minZoom={minZoom}\r\n maxZoom={maxZoom}\r\n snapToGrid={snapToGrid}\r\n snapGrid={snapGrid}\r\n proOptions={{ hideAttribution: true }}\r\n onNodeClick={(_event, node) => {\r\n const slot = findSlot(node.id);\r\n if (!slot) return;\r\n if (onNodeClickProp?.(slot)) return;\r\n if (slot.kind === 'addTrigger' || slot.kind === 'triggerFixed') onClickAddTrigger();\r\n else if (slot.kind === 'userTask' || slot.kind === 'filter' || slot.kind === 'approval') onEditNode(node.id);\r\n }}\r\n >\r\n {theme.background !== 'none' && (\r\n <Background\r\n variant={theme.background as unknown as BackgroundVariant | undefined}\r\n color={theme.backgroundColor ?? '#e0e0e0'}\r\n gap={20}\r\n />\r\n )}\r\n {showControls && <Controls showInteractive={false} />}\r\n {showMiniMap && <MiniMap zoomable pannable />}\r\n <LayoutUpdater onHeightsReady={handleHeightsReady} nodeCount={nodes.length} />\r\n </ReactFlow>\r\n\r\n {renderTriggerSelector\r\n ? drawerMode === 'triggerSelect' && renderTriggerSelector(templateRegistry.list(), handleTriggerSelect, () => setDrawerMode(null))\r\n : <TriggerSelectorDrawer open={drawerMode === 'triggerSelect'} templates={templateRegistry.list()} messages={messages} onSelect={handleTriggerSelect} onClose={() => setDrawerMode(null)} loadTriggerSources={loadTriggerSources} />\r\n }\r\n\r\n {renderNodePicker\r\n ? drawerMode === 'nodePicker' && renderNodePicker(getAvailableDescriptors(), handleNodeTypeSelect, () => { setDrawerMode(null); setInsertAfterSourceId(null); })\r\n : <NodePickerDrawer open={drawerMode === 'nodePicker'} availableDescriptors={getAvailableDescriptors()} messages={messages} onSelect={handleNodeTypeSelect} onClose={() => { setDrawerMode(null); setInsertAfterSourceId(null); }} />\r\n }\r\n\r\n {renderNodeConfig\r\n ? drawerMode === 'nodeConfig' && renderNodeConfig(activeDescriptor ?? undefined, activeSlot, handleNodeSave, () => setDrawerMode(null))\r\n : <NodeConfigDrawer open={drawerMode === 'nodeConfig'} nodeId={activeSlotId} descriptor={activeDescriptor} initialValues={activeSlot?.formData} messages={messages} onSave={handleNodeSave} onClose={() => setDrawerMode(null)} />\r\n }\r\n {onFetchWorkflow && subWorkflowPreview && (\r\n <SubWorkflowPreviewDrawer\r\n isOpen={!!subWorkflowPreview}\r\n onClose={() => setSubWorkflowPreview(null)}\r\n workflowId={subWorkflowPreview.workflowId}\r\n workflowLabel={subWorkflowPreview.workflowLabel}\r\n onFetchWorkflow={onFetchWorkflow}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </WorkflowCanvasContext.Provider>\r\n </OptionsResolversProvider>\r\n );\r\n};\r\n\r\nexport { FlowForgeCanvas as WorkflowCanvas };\r\nexport default FlowForgeCanvas;\r\n","import React, { useState, useMemo } from 'react';\nimport { MdSearch, MdAdd, MdCategory } from 'react-icons/md';\nimport { WorkflowTemplate } from './types';\nimport { TRIGGER_CATEGORY_STYLE } from './canvasTokens';\n\ninterface WorkflowTemplateLibraryProps {\n templates: WorkflowTemplate[];\n onSelectTemplate: (template: WorkflowTemplate) => void;\n onStartFromScratch?: () => void;\n}\n\nconst CATEGORY_ALL = 'All';\n\nfunction TemplateCard({ template, onSelect }: { template: WorkflowTemplate; onSelect: () => void }) {\n const badge = template.triggerCategory ? TRIGGER_CATEGORY_STYLE[template.triggerCategory] : null;\n const nodeCount = template.skeletonState?.slots.filter((s) => s.kind === 'userTask').length ?? 0;\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onSelect}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') onSelect(); }}\n style={{\n border: '1.5px solid #e0e0e0',\n borderRadius: 10,\n padding: '16px',\n background: '#fff',\n cursor: 'pointer',\n transition: 'border-color 0.15s, box-shadow 0.15s',\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n outline: 'none',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#1976d2';\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 2px 8px rgba(25,118,210,0.12)';\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#e0e0e0';\n (e.currentTarget as HTMLDivElement).style.boxShadow = 'none';\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'flex-start', gap: 10 }}>\n {template.icon && (\n <div style={{ flexShrink: 0, width: 36, height: 36, borderRadius: 8, background: '#f5f5f5', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n {template.icon as React.ReactNode}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 600, fontSize: 14, color: '#212121', marginBottom: 2 }}>{template.label}</div>\n {template.description && (\n <div style={{ fontSize: 12, color: '#757575', lineHeight: 1.4, display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical', overflow: 'hidden' }}>\n {template.description}\n </div>\n )}\n </div>\n </div>\n\n {/* Tags + meta row */}\n <div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap', gap: 4 }}>\n {badge && (\n <span style={{ fontSize: 10, fontWeight: 600, padding: '2px 7px', borderRadius: 10, background: badge.bg, color: badge.color }}>\n {badge.label}\n </span>\n )}\n {template.tags?.map((tag) => (\n <span key={tag} style={{ fontSize: 10, padding: '2px 7px', borderRadius: 10, background: '#f5f5f5', color: '#616161' }}>\n {tag}\n </span>\n ))}\n {nodeCount > 0 && (\n <span style={{ fontSize: 10, color: '#9e9e9e', marginLeft: 'auto' }}>\n {nodeCount} step{nodeCount !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n\n {template.author && (\n <div style={{ fontSize: 11, color: '#bdbdbd' }}>by {template.author}</div>\n )}\n </div>\n );\n}\n\nconst WorkflowTemplateLibrary: React.FC<WorkflowTemplateLibraryProps> = ({\n templates,\n onSelectTemplate,\n onStartFromScratch,\n}) => {\n const [search, setSearch] = useState('');\n const [activeCategory, setActiveCategory] = useState<string>(CATEGORY_ALL);\n\n const categories = useMemo(() => {\n const cats = new Set<string>();\n templates.forEach((t) => { if (t.category) cats.add(t.category); });\n return [CATEGORY_ALL, ...Array.from(cats)];\n }, [templates]);\n\n const filtered = useMemo(() => {\n let list = templates;\n if (activeCategory !== CATEGORY_ALL) {\n list = list.filter((t) => t.category === activeCategory);\n }\n if (search.trim()) {\n const q = search.toLowerCase();\n list = list.filter(\n (t) =>\n t.label.toLowerCase().includes(q) ||\n t.description?.toLowerCase().includes(q) ||\n t.tags?.some((tag) => tag.toLowerCase().includes(q)),\n );\n }\n return [...list].sort((a, b) => (b.popularity ?? 0) - (a.popularity ?? 0));\n }, [templates, activeCategory, search]);\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', height: '100%', fontFamily: 'inherit' }}>\n {/* Header */}\n <div style={{ padding: '24px 24px 0', borderBottom: '1px solid #f0f0f0', paddingBottom: 16 }}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 16 }}>\n <div>\n <h2 style={{ margin: 0, fontSize: 20, fontWeight: 700, color: '#212121' }}>Workflow Templates</h2>\n <p style={{ margin: '4px 0 0', fontSize: 13, color: '#757575' }}>\n Choose a pre-built template or start from scratch\n </p>\n </div>\n {onStartFromScratch && (\n <button\n onClick={onStartFromScratch}\n style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 16px', border: '1.5px solid #1976d2', borderRadius: 6, background: '#fff', color: '#1976d2', fontSize: 13, fontWeight: 600, cursor: 'pointer' }}\n >\n <MdAdd size={16} />\n Start from Scratch\n </button>\n )}\n </div>\n\n {/* Search */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, background: '#f5f5f5', borderRadius: 8, padding: '8px 12px', marginBottom: 12 }}>\n <MdSearch size={18} color=\"#9e9e9e\" />\n <input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search templates...\"\n style={{ border: 'none', background: 'transparent', outline: 'none', fontSize: 14, color: '#212121', flex: 1 }}\n />\n </div>\n\n {/* Category tabs */}\n {categories.length > 1 && (\n <div style={{ display: 'flex', gap: 4, flexWrap: 'wrap' }}>\n {categories.map((cat) => (\n <button\n key={cat}\n onClick={() => setActiveCategory(cat)}\n style={{\n padding: '4px 12px',\n borderRadius: 20,\n border: '1.5px solid',\n borderColor: activeCategory === cat ? '#1976d2' : '#e0e0e0',\n background: activeCategory === cat ? '#e3f2fd' : '#fff',\n color: activeCategory === cat ? '#1565c0' : '#616161',\n fontSize: 12,\n fontWeight: activeCategory === cat ? 600 : 400,\n cursor: 'pointer',\n }}\n >\n {cat}\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Grid */}\n <div style={{ flex: 1, overflowY: 'auto', padding: 24 }}>\n {filtered.length === 0 ? (\n <div style={{ textAlign: 'center', padding: '40px 0', color: '#9e9e9e' }}>\n <MdCategory size={36} style={{ marginBottom: 8 }} />\n <p style={{ margin: 0, fontSize: 14 }}>No templates found</p>\n </div>\n ) : (\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(280px, 1fr))', gap: 16 }}>\n {filtered.map((t) => (\n <TemplateCard key={t.triggerKey} template={t} onSelect={() => onSelectTemplate(t)} />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default WorkflowTemplateLibrary;\n","import React, { useState } from 'react';\nimport { MdCheckCircle, MdCancel, MdError, MdHourglassEmpty, MdPlayArrow, MdChevronRight, MdPerson, MdSchedule, MdExpandMore, MdExpandLess } from 'react-icons/md';\nimport { ExecutionRecord, ExecutionStep, ExecutionStatus, StepStatus } from './types';\nimport { EXECUTION_STATUS_COLOR } from './canvasTokens';\n\n// ── Status helpers ──────────────────────────────────────────────────────────\n\nconst STATUS_META: Record<ExecutionStatus, { label: string; color: string; icon: React.ReactElement }> = {\n running: { label: 'Running', color: EXECUTION_STATUS_COLOR.running, icon: React.createElement(MdPlayArrow, { size: 14 }) },\n success: { label: 'Success', color: EXECUTION_STATUS_COLOR.success, icon: React.createElement(MdCheckCircle, { size: 14 }) },\n failed: { label: 'Failed', color: EXECUTION_STATUS_COLOR.failed, icon: React.createElement(MdError, { size: 14 }) },\n cancelled: { label: 'Cancelled', color: EXECUTION_STATUS_COLOR.cancelled, icon: React.createElement(MdCancel, { size: 14 }) },\n};\n\nconst STEP_META: Record<StepStatus, { color: string; icon: React.ReactElement }> = {\n pending: { color: EXECUTION_STATUS_COLOR.pending, icon: React.createElement(MdHourglassEmpty, { size: 14 }) },\n running: { color: EXECUTION_STATUS_COLOR.running, icon: React.createElement(MdPlayArrow, { size: 14 }) },\n success: { color: EXECUTION_STATUS_COLOR.success, icon: React.createElement(MdCheckCircle, { size: 14 }) },\n failed: { color: EXECUTION_STATUS_COLOR.failed, icon: React.createElement(MdError, { size: 14 }) },\n skipped: { color: EXECUTION_STATUS_COLOR.skipped, icon: React.createElement(MdCancel, { size: 14 }) },\n};\n\nfunction formatDate(iso: string): string {\n try {\n return new Date(iso).toLocaleString();\n } catch {\n return iso;\n }\n}\n\nfunction duration(start: string, end?: string): string {\n try {\n const ms = new Date(end ?? new Date().toISOString()).getTime() - new Date(start).getTime();\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;\n } catch {\n return '—';\n }\n}\n\n// ── Step detail row ──────────────────────────────────────────────────────────\n\nfunction StepRow({ step }: { step: ExecutionStep }) {\n const [expanded, setExpanded] = useState(false);\n const meta = STEP_META[step.status];\n const hasDetail = !!(step.inputs || step.outputs || step.error);\n\n return (\n <div style={{ borderBottom: '1px solid #f5f5f5' }}>\n <div\n style={{ display: 'flex', alignItems: 'center', gap: 8, padding: '8px 12px', cursor: hasDetail ? 'pointer' : 'default' }}\n onClick={() => { if (hasDetail) setExpanded((v) => !v); }}\n role={hasDetail ? 'button' : undefined}\n tabIndex={hasDetail ? 0 : undefined}\n onKeyDown={(e) => { if (hasDetail && (e.key === 'Enter' || e.key === ' ')) setExpanded((v) => !v); }}\n >\n <span style={{ color: meta.color, flexShrink: 0 }}>\n {React.cloneElement(meta.icon, { color: meta.color })}\n </span>\n <span style={{ flex: 1, fontSize: 13, color: '#212121' }}>{step.label || step.nodeId}</span>\n {step.branchTaken && (\n <span style={{ fontSize: 10, padding: '1px 6px', borderRadius: 10, background: '#e3f2fd', color: '#1565c0', fontWeight: 600 }}>\n {step.branchTaken}\n </span>\n )}\n <span style={{ fontSize: 11, color: '#9e9e9e', flexShrink: 0 }}>\n {step.startedAt ? duration(step.startedAt, step.completedAt) : '—'}\n </span>\n {hasDetail && (\n <span style={{ color: '#9e9e9e', flexShrink: 0 }}>\n {expanded ? React.createElement(MdExpandLess, { size: 16 }) : React.createElement(MdExpandMore, { size: 16 })}\n </span>\n )}\n </div>\n\n {expanded && hasDetail && (\n <div style={{ padding: '0 12px 10px 32px', fontSize: 12 }}>\n {step.error && (\n <div style={{ padding: '6px 10px', borderRadius: 6, background: '#ffebee', color: '#c62828', marginBottom: 6 }}>\n {step.error}\n </div>\n )}\n {step.inputs && Object.keys(step.inputs).length > 0 && (\n <details style={{ marginBottom: 4 }}>\n <summary style={{ cursor: 'pointer', color: '#616161', marginBottom: 4 }}>Inputs</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 8, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(step.inputs, null, 2)}\n </pre>\n </details>\n )}\n {step.outputs && Object.keys(step.outputs).length > 0 && (\n <details>\n <summary style={{ cursor: 'pointer', color: '#616161', marginBottom: 4 }}>Outputs</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 8, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(step.outputs, null, 2)}\n </pre>\n </details>\n )}\n </div>\n )}\n </div>\n );\n}\n\n// ── Run list item ─────────────────────────────────────────────────────────────\n\nfunction RunListItem({ record, selected, onSelect }: { record: ExecutionRecord; selected: boolean; onSelect: () => void }) {\n const meta = STATUS_META[record.status];\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onSelect}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') onSelect(); }}\n style={{\n padding: '10px 14px',\n borderBottom: '1px solid #f0f0f0',\n cursor: 'pointer',\n background: selected ? '#e3f2fd' : '#fff',\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n outline: 'none',\n }}\n >\n <span style={{ color: meta.color, flexShrink: 0 }}>\n {React.cloneElement(meta.icon, { color: meta.color, size: 16 })}\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 12, color: '#212121', fontWeight: selected ? 600 : 400, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {formatDate(record.triggeredAt)}\n </div>\n <div style={{ fontSize: 11, color: '#9e9e9e' }}>\n {record.triggeredBy ? `by ${record.triggeredBy}` : 'System'} · {record.steps.length} step{record.steps.length !== 1 ? 's' : ''}\n </div>\n </div>\n <span style={{ fontSize: 11, fontWeight: 600, color: meta.color, flexShrink: 0 }}>{meta.label}</span>\n <MdChevronRight size={14} color=\"#bdbdbd\" />\n </div>\n );\n}\n\n// ── Main component ────────────────────────────────────────────────────────────\n\ninterface WorkflowExecutionHistoryProps {\n records: ExecutionRecord[];\n /** Called when the \"view on canvas\" button is clicked for a record */\n onViewOnCanvas?: (record: ExecutionRecord) => void;\n}\n\nconst WorkflowExecutionHistory: React.FC<WorkflowExecutionHistoryProps> = ({ records, onViewOnCanvas }) => {\n const [selectedId, setSelectedId] = useState<string | null>(records[0]?.id ?? null);\n const selected = records.find((r) => r.id === selectedId) ?? null;\n const sorted = [...records].sort((a, b) => new Date(b.triggeredAt).getTime() - new Date(a.triggeredAt).getTime());\n\n if (records.length === 0) {\n return (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: 300, color: '#9e9e9e', gap: 8 }}>\n <MdSchedule size={36} />\n <p style={{ margin: 0, fontSize: 14 }}>No executions yet</p>\n <p style={{ margin: 0, fontSize: 12 }}>Run history will appear here</p>\n </div>\n );\n }\n\n return (\n <div style={{ display: 'flex', height: '100%', fontFamily: 'inherit', border: '1px solid #e0e0e0', borderRadius: 8, overflow: 'hidden' }}>\n {/* Left: run list */}\n <div style={{ width: 260, flexShrink: 0, borderRight: '1px solid #e0e0e0', overflowY: 'auto', background: '#fafafa' }}>\n <div style={{ padding: '12px 14px', borderBottom: '1px solid #e0e0e0', fontWeight: 600, fontSize: 13, color: '#212121' }}>\n Run History ({records.length})\n </div>\n {sorted.map((r) => (\n <RunListItem key={r.id} record={r} selected={r.id === selectedId} onSelect={() => setSelectedId(r.id)} />\n ))}\n </div>\n\n {/* Right: detail */}\n <div style={{ flex: 1, overflowY: 'auto' }}>\n {selected ? (\n <div>\n {/* Detail header */}\n <div style={{ padding: '16px 20px', borderBottom: '1px solid #f0f0f0', display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 12 }}>\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 4 }}>\n {React.cloneElement(STATUS_META[selected.status].icon, { color: STATUS_META[selected.status].color, size: 18 })}\n <span style={{ fontWeight: 700, fontSize: 15, color: '#212121' }}>{STATUS_META[selected.status].label}</span>\n </div>\n <div style={{ fontSize: 12, color: '#757575', display: 'flex', flexDirection: 'column', gap: 2 }}>\n <span style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <MdSchedule size={13} /> {formatDate(selected.triggeredAt)}\n {selected.completedAt && ` → ${formatDate(selected.completedAt)} (${duration(selected.triggeredAt, selected.completedAt)})`}\n </span>\n {selected.triggeredBy && (\n <span style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <MdPerson size={13} /> {selected.triggeredBy}\n </span>\n )}\n </div>\n </div>\n {onViewOnCanvas && (\n <button\n onClick={() => onViewOnCanvas(selected)}\n style={{ padding: '6px 12px', border: '1.5px solid #1976d2', borderRadius: 6, background: '#fff', color: '#1976d2', fontSize: 12, fontWeight: 600, cursor: 'pointer', flexShrink: 0 }}\n >\n View on Canvas\n </button>\n )}\n </div>\n\n {/* Error banner */}\n {selected.error && (\n <div style={{ margin: '12px 16px', padding: '10px 14px', borderRadius: 6, background: '#ffebee', color: '#c62828', fontSize: 13 }}>\n {selected.error}\n </div>\n )}\n\n {/* Step timeline */}\n <div>\n <div style={{ padding: '10px 12px', fontSize: 12, fontWeight: 600, color: '#757575', borderBottom: '1px solid #f0f0f0' }}>\n STEPS ({selected.steps.length})\n </div>\n {selected.steps.map((step, i) => (\n <StepRow key={`${step.nodeId}-${i}`} step={step} />\n ))}\n </div>\n\n {/* Inputs */}\n {selected.inputs && Object.keys(selected.inputs).length > 0 && (\n <div style={{ padding: '10px 16px' }}>\n <details>\n <summary style={{ cursor: 'pointer', fontSize: 12, fontWeight: 600, color: '#757575', marginBottom: 6 }}>TRIGGER INPUTS</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 10, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(selected.inputs, null, 2)}\n </pre>\n </details>\n </div>\n )}\n </div>\n ) : (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%', color: '#9e9e9e', fontSize: 14 }}>\n Select a run to see details\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default WorkflowExecutionHistory;\n","import { WorkflowState } from './types';\n\n// Each skeleton is a standalone WorkflowState loaded into a fresh canvas via initialValue.\n// IDs only need to be unique within a single skeleton — no cross-skeleton collision risk.\n\nexport const userOnboardingSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-END_USER_CREATION', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'New User Registration', nodeData: { label: 'New User Registration' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Welcome Email', nodeData: { title: 'Welcome Email' } },\n { id: 'approval-1', kind: 'approval', reactFlowType: 'approvalNode', descriptorType: 'approval', deletable: true, label: 'Manager Approval', branchLabels: { pass: 'Approved', fail: 'Rejected' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {\n 'approval-1': {\n pass: [{ id: 'notification-pass-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Approval Confirmed', nodeData: { title: 'Approval Confirmed' } }],\n fail: [{ id: 'notification-fail-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Rejection Notice', nodeData: { title: 'Rejection Notice' } }],\n },\n },\n};\n\nexport const accessRequestSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-ACCESS_REQUEST', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'Access Request Submitted', nodeData: { label: 'Access Request Submitted' } },\n { id: 'approval-1', kind: 'approval', reactFlowType: 'approvalNode', descriptorType: 'approval', deletable: true, label: 'Access Approval', branchLabels: { pass: 'Approved', fail: 'Denied' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {\n 'approval-1': {\n pass: [\n { id: 'restApi-1', kind: 'userTask', reactFlowType: 'restApiNode', descriptorType: 'restApi', deletable: true, label: 'Provision Access', nodeData: { title: 'Provision Access' } },\n { id: 'notification-pass-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Access Granted Email', nodeData: { title: 'Access Granted Email' } },\n ],\n fail: [\n { id: 'notification-fail-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Access Denied Email', nodeData: { title: 'Access Denied Email' } },\n ],\n },\n },\n};\n\nexport const offboardingSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-USER_DEACTIVATION', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'User Deactivation', nodeData: { label: 'User Deactivation' } },\n { id: 'delay-1', kind: 'userTask', reactFlowType: 'delayNode', descriptorType: 'delay', deletable: true, label: 'Grace Period', nodeData: { title: 'Grace Period', duration: 7, unit: 'days' }, formData: { duration: 7, unit: 'days' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Notify IT Team', nodeData: { title: 'Notify IT Team' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {},\n};\n\nexport const webhookIntegrationSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-WEBHOOK_TRIGGER', kind: 'triggerFixed', reactFlowType: 'webhookTriggerNode', deletable: true, label: 'Incoming Webhook', nodeData: { label: 'Incoming Webhook' } },\n { id: 'restApi-1', kind: 'userTask', reactFlowType: 'restApiNode', descriptorType: 'restApi', deletable: true, label: 'Call External API', nodeData: { title: 'Call External API' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Notify on Completion', nodeData: { title: 'Notify on Completion' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {},\n};\n"],"names":["ge","hn","n","t","fn","pe","z","p","R","ye","pn","bn","Le","a","l","C","gn","me","Y","Ee","yn","mn","En","Ln","D","we","Gn","F","_n","xn","On","Cn","Pn","Mn","jn","Sn","Ge","ke","wn","Nn","c","f","g","Ne","kn","vn","Tn","In","Rn","ve","_e","Fn","w","j","xe","A","H","N","k","X","Te","L","Oe","q","Dn","Ie","r","o","Ce","P","M","An","T","O","Re","_","U","K","Pe","Vn","Me","Wn","Q","Yn","Bn","i","s","$","J","zn","je","Hn","Se","Fe","Xn","De","S","v","V","Kn","$n","Jn","Qn","Zn","et","Ve","x","ee","Z","We","Ye","ze","He","nt","d","u","h","rt","b","Be","Ae","tt","Xe","ot","qe","st","it","Ue","at","lt","dt","Ke","ut","ct","$e","y","m","E","Je","Ze","ft","Qe","nn","rn","tn","bt","gt","en","ne","te","re","oe","mt","ie","se","Et","Lt","ae","yt","on","W","Nt","wt","de","Gt","le","B","sn","an","kt","vt","xt","dn","_t","Tt","Ot","It","Ct","I","be","jt","Rt","St","Pt","Mt","ln","un","Ft","he","Xt","Dt","At","Ut","rr","Kt","$t","Jt","or","ir","tr","er","Qt","Zt","nr","Vt","Wt","Bt","Yt","cn","zt","Ht","qt","ce","ue","fe","sr","To","fingerprintSelector","state","parts","node","id","LayoutUpdater","onHeightsReady","nodeCount","fingerprint","useStore","prevRef","useRef","fitView","useReactFlow","useEffect","heights","part","height","STATUS_PALETTE","FlowForgeHeader","workflowName","onWorkflowNameChange","status","statusColor","onSave","onCancel","saveLabel","saveDisabled","saving","setSaving","React","editingName","setEditingName","nameDraft","setNameDraft","handleSave","statusPalette","jsxs","jsx","e","BaseDrawer","isOpen","onClose","title","icon","children","footer","width","isModal","setIsModal","useState","toggleModal","Header","Box","IconButton","BiCollapse","BiExpand","MdClose","Footer","Dialog","Drawer","TriggerSelectorDrawer","open","templates","messages","onSelect","loadTriggerSources","stage","setStage","pickedTemplate","setPickedTemplate","sourceOptions","setSourceOptions","selectedSources","setSelectedSources","loadingSources","setLoadingSources","sourcesError","setSourcesError","handleTriggerPick","useCallback","template","sources","handleBack","handleContinue","showingSources","Fragment","Button","GrTrigger","MdCalendarToday","MdBolt","CircularProgress","MdArrowBack","ReactSelect","buildSelectStyles","cardStyle","cardClass","NodePickerDrawer","availableDescriptors","apps","ungrouped","useMemo","appMap","flat","existing","activeAppKey","setActiveAppKey","activeApp","stage1","MdAddCircleOutline","MdApps","MdChevronRight","CONDITION_CONFIG_KEY","NodeConfigDrawer","nodeId","descriptor","initialValues","schema","setSchema","loading","setLoading","error","setError","conditionConfig","setConditionConfig","cancelled","fs","err","formId","hasForm","FlowForm","values","hasConditions","SubWorkflowPreviewDrawer","workflowId","workflowLabel","onFetchWorkflow","loadState","setLoadState","MdAccountTree","MdErrorOutline","SubWorkflowCanvasRenderer","Canvas","setCanvas","Registries","setRegistries","WorkflowCanvas","CanvasComp","nReg","tReg","NODE_WIDTH","EDGE_GAP","CANVAS_START_Y","FALLBACK_NODE_HEIGHT","defaultEdgeTypes","PlusEdge","LabelPlusEdge","PlainEdge","EdgeWithPlusLabel","GatewayBranchEdge","buildInitialSlots","applyDagreLayout","nodes","edges","nodeSizes","layoutDirection","dagre","size","edge","pos","_a","_b","isBranchingKind","kind","applyVerticalBranchLayout","slots","branches","STEP_GAP","BRANCH_GAP","BULLET_TO_STEP_GAP","positions","railSpecs","slotById","branchMap","chain","placeNode","centerX","placeChain","startY","slot","placeNestedBranches","parentId","parentCenterX","childCenterX","keys","parentSlot","labels","parentPos","parentSize","parentBottomY","railBranches","key","idx","bulletY","cursorY","makeNode","makePlusEdge","prev","curr","edgeColor","onAddStepClick","branchCtx","slotsToFlow","nodeMeasurements","theme","branchLayout","emitFilterBranches","filterId","branchLabels","branchKeys","emitChain","branchKey","branchLabel","branchIndex","isPlain","positioned","layoutedNodes","FlowForgeCanvas","nodeRegistry","templateRegistry","initialValue","consumerNodeTypes","consumerEdgeTypes","readOnly","messageOverrides","canvasOptions","renderTriggerSelector","renderNodePicker","renderNodeConfig","onNodeClickProp","maxNodes","executionRecord","hideHeader","workflowStatus","workflowStatusColor","optionsResolvers","optFitView","fitViewPadding","showControls","showMiniMap","optPanOnScroll","optZoomOnScroll","minZoom","maxZoom","snapToGrid","snapGrid","nodeBody","mergeMessages","setSlots","setBranches","drawerMode","setDrawerMode","activeSlotId","setActiveSlotId","insertAfterSourceId","setInsertAfterSourceId","insertBranchCtx","setInsertBranchCtx","subWorkflowPreview","setSubWorkflowPreview","selectedTemplate","setSelectedTemplate","triggerSlot","triggerKey","setNodeMeasurements","handleHeightsReady","mergedNodeTypes","builtInNodeTypes","mergedEdgeTypes","userTaskCount","spineCount","branchCount","effectiveMaxNodes","atMaxNodes","findSlot","slotId","spineSlot","found","onEditNode","onDeleteNode","removed","next","collectAll","collectNestedFilterIds","map","ids","branch","deleted","newChain","onClickAddTrigger","handleAddStepClick","sourceNodeId","context","handleTriggerSelect","pickedSources","hasPickedSources","skeletonSlots","buildInsertContext","ctx","spineIdx","spineUp","branchChain","branchIdx","branchUp","slotMatchesToken","token","getAvailableDescriptors","all","allowed","handleNodeTypeSelect","newTaskId","isBranching","taskSlot","chainWithoutEnd","insertIdx","sourceIdx","endIdx","handleNodeSave","formatBranchLabel","cfg","base","syncConditionBranchKeys","prevBranches","newKeys","synced","patchSlotBranchLabels","configs","labelMap","updateChain","activeSlot","activeDescriptor","rawNodes","stepByNodeId","extra","step","handlers","handleHeaderSave","OptionsResolversProvider","WorkflowCanvasContext","ReactFlow","_event","Background","Controls","MiniMap","CATEGORY_ALL","TemplateCard","badge","TRIGGER_CATEGORY_STYLE","tag","WorkflowTemplateLibrary","onSelectTemplate","onStartFromScratch","search","setSearch","activeCategory","setActiveCategory","categories","cats","filtered","list","MdAdd","MdSearch","cat","MdCategory","STATUS_META","EXECUTION_STATUS_COLOR","MdPlayArrow","MdCheckCircle","MdError","MdCancel","STEP_META","MdHourglassEmpty","formatDate","iso","duration","start","end","ms","StepRow","expanded","setExpanded","meta","hasDetail","MdExpandLess","MdExpandMore","RunListItem","record","selected","WorkflowExecutionHistory","records","onViewOnCanvas","selectedId","setSelectedId","sorted","MdSchedule","MdPerson","userOnboardingSkeleton","accessRequestSkeleton","offboardingSkeleton","webhookIntegrationSkeleton"],"mappings":"gbAAA,IAAIA,GAAG,OAAO,eAAmBC,GAAG,CAAC,EAAEC,EAAEC,IAAID,KAAK,EAAEF,GAAG,EAAEE,EAAE,CAAC,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,MAAMC,CAAC,CAAC,EAAE,EAAED,CAAC,EAAEC,EAAMC,GAAG,CAAC,EAAEF,IAAI,CAAC,QAAQC,KAAKD,EAAEF,GAAG,EAAEG,EAAE,CAAC,IAAID,EAAEC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAME,GAAG,CAAC,EAAEH,EAAEC,IAAIF,GAAG,EAAqBC,EAAE,GAAKC,CAAC,EAAMG,GAAE,GAAGF,GAAGE,GAAE,CAAC,MAAM,IAAIC,EAAE,IAAI,IAAIC,GAAE,KAAK,IAAIC,GAAG,QAAQ,IAAIC,EAAE,CAAC,EAAE,IAAIC,GAAG,OAAO,eAAeC,GAAG,CAAC,EAAEV,IAAI,CAAC,QAAQC,KAAKD,EAAES,GAAG,EAAER,EAAE,CAAC,IAAID,EAAEC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAEI,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,YAAY,GAAG,KAAK,cAAc,GAAG,KAAK,YAAY,GAAG,KAAK,OAAO,CAAA,EAAG,KAAK,IAAI,CAAA,EAAG,KAAK,OAAO,GAAG,KAAK,KAAK,CAAA,EAAG,KAAK,MAAM,CAAA,EAAG,KAAK,UAAU,CAAA,EAAG,KAAK,YAAY,GAAG,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,oBAAoB,IAAI,CAAC,EAAE,KAAK,oBAAoB,IAAI,CAAC,EAAE,IAAI,KAAK,YAAY,aAAa,EAAE,EAAE,SAAS,GAAG,KAAK,cAAc,eAAe,EAAE,EAAE,WAAW,GAAG,KAAK,YAAY,aAAa,EAAE,EAAE,SAAS,IAAI,KAAK,cAAc,KAAK,QAAQ,CAAA,EAAG,KAAK,UAAU,GAAG,KAAK,UAAU,IAAI,EAAE,CAAA,EAAG,CAAC,YAAY,CAAC,OAAO,KAAK,WAAW,CAAC,cAAc,CAAC,OAAO,KAAK,aAAa,CAAC,YAAY,CAAC,OAAO,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,KAAK,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,oBAAoB,EAAE,CAAC,OAAO,OAAO,GAAG,WAAW,KAAK,oBAAoB,IAAI,EAAE,KAAK,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC,OAAO,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,MAAK,EAAG,OAAO,GAAG,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,OAAO,GAAG,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,EAAEL,EAAE,CAAC,OAAO,EAAE,QAAQC,GAAG,CAACD,IAAI,OAAO,KAAK,QAAQC,EAAED,CAAC,EAAE,KAAK,QAAQC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAED,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,UAAU,OAAO,IAAI,KAAK,OAAO,CAAC,EAAEA,GAAG,OAAO,KAAK,OAAO,CAAC,EAAE,UAAU,OAAO,EAAEA,EAAE,KAAK,oBAAoB,CAAC,EAAE,KAAK,cAAc,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,UAAU,CAAC,EAAE,CAAA,EAAG,KAAK,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,CAAA,EAAG,KAAK,KAAK,CAAC,EAAE,CAAA,EAAG,KAAK,MAAM,CAAC,EAAE,CAAA,EAAG,EAAE,KAAK,WAAW,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC,IAAIA,EAAEC,GAAG,KAAK,WAAW,KAAK,UAAUA,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,cAAc,KAAK,4BAA4B,CAAC,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,QAAQA,GAAG,CAAC,KAAK,UAAUA,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC,GAAG,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,QAAQD,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,EAAE,QAAQA,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,EAAEA,EAAE,CAAC,GAAG,CAAC,KAAK,YAAY,MAAM,IAAI,MAAM,2CAA2C,EAAE,GAAGA,IAAI,OAAOA,EAAE,SAAS,CAACA,GAAG,GAAG,QAAQC,EAAED,EAAEC,IAAI,OAAOA,EAAE,KAAK,OAAOA,CAAC,EAAE,GAAGA,IAAI,EAAE,MAAM,IAAI,MAAM,WAAWD,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,KAAK,QAAQA,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,EAAE,KAAK,4BAA4B,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAEA,EAAE,KAAK,UAAUA,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,IAAIA,EAAE,KAAK,QAAQ,CAAC,EAAE,GAAGA,IAAI,KAAK,OAAOA,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,IAAIA,EAAE,KAAK,UAAU,CAAC,EAAE,GAAGA,EAAE,OAAO,OAAO,KAAKA,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,KAAK,MAAK,EAAG,GAAG,KAAK,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAA,CAAE,CAAC,aAAa,EAAE,CAAC,IAAIA,EAAE,KAAK,OAAO,CAAC,EAAE,GAAGA,EAAE,OAAO,OAAO,KAAKA,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAIA,EAAE,KAAK,MAAM,CAAC,EAAE,GAAGA,EAAE,OAAO,OAAO,KAAKA,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAIA,EAAE,KAAK,aAAa,CAAC,EAAE,GAAGA,EAAE,CAAC,IAAIC,EAAE,IAAI,IAAID,CAAC,EAAE,QAAQ,KAAK,KAAK,WAAW,CAAC,EAAEC,EAAE,IAAI,CAAC,EAAE,OAAO,MAAM,KAAKA,EAAE,OAAM,CAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAID,EAAE,OAAO,KAAK,WAAU,EAAGA,EAAE,KAAK,WAAW,CAAC,EAAEA,EAAE,KAAK,UAAU,CAAC,EAAEA,EAAE,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,IAAIA,EAAE,IAAI,KAAK,YAAY,CAAC,SAAS,KAAK,YAAY,WAAW,KAAK,cAAc,SAAS,KAAK,WAAW,CAAC,EAAEA,EAAE,SAAS,KAAK,MAAK,CAAE,EAAE,OAAO,QAAQ,KAAK,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAGA,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,OAAO,KAAK,SAAS,EAAE,QAAQ,GAAG,CAACA,EAAE,QAAQ,EAAE,CAAC,GAAGA,EAAE,QAAQ,EAAE,CAAC,GAAGA,EAAE,QAAQ,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAIC,EAAE,CAAA,EAAG,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,EAAE,MAAM,CAAC,GAAGD,EAAE,QAAQ,CAAC,GAAGC,EAAE,CAAC,EAAE,GAAU,OAAO,GAAU,QAAQ,KAAKA,EAAEA,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,aAAaD,EAAE,MAAK,EAAG,QAAQ,GAAGA,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,oBAAoB,EAAE,CAAC,OAAO,OAAO,GAAG,WAAW,KAAK,oBAAoB,IAAI,EAAE,KAAK,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC,OAAO,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,QAAQ,EAAEA,EAAE,CAAC,OAAO,EAAE,OAAO,CAACC,EAAE,KAAKD,IAAI,OAAO,KAAK,QAAQC,EAAE,EAAED,CAAC,EAAE,KAAK,QAAQC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAED,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAEU,EAAE,EAAE,GAAG,OAAO,GAAG,UAAU,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,UAAU,SAAS,IAAIA,EAAEX,EAAE,EAAE,MAAM,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,UAAU,OAAO,IAAIW,EAAEV,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,SAAS,EAAE,GAAG,GAAG,IAAIW,EAAEC,GAAE,KAAK,YAAY,EAAE,EAAE,CAAC,EAAE,GAAGD,KAAK,KAAK,YAAY,OAAO,IAAI,KAAK,YAAYA,CAAC,EAAED,GAAG,KAAK,GAAG,IAAI,QAAQ,CAAC,KAAK,cAAc,MAAM,IAAI,MAAM,mDAAmD,EAAE,KAAK,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,KAAK,YAAYC,CAAC,EAAE,EAAED,EAAE,KAAK,oBAAoB,EAAE,EAAE,CAAC,EAAE,IAAI,EAAEG,GAAG,KAAK,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,OAAO,CAAC,EAAE,KAAK,UAAUF,CAAC,EAAE,EAAEG,GAAG,KAAK,OAAO,CAAC,EAAE,CAAC,EAAEA,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAEH,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,EAAEA,CAAC,EAAE,EAAE,KAAK,aAAa,IAAI,CAAC,KAAK,EAAEZ,EAAEC,EAAE,CAAC,IAAI,EAAE,UAAU,SAAS,EAAEe,GAAE,KAAK,YAAY,CAAC,EAAEH,GAAE,KAAK,YAAY,EAAEb,EAAEC,CAAC,EAAE,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,EAAED,EAAEC,EAAE,CAAC,IAAI,EAAE,UAAU,SAAS,EAAE,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK,EAAED,EAAEC,CAAC,EAAE,OAAO,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAED,EAAEC,EAAE,CAAC,OAAO,UAAU,SAAS,EAAEe,GAAE,KAAK,YAAY,CAAC,EAAEH,GAAE,KAAK,YAAY,EAAEb,EAAEC,CAAC,KAAK,KAAK,WAAW,CAAC,WAAW,EAAED,EAAEC,EAAE,CAAC,IAAI,EAAE,UAAU,SAAS,EAAEe,GAAE,KAAK,YAAY,CAAC,EAAEH,GAAE,KAAK,YAAY,EAAEb,EAAEC,CAAC,EAAE,EAAE,KAAK,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,EAAE,OAAO,KAAK,UAAU,CAAC,EAAEgB,GAAG,KAAK,OAAO,CAAC,EAAE,CAAC,EAAEA,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAEjB,EAAE,CAAC,OAAO,KAAK,WAAU,EAAG,KAAK,YAAY,KAAK,IAAI,CAAC,EAAE,EAAEA,CAAC,EAAE,KAAK,UAAU,EAAEA,CAAC,CAAC,CAAC,SAAS,EAAEA,EAAE,CAAC,OAAO,KAAK,aAAa,KAAK,YAAY,KAAK,KAAK,CAAC,EAAE,EAAEA,CAAC,EAAE,KAAK,UAAU,EAAEA,CAAC,CAAC,CAAC,UAAU,EAAEA,EAAE,CAAC,GAAG,KAAK,KAAK,OAAO,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,EAAE,EAAEA,CAAC,CAAC,CAAC,4BAA4B,EAAE,CAAC,OAAO,KAAK,UAAU,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAEA,EAAEC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,OAAO,OAAO,CAAC,EAAE,OAAOA,EAAE,EAAE,OAAO,GAAG,EAAE,IAAID,GAAG,EAAE,IAAIC,GAAG,EAAE,IAAIA,GAAG,EAAE,IAAID,CAAC,EAAE,CAAC,CAAC,EAAE,SAASe,GAAG,EAAEf,EAAE,CAAC,EAAEA,CAAC,EAAE,EAAEA,CAAC,IAAI,EAAEA,CAAC,EAAE,CAAC,CAAC,SAASiB,GAAG,EAAEjB,EAAE,CAAC,EAAEA,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAEA,CAAC,GAAG,OAAO,EAAEA,CAAC,CAAC,CAAC,SAASa,GAAE,EAAEb,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAGD,EAAE,EAAE,GAAGC,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,KAAK,EAAE,CAAC,SAASa,GAAG,EAAEd,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAGD,EAAE,EAAE,GAAGC,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAIU,EAAE,EAAE,EAAE,EAAE,EAAEA,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,SAASK,GAAE,EAAEhB,EAAE,CAAC,OAAOa,GAAE,EAAEb,EAAE,EAAEA,EAAE,EAAEA,EAAE,IAAI,CAAC,CAAC,IAAIQ,GAAG,QAAQD,GAAG,CAAA,EAAGG,GAAGH,GAAG,CAAC,KAAK,IAAIW,GAAG,MAAM,IAAIC,EAAE,CAAC,EAAE,SAASA,GAAG,EAAE,CAAC,IAAInB,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,WAAW,EAAE,aAAY,EAAG,SAAS,EAAE,YAAY,EAAE,MAAMoB,GAAG,CAAC,EAAE,MAAMC,GAAG,CAAC,CAAC,EAAEpB,EAAE,EAAE,MAAK,EAAG,OAAOA,IAAI,SAASD,EAAE,MAAM,gBAAgBC,CAAC,GAAGD,CAAC,CAAC,SAASoB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAK,EAAG,IAAIpB,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,EAAE,EAAE,OAAOA,CAAC,EAAE,EAAE,CAAC,EAAEA,CAAC,EAAE,OAAOC,IAAI,SAAS,EAAE,MAAMA,GAAG,IAAI,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAASoB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAK,EAAG,IAAIrB,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAE,OAAOA,EAAE,OAAO,SAAS,EAAE,KAAKA,EAAE,MAAMC,IAAI,SAAS,EAAE,MAAMA,GAAG,CAAC,CAAC,CAAC,CAAC,SAASiB,GAAG,EAAE,CAAC,IAAIlB,EAAE,IAAIK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,QAAQL,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,QAAQC,GAAG,CAACD,EAAE,QAAQC,EAAE,EAAEA,EAAE,KAAK,EAAEA,EAAE,QAAQD,EAAE,UAAUC,EAAE,EAAEA,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,QAAQA,GAAG,CAACD,EAAE,QAAQ,CAAC,EAAEC,EAAE,EAAE,EAAEA,EAAE,EAAE,KAAKA,EAAE,IAAI,EAAEA,EAAE,KAAK,CAAC,CAAC,EAAED,CAAC,CAAC,IAAIM,GAAE,GAAGI,GAAGJ,GAAE,CAAC,eAAe,IAAIgB,GAAE,YAAY,IAAIC,GAAG,WAAW,IAAIC,GAAG,SAAS,IAAIC,GAAE,YAAY,IAAIC,GAAG,WAAW,IAAIC,GAAG,cAAc,IAAIC,GAAG,UAAU,IAAIC,GAAG,UAAU,IAAIC,GAAG,SAAS,IAAIC,GAAG,KAAK,IAAIC,GAAG,cAAc,IAAIC,GAAG,OAAO,IAAIC,GAAG,QAAQ,IAAIC,EAAE,CAAC,EAAE,IAAIC,GAAG,IAAI,EAAE,SAASb,GAAG,EAAEvB,EAAEC,EAAE,EAAE,CAAC,OAAOoC,GAAG,EAAE,OAAOrC,CAAC,EAAEC,GAAGmC,GAAG,GAAG,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAASC,GAAG,EAAErC,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA,EAAG,EAAE,EAAE,EAAEU,EAAE,EAAE,MAAK,EAAG,EAAE,SAAS2B,EAAE,CAAC,IAAI,EAAErC,EAAEqC,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,SAAS,EAAE,EAAEA,EAAE,CAAC,EAAE,WAAW,EAAEA,EAAE,CAAC,EAAE,CAAC,SAAS,EAAEA,EAAE,CAAC,EAAE,SAAS,EAAE,YAAYA,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE1B,EAAE,UAAU,CAACD,EAAE,QAAQ,SAAS2B,EAAE,CAAC,EAAEA,CAAC,EAAE,QAAQ,SAAS,EAAE,CAAC,IAAIC,EAAE,EAAE,IAAID,EAAE,EAAE,EAAE,EAAE,EAAEE,EAAED,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAEC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE7B,EAAE,QAAQ,SAAS2B,EAAE,CAAC,IAAI,EAAEA,IAAItC,EAAE,EAAE,OAAO,kBAAkB,EAAEsC,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE3B,EAAE,OAAO,QAAQ2B,EAAE,EAAEA,EAAE,IAAI,EAAE,GAAG,IAAI1B,EAAC,EAAG,CAAC,CAAC,GAAG0B,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG1B,EAAC,EAAG,GAAG,MAAM,IAAI,MAAM,4CAA4C,EAAE,OAAO,CAAC,CAAC,SAASY,GAAG,EAAE,CAAC,IAAIxB,EAAE,CAAA,EAAGC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,KAAKD,IAAIA,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK,EAAG,QAAQ,SAAS,EAAE,CAAC,EAAE,CAAA,EAAG,EAAE,CAAC,EAAE,EAAE,QAAQC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,IAAIwC,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,YAAY,CAAA,CAAE,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,KAAK,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC,IAAIzC,EAAE,KAAK,YAAY,CAAC,EAAE,GAAGA,IAAI,OAAO,OAAO,KAAK,KAAKA,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,KAAI,IAAK,EAAE,MAAM,IAAI,MAAM,iBAAiB,EAAE,OAAO,KAAK,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,EAAEA,EAAE,CAAC,IAAIC,EAAE,KAAK,YAAY,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAKA,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,EAAE,OAAO,OAAOA,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,SAASD,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,MAAM,EAAE,KAAK,KAAK,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAG,EAAG,OAAO,OAAO,KAAK,YAAY,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,EAAEA,EAAE,CAAC,IAAIC,EAAE,KAAK,YAAY,CAAC,EAAE,GAAGA,IAAI,OAAO,MAAM,IAAI,MAAM,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,KAAKA,CAAC,EAAE,SAAS,GAAGD,EAAE,EAAE,MAAM,IAAI,MAAM,uDAAuD,CAAC,SAAS,CAAC,SAASA,CAAC,EAAE,EAAE,KAAK,KAAKC,CAAC,EAAE,SAASD,EAAE,KAAK,UAAUC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAID,EAAE,KAAK,KAAKC,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,EAAEA,EAAED,EAAE,SAAS,EAAEA,EAAEC,CAAC,EAAE,SAASD,EAAE,CAAC,EAAE,SAASC,EAAE,EAAE,EAAED,EAAE,SAAS,EAAEA,EAAE,CAAC,EAAE,SAASA,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAIA,EAAE,KAAK,KAAKC,EAAED,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI,EAAE,GAAG,EAAE,EAAEA,EAAE,CAAC,EAAE,SAASC,KAAK,KAAK,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAED,EAAE,CAAC,IAAIC,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAED,CAAC,EAAEC,EAAE,CAAC,EAAE,EAAEA,EAAED,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAEA,CAAC,CAAC,EAAE0C,GAAG,IAAI,EAAE,SAASjB,GAAE,EAAEzB,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO0C,GAAG,EAAE,OAAO3C,CAAC,EAAEC,GAAGyC,GAAG,GAAG,CAAC,CAAC,CAAC,SAASC,GAAG,EAAE3C,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAIwC,GAAG,EAAE9B,EAAE,EAAE,SAASC,EAAE,CAAC,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,EAAEA,EAAE,EAAE0B,EAAE,EAAE,CAAC,EAAE,EAAErC,EAAEW,CAAC,EAAE2B,EAAE5B,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,MAAM,IAAI,MAAM,4DAA4DC,EAAE,YAAY,CAAC,EAAE2B,EAAED,EAAE,WAAWA,EAAE,SAASC,EAAED,EAAE,YAAY,EAAE,EAAE,SAAS,EAAEC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAK,EAAG,QAAQ,SAAS3B,EAAE,CAAC,IAAI,EAAEA,IAAIZ,EAAE,EAAE,OAAO,kBAAkB,EAAEY,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,UAAS,EAAGD,EAAE,EAAE,CAAC,EAAEA,EAAE,WAAW,OAAO,oBAAoB,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,SAASe,GAAG,EAAE1B,EAAEC,EAAE,CAAC,OAAO,EAAE,MAAK,EAAG,OAAO,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEwB,GAAE,EAAE,EAAEzB,EAAEC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAASiC,GAAG,EAAE,CAAC,IAAIlC,EAAE,EAAEC,EAAE,CAAA,EAAG,EAAE,GAAG,EAAE,CAAA,EAAG,SAAS,EAAE,EAAE,CAAC,IAAIU,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,GAAG,QAAQX,EAAE,MAAMA,GAAG,EAAE,GAAGC,EAAE,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,UAAUU,EAAE,QAAQ,KAAK,IAAIA,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,EAAEA,EAAE,QAAQ,KAAK,IAAIA,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAEA,EAAE,UAAUA,EAAE,MAAM,CAAC,IAAI,EAAE,GAAGC,EAAE,GAAGA,EAAEX,EAAE,MAAM,EAAEW,CAAC,EAAE,QAAQ,GAAG,EAAE,KAAKA,CAAC,QAAQ,IAAIA,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAK,EAAG,QAAQ,SAAS,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAASe,GAAG,EAAE,CAAC,OAAOO,GAAG,CAAC,EAAE,OAAO,SAASlC,EAAE,CAAC,OAAOA,EAAE,OAAO,GAAGA,EAAE,SAAS,GAAG,EAAE,QAAQA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI4C,GAAG,IAAI,EAAE,SAAShB,GAAG,EAAE5B,EAAEC,EAAE,CAAC,OAAO4C,GAAG,EAAE7C,GAAG4C,GAAG3C,GAAG,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS4C,GAAG,EAAE7C,EAAEC,EAAE,CAAC,IAAI,EAAE,CAAA,EAAG,EAAE,EAAE,MAAK,EAAG,OAAO,EAAE,QAAQ,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA,EAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,SAAS,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,OAAO,kBAAkB,YAAY,EAAE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,SAAS,EAAE,CAAC,IAAIU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEX,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEW,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,SAASA,EAAE,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,EAAE,QAAQ,SAASC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE0B,EAAE,EAAE1B,CAAC,EAAE,EAAE,EAAEA,CAAC,EAAE2B,EAAE,EAAE,SAASD,EAAE,SAASC,EAAE,EAAE,WAAW,EAAE,SAASA,EAAE,EAAE,YAAYD,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAIhB,GAAE,cAAc,KAAK,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,SAASa,GAAG,EAAE,CAAC,IAAInC,EAAE,CAAA,EAAGC,EAAE,CAAA,EAAG,EAAE,CAAA,EAAG,SAAS,EAAE,EAAE,CAAC,GAAG,KAAKA,EAAE,MAAM,IAAIqB,GAAE,KAAKtB,IAAIC,EAAE,CAAC,EAAE,GAAGD,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAOC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAK,EAAG,QAAQ,CAAC,EAAE,OAAO,KAAKD,CAAC,EAAE,SAAS,EAAE,UAAS,EAAG,MAAM,IAAIsB,GAAE,OAAO,CAAC,CAAC,SAASO,GAAG,EAAE,CAAC,GAAG,CAACM,GAAG,CAAC,CAAC,OAAOnC,EAAE,CAAC,GAAGA,aAAasB,GAAE,SAAS,MAAMtB,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS8C,GAAG,EAAE9C,EAAEC,EAAE,EAAE,EAAE,CAAC,MAAM,QAAQD,CAAC,IAAIA,EAAE,CAACA,CAAC,GAAG,IAAI,EAAGW,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,WAAU,EAAG,EAAE,WAAWA,CAAC,EAAE,EAAE,UAAUA,CAAC,IAAI,KAAK,EAAE,CAAA,CAAE,EAAG,EAAE,CAAA,EAAG,OAAOX,EAAE,QAAQ,SAASW,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQA,CAAC,EAAE,MAAM,IAAI,MAAM,6BAA6BA,CAAC,EAAE,EAAEoC,GAAG,EAAEpC,EAAEV,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS8C,GAAG,EAAE/C,EAAEC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,OAAOD,KAAK,IAAI,EAAEA,CAAC,EAAE,GAAGC,IAAI,EAAE,EAAE,EAAED,CAAC,GAAG,EAAEA,CAAC,EAAE,QAAQ,SAASW,EAAE,CAAC,EAAEoC,GAAG,EAAEpC,EAAEV,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAEA,IAAI,EAAE,EAAE,EAAED,CAAC,IAAI,CAAC,CAAC,SAASgD,GAAG,EAAEhD,EAAEC,EAAE,CAAC,OAAO6C,GAAG,EAAE9C,EAAEC,EAAE,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC,SAAS6B,GAAG,EAAE9B,EAAE,CAAC,OAAOgD,GAAG,EAAEhD,EAAE,MAAM,CAAC,CAAC,SAAS+B,GAAG,EAAE/B,EAAE,CAAC,OAAOgD,GAAG,EAAEhD,EAAE,KAAK,CAAC,CAAC,SAASgC,GAAG,EAAEhC,EAAE,CAAC,IAAIC,EAAE,IAAII,EAAE,EAAE,CAAA,EAAG,EAAE,IAAIoC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI7B,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAASA,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI0B,EAAEtC,EAAE,CAAC,EAAEsC,EAAE,IAAI,EAAE1B,CAAC,EAAE,EAAE,EAAE,SAASA,EAAE0B,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,UAAS,IAAK,EAAE,OAAOrC,EAAE,EAAE,MAAK,EAAG,QAAQ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,iBAAiB,EAAEA,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAIU,EAAE,GAAG,KAAK,EAAE,KAAI,EAAG,GAAG,CAAC,GAAG,EAAE,EAAE,UAAS,EAAG,KAAK,EAAEV,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAGU,EAAE,MAAM,IAAI,MAAM,iCAAiC,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAOV,CAAC,CAAC,SAASgC,GAAG,EAAEjC,EAAEC,EAAE,EAAE,CAAC,OAAOgD,GAAG,EAAEjD,EAAEC,EAAE,IAAW,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO,GAAU,CAAA,CAAE,EAAE,CAAC,CAAC,SAASgD,GAAG,EAAEjD,EAAEC,EAAE,EAAE,CAAC,GAAGA,IAAI,OAAO,OAAOwB,GAAE,EAAEzB,EAAEC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAK,EAAG,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,IAAIU,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAEA,EAAE,OAAO,IAAI,CAAC,IAAIC,EAAED,EAAE,CAAC,EAAE,EAAEC,EAAE,IAAI,EAAE,CAAC,EAAEA,EAAE,EAAEA,EAAE,EAAE0B,EAAE,IAAI1B,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAEX,EAAE,CAAC,EAAE,EAAE,EAAEqC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,OAAOf,GAAG,EAAEvB,EAAEC,EAAE,CAAC,CAAC,CAAC,OAAOwB,GAAE,EAAEzB,EAAEC,EAAE,CAAC,CAAC,CAAC,SAASiD,GAAE,EAAElD,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAEkD,GAAE,CAAC,EAAE,OAAOlD,EAAE,MAAMD,EAAE,EAAE,QAAQ,EAAEC,CAAC,EAAE,CAAC,CAAC,SAASmD,GAAG,EAAE,CAAC,IAAIpD,EAAE,IAAIK,EAAC,EAAG,SAAS,EAAE,MAAK,CAAE,EAAE,OAAO,EAAE,MAAK,EAAG,QAAQJ,GAAGD,EAAE,QAAQC,EAAE,EAAE,KAAKA,CAAC,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQA,GAAG,CAAC,IAAI,EAAED,EAAE,KAAKC,EAAE,EAAEA,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,KAAKA,CAAC,EAAED,EAAE,QAAQC,EAAE,EAAEA,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,OAAO,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,SAASqD,GAAE,EAAE,CAAC,IAAIrD,EAAE,IAAIK,EAAE,CAAC,WAAW,EAAE,aAAY,CAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAK,EAAG,QAAQJ,GAAG,CAAC,EAAE,SAASA,CAAC,EAAE,QAAQD,EAAE,QAAQC,EAAE,EAAE,KAAKA,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQA,GAAG,CAACD,EAAE,QAAQC,EAAE,EAAE,KAAKA,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,SAASsD,GAAE,EAAEtD,EAAE,CAAC,IAAIC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAED,EAAE,EAAEC,EAAE,EAAED,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAEW,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,MAAM,2DAA2D,EAAE,IAAI,EAAEC,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAED,GAAG,EAAE,IAAIA,EAAE,CAACA,GAAG,EAAEA,EAAE,EAAE,EAAEC,EAAED,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAEC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAEX,EAAE,EAAE,EAAE,EAAEW,CAAC,CAAC,CAAC,SAAS2C,GAAE,EAAE,CAAC,IAAIvD,EAAEwD,GAAEC,GAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAA,CAAE,EAAE,OAAO,EAAE,QAAQ,QAAQxD,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,SAASD,EAAE,CAAC,IAAIA,EAAE,CAAC,EAAE,CAAA,GAAIA,EAAE,CAAC,EAAE,EAAE,KAAK,EAAEC,EAAE,CAAC,EAAED,CAAC,CAAC,SAAS0D,GAAG,EAAE,CAAC,IAAI1D,EAAE,EAAE,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,OAAO,OAAO,UAAU,CAAC,CAAC,EAAEC,EAAE0D,EAAE,KAAK,IAAI3D,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO,EAAE,MAAM,IAAI,EAAE,MAAMC,EAAE,CAAC,CAAC,CAAC,SAAS2D,GAAG,EAAE,CAAC,IAAI5D,EAAE,EAAE,QAAQ,IAAI,GAAG,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,MAAM,EAAEC,EAAE0D,EAAE,KAAK,IAAI3D,CAAC,EAAE,EAAE,CAAA,EAAG,EAAE,MAAK,EAAG,QAAQ,GAAG,CAAC,IAAIW,EAAE,EAAE,KAAK,CAAC,EAAE,KAAKV,EAAE,EAAEU,CAAC,IAAI,EAAEA,CAAC,EAAE,IAAI,EAAEA,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,eAAe,MAAM,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAEA,IAAI,CAAC,IAAI,QAAQA,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,QAAQ,GAAG,EAAE,QAAQ,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAASkD,GAAE,EAAE7D,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,UAAU,QAAQ,IAAI,EAAE,KAAKA,EAAE,EAAE,MAAM,GAAGiD,GAAE,EAAE,SAAS,EAAElD,CAAC,CAAC,CAAC,SAAS8D,GAAG,EAAE9D,EAAE+D,GAAG,CAAC,IAAI9D,EAAE,CAAA,EAAG,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,GAAGD,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAEA,CAAC,EAAEC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAI8D,GAAG,MAAM,SAASJ,EAAE,EAAE3D,EAAE,CAAC,GAAGA,EAAE,OAAO+D,GAAG,CAAC,IAAI9D,EAAE6D,GAAG9D,CAAC,EAAE,OAAO,EAAE,GAAGC,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAM,QAAO,EAAE,GAAGD,CAAC,CAAC,CAAC,SAASyD,GAAE,EAAE,CAAC,IAAI,EAAE,EAAE,MAAK,EAAG,IAAIO,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,KAAK,OAAOC,IAAI,OAAO,OAAO,UAAUA,CAAC,CAAC,EAAE,OAAON,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,SAASO,GAAG,EAAElE,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAI,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,OAAO,EAAE,QAAQ,GAAG,CAACD,EAAE,CAAC,EAAEC,EAAE,IAAI,KAAK,CAAC,EAAEA,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,SAASkE,GAAE,EAAEnE,EAAE,CAAC,IAAIC,EAAE,KAAK,MAAM,GAAG,CAAC,OAAOD,EAAC,CAAE,QAAC,CAAQ,QAAQ,IAAI,EAAE,WAAW,KAAK,IAAG,EAAGC,GAAG,IAAI,CAAC,CAAC,CAAC,SAASmE,GAAE,EAAEpE,EAAE,CAAC,OAAOA,GAAG,CAAC,IAAIqE,GAAG,EAAE,SAASlB,GAAE,EAAE,CAAC,IAAInD,EAAE,EAAEqE,GAAG,OAAO,GAAG,GAAGrE,EAAE,CAAC,SAASwD,GAAE,EAAExD,EAAEC,EAAE,EAAE,CAACD,GAAG,OAAOA,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAEA,EAAEC,EAAE,IAAI,EAAE,GAAGD,EAAE,GAAG,IAAI,EAAE,CAAA,EAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,GAAGC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,SAASqE,GAAE,EAAEtE,EAAE,CAAC,IAAIC,EAAE,CAAA,EAAG,QAAQ,KAAKD,EAAE,EAAE,CAAC,IAAI,SAASC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,OAAOA,CAAC,CAAC,SAASsE,GAAE,EAAEvE,EAAE,CAAC,IAAIC,EAAE,OAAO,OAAOD,GAAG,SAASC,EAAE,GAAG,EAAED,CAAC,EAAEC,EAAED,EAAE,OAAO,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAA,CAAE,CAAC,CAAC,SAASuE,GAAG,EAAExE,EAAE,CAAC,OAAO,EAAE,OAAO,CAACC,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAED,EAAE,CAAC,EAAEC,GAAG,CAAA,CAAE,CAAC,CAAC,IAAIwE,GAAE,KAASC,GAAE,QAAYC,GAAE,KAAK,CAAC,aAAa,CAACxE,GAAG,KAAK,WAAW,EAAE,IAAIH,EAAE,CAAA,EAAGA,EAAE,MAAMA,EAAE,MAAMA,EAAE,KAAK,UAAUA,CAAC,CAAC,SAAS,CAAC,IAAIA,EAAE,KAAK,UAAU,EAAEA,EAAE,MAAM,GAAG,IAAIA,EAAE,OAAO4E,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ5E,EAAE,CAAC,IAAI,EAAE,KAAK,UAAUA,EAAE,OAAOA,EAAE,OAAO4E,GAAG5E,CAAC,EAAEA,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,MAAMA,EAAE,EAAE,MAAMA,EAAEA,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,IAAIA,EAAE,CAAA,EAAG,EAAE,KAAK,UAAUgE,EAAE,EAAE,MAAM,KAAKA,IAAI,GAAGhE,EAAE,KAAK,KAAK,UAAUgE,EAAEa,EAAE,CAAC,EAAEb,EAAEA,EAAE,MAAM,MAAM,IAAIhE,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS4E,GAAG,EAAE,CAAC,EAAE,MAAM,MAAM,EAAE,MAAM,EAAE,MAAM,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,OAAO,EAAE,KAAK,CAAC,SAASC,GAAG,EAAE7E,EAAE,CAAC,GAAG,IAAI,SAAS,IAAI,QAAQ,OAAOA,CAAC,CAAC,IAAI8E,GAAGH,GAAMI,GAAG,IAAI,EAAE,SAASC,GAAE,EAAEhF,EAAE,CAAC,GAAG,EAAE,UAAS,GAAI,EAAE,MAAM,CAAA,EAAG,IAAIC,EAAEgF,GAAG,EAAEjF,GAAG+E,EAAE,EAAE,OAAOG,GAAGjF,EAAE,MAAMA,EAAE,QAAQA,EAAE,OAAO,EAAE,QAAQgE,GAAG,EAAE,SAASA,EAAE,EAAEA,EAAE,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,SAASiB,GAAG,EAAElF,EAAEC,EAAE,CAAC,IAAIU,EAAE,IAAIqD,EAAE,CAAA,EAAGC,EAAEjE,EAAEA,EAAE,OAAO,CAAC,EAAEmF,EAAEnF,EAAE,CAAC,EAAEoF,EAAE,KAAK,EAAE,UAAS,GAAI,CAAC,KAAKA,EAAED,EAAE,QAAO,GAAIE,GAAE,EAAErF,EAAEC,EAAEmF,CAAC,EAAE,KAAKA,EAAEnB,EAAE,QAAO,GAAIoB,GAAE,EAAErF,EAAEC,EAAEmF,CAAC,EAAE,GAAG,EAAE,aAAa,QAAQ,EAAEpF,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGoF,GAAGzE,EAAEX,EAAE,CAAC,IAAI,KAAK,OAAOW,EAAE,QAAO,EAAGyE,EAAE,CAACpB,EAAEA,EAAE,OAAOqB,GAAE,EAAErF,EAAEC,EAAEmF,EAAE,EAAE,GAAG,CAAA,CAAE,EAAE,KAAK,EAAE,CAAC,OAAOpB,CAAC,CAAC,SAASqB,GAAE,EAAErF,EAAEC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAA,GAAI,QAAQU,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAEC,EAAE,EAAE,KAAKD,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAEC,EAAE,KAAK,EAAE0E,GAAEtF,EAAEC,EAAEW,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,CAAA,GAAI,QAAQD,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAEC,EAAED,EAAE,EAAE,EAAE,EAAE,KAAKC,CAAC,EAAE,EAAE,IAAI,EAAE0E,GAAEtF,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,SAASgF,GAAG,EAAEjF,EAAE,CAAC,IAAIC,EAAE,IAAII,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,QAAQM,GAAG,CAACV,EAAE,QAAQU,EAAE,CAAC,EAAEA,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQA,GAAG,CAAC,IAAI,EAAEV,EAAE,KAAKU,EAAE,EAAEA,EAAE,CAAC,GAAG,EAAEC,EAAEZ,EAAEW,CAAC,EAAE,EAAE,EAAEC,EAAEX,EAAE,QAAQU,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAE,IAAI2B,EAAErC,EAAE,KAAKU,EAAE,CAAC,EAAE,EAAEV,EAAE,KAAKU,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE2B,EAAE,KAAK1B,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,IAAIA,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE2E,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,IAAIT,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO7E,EAAE,MAAK,EAAG,QAAQU,GAAG,CAAC2E,GAAE,EAAE,EAAErF,EAAE,KAAKU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAMV,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAASqF,GAAE,EAAEtF,EAAEC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAEA,EAAE,IAAIA,EAAE,IAAI,EAAE,EAAEA,EAAE,IAAIA,EAAE,GAAGD,CAAC,IAAI,MAAM,EAAE,QAAQC,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,QAAQA,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,EAAE,QAAQA,CAAC,CAAC,CAAC,SAASsF,GAAG,EAAE,CAAC,IAAIvF,EAAE,CAAA,EAAG,QAAQC,EAAE,EAAEA,EAAE,EAAEA,IAAID,EAAE,KAAKC,CAAC,EAAE,OAAOD,CAAC,CAAC,SAASwF,GAAG,EAAE,EAAE,EAAE,MAAK,EAAG,YAAY,SAASR,GAAE,EAAE,EAAE,CAAC,CAAC,EAAES,GAAG,CAAC,GAAG,QAAQzB,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,EAAE,WAAWA,CAAC,EAAEC,EAAE,YAAYD,EAAE,KAAKC,EAAE,SAAS,GAAG,EAAE,QAAQD,EAAE,EAAEA,EAAE,EAAEC,EAAEd,GAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAEa,EAAE,CAAC,OAAOC,GAAGD,EAAE,KAAKC,CAAC,EAAE,MAAM,CAAC,CAAC,SAASwB,GAAG,EAAE,CAAC,IAAIzF,EAAE,CAAA,EAAGC,EAAE,CAAA,EAAG,EAAE,CAAA,EAAG,SAAS,EAAE,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAGA,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAG,CAAC,OAAO,OAAOA,EAAE,EAAE,CAAC,EAAED,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAOC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK,EAAG,QAAQ,CAAC,EAAED,CAAC,CAAC,SAAS0F,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQ1F,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,GAAGC,EAAE,SAAS,CAAC,EAAE,WAAWD,CAAC,EAAE,IAAI,EAAEC,EAAE,YAAY,OAAOA,EAAE,SAAS,OAAOA,EAAE,YAAY,EAAE,QAAQD,EAAE,EAAEA,EAAE,EAAEC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS0F,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,YAAY,CAAA,EAAG,EAAE,MAAK,EAAG,QAAQ3F,GAAG4F,GAAG,EAAE5F,CAAC,CAAC,CAAC,CAAC,SAAS4F,GAAG,EAAE5F,EAAE,CAAC,IAAIC,EAAED,EAAE,EAAE,EAAE,EAAE,KAAKC,CAAC,EAAE,KAAK,EAAED,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,EAAEA,EAAE,KAAKW,EAAE,EAAE,KAAKX,CAAC,EAAE,EAAEW,EAAE,UAAU,GAAG,IAAI,EAAE,EAAE,OAAO,EAAE,WAAWX,CAAC,EAAE,IAAIY,EAAE,EAAE0B,EAAE,IAAIA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE3B,EAAE,OAAO,CAAA,EAAG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAUA,EAAE,QAAQX,EAAE,KAAK,CAAC,EAAEY,EAAEsC,GAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,MAAMvC,EAAE,MAAM,EAAE,OAAOA,EAAE,OAAO,EAAE,MAAM,aAAa,EAAE,SAASA,EAAE,UAAU,EAAE,QAAQV,EAAEW,EAAE,CAAC,OAAOD,EAAE,MAAM,EAAE,CAAC,EAAE2B,IAAI,GAAG,EAAE,MAAK,EAAG,YAAY,KAAK1B,CAAC,EAAEX,EAAEW,EAAE,EAAE,QAAQX,EAAE,EAAE,CAAC,OAAOU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAASkF,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,YAAY,QAAQ7F,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,EAAEC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQA,EAAE,QAAQ,CAAC,EAAEA,EAAE,OAAO,EAAE,EAAE,WAAWD,CAAC,EAAE,CAAC,EAAE,EAAE,WAAWA,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,EAAEC,EAAE,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAEA,EAAE,QAAQ,eAAe,EAAE,EAAEA,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,MAAMA,EAAE,MAAM,EAAE,OAAOA,EAAE,QAAQD,EAAE,EAAEC,EAAE,EAAE,KAAKD,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS8F,GAAE,EAAE,CAAC,IAAI9F,EAAE,CAAA,EAAG,SAASC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,OAAOD,EAAE,CAAC,EAAE,OAAO,EAAE,KAAKA,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,KAAK,OAAO,kBAAkBC,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAGU,EAAEgD,EAAE,KAAK,IAAI,CAAC,EAAE,OAAOhD,IAAI,OAAO,oBAAoBA,EAAE,GAAG,EAAE,KAAKA,CAAC,CAAC,EAAE,UAAU,QAAQV,CAAC,CAAC,CAAC,SAAS8F,GAAE,EAAE/F,EAAE,CAAC,OAAO,EAAE,KAAKA,EAAE,CAAC,EAAE,KAAK,EAAE,KAAKA,EAAE,CAAC,EAAE,KAAK,EAAE,KAAKA,CAAC,EAAE,MAAM,CAAC,IAAIgG,GAAEC,GAAG,SAASA,GAAG,EAAE,CAAC,IAAIjG,EAAE,IAAIK,EAAE,CAAC,SAAS,EAAE,CAAC,EAAEJ,EAAE,EAAE,MAAK,EAAG,GAAGA,EAAE,SAAS,EAAE,MAAM,IAAI,MAAM,mCAAmC,EAAE,IAAI,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,UAAS,EAAGD,EAAE,QAAQ,EAAE,CAAA,CAAE,EAAE,IAAI,EAAE,EAAE,KAAKkG,GAAGlG,EAAE,CAAC,EAAE,IAAI,EAAEmG,GAAGnG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAEA,EAAE,QAAQ,EAAE,CAAC,EAAE+F,GAAE,EAAE,CAAC,EAAE,CAACA,GAAE,EAAE,CAAC,EAAEK,GAAGpG,EAAE,EAAE,CAAC,EAAE,OAAOA,CAAC,CAAC,SAASkG,GAAG,EAAElG,EAAE,CAAC,SAASC,EAAE,EAAE,CAAC,IAAI,EAAED,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,EAAEW,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQA,CAAC,GAAG,CAACoF,GAAE/F,EAAE,CAAC,IAAI,EAAE,QAAQW,EAAE,CAAA,CAAE,EAAE,EAAE,QAAQ,EAAEA,EAAE,CAAA,CAAE,EAAEV,EAAEU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,MAAK,EAAG,QAAQV,CAAC,EAAE,EAAE,UAAS,CAAE,CAAC,SAASkG,GAAG,EAAEnG,EAAE,CAAC,OAAOA,EAAE,MAAK,EAAG,OAAO,CAACgE,EAAEC,IAAI,CAAC,IAAIkB,EAAE,OAAO,kBAAkB,OAAO,EAAE,QAAQlB,EAAE,CAAC,IAAI,EAAE,QAAQA,EAAE,CAAC,IAAIkB,EAAEY,GAAE/F,EAAEiE,CAAC,GAAGkB,EAAEnB,EAAE,CAAC,EAAE,CAACmB,EAAElB,CAAC,EAAED,CAAC,EAAE,CAAC,OAAO,kBAAkB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAASoC,GAAG,EAAEpG,EAAEC,EAAE,CAAC,EAAE,QAAQ,QAAQ,GAAGD,EAAE,KAAK,CAAC,EAAE,MAAMC,CAAC,CAAC,CAAC,GAAG,CAAC,SAASoG,GAAG,UAAUC,EAAE,EAAEhG,GAAEiG,GAAGC,GAAEA,GAAE,iBAAiBC,GAAGD,GAAE,cAAcE,GAAEF,GAAE,aAAaG,GAAGH,GAAE,UAAUI,GAAGJ,GAAE,UAAUK,GAAGL,GAAE,cAAcM,GAAG,SAASN,GAAE,EAAE,CAAC,EAAEpD,GAAG,CAAC,EAAE0C,GAAE,CAAC,EAAE,IAAI9F,EAAEgG,GAAE,CAAC,EAAES,GAAGzG,CAAC,EAAE0G,GAAE1G,EAAE,CAAC,EAAE,IAAIC,EAAE,EAAE,KAAKA,EAAE2G,GAAG5G,CAAC,GAAG,EAAE6G,GAAG7G,EAAE,EAAEC,CAAC,EAAE6G,GAAG9G,EAAE,EAAEC,EAAE,CAAC,CAAC,CAAC,SAASyG,GAAE,EAAE1G,EAAE,CAAC,IAAIC,EAAEqG,GAAG,EAAE,EAAE,MAAK,CAAE,EAAErG,EAAEA,EAAE,MAAM,EAAEA,EAAE,OAAO,CAAC,EAAEA,EAAE,QAAQ,GAAG8G,GAAG,EAAE/G,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS+G,GAAG,EAAE/G,EAAEC,EAAE,CAAC,IAAIgE,EAAE,EAAE,KAAKhE,CAAC,EAAE,OAAOkF,EAAE,EAAE,KAAKlF,EAAEgE,CAAC,EAAEkB,EAAE,SAASwB,GAAG,EAAE3G,EAAEC,CAAC,CAAC,CAAC,SAAS0G,GAAG,EAAE3G,EAAEC,EAAE,CAAC,IAAIgE,EAAE,EAAE,KAAKhE,CAAC,EAAE,OAAOkF,EAAE,GAAGC,EAAEpF,EAAE,KAAKC,EAAEgE,CAAC,EAAEtD,EAAE,EAAEyE,IAAID,EAAE,GAAGC,EAAEpF,EAAE,KAAKiE,EAAEhE,CAAC,GAAGU,EAAEyE,EAAE,OAAO,IAAI4B,EAAEhH,EAAE,UAAUC,CAAC,EAAE,OAAO+G,GAAGA,EAAE,QAAQpG,GAAG,CAAC,IAAIqG,EAAErG,EAAE,IAAIX,EAAEqC,EAAE2E,EAAErG,EAAE,EAAEA,EAAE,EAAE,GAAG0B,IAAI2B,EAAE,CAAC,IAAIiD,EAAED,IAAI9B,EAAE5C,EAAEvC,EAAE,KAAKY,CAAC,EAAE,OAAO,GAAGD,GAAGuG,EAAE3E,EAAE,CAACA,EAAE4E,GAAG,EAAElH,EAAEqC,CAAC,EAAE,CAAC,IAAI8E,EAAE,EAAE,KAAKnH,EAAEqC,CAAC,EAAE,SAAS3B,GAAGuG,EAAE,CAACE,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEzG,CAAC,CAAC,SAAS8F,GAAG,EAAEzG,EAAE,CAAC,UAAU,OAAO,IAAIA,EAAE,EAAE,MAAK,EAAG,CAAC,GAAGqH,GAAG,EAAE,CAAA,EAAG,EAAErH,CAAC,CAAC,CAAC,SAASqH,GAAG,EAAErH,EAAEC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAEA,EAAE,EAAE,EAAE,KAAK,CAAC,EAAED,EAAE,CAAC,EAAE,GAAG,IAAIW,EAAE,EAAE,UAAU,CAAC,EAAE,OAAOA,GAAGA,EAAE,QAAQ,GAAG,CAAC,OAAO,OAAOX,EAAE,CAAC,IAAIC,EAAEoH,GAAG,EAAErH,EAAEC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAIA,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAOA,CAAC,CAAC,SAAS2G,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK5G,GAAG,EAAE,KAAKA,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS6G,GAAG,EAAE7G,EAAEC,EAAE,CAAC,IAAI,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAED,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAEC,EAAE,EAAE,EAAEA,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAEU,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAMA,EAAE,EAAE,EAAE,IAAIX,EAAE,MAAK,EAAG,OAAOiH,GAAG,IAAIK,GAAG,EAAE,EAAE,KAAKL,EAAE,CAAC,EAAEtG,CAAC,GAAG,IAAI2G,GAAG,EAAE,EAAE,KAAKL,EAAE,CAAC,EAAEtG,CAAC,CAAC,EAAE,OAAO,CAACsG,EAAE3E,IAAIyD,GAAE/F,EAAEsC,CAAC,EAAEyD,GAAE/F,EAAEiH,CAAC,EAAE3E,EAAE2E,CAAC,CAAC,CAAC,SAASH,GAAG,EAAE9G,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEwG,GAAG,CAAC,EAAEC,GAAE,EAAE1G,CAAC,EAAEuH,GAAG,EAAEvH,CAAC,CAAC,CAAC,SAASuH,GAAG,EAAEvH,EAAE,CAAC,IAAIC,EAAE,EAAE,MAAK,EAAG,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAACA,EAAE,OAAO,IAAI,EAAEoG,GAAG,EAAE,CAACpG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,IAAImF,EAAE,EAAE,KAAK,CAAC,EAAE,OAAOzE,EAAEX,EAAE,KAAK,EAAEoF,CAAC,EAAE4B,EAAE,GAAGrG,IAAIA,EAAEX,EAAE,KAAKoF,EAAE,CAAC,EAAE4B,EAAE,IAAIhH,EAAE,KAAK,CAAC,EAAE,KAAKA,EAAE,KAAKoF,CAAC,EAAE,MAAM4B,EAAErG,EAAE,OAAO,CAACA,EAAE,OAAO,CAAC,CAAC,CAAC,SAASwG,GAAG,EAAEnH,EAAEC,EAAE,CAAC,OAAO,EAAE,QAAQD,EAAEC,CAAC,CAAC,CAAC,SAASqH,GAAG,EAAEtH,EAAEC,EAAE,CAAC,OAAOA,EAAE,KAAKD,EAAE,KAAKA,EAAE,KAAKC,EAAE,GAAG,CAAC,IAAIuH,GAAGC,GAAG,SAASA,GAAG,EAAE,CAAC,IAAIzH,EAAE,EAAE,QAAQ,OAAO,GAAG,OAAOA,GAAG,WAAW,OAAOA,EAAE,CAAC,EAAE,OAAOA,EAAC,CAAE,IAAI,kBAAkB0H,GAAG,CAAC,EAAE,MAAM,IAAI,aAAaC,GAAG,CAAC,EAAE,MAAM,IAAI,eAAeC,GAAG,CAAC,EAAE,MAAM,IAAI,OAAO,MAAM,QAAQF,GAAG,CAAC,CAAC,CAAC,CAAC,IAAIE,GAAG9B,GAAE,SAAS6B,GAAG,EAAE,CAAC7B,GAAE,CAAC,EAAEE,GAAE,CAAC,CAAC,CAAC,SAAS0B,GAAG,EAAE,CAACnB,GAAG,CAAC,CAAC,CAAC,IAAIsB,GAAGC,GAAG,SAASA,GAAG,EAAE,CAAC,IAAI9H,EAAE+H,GAAG,CAAC,EAAE,EAAE,MAAK,EAAG,YAAY,QAAQ9H,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE+H,GAAG,EAAEhI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAKW,EAAE,EAAE,IAAI,EAAE,EAAEC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,KAAKX,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAE,CAAC,MAAMW,EAAE,EAAE,CAAC,KAAKD,GAAG,EAAE,KAAKC,CAAC,EAAE,QAAQ,EAAE,MAAM,IAAIA,IAAID,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,IAAIC,EAAE,EAAE,CAAC,CAAC,CAACA,IAAI,QAAQ,EAAE,UAAUX,EAAEW,CAAC,EAAEX,EAAE,EAAE,WAAWA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS+H,GAAG,EAAEhI,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA,EAAG,EAAE,CAAA,EAAG,EAAE,KAAK,IAAID,EAAEC,CAAC,EAAE,IAAID,EAAE,CAAC,EAAE,GAAG,EAAEW,EAAE,KAAK,IAAIX,EAAEC,CAAC,EAAE,IAAID,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAEC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,IAAID,EAAE,CAAC,EAAE,IAAI,GAAGW,EAAEX,EAAE,CAAC,EAAE,MAAM,IAAIY,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,KAAKA,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAO,CAAE,EAAE,IAAIA,CAAC,CAAC,CAAC,SAASmH,GAAG,EAAE,CAAC,IAAI/H,EAAE,GAAGC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,EAAEA,EAAE,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAED,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,SAASwE,EAAC,EAAE,QAAQ,CAAC,EAAEzE,CAAC,CAAC,SAASiI,GAAG,EAAE,CAAC,IAAIjI,EAAEkD,GAAE,EAAE,OAAO,CAAA,EAAG,OAAO,EAAEjD,EAAEiI,GAAG,CAAC,EAAE,EAAE,OAAO,OAAOjI,CAAC,EAAE,EAAE0D,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAK,EAAG,YAAY3D,EAAE,EAAE,MAAK,EAAG,QAAQW,GAAG,EAAE,KAAKA,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAEwH,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS1D,EAAC,EAAE,QAAQ9D,GAAGyH,GAAG,EAAEpI,EAAE,EAAE,EAAE,EAAEC,EAAEU,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,eAAe,CAAC,CAAC,SAASyH,GAAG,EAAEpI,EAAEC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAIqC,EAAE,IAAI3B,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,CAACA,EAAE,OAAO,CAAC,IAAIX,GAAG,EAAE,QAAQA,EAAE,EAAE,CAAC,OAAO,EAAE,OAAOC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI+G,EAAEnD,GAAE,EAAE,KAAK,EAAEjD,EAAEiD,GAAE,EAAE,KAAK,EAAEoD,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,UAAUD,EAAE,CAAC,EAAEC,EAAE,UAAUD,EAAE,EAAE,UAAUpG,EAAE,CAAC,EAAEqG,EAAE,aAAarG,EAAED,EAAE,QAAQ,GAAG,CAAC,IAAI0H,EAAED,GAAG,EAAEpI,EAAEC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAIsC,EAAE,EAAE,KAAK,CAAC,EAAEC,EAAED,EAAE,UAAUA,EAAE,UAAU,EAAE6E,EAAE7E,EAAE,aAAaA,EAAE,aAAa,EAAE+F,EAAE/F,EAAE,UAAU,EAAE,EAAE,EAAEgG,EAAE/F,IAAI4E,EAAE,EAAE,IAAIiB,EAAE,EAAE,CAAC,IAAI,KAAKA,EAAE,GAAG,EAAE,EAAE,QAAQrB,EAAExE,EAAE,CAAC,OAAO8F,EAAE,OAAOC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,QAAQnB,EAAExG,EAAE,CAAC,OAAO0H,EAAE,OAAOC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQvI,EAAEgH,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI1E,EAAE,EAAE,CAAC,IAAI,KAAKA,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS4F,GAAG,EAAE,CAAC,IAAIlI,EAAE,CAAA,EAAG,SAASC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAGA,EAAE,EAAE,EAAE,CAAC,CAAC,EAAED,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAASyE,EAAC,EAAE,QAAQ,GAAGxE,EAAE,EAAE,CAAC,CAAC,EAAED,CAAC,CAAC,SAASmI,GAAG,EAAE,CAAC,OAAO,EAAE,MAAK,EAAG,OAAO,CAACnI,EAAEC,IAAID,EAAE,EAAE,KAAKC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,SAASuI,GAAG,EAAE,CAAC,IAAIxI,EAAE,EAAE,QAAQ,EAAE,WAAWA,EAAE,WAAW,EAAE,OAAOA,EAAE,YAAY,EAAE,MAAK,EAAG,QAAQC,GAAG,CAAC,EAAE,KAAKA,CAAC,EAAE,aAAa,EAAE,WAAWA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIwI,GAAGC,GAAG,SAASA,GAAG,EAAE,CAAC,SAAS1I,EAAEC,EAAE,CAAC,IAAI,EAAE,EAAE,SAASA,CAAC,EAAE,EAAE,EAAE,KAAKA,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQD,CAAC,EAAE,OAAO,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,CAAA,EAAG,EAAE,YAAY,CAAA,EAAG,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE2I,GAAG,EAAE,aAAa,MAAM1I,EAAE,EAAE,CAAC,EAAE0I,GAAG,EAAE,cAAc,MAAM1I,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAASwE,EAAC,EAAE,QAAQzE,CAAC,CAAC,CAAC,SAAS2I,GAAG,EAAE3I,EAAEC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAWD,CAAC,EAAEW,EAAE,EAAEX,CAAC,EAAE,EAAE,CAAC,EAAE,EAAEkD,GAAE,EAAE,SAAS,EAAEjD,CAAC,EAAE,EAAED,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAEW,GAAG,EAAE,QAAQA,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAASiI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,MAAK,EAAG,UAAU,KAAK,OAAO,EAAE,YAAW,GAAI,IAAI,MAAM,IAAI,OAAOC,GAAG,CAAC,CAAC,CAAC,SAASC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,MAAK,EAAG,UAAU,KAAK,OAAO,EAAE,YAAW,GAAI,IAAI,MAAM,IAAI,OAAOC,GAAG,CAAC,GAAG,IAAI,MAAM,IAAI,QAAQC,GAAG,CAAC,EAAEH,GAAG,CAAC,EAAE,CAAC,SAASA,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQ7I,GAAGiJ,GAAG,EAAE,KAAKjJ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQA,GAAGiJ,GAAG,EAAE,KAAKjJ,CAAC,CAAC,CAAC,CAAC,CAAC,SAASiJ,GAAG,EAAE,CAAC,IAAIjJ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAOA,CAAC,CAAC,SAAS+I,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQ/I,GAAGkJ,GAAG,EAAE,KAAKlJ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQA,GAAG,CAAC,IAAIgE,EAAE,IAAI/D,EAAE,EAAE,KAAKD,CAAC,GAAGgE,EAAE/D,EAAE,SAAS,MAAM+D,EAAE,QAAQkF,EAAE,EAAE,OAAO,OAAOjJ,EAAE,GAAG,GAAGiJ,GAAGjJ,CAAC,CAAC,CAAC,CAAC,CAAC,SAASiJ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,SAASF,GAAG,EAAE,CAAC,EAAE,QAAQ,QAAQhJ,GAAGmJ,GAAG,EAAE,KAAKnJ,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,QAAQA,GAAG,CAAC,IAAIgE,EAAE,IAAI/D,EAAE,EAAE,KAAKD,CAAC,GAAGgE,EAAE/D,EAAE,SAAS,MAAM+D,EAAE,QAAQmF,EAAE,EAAE,OAAO,OAAOlJ,EAAE,GAAG,GAAGkJ,GAAGlJ,CAAC,CAAC,CAAC,CAAC,CAAC,SAASkJ,GAAG,EAAE,CAAC,IAAInJ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEA,CAAC,CAAC,SAASoJ,GAAG,EAAE,CAAC,IAAIpJ,EAAE,CAAA,EAAGC,EAAE,EAAE,MAAK,EAAG,OAAO+G,GAAG,CAAC,EAAE,SAASA,CAAC,EAAE,MAAM,EAAE,EAAE/G,EAAE,IAAI+G,GAAG,EAAE,KAAKA,CAAC,EAAE,IAAI,EAAE,EAAErD,EAAE,KAAK,IAAI,CAAC,EAAE,EAAEH,GAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAEwD,EAAE,CAAC,GAAGhH,EAAEgH,CAAC,EAAE,OAAOhH,EAAEgH,CAAC,EAAE,GAAG,IAAIpG,EAAE,EAAE,KAAKoG,CAAC,EAAE,EAAEpG,EAAE,IAAI,EAAE,KAAKoG,CAAC,EAAE,IAAIC,EAAE,EAAE,WAAWD,CAAC,EAAEC,GAAGA,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAOhH,EAAE,KAAK,CAAC+G,EAAEpG,IAAI,EAAE,KAAKoG,CAAC,EAAE,KAAK,EAAE,KAAKpG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,SAASyI,GAAG,EAAErJ,EAAE,CAAC,IAAIC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAED,EAAE,OAAO,EAAE,EAAEC,GAAGqJ,GAAG,EAAEtJ,EAAE,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,OAAOC,CAAC,CAAC,SAASqJ,GAAG,EAAEtJ,EAAEC,EAAE,CAAC,IAAI,EAAEuE,GAAGvE,EAAEA,EAAE,IAAI,CAACW,EAAE,IAAI,CAAC,CAAC,EAAE,EAAEZ,EAAE,QAAQY,GAAG,CAAC,IAAI,EAAE,EAAE,SAASA,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI0B,IAAI,CAAC,IAAI,EAAEA,EAAE,CAAC,EAAE,OAAO,EAAE,KAAKA,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAACA,EAAE,IAAIA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,CAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAErC,EAAE,QAAQ,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAIU,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQC,GAAG,CAAC,IAAI,EAAEA,EAAE,IAAI,EAAED,EAAE,CAAC,GAAGC,EAAE,OAAO,IAAI0B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAIA,GAAG3B,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAEA,EAAE,CAAC,GAAGC,EAAE,OAAO,GAAGA,EAAE,OAAO0B,CAAC,CAAC,EAAE,CAAC,CAAC,SAASiH,GAAG,EAAEvJ,EAAE,GAAG,CAAC,OAAOA,EAAE,IAAIC,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQA,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,MAAM,CAAC,EAAEA,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAIU,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,IAAIA,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,OAAOA,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAEV,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAASuJ,GAAG,EAAExJ,EAAE,CAAC,IAAIC,EAAE,CAAA,EAAG,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,GAAG,CAAA,EAAG,IAAI,CAAA,EAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQA,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAED,EAAE,MAAK,EAAG,QAAQ,GAAG,CAAC,IAAI,EAAEC,EAAE,EAAE,CAAC,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAE,IAAI,QAAQ,IAAI,SAAS,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,OAAOA,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAOwJ,GAAG,CAAC,CAAC,CAAC,SAASA,GAAG,EAAE,CAAC,IAAIzJ,EAAE,GAAG,SAASC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,QAAQ,EAAE,aAAa,QAAQ,EAAE,YAAY,EAAE,aAAayJ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAG,EAAG1J,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,QAAO,EAAG,QAAQC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAOD,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,GAAGsE,GAAE,EAAE,CAAC,KAAK,IAAI,aAAa,QAAQ,CAAC,CAAC,CAAC,CAAC,SAASoF,GAAG,EAAE1J,EAAE,CAAC,IAAIC,EAAE,EAAE,EAAE,EAAE,EAAE,SAASA,GAAG,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,QAAQD,EAAE,SAASC,GAAGD,EAAE,WAAWA,EAAE,OAAO,GAAGA,EAAE,QAAQ,EAAE,GAAGA,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,EAAE,WAAWC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,IAAID,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,OAAO,EAAE,CAAC,SAAS2J,GAAG,EAAE3J,EAAE,CAAC,IAAIC,EAAEiE,GAAG,EAAE,GAAG,OAAO,OAAO,EAAE,YAAY,CAAC,EAAE,EAAEjE,EAAE,IAAI,EAAEA,EAAE,IAAI,KAAK,CAAC,EAAEqC,IAAIA,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAA,EAAG,EAAE,EAAE3B,EAAE,EAAE,EAAE,EAAE,EAAE,KAAKiJ,GAAG,CAAC,CAAC5J,CAAC,CAAC,EAAE,EAAE6J,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,OAAOlJ,GAAG,EAAE,OAAO,EAAEkJ,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAIjJ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,OAAOD,IAAIC,EAAE,WAAW,EAAED,EAAEC,EAAE,OAAOD,GAAGC,CAAC,CAAC,SAASiJ,GAAG,EAAE7J,EAAEC,EAAE,CAAC,IAAI,EAAE,KAAKD,EAAE,SAAS,EAAEA,EAAEA,EAAE,OAAO,CAAC,GAAG,GAAGC,GAAGD,EAAE,IAAG,EAAG,EAAE,KAAK,EAAE,EAAE,EAAEC,IAAI,OAAOA,CAAC,CAAC,SAAS2J,GAAG,EAAE,CAAC,MAAM,CAAC5J,EAAEC,IAAID,EAAE,WAAWC,EAAE,WAAW,GAAGD,EAAE,WAAWC,EAAE,WAAW,EAAE,EAAEA,EAAE,EAAED,EAAE,EAAEA,EAAE,EAAEC,EAAE,CAAC,CAAC,SAAS6J,GAAE,EAAE9J,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,SAASD,CAAC,EAAE,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,OAAOW,EAAE,EAAE,EAAE,YAAY,OAAO,EAAE,CAAA,EAAG,IAAI,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,IAAIA,CAAC,GAAG,IAAIC,EAAE2I,GAAG,EAAE,CAAC,EAAE3I,EAAE,QAAQ,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI2B,EAAEuH,GAAE,EAAE,EAAE,EAAE7J,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEsC,EAAE,OAAO,OAAOA,EAAE,YAAY,GAAGwH,GAAG,EAAExH,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAEiH,GAAG5I,EAAEX,CAAC,EAAE+J,GAAG,EAAE,CAAC,EAAE,IAAI1H,EAAEqH,GAAG,EAAE,CAAC,EAAE,GAAG,GAAGhJ,EAAE,CAAC2B,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAG3B,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,CAAC,IAAI4B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAEC,EAAE,EAAE,aAAa7B,CAAC,EAAEyG,EAAE,EAAE,KAAK5E,EAAE,CAAC,CAAC,EAAE,OAAO,OAAOF,EAAE,YAAY,IAAIA,EAAE,WAAW,EAAEA,EAAE,OAAO,GAAGA,EAAE,YAAYA,EAAE,WAAWA,EAAE,OAAOC,EAAE,MAAM6E,EAAE,QAAQ9E,EAAE,OAAO,GAAGA,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAOA,CAAC,CAAC,SAAS0H,GAAG,EAAEhK,EAAE,CAAC,EAAE,QAAQC,GAAG,CAACA,EAAE,GAAGA,EAAE,GAAG,QAAQ,GAAGD,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS+J,GAAG,EAAE/J,EAAE,CAAC,EAAE,aAAa,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,OAAOA,EAAE,WAAWA,EAAE,SAAS,EAAE,OAAOA,EAAE,QAAQ,EAAE,QAAQA,EAAE,SAAS,EAAE,WAAWA,EAAE,WAAW,EAAE,OAAOA,EAAE,OAAO,CAAC,SAASiK,GAAG,EAAEjK,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,MAAK,GAAI,IAAI,EAAEiK,GAAG,CAAC,EAAE,EAAE,IAAI7J,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,IAAIM,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,GAAGA,EAAE,OAAOX,GAAGW,EAAE,SAASX,GAAGA,GAAGW,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,IAAIC,EAAE,EAAEX,CAAC,EAAE,CAAC,EAAEW,GAAGA,EAAE,QAAQ,GAAG,CAAC,IAAI0B,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAEC,EAAE,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQD,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,OAAOC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,OAAO5B,EAAE,SAAS,GAAG,EAAE,QAAQ,EAAE,CAAC,WAAWA,EAAE,WAAWX,CAAC,EAAE,YAAYW,EAAE,YAAYX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAASkK,GAAG,EAAE,CAAC,IAAIlK,EAAE,KAAK,EAAE,QAAQA,EAAEmD,GAAE,OAAO,CAAC,GAAG,CAAC,OAAOnD,CAAC,CAAC,SAASmK,GAAG,EAAEnK,EAAEC,EAAE,CAAC,IAAI,EAAE,CAAA,EAAG,EAAEA,EAAE,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAEU,EAAE,EAAE,KAAK,GAAG,CAAC,GAAGA,EAAE,EAAE,OAAO,CAAC,EAAEA,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAEA,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,EAAE,CAACX,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,EAAEW,CAAC,CAAC,CAAC,CAAC,CAAC,SAASyJ,GAAE,EAAEpK,EAAE,GAAG,CAAC,GAAG,OAAOA,EAAE,aAAa,WAAW,CAACA,EAAE,YAAY,EAAEoK,EAAC,EAAE,MAAM,CAAC,IAAInK,EAAEwD,GAAE,CAAC,EAAE,EAAE4G,GAAG,EAAE7G,GAAE,EAAEvD,EAAE,CAAC,EAAE,SAAS,EAAE,EAAEoK,GAAG,EAAE7G,GAAEvD,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,EAAEmJ,GAAG,CAAC,EAAE,GAAGkB,GAAG,EAAE,CAAC,EAAEtK,EAAE,6BAA6B,OAAO,IAAI,EAAE,OAAO,kBAAkBW,EAAE,EAAEX,EAAE,aAAa,GAAG,QAAQY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,CAAC2J,GAAG3J,EAAE,EAAE,EAAE,EAAEA,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE2C,GAAE,CAAC,EAAE,IAAIjB,EAAE+G,GAAG,EAAE,CAAC,EAAE/G,EAAE,GAAG,EAAE,EAAE3B,EAAE,OAAO,OAAO,CAAA,EAAG,CAAC,EAAE,EAAE2B,GAAGA,IAAI,IAAI3B,EAAE,gBAAgB,CAAC,EAAE,CAAC2J,GAAG,EAAE3J,CAAC,CAAC,CAAC,SAAS0J,GAAG,EAAErK,EAAEC,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,KAAK,EAAE,MAAK,EAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,UAAU,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,UAAU,OAAO,EAAE,SAAS,SAAS,QAAQU,EAAE,EAAE,QAAQA,GAAG,EAAE,QAAQA,IAAIA,IAAI,EAAE,MAAM,EAAEA,EAAE,CAAC,CAAC,CAAC,OAAOX,EAAE,IAAI,SAAS,EAAE,CAAC,OAAOiK,GAAG,EAAE,EAAEhK,EAAE,EAAE,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,CAAC,CAAC,SAASsK,GAAG,EAAEvK,EAAEC,EAAE,CAAC,IAAI,EAAE,IAAII,EAAE,EAAE,QAAQ,SAAS,EAAE,CAACJ,EAAE,QAAQU,GAAG,EAAE,QAAQA,EAAE,KAAKA,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,KAAK,EAAEmJ,GAAE,EAAE,EAAE,EAAE9J,CAAC,EAAE,EAAE,GAAG,QAAQ,CAACW,EAAE,IAAI,EAAE,KAAKA,CAAC,EAAE,MAAM,CAAC,EAAEwJ,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAASG,GAAG,EAAEtK,EAAE,CAAC,OAAO,OAAOA,CAAC,EAAE,QAAQC,GAAGA,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAASuK,GAAG,EAAExK,EAAE,CAAC,IAAIC,EAAE,CAAA,EAAG,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAEU,EAAE,EAAE,EAAE,EAAE,OAAOC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE0B,IAAI,CAAC,IAAI,EAAEmI,GAAG,EAAE,CAAC,EAAElI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,IAAI3B,KAAK,EAAE,MAAMD,EAAE2B,EAAE,CAAC,EAAE,QAAQE,GAAG,CAAC,IAAI4E,EAAE,EAAE,aAAa5E,CAAC,EAAE4E,GAAGA,EAAE,QAAQkB,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAED,EAAEE,EAAE,OAAOF,EAAE,GAAG9F,EAAE8F,IAAI,EAAEE,EAAE,OAAO,EAAE,KAAK/F,CAAC,EAAE,QAAQkI,GAAGzK,EAAEqI,EAAE9F,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE7B,EAAE2B,EAAE,EAAE,EAAEC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAOvC,EAAE,QAAQA,EAAE,OAAO,CAAC,EAAEC,CAAC,CAAC,SAAS0K,GAAG,EAAE3K,EAAE,CAAC,IAAIC,EAAE,CAAA,EAAG,SAAS,EAAE,EAAE,EAAEU,EAAE,EAAEC,EAAE,CAAC4C,GAAE,EAAE7C,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI2B,EAAE,EAAE,CAAC,EAAE,GAAGA,IAAI,QAAQ,EAAE,KAAKA,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,aAAaA,CAAC,EAAE,GAAG,EAAE,QAAQC,GAAG,CAAC,GAAGA,IAAI,OAAO,OAAO,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAEC,EAAE,QAAQA,EAAE,MAAM,GAAGA,EAAE,MAAM5B,IAAI8J,GAAGzK,EAAEsC,EAAED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI3B,EAAE,GAAG,EAAE,GAAGC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE0B,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,SAAS,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,CAAC,IAAIC,EAAE,EAAE,CAAC,EAAE,GAAGA,IAAI,OAAO,OAAO,EAAE,EAAE,KAAKA,CAAC,EAAE,MAAM,EAAE,EAAE3B,EAAE0B,EAAE3B,EAAE,CAAC,EAAEC,EAAE0B,EAAE3B,EAAE,CAAC,CAAC,CAAC,EAAE,EAAEC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAOZ,EAAE,QAAQA,EAAE,OAAO,CAAC,EAAEC,CAAC,CAAC,SAASwK,GAAG,EAAEzK,EAAE,CAAC,GAAG,EAAE,KAAKA,CAAC,EAAE,MAAM,CAAC,IAAIC,EAAE,EAAE,aAAaD,CAAC,EAAE,GAAGC,EAAE,OAAOA,EAAE,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAASyK,GAAG,EAAE1K,EAAEC,EAAE,CAAC,GAAGD,EAAEC,EAAE,CAAC,IAAI,EAAED,EAAEA,EAAEC,EAAEA,EAAE,CAAC,CAAC,IAAI,EAAE,EAAED,CAAC,EAAE,IAAI,EAAEA,CAAC,EAAE,EAAE,CAAA,GAAI,EAAEC,CAAC,EAAE,EAAE,CAAC,SAAS2K,GAAG,EAAE5K,EAAEC,EAAE,CAAC,GAAGD,EAAEC,EAAE,CAAC,IAAI,EAAED,EAAEA,EAAEC,EAAEA,EAAE,CAAC,CAAC,IAAI,EAAE,EAAED,CAAC,EAAE,OAAO,IAAI,QAAQ,OAAO,OAAO,EAAEC,CAAC,CAAC,CAAC,SAAS4K,GAAG,EAAE7K,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA,EAAG,EAAE,GAAG,EAAE,CAAA,EAAG,OAAOD,EAAE,QAAQW,GAAG,CAACA,EAAE,QAAQ,CAAC,EAAEC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEZ,EAAE,QAAQW,GAAG,CAAC,IAAI,EAAE,GAAGA,EAAE,QAAQC,GAAG,CAAC,IAAI,EAAE,EAAEA,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,CAAC,IAAI0B,EAAE,EAAE,KAAK,CAACC,EAAEC,IAAI,CAAC,IAAI4E,EAAE,EAAE7E,CAAC,EAAE+F,EAAE,EAAE9F,CAAC,EAAE,OAAO4E,IAAI,OAAOA,EAAE,IAAIkB,IAAI,OAAOA,EAAE,EAAE,CAAC,EAAE,GAAGhG,EAAE,OAAO,GAAG,EAAE,QAAQC,EAAE,KAAK,MAAM,CAAC,EAAEC,EAAE,KAAK,KAAK,CAAC,EAAED,GAAGC,EAAE,EAAED,EAAE,CAAC,IAAI6E,EAAE9E,EAAEC,CAAC,EAAE,GAAG6E,IAAI,OAAO,SAAS,IAAIkB,EAAE,EAAElB,CAAC,EAAE,GAAGkB,IAAI,QAAQ,EAAE1H,CAAC,IAAIA,GAAG,EAAE0H,GAAG,CAACsC,GAAG3K,EAAEW,EAAEwG,CAAC,EAAE,CAAC,IAAImB,EAAE,EAAEnB,CAAC,EAAEmB,IAAI,SAAS,EAAEnB,CAAC,EAAExG,EAAE,EAAEA,CAAC,EAAE,EAAEA,CAAC,EAAE2H,EAAE,EAAED,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAASwC,GAAG,EAAE9K,EAAEC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA,EAAG,EAAE8K,GAAG,EAAE/K,EAAEC,EAAE,CAAC,EAAEU,EAAE,EAAE,aAAa,cAAc,SAAS,EAAE4B,EAAEC,EAAE,CAAC,IAAI4E,EAAE,EAAE,MAAK,EAAG,MAAK,EAAGkB,EAAE,CAAA,EAAGC,EAAEnB,EAAE,MAAM,KAAKmB,GAAG,CAAC,GAAGD,EAAEC,CAAC,EAAEhG,EAAEgG,CAAC,MAAM,CAACD,EAAEC,CAAC,EAAE,GAAGnB,EAAE,KAAKmB,CAAC,EAAE,QAAQF,KAAK7F,EAAE+F,CAAC,EAAEnB,EAAE,KAAKiB,CAAC,CAAC,CAACE,EAAEnB,EAAE,KAAK,CAAC,CAAC,SAASxG,EAAE2B,EAAE,CAAC,IAAIC,EAAE,EAAE,QAAQD,CAAC,EAAEC,EAAE,EAAED,CAAC,EAAEC,EAAE,OAAO,CAAC4E,EAAEkB,IAAI,CAAC,IAAI0C,EAAE,IAAIzC,GAAGyC,EAAE,EAAE1C,EAAE,CAAC,IAAI,KAAK0C,EAAE,EAAE3C,EAAE,EAAE,KAAKC,CAAC,EAAE,OAAO,KAAK,IAAIlB,EAAEmB,GAAGF,IAAI,OAAOA,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE9F,CAAC,EAAE,CAAC,CAAC,SAAS,EAAEA,EAAE,CAAC,IAAIC,EAAE,EAAE,SAASD,CAAC,EAAE6E,EAAE,OAAO,kBAAkB5E,IAAI4E,EAAE5E,EAAE,OAAO,CAAC+F,EAAEF,IAAI,CAAC,IAAI,EAAE,EAAEA,EAAE,CAAC,EAAE4C,EAAG,EAAE,KAAK5C,CAAC,EAAE,OAAO,KAAK,IAAIE,GAAG,IAAI,OAAO,EAAE,IAAI0C,IAAK,OAAOA,EAAG,EAAE,CAAC,EAAE,OAAO,iBAAiB,GAAG,IAAI3C,EAAE,EAAE,KAAK/F,CAAC,EAAE6E,IAAI,OAAO,mBAAmBkB,EAAE,aAAa3H,IAAI,EAAE4B,CAAC,EAAE,KAAK,IAAI,EAAEA,CAAC,IAAI,OAAO,EAAEA,CAAC,EAAE,EAAE6E,CAAC,EAAE,CAAC,SAAS9E,EAAEC,EAAE,CAAC,OAAO,EAAE,aAAaA,CAAC,GAAG,CAAA,CAAE,CAAC,SAAS,EAAEA,EAAE,CAAC,OAAO,EAAE,WAAWA,CAAC,GAAG,CAAA,CAAE,CAAC,OAAO,EAAE3B,EAAE0B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,QAAQC,GAAG,CAAC,IAAI,EAAE,IAAIC,EAAEvC,EAAEsC,CAAC,EAAEC,IAAI,SAAS,EAAED,CAAC,GAAG,EAAE,EAAEC,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,SAASuI,GAAG,EAAE/K,EAAEC,EAAE,EAAE,CAAC,IAAI,EAAE,IAAII,EAAE,EAAE,EAAE,MAAK,EAAG,EAAE6K,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAOlL,EAAE,QAAQW,GAAG,CAAC,IAAI,EAAEA,EAAE,QAAQC,GAAG,CAAC,IAAI,EAAEX,EAAEW,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI0B,EAAErC,EAAE,CAAC,EAAE,GAAGqC,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,QAAQA,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE1B,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAASuK,GAAG,EAAEnL,EAAE,CAAC,OAAO,OAAO,OAAOA,CAAC,EAAE,OAAO,CAACC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,kBAAkB,EAAE,OAAO,kBAAkB,OAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAACU,EAAE,CAAC,IAAI,CAAC,IAAIC,EAAEwK,GAAG,EAAEzK,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAEC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAEX,EAAE,CAAC,IAAIA,EAAE,CAAC,EAAE,CAAC,GAAGA,CAAC,EAAE,CAAC,OAAO,kBAAkB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAASoL,GAAG,EAAErL,EAAE,CAAC,IAAIC,EAAE,OAAO,OAAOD,CAAC,EAAE,EAAE2D,EAAE,KAAK,IAAI1D,CAAC,EAAE,EAAE0D,EAAE,KAAK,IAAI1D,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,GAAG,CAAC,IAAIU,EAAE,EAAE,EAAE,EAAE,EAAEA,CAAC,EAAE,GAAG,CAAC,GAAG,IAAIX,EAAE,OAAO,IAAIY,EAAE,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE+C,EAAE,KAAK,IAAI/C,CAAC,EAAE,IAAI,MAAM,EAAE,EAAE+C,EAAE,KAAK,IAAI/C,CAAC,GAAG,IAAI,EAAED,CAAC,EAAE4D,GAAE,EAAEjC,GAAGA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAASgJ,GAAG,EAAEtL,EAAE,OAAO,CAAC,IAAIC,EAAE,EAAE,GAAG,OAAOA,EAAEsE,GAAEtE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAImF,EAAEzE,EAAE,GAAGX,EAAE,CAAC,IAAI,EAAEA,EAAE,YAAW,EAAGY,EAAE,EAAE,CAAC,EAAE,GAAGA,GAAGA,EAAE,CAAC,IAAI,OAAO,OAAOA,EAAE,CAAC,CAAC,CAAC,IAAIuE,EAAE,OAAO,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,IAAIvE,EAAE,EAAE,CAAC,EAAE,OAAOA,IAAI,OAAOA,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAEA,IAAI,EAAEA,CAAC,EAAE,SAASwE,EAAED,EAAE,CAAC,IAAI,KAAKC,EAAE,KAAKzE,EAAEwE,EAAE,CAAC,IAAI,KAAKxE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAA,CAAE,CAAC,SAAS4K,GAAG,EAAE,CAAC,IAAIvL,EAAEuD,GAAE,CAAC,EAAEtD,EAAE,OAAO,OAAOuK,GAAG,EAAExK,CAAC,EAAE2K,GAAG,EAAE3K,CAAC,CAAC,EAAE,EAAE,CAAA,EAAG,EAAE,CAAC,IAAI,GAAG,EAAE,QAAQ,GAAG,CAAC,EAAE,IAAI,IAAIA,EAAE,OAAO,OAAOA,CAAC,EAAE,QAAO,EAAG,CAAC,IAAI,GAAG,EAAE,QAAQW,GAAG,CAACA,IAAI,MAAM,EAAE,EAAE,IAAI2B,GAAG,OAAO,OAAOA,CAAC,EAAE,SAAS,GAAG,IAAI1B,EAAEiK,GAAG,EAAE,EAAE5K,EAAEqC,IAAI,IAAI,IAAI,EAAE,aAAaA,CAAC,EAAE,EAAE,WAAWA,CAAC,IAAI,CAAA,CAAE,EAAE2E,EAAE6D,GAAG,EAAE,EAAElK,EAAE,KAAKA,EAAE,MAAMD,IAAI,GAAG,EAAEA,IAAI,MAAMsG,EAAE1C,GAAE0C,EAAE3E,GAAG,CAACA,CAAC,GAAG,EAAE,EAAE3B,CAAC,EAAEsG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAEkE,GAAG,EAAE,CAAC,EAAE,OAAOE,GAAG,EAAE,CAAC,EAAEC,GAAG,EAAE,EAAE,MAAK,EAAG,KAAK,CAAC,CAAC,SAASJ,GAAG,EAAElL,EAAEC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAEU,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAEC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,OAAO,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,YAAW,EAAE,CAAE,IAAI,IAAIA,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,IAAIA,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAGA,IAAI,GAAGX,EAAEW,EAAE,CAACA,GAAGA,EAAE,OAAO,IAAI,EAAE,MAAMZ,EAAE,GAAG,EAAE,IAAIW,EAAE,MAAMX,EAAE,GAAG,EAAE,GAAGW,EAAE,MAAM,EAAE,OAAO,OAAOA,EAAE,UAAU,EAAE,OAAOA,EAAE,SAAS,YAAW,EAAE,CAAE,IAAI,IAAIC,EAAED,EAAE,MAAM,EAAE,MAAM,IAAI,IAAIC,EAAE,CAACD,EAAE,MAAM,EAAE,KAAK,CAAC,OAAOC,IAAI,GAAGX,EAAEW,EAAE,CAACA,GAAG,CAAC,CAAC,CAAC,SAASwK,GAAG,EAAEpL,EAAE,CAAC,OAAO,EAAE,KAAKA,CAAC,EAAE,KAAK,CAAC,SAASwL,GAAG,EAAE,CAAC,EAAEnI,GAAE,CAAC,EAAEoI,GAAG,CAAC,EAAE,OAAO,QAAQF,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAACvL,EAAEC,CAAC,IAAI,EAAE,KAAKD,CAAC,EAAE,EAAEC,CAAC,CAAC,CAAC,SAASwL,GAAG,EAAE,CAAC,IAAIzL,EAAEuD,GAAE,CAAC,EAAEtD,EAAE,EAAE,MAAK,EAAG,EAAEA,EAAE,QAAQ,EAAEA,EAAE,UAAU,EAAE,EAAED,EAAE,QAAQ,GAAG,CAAC,IAAIW,EAAE,EAAE,OAAO,CAAC,EAAEC,IAAI,CAAC,IAAI0B,EAAE,IAAI2E,GAAG3E,EAAE,EAAE,KAAK1B,CAAC,EAAE,SAAS,KAAK0B,EAAE,EAAE,OAAO,EAAE2E,EAAE,EAAEA,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,IAAIrG,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,MAAMA,EAAE,EAAE,EAAEA,EAAE,OAAO,EAAE,IAAI,SAASA,EAAE,EAAE,EAAED,EAAEC,EAAE,OAAO,EAAEA,EAAE,EAAE,EAAED,EAAE,CAAC,CAAC,EAAE,GAAGA,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS+K,GAAG,EAAE1L,EAAE,CAAA,EAAG,CAAC,IAAIC,EAAED,EAAE,YAAYmE,GAAEC,GAAE,OAAOnE,EAAE,SAAS,IAAI,CAAC,IAAI,EAAEA,EAAE,qBAAqB,IAAI0L,GAAG,CAAC,CAAC,EAAE,OAAO1L,EAAE,cAAc,IAAI2L,GAAG,EAAE3L,EAAED,CAAC,CAAC,EAAEC,EAAE,qBAAqB,IAAI4L,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAASD,GAAG,EAAE5L,EAAEC,EAAE,CAACD,EAAE,6BAA6B,IAAI8L,GAAG,CAAC,CAAC,EAAE9L,EAAE,sBAAsB,IAAI+L,GAAG,CAAC,CAAC,EAAE/L,EAAE,cAAc,IAAIwF,GAAG,CAAC,CAAC,EAAExF,EAAE,uBAAuB,IAAIiI,GAAG,CAAC,CAAC,EAAEjI,EAAE,WAAW,IAAIwH,GAAGnE,GAAE,CAAC,CAAC,CAAC,EAAErD,EAAE,6BAA6B,IAAIgM,GAAG,CAAC,CAAC,EAAEhM,EAAE,uBAAuB,IAAI4D,GAAG,CAAC,CAAC,EAAE5D,EAAE,2BAA2B,IAAIwI,GAAG,CAAC,CAAC,EAAExI,EAAE,qBAAqB,IAAI0D,GAAG,CAAC,CAAC,EAAE1D,EAAE,uBAAuB,IAAIiM,GAAG,CAAC,CAAC,EAAEjM,EAAE,6BAA6B,IAAIkM,GAAG,CAAC,CAAC,EAAElM,EAAE,oBAAoB,IAAI2F,GAAG,CAAC,CAAC,EAAE3F,EAAE,wBAAwB,IAAI6H,GAAG,CAAC,CAAC,EAAE7H,EAAE,wBAAwB,IAAIyI,GAAG,CAAC,CAAC,EAAEzI,EAAE,YAAY,IAAIoK,GAAE,EAAEnK,CAAC,CAAC,EAAED,EAAE,sBAAsB,IAAImM,GAAG,CAAC,CAAC,EAAEnM,EAAE,6BAA6B,IAAI4I,GAAG,CAAC,CAAC,EAAE5I,EAAE,eAAe,IAAIwL,GAAG,CAAC,CAAC,EAAExL,EAAE,wBAAwB,IAAIoM,GAAG,CAAC,CAAC,EAAEpM,EAAE,wBAAwB,IAAIqM,GAAG,CAAC,CAAC,EAAErM,EAAE,qBAAqB,IAAI6F,GAAG,CAAC,CAAC,EAAE7F,EAAE,2BAA2B,IAAIsM,GAAG,CAAC,CAAC,EAAEtM,EAAE,2BAA2B,IAAI8I,GAAG,CAAC,CAAC,EAAE9I,EAAE,qBAAqB,IAAIuM,GAAG,CAAC,CAAC,EAAEvM,EAAE,2BAA2B,IAAIwM,GAAG,CAAC,CAAC,EAAExM,EAAE,oBAAoB,IAAIyM,GAAG,CAAC,CAAC,EAAEzM,EAAE,mBAAmB,IAAI0F,GAAG,CAAC,CAAC,CAAC,CAAC,SAASmG,GAAG,EAAE7L,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAED,EAAE,KAAKC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAKD,EAAE,SAASC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQA,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAED,EAAE,KAAKC,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,OAAO,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAK,EAAG,MAAMD,EAAE,MAAK,EAAG,MAAM,EAAE,MAAK,EAAG,OAAOA,EAAE,MAAK,EAAG,MAAM,CAAC,IAAI0M,GAAG,CAAC,UAAU,UAAU,UAAU,UAAU,SAAS,EAAEC,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,KAAK,UAAU,QAAQ,EAAEC,GAAG,CAAC,YAAY,SAAS,UAAU,QAAQ,WAAW,EAAEC,GAAG,CAAC,QAAQ,SAAS,MAAM,EAAEC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAEC,GAAG,CAAC,SAAS,SAAS,QAAQ,SAAS,aAAa,EAAEC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,EAAEC,GAAG,CAAC,UAAU,EAAE,SAAStB,GAAG,EAAE,CAAC,IAAI3L,EAAE,IAAIK,EAAE,CAAC,WAAW,GAAG,SAAS,EAAE,CAAC,EAAEJ,EAAEiN,GAAG,EAAE,MAAK,CAAE,EAAE,OAAOlN,EAAE,SAAS,OAAO,OAAO,CAAA,EAAG2M,GAAGQ,GAAGlN,EAAEyM,EAAE,EAAEpI,GAAErE,EAAE2M,EAAE,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQ,GAAG,CAAC,IAAI,EAAEM,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,EAAEC,GAAG,EAAEN,EAAE,EAAE,OAAO,KAAKC,EAAE,EAAE,QAAQnM,GAAG,CAAC,EAAEA,CAAC,IAAI,SAAS,EAAEA,CAAC,EAAEmM,GAAGnM,CAAC,EAAE,CAAC,EAAEX,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,QAAQA,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,QAAQ,GAAG,CAAC,IAAI,EAAEkN,GAAG,EAAE,KAAK,CAAC,CAAC,EAAElN,EAAE,QAAQ,EAAE,OAAO,OAAO,CAAA,EAAGgN,GAAGG,GAAG,EAAEJ,EAAE,EAAEzI,GAAE,EAAE2I,EAAE,CAAC,CAAC,CAAC,CAAC,EAAEjN,CAAC,CAAC,SAAS8L,GAAG,EAAE,CAAC,IAAI9L,EAAE,EAAE,MAAK,EAAGA,EAAE,SAAS,EAAE,EAAE,MAAK,EAAG,QAAQC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,YAAW,IAAK,MAAMD,EAAE,UAAU,MAAMA,EAAE,UAAU,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,SAASgM,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQhM,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,GAAGC,EAAE,OAAOA,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAKD,EAAE,CAAC,EAAEmF,EAAE,CAAC,MAAM,EAAE,KAAKnF,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAEA,CAAC,EAAEkD,GAAE,EAAE,aAAaiC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS8G,GAAG,EAAE,CAAC,IAAIjM,EAAE,EAAE,EAAE,MAAK,EAAG,QAAQC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,KAAKD,EAAE,KAAK,IAAIA,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQA,CAAC,CAAC,SAASkM,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQlM,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,GAAGC,EAAE,QAAQ,aAAa,CAAC,IAAI,EAAEA,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAUA,EAAE,KAAK,EAAE,WAAWD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASuM,GAAG,EAAE,CAAC,IAAIvM,EAAE,OAAO,kBAAkBC,EAAE,EAAE,EAAE,OAAO,kBAAkB,EAAE,EAAE,EAAE,EAAE,MAAK,EAAG,EAAE,EAAE,SAAS,EAAEU,EAAE,EAAE,SAAS,EAAE,SAAS,EAAEC,EAAE,CAAC,IAAI,EAAEA,EAAE,EAAE0B,EAAE1B,EAAE,EAAE,EAAEA,EAAE,MAAM2B,EAAE3B,EAAE,OAAOZ,EAAE,KAAK,IAAIA,EAAE,EAAE,EAAE,CAAC,EAAEC,EAAE,KAAK,IAAIA,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,EAAEqC,EAAEC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,EAAED,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAK,EAAG,QAAQ3B,GAAG,EAAE,EAAE,KAAKA,CAAC,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQA,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,OAAO,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAEZ,GAAG,EAAE,GAAGW,EAAE,EAAE,MAAK,EAAG,QAAQC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAE,GAAGZ,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,QAAQY,GAAG,CAAC,IAAI,EAAE,EAAE,KAAKA,CAAC,EAAE,EAAE,OAAO,QAAQ0B,GAAG,CAACA,EAAE,GAAGtC,EAAEsC,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,GAAG,IAAI,EAAE,GAAGtC,GAAG,OAAO,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,MAAMC,EAAED,EAAE,EAAE,EAAE,OAAO,EAAE,EAAEW,CAAC,CAAC,SAAS6L,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQxM,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,EAAEC,EAAE,QAAQ,EAAEA,EAAE,OAAO,CAAC,EAAE,EAAEA,EAAE,OAAOA,EAAE,OAAO,OAAO,CAAC,IAAIA,EAAE,OAAO,CAAA,EAAG,EAAE,EAAE,EAAE,GAAGA,EAAE,OAAO,QAAQqD,GAAE,EAAE,CAAC,CAAC,EAAErD,EAAE,OAAO,KAAKqD,GAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASgJ,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQtM,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,GAAG,OAAO,OAAOC,EAAE,GAAG,EAAE,QAAQA,EAAE,WAAW,KAAKA,EAAE,WAAW,OAAOA,EAAE,OAAOA,EAAE,aAAaA,EAAE,SAAQ,CAAE,IAAI,IAAIA,EAAE,GAAGA,EAAE,MAAM,EAAEA,EAAE,YAAY,MAAM,IAAI,IAAIA,EAAE,GAAGA,EAAE,MAAM,EAAEA,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,SAASwM,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQzM,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAEC,EAAE,UAAUA,EAAE,OAAO,QAAO,CAAE,CAAC,CAAC,CAAC,SAASoM,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQrM,GAAG,CAAC,GAAG,EAAE,SAASA,CAAC,EAAE,OAAO,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,EAAE,EAAE,KAAKC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAKA,EAAE,YAAY,EAAE,EAAE,EAAE,KAAKA,EAAE,WAAWA,EAAE,WAAW,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAKA,EAAE,YAAYA,EAAE,YAAY,OAAO,CAAC,CAAC,EAAEA,EAAE,MAAM,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,OAAO,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,EAAE,EAAEA,EAAE,MAAM,EAAEA,EAAE,EAAE,EAAE,EAAEA,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQD,GAAG,CAAC,EAAE,KAAKA,CAAC,EAAE,QAAQ,UAAU,EAAE,WAAWA,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS+L,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQ/L,GAAG,CAAC,GAAGA,EAAE,IAAIA,EAAE,EAAE,CAAC,IAAIC,EAAE,EAAE,KAAKD,EAAE,CAAC,EAAEC,EAAE,YAAYA,EAAE,UAAU,CAAA,GAAIA,EAAE,UAAU,KAAK,CAAC,EAAED,EAAE,MAAM,EAAE,KAAKA,CAAC,CAAC,CAAC,EAAE,EAAE,WAAWA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASmM,GAAG,EAAE,CAAC5I,GAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAIS,EAAE,EAAE,EAAE,QAAQ,CAACC,EAAEkB,IAAI,CAAC,IAAIC,EAAE,EAAE,KAAKnB,CAAC,EAAEmB,EAAE,MAAMD,EAAEnB,GAAGoB,EAAE,WAAW,CAAA,GAAI,QAAQzE,GAAG,CAACuC,GAAE,EAAE,WAAW,CAAC,MAAMvC,EAAE,MAAM,MAAM,OAAOA,EAAE,MAAM,OAAO,KAAKyE,EAAE,KAAK,MAAMD,GAAG,EAAEnB,EAAE,EAAErD,EAAE,EAAE,MAAMA,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,OAAOyE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAASgH,GAAG,EAAE,CAAC,EAAE,MAAK,EAAG,QAAQpM,GAAG,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAE,GAAGC,EAAE,QAAQ,WAAW,CAAC,IAAI,EAAEA,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAEU,EAAEV,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,WAAWD,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,EAAEW,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAEV,EAAE,EAAE,EAAE,MAAM,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAASkN,GAAG,EAAEnN,EAAE,CAAC,OAAOuE,GAAED,GAAE,EAAEtE,CAAC,EAAE,MAAM,CAAC,CAAC,SAASkN,GAAG,EAAE,CAAC,IAAIlN,EAAE,CAAA,EAAG,OAAO,GAAG,OAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAACC,EAAE,CAAC,IAAI,CAAC,OAAOA,GAAG,WAAWA,EAAEA,EAAE,eAAeD,EAAEC,CAAC,EAAE,CAAC,CAAC,EAAED,CAAC,CAAC,SAASoN,GAAG,EAAE,CAAC,IAAIpN,EAAEuD,GAAE,CAAC,EAAEtD,EAAE,IAAII,EAAE,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC,EAAE,SAAS,CAAA,CAAE,EAAE,OAAO,EAAE,MAAK,EAAG,QAAQ,GAAG,CAACJ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAEA,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,MAAK,EAAG,QAAQ,GAAGA,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAED,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAEC,EAAE,QAAQ,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAEU,KAAKV,EAAE,QAAQ,EAAEU,EAAE,CAAC,MAAM,OAAO,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEV,CAAC,CAAI,IAAsBoN,GAAG,CAAC,SAASjN,GAAE,QAAQsE,GAAE,OAAOgH,GAAG,MAAM0B,GAAG,KAAK,CAAC,KAAKjJ,GAAE,OAAOC,EAAC,CAAC,EAAEkJ,GAAGD,GAC55uC,gECQA,MAAME,GAAuBC,GAAkC,CAC7D,MAAMC,EAAkB,CAAA,EACxB,OAAAD,EAAM,cAAc,QAAQ,CAACE,EAAMC,IAAOF,EAAM,KAAK,GAAGE,CAAE,IAAID,EAAK,QAAU,CAAC,EAAE,CAAC,EAC1ED,EAAM,KAAK,GAAG,CACvB,EAEMG,GAAgB,CAAC,CAAE,eAAAC,EAAgB,UAAAC,KAAuB,CAC9D,MAAMC,EAAcC,GAAAA,SAAST,EAAmB,EAC1CU,EAAUC,EAAAA,OAAO,EAAE,EACHA,EAAAA,OAAO,CAAC,EAC9B,KAAM,CAAE,QAAAC,CAAA,EAAYC,gBAAA,EAEpBC,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACN,GAAeA,IAAgBE,EAAQ,QAAS,OAGrD,MAAMK,EAAkC,CAAA,EACxC,UAAWC,KAAQR,EAAY,MAAM,GAAG,EAAG,CACzC,KAAM,CAACJ,EAAIzG,CAAC,EAAIqH,EAAK,MAAM,GAAG,EACxBC,EAAS,OAAOtH,CAAC,EACnByG,GAAMa,EAAS,IAAGF,EAAQX,CAAE,EAAIa,EACtC,CAEI,OAAO,KAAKF,CAAO,EAAE,SAAW,IACpCL,EAAQ,QAAUF,EAClBF,EAAeS,CAAO,EACxB,EAAG,CAACP,CAAW,CAAC,EAET,IACT,ECNMU,GAA6D,CACjE,KAAO,CAAE,GAAI,UAAW,GAAI,SAAA,EAC5B,MAAO,CAAE,GAAI,UAAW,GAAI,SAAA,EAC5B,MAAO,CAAE,GAAI,UAAW,GAAI,SAAA,EAC5B,IAAO,CAAE,GAAI,UAAW,GAAI,SAAA,CAC9B,EAEO,SAASC,GAAgB,CAC9B,aAAAC,EACA,qBAAAC,EACA,OAAAC,EACA,YAAAC,EAAc,OACd,OAAAC,EACA,SAAAC,EACA,UAAAC,EAAY,OACZ,aAAAC,EAAe,EACjB,EAAyB,CACvB,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAM,SAAS,EAAK,EAC1C,CAACC,EAAaC,CAAc,EAAIF,EAAM,SAAS,EAAK,EACpD,CAACG,EAAWC,CAAY,EAAIJ,EAAM,SAASV,GAAgB,EAAE,EAEnEU,EAAM,UAAU,IAAM,CAAEI,EAAad,GAAgB,EAAE,CAAG,EAAG,CAACA,CAAY,CAAC,EAE3E,MAAMe,EAAa,SAAY,CAC7B,GAAI,GAACX,GAAUI,GAAUD,GACzB,CAAAE,EAAU,EAAI,EACd,GAAI,CACF,MAAML,EAAA,CACR,QAAA,CACEK,EAAU,EAAK,CACjB,EACF,EAEMO,EAAgBlB,GAAeK,CAAW,GAAK,CACnD,GAAIA,EACJ,GAAI,MAAA,EAGN,OACEc,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OAAQ,WAAY,SAAU,IAAK,GAC5C,QAAS,YACT,WAAY,OACZ,aAAc,oBACd,WAAY,CAAA,EAId,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,GAAI,SAAU,CAAA,EACrE,SAAA,CAAAN,GAAeV,EACdiB,EAAAA,IAAC,QAAA,CACC,MAAOL,EACP,SAAWM,GAAML,EAAaK,EAAE,OAAO,KAAK,EAC5C,OAAQ,IAAM,CACZP,EAAe,EAAK,EAChBC,IAAcb,GAAcC,EAAqBY,CAAS,CAChE,EACA,UAAYM,GAAM,CACZA,EAAE,MAAQ,SAAUA,EAAE,OAA4B,KAAA,EAClDA,EAAE,MAAQ,WAAYL,EAAad,GAAgB,EAAE,EAAGY,EAAe,EAAK,EAClF,EACA,UAAS,GACT,MAAO,CACL,SAAU,GAAI,WAAY,IAAK,MAAO,UACtC,OAAQ,oBAAqB,aAAc,EAC3C,QAAS,UAAW,SAAU,GAAA,CAChC,CAAA,EAGFM,EAAAA,IAAC,OAAA,CACC,QAAS,IAAMjB,GAAwBW,EAAe,EAAI,EAC1D,MAAO,CACL,SAAU,GAAI,WAAY,IAAK,MAAO,UACtC,OAAQX,EAAuB,OAAS,UACxC,WAAY,SAAU,SAAU,SAAU,aAAc,WACxD,SAAU,GAAA,EAEZ,MAAOD,EAEN,SAAAA,GAAgB,mBAAA,CAAA,EAIpBE,GACCgB,EAAAA,IAAC,OAAA,CACC,MAAO,CACL,SAAU,GAAI,WAAY,IAC1B,QAAS,UAAW,aAAc,IAClC,WAAYF,EAAc,GAAI,MAAOA,EAAc,GACnD,cAAe,YAAa,cAAe,GAC3C,WAAY,CAAA,EAGb,SAAAd,CAAA,CAAA,CACH,EAEJ,EAGAe,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,WAAY,OAAQ,QAAS,OAAQ,WAAY,SAAU,IAAK,CAAA,EAC3E,SAAA,CAAAZ,GACCa,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAASb,EACT,SAAUG,EACV,MAAO,CACL,QAAS,WAAY,SAAU,GAAI,WAAY,IAC/C,OAAQ,oBAAqB,WAAY,OACzC,MAAO,UAAW,aAAc,EAChC,OAAQA,EAAS,cAAgB,UACjC,QAASA,EAAS,GAAM,CAAA,EAE3B,SAAA,QAAA,CAAA,EAIFJ,GACCc,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAASH,EACT,SAAUP,GAAUD,EACpB,MAAO,CACL,QAAS,WAAY,SAAU,GAAI,WAAY,IAC/C,OAAQ,OACR,WAAYA,EAAe,UAAY,6BACvC,MAAO,OAAQ,aAAc,EAC7B,OAAQC,GAAUD,EAAe,cAAgB,UACjD,QAAS,cAAe,WAAY,SAAU,IAAK,EACnD,SAAU,GAAI,eAAgB,QAAA,EAG/B,WAAS,UAAYD,CAAA,CAAA,CACxB,CAAA,CAEJ,CAAA,CAAA,CAAA,CAGN,CC3JA,MAAMc,GAAa,CAAC,CAAE,OAAAC,EAAQ,QAAAC,EAAS,MAAAC,EAAO,KAAAC,EAAM,SAAAC,EAAU,OAAAC,EAAQ,MAAAC,EAAQ,OAA2B,CACvG,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAS,EAAK,EAEtCC,EAAc,IAAMF,EAAYzK,GAAM,CAACA,CAAC,EAExC4K,EAAS,IACbf,EAAAA,KAACgB,MAAA,CAAI,GAAI,CAAE,QAAS,OAAQ,WAAY,SAAU,EAAG,EAAG,GAAI,EAAG,aAAc,oBAAqB,GAAI,EAAG,WAAY,GAClH,SAAA,CAAAT,GACCN,EAAAA,IAACe,MAAA,CAAI,GAAI,CAAE,GAAI,IAAK,QAAS,OAAQ,WAAY,SAAU,SAAU,UAAW,MAAO,WACpF,SAAAT,EACH,EAMFN,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,SAAU,EAAG,SAAU,GAAI,WAAY,IAAK,MAAO,SAAA,EAC/D,SAAAK,EACH,EACAL,EAAAA,IAACgB,EAAAA,YAAW,QAASH,EAAa,KAAK,QAAQ,GAAI,CAAE,GAAI,CAAA,EAAK,MAAOH,EAAU,WAAa,SAAU,cAAY,kCAC/G,SAAAA,QAAWO,cAAA,CAAA,CAAW,EAAKjB,EAAAA,IAACkB,YAAA,CAAA,CAAS,CAAA,CACxC,EACAlB,EAAAA,IAACgB,EAAAA,WAAA,CAAW,QAASZ,EAAS,KAAK,QAAQ,cAAY,sBACrD,SAAAJ,EAAAA,IAACmB,EAAAA,QAAA,CAAA,CAAQ,CAAA,CACX,CAAA,EACF,EAGIC,EAAS,IACbZ,EACER,EAAAA,IAACe,EAAAA,KAAI,GAAI,CAAE,WAAY,EAAG,EAAG,EAAG,UAAW,oBAAqB,QAAS,OAAQ,eAAgB,WAAY,IAAK,GAC/G,SAAAP,CAAA,CACH,EACE,KAEN,OAAIE,EAEAX,EAAAA,KAACsB,EAAAA,OAAA,CAAO,KAAMlB,EAAQ,QAAAC,EAAkB,SAAU,GAAO,UAAS,GAAC,WAAY,CAAE,GAAI,CAAE,QAAS,OAAQ,cAAe,SAAU,OAAQ,OAAQ,UAAW,GAAI,MAAO,QAAS,SAAU,MAAA,CAAO,EAC/L,SAAA,CAAAJ,EAAAA,IAACc,EAAA,EAAO,EACRd,EAAAA,IAACe,EAAAA,IAAA,CAAI,GAAI,CAAE,SAAU,EAAG,UAAW,OAAQ,EAAG,CAAA,EAAM,SAAAR,CAAA,CAAS,QAC5Da,EAAA,CAAA,CAAO,CAAA,EACV,EAKFrB,EAAAA,KAACuB,EAAAA,OAAA,CACC,OAAO,QACP,KAAMnB,EACN,QAAAC,EACA,QAAQ,aACR,GAAI,CAAE,OAAQ,GAAA,EACd,WAAY,CAAE,YAAa,EAAA,EAC3B,WAAY,CACV,GAAI,CACF,MAAAK,EACA,SAAU,QACV,IAAK,OACL,OAAQ,oBACR,MAAO,OACP,aAAc,MACd,OAAQ,oBACR,UAAW,OACX,OAAQ,IACR,QAAS,OACT,cAAe,QAAA,CACjB,EAGF,SAAA,CAAAT,EAAAA,IAACc,EAAA,EAAO,EACRd,EAAAA,IAACe,EAAAA,IAAA,CAAI,GAAI,CAAE,SAAU,EAAG,UAAW,OAAQ,EAAG,CAAA,EAAM,SAAAR,CAAA,CAAS,QAC5Da,EAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAGd,ECrDMG,GAAwB,CAAC,CAC7B,KAAAC,EAAM,UAAAC,EAAW,SAAAC,EACjB,SAAAC,EAAU,QAAAvB,EACV,mBAAAwB,CACF,IAAkC,CAEhC,KAAM,CAACC,EAAOC,CAAQ,EAAIlB,EAAAA,SAAgC,SAAS,EAC7D,CAACmB,EAAgBC,CAAiB,EAAIpB,EAAAA,SAAkC,IAAI,EAC5E,CAACqB,EAAeC,CAAgB,EAAItB,EAAAA,SAAgC,CAAA,CAAE,EACtE,CAACuB,EAAiBC,CAAkB,EAAIxB,EAAAA,SAAgC,CAAA,CAAE,EAC1E,CAACyB,EAAgBC,CAAiB,EAAI1B,EAAAA,SAAS,EAAK,EACpD,CAAC2B,EAAcC,CAAe,EAAI5B,EAAAA,SAAwB,IAAI,EAGpEpC,EAAAA,UAAU,IAAM,CACTgD,IACHM,EAAS,SAAS,EAClBE,EAAkB,IAAI,EACtBE,EAAiB,CAAA,CAAE,EACnBE,EAAmB,CAAA,CAAE,EACrBE,EAAkB,EAAK,EACvBE,EAAgB,IAAI,EAExB,EAAG,CAAChB,CAAI,CAAC,EAGT,MAAMiB,EAAoBC,cAAY,MAAOC,GAA+B,CAC1E,GAAI,CAACf,EAAoB,CACvBD,EAASgB,CAAQ,EACjB,MACF,CACAX,EAAkBW,CAAQ,EAC1BL,EAAkB,EAAI,EACtBE,EAAgB,IAAI,EACpB,GAAI,CACF,MAAMI,EAAU,MAAMhB,EAAmBe,EAAS,UAAU,EAC5D,GAAI,CAACC,GAAWA,EAAQ,SAAW,EAAG,CAEpCjB,EAASgB,CAAQ,EACjB,MACF,CACAT,EAAiBU,CAAO,EACxBd,EAAS,SAAS,CACpB,OAAS7B,EAAG,CACVuC,EAAgBvC,aAAa,MAAQA,EAAE,QAAU,yBAAyB,CAC5E,QAAA,CACEqC,EAAkB,EAAK,CACzB,CACF,EAAG,CAACV,EAAoBD,CAAQ,CAAC,EAE3BkB,EAAa,IAAM,CACvBf,EAAS,SAAS,EAClBE,EAAkB,IAAI,EACtBE,EAAiB,CAAA,CAAE,EACnBE,EAAmB,CAAA,CAAE,EACrBI,EAAgB,IAAI,CACtB,EAEMM,EAAiB,IAAM,CACtBf,GACLJ,EAASI,EAAgBI,CAAe,CAC1C,EAGMY,EAAiBlB,IAAU,WAAaE,EAExCvB,EAASuC,EACbhD,EAAAA,KAAAiD,EAAAA,SAAA,CACE,SAAA,CAAAhD,EAAAA,IAACiD,EAAAA,OAAA,CAAO,KAAK,SAAS,QAAQ,WAAW,KAAK,QAAQ,QAASJ,EAC5D,SAAAnB,EAAS,QAAU,OACtB,EACA1B,EAAAA,IAACiD,EAAAA,OAAA,CACC,KAAK,SACL,QAAQ,YACR,KAAK,QACL,QAASH,EACT,SAAUX,EAAgB,SAAW,EAEpC,WAAS,MAAQ,UAAA,CAAA,CACpB,CAAA,CACF,EACE,KAEJ,OACEnC,EAAAA,IAACE,GAAA,CACC,OAAQsB,EACR,QAAApB,EACA,MAAO2C,EAAiBhB,EAAe,MAAQL,EAAS,gBACxD,WAAOwB,GAAAA,UAAA,EAAU,EACjB,MAAO,IACP,OAAA1C,EAEA,gBAACO,EAAAA,IAAA,CAAI,GAAI,CAAE,EAAG,GAEX,SAAA,CAAA,CAACgC,GACAhD,EAAAA,KAAAiD,EAAAA,SAAA,CACE,SAAA,CAAAhD,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,MAAO,CAAE,SAAU,EAAA,EACrD,SAAA0B,EAAS,aAAA,CACZ,EACA3B,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACZ,SAAA,CAAA0B,EAAU,IAAKrR,GACd2P,EAAAA,KAAC,MAAA,CAEC,UAAU,sEACV,MAAO,CAAE,OAAQsC,EAAiB,OAAS,UAAW,WAAY,mBAAoB,QAASA,EAAiB,GAAM,CAAA,EACtH,QAAS,IAAM,CAACA,GAAkBI,EAAkBrS,CAAC,EACrD,KAAK,SACL,SAAU,EACV,UAAY6P,GAAM,CAAMA,EAAE,MAAQ,SAAW,CAACoC,KAAkCjS,CAAC,CAAG,EACpF,aAAe6P,GAAM,CAAOoC,IAAgBpC,EAAE,cAAc,MAAM,WAAa,UAAW,EAC1F,aAAeA,GAAM,CAAEA,EAAE,cAAc,MAAM,WAAa,EAAI,EAE9D,SAAA,CAAAD,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,MAAO5P,EAAE,kBAAoB,YAAc,UAAY,UAAW,UAAW,EAAG,WAAY,CAAA,EACvG,SAAAA,EAAE,kBAAoB,YAAc4P,EAAAA,IAACmD,EAAAA,gBAAA,CAAgB,KAAM,EAAA,CAAI,EAAKnD,EAAAA,IAACoD,EAAAA,OAAA,CAAO,KAAM,EAAA,CAAI,CAAA,CACzF,SACC,MAAA,CACC,SAAA,CAAApD,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,SAAU,GAAI,WAAY,IAAK,MAAO,SAAA,EAAc,SAAA5P,EAAE,KAAA,CAAM,EACzEA,EAAE,aAAe4P,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,SAAU,GAAI,MAAO,UAAW,UAAW,CAAA,EAAM,WAAE,WAAA,CAAY,CAAA,CAAA,CACjG,CAAA,CAAA,EAhBK5P,EAAE,UAAA,CAkBV,EACAqR,EAAU,SAAW,GACpBzB,EAAAA,IAAC,IAAA,CAAE,UAAU,+BAA+B,MAAO,CAAE,SAAU,EAAA,EAC5D,WAAS,UAAA,CACZ,CAAA,EAEJ,EAECqC,GACCtC,EAAAA,KAACgB,EAAAA,IAAA,CAAI,GAAI,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,EAAG,GAAI,EAAG,SAAU,GAAI,MAAO,WACpF,SAAA,CAAAf,EAAAA,IAACqD,EAAAA,iBAAA,CAAiB,KAAM,EAAA,CAAI,EAC5BrD,EAAAA,IAAC,QAAK,SAAA,2CAAA,CAAyC,CAAA,EACjD,EAEDuC,GACCvC,EAAAA,IAAC,IAAA,CAAE,MAAO,CAAE,SAAU,GAAI,MAAO,UAAW,UAAW,EAAA,EAAO,SAAAuC,CAAA,CAAa,CAAA,EAE/E,EAIDQ,GACChD,EAAAA,KAAAiD,WAAA,CACE,SAAA,CAAAjD,EAAAA,KAAC,MAAA,CACC,KAAK,SACL,SAAU,EACV,QAAS8C,EACT,UAAY5C,GAAM,CAAMA,EAAE,MAAQ,SAAS4C,EAAA,CAAc,EACzD,UAAU,mDACV,MAAO,CAAE,OAAQ,UAAW,MAAO,UAAW,SAAU,GAAI,WAAY,IAAK,MAAO,aAAA,EAEpF,SAAA,CAAA7C,EAAAA,IAACsD,EAAAA,YAAA,CAAY,KAAM,EAAA,CAAI,EACvBtD,EAAAA,IAAC,OAAA,CAAM,SAAA0B,EAAS,eAAA,CAAgB,CAAA,CAAA,CAAA,EAGlC3B,OAAC,KAAE,UAAU,wBAAwB,MAAO,CAAE,SAAU,IAAM,SAAA,CAAA,gCAC/BC,EAAAA,IAAC,SAAA,CAAQ,SAAA+B,EAAe,KAAA,CAAM,EAAS,GAAA,EACtE,EAEA/B,EAAAA,IAACuD,GAAA,CACC,QAAO,GACP,QAAStB,EACT,MAAOE,EACP,SAAWjM,GAAMkM,EAAoBlM,GAA+B,CAAA,CAAE,EACtE,YAAY,kBACZ,aAAa,QACb,iBAAkB,OAAO,SAAa,IAAc,SAAS,KAAO,OACpE,OAAQsN,GAAAA,kBAAkB,GAAO,EAAI,CAAA,CAAA,CACvC,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,CAGN,EC5LMC,GAAiC,CACrC,OAAQ,UACR,WAAY,kBACd,EAEMC,GAAY,uEAUZC,GAAmB,CAAC,CAAE,KAAAnC,EAAM,qBAAAoC,EAAsB,SAAAlC,EAAU,SAAAC,EAAU,QAAAvB,KAAqC,CAE/G,KAAM,CAAE,KAAAyD,EAAM,UAAAC,CAAA,EAAcC,EAAAA,QAAQ,IAAM,CACxC,MAAMC,MAAa,IACbC,EAAyB,CAAA,EAC/B,UAAW9M,KAAKyM,EACd,GAAIzM,EAAE,IAAK,CACT,MAAM+M,EAAWF,EAAO,IAAI7M,EAAE,IAAI,GAAG,EACjC+M,EACFA,EAAS,YAAY,KAAK/M,CAAC,EAE3B6M,EAAO,IAAI7M,EAAE,IAAI,IAAK,CACpB,IAAKA,EAAE,IAAI,IACX,MAAOA,EAAE,IAAI,MACb,KAAMA,EAAE,IAAI,KACZ,YAAaA,EAAE,IAAI,YACnB,YAAa,CAACA,CAAC,CAAA,CAChB,CAEL,MACE8M,EAAK,KAAK9M,CAAC,EAGf,MAAO,CAAE,KAAM,CAAC,GAAG6M,EAAO,QAAQ,EAAG,UAAWC,CAAA,CAClD,EAAG,CAACL,CAAoB,CAAC,EAEnB,CAACO,EAAcC,CAAe,EAAIxD,EAAAA,SAAwB,IAAI,EAC9DyD,EAAYF,EAAeN,EAAK,KAAM/S,GAAMA,EAAE,MAAQqT,CAAY,GAAK,KAAO,KAGpF3F,EAAAA,UAAU,IAAM,CACTgD,GAAM4C,EAAgB,IAAI,CACjC,EAAG,CAAC5C,CAAI,CAAC,EACThD,EAAAA,UAAU,IAAM,CAAE4F,EAAgB,IAAI,CAAG,EAAG,CAACR,CAAoB,CAAC,EAElE,MAAMU,EAAS,CAACD,EAEhB,OACErE,EAAAA,IAACE,GAAA,CACC,OAAQsB,EACR,QAAApB,EACA,MAAOkE,EAAS5C,EAAS,aAAe2C,EAAU,MAClD,KAAMC,EAAStE,MAACuE,EAAAA,mBAAA,CAAA,CAAmB,EAAMF,EAAU,YAA6BG,EAAAA,OAAA,EAAO,EACvF,MAAO,IAEP,gBAACzD,EAAAA,IAAA,CAAI,GAAI,CAAE,EAAG,GAEX,SAAA,CAAA,CAACuD,GACAvE,EAAAA,KAAC,MAAA,CACC,KAAK,SACL,SAAU,EACV,QAAS,IAAMqE,EAAgB,IAAI,EACnC,UAAYnE,GAAM,CAAMA,EAAE,MAAQ,SAASmE,EAAgB,IAAI,CAAG,EAClE,UAAU,mDACV,MAAO,CAAE,OAAQ,UAAW,MAAO,UAAW,SAAU,GAAI,WAAY,IAAK,MAAO,aAAA,EAEpF,SAAA,CAAApE,EAAAA,IAACsD,EAAAA,YAAA,CAAY,KAAM,EAAA,CAAI,EACvBtD,EAAAA,IAAC,OAAA,CAAM,SAAA0B,EAAS,YAAA,CAAa,CAAA,CAAA,CAAA,EAIjC1B,EAAAA,IAAC,IAAA,CAAE,UAAU,wBAAwB,MAAO,CAAE,SAAU,EAAA,EACrD,WAAS0B,EAAS,aAAe,uBAAuB2C,EAAU,KAAK,GAC1E,EAEArE,MAAC,MAAA,CAAI,UAAU,oCACZ,WACCD,EAAAA,KAAAiD,WAAA,CAEG,SAAA,CAAAa,EAAK,IAAK/S,GACTiP,EAAAA,KAAC,MAAA,CAEC,UAAW2D,GACX,MAAOD,GACP,QAAS,IAAMW,EAAgBtT,EAAE,GAAG,EACpC,KAAK,SACL,SAAU,EACV,UAAYmP,GAAM,CAAMA,EAAE,MAAQ,SAASmE,EAAgBtT,EAAE,GAAG,CAAG,EACnE,aAAemP,GAAM,CAAEA,EAAE,cAAc,MAAM,WAAa,SAAW,EACrE,aAAeA,GAAM,CAAEA,EAAE,cAAc,MAAM,WAAa,EAAI,EAE7D,SAAA,CAAAnP,EAAE,YAAS,MAAA,CAAI,MAAO,CAAE,WAAY,CAAA,EAAM,SAAAA,EAAE,IAAA,CAAkB,EAC/DiP,OAAC,OAAI,MAAO,CAAE,KAAM,EAAG,SAAU,GAC/B,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,SAAU,GAAI,WAAY,IAAK,MAAO,SAAA,EAAc,SAAAlP,EAAE,KAAA,CAAM,EAC1EkP,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,SAAU,GAAI,MAAO,UAAW,UAAW,CAAA,EACtD,SAAAlP,EAAE,aAAe,GAAGA,EAAE,YAAY,MAAM,UAAUA,EAAE,YAAY,SAAW,EAAI,GAAK,GAAG,EAAA,CAC1F,CAAA,EACF,EACAkP,EAAAA,IAACyE,EAAAA,eAAA,CAAe,KAAM,GAAI,MAAM,SAAA,CAAU,CAAA,CAAA,EAjBrC,OAAO3T,EAAE,GAAG,EAAA,CAmBpB,EAGAgT,EAAU,IAAK3M,GACd4I,EAAAA,KAAC,MAAA,CAEC,UAAW2D,GACX,MAAOD,GACP,QAAS,IAAM9B,EAASxK,CAAC,EACzB,KAAK,SACL,SAAU,EACV,UAAY8I,GAAM,CAAMA,EAAE,MAAQ,SAAS0B,EAASxK,CAAC,CAAG,EACxD,aAAe8I,GAAM,CAAEA,EAAE,cAAc,MAAM,WAAa,SAAW,EACrE,aAAeA,GAAM,CAAEA,EAAE,cAAc,MAAM,WAAa,EAAI,EAE7D,SAAA,CAAA9I,EAAE,YAAS,MAAA,CAAI,MAAO,CAAE,WAAY,CAAA,EAAM,SAAAA,EAAE,IAAA,CAAkB,EAC/D6I,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,SAAU,GAAI,WAAY,IAAK,MAAO,SAAA,EAAc,SAAA7I,EAAE,KAAA,CAAM,CAAA,CAAA,EAXtEA,EAAE,IAAA,CAaV,EAEA0M,EAAK,SAAW,GAAKC,EAAU,SAAW,GACzC9D,EAAAA,IAAC,IAAA,CAAE,UAAU,+BAA+B,MAAO,CAAE,SAAU,EAAA,EAAO,WAAS,SAAA,CAAU,CAAA,EAE7F,EAGAqE,EAAU,YAAY,IAAKlN,GACzB4I,EAAAA,KAAC,MAAA,CAEC,UAAW2D,GACX,MAAOD,GACP,QAAS,IAAM9B,EAASxK,CAAC,EACzB,KAAK,SACL,SAAU,EACV,UAAY8I,GAAM,CAAMA,EAAE,MAAQ,SAAS0B,EAASxK,CAAC,CAAG,EACxD,aAAe8I,GAAM,CAAEA,EAAE,cAAc,MAAM,WAAa,SAAW,EACrE,aAAeA,GAAM,CAAEA,EAAE,cAAc,MAAM,WAAa,EAAI,EAE7D,SAAA,CAAA9I,EAAE,YAAS,MAAA,CAAI,MAAO,CAAE,WAAY,CAAA,EAAM,SAAAA,EAAE,IAAA,CAAkB,EAC/D6I,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,SAAU,GAAI,WAAY,IAAK,MAAO,SAAA,EAAc,SAAA7I,EAAE,KAAA,CAAM,CAAA,CAAA,EAXtEA,EAAE,IAAA,CAaV,CAAA,CAEL,CAAA,CAAA,CACF,CAAA,CAAA,CAGN,ECrKauN,GAAuB,mBAY9BC,GAAmB,CAAC,CAAE,KAAAnD,EAAM,OAAAoD,EAAQ,WAAAC,EAAY,cAAAC,EAAe,SAAApD,EAAU,OAAAxC,EAAQ,QAAAkB,KAAqC,CAC1H,KAAM,CAAC2E,EAAQC,CAAS,EAAIpE,EAAAA,SAA4B,CAAA,CAAE,EACpD,CAACqE,EAASC,CAAU,EAAItE,EAAAA,SAAS,EAAK,EACtC,CAACuE,EAAOC,CAAQ,EAAIxE,EAAAA,SAAwB,IAAI,EAEhD,CAACyE,EAAiBC,CAAkB,EAAI1E,EAAAA,SAA0B,CAAA,CAAE,EAE1EpC,EAAAA,UAAU,IAAM,CACd8G,GAAoBR,GAAA,YAAAA,EAAgBJ,MAA6C,EAAE,CACrF,EAAG,CAACI,EAAeF,CAAM,CAAC,EAE1BpG,EAAAA,UAAU,IAAM,CACd,IAAI+G,EAAY,GAEhB,GADAH,EAAS,IAAI,EACT,CAACP,GAAc,CAACD,EAAQ,CAAEI,EAAU,CAAA,CAAE,EAAGE,EAAW,EAAK,EAAG,MAAQ,CACxE,MAAMM,EAAKX,EAAW,WACtB,OAAI,OAAOW,GAAO,YAChBN,EAAW,EAAI,EACfM,EAAGZ,CAAM,EACN,KAAMrP,GAAM,CACPgQ,IACJP,EAAUzP,CAAC,EACX2P,EAAW,EAAK,EAClB,CAAC,EACA,MAAOO,GAAQ,CACVF,IACJP,EAAU,CAAA,CAAE,EACZI,EAASK,aAAe,MAAQA,EAAI,QAAU,+BAA+B,EAC7EP,EAAW,EAAK,EAClB,CAAC,IAEHF,EAAUQ,CAAE,EACZN,EAAW,EAAK,GAEX,IAAM,CAAEK,EAAY,EAAM,CACnC,EAAG,CAACV,EAAYD,CAAM,CAAC,EAKvB,MAAMc,EAASd,EAAS,oBAAoBA,CAAM,GAAK,mBAEjDe,EAAU,CAACV,GAAW,CAACE,GAASJ,EAAO,OAAS,EAEhDvE,EAASmF,EACb5F,EAAAA,KAAAiD,EAAAA,SAAA,CACE,SAAA,CAAAhD,EAAAA,IAACiD,EAAAA,OAAA,CAAO,KAAK,SAAS,QAAQ,WAAW,KAAK,QAAQ,QAAS7C,EAAU,SAAAsB,EAAS,MAAA,CAAO,EACzF1B,EAAAA,IAACiD,EAAAA,OAAA,CAAO,KAAK,SAAS,KAAMyC,EAAQ,QAAQ,YAAY,KAAK,QAAS,SAAAhE,EAAS,IAAA,CAAK,CAAA,CAAA,CACtF,EACE,KAEJ,OACE1B,EAAAA,IAACE,GAAA,CACC,OAAQsB,EACR,QAAApB,EACA,OAAOyE,GAAA,YAAAA,EAAY,QAASnD,EAAS,cACrC,KAAMmD,GAAA,YAAAA,EAAY,KAClB,MAAO,IACP,OAAArE,EAEA,gBAACO,EAAAA,IAAA,CAAI,GAAI,CAAE,EAAG,GACX,SAAA,CAAAkE,GAAWjF,EAAAA,IAAC,IAAA,CAAE,UAAU,gBAAgB,MAAO,CAAE,SAAU,EAAA,EAAO,SAAA0B,EAAS,oBAAA,CAAqB,EAEhG,CAACuD,GAAWE,GACXnF,EAAAA,IAAC,IAAA,CAAE,MAAO,CAAE,SAAU,GAAI,MAAO,SAAA,EAAc,SAAAmF,CAAA,CAAM,EAGtD,CAACF,GAAW,CAACE,GAASJ,EAAO,SAAW,GACvC/E,EAAAA,IAAC,IAAA,CAAE,UAAU,gBAAgB,MAAO,CAAE,SAAU,EAAA,EAAO,WAAS,sBAAsB,EAGvF2F,GACC3F,EAAAA,IAAC4F,GAAAA,SAAA,CACC,OAAQ,CAAE,OAAQ,OAAQ,OAAQb,CAAA,EAClC,cAAeD,GAAiB,CAAA,EAChC,OAAAY,EACA,gBAAAL,EACA,wBAAyBC,EACzB,SAAWO,GAAW,CACpB,GAAI,CAACjB,EAAQ,OACb,MAAMkB,EAAgB,OAAO,KAAKT,CAAe,EAAE,OAAS,EAC5DnG,EAAO0F,EAAQ,CAAE,GAAGiB,EAAQ,CAACnB,EAAoB,EAAGoB,EAAgBT,EAAkB,OAAW,EACjGjF,EAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEJ,CAAA,CAAA,CAGN,EC5FM2F,GAAoE,CAAC,CACzE,OAAA5F,EACA,QAAAC,EACA,WAAA4F,EACA,cAAAC,EACA,gBAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAWC,CAAY,EAAIxF,EAAAA,SAAoB,CAAE,OAAQ,OAAQ,EAExEpC,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAAC2B,GAAU,CAAC6F,EAAY,CAC1BI,EAAa,CAAE,OAAQ,OAAQ,EAC/B,MACF,CACAA,EAAa,CAAE,OAAQ,UAAW,EAClCF,EAAgBF,CAAU,EACvB,KAAMrI,GAAUyI,EAAa,CAAE,OAAQ,SAAU,MAAAzI,EAAO,CAAC,EACzD,MAAO8H,GAAQW,EAAa,CAAE,OAAQ,QAAS,SAASX,GAAA,YAAAA,EAAK,UAAW,yBAAA,CAA2B,CAAC,CACzG,EAAG,CAACtF,EAAQ6F,EAAYE,CAAe,CAAC,EAGtClG,EAAAA,IAACE,GAAA,CACC,OAAAC,EACA,QAAAC,EACA,MAAO6F,EAAgB,YAAYA,CAAa,GAAK,uBACrD,KAAMjG,EAAAA,IAACqG,gBAAA,CAAc,KAAM,GAAI,MAAM,UAAU,EAC/C,MAAO,IAEP,gBAAC,MAAA,CAAI,MAAO,CAAE,OAAQ,OAAQ,QAAS,OAAQ,cAAe,SAAU,WAAY,SAAU,eAAgB,SAAU,QAAS,IAC9H,SAAA,CAAAF,EAAU,SAAW,QACpBnG,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,MAAO,UAAW,SAAU,EAAA,EAAM,SAAA,8BAAA,CAA4B,EAG9EmG,EAAU,SAAW,WACpBpG,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,UAAW,SAAU,MAAO,SAAA,EACxC,SAAA,CAAAC,MAAC,OAAI,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,aAAc,MAAO,OAAQ,oBAAqB,eAAgB,UAAW,UAAW,4BAA6B,OAAQ,eAAiB,QAClL,OAAA,CAAK,MAAO,CAAE,SAAU,EAAA,EAAM,SAAA,oBAAiB,EAChDA,EAAAA,IAAC,SAAO,SAAA,uDAAA,CAAwD,CAAA,EAClE,EAGDmG,EAAU,SAAW,SACpBpG,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,UAAW,SAAU,MAAO,SAAA,EACxC,SAAA,CAAAC,MAACsG,EAAAA,gBAAe,KAAM,GAAI,MAAO,CAAE,aAAc,GAAK,EACtDtG,EAAAA,IAAC,IAAA,CAAE,MAAO,CAAE,OAAQ,EAAG,SAAU,EAAA,EAAO,SAAAmG,EAAU,OAAA,CAAQ,CAAA,EAC5D,EAGDA,EAAU,SAAW,UACpBnG,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,MAAO,OAAQ,KAAM,GAEjC,SAAAA,MAACuG,IAA0B,MAAOJ,EAAU,MAAO,CAAA,CACrD,CAAA,CAAA,CAEJ,CAAA,CAAA,CAGN,EAMMI,GAAgE,CAAC,CAAE,MAAA5I,KAAY,CACnF,KAAM,CAAC6I,EAAQC,CAAS,EAAI7F,EAAAA,SAA+J,IAAI,EACzL,CAAC8F,EAAYC,CAAa,EAAI/F,EAAAA,SAA4F,IAAI,EAapI,OAXApC,EAAAA,UAAU,IAAM,CACd,QAAQ,IAAI,CACV,QAAA,QAAA,EAAA,KAAA,IAAAoI,EAAA,EAA2B,KAAMnO,GAAMA,EAAE,OAAO,EAChD,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oBAAiB,CAAA,EAAE,KAAMA,GAAMA,EAAE,gBAAgB,EACxD,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,wBAAqB,CAAA,EAAE,KAAMA,GAAMA,EAAE,gBAAgB,CAAA,CAC7D,EAAE,KAAK,CAAC,CAACoO,EAAYC,EAAMC,CAAI,IAAM,CACpCN,EAAU,IAAMI,CAAU,EAC1BF,EAAc,CAAE,iBAAkBG,EAAM,iBAAkBC,EAAM,CAClE,CAAC,CACH,EAAG,CAAA,CAAE,EAED,CAACP,GAAU,CAACE,EACP1G,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,MAAO,UAAW,SAAU,GAAI,UAAW,QAAA,EAAY,SAAA,iBAAA,CAAe,EAK3FA,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,MAAO,OAAQ,OAAQ,IAAK,OAAQ,oBAAqB,aAAc,EAAG,SAAU,UAChG,SAAAA,EAAAA,IAACwG,EAAA,CACC,aAAcE,EAAW,iBACzB,iBAAkBA,EAAW,iBAC7B,aAAc/I,EACd,SAAQ,EAAA,CAAA,EAEZ,CAEJ,ECpFMqJ,GAAa,IACbC,GAAW,GACXC,GAAiB,GAGjBC,GAA+C,CACnD,UAAW,GACX,QAAS,GACT,eAAgB,GAChB,YAAa,IACb,WAAY,GACZ,WAAY,GACZ,aAAc,GACd,UAAW,GACX,iBAAkB,EACpB,EAIMC,GAA8B,CAClC,SAAUC,GAAAA,SACV,cAAeC,GAAAA,cACf,UAAWC,GAAAA,UACX,kBAAmBC,GAAAA,kBACnB,kBAAmBC,GAAAA,iBACrB,EAGA,SAASC,IAAkC,CACzC,MAAO,CACL,CAAE,GAAI,QAAS,KAAM,QAAS,cAAe,WAAA,EAC7C,CAAE,GAAI,aAAc,KAAM,aAAc,cAAe,gBAAA,EACvD,CAAE,GAAI,MAAO,KAAM,MAAO,cAAe,SAAA,CAAU,CAEvD,CAEA,SAASC,GACPC,EACAC,EACAC,EACAC,EAA+B,KACvB,CACR,MAAMpV,EAAI,IAAIqV,GAAM,SAAS,MAC7B,OAAArV,EAAE,SAAS,CAAE,QAASoV,EAAiB,QAAS,GAAI,QAAS,GAAI,EACjEpV,EAAE,oBAAoB,KAAO,CAAA,EAAG,EAEhCiV,EAAM,QAAS/J,GAAS,CACtB,MAAMoK,EAAOH,EAAUjK,EAAK,EAAE,GAAK,CAAE,MAAOmJ,GAAY,OAAQG,GAAqBtJ,EAAK,MAAQ,EAAE,GAAK,EAAA,EACzGlL,EAAE,QAAQkL,EAAK,GAAI,CAAE,MAAOoK,EAAK,MAAO,OAAQA,EAAK,MAAA,CAAQ,CAC/D,CAAC,EAEDJ,EAAM,QAASK,GAASvV,EAAE,QAAQuV,EAAK,OAAQA,EAAK,MAAM,CAAC,EAE3DF,GAAM,OAAOrV,CAAC,EAEPiV,EAAM,IAAK/J,GAAS,SACzB,MAAMsK,EAAMxV,EAAE,KAAKkL,EAAK,EAAE,EACpBxK,IAAI+U,EAAAN,EAAUjK,EAAK,EAAE,IAAjB,YAAAuK,EAAoB,QAASpB,GACjC3P,IAAIgR,EAAAP,EAAUjK,EAAK,EAAE,IAAjB,YAAAwK,EAAoB,SAAWlB,GAAqBtJ,EAAK,MAAQ,EAAE,GAAK,GAClF,MAAO,CAAE,GAAGA,EAAM,SAAU,CAAE,EAAGsK,EAAI,EAAI9U,EAAI,EAAG,EAAG8U,EAAI,EAAI9Q,EAAI,EAAE,CACnE,CAAC,CACH,CAEA,MAAMiR,GAAmBC,GAAiBA,IAAS,UAAYA,IAAS,WAKxE,SAASC,GACPC,EACAC,EACAd,EACAE,EAC8D,CAG9D,MAAMa,EAAW1B,GACX2B,EAAa,GAIbC,EAAqB,GAErBC,EAAsD,CAAA,EACtDC,EAA4C,CAAA,EAG5CC,MAAe,IACrB,UAAWzT,KAAKkT,EAAOO,EAAS,IAAIzT,EAAE,GAAIA,CAAC,EAC3C,UAAW0T,KAAa,OAAO,OAAOP,CAAQ,EAC5C,UAAWQ,KAAS,OAAO,OAAOD,CAAS,EACzC,UAAW1T,KAAK2T,EAAOF,EAAS,IAAIzT,EAAE,GAAIA,CAAC,EAI/C,MAAM4T,EAAY,CAACrL,EAAYsL,EAAiB5Q,IAAsB,CACpE,MAAMyP,EAAOH,EAAUhK,CAAE,GAAK,CAAE,MAAOkJ,GAAY,OAAQ,EAAA,EAC3D,OAAA8B,EAAUhL,CAAE,EAAI,CAAE,EAAGsL,EAAUnB,EAAK,MAAQ,EAAG,EAAAzP,CAAA,EACxCA,EAAIyP,EAAK,MAClB,EAEMoB,EAAa,CAACH,EAAqBE,EAAiBE,IAA2B,CACnF,IAAI9Q,EAAI8Q,EACR,UAAWC,KAAQL,EAEjB1Q,EADe2Q,EAAUI,EAAK,GAAIH,EAAS5Q,CAAC,EAC/BmQ,EACTL,GAAgBiB,EAAK,IAAI,GAAKb,EAASa,EAAK,EAAE,IAChD/Q,EAAIgR,EAAoBD,EAAK,GAAIH,EAAS5Q,CAAC,GAG/C,OAAOA,CACT,EAEMgR,EAAsB,CAACC,EAAkBC,EAAuBJ,IAA2B,CAC/F,MAAMK,EAAeD,EAAgB,IAC/BT,EAAYP,EAASe,CAAQ,EAC7BG,EAAO,OAAO,KAAKX,CAAS,EAC5BY,EAAab,EAAS,IAAIS,CAAQ,EAClCK,GAASD,GAAA,YAAAA,EAAY,eAAgB,CAAE,KAAM,OAAQ,KAAM,MAAA,EAC3DE,EAAYjB,EAAUW,CAAQ,EAC9BO,EAAalC,EAAU2B,CAAQ,GAAK,CAAqB,OAAQ,EAAA,EACjEQ,GAAgBF,EAAU,EAAIC,EAAW,OAEzCE,GAAkC,CAAA,EACxC,IAAI1R,EAAI8Q,EACR,OAAAM,EAAK,QAAQ,CAACO,GAAKC,KAAQ,CACzB,MAAMlB,GAAQD,EAAUkB,EAAG,EAGrBE,GAAU7R,EAChB0R,GAAa,KAAK,CAChB,EAAGG,GAAUJ,GACb,MAAOH,EAAOK,EAAG,GAAKA,GACtB,OAAQC,KAAQ,CAAA,CACjB,EACD5R,EAAI6Q,EAAWH,GAAOS,EAAcnR,EAAIqQ,CAAkB,EACtDuB,GAAMR,EAAK,OAAS,IAAGpR,GAAKoQ,EAClC,CAAC,EAEDG,EAAUU,CAAQ,EAAI,CACpB,SAAUS,GACV,OAAQ1R,EAAIyR,GACZ,OAAQ,GAAA,EAEHzR,CACT,EAEA,IAAI8R,EAAUpD,GACd,UAAWqC,KAAQd,EAEjB6B,EADenB,EAAUI,EAAK,GAAI,IAAUe,CAAO,EAChC3B,EACfL,GAAgBiB,EAAK,IAAI,GAAKb,EAASa,EAAK,EAAE,IAChDe,EAAUd,EAAoBD,EAAK,GAAI,IAAUe,CAAO,GAI5D,MAAO,CACL,MAAO1C,EAAM,IAAKzX,GAAM2Y,EAAU3Y,EAAE,EAAE,EAAI,CAAE,GAAGA,EAAG,SAAU2Y,EAAU3Y,EAAE,EAAE,CAAA,EAAMA,CAAC,EACjF,UAAA4Y,CAAA,CAEJ,CAEA,SAASwB,GAAShB,EAAwB,CACxC,MAAO,CACL,GAAIA,EAAK,GACT,KAAMA,EAAK,cACX,SAAU,CAAE,EAAG,EAAG,EAAG,CAAA,EACrB,KAAM,CAAE,GAAGA,EAAK,SAAU,GAAGA,EAAK,SAAU,eAAgBA,EAAK,cAAA,EACjE,UAAW,GACX,WAAY,EAAA,CAEhB,CAEA,SAASiB,GACPC,EACAC,EACAC,EACAC,EACAC,EACM,CACN,MAAO,CACL,GAAI,KAAKJ,EAAK,EAAE,IAAIC,EAAK,EAAE,GAC3B,OAAQD,EAAK,GACb,OAAQC,EAAK,GACb,KAAM,WACN,MAAO,CAAE,OAAQC,CAAA,EACjB,KAAM,CACJ,eAAAC,EACA,kBAAmBH,EAAK,cACxB,GAAII,GAAa,CAAA,CAAC,CACpB,CAEJ,CAEA,SAASC,GACPrC,EACAC,EACAkC,EACAG,EACAC,EAAwB,CAAA,EACxBjD,EAA+B,KAC/BkD,EAA0C,aACR,CAClC,MAAMN,EAAYK,EAAM,WAAa,UAC/BpD,EAAgB,CAAA,EAChBC,EAAgB,CAAA,EAIhBqD,EAAqB,CAACC,EAAkBC,IAA0C,CACtF,MAAM7T,EAAImR,EAASyC,CAAQ,EAC3B,GAAI,CAAC5T,EAAG,OAER,MAAMuS,EAASsB,GAD+B,CAAE,KAAM,OAAQ,KAAM,MAAA,EAE9DC,EAAa,OAAO,KAAK9T,CAAC,EAE1B+T,EAAY,CAACpC,EAAqBqC,EAAmBC,EAAqBC,IAAwB,CACtG,GAAIvC,EAAM,SAAW,EACrB,CAAAA,EAAM,QAAS3T,GAAMqS,EAAM,KAAK2C,GAAShV,CAAC,CAAC,CAAC,EAC5CsS,EAAM,KAAK,CACT,GAAI,KAAKsD,CAAQ,IAAII,CAAS,SAC9B,OAAQJ,EACR,OAAQjC,EAAM,CAAC,EAAE,GACjB,KAAM,oBACN,MAAO,CAAE,OAAQyB,CAAA,EACjB,KAAM,CAAE,OAAQY,EAAW,SAAAJ,EAAU,MAAOK,EAAa,QAASC,IAAgB,EAAG,eAAAb,EAAgB,gBAAiBK,IAAiB,UAAA,CAAW,CACnJ,EACD,QAAS3X,EAAI,EAAGA,EAAI4V,EAAM,OAAQ5V,IAC5BgV,GAAgBY,EAAM5V,EAAI,CAAC,EAAE,IAAI,GACrCuU,EAAM,KAAK2C,GAAatB,EAAM5V,EAAI,CAAC,EAAG4V,EAAM5V,CAAC,EAAGqX,EAAWC,EAAgB,CAAE,SAAAO,EAAU,OAAQI,CAAA,CAAW,CAAC,EAE7G,UAAWhW,KAAK2T,EACVZ,GAAgB/S,EAAE,IAAI,GAAKmT,EAASnT,EAAE,EAAE,GAAG2V,EAAmB3V,EAAE,GAAIA,EAAE,YAAY,EAE1F,EAEA8V,EAAW,QAAQ,CAAClB,EAAKC,IAAQ,CAC/BkB,EAAU/T,EAAE4S,CAAG,EAAGA,EAAKL,EAAOK,CAAG,GAAKA,EAAKC,CAAG,CAChD,CAAC,CACH,EAEA,QAAS9U,EAAI,EAAGA,EAAImT,EAAM,OAAQnT,IAAK,CACrC,MAAMiU,EAAOd,EAAMnT,CAAC,EAGpB,GAFAsS,EAAM,KAAK2C,GAAShB,CAAI,CAAC,EAErBjU,EAAI,EAAG,CACT,MAAMmV,EAAOhC,EAAMnT,EAAI,CAAC,EAClBoW,EAAUjB,EAAK,OAAS,SAAWA,EAAK,OAAS,aAGvD,GAAIA,EAAK,OAAS,UAAYA,EAAK,OAAS,WAAY,SAExD5C,EAAM,KAAK,CACT,GAAI,KAAK4C,EAAK,EAAE,IAAIlB,EAAK,EAAE,GAC3B,OAAQkB,EAAK,GACb,OAAQlB,EAAK,GACb,KAAMmC,EAAU,YAAc,WAC9B,MAAO,CAAE,OAAQf,CAAA,EACjB,KAAMe,EAAU,GAAK,CACnB,eAAAd,EACA,kBAAmBH,EAAK,aAAA,CAC1B,CACD,CACH,EAGKlB,EAAK,OAAS,UAAYA,EAAK,OAAS,aAAeb,EAASa,EAAK,EAAE,GAC1E2B,EAAmB3B,EAAK,GAAIA,EAAK,YAAY,CAEjD,CAEA,MAAMzB,EAA+D,CAAA,EAUrE,GATAF,EAAM,QAAS/J,GAAS,CACtBiK,EAAUjK,EAAK,EAAE,EAAI,CACnB,MAAOmJ,GACP,OAAQ+D,EAAiBlN,EAAK,EAAE,GAAKsJ,GAAqBtJ,EAAK,MAAQ,EAAE,GAAK,EAAA,CAElF,CAAC,EAIG,EAFgB,OAAO,KAAK6K,CAAQ,EAAE,OAAS,GAEjC,CAEhB,GAAIX,IAAoB,KAAM,CAE5B,IAAIpR,EAAIuQ,GAQR,MAAO,CAAE,MAPaU,EAAM,IAAK/J,GAAS,CACxC,MAAMxK,EAAIyU,EAAUjK,EAAK,EAAE,EAAE,MACvBxG,EAAIyQ,EAAUjK,EAAK,EAAE,EAAE,OACvB8N,EAAa,CAAE,GAAG9N,EAAM,SAAU,CAAE,EAAAlH,EAAG,EAAG,IAAUU,EAAI,EAAE,EAChE,OAAAV,GAAKtD,EAAI4T,GACF0E,CACT,CAAC,EAC8B,MAAA9D,CAAA,CACjC,CACA,MAAMuB,EAAU,IAChB,IAAI5Q,EAAI0O,GAOR,MAAO,CAAE,MANaU,EAAM,IAAK/J,GAAS,CACxC,MAAMxG,EAAIyQ,EAAUjK,EAAK,EAAE,EAAE,OACvB8N,EAAa,CAAE,GAAG9N,EAAM,SAAU,CAAE,EAAGuL,EAAUpC,GAAa,EAAG,EAAAxO,EAAE,EACzE,OAAAA,GAAKnB,EAAI4P,GACF0E,CACT,CAAC,EAC8B,MAAA9D,CAAA,CACjC,CAGA,GAAIoD,IAAiB,WAAY,CAC/B,KAAM,CAAE,MAAOW,EAAe,UAAA7C,CAAA,EAAcP,GAA0BC,EAAOC,EAAUd,EAAOE,CAAS,EAKvG,MAAO,CAAE,MAHS8D,EAAc,IAAKzb,GACnC4Y,EAAU5Y,EAAE,EAAE,EAAI,CAAE,GAAGA,EAAG,KAAM,CAAE,GAAGA,EAAE,KAAM,YAAa4Y,EAAU5Y,EAAE,EAAE,CAAA,GAAQA,CAAA,EAEvD,MAAA0X,CAAA,CAC7B,CAEA,MAAO,CAAE,MADaF,GAAiBC,EAAOC,EAAOC,EAAWC,CAAe,EAChD,MAAAF,CAAA,CACjC,CA6IA,MAAMgE,GAAkB,CAAC,CACvB,aAAAC,EACA,iBAAAC,EACA,aAAAC,EACA,UAAWC,EACX,UAAWC,EACX,OAAAhN,EACA,SAAAiN,EAAW,GACX,MAAAnB,EAAQ,CAAA,EACR,SAAUoB,EACV,cAAAC,EAAgB,CAAA,EAChB,sBAAAC,EACA,mBAAA1K,EACA,iBAAA2K,EACA,iBAAAC,EACA,YAAaC,EACb,SAAAC,EACA,gBAAA3E,EAAkB,KAClB,gBAAA4E,EACA,gBAAAzG,EACA,WAAA0G,EAAa,GACb,aAAA9N,EACA,qBAAAC,EACA,SAAAI,EACA,eAAA0N,EACA,oBAAAC,EACA,UAAA1N,EACA,iBAAA2N,EACF,IAA4B,CAC1B,KAAM,CACJ,QAASC,GAAa,GACtB,eAAAC,EAAiB,GACjB,aAAAC,GAAe,GACf,YAAAC,GAAc,GACd,YAAaC,GAAiB,GAC9B,aAAcC,GAAkB,GAChC,QAAAC,GAAU,IACV,QAAAC,GAAU,EACV,WAAAC,GAAa,GACb,SAAAC,GAAW,CAAC,GAAI,EAAE,EAClB,aAAAxC,GAAe,aACf,SAAAyC,GAAW,MAAA,EACTrB,EACE3K,GAAWqC,EAAAA,QAAQ,IAAM4J,GAAAA,cAAcvB,CAAgB,EAAG,CAACA,CAAgB,CAAC,EAC5E,CAAC3D,EAAOmF,EAAQ,EAAIhN,EAAAA,SAAuB,KAAMoL,GAAA,YAAAA,EAAc,QAAStE,IAAmB,EAC3F,CAACgB,EAAUmF,CAAW,EAAIjN,EAAAA,SAAoB,KAAMoL,GAAA,YAAAA,EAAc,WAAY,EAAE,EAChF,CAAC8B,GAAYC,CAAa,EAAInN,EAAAA,SAAqB,IAAI,EACvD,CAACoN,GAAcC,EAAe,EAAIrN,EAAAA,SAAwB,IAAI,EAC9D,CAACsN,EAAqBC,EAAsB,EAAIvN,EAAAA,SAAwB,IAAI,EAC5E,CAACwN,GAAiBC,EAAkB,EAAIzN,EAAAA,SAAsD,IAAI,EAClG,CAAC0N,GAAoBC,EAAqB,EAAI3N,EAAAA,SAAgE,IAAI,EAClH,CAAC4N,EAAkBC,EAAmB,EAAI7N,EAAAA,SAAkC,IAAM,CACtF,MAAM8N,EAAc1C,GAAA,YAAAA,EAAc,MAAM,KAAMzC,GAASA,EAAK,OAAS,gBAC/DoF,EAAaD,GAAA,MAAAA,EAAa,GAAG,WAAW,YAAcA,EAAY,GAAG,MAAM,CAAiB,EAAI,OACtG,OAAOC,EAAa5C,EAAiB,OAAO4C,CAAU,GAAK,KAAO,IACpE,CAAC,EACK,CAAC5D,GAAkB6D,EAAmB,EAAIhO,EAAAA,SAAiC,CAAA,CAAE,EAE7EiO,GAAqBnM,cAAajE,GAAoC,CAC1EmQ,GAAoBnQ,CAAO,CAC7B,EAAG,CAAA,CAAE,EAECqQ,GAAkB/K,UAAmB,KAAO,CAAE,GAAGgL,GAAAA,iBAAkB,GAAG9C,CAAA,GAAsB,CAACA,CAAiB,CAAC,EAC/G+C,GAAkBjL,UAAmB,KAAO,CAAE,GAAGqD,GAAkB,GAAG8E,CAAA,GAAsB,CAACA,CAAiB,CAAC,EAG/G+C,GAAgBlL,EAAAA,QAAQ,IAAM,CAClC,MAAMmL,EAAazG,EAAM,OAAQlT,GAAMA,EAAE,OAAS,UAAU,EAAE,OACxD4Z,EAAc,OAAO,OAAOzG,CAAQ,EAAE,QAASnR,GAAM,OAAO,OAAOA,CAAC,EAAE,KAAA,CAAM,EAAE,OAAQhC,GAAMA,EAAE,OAAS,UAAU,EAAE,OACzH,OAAO2Z,EAAaC,CACtB,EAAG,CAAC1G,EAAOC,CAAQ,CAAC,EACd0G,GAAoB1C,IAAY8B,GAAA,YAAAA,EAAkB,UAClDa,GAAaD,KAAsB,QAAaH,IAAiBG,GAGjEE,GAAW5M,cAAa6M,GAAsC,CAClE,MAAMC,EAAY/G,EAAM,KAAMlT,GAAMA,EAAE,KAAOga,CAAM,EACnD,GAAIC,EAAW,OAAOA,EACtB,UAAWjY,KAAK,OAAO,OAAOmR,CAAQ,EAAG,CACvC,MAAM+G,EAAQ,OAAO,OAAOlY,CAAC,EAAE,OAAO,KAAMhC,GAAMA,EAAE,KAAOga,CAAM,EACjE,GAAIE,EAAO,OAAOA,CACpB,CACA,OAAO,IACT,EAAG,CAAChH,EAAOC,CAAQ,CAAC,EAEdgH,GAAahN,cAAa6M,GAAmB,CAC7CpD,IACJ8B,GAAgBsB,CAAM,EACtBxB,EAAc,YAAY,EAC5B,EAAG,CAAC5B,CAAQ,CAAC,EAEPwD,GAAejN,cAAa6M,GAAmB,CACnD,GAAI,CAAApD,EAEJ,IAAI1D,EAAM,KAAMlT,GAAMA,EAAE,KAAOga,CAAM,EAAG,CACtC,MAAMK,EAAUnH,EAAM,KAAMlT,GAAMA,EAAE,KAAOga,CAAM,EAEjD,IAAIK,GAAA,YAAAA,EAAS,QAAS,eAAgB,CACpChC,GAASlG,IAAmB,EAC5BmG,EAAY,CAAA,CAAE,EACdY,GAAoB,IAAI,EACxB,MACF,CACAb,GAAUnD,GAAS,CACjB,MAAMoF,EAAOpF,EAAK,OAAQlV,GAAMA,EAAE,KAAOga,CAAM,EAC/C,OAAIjH,IAAgBsH,GAAA,YAAAA,EAAS,OAAQ,EAAE,GAAK,CAACC,EAAK,KAAMta,GAAMA,EAAE,OAAS,KAAK,EACrE,CAAC,GAAGsa,EAAM,CAAE,GAAI,MAAO,KAAM,MAAO,cAAe,UAAW,EAEhEA,CACT,CAAC,EACDhC,EAAapD,GAAS,CACpB,MAAMoF,EAAO,CAAE,GAAGpF,CAAA,EACZqF,EAAchS,GAAe,CAC5B+R,EAAK/R,CAAE,IACZ,OAAO,OAAO+R,EAAK/R,CAAE,CAAC,EAAE,KAAA,EAAO,OAAQvI,GAAM+S,GAAgB/S,EAAE,IAAI,CAAC,EAAE,QAASA,GAAMua,EAAWva,EAAE,EAAE,CAAC,EACrG,OAAOsa,EAAK/R,CAAE,EAChB,EACA,OAAAgS,EAAWP,CAAM,EACVM,CACT,CAAC,EACD,MACF,CAEAhC,EAAapD,GAAS,CAEpB,MAAMsF,EAAyB,CAAC7G,EAAqB8G,IAA6B,CAChF,MAAMC,EAAgB,CAAA,EACtB,UAAW1a,KAAK2T,EACVZ,GAAgB/S,EAAE,IAAI,GAAKya,EAAIza,EAAE,EAAE,IACrC0a,EAAI,KAAK1a,EAAE,EAAE,EACb,OAAO,OAAOya,EAAIza,EAAE,EAAE,CAAC,EAAE,QAAS9C,GAAMwd,EAAI,KAAK,GAAGF,EAAuBtd,EAAGud,CAAG,CAAC,CAAC,GAGvF,OAAOC,CACT,EAEMJ,EAAO,CAAE,GAAGpF,CAAA,EAClB,UAAWU,KAAY,OAAO,KAAK0E,CAAI,EACrC,UAAWK,KAAU,OAAO,KAAKL,EAAK1E,CAAQ,CAAC,EAAG,CAChD,MAAMjC,EAAQ2G,EAAK1E,CAAQ,EAAE+E,CAAM,EAC7B9F,EAAMlB,EAAM,UAAW3T,GAAMA,EAAE,KAAOga,CAAM,EAClD,GAAInF,IAAQ,IAAMlB,EAAMkB,CAAG,EAAE,OAAS,MAAO,SAE7C,MAAM+F,EAAUjH,EAAMkB,CAAG,EACzB,IAAIgG,EAAWlH,EAAM,OAAQ3T,GAAMA,EAAE,KAAOga,CAAM,EAGlD,OAAIY,EAAQ,OAAS,YACDA,EAAQ,MAAMN,EAAOE,EAAuB,CAACI,CAAO,EAAGN,CAAI,EAAI,CAAA,GACvE,QAAS/R,GAAO,OAAO+R,EAAK/R,CAAE,CAAC,EACzC,OAAO+R,EAAKM,EAAQ,EAAE,EAEjBC,EAAS,KAAM7a,GAAMA,EAAE,OAAS,KAAK,IACxC6a,EAAW,CAAC,GAAGA,EAAU,CAAE,GAAI,OAAOjF,CAAQ,IAAI+E,CAAM,GAAI,KAAM,MAAO,cAAe,UAAW,IAIvGL,EAAK1E,CAAQ,EAAI,CAAE,GAAG0E,EAAK1E,CAAQ,EAAG,CAAC+E,CAAM,EAAGE,CAAA,EACzCP,CACT,CAEF,OAAOA,CACT,CAAC,EACH,EAAG,CAAC1D,EAAU1D,CAAK,CAAC,EAEd4H,GAAoB3N,EAAAA,YAAY,IAAM,CACtCyJ,GACJ4B,EAAc,eAAe,CAC/B,EAAG,CAAC5B,CAAQ,CAAC,EAEPmE,GAAqB5N,EAAAA,YAAY,CAAC6N,EAAsBC,IAA4B,CACpFrE,GAAYkD,KAChBlB,GAAuBoC,CAAY,EACnClC,GAAmBmC,EAAQ,UAAYA,EAAQ,OAAS,CAAE,SAAUA,EAAQ,SAAU,OAAQA,EAAQ,MAAA,EAAW,IAAI,EACrHzC,EAAc,YAAY,EAC5B,EAAG,CAAC5B,EAAUkD,EAAU,CAAC,EAEnBoB,GAAsB/N,EAAAA,YAAY,CAACC,EAA4B+N,IAA4D,CAS/H,GARAjC,GAAoB9L,CAAQ,EAC5BoL,EAAc,IAAI,EAOdpL,EAAS,cAAe,CAC1B,MAAMgO,EAAmB,MAAM,QAAQD,CAAa,GAAKA,EAAc,OAAS,EAC1EE,GAAiBjO,EAAS,cAAc,OAAS,IAAI,IAAKpN,GAC1DA,EAAE,OAAS,eAAuBA,EAK/B,CACL,GAAGA,EACH,SAAU,CACR,MAAOoN,EAAS,MAChB,GAAIpN,EAAE,UAAY,CAAA,EAClB,GAAIob,GAAoB,CAAE,QAASD,CAAA,CAAc,CACnD,CAEH,EACD7C,EAAYlL,EAAS,cAAc,UAAY,CAAA,CAAE,EACjDiL,GAASgD,CAAa,EACtB,MACF,CAEA/C,EAAY,CAAA,CAAE,EACd,MAAM8C,EAAmB,MAAM,QAAQD,CAAa,GAAKA,EAAc,OAAS,EAChF9C,GAAS,CACP,CAAE,GAAI,QAAS,KAAM,QAAS,cAAe,WAAA,EAC7C,CACE,GAAI,WAAWjL,EAAS,UAAU,GAClC,KAAM,eACN,cAAe,cACf,SAAU,CACR,MAAOA,EAAS,MAChB,OAAQA,EAAS,OACjB,UAAWA,EAAS,WACpB,KAAMA,EAAS,kBAAoB,YAAc,YAAc,QAC/D,GAAIgO,GAAoB,CAAE,QAASD,CAAA,CAAc,EAEnD,UAAW,EAAA,EAEb,CAAE,GAAI,MAAO,KAAM,MAAO,cAAe,SAAA,CAAU,CACpD,CACH,EAAG,CAAA,CAAE,EAOCG,GAAqBnO,EAAAA,YAAY,IAAuC,OAC5E,MAAMoO,EAAuC,CAC3C,gBAAiB,KACjB,cAAe,CAAA,EACf,gBAAiB,CAAA,EACjB,OAAQ1C,GACR,SAAUI,CAAA,EAEZ,GAAI,CAACN,EAAqB,OAAO4C,EAEjC,GAAI1C,GAAiB,CAGnB,KAAM,CAAE,SAAAjD,EAAU,OAAA+E,CAAA,EAAW9B,GACvB2C,EAAWtI,EAAM,UAAWlT,GAAMA,EAAE,KAAO4V,CAAQ,EACnD6F,EAAUD,GAAY,EAAItI,EAAM,MAAM,EAAGsI,EAAW,CAAC,EAAI,CAAA,EACzDE,IAAc7I,EAAAM,EAASyC,CAAQ,IAAjB,YAAA/C,EAAqB8H,KAAW,CAAA,EAC9CgB,EAAYD,EAAY,UAAW1b,GAAMA,EAAE,KAAO2Y,CAAmB,EACrEiD,EAAWD,GAAa,EAAID,EAAY,MAAM,EAAGC,EAAY,CAAC,EAAI,CAAA,EACxE,OAAAJ,EAAI,cAAgB,CAAC,GAAGE,EAAS,GAAGG,CAAQ,EAC5CL,EAAI,gBAAkBI,GAAa,EAAID,EAAY,MAAMC,EAAY,CAAC,EAAID,EAC1EH,EAAI,gBAAkBK,EAASA,EAAS,OAAS,CAAC,GAAK,KAChDL,CACT,CAGA,MAAM1G,EAAM3B,EAAM,UAAWlT,GAAMA,EAAE,KAAO2Y,CAAmB,EAC/D,OAAA4C,EAAI,cAAgB1G,GAAO,EAAI3B,EAAM,MAAM,EAAG2B,EAAM,CAAC,EAAI,CAAA,EACzD0G,EAAI,gBAAkB1G,GAAO,EAAI3B,EAAM,MAAM2B,EAAM,CAAC,EAAI,CAAA,EACxD0G,EAAI,gBAAkBA,EAAI,cAAcA,EAAI,cAAc,OAAS,CAAC,GAAK,KAClEA,CACT,EAAG,CAACrI,EAAOC,EAAUwF,EAAqBE,GAAiBI,CAAgB,CAAC,EAGtE4C,GAAmB,CAAC7H,EAAkB8H,IAC1C9H,EAAK,iBAAmB8H,GAAS9H,EAAK,KAAO8H,GAAS9H,EAAK,OAAS8H,EAEhEC,GAA0B5O,EAAAA,YAAY,IAAwB,CAClE,MAAM6O,EAAMzF,EAAa,KAAA,EACnB0F,EAAUhD,GAAA,MAAAA,EAAkB,eAC9B+C,EAAI,OAAQpa,GAAMqX,EAAiB,eAAgB,SAASrX,EAAE,IAAI,CAAC,EACnEoa,EACET,EAAMD,GAAA,EACZ,OAAOW,EAAQ,OAAQ3M,GAEjBA,EAAW,iBAAmB,QACX4D,EAAM,OAAQlT,GAAMA,EAAE,iBAAmBsP,EAAW,IAAI,EAAE,OAC3E,OAAO,OAAO6D,CAAQ,EACrB,QAASO,GAAc,OAAO,OAAOA,CAAS,EAAE,MAAM,EACtD,OAAQ1T,GAAMA,EAAE,iBAAmBsP,EAAW,IAAI,EAClD,QACeA,EAAW,eAAuB,GAIpDA,EAAW,UAENA,EAAW,UAAUiM,CAAG,EAE7B,EAAAjM,EAAW,aAAeA,EAAW,YAAY,OAAS,GAIxD,CAHOiM,EAAI,cAAc,KAAMvb,GACjCsP,EAAW,YAAa,KAAMzU,GAAMghB,GAAiB7b,EAAGnF,CAAC,CAAC,CAAA,GAI1DyU,EAAW,cAAgBA,EAAW,aAAa,OAAS,GAI1D,CAHOiM,EAAI,gBAAgB,KAAMvb,GACnCsP,EAAW,aAAc,KAAMzU,GAAMghB,GAAiB7b,EAAGnF,CAAC,CAAC,CAAA,EAKhE,CACH,EAAG,CAAC0b,EAAc0C,EAAkB/F,EAAOC,EAAUmI,EAAkB,CAAC,EAElEY,GAAuB/O,cAAamC,GAA+B,CACvE,GAAI,CAACqJ,EAAqB,OAC1B,MAAMwD,EAAY,GAAG7M,EAAW,IAAI,IAAI,KAAK,KAAK,GAC5C8M,EAAc9M,EAAW,gBAAkB,cAAgBA,EAAW,gBAAkB,gBAAkBA,EAAW,gBAAkB,sBACvIuG,EAAuCvG,EAAW,cAAgB,CAAE,KAAM,OAAQ,KAAM,MAAA,EAExF+M,EAAuB,CAC3B,GAAIF,EACJ,KAAMC,EAAe9M,EAAW,gBAAkB,eAAiB,WAAa,SAAY,WAC5F,cAAeA,EAAW,cAC1B,eAAgBA,EAAW,KAC3B,SAAU,CAAA,EACV,SAAU,CAAE,MAAOA,EAAW,KAAA,EAC9B,UAAW,GACX,aAAAuG,CAAA,EAGF,GAAIgD,GAAiB,CAEnB,KAAM,CAAE,SAAAjD,EAAU,OAAA+E,CAAA,EAAW9B,GAC7BP,EAAapD,GAAS,CACpB,MAAMvB,EAAQ,CAAC,GAAGuB,EAAKU,CAAQ,EAAE+E,CAAM,CAAC,EACxC,GAAIyB,EAAa,CAEf,MAAME,EAAkB3I,EAAM,OAAQ3T,IAAMA,GAAE,OAAS,KAAK,EACtDuc,GAAYD,EAAgB,UAAWtc,IAAMA,GAAE,KAAO2Y,CAAmB,EACzEjW,GAAK6Z,KAAc,GAAKD,EAAgB,OAASC,GAAY,EACnE,OAAAD,EAAgB,OAAO5Z,GAAI,EAAG2Z,CAAQ,EAC/B,CACL,GAAGnH,EACH,CAACU,CAAQ,EAAG,CAAE,GAAGV,EAAKU,CAAQ,EAAG,CAAC+E,CAAM,EAAG2B,CAAA,EAC3C,CAACH,CAAS,EAAG,OAAO,YAClB,OAAO,KAAKtG,CAAY,EAAE,IAAKzX,IAAM,CAACA,GAAG,CAAC,CAAE,GAAI,OAAO+d,CAAS,IAAI/d,EAAC,GAAI,KAAM,MAAO,cAAe,SAAA,CAAW,CAAC,CAAC,CAAA,CACpH,CAEJ,CAEA,MAAMoe,EAAY7I,EAAM,UAAW3T,GAAMA,EAAE,KAAO2Y,CAAmB,EAC/D8D,EAAS9I,EAAM,UAAW3T,GAAMA,EAAE,OAAS,KAAK,EAChD0C,EAAK8Z,IAAc,GACpBC,IAAW,GAAK9I,EAAM,OAAS8I,EAChCD,EAAY,EAChB,OAAA7I,EAAM,OAAOjR,EAAI,EAAG2Z,CAAQ,EACrB,CAAE,GAAGnH,EAAM,CAACU,CAAQ,EAAG,CAAE,GAAGV,EAAKU,CAAQ,EAAG,CAAC+E,CAAM,EAAGhH,EAAM,CACrE,CAAC,CACH,MAEMyI,GAEF/D,GAAUnD,GAAS,CACjB,MAAML,EAAMK,EAAK,UAAWlV,GAAMA,EAAE,KAAO2Y,CAAmB,EAE9D,MAAO,CAAC,GADgBzD,EAAK,OAAQlV,GAAMA,EAAE,OAAS,KAAK,EAChC,MAAM,EAAG6U,EAAM,CAAC,EAAGwH,CAAQ,CACxD,CAAC,EACD/D,EAAapD,IAAU,CACrB,GAAGA,EACH,CAACiH,CAAS,EAAG,OAAO,YAClB,OAAO,KAAKtG,CAAY,EAAE,IAAKzX,GAAM,CAACA,EAAG,CAAC,CAAE,GAAI,OAAO+d,CAAS,IAAI/d,CAAC,GAAI,KAAM,MAAO,cAAe,SAAA,CAAW,CAAC,CAAC,CAAA,CACpH,EACA,GAEFia,GAAUnD,GAAS,CACjB,MAAML,EAAMK,EAAK,UAAWlV,GAAMA,EAAE,KAAO2Y,CAAmB,EAC9D,OAAI9D,IAAQ,GAAWK,EAChB,CAAC,GAAGA,EAAK,MAAM,EAAGL,EAAM,CAAC,EAAGwH,EAAU,GAAGnH,EAAK,MAAML,EAAM,CAAC,CAAC,CACrE,CAAC,EAIL+D,GAAuB,IAAI,EAC3BE,GAAmB,IAAI,EACvBJ,GAAgByD,CAAS,EACzB3D,EAAc,YAAY,CAC5B,EAAG,CAACG,EAAqBE,EAAe,CAAC,EAEnC6D,GAAiBvP,EAAAA,YAAY,CAACkC,EAAgBiB,IAAoC,CAMtF,MAAMqM,EAAqBC,GAAgE,CACzF,MAAMC,EAAOD,EAAI,OAASA,EAAI,IAC9B,OAAQA,EAAI,KAAA,CACV,IAAK,KAAU,MAAO,QAAQC,CAAI,GAClC,IAAK,SAAU,MAAO,aAAaA,CAAI,GACvC,IAAK,OAAU,OAAOA,EAAK,gBAAkB,OAASA,EAAO,UAAUA,CAAI,GAC3E,QAAe,OAAOA,CAAA,CAE1B,EAGMC,EAA2BC,GAAuC,CACtE,MAAM/I,EAAO+F,GAAS1K,CAAM,EAC5B,IAAI2E,GAAA,YAAAA,EAAM,kBAAmB,kBAAmB,OAAO+I,EAEvD,MAAMC,GADW1M,EAAO,eAAuF,CAAA,GACvF,IAAKpT,GAAMA,EAAE,GAAG,EAAE,OAAO,OAAO,EACxD,GAAI8f,EAAQ,SAAW,EAAG,OAAOD,EACjC,MAAMpO,EAAWoO,EAAa1N,CAAM,GAAK,CAAA,EACnC4N,EAA4B,CAAA,EAClC,OAAAD,EAAQ,QAAS5e,GAAM,CACrB6e,EAAO7e,CAAC,EAAIuQ,EAASvQ,CAAC,GAAK,CAAC,CAAE,GAAI,OAAOiR,CAAM,IAAIjR,CAAC,GAAI,KAAM,MAAO,cAAe,UAAW,CACjG,CAAC,EACM,CAAE,GAAG2e,EAAc,CAAC1N,CAAM,EAAG4N,CAAA,CACtC,EAEMC,EAAwB,CAAClJ,EAAkB1D,IAAgD,CAC/F,GAAI0D,EAAK,iBAAmB,kBAAmB,MAAO,CAAE,GAAGA,EAAM,SAAU1D,CAAAA,EAC3E,MAAM6M,EAAW7M,EAAO,eAAuF,CAAA,EACzG8M,EAAmC,CAAA,EACzC,OAAAD,EAAQ,QAASjgB,GAAM,CAAMA,EAAE,MAAKkgB,EAASlgB,EAAE,GAAG,EAAIyf,EAAkBzf,CAAC,EAAG,CAAC,EACtE,CAAE,GAAG8W,EAAM,SAAU1D,EAAQ,aAAc8M,CAAA,CACpD,EAGA,GAAIlK,EAAM,KAAMlT,GAAMA,EAAE,KAAOqP,CAAM,EAAG,CACtCiJ,EAAayE,GAAiB,CAC5B,MAAME,EAASH,EAAwBC,CAAY,EACnD,OAAA1E,GAAUnD,GACRA,EAAK,IAAKlV,GACRA,EAAE,KAAOqP,EAAS6N,EAAsBld,EAAGsQ,CAAM,EAAItQ,CAAA,CACvD,EAEKid,CACT,CAAC,EACD,MACF,CAEA3E,EAAapD,GAAS,CAEpB,MAAMoF,EAAO,CAAE,GADKwC,EAAwB5H,CAAI,CAC9B,EAClB,UAAWU,KAAY,OAAO,KAAK0E,CAAI,EAAG,CACxC,MAAM+C,EAAe1J,GAAwBA,EAAM,IAAK3T,GAAMA,EAAE,KAAOqP,EAAS6N,EAAsBld,EAAGsQ,CAAM,EAAItQ,CAAC,EACpH,UAAWgW,KAAa,OAAO,KAAKsE,EAAK1E,CAAQ,CAAC,EAChD,GAAK0E,EAAK1E,CAAQ,EAAEI,CAAS,EAAE,KAAMhW,GAAMA,EAAE,KAAOqP,CAAM,EAC1D,OAAAiL,EAAK1E,CAAQ,EAAI,CAAE,GAAG0E,EAAK1E,CAAQ,EAAG,CAACI,CAAS,EAAGqH,EAAY/C,EAAK1E,CAAQ,EAAEI,CAAS,CAAC,CAAA,EACjFsE,CAEX,CACA,OAAOA,CACT,CAAC,CAOH,EAAG,CAACpH,EAAOC,EAAU4G,EAAQ,CAAC,EAExBuD,EAAa9O,UAAQ,IAAMuL,GAAStB,IAAgB,EAAE,EAAG,CAACsB,GAAUtB,EAAY,CAAC,EACjF8E,GAAmB/O,EAAAA,QAAQ,IAC1B8O,GAAA,MAAAA,EAAY,eACV/G,EAAa,QAAQ+G,EAAW,cAAc,GAAK,KADlB,KAEvC,CAACA,EAAY/G,CAAY,CAAC,EAEvB,CAAE,MAAOiH,GAAU,MAAAlL,EAAA,EAAU9D,EAAAA,QACjC,IAAM+G,GAAYrC,EAAOC,EAAUyD,EAAW,KAAOmE,GAAoBvF,GAAkBC,EAAOjD,EAAiBkD,EAAY,EAC/H,CAACxC,EAAOC,EAAUyD,EAAUmE,GAAoBvF,GAAkBC,EAAOjD,EAAiBkD,EAAY,CAAA,EAGlGrD,GAAQ7D,EAAAA,QAAQ,IAAM,CAC1B,MAAMiP,EAAerG,EACjB,IAAI,IAAIA,EAAgB,MAAM,IAAKpX,GAAM,CAACA,EAAE,OAAQA,CAAC,CAAC,CAAC,EACvD,KAEJ,OAAOwd,GAAS,IAAK5iB,GAAM,CACzB,IAAI8iB,EAAiC,CAAA,EAErC,GAAID,EAAc,CAChB,MAAME,EAAOF,EAAa,IAAI7iB,EAAE,EAAE,EAC9B+iB,MAAc,CAAE,iBAAkBA,EAAK,OAAQ,gBAAiBA,EAAK,KAAA,EAC3E,CAGA,OAAI/iB,EAAE,OAAS,mBAAqB+V,IAClC+M,EAAM,UAAajN,GAAuB,OACxC,MAAMuD,EAAO+F,GAASnf,EAAE,EAAE,EAC1Boe,GAAsB,CAAE,WAAAvI,EAAY,gBAAgBoC,EAAAmB,GAAA,YAAAA,EAAM,WAAN,YAAAnB,EAAgB,gBAA4B,OAAW,CAC7G,GAGK,OAAO,KAAK6K,CAAK,EAAE,OAAS,EAAI,CAAE,GAAG9iB,EAAG,KAAM,CAAE,GAAGA,EAAE,KAAM,GAAG8iB,CAAA,GAAY9iB,CACnF,CAAC,CACH,EAAG,CAAC4iB,GAAUpG,EAAiBzG,EAAiBoJ,EAAQ,CAAC,EAEnD6D,GAAWpP,EAAAA,QAAQ,KAAO,CAAE,WAAA2L,GAAY,aAAAC,GAAc,UAAW,IAAM,CAAC,EAAG,kBAAAU,GAAA,SAAmB3O,GAAU,aAAAoK,EAAc,SAAA4B,EAAA,GAAa,CAACgC,GAAYC,GAAcU,GAAmB3O,GAAUoK,EAAc4B,EAAQ,CAAC,EAKlN0F,GAAmB1Q,EAAAA,YAAY,SAAY,CAC3CxD,GAAQ,MAAMA,EAAO,CAAE,MAAAuJ,EAAO,SAAAC,EAAU,CAC9C,EAAG,CAACxJ,EAAQuJ,EAAOC,CAAQ,CAAC,EAE5B,OACE1I,EAAAA,IAACqT,GAAAA,0BAAyB,UAAWtG,GACnC,eAACuG,GAAAA,sBAAsB,SAAtB,CAA+B,MAAOH,GACvC,SAAApT,EAAAA,KAAC,MAAA,CACC,UAAU,mBACV,MAAO,CACL,MAAO,OAAQ,OAAQ,OAAQ,SAAU,WACzC,QAAS,OAAQ,cAAe,SAE/B,eAA2BiL,EAAM,cAAgB,UACjD,kBAA8BA,EAAM,WAAa,UACjD,YAAwBA,EAAM,WAAa,UAC3C,aAAyBA,EAAM,gBAAkB,UACjD,eAA2BA,EAAM,cAAgB,OACjD,cAA0BA,EAAM,aAAe,UAC/C,cAA0BA,EAAM,aAAe,UAC/C,cAA0B,GAAGA,EAAM,cAAgB,CAAC,KACpD,mBAA+BA,EAAM,UAAA,EAGvC,SAAA,CAAA,CAAC4B,IAAe1N,GAAUC,GAAYL,IACrCkB,EAAAA,IAACnB,GAAA,CACC,aAAAC,EACA,qBAAAC,EACA,OAAQ8N,EACR,YAAaC,EACb,OAAQ5N,EAASkU,GAAmB,OACpC,SAAAjU,EACA,UAAAC,CAAA,CAAA,EAGJW,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,KAAM,EAAG,UAAW,EAAG,SAAU,UAAA,EAC/C,SAAA,CAAAA,EAAAA,KAACwT,GAAA,CACC,MAAA3L,GACA,MAAAC,GACA,UAAWiH,GACX,UAAWE,GACX,QAAShC,GACT,eAAgB,CAAE,QAASC,CAAA,EAC3B,eAAgB,GAChB,iBAAkB,GAClB,YAAaG,GACb,aAAcC,GACd,QAAAC,GACA,QAAAC,GACA,WAAAC,GACA,SAAAC,GACA,WAAY,CAAE,gBAAiB,EAAA,EAC/B,YAAa,CAAC+F,EAAQ3V,IAAS,CAC7B,MAAM0L,EAAO+F,GAASzR,EAAK,EAAE,EACxB0L,IACDkD,GAAA,MAAAA,EAAkBlD,KAClBA,EAAK,OAAS,cAAgBA,EAAK,OAAS,eAAgB8G,GAAA,GACvD9G,EAAK,OAAS,YAAcA,EAAK,OAAS,UAAYA,EAAK,OAAS,aAAYmG,GAAW7R,EAAK,EAAE,GAC7G,EAEC,SAAA,CAAAmN,EAAM,aAAe,QACpBhL,EAAAA,IAACyT,GAAAA,WAAA,CACC,QAASzI,EAAM,WACf,MAAOA,EAAM,iBAAmB,UAChC,IAAK,EAAA,CAAA,EAGRkC,IAAgBlN,EAAAA,IAAC0T,GAAAA,SAAA,CAAS,gBAAiB,EAAA,CAAO,EAClDvG,IAAenN,EAAAA,IAAC2T,WAAA,CAAQ,SAAQ,GAAC,SAAQ,GAAC,QAC1C5V,GAAA,CAAc,eAAgB8Q,GAAoB,UAAWjH,GAAM,MAAA,CAAQ,CAAA,CAAA,CAAA,EAG7E0E,EACGwB,KAAe,iBAAmBxB,EAAsBP,EAAiB,KAAA,EAAQ0E,GAAqB,IAAM1C,EAAc,IAAI,CAAC,EAC/H/N,EAAAA,IAACuB,GAAA,CAAsB,KAAMuM,KAAe,gBAAiB,UAAW/B,EAAiB,KAAA,EAAK,SAAGrK,GAAoB,SAAU+O,GAAqB,QAAS,IAAM1C,EAAc,IAAI,EAAG,mBAAAnM,CAAA,CAAwC,EAGnO2K,EACGuB,KAAe,cAAgBvB,EAAiB+E,GAAA,EAA2BG,GAAsB,IAAM,CAAE1D,EAAc,IAAI,EAAGI,GAAuB,IAAI,CAAG,CAAC,EAC7JnO,EAAAA,IAAC2D,GAAA,CAAiB,KAAMmK,KAAe,aAAc,qBAAsBwD,GAAA,EAAwB,SAAG5P,GAAoB,SAAU+P,GAAsB,QAAS,IAAM,CAAE1D,EAAc,IAAI,EAAGI,GAAuB,IAAI,CAAG,EAAG,EAGpO3B,EACGsB,KAAe,cAAgBtB,EAAiBsG,IAAoB,OAAWD,EAAYZ,GAAgB,IAAMlE,EAAc,IAAI,CAAC,QACnIpJ,GAAA,CAAiB,KAAMmJ,KAAe,aAAc,OAAQE,GAAc,WAAY8E,GAAkB,cAAeD,GAAA,YAAAA,EAAY,SAAA,SAAUnR,GAAoB,OAAQuQ,GAAgB,QAAS,IAAMlE,EAAc,IAAI,EAAG,EAEjO7H,GAAmBoI,IAClBtO,EAAAA,IAAC+F,GAAA,CACC,OAAQ,CAAC,CAACuI,GACV,QAAS,IAAMC,GAAsB,IAAI,EACzC,WAAYD,GAAmB,WAC/B,cAAeA,GAAmB,cAClC,gBAAApI,CAAA,CAAA,CACF,CAAA,CAEF,CAAA,CAAA,CAAA,EAEJ,CAAA,CACA,CAEJ,6HCjjCM0N,GAAe,MAErB,SAASC,GAAa,CAAE,SAAAlR,EAAU,SAAAhB,GAAkE,SAClG,MAAMmS,EAAQnR,EAAS,gBAAkBoR,EAAAA,uBAAuBpR,EAAS,eAAe,EAAI,KACtF1E,IAAYmK,EAAAzF,EAAS,gBAAT,YAAAyF,EAAwB,MAAM,OAAQ,GAAM,EAAE,OAAS,YAAY,SAAU,EAE/F,OACErI,EAAAA,KAAC,MAAA,CACC,KAAK,SACL,SAAU,EACV,QAAS4B,EACT,UAAY1B,GAAM,EAAMA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MAAK0B,EAAA,CAAY,EACxE,MAAO,CACL,OAAQ,sBACR,aAAc,GACd,QAAS,OACT,WAAY,OACZ,OAAQ,UACR,WAAY,uCACZ,QAAS,OACT,cAAe,SACf,IAAK,EACL,QAAS,MAAA,EAEX,aAAe1B,GAAM,CAClBA,EAAE,cAAiC,MAAM,YAAc,UACvDA,EAAE,cAAiC,MAAM,UAAY,iCACxD,EACA,aAAeA,GAAM,CAClBA,EAAE,cAAiC,MAAM,YAAc,UACvDA,EAAE,cAAiC,MAAM,UAAY,MACxD,EAGA,SAAA,CAAAF,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,aAAc,IAAK,EAAA,EAC3D,SAAA,CAAA4C,EAAS,YACP,MAAA,CAAI,MAAO,CAAE,WAAY,EAAG,MAAO,GAAI,OAAQ,GAAI,aAAc,EAAG,WAAY,UAAW,QAAS,OAAQ,WAAY,SAAU,eAAgB,QAAA,EAChJ,SAAAA,EAAS,IAAA,CACZ,EAEF5C,OAAC,OAAI,MAAO,CAAE,KAAM,EAAG,SAAU,GAC/B,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,WAAY,IAAK,SAAU,GAAI,MAAO,UAAW,aAAc,CAAA,EAAM,WAAS,MAAM,EACjG2C,EAAS,aACR3C,MAAC,MAAA,CAAI,MAAO,CAAE,SAAU,GAAI,MAAO,UAAW,WAAY,IAAK,QAAS,cAAe,gBAAiB,EAAG,gBAAiB,WAAY,SAAU,QAAA,EAC/I,SAAA2C,EAAS,WAAA,CACZ,CAAA,CAAA,CAEJ,CAAA,EACF,EAGA5C,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,SAAU,OAAQ,IAAK,CAAA,EACzE,SAAA,CAAA+T,GACC9T,EAAAA,IAAC,QAAK,MAAO,CAAE,SAAU,GAAI,WAAY,IAAK,QAAS,UAAW,aAAc,GAAI,WAAY8T,EAAM,GAAI,MAAOA,EAAM,OACpH,WAAM,KAAA,CACT,GAEDzL,EAAA1F,EAAS,OAAT,YAAA0F,EAAe,IAAK2L,GACnBhU,EAAAA,IAAC,OAAA,CAAe,MAAO,CAAE,SAAU,GAAI,QAAS,UAAW,aAAc,GAAI,WAAY,UAAW,MAAO,SAAA,EACxG,SAAAgU,CAAA,EADQA,CAEX,GAED/V,EAAY,GACX8B,EAAAA,KAAC,OAAA,CAAK,MAAO,CAAE,SAAU,GAAI,MAAO,UAAW,WAAY,MAAA,EACxD,SAAA,CAAA9B,EAAU,QAAMA,IAAc,EAAI,IAAM,EAAA,CAAA,CAC3C,CAAA,EAEJ,EAEC0E,EAAS,QACR5C,OAAC,MAAA,CAAI,MAAO,CAAE,SAAU,GAAI,MAAO,SAAA,EAAa,SAAA,CAAA,MAAI4C,EAAS,MAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAI5E,CAEA,MAAMsR,GAAkE,CAAC,CACvE,UAAAxS,EACA,iBAAAyS,EACA,mBAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAQC,CAAS,EAAIzT,EAAAA,SAAS,EAAE,EACjC,CAAC0T,EAAgBC,CAAiB,EAAI3T,EAAAA,SAAiBgT,EAAY,EAEnEY,EAAazQ,EAAAA,QAAQ,IAAM,CAC/B,MAAM0Q,MAAW,IACjB,OAAAhT,EAAU,QAASrR,GAAM,CAAMA,EAAE,UAAUqkB,EAAK,IAAIrkB,EAAE,QAAQ,CAAG,CAAC,EAC3D,CAACwjB,GAAc,GAAG,MAAM,KAAKa,CAAI,CAAC,CAC3C,EAAG,CAAChT,CAAS,CAAC,EAERiT,EAAW3Q,EAAAA,QAAQ,IAAM,CAC7B,IAAI4Q,EAAOlT,EAIX,GAHI6S,IAAmBV,KACrBe,EAAOA,EAAK,OAAQvkB,GAAMA,EAAE,WAAakkB,CAAc,GAErDF,EAAO,OAAQ,CACjB,MAAMpgB,EAAIogB,EAAO,YAAA,EACjBO,EAAOA,EAAK,OACTvkB,GAAA,SACC,OAAAA,EAAE,MAAM,YAAA,EAAc,SAAS4D,CAAC,KAChCoU,EAAAhY,EAAE,cAAF,YAAAgY,EAAe,cAAc,SAASpU,OACtCqU,EAAAjY,EAAE,OAAF,YAAAiY,EAAQ,KAAM2L,GAAQA,EAAI,YAAA,EAAc,SAAShgB,CAAC,IAAC,CAEzD,CACA,MAAO,CAAC,GAAG2gB,CAAI,EAAE,KAAK,CAAC7jB,EAAGyG,KAAOA,EAAE,YAAc,IAAMzG,EAAE,YAAc,EAAE,CAC3E,EAAG,CAAC2Q,EAAW6S,EAAgBF,CAAM,CAAC,EAEtC,OACErU,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,OAAQ,OAAQ,WAAY,SAAA,EAElF,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,cAAe,aAAc,oBAAqB,cAAe,EAAA,EACtF,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,eAAgB,gBAAiB,aAAc,EAAA,EAClG,SAAA,CAAAA,OAAC,MAAA,CACC,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,MAAO,CAAE,OAAQ,EAAG,SAAU,GAAI,WAAY,IAAK,MAAO,SAAA,EAAa,SAAA,qBAAkB,EAC7FA,EAAAA,IAAC,IAAA,CAAE,MAAO,CAAE,OAAQ,UAAW,SAAU,GAAI,MAAO,WAAa,SAAA,mDAAA,CAEjE,CAAA,EACF,EACCmU,GACCpU,EAAAA,KAAC,SAAA,CACC,QAASoU,EACT,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,EAAG,QAAS,WAAY,OAAQ,sBAAuB,aAAc,EAAG,WAAY,OAAQ,MAAO,UAAW,SAAU,GAAI,WAAY,IAAK,OAAQ,SAAA,EAE1M,SAAA,CAAAnU,EAAAA,IAAC4U,EAAAA,MAAA,CAAM,KAAM,EAAA,CAAI,EAAE,oBAAA,CAAA,CAAA,CAErB,EAEJ,SAGC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,EAAG,WAAY,UAAW,aAAc,EAAG,QAAS,WAAY,aAAc,IACtI,SAAA,CAAA5U,EAAAA,IAAC6U,EAAAA,SAAA,CAAS,KAAM,GAAI,MAAM,UAAU,EACpC7U,EAAAA,IAAC,QAAA,CACC,MAAOoU,EACP,SAAWnU,GAAMoU,EAAUpU,EAAE,OAAO,KAAK,EACzC,YAAY,sBACZ,MAAO,CAAE,OAAQ,OAAQ,WAAY,cAAe,QAAS,OAAQ,SAAU,GAAI,MAAO,UAAW,KAAM,CAAA,CAAE,CAAA,CAC/G,EACF,EAGCuU,EAAW,OAAS,GACnBxU,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,IAAK,EAAG,SAAU,QAC9C,SAAAwU,EAAW,IAAKM,GACf9U,EAAAA,IAAC,SAAA,CAEC,QAAS,IAAMuU,EAAkBO,CAAG,EACpC,MAAO,CACL,QAAS,WACT,aAAc,GACd,OAAQ,cACR,YAAaR,IAAmBQ,EAAM,UAAY,UAClD,WAAYR,IAAmBQ,EAAM,UAAY,OACjD,MAAOR,IAAmBQ,EAAM,UAAY,UAC5C,SAAU,GACV,WAAYR,IAAmBQ,EAAM,IAAM,IAC3C,OAAQ,SAAA,EAGT,SAAAA,CAAA,EAdIA,CAAA,CAgBR,CAAA,CACH,CAAA,EAEJ,EAGA9U,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,KAAM,EAAG,UAAW,OAAQ,QAAS,EAAA,EAChD,SAAA0U,EAAS,SAAW,EACnB3U,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,UAAW,SAAU,QAAS,SAAU,MAAO,SAAA,EAC3D,SAAA,CAAAC,MAAC+U,EAAAA,YAAW,KAAM,GAAI,MAAO,CAAE,aAAc,GAAK,EAClD/U,EAAAA,IAAC,KAAE,MAAO,CAAE,OAAQ,EAAG,SAAU,EAAA,EAAM,SAAA,oBAAA,CAAkB,CAAA,CAAA,CAC3D,EAEAA,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,oBAAqB,wCAAyC,IAAK,EAAA,EAC/F,SAAA0U,EAAS,IAAKtkB,GACb4P,EAAAA,IAAC6T,GAAA,CAAgC,SAAUzjB,EAAG,SAAU,IAAM8jB,EAAiB9jB,CAAC,CAAA,EAA7DA,EAAE,UAA8D,CACpF,EACH,CAAA,CAEJ,CAAA,EACF,CAEJ,EC3LM4kB,GAAmG,CACvG,QAAW,CAAE,MAAO,UAAa,MAAOC,EAAAA,uBAAuB,QAAW,KAAMzV,EAAM,cAAc0V,EAAAA,YAAe,CAAE,KAAM,EAAA,CAAI,CAAA,EAC/H,QAAW,CAAE,MAAO,UAAa,MAAOD,EAAAA,uBAAuB,QAAW,KAAMzV,EAAM,cAAc2V,EAAAA,cAAe,CAAE,KAAM,EAAA,CAAI,CAAA,EAC/H,OAAW,CAAE,MAAO,SAAa,MAAOF,EAAAA,uBAAuB,OAAW,KAAMzV,EAAM,cAAc4V,EAAAA,QAAe,CAAE,KAAM,EAAA,CAAI,CAAA,EAC/H,UAAW,CAAE,MAAO,YAAa,MAAOH,EAAAA,uBAAuB,UAAW,KAAMzV,EAAM,cAAc6V,EAAAA,SAAe,CAAE,KAAM,EAAA,CAAI,CAAA,CACjI,EAEMC,GAA6E,CACjF,QAAU,CAAE,MAAOL,EAAAA,uBAAuB,QAAU,KAAMzV,EAAM,cAAc+V,EAAAA,iBAAkB,CAAE,KAAM,EAAA,CAAI,CAAA,EAC5G,QAAU,CAAE,MAAON,EAAAA,uBAAuB,QAAU,KAAMzV,EAAM,cAAc0V,EAAAA,YAAkB,CAAE,KAAM,EAAA,CAAI,CAAA,EAC5G,QAAU,CAAE,MAAOD,EAAAA,uBAAuB,QAAU,KAAMzV,EAAM,cAAc2V,EAAAA,cAAkB,CAAE,KAAM,EAAA,CAAI,CAAA,EAC5G,OAAU,CAAE,MAAOF,EAAAA,uBAAuB,OAAU,KAAMzV,EAAM,cAAc4V,EAAAA,QAAkB,CAAE,KAAM,EAAA,CAAI,CAAA,EAC5G,QAAU,CAAE,MAAOH,EAAAA,uBAAuB,QAAU,KAAMzV,EAAM,cAAc6V,EAAAA,SAAkB,CAAE,KAAM,EAAA,CAAI,CAAA,CAC9G,EAEA,SAASG,GAAWC,EAAqB,CACvC,GAAI,CACF,OAAO,IAAI,KAAKA,CAAG,EAAE,eAAA,CACvB,MAAQ,CACN,OAAOA,CACT,CACF,CAEA,SAASC,GAASC,EAAeC,EAAsB,CACrD,GAAI,CACF,MAAMC,EAAK,IAAI,KAAKD,GAAO,IAAI,OAAO,YAAA,CAAa,EAAE,UAAY,IAAI,KAAKD,CAAK,EAAE,QAAA,EACjF,OAAIE,EAAK,IAAa,GAAGA,CAAE,KACvBA,EAAK,IAAc,IAAIA,EAAK,KAAM,QAAQ,CAAC,CAAC,IACzC,GAAG,KAAK,MAAMA,EAAK,GAAK,CAAC,KAAK,KAAK,MAAOA,EAAK,IAAS,GAAI,CAAC,GACtE,MAAQ,CACN,MAAO,GACT,CACF,CAIA,SAASC,GAAQ,CAAE,KAAA5C,GAAiC,CAClD,KAAM,CAAC6C,EAAUC,CAAW,EAAIpV,EAAAA,SAAS,EAAK,EACxCqV,EAAOX,GAAUpC,EAAK,MAAM,EAC5BgD,EAAY,CAAC,EAAEhD,EAAK,QAAUA,EAAK,SAAWA,EAAK,OAEzD,cACG,MAAA,CAAI,MAAO,CAAE,aAAc,qBAC1B,SAAA,CAAAnT,EAAAA,KAAC,MAAA,CACC,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,EAAG,QAAS,WAAY,OAAQmW,EAAY,UAAY,SAAA,EAC7G,QAAS,IAAM,CAAMA,GAAWF,EAAa9f,GAAM,CAACA,CAAC,CAAG,EACxD,KAAMggB,EAAY,SAAW,OAC7B,SAAUA,EAAY,EAAI,OAC1B,UAAYjW,GAAM,CAAMiW,IAAcjW,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MAAM+V,EAAa9f,GAAM,CAACA,CAAC,CAAG,EAEnG,SAAA,CAAA8J,MAAC,QAAK,MAAO,CAAE,MAAOiW,EAAK,MAAO,WAAY,CAAA,EAC3C,SAAAzW,EAAM,aAAayW,EAAK,KAAM,CAAE,MAAOA,EAAK,KAAA,CAAO,EACtD,EACAjW,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,KAAM,EAAG,SAAU,GAAI,MAAO,SAAA,EAAc,SAAAkT,EAAK,OAASA,EAAK,OAAO,EACpFA,EAAK,aACJlT,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,SAAU,GAAI,QAAS,UAAW,aAAc,GAAI,WAAY,UAAW,MAAO,UAAW,WAAY,GAAA,EACrH,WAAK,YACR,QAED,OAAA,CAAK,MAAO,CAAE,SAAU,GAAI,MAAO,UAAW,WAAY,GACxD,SAAAkT,EAAK,UAAYwC,GAASxC,EAAK,UAAWA,EAAK,WAAW,EAAI,IACjE,EACCgD,GACClW,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,MAAO,UAAW,WAAY,GAC1C,SAAA+V,EAAWvW,EAAM,cAAc2W,eAAc,CAAE,KAAM,EAAA,CAAI,EAAI3W,EAAM,cAAc4W,eAAc,CAAE,KAAM,EAAA,CAAI,CAAA,CAC9G,CAAA,CAAA,CAAA,EAIHL,GAAYG,GACXnW,OAAC,MAAA,CAAI,MAAO,CAAE,QAAS,mBAAoB,SAAU,EAAA,EAClD,SAAA,CAAAmT,EAAK,OACJlT,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,QAAS,WAAY,aAAc,EAAG,WAAY,UAAW,MAAO,UAAW,aAAc,CAAA,EACxG,WAAK,MACR,EAEDkT,EAAK,QAAU,OAAO,KAAKA,EAAK,MAAM,EAAE,OAAS,UAC/C,UAAA,CAAQ,MAAO,CAAE,aAAc,GAC9B,SAAA,CAAAlT,EAAAA,IAAC,UAAA,CAAQ,MAAO,CAAE,OAAQ,UAAW,MAAO,UAAW,aAAc,CAAA,EAAK,SAAA,QAAA,CAAM,EAChFA,EAAAA,IAAC,OAAI,MAAO,CAAE,OAAQ,EAAG,SAAU,GAAI,WAAY,UAAW,QAAS,EAAG,aAAc,EAAG,UAAW,MAAA,EACnG,SAAA,KAAK,UAAUkT,EAAK,OAAQ,KAAM,CAAC,CAAA,CACtC,CAAA,EACF,EAEDA,EAAK,SAAW,OAAO,KAAKA,EAAK,OAAO,EAAE,OAAS,GAClDnT,EAAAA,KAAC,UAAA,CACC,SAAA,CAAAC,EAAAA,IAAC,UAAA,CAAQ,MAAO,CAAE,OAAQ,UAAW,MAAO,UAAW,aAAc,CAAA,EAAK,SAAA,SAAA,CAAO,EACjFA,EAAAA,IAAC,OAAI,MAAO,CAAE,OAAQ,EAAG,SAAU,GAAI,WAAY,UAAW,QAAS,EAAG,aAAc,EAAG,UAAW,MAAA,EACnG,SAAA,KAAK,UAAUkT,EAAK,QAAS,KAAM,CAAC,CAAA,CACvC,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,EAEJ,CAEJ,CAIA,SAASmD,GAAY,CAAE,OAAAC,EAAQ,SAAAC,EAAU,SAAA5U,GAAkF,CACzH,MAAMsU,EAAOjB,GAAYsB,EAAO,MAAM,EAEtC,OACEvW,EAAAA,KAAC,MAAA,CACC,KAAK,SACL,SAAU,EACV,QAAS4B,EACT,UAAY1B,GAAM,EAAMA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MAAK0B,EAAA,CAAY,EACxE,MAAO,CACL,QAAS,YACT,aAAc,oBACd,OAAQ,UACR,WAAY4U,EAAW,UAAY,OACnC,QAAS,OACT,WAAY,SACZ,IAAK,GACL,QAAS,MAAA,EAGX,SAAA,CAAAvW,MAAC,OAAA,CAAK,MAAO,CAAE,MAAOiW,EAAK,MAAO,WAAY,GAC3C,SAAAzW,EAAM,aAAayW,EAAK,KAAM,CAAE,MAAOA,EAAK,MAAO,KAAM,EAAA,CAAI,EAChE,EACAlW,OAAC,OAAI,MAAO,CAAE,KAAM,EAAG,SAAU,GAC/B,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,SAAU,GAAI,MAAO,UAAW,WAAYuW,EAAW,IAAM,IAAK,WAAY,SAAU,SAAU,SAAU,aAAc,YACrI,SAAAf,GAAWc,EAAO,WAAW,CAAA,CAChC,EACAvW,OAAC,OAAI,MAAO,CAAE,SAAU,GAAI,MAAO,WAChC,SAAA,CAAAuW,EAAO,YAAc,MAAMA,EAAO,WAAW,GAAK,SAAS,MAAIA,EAAO,MAAM,OAAO,QAAMA,EAAO,MAAM,SAAW,EAAI,IAAM,EAAA,CAAA,CAC9H,CAAA,EACF,EACAtW,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,SAAU,GAAI,WAAY,IAAK,MAAOiW,EAAK,MAAO,WAAY,CAAA,EAAM,WAAK,MAAM,EAC9FjW,EAAAA,IAACyE,EAAAA,eAAA,CAAe,KAAM,GAAI,MAAM,SAAA,CAAU,CAAA,CAAA,CAAA,CAGhD,CAUA,MAAM+R,GAAoE,CAAC,CAAE,QAAAC,EAAS,eAAAC,KAAqB,OACzG,KAAM,CAACC,EAAYC,CAAa,EAAIhW,EAAAA,WAAwBwH,EAAAqO,EAAQ,CAAC,IAAT,YAAArO,EAAY,KAAM,IAAI,EAC5EmO,EAAWE,EAAQ,KAAMtiB,GAAMA,EAAE,KAAOwiB,CAAU,GAAK,KACvDE,EAAS,CAAC,GAAGJ,CAAO,EAAE,KAAK,CAAC3lB,EAAGyG,IAAM,IAAI,KAAKA,EAAE,WAAW,EAAE,UAAY,IAAI,KAAKzG,EAAE,WAAW,EAAE,SAAS,EAEhH,OAAI2lB,EAAQ,SAAW,SAElB,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,WAAY,SAAU,eAAgB,SAAU,OAAQ,IAAK,MAAO,UAAW,IAAK,GAC1I,SAAA,CAAAzW,EAAAA,IAAC8W,EAAAA,WAAA,CAAW,KAAM,EAAA,CAAI,EACtB9W,EAAAA,IAAC,KAAE,MAAO,CAAE,OAAQ,EAAG,SAAU,EAAA,EAAM,SAAA,mBAAA,CAAiB,EACxDA,EAAAA,IAAC,KAAE,MAAO,CAAE,OAAQ,EAAG,SAAU,EAAA,EAAM,SAAA,8BAAA,CAA4B,CAAA,EACrE,SAKD,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,OAAQ,OAAQ,WAAY,UAAW,OAAQ,oBAAqB,aAAc,EAAG,SAAU,UAE5H,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,MAAO,IAAK,WAAY,EAAG,YAAa,oBAAqB,UAAW,OAAQ,WAAY,WACxG,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,YAAa,aAAc,oBAAqB,WAAY,IAAK,SAAU,GAAI,MAAO,WAAa,SAAA,CAAA,gBAC1G0W,EAAQ,OAAO,GAAA,EAC/B,EACCI,EAAO,IAAK1iB,SACVkiB,GAAA,CAAuB,OAAQliB,EAAG,SAAUA,EAAE,KAAOwiB,EAAY,SAAU,IAAMC,EAAcziB,EAAE,EAAE,CAAA,EAAlFA,EAAE,EAAmF,CACxG,CAAA,EACH,EAGA6L,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,KAAM,EAAG,UAAW,MAAA,EAC/B,SAAAuW,EACCxW,EAAAA,KAAC,MAAA,CAEC,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,YAAa,aAAc,oBAAqB,QAAS,OAAQ,WAAY,aAAc,eAAgB,gBAAiB,IAAK,IACtJ,SAAA,CAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,EAAG,aAAc,CAAA,EACxE,SAAA,CAAAP,EAAM,aAAawV,GAAYuB,EAAS,MAAM,EAAE,KAAM,CAAE,MAAOvB,GAAYuB,EAAS,MAAM,EAAE,MAAO,KAAM,GAAI,EAC9GvW,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,WAAY,IAAK,SAAU,GAAI,MAAO,WAAc,SAAAgV,GAAYuB,EAAS,MAAM,EAAE,KAAA,CAAM,CAAA,EACxG,EACAxW,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,SAAU,GAAI,MAAO,UAAW,QAAS,OAAQ,cAAe,SAAU,IAAK,GAC3F,SAAA,CAAAA,EAAAA,KAAC,OAAA,CAAK,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,CAAA,EACzD,SAAA,CAAAC,EAAAA,IAAC8W,EAAAA,WAAA,CAAW,KAAM,EAAA,CAAI,EAAE,IAAEtB,GAAWe,EAAS,WAAW,EACxDA,EAAS,aAAe,MAAMf,GAAWe,EAAS,WAAW,CAAC,KAAKb,GAASa,EAAS,YAAaA,EAAS,WAAW,CAAC,GAAA,EAC1H,EACCA,EAAS,aACRxW,EAAAA,KAAC,OAAA,CAAK,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,CAAA,EACzD,SAAA,CAAAC,EAAAA,IAAC+W,EAAAA,SAAA,CAAS,KAAM,EAAA,CAAI,EAAE,IAAER,EAAS,WAAA,CAAA,CACnC,CAAA,CAAA,CAEJ,CAAA,EACF,EACCG,GACC1W,EAAAA,IAAC,SAAA,CACC,QAAS,IAAM0W,EAAeH,CAAQ,EACtC,MAAO,CAAE,QAAS,WAAY,OAAQ,sBAAuB,aAAc,EAAG,WAAY,OAAQ,MAAO,UAAW,SAAU,GAAI,WAAY,IAAK,OAAQ,UAAW,WAAY,CAAA,EACnL,SAAA,gBAAA,CAAA,CAED,EAEJ,EAGCA,EAAS,OACRvW,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,OAAQ,YAAa,QAAS,YAAa,aAAc,EAAG,WAAY,UAAW,MAAO,UAAW,SAAU,EAAA,EAC1H,WAAS,MACZ,SAID,MAAA,CACC,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,YAAa,SAAU,GAAI,WAAY,IAAK,MAAO,UAAW,aAAc,qBAAuB,SAAA,CAAA,UAChHwW,EAAS,MAAM,OAAO,GAAA,EAChC,EACCA,EAAS,MAAM,IAAI,CAACrD,EAAM5d,IACzB0K,EAAAA,IAAC8V,GAAA,CAAoC,KAAA5C,CAAA,EAAvB,GAAGA,EAAK,MAAM,IAAI5d,CAAC,EAAgB,CAClD,CAAA,EACH,EAGCihB,EAAS,QAAU,OAAO,KAAKA,EAAS,MAAM,EAAE,OAAS,GACxDvW,EAAAA,IAAC,OAAI,MAAO,CAAE,QAAS,WAAA,EACrB,gBAAC,UAAA,CACC,SAAA,CAAAA,EAAAA,IAAC,UAAA,CAAQ,MAAO,CAAE,OAAQ,UAAW,SAAU,GAAI,WAAY,IAAK,MAAO,UAAW,aAAc,GAAK,SAAA,iBAAc,EACvHA,EAAAA,IAAC,OAAI,MAAO,CAAE,OAAQ,EAAG,SAAU,GAAI,WAAY,UAAW,QAAS,GAAI,aAAc,EAAG,UAAW,MAAA,EACpG,SAAA,KAAK,UAAUuW,EAAS,OAAQ,KAAM,CAAC,CAAA,CAC1C,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EAEJ,EAEAvW,MAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,eAAgB,SAAU,OAAQ,OAAQ,MAAO,UAAW,SAAU,IAAM,uCAEjI,CAAA,CAEJ,CAAA,EACF,CAEJ,ECpPagX,GAAwC,CACnD,MAAO,CACL,CAAE,GAAI,QAAS,KAAM,QAAS,cAAe,YAAa,UAAW,EAAA,EACrE,CAAE,GAAI,4BAA6B,KAAM,eAAgB,cAAe,cAAe,UAAW,GAAM,MAAO,wBAAyB,SAAU,CAAE,MAAO,wBAAwB,EACnL,CAAE,GAAI,iBAAkB,KAAM,WAAY,cAAe,mBAAoB,eAAgB,eAAgB,UAAW,GAAM,MAAO,gBAAiB,SAAU,CAAE,MAAO,gBAAgB,EACzL,CAAE,GAAI,aAAc,KAAM,WAAY,cAAe,eAAgB,eAAgB,WAAY,UAAW,GAAM,MAAO,mBAAoB,aAAc,CAAE,KAAM,WAAY,KAAM,WAAW,EAChM,CAAE,GAAI,MAAO,KAAM,MAAO,cAAe,UAAW,UAAW,EAAA,CAAM,EAEvE,SAAU,CACR,aAAc,CACZ,KAAM,CAAC,CAAE,GAAI,sBAAuB,KAAM,WAAY,cAAe,mBAAoB,eAAgB,eAAgB,UAAW,GAAM,MAAO,qBAAsB,SAAU,CAAE,MAAO,oBAAA,EAAwB,EAClN,KAAM,CAAC,CAAE,GAAI,sBAAuB,KAAM,WAAY,cAAe,mBAAoB,eAAgB,eAAgB,UAAW,GAAM,MAAO,mBAAoB,SAAU,CAAE,MAAO,oBAAsB,CAAA,CAChN,CAEJ,EAEaC,GAAuC,CAClD,MAAO,CACL,CAAE,GAAI,QAAS,KAAM,QAAS,cAAe,YAAa,UAAW,EAAA,EACrE,CAAE,GAAI,yBAA0B,KAAM,eAAgB,cAAe,cAAe,UAAW,GAAM,MAAO,2BAA4B,SAAU,CAAE,MAAO,2BAA2B,EACtL,CAAE,GAAI,aAAc,KAAM,WAAY,cAAe,eAAgB,eAAgB,WAAY,UAAW,GAAM,MAAO,kBAAmB,aAAc,CAAE,KAAM,WAAY,KAAM,SAAS,EAC7L,CAAE,GAAI,MAAO,KAAM,MAAO,cAAe,UAAW,UAAW,EAAA,CAAM,EAEvE,SAAU,CACR,aAAc,CACZ,KAAM,CACJ,CAAE,GAAI,YAAa,KAAM,WAAY,cAAe,cAAe,eAAgB,UAAW,UAAW,GAAM,MAAO,mBAAoB,SAAU,CAAE,MAAO,mBAAmB,EAChL,CAAE,GAAI,sBAAuB,KAAM,WAAY,cAAe,mBAAoB,eAAgB,eAAgB,UAAW,GAAM,MAAO,uBAAwB,SAAU,CAAE,MAAO,uBAAuB,CAAE,EAEhN,KAAM,CACJ,CAAE,GAAI,sBAAuB,KAAM,WAAY,cAAe,mBAAoB,eAAgB,eAAgB,UAAW,GAAM,MAAO,sBAAuB,SAAU,CAAE,MAAO,sBAAsB,CAAE,CAC9M,CACF,CAEJ,EAEaC,GAAqC,CAChD,MAAO,CACL,CAAE,GAAI,QAAS,KAAM,QAAS,cAAe,YAAa,UAAW,EAAA,EACrE,CAAE,GAAI,4BAA6B,KAAM,eAAgB,cAAe,cAAe,UAAW,GAAM,MAAO,oBAAqB,SAAU,CAAE,MAAO,oBAAoB,EAC3K,CAAE,GAAI,UAAW,KAAM,WAAY,cAAe,YAAa,eAAgB,QAAS,UAAW,GAAM,MAAO,eAAgB,SAAU,CAAE,MAAO,eAAgB,SAAU,EAAG,KAAM,MAAA,EAAU,SAAU,CAAE,SAAU,EAAG,KAAM,MAAA,CAAO,EACtO,CAAE,GAAI,iBAAkB,KAAM,WAAY,cAAe,mBAAoB,eAAgB,eAAgB,UAAW,GAAM,MAAO,iBAAkB,SAAU,CAAE,MAAO,iBAAiB,EAC3L,CAAE,GAAI,MAAO,KAAM,MAAO,cAAe,UAAW,UAAW,EAAA,CAAM,EAEvE,SAAU,CAAA,CACZ,EAEaC,GAA4C,CACvD,MAAO,CACL,CAAE,GAAI,QAAS,KAAM,QAAS,cAAe,YAAa,UAAW,EAAA,EACrE,CAAE,GAAI,0BAA2B,KAAM,eAAgB,cAAe,qBAAsB,UAAW,GAAM,MAAO,mBAAoB,SAAU,CAAE,MAAO,mBAAmB,EAC9K,CAAE,GAAI,YAAa,KAAM,WAAY,cAAe,cAAe,eAAgB,UAAW,UAAW,GAAM,MAAO,oBAAqB,SAAU,CAAE,MAAO,oBAAoB,EAClL,CAAE,GAAI,iBAAkB,KAAM,WAAY,cAAe,mBAAoB,eAAgB,eAAgB,UAAW,GAAM,MAAO,uBAAwB,SAAU,CAAE,MAAO,uBAAuB,EACvM,CAAE,GAAI,MAAO,KAAM,MAAO,cAAe,UAAW,UAAW,EAAA,CAAM,EAEvE,SAAU,CAAA,CACZ","x_google_ignoreList":[0]}
|