@marktoflow/gui 2.0.3 → 2.0.4-alpha.1
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/README.md +5 -3
- package/dist/client/assets/index-DqVkoerZ.js +838 -0
- package/dist/client/assets/index-DqVkoerZ.js.map +1 -0
- package/dist/client/assets/{index-DipWdkNl.css → index-eEWndJyn.css} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/routes/execute.js +43 -8
- package/dist/server/routes/execute.js.map +1 -1
- package/dist/server/routes/tools.js +30 -884
- package/dist/server/routes/tools.js.map +1 -1
- package/dist/server/routes/workflows.js +24 -5
- package/dist/server/routes/workflows.js.map +1 -1
- package/dist/server/services/WorkflowService.js +15 -6
- package/dist/server/services/WorkflowService.js.map +1 -1
- package/dist/server/services/agents/openai-provider.js +31 -1
- package/dist/server/services/agents/openai-provider.js.map +1 -1
- package/dist/shared/constants.js +42 -0
- package/dist/shared/constants.js.map +1 -1
- package/package.json +21 -6
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/client/App.tsx.html +0 -2230
- package/coverage/client/components/Accessibility/LiveRegion.tsx.html +0 -166
- package/coverage/client/components/Accessibility/SkipNav.tsx.html +0 -106
- package/coverage/client/components/Accessibility/index.html +0 -131
- package/coverage/client/components/Admin/AuditViewer.tsx.html +0 -214
- package/coverage/client/components/Admin/EnvironmentSwitcher.tsx.html +0 -187
- package/coverage/client/components/Admin/RoleManager.tsx.html +0 -250
- package/coverage/client/components/Admin/SecretsVault.tsx.html +0 -241
- package/coverage/client/components/Admin/index.html +0 -161
- package/coverage/client/components/Canvas/AlignmentTools.tsx.html +0 -694
- package/coverage/client/components/Canvas/Canvas.tsx.html +0 -1513
- package/coverage/client/components/Canvas/DataPreviewBadge.tsx.html +0 -307
- package/coverage/client/components/Canvas/ExecutionInputDialog.tsx.html +0 -769
- package/coverage/client/components/Canvas/ExecutionOverlay.tsx.html +0 -2938
- package/coverage/client/components/Canvas/ForEachNode.tsx.html +0 -568
- package/coverage/client/components/Canvas/GroupNode.tsx.html +0 -421
- package/coverage/client/components/Canvas/IfElseNode.tsx.html +0 -508
- package/coverage/client/components/Canvas/InlineEditor.tsx.html +0 -472
- package/coverage/client/components/Canvas/NodeContextMenu.tsx.html +0 -661
- package/coverage/client/components/Canvas/NodeTooltip.tsx.html +0 -316
- package/coverage/client/components/Canvas/OutputNode.tsx.html +0 -418
- package/coverage/client/components/Canvas/ParallelNode.tsx.html +0 -556
- package/coverage/client/components/Canvas/StepNode.tsx.html +0 -463
- package/coverage/client/components/Canvas/StickyNoteNode.tsx.html +0 -442
- package/coverage/client/components/Canvas/SubWorkflowNode.tsx.html +0 -508
- package/coverage/client/components/Canvas/SwitchNode.tsx.html +0 -640
- package/coverage/client/components/Canvas/Toolbar.tsx.html +0 -1030
- package/coverage/client/components/Canvas/TransformNode.tsx.html +0 -667
- package/coverage/client/components/Canvas/TriggerNode.tsx.html +0 -469
- package/coverage/client/components/Canvas/TryCatchNode.tsx.html +0 -577
- package/coverage/client/components/Canvas/WhileNode.tsx.html +0 -595
- package/coverage/client/components/Canvas/index.html +0 -446
- package/coverage/client/components/Canvas/index.ts.html +0 -157
- package/coverage/client/components/Collaboration/ActivityFeed.tsx.html +0 -253
- package/coverage/client/components/Collaboration/CommentThread.tsx.html +0 -397
- package/coverage/client/components/Collaboration/LockIndicator.tsx.html +0 -172
- package/coverage/client/components/Collaboration/PresenceIndicator.tsx.html +0 -214
- package/coverage/client/components/Collaboration/index.html +0 -161
- package/coverage/client/components/CommandPalette/CommandItem.tsx.html +0 -313
- package/coverage/client/components/CommandPalette/CommandPalette.tsx.html +0 -685
- package/coverage/client/components/CommandPalette/index.html +0 -131
- package/coverage/client/components/Debug/VariableInspector.tsx.html +0 -529
- package/coverage/client/components/Debug/index.html +0 -116
- package/coverage/client/components/Editor/InputsEditor.tsx.html +0 -1459
- package/coverage/client/components/Editor/NewStepWizard.tsx.html +0 -1117
- package/coverage/client/components/Editor/StepEditor.tsx.html +0 -1681
- package/coverage/client/components/Editor/YamlEditor.tsx.html +0 -565
- package/coverage/client/components/Editor/index.html +0 -161
- package/coverage/client/components/Execution/TimelineView.tsx.html +0 -397
- package/coverage/client/components/Execution/index.html +0 -116
- package/coverage/client/components/Onboarding/OnboardingTour.tsx.html +0 -265
- package/coverage/client/components/Onboarding/index.html +0 -116
- package/coverage/client/components/Panels/PropertiesPanel.tsx.html +0 -2035
- package/coverage/client/components/Panels/ValidationPanel.tsx.html +0 -856
- package/coverage/client/components/Panels/index.html +0 -131
- package/coverage/client/components/Prompt/ChangePreview.tsx.html +0 -928
- package/coverage/client/components/Prompt/PromptHistoryPanel.tsx.html +0 -712
- package/coverage/client/components/Prompt/PromptInput.tsx.html +0 -415
- package/coverage/client/components/Prompt/index.html +0 -146
- package/coverage/client/components/Settings/ProviderSwitcher.tsx.html +0 -1306
- package/coverage/client/components/Settings/SettingsPanel.tsx.html +0 -355
- package/coverage/client/components/Settings/controls/SettingNumber.tsx.html +0 -211
- package/coverage/client/components/Settings/controls/SettingSelect.tsx.html +0 -196
- package/coverage/client/components/Settings/controls/SettingToggle.tsx.html +0 -199
- package/coverage/client/components/Settings/controls/index.html +0 -146
- package/coverage/client/components/Settings/index.html +0 -131
- package/coverage/client/components/Settings/sections/AISettings.tsx.html +0 -154
- package/coverage/client/components/Settings/sections/CanvasSettings.tsx.html +0 -220
- package/coverage/client/components/Settings/sections/EditorSettings.tsx.html +0 -208
- package/coverage/client/components/Settings/sections/ExecutionSettings.tsx.html +0 -172
- package/coverage/client/components/Settings/sections/GeneralSettings.tsx.html +0 -151
- package/coverage/client/components/Settings/sections/NotificationSettings.tsx.html +0 -190
- package/coverage/client/components/Settings/sections/index.html +0 -191
- package/coverage/client/components/Sidebar/ImportDialog.tsx.html +0 -856
- package/coverage/client/components/Sidebar/NewWorkflowDialog.tsx.html +0 -694
- package/coverage/client/components/Sidebar/Sidebar.tsx.html +0 -1456
- package/coverage/client/components/Sidebar/index.html +0 -146
- package/coverage/client/components/Templates/TemplateCard.tsx.html +0 -181
- package/coverage/client/components/Templates/TemplateGallery.tsx.html +0 -307
- package/coverage/client/components/Templates/index.html +0 -131
- package/coverage/client/components/Versions/DiffViewer.tsx.html +0 -220
- package/coverage/client/components/Versions/VersionHistory.tsx.html +0 -352
- package/coverage/client/components/Versions/index.html +0 -131
- package/coverage/client/components/common/Breadcrumb.tsx.html +0 -205
- package/coverage/client/components/common/Button.tsx.html +0 -289
- package/coverage/client/components/common/ContextMenu.tsx.html +0 -691
- package/coverage/client/components/common/KeyboardShortcuts.tsx.html +0 -541
- package/coverage/client/components/common/Modal.tsx.html +0 -364
- package/coverage/client/components/common/Tabs.tsx.html +0 -256
- package/coverage/client/components/common/ThemeToggle.tsx.html +0 -301
- package/coverage/client/components/common/index.html +0 -206
- package/coverage/client/components/index.html +0 -116
- package/coverage/client/components/index.ts.html +0 -181
- package/coverage/client/hooks/index.html +0 -176
- package/coverage/client/hooks/index.ts.html +0 -97
- package/coverage/client/hooks/useAIPrompt.ts.html +0 -409
- package/coverage/client/hooks/useCanvas.ts.html +0 -739
- package/coverage/client/hooks/useWebSocket.ts.html +0 -580
- package/coverage/client/hooks/useWorkflow.ts.html +0 -502
- package/coverage/client/index.html +0 -131
- package/coverage/client/main.tsx.html +0 -115
- package/coverage/client/stores/agentStore.ts.html +0 -421
- package/coverage/client/stores/canvasStore.ts.html +0 -1129
- package/coverage/client/stores/collaborationStore.ts.html +0 -544
- package/coverage/client/stores/commandStore.ts.html +0 -610
- package/coverage/client/stores/editorStore.ts.html +0 -484
- package/coverage/client/stores/executionStore.ts.html +0 -1594
- package/coverage/client/stores/governanceStore.ts.html +0 -493
- package/coverage/client/stores/index.html +0 -341
- package/coverage/client/stores/index.ts.html +0 -112
- package/coverage/client/stores/layoutStore.ts.html +0 -439
- package/coverage/client/stores/navigationStore.ts.html +0 -232
- package/coverage/client/stores/onboardingStore.ts.html +0 -247
- package/coverage/client/stores/promptStore.ts.html +0 -430
- package/coverage/client/stores/settingsStore.ts.html +0 -472
- package/coverage/client/stores/themeStore.ts.html +0 -271
- package/coverage/client/stores/versionStore.ts.html +0 -340
- package/coverage/client/stores/workflowStore.ts.html +0 -739
- package/coverage/client/utils/applyDagreLayout.ts.html +0 -286
- package/coverage/client/utils/cn.ts.html +0 -112
- package/coverage/client/utils/index.html +0 -206
- package/coverage/client/utils/index.ts.html +0 -97
- package/coverage/client/utils/platform.ts.html +0 -223
- package/coverage/client/utils/serviceIcons.tsx.html +0 -376
- package/coverage/client/utils/stepValidation.ts.html +0 -550
- package/coverage/client/utils/workflowToGraph.ts.html +0 -1624
- package/coverage/coverage-final.json +0 -107
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -461
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/shared/constants.ts.html +0 -655
- package/coverage/shared/index.html +0 -146
- package/coverage/shared/settings.ts.html +0 -406
- package/coverage/shared/types.ts.html +0 -622
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/dist/client/assets/index-DtX_BPDj.js +0 -833
- package/dist/client/assets/index-DtX_BPDj.js.map +0 -1
|
@@ -1,2230 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for client/App.tsx</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../index.html">All files</a> / <a href="index.html">client</a> App.tsx</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">0% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/502</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">0% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/1</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">0% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/1</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">0% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/502</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
-
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
-
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
-
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
-
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
-
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
-
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
-
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
-
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
-
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
-
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
-
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
-
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
-
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
-
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
-
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
-
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
-
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
-
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
-
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
-
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
-
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
-
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
-
<a name='L669'></a><a href='#L669'>669</a>
|
|
735
|
-
<a name='L670'></a><a href='#L670'>670</a>
|
|
736
|
-
<a name='L671'></a><a href='#L671'>671</a>
|
|
737
|
-
<a name='L672'></a><a href='#L672'>672</a>
|
|
738
|
-
<a name='L673'></a><a href='#L673'>673</a>
|
|
739
|
-
<a name='L674'></a><a href='#L674'>674</a>
|
|
740
|
-
<a name='L675'></a><a href='#L675'>675</a>
|
|
741
|
-
<a name='L676'></a><a href='#L676'>676</a>
|
|
742
|
-
<a name='L677'></a><a href='#L677'>677</a>
|
|
743
|
-
<a name='L678'></a><a href='#L678'>678</a>
|
|
744
|
-
<a name='L679'></a><a href='#L679'>679</a>
|
|
745
|
-
<a name='L680'></a><a href='#L680'>680</a>
|
|
746
|
-
<a name='L681'></a><a href='#L681'>681</a>
|
|
747
|
-
<a name='L682'></a><a href='#L682'>682</a>
|
|
748
|
-
<a name='L683'></a><a href='#L683'>683</a>
|
|
749
|
-
<a name='L684'></a><a href='#L684'>684</a>
|
|
750
|
-
<a name='L685'></a><a href='#L685'>685</a>
|
|
751
|
-
<a name='L686'></a><a href='#L686'>686</a>
|
|
752
|
-
<a name='L687'></a><a href='#L687'>687</a>
|
|
753
|
-
<a name='L688'></a><a href='#L688'>688</a>
|
|
754
|
-
<a name='L689'></a><a href='#L689'>689</a>
|
|
755
|
-
<a name='L690'></a><a href='#L690'>690</a>
|
|
756
|
-
<a name='L691'></a><a href='#L691'>691</a>
|
|
757
|
-
<a name='L692'></a><a href='#L692'>692</a>
|
|
758
|
-
<a name='L693'></a><a href='#L693'>693</a>
|
|
759
|
-
<a name='L694'></a><a href='#L694'>694</a>
|
|
760
|
-
<a name='L695'></a><a href='#L695'>695</a>
|
|
761
|
-
<a name='L696'></a><a href='#L696'>696</a>
|
|
762
|
-
<a name='L697'></a><a href='#L697'>697</a>
|
|
763
|
-
<a name='L698'></a><a href='#L698'>698</a>
|
|
764
|
-
<a name='L699'></a><a href='#L699'>699</a>
|
|
765
|
-
<a name='L700'></a><a href='#L700'>700</a>
|
|
766
|
-
<a name='L701'></a><a href='#L701'>701</a>
|
|
767
|
-
<a name='L702'></a><a href='#L702'>702</a>
|
|
768
|
-
<a name='L703'></a><a href='#L703'>703</a>
|
|
769
|
-
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
|
-
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
|
-
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
-
<a name='L707'></a><a href='#L707'>707</a>
|
|
773
|
-
<a name='L708'></a><a href='#L708'>708</a>
|
|
774
|
-
<a name='L709'></a><a href='#L709'>709</a>
|
|
775
|
-
<a name='L710'></a><a href='#L710'>710</a>
|
|
776
|
-
<a name='L711'></a><a href='#L711'>711</a>
|
|
777
|
-
<a name='L712'></a><a href='#L712'>712</a>
|
|
778
|
-
<a name='L713'></a><a href='#L713'>713</a>
|
|
779
|
-
<a name='L714'></a><a href='#L714'>714</a>
|
|
780
|
-
<a name='L715'></a><a href='#L715'>715</a>
|
|
781
|
-
<a name='L716'></a><a href='#L716'>716</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-neutral"> </span>
|
|
792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-neutral"> </span>
|
|
794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
803
|
-
<span class="cline-any cline-neutral"> </span>
|
|
804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
819
|
-
<span class="cline-any cline-no"> </span>
|
|
820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
821
|
-
<span class="cline-any cline-no"> </span>
|
|
822
|
-
<span class="cline-any cline-no"> </span>
|
|
823
|
-
<span class="cline-any cline-no"> </span>
|
|
824
|
-
<span class="cline-any cline-no"> </span>
|
|
825
|
-
<span class="cline-any cline-no"> </span>
|
|
826
|
-
<span class="cline-any cline-no"> </span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-no"> </span>
|
|
830
|
-
<span class="cline-any cline-no"> </span>
|
|
831
|
-
<span class="cline-any cline-no"> </span>
|
|
832
|
-
<span class="cline-any cline-no"> </span>
|
|
833
|
-
<span class="cline-any cline-no"> </span>
|
|
834
|
-
<span class="cline-any cline-no"> </span>
|
|
835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-no"> </span>
|
|
838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
840
|
-
<span class="cline-any cline-no"> </span>
|
|
841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
842
|
-
<span class="cline-any cline-neutral"> </span>
|
|
843
|
-
<span class="cline-any cline-no"> </span>
|
|
844
|
-
<span class="cline-any cline-no"> </span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-no"> </span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-no"> </span>
|
|
850
|
-
<span class="cline-any cline-no"> </span>
|
|
851
|
-
<span class="cline-any cline-no"> </span>
|
|
852
|
-
<span class="cline-any cline-neutral"> </span>
|
|
853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
854
|
-
<span class="cline-any cline-no"> </span>
|
|
855
|
-
<span class="cline-any cline-no"> </span>
|
|
856
|
-
<span class="cline-any cline-no"> </span>
|
|
857
|
-
<span class="cline-any cline-no"> </span>
|
|
858
|
-
<span class="cline-any cline-no"> </span>
|
|
859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
860
|
-
<span class="cline-any cline-no"> </span>
|
|
861
|
-
<span class="cline-any cline-no"> </span>
|
|
862
|
-
<span class="cline-any cline-no"> </span>
|
|
863
|
-
<span class="cline-any cline-no"> </span>
|
|
864
|
-
<span class="cline-any cline-no"> </span>
|
|
865
|
-
<span class="cline-any cline-no"> </span>
|
|
866
|
-
<span class="cline-any cline-no"> </span>
|
|
867
|
-
<span class="cline-any cline-no"> </span>
|
|
868
|
-
<span class="cline-any cline-no"> </span>
|
|
869
|
-
<span class="cline-any cline-no"> </span>
|
|
870
|
-
<span class="cline-any cline-no"> </span>
|
|
871
|
-
<span class="cline-any cline-no"> </span>
|
|
872
|
-
<span class="cline-any cline-neutral"> </span>
|
|
873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
874
|
-
<span class="cline-any cline-no"> </span>
|
|
875
|
-
<span class="cline-any cline-no"> </span>
|
|
876
|
-
<span class="cline-any cline-no"> </span>
|
|
877
|
-
<span class="cline-any cline-no"> </span>
|
|
878
|
-
<span class="cline-any cline-no"> </span>
|
|
879
|
-
<span class="cline-any cline-no"> </span>
|
|
880
|
-
<span class="cline-any cline-no"> </span>
|
|
881
|
-
<span class="cline-any cline-no"> </span>
|
|
882
|
-
<span class="cline-any cline-no"> </span>
|
|
883
|
-
<span class="cline-any cline-no"> </span>
|
|
884
|
-
<span class="cline-any cline-no"> </span>
|
|
885
|
-
<span class="cline-any cline-no"> </span>
|
|
886
|
-
<span class="cline-any cline-no"> </span>
|
|
887
|
-
<span class="cline-any cline-no"> </span>
|
|
888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
889
|
-
<span class="cline-any cline-neutral"> </span>
|
|
890
|
-
<span class="cline-any cline-no"> </span>
|
|
891
|
-
<span class="cline-any cline-no"> </span>
|
|
892
|
-
<span class="cline-any cline-no"> </span>
|
|
893
|
-
<span class="cline-any cline-no"> </span>
|
|
894
|
-
<span class="cline-any cline-no"> </span>
|
|
895
|
-
<span class="cline-any cline-no"> </span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
898
|
-
<span class="cline-any cline-no"> </span>
|
|
899
|
-
<span class="cline-any cline-no"> </span>
|
|
900
|
-
<span class="cline-any cline-no"> </span>
|
|
901
|
-
<span class="cline-any cline-no"> </span>
|
|
902
|
-
<span class="cline-any cline-no"> </span>
|
|
903
|
-
<span class="cline-any cline-no"> </span>
|
|
904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
906
|
-
<span class="cline-any cline-no"> </span>
|
|
907
|
-
<span class="cline-any cline-no"> </span>
|
|
908
|
-
<span class="cline-any cline-no"> </span>
|
|
909
|
-
<span class="cline-any cline-no"> </span>
|
|
910
|
-
<span class="cline-any cline-no"> </span>
|
|
911
|
-
<span class="cline-any cline-no"> </span>
|
|
912
|
-
<span class="cline-any cline-no"> </span>
|
|
913
|
-
<span class="cline-any cline-no"> </span>
|
|
914
|
-
<span class="cline-any cline-no"> </span>
|
|
915
|
-
<span class="cline-any cline-no"> </span>
|
|
916
|
-
<span class="cline-any cline-no"> </span>
|
|
917
|
-
<span class="cline-any cline-no"> </span>
|
|
918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
919
|
-
<span class="cline-any cline-no"> </span>
|
|
920
|
-
<span class="cline-any cline-no"> </span>
|
|
921
|
-
<span class="cline-any cline-no"> </span>
|
|
922
|
-
<span class="cline-any cline-no"> </span>
|
|
923
|
-
<span class="cline-any cline-no"> </span>
|
|
924
|
-
<span class="cline-any cline-no"> </span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-no"> </span>
|
|
927
|
-
<span class="cline-any cline-no"> </span>
|
|
928
|
-
<span class="cline-any cline-no"> </span>
|
|
929
|
-
<span class="cline-any cline-no"> </span>
|
|
930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
932
|
-
<span class="cline-any cline-no"> </span>
|
|
933
|
-
<span class="cline-any cline-no"> </span>
|
|
934
|
-
<span class="cline-any cline-no"> </span>
|
|
935
|
-
<span class="cline-any cline-no"> </span>
|
|
936
|
-
<span class="cline-any cline-no"> </span>
|
|
937
|
-
<span class="cline-any cline-no"> </span>
|
|
938
|
-
<span class="cline-any cline-no"> </span>
|
|
939
|
-
<span class="cline-any cline-no"> </span>
|
|
940
|
-
<span class="cline-any cline-no"> </span>
|
|
941
|
-
<span class="cline-any cline-no"> </span>
|
|
942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-no"> </span>
|
|
945
|
-
<span class="cline-any cline-no"> </span>
|
|
946
|
-
<span class="cline-any cline-no"> </span>
|
|
947
|
-
<span class="cline-any cline-neutral"> </span>
|
|
948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
949
|
-
<span class="cline-any cline-no"> </span>
|
|
950
|
-
<span class="cline-any cline-no"> </span>
|
|
951
|
-
<span class="cline-any cline-no"> </span>
|
|
952
|
-
<span class="cline-any cline-no"> </span>
|
|
953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
954
|
-
<span class="cline-any cline-neutral"> </span>
|
|
955
|
-
<span class="cline-any cline-no"> </span>
|
|
956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
958
|
-
<span class="cline-any cline-no"> </span>
|
|
959
|
-
<span class="cline-any cline-no"> </span>
|
|
960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-no"> </span>
|
|
962
|
-
<span class="cline-any cline-no"> </span>
|
|
963
|
-
<span class="cline-any cline-no"> </span>
|
|
964
|
-
<span class="cline-any cline-no"> </span>
|
|
965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-no"> </span>
|
|
967
|
-
<span class="cline-any cline-no"> </span>
|
|
968
|
-
<span class="cline-any cline-no"> </span>
|
|
969
|
-
<span class="cline-any cline-no"> </span>
|
|
970
|
-
<span class="cline-any cline-no"> </span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-no"> </span>
|
|
973
|
-
<span class="cline-any cline-no"> </span>
|
|
974
|
-
<span class="cline-any cline-neutral"> </span>
|
|
975
|
-
<span class="cline-any cline-no"> </span>
|
|
976
|
-
<span class="cline-any cline-neutral"> </span>
|
|
977
|
-
<span class="cline-any cline-no"> </span>
|
|
978
|
-
<span class="cline-any cline-no"> </span>
|
|
979
|
-
<span class="cline-any cline-no"> </span>
|
|
980
|
-
<span class="cline-any cline-no"> </span>
|
|
981
|
-
<span class="cline-any cline-no"> </span>
|
|
982
|
-
<span class="cline-any cline-no"> </span>
|
|
983
|
-
<span class="cline-any cline-no"> </span>
|
|
984
|
-
<span class="cline-any cline-no"> </span>
|
|
985
|
-
<span class="cline-any cline-no"> </span>
|
|
986
|
-
<span class="cline-any cline-no"> </span>
|
|
987
|
-
<span class="cline-any cline-no"> </span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-no"> </span>
|
|
991
|
-
<span class="cline-any cline-no"> </span>
|
|
992
|
-
<span class="cline-any cline-no"> </span>
|
|
993
|
-
<span class="cline-any cline-no"> </span>
|
|
994
|
-
<span class="cline-any cline-no"> </span>
|
|
995
|
-
<span class="cline-any cline-no"> </span>
|
|
996
|
-
<span class="cline-any cline-no"> </span>
|
|
997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-no"> </span>
|
|
1000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
-
<span class="cline-any cline-no"> </span>
|
|
1002
|
-
<span class="cline-any cline-no"> </span>
|
|
1003
|
-
<span class="cline-any cline-no"> </span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
-
<span class="cline-any cline-no"> </span>
|
|
1007
|
-
<span class="cline-any cline-no"> </span>
|
|
1008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1010
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
-
<span class="cline-any cline-no"> </span>
|
|
1014
|
-
<span class="cline-any cline-no"> </span>
|
|
1015
|
-
<span class="cline-any cline-no"> </span>
|
|
1016
|
-
<span class="cline-any cline-no"> </span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
-
<span class="cline-any cline-no"> </span>
|
|
1020
|
-
<span class="cline-any cline-no"> </span>
|
|
1021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
-
<span class="cline-any cline-no"> </span>
|
|
1024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
-
<span class="cline-any cline-no"> </span>
|
|
1027
|
-
<span class="cline-any cline-no"> </span>
|
|
1028
|
-
<span class="cline-any cline-no"> </span>
|
|
1029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
-
<span class="cline-any cline-no"> </span>
|
|
1032
|
-
<span class="cline-any cline-no"> </span>
|
|
1033
|
-
<span class="cline-any cline-no"> </span>
|
|
1034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-no"> </span>
|
|
1037
|
-
<span class="cline-any cline-no"> </span>
|
|
1038
|
-
<span class="cline-any cline-no"> </span>
|
|
1039
|
-
<span class="cline-any cline-no"> </span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-no"> </span>
|
|
1042
|
-
<span class="cline-any cline-no"> </span>
|
|
1043
|
-
<span class="cline-any cline-no"> </span>
|
|
1044
|
-
<span class="cline-any cline-no"> </span>
|
|
1045
|
-
<span class="cline-any cline-no"> </span>
|
|
1046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
-
<span class="cline-any cline-no"> </span>
|
|
1049
|
-
<span class="cline-any cline-no"> </span>
|
|
1050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
-
<span class="cline-any cline-no"> </span>
|
|
1052
|
-
<span class="cline-any cline-no"> </span>
|
|
1053
|
-
<span class="cline-any cline-no"> </span>
|
|
1054
|
-
<span class="cline-any cline-no"> </span>
|
|
1055
|
-
<span class="cline-any cline-no"> </span>
|
|
1056
|
-
<span class="cline-any cline-no"> </span>
|
|
1057
|
-
<span class="cline-any cline-no"> </span>
|
|
1058
|
-
<span class="cline-any cline-no"> </span>
|
|
1059
|
-
<span class="cline-any cline-no"> </span>
|
|
1060
|
-
<span class="cline-any cline-no"> </span>
|
|
1061
|
-
<span class="cline-any cline-no"> </span>
|
|
1062
|
-
<span class="cline-any cline-no"> </span>
|
|
1063
|
-
<span class="cline-any cline-no"> </span>
|
|
1064
|
-
<span class="cline-any cline-no"> </span>
|
|
1065
|
-
<span class="cline-any cline-no"> </span>
|
|
1066
|
-
<span class="cline-any cline-no"> </span>
|
|
1067
|
-
<span class="cline-any cline-no"> </span>
|
|
1068
|
-
<span class="cline-any cline-no"> </span>
|
|
1069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
-
<span class="cline-any cline-no"> </span>
|
|
1071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1073
|
-
<span class="cline-any cline-no"> </span>
|
|
1074
|
-
<span class="cline-any cline-no"> </span>
|
|
1075
|
-
<span class="cline-any cline-no"> </span>
|
|
1076
|
-
<span class="cline-any cline-no"> </span>
|
|
1077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
-
<span class="cline-any cline-no"> </span>
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-no"> </span>
|
|
1081
|
-
<span class="cline-any cline-no"> </span>
|
|
1082
|
-
<span class="cline-any cline-no"> </span>
|
|
1083
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1084
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1085
|
-
<span class="cline-any cline-no"> </span>
|
|
1086
|
-
<span class="cline-any cline-no"> </span>
|
|
1087
|
-
<span class="cline-any cline-no"> </span>
|
|
1088
|
-
<span class="cline-any cline-no"> </span>
|
|
1089
|
-
<span class="cline-any cline-no"> </span>
|
|
1090
|
-
<span class="cline-any cline-no"> </span>
|
|
1091
|
-
<span class="cline-any cline-no"> </span>
|
|
1092
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1094
|
-
<span class="cline-any cline-no"> </span>
|
|
1095
|
-
<span class="cline-any cline-no"> </span>
|
|
1096
|
-
<span class="cline-any cline-no"> </span>
|
|
1097
|
-
<span class="cline-any cline-no"> </span>
|
|
1098
|
-
<span class="cline-any cline-no"> </span>
|
|
1099
|
-
<span class="cline-any cline-no"> </span>
|
|
1100
|
-
<span class="cline-any cline-no"> </span>
|
|
1101
|
-
<span class="cline-any cline-no"> </span>
|
|
1102
|
-
<span class="cline-any cline-no"> </span>
|
|
1103
|
-
<span class="cline-any cline-no"> </span>
|
|
1104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1105
|
-
<span class="cline-any cline-no"> </span>
|
|
1106
|
-
<span class="cline-any cline-no"> </span>
|
|
1107
|
-
<span class="cline-any cline-no"> </span>
|
|
1108
|
-
<span class="cline-any cline-no"> </span>
|
|
1109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1111
|
-
<span class="cline-any cline-no"> </span>
|
|
1112
|
-
<span class="cline-any cline-no"> </span>
|
|
1113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1115
|
-
<span class="cline-any cline-no"> </span>
|
|
1116
|
-
<span class="cline-any cline-no"> </span>
|
|
1117
|
-
<span class="cline-any cline-no"> </span>
|
|
1118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1120
|
-
<span class="cline-any cline-no"> </span>
|
|
1121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
-
<span class="cline-any cline-no"> </span>
|
|
1123
|
-
<span class="cline-any cline-no"> </span>
|
|
1124
|
-
<span class="cline-any cline-no"> </span>
|
|
1125
|
-
<span class="cline-any cline-no"> </span>
|
|
1126
|
-
<span class="cline-any cline-no"> </span>
|
|
1127
|
-
<span class="cline-any cline-no"> </span>
|
|
1128
|
-
<span class="cline-any cline-no"> </span>
|
|
1129
|
-
<span class="cline-any cline-no"> </span>
|
|
1130
|
-
<span class="cline-any cline-no"> </span>
|
|
1131
|
-
<span class="cline-any cline-no"> </span>
|
|
1132
|
-
<span class="cline-any cline-no"> </span>
|
|
1133
|
-
<span class="cline-any cline-no"> </span>
|
|
1134
|
-
<span class="cline-any cline-no"> </span>
|
|
1135
|
-
<span class="cline-any cline-no"> </span>
|
|
1136
|
-
<span class="cline-any cline-no"> </span>
|
|
1137
|
-
<span class="cline-any cline-no"> </span>
|
|
1138
|
-
<span class="cline-any cline-no"> </span>
|
|
1139
|
-
<span class="cline-any cline-no"> </span>
|
|
1140
|
-
<span class="cline-any cline-no"> </span>
|
|
1141
|
-
<span class="cline-any cline-no"> </span>
|
|
1142
|
-
<span class="cline-any cline-no"> </span>
|
|
1143
|
-
<span class="cline-any cline-no"> </span>
|
|
1144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1147
|
-
<span class="cline-any cline-no"> </span>
|
|
1148
|
-
<span class="cline-any cline-no"> </span>
|
|
1149
|
-
<span class="cline-any cline-no"> </span>
|
|
1150
|
-
<span class="cline-any cline-no"> </span>
|
|
1151
|
-
<span class="cline-any cline-no"> </span>
|
|
1152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
-
<span class="cline-any cline-no"> </span>
|
|
1155
|
-
<span class="cline-any cline-no"> </span>
|
|
1156
|
-
<span class="cline-any cline-no"> </span>
|
|
1157
|
-
<span class="cline-any cline-no"> </span>
|
|
1158
|
-
<span class="cline-any cline-no"> </span>
|
|
1159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1161
|
-
<span class="cline-any cline-no"> </span>
|
|
1162
|
-
<span class="cline-any cline-no"> </span>
|
|
1163
|
-
<span class="cline-any cline-no"> </span>
|
|
1164
|
-
<span class="cline-any cline-no"> </span>
|
|
1165
|
-
<span class="cline-any cline-no"> </span>
|
|
1166
|
-
<span class="cline-any cline-no"> </span>
|
|
1167
|
-
<span class="cline-any cline-no"> </span>
|
|
1168
|
-
<span class="cline-any cline-no"> </span>
|
|
1169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1170
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1171
|
-
<span class="cline-any cline-no"> </span>
|
|
1172
|
-
<span class="cline-any cline-no"> </span>
|
|
1173
|
-
<span class="cline-any cline-no"> </span>
|
|
1174
|
-
<span class="cline-any cline-no"> </span>
|
|
1175
|
-
<span class="cline-any cline-no"> </span>
|
|
1176
|
-
<span class="cline-any cline-no"> </span>
|
|
1177
|
-
<span class="cline-any cline-no"> </span>
|
|
1178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1180
|
-
<span class="cline-any cline-no"> </span>
|
|
1181
|
-
<span class="cline-any cline-no"> </span>
|
|
1182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
-
<span class="cline-any cline-no"> </span>
|
|
1184
|
-
<span class="cline-any cline-no"> </span>
|
|
1185
|
-
<span class="cline-any cline-no"> </span>
|
|
1186
|
-
<span class="cline-any cline-no"> </span>
|
|
1187
|
-
<span class="cline-any cline-no"> </span>
|
|
1188
|
-
<span class="cline-any cline-no"> </span>
|
|
1189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1190
|
-
<span class="cline-any cline-no"> </span>
|
|
1191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1192
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1193
|
-
<span class="cline-any cline-no"> </span>
|
|
1194
|
-
<span class="cline-any cline-no"> </span>
|
|
1195
|
-
<span class="cline-any cline-no"> </span>
|
|
1196
|
-
<span class="cline-any cline-no"> </span>
|
|
1197
|
-
<span class="cline-any cline-no"> </span>
|
|
1198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1200
|
-
<span class="cline-any cline-no"> </span>
|
|
1201
|
-
<span class="cline-any cline-no"> </span>
|
|
1202
|
-
<span class="cline-any cline-no"> </span>
|
|
1203
|
-
<span class="cline-any cline-no"> </span>
|
|
1204
|
-
<span class="cline-any cline-no"> </span>
|
|
1205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1207
|
-
<span class="cline-any cline-no"> </span>
|
|
1208
|
-
<span class="cline-any cline-no"> </span>
|
|
1209
|
-
<span class="cline-any cline-no"> </span>
|
|
1210
|
-
<span class="cline-any cline-no"> </span>
|
|
1211
|
-
<span class="cline-any cline-no"> </span>
|
|
1212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
-
<span class="cline-any cline-no"> </span>
|
|
1215
|
-
<span class="cline-any cline-no"> </span>
|
|
1216
|
-
<span class="cline-any cline-no"> </span>
|
|
1217
|
-
<span class="cline-any cline-no"> </span>
|
|
1218
|
-
<span class="cline-any cline-no"> </span>
|
|
1219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1221
|
-
<span class="cline-any cline-no"> </span>
|
|
1222
|
-
<span class="cline-any cline-no"> </span>
|
|
1223
|
-
<span class="cline-any cline-no"> </span>
|
|
1224
|
-
<span class="cline-any cline-no"> </span>
|
|
1225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1227
|
-
<span class="cline-any cline-no"> </span>
|
|
1228
|
-
<span class="cline-any cline-no"> </span>
|
|
1229
|
-
<span class="cline-any cline-no"> </span>
|
|
1230
|
-
<span class="cline-any cline-no"> </span>
|
|
1231
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1233
|
-
<span class="cline-any cline-no"> </span>
|
|
1234
|
-
<span class="cline-any cline-no"> </span>
|
|
1235
|
-
<span class="cline-any cline-no"> </span>
|
|
1236
|
-
<span class="cline-any cline-no"> </span>
|
|
1237
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1239
|
-
<span class="cline-any cline-no"> </span>
|
|
1240
|
-
<span class="cline-any cline-no"> </span>
|
|
1241
|
-
<span class="cline-any cline-no"> </span>
|
|
1242
|
-
<span class="cline-any cline-no"> </span>
|
|
1243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
-
<span class="cline-any cline-no"> </span>
|
|
1246
|
-
<span class="cline-any cline-no"> </span>
|
|
1247
|
-
<span class="cline-any cline-no"> </span>
|
|
1248
|
-
<span class="cline-any cline-no"> </span>
|
|
1249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1250
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
-
<span class="cline-any cline-no"> </span>
|
|
1253
|
-
<span class="cline-any cline-no"> </span>
|
|
1254
|
-
<span class="cline-any cline-no"> </span>
|
|
1255
|
-
<span class="cline-any cline-no"> </span>
|
|
1256
|
-
<span class="cline-any cline-no"> </span>
|
|
1257
|
-
<span class="cline-any cline-no"> </span>
|
|
1258
|
-
<span class="cline-any cline-no"> </span>
|
|
1259
|
-
<span class="cline-any cline-no"> </span>
|
|
1260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1261
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1262
|
-
<span class="cline-any cline-no"> </span>
|
|
1263
|
-
<span class="cline-any cline-no"> </span>
|
|
1264
|
-
<span class="cline-any cline-no"> </span>
|
|
1265
|
-
<span class="cline-any cline-no"> </span>
|
|
1266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
-
<span class="cline-any cline-no"> </span>
|
|
1269
|
-
<span class="cline-any cline-no"> </span>
|
|
1270
|
-
<span class="cline-any cline-no"> </span>
|
|
1271
|
-
<span class="cline-any cline-no"> </span>
|
|
1272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
-
<span class="cline-any cline-no"> </span>
|
|
1275
|
-
<span class="cline-any cline-no"> </span>
|
|
1276
|
-
<span class="cline-any cline-no"> </span>
|
|
1277
|
-
<span class="cline-any cline-no"> </span>
|
|
1278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1280
|
-
<span class="cline-any cline-no"> </span>
|
|
1281
|
-
<span class="cline-any cline-no"> </span>
|
|
1282
|
-
<span class="cline-any cline-no"> </span>
|
|
1283
|
-
<span class="cline-any cline-no"> </span>
|
|
1284
|
-
<span class="cline-any cline-no"> </span>
|
|
1285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1286
|
-
<span class="cline-any cline-no"> </span>
|
|
1287
|
-
<span class="cline-any cline-no"> </span>
|
|
1288
|
-
<span class="cline-any cline-no"> </span>
|
|
1289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
-
<span class="cline-any cline-no"> </span>
|
|
1291
|
-
<span class="cline-any cline-no"> </span>
|
|
1292
|
-
<span class="cline-any cline-no"> </span>
|
|
1293
|
-
<span class="cline-any cline-no"> </span>
|
|
1294
|
-
<span class="cline-any cline-no"> </span>
|
|
1295
|
-
<span class="cline-any cline-no"> </span>
|
|
1296
|
-
<span class="cline-any cline-no"> </span>
|
|
1297
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
-
<span class="cline-any cline-no"> </span>
|
|
1299
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
-
<span class="cline-any cline-no"> </span>
|
|
1302
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1303
|
-
<span class="cline-any cline-no"> </span>
|
|
1304
|
-
<span class="cline-any cline-no"> </span>
|
|
1305
|
-
<span class="cline-any cline-no"> </span>
|
|
1306
|
-
<span class="cline-any cline-no"> </span>
|
|
1307
|
-
<span class="cline-any cline-no"> </span>
|
|
1308
|
-
<span class="cline-any cline-no"> </span>
|
|
1309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1310
|
-
<span class="cline-any cline-no"> </span>
|
|
1311
|
-
<span class="cline-any cline-no"> </span>
|
|
1312
|
-
<span class="cline-any cline-no"> </span>
|
|
1313
|
-
<span class="cline-any cline-no"> </span>
|
|
1314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1315
|
-
<span class="cline-any cline-no"> </span>
|
|
1316
|
-
<span class="cline-any cline-no"> </span>
|
|
1317
|
-
<span class="cline-any cline-no"> </span>
|
|
1318
|
-
<span class="cline-any cline-no"> </span>
|
|
1319
|
-
<span class="cline-any cline-no"> </span>
|
|
1320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1321
|
-
<span class="cline-any cline-no"> </span>
|
|
1322
|
-
<span class="cline-any cline-no"> </span>
|
|
1323
|
-
<span class="cline-any cline-no"> </span>
|
|
1324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1327
|
-
<span class="cline-any cline-no"> </span>
|
|
1328
|
-
<span class="cline-any cline-no"> </span>
|
|
1329
|
-
<span class="cline-any cline-no"> </span>
|
|
1330
|
-
<span class="cline-any cline-no"> </span>
|
|
1331
|
-
<span class="cline-any cline-no"> </span>
|
|
1332
|
-
<span class="cline-any cline-no"> </span>
|
|
1333
|
-
<span class="cline-any cline-no"> </span>
|
|
1334
|
-
<span class="cline-any cline-no"> </span>
|
|
1335
|
-
<span class="cline-any cline-no"> </span>
|
|
1336
|
-
<span class="cline-any cline-no"> </span>
|
|
1337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
-
<span class="cline-any cline-no"> </span>
|
|
1339
|
-
<span class="cline-any cline-no"> </span>
|
|
1340
|
-
<span class="cline-any cline-no"> </span>
|
|
1341
|
-
<span class="cline-any cline-no"> </span>
|
|
1342
|
-
<span class="cline-any cline-no"> </span>
|
|
1343
|
-
<span class="cline-any cline-no"> </span>
|
|
1344
|
-
<span class="cline-any cline-no"> </span>
|
|
1345
|
-
<span class="cline-any cline-no"> </span>
|
|
1346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1349
|
-
<span class="cline-any cline-no"> </span>
|
|
1350
|
-
<span class="cline-any cline-no"> </span>
|
|
1351
|
-
<span class="cline-any cline-no"> </span>
|
|
1352
|
-
<span class="cline-any cline-no"> </span>
|
|
1353
|
-
<span class="cline-any cline-no"> </span>
|
|
1354
|
-
<span class="cline-any cline-no"> </span>
|
|
1355
|
-
<span class="cline-any cline-no"> </span>
|
|
1356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1358
|
-
<span class="cline-any cline-no"> </span>
|
|
1359
|
-
<span class="cline-any cline-no"> </span>
|
|
1360
|
-
<span class="cline-any cline-no"> </span>
|
|
1361
|
-
<span class="cline-any cline-no"> </span>
|
|
1362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1364
|
-
<span class="cline-any cline-no"> </span>
|
|
1365
|
-
<span class="cline-any cline-no"> </span>
|
|
1366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1368
|
-
<span class="cline-any cline-no"> </span>
|
|
1369
|
-
<span class="cline-any cline-no"> </span>
|
|
1370
|
-
<span class="cline-any cline-no"> </span>
|
|
1371
|
-
<span class="cline-any cline-no"> </span>
|
|
1372
|
-
<span class="cline-any cline-no"> </span>
|
|
1373
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1374
|
-
<span class="cline-any cline-no"> </span>
|
|
1375
|
-
<span class="cline-any cline-no"> </span>
|
|
1376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
-
<span class="cline-any cline-no"> </span>
|
|
1380
|
-
<span class="cline-any cline-no"> </span>
|
|
1381
|
-
<span class="cline-any cline-no"> </span>
|
|
1382
|
-
<span class="cline-any cline-no"> </span>
|
|
1383
|
-
<span class="cline-any cline-no"> </span>
|
|
1384
|
-
<span class="cline-any cline-no"> </span>
|
|
1385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1386
|
-
<span class="cline-any cline-no"> </span>
|
|
1387
|
-
<span class="cline-any cline-no"> </span>
|
|
1388
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1389
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1391
|
-
<span class="cline-any cline-no"> </span>
|
|
1392
|
-
<span class="cline-any cline-no"> </span>
|
|
1393
|
-
<span class="cline-any cline-no"> </span>
|
|
1394
|
-
<span class="cline-any cline-no"> </span>
|
|
1395
|
-
<span class="cline-any cline-no"> </span>
|
|
1396
|
-
<span class="cline-any cline-no"> </span>
|
|
1397
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1398
|
-
<span class="cline-any cline-no"> </span>
|
|
1399
|
-
<span class="cline-any cline-no"> </span>
|
|
1400
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1402
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1403
|
-
<span class="cline-any cline-no"> </span>
|
|
1404
|
-
<span class="cline-any cline-no"> </span>
|
|
1405
|
-
<span class="cline-any cline-no"> </span>
|
|
1406
|
-
<span class="cline-any cline-no"> </span>
|
|
1407
|
-
<span class="cline-any cline-no"> </span>
|
|
1408
|
-
<span class="cline-any cline-no"> </span>
|
|
1409
|
-
<span class="cline-any cline-no"> </span>
|
|
1410
|
-
<span class="cline-any cline-no"> </span>
|
|
1411
|
-
<span class="cline-any cline-no"> </span>
|
|
1412
|
-
<span class="cline-any cline-no"> </span>
|
|
1413
|
-
<span class="cline-any cline-no"> </span>
|
|
1414
|
-
<span class="cline-any cline-no"> </span>
|
|
1415
|
-
<span class="cline-any cline-no"> </span>
|
|
1416
|
-
<span class="cline-any cline-no"> </span>
|
|
1417
|
-
<span class="cline-any cline-no"> </span>
|
|
1418
|
-
<span class="cline-any cline-no"> </span>
|
|
1419
|
-
<span class="cline-any cline-no"> </span>
|
|
1420
|
-
<span class="cline-any cline-no"> </span>
|
|
1421
|
-
<span class="cline-any cline-no"> </span>
|
|
1422
|
-
<span class="cline-any cline-no"> </span>
|
|
1423
|
-
<span class="cline-any cline-no"> </span>
|
|
1424
|
-
<span class="cline-any cline-no"> </span>
|
|
1425
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1426
|
-
<span class="cline-any cline-no"> </span>
|
|
1427
|
-
<span class="cline-any cline-no"> </span>
|
|
1428
|
-
<span class="cline-any cline-no"> </span>
|
|
1429
|
-
<span class="cline-any cline-no"> </span>
|
|
1430
|
-
<span class="cline-any cline-no"> </span>
|
|
1431
|
-
<span class="cline-any cline-no"> </span>
|
|
1432
|
-
<span class="cline-any cline-no"> </span>
|
|
1433
|
-
<span class="cline-any cline-no"> </span>
|
|
1434
|
-
<span class="cline-any cline-no"> </span>
|
|
1435
|
-
<span class="cline-any cline-no"> </span>
|
|
1436
|
-
<span class="cline-any cline-no"> </span>
|
|
1437
|
-
<span class="cline-any cline-no"> </span>
|
|
1438
|
-
<span class="cline-any cline-no"> </span>
|
|
1439
|
-
<span class="cline-any cline-no"> </span>
|
|
1440
|
-
<span class="cline-any cline-no"> </span>
|
|
1441
|
-
<span class="cline-any cline-no"> </span>
|
|
1442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
-
<span class="cline-any cline-no"> </span>
|
|
1445
|
-
<span class="cline-any cline-no"> </span>
|
|
1446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
-
<span class="cline-any cline-no"> </span>
|
|
1449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
-
<span class="cline-any cline-no"> </span>
|
|
1452
|
-
<span class="cline-any cline-no"> </span>
|
|
1453
|
-
<span class="cline-any cline-no"> </span>
|
|
1454
|
-
<span class="cline-any cline-no"> </span>
|
|
1455
|
-
<span class="cline-any cline-no"> </span>
|
|
1456
|
-
<span class="cline-any cline-no"> </span>
|
|
1457
|
-
<span class="cline-any cline-no"> </span>
|
|
1458
|
-
<span class="cline-any cline-no"> </span>
|
|
1459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1461
|
-
<span class="cline-any cline-no"> </span>
|
|
1462
|
-
<span class="cline-any cline-no"> </span>
|
|
1463
|
-
<span class="cline-any cline-no"> </span>
|
|
1464
|
-
<span class="cline-any cline-no"> </span>
|
|
1465
|
-
<span class="cline-any cline-no"> </span>
|
|
1466
|
-
<span class="cline-any cline-no"> </span>
|
|
1467
|
-
<span class="cline-any cline-no"> </span>
|
|
1468
|
-
<span class="cline-any cline-no"> </span>
|
|
1469
|
-
<span class="cline-any cline-no"> </span>
|
|
1470
|
-
<span class="cline-any cline-no"> </span>
|
|
1471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1474
|
-
<span class="cline-any cline-no"> </span>
|
|
1475
|
-
<span class="cline-any cline-no"> </span>
|
|
1476
|
-
<span class="cline-any cline-no"> </span>
|
|
1477
|
-
<span class="cline-any cline-no"> </span>
|
|
1478
|
-
<span class="cline-any cline-no"> </span>
|
|
1479
|
-
<span class="cline-any cline-no"> </span>
|
|
1480
|
-
<span class="cline-any cline-no"> </span>
|
|
1481
|
-
<span class="cline-any cline-no"> </span>
|
|
1482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
-
<span class="cline-any cline-no"> </span>
|
|
1486
|
-
<span class="cline-any cline-no"> </span>
|
|
1487
|
-
<span class="cline-any cline-no"> </span>
|
|
1488
|
-
<span class="cline-any cline-no"> </span>
|
|
1489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1491
|
-
<span class="cline-any cline-no"> </span>
|
|
1492
|
-
<span class="cline-any cline-no"> </span>
|
|
1493
|
-
<span class="cline-any cline-no"> </span>
|
|
1494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1495
|
-
<span class="cline-any cline-no"> </span>
|
|
1496
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >import { useEffect, useCallback, useState, useRef } from 'react';</span></span></span>
|
|
1497
|
-
import { ReactFlowProvider } from '@xyflow/react';
|
|
1498
|
-
import { Menu, PanelRight, PanelLeft, X, Wrench } from 'lucide-react';
|
|
1499
|
-
import { Canvas } from './components/Canvas/Canvas';
|
|
1500
|
-
import { Toolbar } from './components/Canvas/Toolbar';
|
|
1501
|
-
import { ExecutionOverlay } from './components/Canvas/ExecutionOverlay';
|
|
1502
|
-
import { ExecutionInputDialog } from './components/Canvas/ExecutionInputDialog';
|
|
1503
|
-
import { ValidationPanel } from './components/Panels/ValidationPanel';
|
|
1504
|
-
import { Sidebar } from './components/Sidebar/Sidebar';
|
|
1505
|
-
import { PropertiesPanel } from './components/Panels/PropertiesPanel';
|
|
1506
|
-
import { PromptInput } from './components/Prompt/PromptInput';
|
|
1507
|
-
import { ChangePreview } from './components/Prompt/ChangePreview';
|
|
1508
|
-
import { NewStepWizard } from './components/Editor/NewStepWizard';
|
|
1509
|
-
import {
|
|
1510
|
-
KeyboardShortcuts,
|
|
1511
|
-
KeyboardShortcutsButton,
|
|
1512
|
-
useKeyboardShortcuts,
|
|
1513
|
-
} from './components/common/KeyboardShortcuts';
|
|
1514
|
-
import { ThemeToggle } from './components/common/ThemeToggle';
|
|
1515
|
-
import { Breadcrumb, type BreadcrumbItem } from './components/common/Breadcrumb';
|
|
1516
|
-
import { CommandPalette } from './components/CommandPalette/CommandPalette';
|
|
1517
|
-
import { OnboardingTour } from './components/Onboarding/OnboardingTour';
|
|
1518
|
-
import { SkipNav } from './components/Accessibility/SkipNav';
|
|
1519
|
-
import { LiveRegion } from './components/Accessibility/LiveRegion';
|
|
1520
|
-
import { useWorkflow } from './hooks/useWorkflow';
|
|
1521
|
-
import { useWebSocket } from './hooks/useWebSocket';
|
|
1522
|
-
import { usePromptStore } from './stores/promptStore';
|
|
1523
|
-
import { useEditorStore } from './stores/editorStore';
|
|
1524
|
-
import { useNavigationStore } from './stores/navigationStore';
|
|
1525
|
-
import { useWorkflowStore } from './stores/workflowStore';
|
|
1526
|
-
import { useExecutionStore } from './stores/executionStore';
|
|
1527
|
-
import { useLayoutStore, getBreakpoint } from './stores/layoutStore';
|
|
1528
|
-
import { useCommandStore, type Command } from './stores/commandStore';
|
|
1529
|
-
import { useThemeStore } from './stores/themeStore';
|
|
1530
|
-
import { useOnboardingStore } from './stores/onboardingStore';
|
|
1531
|
-
import { useSettingsStore } from './stores/settingsStore';
|
|
1532
|
-
import type { WorkflowStep, StepStatus, WorkflowStatus } from '@shared/types';
|
|
1533
|
-
|
|
1534
|
-
<span class="cstat-no" title="statement not covered" >export default function App() {</span>
|
|
1535
|
-
// Workflow management
|
|
1536
|
-
<span class="cstat-no" title="statement not covered" > const {</span>
|
|
1537
|
-
<span class="cstat-no" title="statement not covered" > currentWorkflow,</span>
|
|
1538
|
-
<span class="cstat-no" title="statement not covered" > selectedWorkflow,</span>
|
|
1539
|
-
<span class="cstat-no" title="statement not covered" > saveWorkflow,</span>
|
|
1540
|
-
<span class="cstat-no" title="statement not covered" > refreshWorkflows,</span>
|
|
1541
|
-
<span class="cstat-no" title="statement not covered" > } = useWorkflow();</span>
|
|
1542
|
-
|
|
1543
|
-
// Editor state
|
|
1544
|
-
<span class="cstat-no" title="statement not covered" > const {</span>
|
|
1545
|
-
<span class="cstat-no" title="statement not covered" > isNewStepOpen,</span>
|
|
1546
|
-
<span class="cstat-no" title="statement not covered" > newStepPosition,</span>
|
|
1547
|
-
<span class="cstat-no" title="statement not covered" > openNewStepWizard,</span>
|
|
1548
|
-
<span class="cstat-no" title="statement not covered" > closeNewStepWizard,</span>
|
|
1549
|
-
<span class="cstat-no" title="statement not covered" > } = useEditorStore();</span>
|
|
1550
|
-
|
|
1551
|
-
// Prompt state
|
|
1552
|
-
<span class="cstat-no" title="statement not covered" > const { pendingChanges, acceptChanges, rejectChanges } = usePromptStore();</span>
|
|
1553
|
-
|
|
1554
|
-
// Keyboard shortcuts
|
|
1555
|
-
<span class="cstat-no" title="statement not covered" > const { isOpen: isShortcutsOpen, setIsOpen: setShortcutsOpen, openShortcuts } = useKeyboardShortcuts();</span>
|
|
1556
|
-
|
|
1557
|
-
// Navigation for sub-workflow drilling
|
|
1558
|
-
<span class="cstat-no" title="statement not covered" > const { breadcrumbs, popToIndex, resetNavigation } = useNavigationStore();</span>
|
|
1559
|
-
<span class="cstat-no" title="statement not covered" > const { loadWorkflow } = useWorkflowStore();</span>
|
|
1560
|
-
|
|
1561
|
-
// Handle breadcrumb navigation
|
|
1562
|
-
<span class="cstat-no" title="statement not covered" > const handleBreadcrumbNavigate = useCallback((item: BreadcrumbItem, index: number) => {</span>
|
|
1563
|
-
// Navigate to the clicked breadcrumb
|
|
1564
|
-
<span class="cstat-no" title="statement not covered" > popToIndex(index);</span>
|
|
1565
|
-
<span class="cstat-no" title="statement not covered" > loadWorkflow(item.path || '');</span>
|
|
1566
|
-
<span class="cstat-no" title="statement not covered" > }, [popToIndex, loadWorkflow]);</span>
|
|
1567
|
-
|
|
1568
|
-
// WebSocket for real-time updates
|
|
1569
|
-
<span class="cstat-no" title="statement not covered" > const { connected, subscribeToExecution, unsubscribeFromExecution } = useWebSocket({</span>
|
|
1570
|
-
<span class="cstat-no" title="statement not covered" > onWorkflowUpdated: () => {</span>
|
|
1571
|
-
<span class="cstat-no" title="statement not covered" > refreshWorkflows();</span>
|
|
1572
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1573
|
-
<span class="cstat-no" title="statement not covered" > onExecutionStep: (event) => {</span>
|
|
1574
|
-
// Update execution state from WebSocket events
|
|
1575
|
-
<span class="cstat-no" title="statement not covered" > setCurrentStepId(event.stepId);</span>
|
|
1576
|
-
<span class="cstat-no" title="statement not covered" > setExecutionSteps((prev) =></span>
|
|
1577
|
-
<span class="cstat-no" title="statement not covered" > prev.map((s) =></span>
|
|
1578
|
-
<span class="cstat-no" title="statement not covered" > s.stepId === event.stepId</span>
|
|
1579
|
-
<span class="cstat-no" title="statement not covered" > ? { ...s, status: event.status, duration: event.duration, error: event.error }</span>
|
|
1580
|
-
<span class="cstat-no" title="statement not covered" > : s</span>
|
|
1581
|
-
<span class="cstat-no" title="statement not covered" > )</span>
|
|
1582
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1583
|
-
<span class="cstat-no" title="statement not covered" > setExecutionLogs((prev) => [</span>
|
|
1584
|
-
<span class="cstat-no" title="statement not covered" > ...prev,</span>
|
|
1585
|
-
<span class="cstat-no" title="statement not covered" > `Step "${event.stepName || event.stepId}": ${event.status}${event.error ? ` - ${event.error}` : ''}`,</span>
|
|
1586
|
-
<span class="cstat-no" title="statement not covered" > ]);</span>
|
|
1587
|
-
|
|
1588
|
-
// Update execution store
|
|
1589
|
-
<span class="cstat-no" title="statement not covered" > if (runIdRef.current) {</span>
|
|
1590
|
-
<span class="cstat-no" title="statement not covered" > updateStepStatus(runIdRef.current, event.stepId, event.status, event.output, event.error);</span>
|
|
1591
|
-
<span class="cstat-no" title="statement not covered" > addLog(runIdRef.current, `Step "${event.stepName || event.stepId}": ${event.status}`);</span>
|
|
1592
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1593
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1594
|
-
<span class="cstat-no" title="statement not covered" > onExecutionCompleted: (event) => {</span>
|
|
1595
|
-
<span class="cstat-no" title="statement not covered" > setWorkflowStatus(event.status);</span>
|
|
1596
|
-
<span class="cstat-no" title="statement not covered" > setCurrentStepId(null);</span>
|
|
1597
|
-
<span class="cstat-no" title="statement not covered" > setExecutionLogs((prev) => [</span>
|
|
1598
|
-
<span class="cstat-no" title="statement not covered" > ...prev,</span>
|
|
1599
|
-
<span class="cstat-no" title="statement not covered" > event.status === 'completed'</span>
|
|
1600
|
-
<span class="cstat-no" title="statement not covered" > ? 'Workflow completed successfully!'</span>
|
|
1601
|
-
<span class="cstat-no" title="statement not covered" > : event.error || 'Workflow execution failed',</span>
|
|
1602
|
-
<span class="cstat-no" title="statement not covered" > ]);</span>
|
|
1603
|
-
|
|
1604
|
-
// Update execution store
|
|
1605
|
-
<span class="cstat-no" title="statement not covered" > if (runIdRef.current) {</span>
|
|
1606
|
-
<span class="cstat-no" title="statement not covered" > completeExecution(runIdRef.current, event.status);</span>
|
|
1607
|
-
<span class="cstat-no" title="statement not covered" > if (event.error) {</span>
|
|
1608
|
-
<span class="cstat-no" title="statement not covered" > addLog(runIdRef.current, `Error: ${event.error}`);</span>
|
|
1609
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1610
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1611
|
-
|
|
1612
|
-
// Unsubscribe from WebSocket
|
|
1613
|
-
<span class="cstat-no" title="statement not covered" > if (event.runId) {</span>
|
|
1614
|
-
<span class="cstat-no" title="statement not covered" > unsubscribeFromExecution(event.runId);</span>
|
|
1615
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1616
|
-
<span class="cstat-no" title="statement not covered" > runIdRef.current = null;</span>
|
|
1617
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1618
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1619
|
-
|
|
1620
|
-
// Execution store
|
|
1621
|
-
<span class="cstat-no" title="statement not covered" > const {</span>
|
|
1622
|
-
<span class="cstat-no" title="statement not covered" > isExecuting,</span>
|
|
1623
|
-
<span class="cstat-no" title="statement not covered" > isPaused,</span>
|
|
1624
|
-
<span class="cstat-no" title="statement not covered" > currentRunId,</span>
|
|
1625
|
-
<span class="cstat-no" title="statement not covered" > runs,</span>
|
|
1626
|
-
<span class="cstat-no" title="statement not covered" > startExecution,</span>
|
|
1627
|
-
<span class="cstat-no" title="statement not covered" > updateStepStatus,</span>
|
|
1628
|
-
<span class="cstat-no" title="statement not covered" > completeExecution,</span>
|
|
1629
|
-
<span class="cstat-no" title="statement not covered" > addLog,</span>
|
|
1630
|
-
<span class="cstat-no" title="statement not covered" > pauseExecution,</span>
|
|
1631
|
-
<span class="cstat-no" title="statement not covered" > resumeExecution,</span>
|
|
1632
|
-
<span class="cstat-no" title="statement not covered" > cancelExecution,</span>
|
|
1633
|
-
// Debug methods
|
|
1634
|
-
<span class="cstat-no" title="statement not covered" > debug,</span>
|
|
1635
|
-
<span class="cstat-no" title="statement not covered" > enableDebugMode,</span>
|
|
1636
|
-
<span class="cstat-no" title="statement not covered" > disableDebugMode,</span>
|
|
1637
|
-
<span class="cstat-no" title="statement not covered" > toggleBreakpoint,</span>
|
|
1638
|
-
<span class="cstat-no" title="statement not covered" > clearAllBreakpoints,</span>
|
|
1639
|
-
<span class="cstat-no" title="statement not covered" > stepOver,</span>
|
|
1640
|
-
<span class="cstat-no" title="statement not covered" > stepInto,</span>
|
|
1641
|
-
<span class="cstat-no" title="statement not covered" > stepOut,</span>
|
|
1642
|
-
<span class="cstat-no" title="statement not covered" > addWatchExpression,</span>
|
|
1643
|
-
<span class="cstat-no" title="statement not covered" > removeWatchExpression,</span>
|
|
1644
|
-
<span class="cstat-no" title="statement not covered" > } = useExecutionStore();</span>
|
|
1645
|
-
|
|
1646
|
-
// Layout store for responsive behavior
|
|
1647
|
-
<span class="cstat-no" title="statement not covered" > const {</span>
|
|
1648
|
-
<span class="cstat-no" title="statement not covered" > breakpoint,</span>
|
|
1649
|
-
<span class="cstat-no" title="statement not covered" > setBreakpoint,</span>
|
|
1650
|
-
<span class="cstat-no" title="statement not covered" > sidebarOpen,</span>
|
|
1651
|
-
<span class="cstat-no" title="statement not covered" > setSidebarOpen,</span>
|
|
1652
|
-
<span class="cstat-no" title="statement not covered" > propertiesPanelOpen,</span>
|
|
1653
|
-
<span class="cstat-no" title="statement not covered" > setPropertiesPanelOpen,</span>
|
|
1654
|
-
<span class="cstat-no" title="statement not covered" > toolbarVisible,</span>
|
|
1655
|
-
<span class="cstat-no" title="statement not covered" > setToolbarVisible,</span>
|
|
1656
|
-
<span class="cstat-no" title="statement not covered" > } = useLayoutStore();</span>
|
|
1657
|
-
|
|
1658
|
-
// Command palette
|
|
1659
|
-
<span class="cstat-no" title="statement not covered" > const { open: openCommandPalette, registerCommands } = useCommandStore();</span>
|
|
1660
|
-
<span class="cstat-no" title="statement not covered" > const { toggleTheme } = useThemeStore();</span>
|
|
1661
|
-
<span class="cstat-no" title="statement not covered" > const { openSettings } = useSettingsStore();</span>
|
|
1662
|
-
|
|
1663
|
-
// Load settings on mount
|
|
1664
|
-
<span class="cstat-no" title="statement not covered" > useEffect(() => {</span>
|
|
1665
|
-
<span class="cstat-no" title="statement not covered" > useSettingsStore.getState().loadSettings();</span>
|
|
1666
|
-
<span class="cstat-no" title="statement not covered" > }, []);</span>
|
|
1667
|
-
<span class="cstat-no" title="statement not covered" > const { workflows } = useWorkflowStore();</span>
|
|
1668
|
-
|
|
1669
|
-
// Status message for accessibility live region
|
|
1670
|
-
<span class="cstat-no" title="statement not covered" > const [liveMessage, setLiveMessage] = useState('');</span>
|
|
1671
|
-
|
|
1672
|
-
// Register commands on mount and when dependencies change
|
|
1673
|
-
<span class="cstat-no" title="statement not covered" > useEffect(() => {</span>
|
|
1674
|
-
<span class="cstat-no" title="statement not covered" > const commands: Command[] = [</span>
|
|
1675
|
-
// Actions
|
|
1676
|
-
<span class="cstat-no" title="statement not covered" > { id: 'save', label: 'Save Workflow', category: 'action', shortcut: `${breakpoint === 'mobile' ? 'Ctrl' : '⌘'} + S`, execute: () => handleSave(), keywords: ['save', 'persist'] },</span>
|
|
1677
|
-
<span class="cstat-no" title="statement not covered" > { id: 'execute', label: 'Execute Workflow', category: 'action', shortcut: `${breakpoint === 'mobile' ? 'Ctrl' : '⌘'} + Enter`, execute: () => handleExecute(), keywords: ['run', 'start'] },</span>
|
|
1678
|
-
<span class="cstat-no" title="statement not covered" > { id: 'validate', label: 'Validate Workflow', category: 'action', execute: () => handleValidate(), keywords: ['check', 'lint'] },</span>
|
|
1679
|
-
<span class="cstat-no" title="statement not covered" > { id: 'add-step', label: 'Add New Step', category: 'action', shortcut: 'N', execute: () => handleAddStep(), keywords: ['create', 'new'] },</span>
|
|
1680
|
-
// Settings
|
|
1681
|
-
<span class="cstat-no" title="statement not covered" > { id: 'open-settings', label: 'Open Settings', category: 'setting', shortcut: `${breakpoint === 'mobile' ? 'Ctrl' : '⌘'} + ,`, execute: () => openSettings(), keywords: ['preferences', 'config'] },</span>
|
|
1682
|
-
<span class="cstat-no" title="statement not covered" > { id: 'toggle-theme', label: 'Toggle Theme', category: 'setting', shortcut: `${breakpoint === 'mobile' ? 'Ctrl' : '⌘'} + Shift + T`, execute: () => toggleTheme(), keywords: ['dark', 'light', 'mode'] },</span>
|
|
1683
|
-
<span class="cstat-no" title="statement not covered" > { id: 'show-shortcuts', label: 'Show Keyboard Shortcuts', category: 'setting', shortcut: `${breakpoint === 'mobile' ? 'Ctrl' : '⌘'} + /`, execute: () => setShortcutsOpen(true), keywords: ['keys', 'hotkeys'] },</span>
|
|
1684
|
-
<span class="cstat-no" title="statement not covered" > { id: 'toggle-sidebar', label: 'Toggle Sidebar', category: 'setting', execute: () => setSidebarOpen(!sidebarOpen), keywords: ['panel', 'left'] },</span>
|
|
1685
|
-
<span class="cstat-no" title="statement not covered" > { id: 'toggle-properties', label: 'Toggle Properties Panel', category: 'setting', execute: () => setPropertiesPanelOpen(!propertiesPanelOpen), keywords: ['panel', 'right'] },</span>
|
|
1686
|
-
// Navigation
|
|
1687
|
-
<span class="cstat-no" title="statement not covered" > { id: 'nav-back', label: 'Navigate Back', category: 'navigation', execute: () => handleNavigateBack(), keywords: ['parent', 'up'] },</span>
|
|
1688
|
-
<span class="cstat-no" title="statement not covered" > { id: 'nav-root', label: 'Navigate to Root', category: 'navigation', execute: () => handleNavigateToRoot(), keywords: ['home', 'top'] },</span>
|
|
1689
|
-
// Debug
|
|
1690
|
-
<span class="cstat-no" title="statement not covered" > { id: 'toggle-debug', label: 'Toggle Debug Mode', category: 'action', shortcut: 'F9', execute: () => debug.enabled ? disableDebugMode() : enableDebugMode(), keywords: ['breakpoint', 'inspect'] },</span>
|
|
1691
|
-
// Workflows
|
|
1692
|
-
<span class="cstat-no" title="statement not covered" > ...workflows.map((w) => ({</span>
|
|
1693
|
-
<span class="cstat-no" title="statement not covered" > id: `workflow-${w.path}`,</span>
|
|
1694
|
-
<span class="cstat-no" title="statement not covered" > label: w.name,</span>
|
|
1695
|
-
<span class="cstat-no" title="statement not covered" > description: w.path,</span>
|
|
1696
|
-
<span class="cstat-no" title="statement not covered" > category: 'workflow' as const,</span>
|
|
1697
|
-
<span class="cstat-no" title="statement not covered" > execute: () => { useWorkflowStore.getState().selectWorkflow(w.path); },</span>
|
|
1698
|
-
<span class="cstat-no" title="statement not covered" > keywords: [w.name.toLowerCase()],</span>
|
|
1699
|
-
<span class="cstat-no" title="statement not covered" > })),</span>
|
|
1700
|
-
<span class="cstat-no" title="statement not covered" > ];</span>
|
|
1701
|
-
<span class="cstat-no" title="statement not covered" > registerCommands(commands);</span>
|
|
1702
|
-
<span class="cstat-no" title="statement not covered" > }, [workflows, sidebarOpen, propertiesPanelOpen, breakpoint, debug.enabled]);</span>
|
|
1703
|
-
|
|
1704
|
-
// Breakpoint detection on resize
|
|
1705
|
-
<span class="cstat-no" title="statement not covered" > useEffect(() => {</span>
|
|
1706
|
-
<span class="cstat-no" title="statement not covered" > const handleResize = () => {</span>
|
|
1707
|
-
<span class="cstat-no" title="statement not covered" > const newBreakpoint = getBreakpoint(window.innerWidth);</span>
|
|
1708
|
-
<span class="cstat-no" title="statement not covered" > if (newBreakpoint !== breakpoint) {</span>
|
|
1709
|
-
<span class="cstat-no" title="statement not covered" > setBreakpoint(newBreakpoint);</span>
|
|
1710
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1711
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1712
|
-
|
|
1713
|
-
// Set initial breakpoint
|
|
1714
|
-
<span class="cstat-no" title="statement not covered" > handleResize();</span>
|
|
1715
|
-
|
|
1716
|
-
<span class="cstat-no" title="statement not covered" > window.addEventListener('resize', handleResize);</span>
|
|
1717
|
-
<span class="cstat-no" title="statement not covered" > return () => window.removeEventListener('resize', handleResize);</span>
|
|
1718
|
-
<span class="cstat-no" title="statement not covered" > }, [breakpoint, setBreakpoint]);</span>
|
|
1719
|
-
|
|
1720
|
-
// Local execution state for overlay
|
|
1721
|
-
<span class="cstat-no" title="statement not covered" > const [workflowStatus, setWorkflowStatus] = useState<WorkflowStatus>('pending');</span>
|
|
1722
|
-
<span class="cstat-no" title="statement not covered" > const [executionSteps, setExecutionSteps] = useState<Array<{</span>
|
|
1723
|
-
stepId: string;
|
|
1724
|
-
stepName: string;
|
|
1725
|
-
status: StepStatus;
|
|
1726
|
-
duration?: number;
|
|
1727
|
-
error?: string;
|
|
1728
|
-
<span class="cstat-no" title="statement not covered" > }>>([]);</span>
|
|
1729
|
-
<span class="cstat-no" title="statement not covered" > const [executionLogs, setExecutionLogs] = useState<string[]>([]);</span>
|
|
1730
|
-
<span class="cstat-no" title="statement not covered" > const [currentStepId, setCurrentStepId] = useState<string | null>(null);</span>
|
|
1731
|
-
<span class="cstat-no" title="statement not covered" > const runIdRef = useRef<string | null>(null);</span>
|
|
1732
|
-
|
|
1733
|
-
// Input collection dialog state
|
|
1734
|
-
<span class="cstat-no" title="statement not covered" > const [showInputDialog, setShowInputDialog] = useState(false);</span>
|
|
1735
|
-
<span class="cstat-no" title="statement not covered" > const [pendingInputs, setPendingInputs] = useState<Record<string, any>>({});</span>
|
|
1736
|
-
|
|
1737
|
-
// Validation panel state
|
|
1738
|
-
<span class="cstat-no" title="statement not covered" > const [showValidationPanel, setShowValidationPanel] = useState(false);</span>
|
|
1739
|
-
|
|
1740
|
-
// Handle adding a new step
|
|
1741
|
-
<span class="cstat-no" title="statement not covered" > const handleAddStep = useCallback(() => {</span>
|
|
1742
|
-
<span class="cstat-no" title="statement not covered" > openNewStepWizard();</span>
|
|
1743
|
-
<span class="cstat-no" title="statement not covered" > }, [openNewStepWizard]);</span>
|
|
1744
|
-
|
|
1745
|
-
// Handle step creation
|
|
1746
|
-
<span class="cstat-no" title="statement not covered" > const handleCreateStep = useCallback(</span>
|
|
1747
|
-
<span class="cstat-no" title="statement not covered" > (step: WorkflowStep) => {</span>
|
|
1748
|
-
<span class="cstat-no" title="statement not covered" > if (!currentWorkflow) return;</span>
|
|
1749
|
-
|
|
1750
|
-
// Add step to workflow
|
|
1751
|
-
<span class="cstat-no" title="statement not covered" > const updatedWorkflow = {</span>
|
|
1752
|
-
<span class="cstat-no" title="statement not covered" > ...currentWorkflow,</span>
|
|
1753
|
-
<span class="cstat-no" title="statement not covered" > steps: [...currentWorkflow.steps, step],</span>
|
|
1754
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1755
|
-
|
|
1756
|
-
<span class="cstat-no" title="statement not covered" > saveWorkflow(updatedWorkflow);</span>
|
|
1757
|
-
<span class="cstat-no" title="statement not covered" > console.log('Created step:', step);</span>
|
|
1758
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1759
|
-
<span class="cstat-no" title="statement not covered" > [currentWorkflow, saveWorkflow]</span>
|
|
1760
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1761
|
-
|
|
1762
|
-
// Handle workflow execution with input collection
|
|
1763
|
-
<span class="cstat-no" title="statement not covered" > const handleExecute = useCallback(async (inputs?: Record<string, any>) => {</span>
|
|
1764
|
-
<span class="cstat-no" title="statement not covered" > if (isExecuting) {</span>
|
|
1765
|
-
// Stop execution via API
|
|
1766
|
-
<span class="cstat-no" title="statement not covered" > if (runIdRef.current) {</span>
|
|
1767
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1768
|
-
<span class="cstat-no" title="statement not covered" > const response = await fetch(`/api/execute/cancel/${runIdRef.current}`, {</span>
|
|
1769
|
-
<span class="cstat-no" title="statement not covered" > method: 'POST',</span>
|
|
1770
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1771
|
-
<span class="cstat-no" title="statement not covered" > if (response.ok) {</span>
|
|
1772
|
-
<span class="cstat-no" title="statement not covered" > cancelExecution(runIdRef.current);</span>
|
|
1773
|
-
<span class="cstat-no" title="statement not covered" > setWorkflowStatus('cancelled');</span>
|
|
1774
|
-
<span class="cstat-no" title="statement not covered" > setExecutionLogs((prev) => [...prev, 'Execution cancelled by user']);</span>
|
|
1775
|
-
<span class="cstat-no" title="statement not covered" > runIdRef.current = null;</span>
|
|
1776
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1777
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1778
|
-
<span class="cstat-no" title="statement not covered" > console.error('Failed to cancel execution:', error);</span>
|
|
1779
|
-
<span class="cstat-no" title="statement not covered" > setExecutionLogs((prev) => [...prev, 'Failed to cancel execution']);</span>
|
|
1780
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1781
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1782
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1783
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1784
|
-
|
|
1785
|
-
<span class="cstat-no" title="statement not covered" > if (!currentWorkflow || !selectedWorkflow) return;</span>
|
|
1786
|
-
|
|
1787
|
-
// If inputs are not provided and workflow has inputs, show dialog
|
|
1788
|
-
<span class="cstat-no" title="statement not covered" > if (!inputs && currentWorkflow.inputs && Object.keys(currentWorkflow.inputs).length > 0) {</span>
|
|
1789
|
-
<span class="cstat-no" title="statement not covered" > setShowInputDialog(true);</span>
|
|
1790
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1791
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1792
|
-
|
|
1793
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1794
|
-
// Update local state for overlay
|
|
1795
|
-
<span class="cstat-no" title="statement not covered" > setWorkflowStatus('running');</span>
|
|
1796
|
-
<span class="cstat-no" title="statement not covered" > setCurrentStepId(null);</span>
|
|
1797
|
-
<span class="cstat-no" title="statement not covered" > setExecutionLogs(['Starting workflow execution...']);</span>
|
|
1798
|
-
|
|
1799
|
-
// Initialize steps
|
|
1800
|
-
<span class="cstat-no" title="statement not covered" > setExecutionSteps(</span>
|
|
1801
|
-
<span class="cstat-no" title="statement not covered" > currentWorkflow.steps.map((step) => ({</span>
|
|
1802
|
-
<span class="cstat-no" title="statement not covered" > stepId: step.id,</span>
|
|
1803
|
-
<span class="cstat-no" title="statement not covered" > stepName: step.name || step.id,</span>
|
|
1804
|
-
<span class="cstat-no" title="statement not covered" > status: 'pending' as StepStatus,</span>
|
|
1805
|
-
<span class="cstat-no" title="statement not covered" > }))</span>
|
|
1806
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1807
|
-
|
|
1808
|
-
// Call API to start execution - this returns the actual runId
|
|
1809
|
-
<span class="cstat-no" title="statement not covered" > const response = await fetch(`/api/execute/${encodeURIComponent(selectedWorkflow)}`, {</span>
|
|
1810
|
-
<span class="cstat-no" title="statement not covered" > method: 'POST',</span>
|
|
1811
|
-
<span class="cstat-no" title="statement not covered" > headers: {</span>
|
|
1812
|
-
<span class="cstat-no" title="statement not covered" > 'Content-Type': 'application/json',</span>
|
|
1813
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1814
|
-
<span class="cstat-no" title="statement not covered" > body: JSON.stringify({</span>
|
|
1815
|
-
<span class="cstat-no" title="statement not covered" > inputs: inputs || {},</span>
|
|
1816
|
-
<span class="cstat-no" title="statement not covered" > dryRun: false,</span>
|
|
1817
|
-
<span class="cstat-no" title="statement not covered" > }),</span>
|
|
1818
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1819
|
-
|
|
1820
|
-
<span class="cstat-no" title="statement not covered" > if (!response.ok) {</span>
|
|
1821
|
-
<span class="cstat-no" title="statement not covered" > const error = await response.json();</span>
|
|
1822
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(error.message || 'Failed to start execution');</span>
|
|
1823
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1824
|
-
|
|
1825
|
-
// Get the actual runId from the backend response
|
|
1826
|
-
<span class="cstat-no" title="statement not covered" > const apiResult = await response.json();</span>
|
|
1827
|
-
<span class="cstat-no" title="statement not covered" > const runId = apiResult.runId;</span>
|
|
1828
|
-
|
|
1829
|
-
// Store in history and subscribe to the correct runId
|
|
1830
|
-
<span class="cstat-no" title="statement not covered" > const workflowName = currentWorkflow.metadata?.name || 'Untitled Workflow';</span>
|
|
1831
|
-
<span class="cstat-no" title="statement not covered" > startExecution(selectedWorkflow, workflowName, {}, runId);</span>
|
|
1832
|
-
<span class="cstat-no" title="statement not covered" > runIdRef.current = runId;</span>
|
|
1833
|
-
|
|
1834
|
-
// Subscribe to WebSocket for real-time updates with the correct runId
|
|
1835
|
-
<span class="cstat-no" title="statement not covered" > subscribeToExecution(runId);</span>
|
|
1836
|
-
|
|
1837
|
-
<span class="cstat-no" title="statement not covered" > setExecutionLogs((prev) => [...prev, `Execution started: ${runId}`]);</span>
|
|
1838
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1839
|
-
<span class="cstat-no" title="statement not covered" > const errorMessage = error instanceof Error ? error.message : 'Unknown error';</span>
|
|
1840
|
-
<span class="cstat-no" title="statement not covered" > console.error('Failed to execute workflow:', error);</span>
|
|
1841
|
-
<span class="cstat-no" title="statement not covered" > setWorkflowStatus('failed');</span>
|
|
1842
|
-
<span class="cstat-no" title="statement not covered" > setExecutionLogs((prev) => [...prev, `Error: ${errorMessage}`]);</span>
|
|
1843
|
-
<span class="cstat-no" title="statement not covered" > if (runIdRef.current) {</span>
|
|
1844
|
-
<span class="cstat-no" title="statement not covered" > completeExecution(runIdRef.current, 'failed');</span>
|
|
1845
|
-
<span class="cstat-no" title="statement not covered" > runIdRef.current = null;</span>
|
|
1846
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1847
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1848
|
-
<span class="cstat-no" title="statement not covered" > }, [</span>
|
|
1849
|
-
<span class="cstat-no" title="statement not covered" > isExecuting,</span>
|
|
1850
|
-
<span class="cstat-no" title="statement not covered" > currentWorkflow,</span>
|
|
1851
|
-
<span class="cstat-no" title="statement not covered" > selectedWorkflow,</span>
|
|
1852
|
-
<span class="cstat-no" title="statement not covered" > startExecution,</span>
|
|
1853
|
-
<span class="cstat-no" title="statement not covered" > cancelExecution,</span>
|
|
1854
|
-
<span class="cstat-no" title="statement not covered" > subscribeToExecution,</span>
|
|
1855
|
-
<span class="cstat-no" title="statement not covered" > updateStepStatus,</span>
|
|
1856
|
-
<span class="cstat-no" title="statement not covered" > addLog,</span>
|
|
1857
|
-
<span class="cstat-no" title="statement not covered" > completeExecution,</span>
|
|
1858
|
-
<span class="cstat-no" title="statement not covered" > ]);</span>
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
// Handle save
|
|
1862
|
-
<span class="cstat-no" title="statement not covered" > const handleSave = useCallback(() => {</span>
|
|
1863
|
-
<span class="cstat-no" title="statement not covered" > if (currentWorkflow) {</span>
|
|
1864
|
-
<span class="cstat-no" title="statement not covered" > saveWorkflow(currentWorkflow);</span>
|
|
1865
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1866
|
-
<span class="cstat-no" title="statement not covered" > }, [currentWorkflow, saveWorkflow]);</span>
|
|
1867
|
-
|
|
1868
|
-
// Handle validate
|
|
1869
|
-
<span class="cstat-no" title="statement not covered" > const handleValidate = useCallback(() => {</span>
|
|
1870
|
-
<span class="cstat-no" title="statement not covered" > if (selectedWorkflow) {</span>
|
|
1871
|
-
<span class="cstat-no" title="statement not covered" > setShowValidationPanel(true);</span>
|
|
1872
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1873
|
-
<span class="cstat-no" title="statement not covered" > }, [selectedWorkflow]);</span>
|
|
1874
|
-
|
|
1875
|
-
// Handle navigating back to parent workflow
|
|
1876
|
-
<span class="cstat-no" title="statement not covered" > const handleNavigateBack = useCallback(() => {</span>
|
|
1877
|
-
<span class="cstat-no" title="statement not covered" > if (breadcrumbs.length > 1) {</span>
|
|
1878
|
-
<span class="cstat-no" title="statement not covered" > const parentIndex = breadcrumbs.length - 2;</span>
|
|
1879
|
-
<span class="cstat-no" title="statement not covered" > const parentItem = breadcrumbs[parentIndex];</span>
|
|
1880
|
-
<span class="cstat-no" title="statement not covered" > popToIndex(parentIndex);</span>
|
|
1881
|
-
<span class="cstat-no" title="statement not covered" > loadWorkflow(parentItem.path);</span>
|
|
1882
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1883
|
-
<span class="cstat-no" title="statement not covered" > }, [breadcrumbs, popToIndex, loadWorkflow]);</span>
|
|
1884
|
-
|
|
1885
|
-
// Handle navigating to root workflow
|
|
1886
|
-
<span class="cstat-no" title="statement not covered" > const handleNavigateToRoot = useCallback(() => {</span>
|
|
1887
|
-
<span class="cstat-no" title="statement not covered" > if (breadcrumbs.length > 1) {</span>
|
|
1888
|
-
<span class="cstat-no" title="statement not covered" > const rootItem = breadcrumbs[0];</span>
|
|
1889
|
-
<span class="cstat-no" title="statement not covered" > popToIndex(0);</span>
|
|
1890
|
-
<span class="cstat-no" title="statement not covered" > loadWorkflow(rootItem.path);</span>
|
|
1891
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1892
|
-
<span class="cstat-no" title="statement not covered" > }, [breadcrumbs, popToIndex, loadWorkflow]);</span>
|
|
1893
|
-
|
|
1894
|
-
// Global keyboard shortcuts
|
|
1895
|
-
<span class="cstat-no" title="statement not covered" > useEffect(() => {</span>
|
|
1896
|
-
<span class="cstat-no" title="statement not covered" > const handleKeyDown = (e: KeyboardEvent) => {</span>
|
|
1897
|
-
// Ignore if in an input/textarea
|
|
1898
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
1899
|
-
<span class="cstat-no" title="statement not covered" > e.target instanceof HTMLInputElement ||</span>
|
|
1900
|
-
<span class="cstat-no" title="statement not covered" > e.target instanceof HTMLTextAreaElement</span>
|
|
1901
|
-
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
1902
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1903
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1904
|
-
|
|
1905
|
-
<span class="cstat-no" title="statement not covered" > const isMeta = e.metaKey || e.ctrlKey;</span>
|
|
1906
|
-
|
|
1907
|
-
// Cmd/Ctrl + ,: Open settings
|
|
1908
|
-
<span class="cstat-no" title="statement not covered" > if (isMeta && e.key === ',') {</span>
|
|
1909
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1910
|
-
<span class="cstat-no" title="statement not covered" > openSettings();</span>
|
|
1911
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1912
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1913
|
-
|
|
1914
|
-
// Cmd/Ctrl + K: Command palette
|
|
1915
|
-
<span class="cstat-no" title="statement not covered" > if (isMeta && e.key === 'k') {</span>
|
|
1916
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1917
|
-
<span class="cstat-no" title="statement not covered" > openCommandPalette('commands');</span>
|
|
1918
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1919
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1920
|
-
|
|
1921
|
-
// Cmd/Ctrl + P: Quick workflow switcher
|
|
1922
|
-
<span class="cstat-no" title="statement not covered" > if (isMeta && e.key === 'p') {</span>
|
|
1923
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1924
|
-
<span class="cstat-no" title="statement not covered" > openCommandPalette('workflows');</span>
|
|
1925
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1926
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1927
|
-
|
|
1928
|
-
// Cmd/Ctrl + Shift + T: Toggle theme
|
|
1929
|
-
<span class="cstat-no" title="statement not covered" > if (isMeta && e.shiftKey && e.key === 't') {</span>
|
|
1930
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1931
|
-
<span class="cstat-no" title="statement not covered" > toggleTheme();</span>
|
|
1932
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1933
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1934
|
-
|
|
1935
|
-
// Cmd/Ctrl + S: Save
|
|
1936
|
-
<span class="cstat-no" title="statement not covered" > if (isMeta && e.key === 's') {</span>
|
|
1937
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1938
|
-
<span class="cstat-no" title="statement not covered" > handleSave();</span>
|
|
1939
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1940
|
-
|
|
1941
|
-
// Cmd/Ctrl + Enter: Execute
|
|
1942
|
-
<span class="cstat-no" title="statement not covered" > if (isMeta && e.key === 'Enter') {</span>
|
|
1943
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1944
|
-
<span class="cstat-no" title="statement not covered" > handleExecute();</span>
|
|
1945
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1946
|
-
|
|
1947
|
-
// N: New step (when no modifier)
|
|
1948
|
-
<span class="cstat-no" title="statement not covered" > if (e.key === 'n' && !isMeta && !e.shiftKey && !e.altKey) {</span>
|
|
1949
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1950
|
-
<span class="cstat-no" title="statement not covered" > handleAddStep();</span>
|
|
1951
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1952
|
-
|
|
1953
|
-
// Cmd/Ctrl + Left Arrow: Navigate back to parent workflow
|
|
1954
|
-
<span class="cstat-no" title="statement not covered" > if (isMeta && e.key === 'ArrowLeft') {</span>
|
|
1955
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1956
|
-
<span class="cstat-no" title="statement not covered" > handleNavigateBack();</span>
|
|
1957
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1958
|
-
|
|
1959
|
-
// Cmd/Ctrl + Up Arrow: Navigate to root workflow
|
|
1960
|
-
<span class="cstat-no" title="statement not covered" > if (isMeta && e.key === 'ArrowUp') {</span>
|
|
1961
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1962
|
-
<span class="cstat-no" title="statement not covered" > handleNavigateToRoot();</span>
|
|
1963
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1964
|
-
|
|
1965
|
-
// Debug keyboard shortcuts
|
|
1966
|
-
// F9: Toggle debug mode
|
|
1967
|
-
<span class="cstat-no" title="statement not covered" > if (e.key === 'F9') {</span>
|
|
1968
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1969
|
-
<span class="cstat-no" title="statement not covered" > if (debug.enabled) {</span>
|
|
1970
|
-
<span class="cstat-no" title="statement not covered" > disableDebugMode();</span>
|
|
1971
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1972
|
-
<span class="cstat-no" title="statement not covered" > enableDebugMode();</span>
|
|
1973
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1974
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1975
|
-
|
|
1976
|
-
// F10: Step over (when paused in debug mode)
|
|
1977
|
-
<span class="cstat-no" title="statement not covered" > if (e.key === 'F10' && debug.enabled && isPaused) {</span>
|
|
1978
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1979
|
-
<span class="cstat-no" title="statement not covered" > stepOver();</span>
|
|
1980
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1981
|
-
|
|
1982
|
-
// F11: Step into (when paused in debug mode)
|
|
1983
|
-
<span class="cstat-no" title="statement not covered" > if (e.key === 'F11' && !e.shiftKey && debug.enabled && isPaused) {</span>
|
|
1984
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1985
|
-
<span class="cstat-no" title="statement not covered" > stepInto();</span>
|
|
1986
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1987
|
-
|
|
1988
|
-
// Shift+F11: Step out (when paused in debug mode)
|
|
1989
|
-
<span class="cstat-no" title="statement not covered" > if (e.key === 'F11' && e.shiftKey && debug.enabled && isPaused) {</span>
|
|
1990
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1991
|
-
<span class="cstat-no" title="statement not covered" > stepOut();</span>
|
|
1992
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1993
|
-
|
|
1994
|
-
// F5: Continue execution (when paused)
|
|
1995
|
-
<span class="cstat-no" title="statement not covered" > if (e.key === 'F5' && isPaused) {</span>
|
|
1996
|
-
<span class="cstat-no" title="statement not covered" > e.preventDefault();</span>
|
|
1997
|
-
<span class="cstat-no" title="statement not covered" > resumeExecution();</span>
|
|
1998
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1999
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
2000
|
-
|
|
2001
|
-
<span class="cstat-no" title="statement not covered" > window.addEventListener('keydown', handleKeyDown);</span>
|
|
2002
|
-
<span class="cstat-no" title="statement not covered" > return () => window.removeEventListener('keydown', handleKeyDown);</span>
|
|
2003
|
-
<span class="cstat-no" title="statement not covered" > }, [handleSave, handleExecute, handleAddStep, handleNavigateBack, handleNavigateToRoot, debug.enabled, isPaused, enableDebugMode, disableDebugMode, stepOver, stepInto, stepOut, resumeExecution, openCommandPalette, toggleTheme, openSettings]);</span>
|
|
2004
|
-
|
|
2005
|
-
<span class="cstat-no" title="statement not covered" > return (</span>
|
|
2006
|
-
<span class="cstat-no" title="statement not covered" > <ReactFlowProvider></span>
|
|
2007
|
-
<span class="cstat-no" title="statement not covered" > <SkipNav /></span>
|
|
2008
|
-
<span class="cstat-no" title="statement not covered" > <LiveRegion message={liveMessage} /></span>
|
|
2009
|
-
<span class="cstat-no" title="statement not covered" > <CommandPalette /></span>
|
|
2010
|
-
<span class="cstat-no" title="statement not covered" > <OnboardingTour /></span>
|
|
2011
|
-
<span class="cstat-no" title="statement not covered" > <div className="flex h-screen w-screen overflow-hidden bg-bg-canvas" id="main-content"></span>
|
|
2012
|
-
{/* Left Sidebar - Workflow List & Tools */}
|
|
2013
|
-
<span class="cstat-no" title="statement not covered" > <Sidebar /></span>
|
|
2014
|
-
|
|
2015
|
-
{/* Main Canvas Area */}
|
|
2016
|
-
<span class="cstat-no" title="statement not covered" > <div className="flex flex-1 flex-col relative"></span>
|
|
2017
|
-
{/* Mobile Header */}
|
|
2018
|
-
<span class="cstat-no" title="statement not covered" > {breakpoint === 'mobile' && (</span>
|
|
2019
|
-
<span class="cstat-no" title="statement not covered" > <div className="flex items-center justify-between p-3 border-b border-border-default bg-bg-panel"></span>
|
|
2020
|
-
<span class="cstat-no" title="statement not covered" > <button</span>
|
|
2021
|
-
<span class="cstat-no" title="statement not covered" > onClick={() => setSidebarOpen(true)}</span>
|
|
2022
|
-
<span class="cstat-no" title="statement not covered" > className="w-10 h-10 rounded-lg flex items-center justify-center hover:bg-bg-hover transition-colors"</span>
|
|
2023
|
-
<span class="cstat-no" title="statement not covered" > aria-label="Open menu"</span>
|
|
2024
|
-
>
|
|
2025
|
-
<span class="cstat-no" title="statement not covered" > <Menu className="w-5 h-5 text-text-secondary" /></span>
|
|
2026
|
-
<span class="cstat-no" title="statement not covered" > </button></span>
|
|
2027
|
-
<span class="cstat-no" title="statement not covered" > <h1 className="text-sm font-medium text-text-primary flex items-center gap-1.5"></span>
|
|
2028
|
-
<span class="cstat-no" title="statement not covered" > <img src="/marktoflow-logo.png" alt="Marktoflow" className="w-6 h-6 rounded-full object-cover" /></span>
|
|
2029
|
-
Marktoflow
|
|
2030
|
-
<span class="cstat-no" title="statement not covered" > </h1></span>
|
|
2031
|
-
<span class="cstat-no" title="statement not covered" > <button</span>
|
|
2032
|
-
<span class="cstat-no" title="statement not covered" > onClick={() => setPropertiesPanelOpen(true)}</span>
|
|
2033
|
-
<span class="cstat-no" title="statement not covered" > className="w-10 h-10 rounded-lg flex items-center justify-center hover:bg-bg-hover transition-colors"</span>
|
|
2034
|
-
<span class="cstat-no" title="statement not covered" > aria-label="Open properties"</span>
|
|
2035
|
-
>
|
|
2036
|
-
<span class="cstat-no" title="statement not covered" > <PanelRight className="w-5 h-5 text-text-secondary" /></span>
|
|
2037
|
-
<span class="cstat-no" title="statement not covered" > </button></span>
|
|
2038
|
-
<span class="cstat-no" title="statement not covered" > </div></span>
|
|
2039
|
-
)}
|
|
2040
|
-
|
|
2041
|
-
{/* Desktop: Connection status, theme toggle & shortcuts */}
|
|
2042
|
-
<span class="cstat-no" title="statement not covered" > {breakpoint !== 'mobile' && (</span>
|
|
2043
|
-
<span class="cstat-no" title="statement not covered" > <div className="absolute top-4 right-4 z-10 flex items-center gap-2"></span>
|
|
2044
|
-
<span class="cstat-no" title="statement not covered" > <ThemeToggle showLabel /></span>
|
|
2045
|
-
<span class="cstat-no" title="statement not covered" > <KeyboardShortcutsButton onClick={openShortcuts} /></span>
|
|
2046
|
-
<span class="cstat-no" title="statement not covered" > <div</span>
|
|
2047
|
-
<span class="cstat-no" title="statement not covered" > className={`flex items-center gap-2 px-3 py-1.5 rounded-full text-xs ${</span>
|
|
2048
|
-
<span class="cstat-no" title="statement not covered" > connected</span>
|
|
2049
|
-
<span class="cstat-no" title="statement not covered" > ? 'bg-success/10 text-success'</span>
|
|
2050
|
-
<span class="cstat-no" title="statement not covered" > : 'bg-error/10 text-error'</span>
|
|
2051
|
-
<span class="cstat-no" title="statement not covered" > }`}</span>
|
|
2052
|
-
>
|
|
2053
|
-
<span class="cstat-no" title="statement not covered" > <div</span>
|
|
2054
|
-
<span class="cstat-no" title="statement not covered" > className={`w-2 h-2 rounded-full ${</span>
|
|
2055
|
-
<span class="cstat-no" title="statement not covered" > connected ? 'bg-success' : 'bg-error'</span>
|
|
2056
|
-
<span class="cstat-no" title="statement not covered" > }`}</span>
|
|
2057
|
-
<span class="cstat-no" title="statement not covered" > /></span>
|
|
2058
|
-
<span class="cstat-no" title="statement not covered" > {connected ? 'Connected' : 'Disconnected'}</span>
|
|
2059
|
-
<span class="cstat-no" title="statement not covered" > </div></span>
|
|
2060
|
-
<span class="cstat-no" title="statement not covered" > </div></span>
|
|
2061
|
-
)}
|
|
2062
|
-
|
|
2063
|
-
{/* Toolbar */}
|
|
2064
|
-
<span class="cstat-no" title="statement not covered" > <Toolbar</span>
|
|
2065
|
-
<span class="cstat-no" title="statement not covered" > onAddStep={handleAddStep}</span>
|
|
2066
|
-
<span class="cstat-no" title="statement not covered" > onExecute={handleExecute}</span>
|
|
2067
|
-
<span class="cstat-no" title="statement not covered" > onSave={handleSave}</span>
|
|
2068
|
-
<span class="cstat-no" title="statement not covered" > onValidate={handleValidate}</span>
|
|
2069
|
-
<span class="cstat-no" title="statement not covered" > isExecuting={isExecuting}</span>
|
|
2070
|
-
<span class="cstat-no" title="statement not covered" > /></span>
|
|
2071
|
-
|
|
2072
|
-
{/* Breadcrumb for sub-workflow navigation */}
|
|
2073
|
-
<span class="cstat-no" title="statement not covered" > <Breadcrumb</span>
|
|
2074
|
-
<span class="cstat-no" title="statement not covered" > items={breadcrumbs}</span>
|
|
2075
|
-
<span class="cstat-no" title="statement not covered" > onNavigate={handleBreadcrumbNavigate}</span>
|
|
2076
|
-
<span class="cstat-no" title="statement not covered" > /></span>
|
|
2077
|
-
|
|
2078
|
-
{/* Canvas */}
|
|
2079
|
-
<span class="cstat-no" title="statement not covered" > <div className="flex-1 relative"></span>
|
|
2080
|
-
<span class="cstat-no" title="statement not covered" > <Canvas /></span>
|
|
2081
|
-
|
|
2082
|
-
{/* Show Toolbar button (when hidden) */}
|
|
2083
|
-
<span class="cstat-no" title="statement not covered" > {!toolbarVisible && breakpoint !== 'mobile' && (</span>
|
|
2084
|
-
<span class="cstat-no" title="statement not covered" > <button</span>
|
|
2085
|
-
<span class="cstat-no" title="statement not covered" > onClick={() => setToolbarVisible(true)}</span>
|
|
2086
|
-
<span class="cstat-no" title="statement not covered" > className="absolute top-4 left-1/2 -translate-x-1/2 z-10 p-2 bg-bg-panel/90 backdrop-blur border border-border-default rounded-lg shadow-md hover:bg-bg-hover transition-colors text-text-muted hover:text-text-primary"</span>
|
|
2087
|
-
<span class="cstat-no" title="statement not covered" > title="Show toolbar"</span>
|
|
2088
|
-
>
|
|
2089
|
-
<span class="cstat-no" title="statement not covered" > <Wrench className="w-4 h-4" /></span>
|
|
2090
|
-
<span class="cstat-no" title="statement not covered" > </button></span>
|
|
2091
|
-
)}
|
|
2092
|
-
|
|
2093
|
-
{/* Left edge: toggle sidebar */}
|
|
2094
|
-
<span class="cstat-no" title="statement not covered" > {breakpoint !== 'mobile' && (</span>
|
|
2095
|
-
<span class="cstat-no" title="statement not covered" > <button</span>
|
|
2096
|
-
<span class="cstat-no" title="statement not covered" > onClick={() => setSidebarOpen(!sidebarOpen)}</span>
|
|
2097
|
-
<span class="cstat-no" title="statement not covered" > className="absolute left-0 top-1/2 -translate-y-1/2 z-10 p-1.5 bg-bg-panel/90 backdrop-blur border border-l-0 border-border-default rounded-r-lg shadow-sm hover:bg-bg-hover transition-colors text-text-muted hover:text-text-primary"</span>
|
|
2098
|
-
<span class="cstat-no" title="statement not covered" > title={sidebarOpen ? 'Collapse sidebar' : 'Expand sidebar'}</span>
|
|
2099
|
-
<span class="cstat-no" title="statement not covered" > aria-label={sidebarOpen ? 'Collapse sidebar' : 'Expand sidebar'}</span>
|
|
2100
|
-
>
|
|
2101
|
-
<span class="cstat-no" title="statement not covered" > <PanelLeft className="w-4 h-4" /></span>
|
|
2102
|
-
<span class="cstat-no" title="statement not covered" > </button></span>
|
|
2103
|
-
)}
|
|
2104
|
-
|
|
2105
|
-
{/* Right edge: toggle properties panel */}
|
|
2106
|
-
<span class="cstat-no" title="statement not covered" > {breakpoint !== 'mobile' && (</span>
|
|
2107
|
-
<span class="cstat-no" title="statement not covered" > <button</span>
|
|
2108
|
-
<span class="cstat-no" title="statement not covered" > onClick={() => setPropertiesPanelOpen(!propertiesPanelOpen)}</span>
|
|
2109
|
-
<span class="cstat-no" title="statement not covered" > className="absolute right-0 top-1/2 -translate-y-1/2 z-10 p-1.5 bg-bg-panel/90 backdrop-blur border border-r-0 border-border-default rounded-l-lg shadow-sm hover:bg-bg-hover transition-colors text-text-muted hover:text-text-primary"</span>
|
|
2110
|
-
<span class="cstat-no" title="statement not covered" > title={propertiesPanelOpen ? 'Collapse properties' : 'Expand properties'}</span>
|
|
2111
|
-
<span class="cstat-no" title="statement not covered" > aria-label={propertiesPanelOpen ? 'Collapse properties' : 'Expand properties'}</span>
|
|
2112
|
-
>
|
|
2113
|
-
<span class="cstat-no" title="statement not covered" > <PanelRight className="w-4 h-4" /></span>
|
|
2114
|
-
<span class="cstat-no" title="statement not covered" > </button></span>
|
|
2115
|
-
)}
|
|
2116
|
-
|
|
2117
|
-
{/* Execution Overlay */}
|
|
2118
|
-
<span class="cstat-no" title="statement not covered" > <ExecutionOverlay</span>
|
|
2119
|
-
<span class="cstat-no" title="statement not covered" > isExecuting={isExecuting}</span>
|
|
2120
|
-
<span class="cstat-no" title="statement not covered" > isPaused={isPaused}</span>
|
|
2121
|
-
<span class="cstat-no" title="statement not covered" > workflowStatus={workflowStatus}</span>
|
|
2122
|
-
<span class="cstat-no" title="statement not covered" > currentStepId={currentStepId}</span>
|
|
2123
|
-
<span class="cstat-no" title="statement not covered" > steps={executionSteps}</span>
|
|
2124
|
-
<span class="cstat-no" title="statement not covered" > logs={executionLogs}</span>
|
|
2125
|
-
<span class="cstat-no" title="statement not covered" > onPause={() => pauseExecution()}</span>
|
|
2126
|
-
<span class="cstat-no" title="statement not covered" > onResume={() => resumeExecution()}</span>
|
|
2127
|
-
<span class="cstat-no" title="statement not covered" > onStop={() => {</span>
|
|
2128
|
-
<span class="cstat-no" title="statement not covered" > if (runIdRef.current) {</span>
|
|
2129
|
-
<span class="cstat-no" title="statement not covered" > cancelExecution(runIdRef.current);</span>
|
|
2130
|
-
<span class="cstat-no" title="statement not covered" > runIdRef.current = null;</span>
|
|
2131
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2132
|
-
<span class="cstat-no" title="statement not covered" > setWorkflowStatus('cancelled');</span>
|
|
2133
|
-
<span class="cstat-no" title="statement not covered" > }}</span>
|
|
2134
|
-
<span class="cstat-no" title="statement not covered" > onStepOver={() => stepOver()}</span>
|
|
2135
|
-
<span class="cstat-no" title="statement not covered" > onClose={() => {</span>
|
|
2136
|
-
<span class="cstat-no" title="statement not covered" > setWorkflowStatus('pending');</span>
|
|
2137
|
-
<span class="cstat-no" title="statement not covered" > setExecutionSteps([]);</span>
|
|
2138
|
-
<span class="cstat-no" title="statement not covered" > setExecutionLogs([]);</span>
|
|
2139
|
-
<span class="cstat-no" title="statement not covered" > }}</span>
|
|
2140
|
-
// Debug props
|
|
2141
|
-
<span class="cstat-no" title="statement not covered" > debug={debug}</span>
|
|
2142
|
-
<span class="cstat-no" title="statement not covered" > onToggleDebugMode={() => {</span>
|
|
2143
|
-
<span class="cstat-no" title="statement not covered" > if (debug.enabled) {</span>
|
|
2144
|
-
<span class="cstat-no" title="statement not covered" > disableDebugMode();</span>
|
|
2145
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
2146
|
-
<span class="cstat-no" title="statement not covered" > enableDebugMode();</span>
|
|
2147
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2148
|
-
<span class="cstat-no" title="statement not covered" > }}</span>
|
|
2149
|
-
<span class="cstat-no" title="statement not covered" > onToggleBreakpoint={(stepId) => toggleBreakpoint(stepId)}</span>
|
|
2150
|
-
<span class="cstat-no" title="statement not covered" > onStepInto={() => stepInto()}</span>
|
|
2151
|
-
<span class="cstat-no" title="statement not covered" > onStepOut={() => stepOut()}</span>
|
|
2152
|
-
<span class="cstat-no" title="statement not covered" > onClearBreakpoints={() => clearAllBreakpoints()}</span>
|
|
2153
|
-
<span class="cstat-no" title="statement not covered" > onAddWatchExpression={(expr) => addWatchExpression(expr)}</span>
|
|
2154
|
-
<span class="cstat-no" title="statement not covered" > onRemoveWatchExpression={(expr) => removeWatchExpression(expr)}</span>
|
|
2155
|
-
<span class="cstat-no" title="statement not covered" > /></span>
|
|
2156
|
-
<span class="cstat-no" title="statement not covered" > </div></span>
|
|
2157
|
-
|
|
2158
|
-
{/* AI Prompt Input */}
|
|
2159
|
-
<span class="cstat-no" title="statement not covered" > <PromptInput /></span>
|
|
2160
|
-
<span class="cstat-no" title="statement not covered" > </div></span>
|
|
2161
|
-
|
|
2162
|
-
{/* Right Panel - Properties */}
|
|
2163
|
-
<span class="cstat-no" title="statement not covered" > <PropertiesPanel /></span>
|
|
2164
|
-
|
|
2165
|
-
{/* New Step Wizard */}
|
|
2166
|
-
<span class="cstat-no" title="statement not covered" > <NewStepWizard</span>
|
|
2167
|
-
<span class="cstat-no" title="statement not covered" > open={isNewStepOpen}</span>
|
|
2168
|
-
<span class="cstat-no" title="statement not covered" > onOpenChange={(open) => {</span>
|
|
2169
|
-
<span class="cstat-no" title="statement not covered" > if (!open) closeNewStepWizard();</span>
|
|
2170
|
-
<span class="cstat-no" title="statement not covered" > }}</span>
|
|
2171
|
-
<span class="cstat-no" title="statement not covered" > onCreateStep={handleCreateStep}</span>
|
|
2172
|
-
<span class="cstat-no" title="statement not covered" > position={newStepPosition || undefined}</span>
|
|
2173
|
-
<span class="cstat-no" title="statement not covered" > /></span>
|
|
2174
|
-
|
|
2175
|
-
{/* Change Preview Modal */}
|
|
2176
|
-
<span class="cstat-no" title="statement not covered" > {pendingChanges && (</span>
|
|
2177
|
-
<span class="cstat-no" title="statement not covered" > <ChangePreview</span>
|
|
2178
|
-
<span class="cstat-no" title="statement not covered" > open={!!pendingChanges}</span>
|
|
2179
|
-
<span class="cstat-no" title="statement not covered" > onOpenChange={() => rejectChanges()}</span>
|
|
2180
|
-
<span class="cstat-no" title="statement not covered" > originalWorkflow={currentWorkflow}</span>
|
|
2181
|
-
<span class="cstat-no" title="statement not covered" > modifiedWorkflow={pendingChanges}</span>
|
|
2182
|
-
<span class="cstat-no" title="statement not covered" > explanation="AI has suggested the following changes to your workflow."</span>
|
|
2183
|
-
<span class="cstat-no" title="statement not covered" > onAccept={acceptChanges}</span>
|
|
2184
|
-
<span class="cstat-no" title="statement not covered" > onReject={rejectChanges}</span>
|
|
2185
|
-
<span class="cstat-no" title="statement not covered" > /></span>
|
|
2186
|
-
)}
|
|
2187
|
-
|
|
2188
|
-
{/* Execution Input Dialog */}
|
|
2189
|
-
<span class="cstat-no" title="statement not covered" > {currentWorkflow?.inputs && (</span>
|
|
2190
|
-
<span class="cstat-no" title="statement not covered" > <ExecutionInputDialog</span>
|
|
2191
|
-
<span class="cstat-no" title="statement not covered" > open={showInputDialog}</span>
|
|
2192
|
-
<span class="cstat-no" title="statement not covered" > onOpenChange={setShowInputDialog}</span>
|
|
2193
|
-
<span class="cstat-no" title="statement not covered" > inputs={currentWorkflow.inputs}</span>
|
|
2194
|
-
<span class="cstat-no" title="statement not covered" > onExecute={handleExecute}</span>
|
|
2195
|
-
<span class="cstat-no" title="statement not covered" > workflowName={currentWorkflow.metadata?.name}</span>
|
|
2196
|
-
<span class="cstat-no" title="statement not covered" > /></span>
|
|
2197
|
-
)}
|
|
2198
|
-
|
|
2199
|
-
{/* Validation Panel */}
|
|
2200
|
-
<span class="cstat-no" title="statement not covered" > <ValidationPanel</span>
|
|
2201
|
-
<span class="cstat-no" title="statement not covered" > workflowPath={showValidationPanel ? selectedWorkflow : null}</span>
|
|
2202
|
-
<span class="cstat-no" title="statement not covered" > onClose={() => setShowValidationPanel(false)}</span>
|
|
2203
|
-
<span class="cstat-no" title="statement not covered" > /></span>
|
|
2204
|
-
|
|
2205
|
-
{/* Keyboard Shortcuts Modal */}
|
|
2206
|
-
<span class="cstat-no" title="statement not covered" > <KeyboardShortcuts open={isShortcutsOpen} onOpenChange={setShortcutsOpen} /></span>
|
|
2207
|
-
<span class="cstat-no" title="statement not covered" > </div></span>
|
|
2208
|
-
<span class="cstat-no" title="statement not covered" > </ReactFlowProvider></span>
|
|
2209
|
-
);
|
|
2210
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2211
|
-
</pre></td></tr></table></pre>
|
|
2212
|
-
|
|
2213
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
2214
|
-
</div><!-- /wrapper -->
|
|
2215
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
2216
|
-
Code coverage generated by
|
|
2217
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2218
|
-
at 2026-02-09T21:07:24.535Z
|
|
2219
|
-
</div>
|
|
2220
|
-
<script src="../prettify.js"></script>
|
|
2221
|
-
<script>
|
|
2222
|
-
window.onload = function () {
|
|
2223
|
-
prettyPrint();
|
|
2224
|
-
};
|
|
2225
|
-
</script>
|
|
2226
|
-
<script src="../sorter.js"></script>
|
|
2227
|
-
<script src="../block-navigation.js"></script>
|
|
2228
|
-
</body>
|
|
2229
|
-
</html>
|
|
2230
|
-
|