@lcap/nasl 3.7.3-beta.3 → 3.7.4-beta.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.
Files changed (327) hide show
  1. package/out/concepts/BindAttribute__.js +3 -3
  2. package/out/concepts/BindAttribute__.js.map +1 -1
  3. package/out/concepts/BindDirective__.js +3 -3
  4. package/out/concepts/BindDirective__.js.map +1 -1
  5. package/out/concepts/CallLogic__.js +2 -2
  6. package/out/concepts/CallLogic__.js.map +1 -1
  7. package/out/concepts/MemberExpression__.js +4 -4
  8. package/out/concepts/MemberExpression__.js.map +1 -1
  9. package/out/concepts/StringLiteral__.js +3 -3
  10. package/out/concepts/StringLiteral__.js.map +1 -1
  11. package/out/concepts/ViewElement__.d.ts +3 -0
  12. package/out/concepts/ViewElement__.js +2 -2
  13. package/out/concepts/ViewElement__.js.map +1 -1
  14. package/out/concepts/basics/stdlib/nasl.processV2.js +1 -1
  15. package/out/concepts/basics/stdlib/nasl.processV2.js.map +1 -1
  16. package/out/generator/genBundleFiles.d.ts +1 -0
  17. package/out/generator/genBundleFiles.js +6 -2
  18. package/out/generator/genBundleFiles.js.map +1 -1
  19. package/out/generator/release-body/body.d.ts +1 -0
  20. package/out/generator/release-body/body.js +37 -5
  21. package/out/generator/release-body/body.js.map +1 -1
  22. package/package.json +1 -1
  23. package/sandbox/stdlib/nasl.processV2.ts +1 -1
  24. package/src/concepts/BindAttribute__.ts +3 -3
  25. package/src/concepts/BindDirective__.ts +3 -3
  26. package/src/concepts/CallLogic__.ts +2 -2
  27. package/src/concepts/MemberExpression__.ts +4 -4
  28. package/src/concepts/StringLiteral__.ts +3 -3
  29. package/src/concepts/ViewElement__.ts +5 -2
  30. package/src/concepts/basics/stdlib/nasl.processV2.ts +1 -1
  31. package/src/generator/genBundleFiles.ts +8 -3
  32. package/src/generator/release-body/body.ts +40 -4
  33. package/.nyc_output/943352aa-23df-44e0-863b-3dcd3e8bf57a.json +0 -1
  34. package/.nyc_output/processinfo/943352aa-23df-44e0-863b-3dcd3e8bf57a.json +0 -1
  35. package/.nyc_output/processinfo/index.json +0 -1
  36. package/coverage/base.css +0 -224
  37. package/coverage/block-navigation.js +0 -87
  38. package/coverage/cobertura-coverage.xml +0 -72356
  39. package/coverage/favicon.png +0 -0
  40. package/coverage/index.html +0 -161
  41. package/coverage/prettify.css +0 -1
  42. package/coverage/prettify.js +0 -2
  43. package/coverage/sort-arrow-sprite.png +0 -0
  44. package/coverage/sorter.js +0 -196
  45. package/coverage/src/automate/engine/index.html +0 -116
  46. package/coverage/src/automate/engine/utils.js.html +0 -1414
  47. package/coverage/src/bak/index.html +0 -116
  48. package/coverage/src/bak/translator.js.html +0 -622
  49. package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +0 -175
  50. package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +0 -169
  51. package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +0 -1246
  52. package/coverage/src/breakpoint/generator/CallbackNode.ts.html +0 -145
  53. package/coverage/src/breakpoint/generator/index.html +0 -176
  54. package/coverage/src/breakpoint/generator/index.ts.html +0 -508
  55. package/coverage/src/breakpoint/index.html +0 -116
  56. package/coverage/src/breakpoint/index.ts.html +0 -94
  57. package/coverage/src/breakpoint/shared/constants.ts.html +0 -436
  58. package/coverage/src/breakpoint/shared/index.html +0 -176
  59. package/coverage/src/breakpoint/shared/index.ts.html +0 -94
  60. package/coverage/src/breakpoint/shared/operations.ts.html +0 -160
  61. package/coverage/src/breakpoint/shared/socket.ts.html +0 -1297
  62. package/coverage/src/breakpoint/shared/utils.ts.html +0 -1087
  63. package/coverage/src/breakpoint/store/core.ts.html +0 -1600
  64. package/coverage/src/breakpoint/store/dock.ts.html +0 -733
  65. package/coverage/src/breakpoint/store/index.html +0 -146
  66. package/coverage/src/breakpoint/store/index.ts.html +0 -91
  67. package/coverage/src/common/BaseNode.ts.html +0 -3874
  68. package/coverage/src/common/Command.ts.html +0 -310
  69. package/coverage/src/common/EventEmitter.ts.html +0 -370
  70. package/coverage/src/common/Messager.ts.html +0 -820
  71. package/coverage/src/common/asyncFuncMap.ts.html +0 -127
  72. package/coverage/src/common/index.html +0 -191
  73. package/coverage/src/common/index.ts.html +0 -94
  74. package/coverage/src/concepts/Abort__.ts.html +0 -328
  75. package/coverage/src/concepts/Anchor__.ts.html +0 -646
  76. package/coverage/src/concepts/AnonymousFunction__.ts.html +0 -2029
  77. package/coverage/src/concepts/App__.ts.html +0 -13252
  78. package/coverage/src/concepts/Argument__.ts.html +0 -964
  79. package/coverage/src/concepts/Assignee__.ts.html +0 -2236
  80. package/coverage/src/concepts/AssignmentLine__.ts.html +0 -409
  81. package/coverage/src/concepts/Assignment__.ts.html +0 -1123
  82. package/coverage/src/concepts/Attribute__.ts.html +0 -733
  83. package/coverage/src/concepts/AuthInterface__.ts.html +0 -367
  84. package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +0 -1984
  85. package/coverage/src/concepts/AuthLogic__.ts.html +0 -781
  86. package/coverage/src/concepts/BackendVariable__.ts.html +0 -1483
  87. package/coverage/src/concepts/Backend__.ts.html +0 -1165
  88. package/coverage/src/concepts/BatchAssignment__.ts.html +0 -3301
  89. package/coverage/src/concepts/BinaryExpression__.ts.html +0 -1441
  90. package/coverage/src/concepts/BindAttribute__.ts.html +0 -3835
  91. package/coverage/src/concepts/BindDirective__.ts.html +0 -1921
  92. package/coverage/src/concepts/BindEvent__.ts.html +0 -3406
  93. package/coverage/src/concepts/BindStyle__.ts.html +0 -1612
  94. package/coverage/src/concepts/BooleanLiteral__.ts.html +0 -418
  95. package/coverage/src/concepts/CallAuthInterface__.ts.html +0 -1615
  96. package/coverage/src/concepts/CallConnector__.ts.html +0 -922
  97. package/coverage/src/concepts/CallFunction__.ts.html +0 -2122
  98. package/coverage/src/concepts/CallInterface__.ts.html +0 -2719
  99. package/coverage/src/concepts/CallLogic__.ts.html +0 -4807
  100. package/coverage/src/concepts/CallQueryComponent__.ts.html +0 -5308
  101. package/coverage/src/concepts/Comment__.ts.html +0 -394
  102. package/coverage/src/concepts/CompletionProperty__.ts.html +0 -925
  103. package/coverage/src/concepts/ConfigGroup__.ts.html +0 -1105
  104. package/coverage/src/concepts/ConfigPropertyValue__.ts.html +0 -424
  105. package/coverage/src/concepts/ConfigProperty__.ts.html +0 -1348
  106. package/coverage/src/concepts/Configuration__.ts.html +0 -1027
  107. package/coverage/src/concepts/Connection__.ts.html +0 -1360
  108. package/coverage/src/concepts/ConnectorTrigger__.ts.html +0 -595
  109. package/coverage/src/concepts/Connector__.ts.html +0 -4255
  110. package/coverage/src/concepts/Constant__.ts.html +0 -913
  111. package/coverage/src/concepts/DataSource__.ts.html +0 -1771
  112. package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +0 -331
  113. package/coverage/src/concepts/Destination__.ts.html +0 -2731
  114. package/coverage/src/concepts/End__.ts.html +0 -433
  115. package/coverage/src/concepts/EntityIndex__.ts.html +0 -787
  116. package/coverage/src/concepts/EntityProperty__.ts.html +0 -2668
  117. package/coverage/src/concepts/Entity__.ts.html +0 -2950
  118. package/coverage/src/concepts/EnumItem__.ts.html +0 -550
  119. package/coverage/src/concepts/Enum__.ts.html +0 -1231
  120. package/coverage/src/concepts/Event__.ts.html +0 -1084
  121. package/coverage/src/concepts/ExternalDestination__.ts.html +0 -1033
  122. package/coverage/src/concepts/ForEachStatement__.ts.html +0 -1957
  123. package/coverage/src/concepts/FrontendLibrary__.ts.html +0 -1711
  124. package/coverage/src/concepts/FrontendVariable__.ts.html +0 -292
  125. package/coverage/src/concepts/Frontend__.ts.html +0 -3961
  126. package/coverage/src/concepts/Function__.ts.html +0 -3598
  127. package/coverage/src/concepts/Identifier__.ts.html +0 -1057
  128. package/coverage/src/concepts/IfStatement__.ts.html +0 -1594
  129. package/coverage/src/concepts/Integration__.ts.html +0 -1228
  130. package/coverage/src/concepts/InterfaceParam__.ts.html +0 -1087
  131. package/coverage/src/concepts/Interface__.ts.html +0 -3394
  132. package/coverage/src/concepts/JSBlock__.ts.html +0 -421
  133. package/coverage/src/concepts/JavaLogic__.ts.html +0 -460
  134. package/coverage/src/concepts/LogicItem__.ts.html +0 -1171
  135. package/coverage/src/concepts/Logic__.ts.html +0 -7408
  136. package/coverage/src/concepts/MatchCase__.ts.html +0 -2929
  137. package/coverage/src/concepts/Match__.ts.html +0 -2455
  138. package/coverage/src/concepts/MemberExpression__.ts.html +0 -1726
  139. package/coverage/src/concepts/MicroApp__.ts.html +0 -436
  140. package/coverage/src/concepts/Module__.ts.html +0 -9220
  141. package/coverage/src/concepts/MsgTriggerEvent__.ts.html +0 -1045
  142. package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +0 -1018
  143. package/coverage/src/concepts/Namespace__.ts.html +0 -7942
  144. package/coverage/src/concepts/NewComposite__.ts.html +0 -4729
  145. package/coverage/src/concepts/NewList__.ts.html +0 -1618
  146. package/coverage/src/concepts/NewMap__.ts.html +0 -2326
  147. package/coverage/src/concepts/New__.ts.html +0 -289
  148. package/coverage/src/concepts/NullLiteral__.ts.html +0 -349
  149. package/coverage/src/concepts/NumericLiteral__.ts.html +0 -676
  150. package/coverage/src/concepts/OqlQueryComponent__.ts.html +0 -1141
  151. package/coverage/src/concepts/OverriddenLogic__.ts.html +0 -6817
  152. package/coverage/src/concepts/Param__.ts.html +0 -1726
  153. package/coverage/src/concepts/Point__.ts.html +0 -331
  154. package/coverage/src/concepts/ProcessComponent__.ts.html +0 -1666
  155. package/coverage/src/concepts/ProcessElement__.ts.html +0 -5884
  156. package/coverage/src/concepts/ProcessOutcome__.ts.html +0 -352
  157. package/coverage/src/concepts/ProcessOutcomes__.ts.html +0 -343
  158. package/coverage/src/concepts/Process__.ts.html +0 -4768
  159. package/coverage/src/concepts/QueryAggregateExpression__.ts.html +0 -568
  160. package/coverage/src/concepts/QueryFieldExpression__.ts.html +0 -583
  161. package/coverage/src/concepts/QueryFromExpression__.ts.html +0 -910
  162. package/coverage/src/concepts/QueryGroupByExpression__.ts.html +0 -559
  163. package/coverage/src/concepts/QueryJoinExpression__.ts.html +0 -1567
  164. package/coverage/src/concepts/QueryLimitExpression__.ts.html +0 -637
  165. package/coverage/src/concepts/QueryOrderByExpression__.ts.html +0 -679
  166. package/coverage/src/concepts/QuerySelectExpression__.ts.html +0 -1714
  167. package/coverage/src/concepts/Rect__.ts.html +0 -373
  168. package/coverage/src/concepts/Return__.ts.html +0 -1312
  169. package/coverage/src/concepts/Role__.ts.html +0 -601
  170. package/coverage/src/concepts/SelectMembers__.ts.html +0 -1246
  171. package/coverage/src/concepts/Slot__.ts.html +0 -628
  172. package/coverage/src/concepts/SqlQueryComponent__.ts.html +0 -982
  173. package/coverage/src/concepts/Start__.ts.html +0 -304
  174. package/coverage/src/concepts/StringInterpolation__.ts.html +0 -1129
  175. package/coverage/src/concepts/StringLiteral__.ts.html +0 -505
  176. package/coverage/src/concepts/StructureProperty__.ts.html +0 -1132
  177. package/coverage/src/concepts/Structure__.ts.html +0 -2092
  178. package/coverage/src/concepts/SwitchCase__.ts.html +0 -1174
  179. package/coverage/src/concepts/SwitchStatement__.ts.html +0 -877
  180. package/coverage/src/concepts/Theme__.ts.html +0 -358
  181. package/coverage/src/concepts/Transactional__.ts.html +0 -628
  182. package/coverage/src/concepts/TriggerEvent__.ts.html +0 -1012
  183. package/coverage/src/concepts/TriggerLauncher__.ts.html +0 -775
  184. package/coverage/src/concepts/TypeAnnotation__.ts.html +0 -3718
  185. package/coverage/src/concepts/TypeParam__.ts.html +0 -319
  186. package/coverage/src/concepts/UnaryExpression__.ts.html +0 -697
  187. package/coverage/src/concepts/Unparsed__.ts.html +0 -394
  188. package/coverage/src/concepts/UseComponent__.ts.html +0 -331
  189. package/coverage/src/concepts/ValidationRule__.ts.html +0 -1840
  190. package/coverage/src/concepts/Variable__.ts.html +0 -1489
  191. package/coverage/src/concepts/ViewBlock__.ts.html +0 -352
  192. package/coverage/src/concepts/ViewComponent__.ts.html +0 -4180
  193. package/coverage/src/concepts/ViewElement__.ts.html +0 -8803
  194. package/coverage/src/concepts/View__.ts.html +0 -8620
  195. package/coverage/src/concepts/WhileStatement__.ts.html +0 -1063
  196. package/coverage/src/concepts/basics/stdlib/index.html +0 -356
  197. package/coverage/src/concepts/basics/stdlib/index.ts.html +0 -208
  198. package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +0 -565
  199. package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +0 -517
  200. package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +0 -226
  201. package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +0 -172
  202. package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +0 -214
  203. package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +0 -145
  204. package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +0 -589
  205. package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +0 -214
  206. package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +0 -229
  207. package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +0 -268
  208. package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +0 -1999
  209. package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +0 -3259
  210. package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +0 -6844
  211. package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +0 -1768
  212. package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +0 -163
  213. package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +0 -664
  214. package/coverage/src/concepts/basics/types/coreTypeList.ts.html +0 -121
  215. package/coverage/src/concepts/basics/types/index.html +0 -131
  216. package/coverage/src/concepts/basics/types/index.ts.html +0 -160
  217. package/coverage/src/concepts/index.html +0 -1961
  218. package/coverage/src/concepts/index.ts.html +0 -103
  219. package/coverage/src/concepts/index__.ts.html +0 -451
  220. package/coverage/src/config.ts.html +0 -343
  221. package/coverage/src/decorators/index.html +0 -131
  222. package/coverage/src/decorators/index.ts.html +0 -739
  223. package/coverage/src/decorators/promise.ts.html +0 -169
  224. package/coverage/src/eventBus.ts.html +0 -100
  225. package/coverage/src/generator/compileComponent.ts.html +0 -142
  226. package/coverage/src/generator/genBundleFiles.ts.html +0 -1828
  227. package/coverage/src/generator/genHash.ts.html +0 -124
  228. package/coverage/src/generator/genMetaData.ts.html +0 -1042
  229. package/coverage/src/generator/genReleaseBody.ts.html +0 -1282
  230. package/coverage/src/generator/icestark.ts.html +0 -220
  231. package/coverage/src/generator/index.html +0 -266
  232. package/coverage/src/generator/index.ts.html +0 -106
  233. package/coverage/src/generator/microApp.ts.html +0 -172
  234. package/coverage/src/generator/permission.ts.html +0 -1036
  235. package/coverage/src/generator/qiankun.ts.html +0 -232
  236. package/coverage/src/generator/styleReplacer.ts.html +0 -199
  237. package/coverage/src/index.html +0 -116
  238. package/coverage/src/index.ts.html +0 -121
  239. package/coverage/src/manager/diagnostic.ts.html +0 -442
  240. package/coverage/src/manager/index.html +0 -131
  241. package/coverage/src/manager/stepRecorder.ts.html +0 -457
  242. package/coverage/src/natural/genNaturalTS.ts.html +0 -355
  243. package/coverage/src/natural/index.html +0 -161
  244. package/coverage/src/natural/index.ts.html +0 -91
  245. package/coverage/src/natural/naslStdlibMap.ts.html +0 -157
  246. package/coverage/src/natural/transformTSCode.ts.html +0 -2647
  247. package/coverage/src/sentry/index.html +0 -116
  248. package/coverage/src/sentry/index.ts.html +0 -676
  249. package/coverage/src/server/createUiTs.ts.html +0 -910
  250. package/coverage/src/server/entity2LogicNamespace.ts.html +0 -1294
  251. package/coverage/src/server/event.js.html +0 -526
  252. package/coverage/src/server/extendBaseNode.ts.html +0 -1762
  253. package/coverage/src/server/formatTsUtils.ts.html +0 -2689
  254. package/coverage/src/server/getConnector.ts.html +0 -316
  255. package/coverage/src/server/getExtensionModules.ts.html +0 -178
  256. package/coverage/src/server/getFunctions.ts.html +0 -133
  257. package/coverage/src/server/getInterfaces.ts.html +0 -229
  258. package/coverage/src/server/getLogging.ts.html +0 -100
  259. package/coverage/src/server/getLogics.ts.html +0 -1363
  260. package/coverage/src/server/getMemberIdentifier.ts.html +0 -1561
  261. package/coverage/src/server/getProcessComponents.ts.html +0 -112
  262. package/coverage/src/server/getProcesses.ts.html +0 -2023
  263. package/coverage/src/server/getValidates.ts.html +0 -115
  264. package/coverage/src/server/index.html +0 -401
  265. package/coverage/src/server/index.ts.html +0 -229
  266. package/coverage/src/server/naslServer.ts.html +0 -14401
  267. package/coverage/src/server/naslStdlibMap.ts.html +0 -241
  268. package/coverage/src/server/process2LogicNamespace.ts.html +0 -454
  269. package/coverage/src/server/translator.ts.html +0 -2566
  270. package/coverage/src/service/creator/add.configs.js.html +0 -379
  271. package/coverage/src/service/creator/errHandles.js.html +0 -322
  272. package/coverage/src/service/creator/index.html +0 -146
  273. package/coverage/src/service/creator/index.js.html +0 -352
  274. package/coverage/src/service/datasource/api.js.html +0 -118
  275. package/coverage/src/service/datasource/index.html +0 -131
  276. package/coverage/src/service/datasource/index.js.html +0 -103
  277. package/coverage/src/service/logic/api.js.html +0 -109
  278. package/coverage/src/service/logic/index.html +0 -131
  279. package/coverage/src/service/logic/index.js.html +0 -103
  280. package/coverage/src/service/storage/api.js.html +0 -202
  281. package/coverage/src/service/storage/index.html +0 -206
  282. package/coverage/src/service/storage/index.ts.html +0 -103
  283. package/coverage/src/service/storage/init.ts.html +0 -2761
  284. package/coverage/src/service/storage/jsoner.ts.html +0 -502
  285. package/coverage/src/service/storage/map.ts.html +0 -256
  286. package/coverage/src/service/storage/service.ts.html +0 -331
  287. package/coverage/src/service/storage/storagePoint.ts.html +0 -304
  288. package/coverage/src/templator/genCallComponentLogic.ts.html +0 -163
  289. package/coverage/src/templator/genCreateBlock.ts.html +0 -1093
  290. package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +0 -1609
  291. package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +0 -2254
  292. package/coverage/src/templator/genEditTableBlock.ts.html +0 -955
  293. package/coverage/src/templator/genEnumSelectBlock.ts.html +0 -178
  294. package/coverage/src/templator/genGetBlock.ts.html +0 -451
  295. package/coverage/src/templator/genGridViewBlock.ts.html +0 -1114
  296. package/coverage/src/templator/genListViewBlock.ts.html +0 -475
  297. package/coverage/src/templator/genQueryComponent.ts.html +0 -1207
  298. package/coverage/src/templator/genSelectBlock.ts.html +0 -1243
  299. package/coverage/src/templator/genTableBlock.ts.html +0 -910
  300. package/coverage/src/templator/genUpdateBlock.ts.html +0 -1192
  301. package/coverage/src/templator/index.html +0 -326
  302. package/coverage/src/templator/index.ts.html +0 -154
  303. package/coverage/src/templator/utils.ts.html +0 -1861
  304. package/coverage/src/translator/constant.ts.html +0 -106
  305. package/coverage/src/translator/index.html +0 -146
  306. package/coverage/src/translator/index.ts.html +0 -94
  307. package/coverage/src/translator/utils.ts.html +0 -436
  308. package/coverage/src/utils/cookie.ts.html +0 -265
  309. package/coverage/src/utils/env.ts.html +0 -91
  310. package/coverage/src/utils/index.html +0 -206
  311. package/coverage/src/utils/index.ts.html +0 -1429
  312. package/coverage/src/utils/logger.ts.html +0 -145
  313. package/coverage/src/utils/sortTsString.ts.html +0 -187
  314. package/coverage/src/utils/string.ts.html +0 -544
  315. package/coverage/src/utils/time-slicing/controller.ts.html +0 -1144
  316. package/coverage/src/utils/time-slicing/index.html +0 -221
  317. package/coverage/src/utils/time-slicing/index.ts.html +0 -103
  318. package/coverage/src/utils/time-slicing/page-state.ts.html +0 -121
  319. package/coverage/src/utils/time-slicing/performance.ts.html +0 -253
  320. package/coverage/src/utils/time-slicing/runner.ts.html +0 -241
  321. package/coverage/src/utils/time-slicing/tool.ts.html +0 -220
  322. package/coverage/src/utils/time-slicing/utils.ts.html +0 -355
  323. package/coverage/src/utils/time-slicing/wrapper.ts.html +0 -259
  324. package/coverage/src/utils/time-slicing.ts.html +0 -418
  325. package/coverage/src/utils/traverse.ts.html +0 -568
  326. package/coverage/src/utils/types.ts.html +0 -133
  327. package/coverage/src/utils/window.ts.html +0 -112
@@ -1,2761 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/service/storage/init.ts</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">src/service/storage</a> init.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">6.39% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>30/469</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0.66% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>2/300</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">1.49% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>1/67</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">6.69% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>30/448</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 oninput="onInput()" 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>
782
- <a name='L717'></a><a href='#L717'>717</a>
783
- <a name='L718'></a><a href='#L718'>718</a>
784
- <a name='L719'></a><a href='#L719'>719</a>
785
- <a name='L720'></a><a href='#L720'>720</a>
786
- <a name='L721'></a><a href='#L721'>721</a>
787
- <a name='L722'></a><a href='#L722'>722</a>
788
- <a name='L723'></a><a href='#L723'>723</a>
789
- <a name='L724'></a><a href='#L724'>724</a>
790
- <a name='L725'></a><a href='#L725'>725</a>
791
- <a name='L726'></a><a href='#L726'>726</a>
792
- <a name='L727'></a><a href='#L727'>727</a>
793
- <a name='L728'></a><a href='#L728'>728</a>
794
- <a name='L729'></a><a href='#L729'>729</a>
795
- <a name='L730'></a><a href='#L730'>730</a>
796
- <a name='L731'></a><a href='#L731'>731</a>
797
- <a name='L732'></a><a href='#L732'>732</a>
798
- <a name='L733'></a><a href='#L733'>733</a>
799
- <a name='L734'></a><a href='#L734'>734</a>
800
- <a name='L735'></a><a href='#L735'>735</a>
801
- <a name='L736'></a><a href='#L736'>736</a>
802
- <a name='L737'></a><a href='#L737'>737</a>
803
- <a name='L738'></a><a href='#L738'>738</a>
804
- <a name='L739'></a><a href='#L739'>739</a>
805
- <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a>
811
- <a name='L746'></a><a href='#L746'>746</a>
812
- <a name='L747'></a><a href='#L747'>747</a>
813
- <a name='L748'></a><a href='#L748'>748</a>
814
- <a name='L749'></a><a href='#L749'>749</a>
815
- <a name='L750'></a><a href='#L750'>750</a>
816
- <a name='L751'></a><a href='#L751'>751</a>
817
- <a name='L752'></a><a href='#L752'>752</a>
818
- <a name='L753'></a><a href='#L753'>753</a>
819
- <a name='L754'></a><a href='#L754'>754</a>
820
- <a name='L755'></a><a href='#L755'>755</a>
821
- <a name='L756'></a><a href='#L756'>756</a>
822
- <a name='L757'></a><a href='#L757'>757</a>
823
- <a name='L758'></a><a href='#L758'>758</a>
824
- <a name='L759'></a><a href='#L759'>759</a>
825
- <a name='L760'></a><a href='#L760'>760</a>
826
- <a name='L761'></a><a href='#L761'>761</a>
827
- <a name='L762'></a><a href='#L762'>762</a>
828
- <a name='L763'></a><a href='#L763'>763</a>
829
- <a name='L764'></a><a href='#L764'>764</a>
830
- <a name='L765'></a><a href='#L765'>765</a>
831
- <a name='L766'></a><a href='#L766'>766</a>
832
- <a name='L767'></a><a href='#L767'>767</a>
833
- <a name='L768'></a><a href='#L768'>768</a>
834
- <a name='L769'></a><a href='#L769'>769</a>
835
- <a name='L770'></a><a href='#L770'>770</a>
836
- <a name='L771'></a><a href='#L771'>771</a>
837
- <a name='L772'></a><a href='#L772'>772</a>
838
- <a name='L773'></a><a href='#L773'>773</a>
839
- <a name='L774'></a><a href='#L774'>774</a>
840
- <a name='L775'></a><a href='#L775'>775</a>
841
- <a name='L776'></a><a href='#L776'>776</a>
842
- <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a>
844
- <a name='L779'></a><a href='#L779'>779</a>
845
- <a name='L780'></a><a href='#L780'>780</a>
846
- <a name='L781'></a><a href='#L781'>781</a>
847
- <a name='L782'></a><a href='#L782'>782</a>
848
- <a name='L783'></a><a href='#L783'>783</a>
849
- <a name='L784'></a><a href='#L784'>784</a>
850
- <a name='L785'></a><a href='#L785'>785</a>
851
- <a name='L786'></a><a href='#L786'>786</a>
852
- <a name='L787'></a><a href='#L787'>787</a>
853
- <a name='L788'></a><a href='#L788'>788</a>
854
- <a name='L789'></a><a href='#L789'>789</a>
855
- <a name='L790'></a><a href='#L790'>790</a>
856
- <a name='L791'></a><a href='#L791'>791</a>
857
- <a name='L792'></a><a href='#L792'>792</a>
858
- <a name='L793'></a><a href='#L793'>793</a>
859
- <a name='L794'></a><a href='#L794'>794</a>
860
- <a name='L795'></a><a href='#L795'>795</a>
861
- <a name='L796'></a><a href='#L796'>796</a>
862
- <a name='L797'></a><a href='#L797'>797</a>
863
- <a name='L798'></a><a href='#L798'>798</a>
864
- <a name='L799'></a><a href='#L799'>799</a>
865
- <a name='L800'></a><a href='#L800'>800</a>
866
- <a name='L801'></a><a href='#L801'>801</a>
867
- <a name='L802'></a><a href='#L802'>802</a>
868
- <a name='L803'></a><a href='#L803'>803</a>
869
- <a name='L804'></a><a href='#L804'>804</a>
870
- <a name='L805'></a><a href='#L805'>805</a>
871
- <a name='L806'></a><a href='#L806'>806</a>
872
- <a name='L807'></a><a href='#L807'>807</a>
873
- <a name='L808'></a><a href='#L808'>808</a>
874
- <a name='L809'></a><a href='#L809'>809</a>
875
- <a name='L810'></a><a href='#L810'>810</a>
876
- <a name='L811'></a><a href='#L811'>811</a>
877
- <a name='L812'></a><a href='#L812'>812</a>
878
- <a name='L813'></a><a href='#L813'>813</a>
879
- <a name='L814'></a><a href='#L814'>814</a>
880
- <a name='L815'></a><a href='#L815'>815</a>
881
- <a name='L816'></a><a href='#L816'>816</a>
882
- <a name='L817'></a><a href='#L817'>817</a>
883
- <a name='L818'></a><a href='#L818'>818</a>
884
- <a name='L819'></a><a href='#L819'>819</a>
885
- <a name='L820'></a><a href='#L820'>820</a>
886
- <a name='L821'></a><a href='#L821'>821</a>
887
- <a name='L822'></a><a href='#L822'>822</a>
888
- <a name='L823'></a><a href='#L823'>823</a>
889
- <a name='L824'></a><a href='#L824'>824</a>
890
- <a name='L825'></a><a href='#L825'>825</a>
891
- <a name='L826'></a><a href='#L826'>826</a>
892
- <a name='L827'></a><a href='#L827'>827</a>
893
- <a name='L828'></a><a href='#L828'>828</a>
894
- <a name='L829'></a><a href='#L829'>829</a>
895
- <a name='L830'></a><a href='#L830'>830</a>
896
- <a name='L831'></a><a href='#L831'>831</a>
897
- <a name='L832'></a><a href='#L832'>832</a>
898
- <a name='L833'></a><a href='#L833'>833</a>
899
- <a name='L834'></a><a href='#L834'>834</a>
900
- <a name='L835'></a><a href='#L835'>835</a>
901
- <a name='L836'></a><a href='#L836'>836</a>
902
- <a name='L837'></a><a href='#L837'>837</a>
903
- <a name='L838'></a><a href='#L838'>838</a>
904
- <a name='L839'></a><a href='#L839'>839</a>
905
- <a name='L840'></a><a href='#L840'>840</a>
906
- <a name='L841'></a><a href='#L841'>841</a>
907
- <a name='L842'></a><a href='#L842'>842</a>
908
- <a name='L843'></a><a href='#L843'>843</a>
909
- <a name='L844'></a><a href='#L844'>844</a>
910
- <a name='L845'></a><a href='#L845'>845</a>
911
- <a name='L846'></a><a href='#L846'>846</a>
912
- <a name='L847'></a><a href='#L847'>847</a>
913
- <a name='L848'></a><a href='#L848'>848</a>
914
- <a name='L849'></a><a href='#L849'>849</a>
915
- <a name='L850'></a><a href='#L850'>850</a>
916
- <a name='L851'></a><a href='#L851'>851</a>
917
- <a name='L852'></a><a href='#L852'>852</a>
918
- <a name='L853'></a><a href='#L853'>853</a>
919
- <a name='L854'></a><a href='#L854'>854</a>
920
- <a name='L855'></a><a href='#L855'>855</a>
921
- <a name='L856'></a><a href='#L856'>856</a>
922
- <a name='L857'></a><a href='#L857'>857</a>
923
- <a name='L858'></a><a href='#L858'>858</a>
924
- <a name='L859'></a><a href='#L859'>859</a>
925
- <a name='L860'></a><a href='#L860'>860</a>
926
- <a name='L861'></a><a href='#L861'>861</a>
927
- <a name='L862'></a><a href='#L862'>862</a>
928
- <a name='L863'></a><a href='#L863'>863</a>
929
- <a name='L864'></a><a href='#L864'>864</a>
930
- <a name='L865'></a><a href='#L865'>865</a>
931
- <a name='L866'></a><a href='#L866'>866</a>
932
- <a name='L867'></a><a href='#L867'>867</a>
933
- <a name='L868'></a><a href='#L868'>868</a>
934
- <a name='L869'></a><a href='#L869'>869</a>
935
- <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a>
939
- <a name='L874'></a><a href='#L874'>874</a>
940
- <a name='L875'></a><a href='#L875'>875</a>
941
- <a name='L876'></a><a href='#L876'>876</a>
942
- <a name='L877'></a><a href='#L877'>877</a>
943
- <a name='L878'></a><a href='#L878'>878</a>
944
- <a name='L879'></a><a href='#L879'>879</a>
945
- <a name='L880'></a><a href='#L880'>880</a>
946
- <a name='L881'></a><a href='#L881'>881</a>
947
- <a name='L882'></a><a href='#L882'>882</a>
948
- <a name='L883'></a><a href='#L883'>883</a>
949
- <a name='L884'></a><a href='#L884'>884</a>
950
- <a name='L885'></a><a href='#L885'>885</a>
951
- <a name='L886'></a><a href='#L886'>886</a>
952
- <a name='L887'></a><a href='#L887'>887</a>
953
- <a name='L888'></a><a href='#L888'>888</a>
954
- <a name='L889'></a><a href='#L889'>889</a>
955
- <a name='L890'></a><a href='#L890'>890</a>
956
- <a name='L891'></a><a href='#L891'>891</a>
957
- <a name='L892'></a><a href='#L892'>892</a>
958
- <a name='L893'></a><a href='#L893'>893</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
959
- <span class="cline-any cline-yes">1x</span>
960
- <span class="cline-any cline-yes">1x</span>
961
- <span class="cline-any cline-yes">1x</span>
962
- <span class="cline-any cline-yes">1x</span>
963
- <span class="cline-any cline-yes">1x</span>
964
- <span class="cline-any cline-yes">1x</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-yes">1x</span>
967
- <span class="cline-any cline-yes">1x</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-yes">1x</span>
972
- <span class="cline-any cline-yes">1x</span>
973
- <span class="cline-any cline-yes">1x</span>
974
- <span class="cline-any cline-yes">1x</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-yes">1x</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-no">&nbsp;</span>
981
- <span class="cline-any cline-no">&nbsp;</span>
982
- <span class="cline-any cline-no">&nbsp;</span>
983
- <span class="cline-any cline-no">&nbsp;</span>
984
- <span class="cline-any cline-no">&nbsp;</span>
985
- <span class="cline-any cline-no">&nbsp;</span>
986
- <span class="cline-any cline-no">&nbsp;</span>
987
- <span class="cline-any cline-no">&nbsp;</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-no">&nbsp;</span>
991
- <span class="cline-any cline-no">&nbsp;</span>
992
- <span class="cline-any cline-no">&nbsp;</span>
993
- <span class="cline-any cline-no">&nbsp;</span>
994
- <span class="cline-any cline-no">&nbsp;</span>
995
- <span class="cline-any cline-no">&nbsp;</span>
996
- <span class="cline-any cline-no">&nbsp;</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-no">&nbsp;</span>
999
- <span class="cline-any cline-no">&nbsp;</span>
1000
- <span class="cline-any cline-no">&nbsp;</span>
1001
- <span class="cline-any cline-neutral">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-no">&nbsp;</span>
1008
- <span class="cline-any cline-no">&nbsp;</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-no">&nbsp;</span>
1011
- <span class="cline-any cline-no">&nbsp;</span>
1012
- <span class="cline-any cline-neutral">&nbsp;</span>
1013
- <span class="cline-any cline-no">&nbsp;</span>
1014
- <span class="cline-any cline-no">&nbsp;</span>
1015
- <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-no">&nbsp;</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-no">&nbsp;</span>
1020
- <span class="cline-any cline-no">&nbsp;</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-no">&nbsp;</span>
1023
- <span class="cline-any cline-no">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-no">&nbsp;</span>
1026
- <span class="cline-any cline-no">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-no">&nbsp;</span>
1029
- <span class="cline-any cline-no">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-no">&nbsp;</span>
1032
- <span class="cline-any cline-no">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-no">&nbsp;</span>
1035
- <span class="cline-any cline-no">&nbsp;</span>
1036
- <span class="cline-any cline-no">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-no">&nbsp;</span>
1039
- <span class="cline-any cline-no">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-no">&nbsp;</span>
1042
- <span class="cline-any cline-no">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-no">&nbsp;</span>
1045
- <span class="cline-any cline-no">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-no">&nbsp;</span>
1048
- <span class="cline-any cline-no">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-no">&nbsp;</span>
1051
- <span class="cline-any cline-no">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-no">&nbsp;</span>
1054
- <span class="cline-any cline-no">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-no">&nbsp;</span>
1057
- <span class="cline-any cline-no">&nbsp;</span>
1058
- <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-no">&nbsp;</span>
1060
- <span class="cline-any cline-no">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-no">&nbsp;</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-no">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-no">&nbsp;</span>
1071
- <span class="cline-any cline-no">&nbsp;</span>
1072
- <span class="cline-any cline-neutral">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-no">&nbsp;</span>
1075
- <span class="cline-any cline-no">&nbsp;</span>
1076
- <span class="cline-any cline-no">&nbsp;</span>
1077
- <span class="cline-any cline-neutral">&nbsp;</span>
1078
- <span class="cline-any cline-no">&nbsp;</span>
1079
- <span class="cline-any cline-no">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-no">&nbsp;</span>
1082
- <span class="cline-any cline-no">&nbsp;</span>
1083
- <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-yes">1x</span>
1088
- <span class="cline-any cline-yes">1x</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-yes">1x</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-no">&nbsp;</span>
1093
- <span class="cline-any cline-no">&nbsp;</span>
1094
- <span class="cline-any cline-no">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-no">&nbsp;</span>
1097
- <span class="cline-any cline-no">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-no">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-no">&nbsp;</span>
1108
- <span class="cline-any cline-no">&nbsp;</span>
1109
- <span class="cline-any cline-no">&nbsp;</span>
1110
- <span class="cline-any cline-no">&nbsp;</span>
1111
- <span class="cline-any cline-no">&nbsp;</span>
1112
- <span class="cline-any cline-no">&nbsp;</span>
1113
- <span class="cline-any cline-no">&nbsp;</span>
1114
- <span class="cline-any cline-no">&nbsp;</span>
1115
- <span class="cline-any cline-no">&nbsp;</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-no">&nbsp;</span>
1119
- <span class="cline-any cline-no">&nbsp;</span>
1120
- <span class="cline-any cline-no">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-no">&nbsp;</span>
1123
- <span class="cline-any cline-no">&nbsp;</span>
1124
- <span class="cline-any cline-no">&nbsp;</span>
1125
- <span class="cline-any cline-no">&nbsp;</span>
1126
- <span class="cline-any cline-no">&nbsp;</span>
1127
- <span class="cline-any cline-no">&nbsp;</span>
1128
- <span class="cline-any cline-no">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-no">&nbsp;</span>
1132
- <span class="cline-any cline-no">&nbsp;</span>
1133
- <span class="cline-any cline-no">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-no">&nbsp;</span>
1137
- <span class="cline-any cline-no">&nbsp;</span>
1138
- <span class="cline-any cline-no">&nbsp;</span>
1139
- <span class="cline-any cline-no">&nbsp;</span>
1140
- <span class="cline-any cline-no">&nbsp;</span>
1141
- <span class="cline-any cline-no">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-no">&nbsp;</span>
1145
- <span class="cline-any cline-no">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-neutral">&nbsp;</span>
1152
- <span class="cline-any cline-no">&nbsp;</span>
1153
- <span class="cline-any cline-no">&nbsp;</span>
1154
- <span class="cline-any cline-no">&nbsp;</span>
1155
- <span class="cline-any cline-no">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-no">&nbsp;</span>
1158
- <span class="cline-any cline-no">&nbsp;</span>
1159
- <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-no">&nbsp;</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-no">&nbsp;</span>
1164
- <span class="cline-any cline-no">&nbsp;</span>
1165
- <span class="cline-any cline-no">&nbsp;</span>
1166
- <span class="cline-any cline-no">&nbsp;</span>
1167
- <span class="cline-any cline-no">&nbsp;</span>
1168
- <span class="cline-any cline-no">&nbsp;</span>
1169
- <span class="cline-any cline-no">&nbsp;</span>
1170
- <span class="cline-any cline-no">&nbsp;</span>
1171
- <span class="cline-any cline-neutral">&nbsp;</span>
1172
- <span class="cline-any cline-no">&nbsp;</span>
1173
- <span class="cline-any cline-no">&nbsp;</span>
1174
- <span class="cline-any cline-no">&nbsp;</span>
1175
- <span class="cline-any cline-no">&nbsp;</span>
1176
- <span class="cline-any cline-no">&nbsp;</span>
1177
- <span class="cline-any cline-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-no">&nbsp;</span>
1180
- <span class="cline-any cline-no">&nbsp;</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-neutral">&nbsp;</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-no">&nbsp;</span>
1185
- <span class="cline-any cline-no">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-no">&nbsp;</span>
1189
- <span class="cline-any cline-no">&nbsp;</span>
1190
- <span class="cline-any cline-no">&nbsp;</span>
1191
- <span class="cline-any cline-no">&nbsp;</span>
1192
- <span class="cline-any cline-no">&nbsp;</span>
1193
- <span class="cline-any cline-neutral">&nbsp;</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-no">&nbsp;</span>
1196
- <span class="cline-any cline-no">&nbsp;</span>
1197
- <span class="cline-any cline-no">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-no">&nbsp;</span>
1201
- <span class="cline-any cline-no">&nbsp;</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-no">&nbsp;</span>
1204
- <span class="cline-any cline-no">&nbsp;</span>
1205
- <span class="cline-any cline-no">&nbsp;</span>
1206
- <span class="cline-any cline-no">&nbsp;</span>
1207
- <span class="cline-any cline-no">&nbsp;</span>
1208
- <span class="cline-any cline-no">&nbsp;</span>
1209
- <span class="cline-any cline-neutral">&nbsp;</span>
1210
- <span class="cline-any cline-neutral">&nbsp;</span>
1211
- <span class="cline-any cline-no">&nbsp;</span>
1212
- <span class="cline-any cline-no">&nbsp;</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-no">&nbsp;</span>
1216
- <span class="cline-any cline-no">&nbsp;</span>
1217
- <span class="cline-any cline-no">&nbsp;</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-no">&nbsp;</span>
1220
- <span class="cline-any cline-no">&nbsp;</span>
1221
- <span class="cline-any cline-no">&nbsp;</span>
1222
- <span class="cline-any cline-no">&nbsp;</span>
1223
- <span class="cline-any cline-no">&nbsp;</span>
1224
- <span class="cline-any cline-no">&nbsp;</span>
1225
- <span class="cline-any cline-neutral">&nbsp;</span>
1226
- <span class="cline-any cline-neutral">&nbsp;</span>
1227
- <span class="cline-any cline-neutral">&nbsp;</span>
1228
- <span class="cline-any cline-neutral">&nbsp;</span>
1229
- <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-neutral">&nbsp;</span>
1231
- <span class="cline-any cline-neutral">&nbsp;</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-neutral">&nbsp;</span>
1236
- <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-neutral">&nbsp;</span>
1239
- <span class="cline-any cline-neutral">&nbsp;</span>
1240
- <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-no">&nbsp;</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-no">&nbsp;</span>
1244
- <span class="cline-any cline-no">&nbsp;</span>
1245
- <span class="cline-any cline-no">&nbsp;</span>
1246
- <span class="cline-any cline-no">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-no">&nbsp;</span>
1249
- <span class="cline-any cline-no">&nbsp;</span>
1250
- <span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-no">&nbsp;</span>
1253
- <span class="cline-any cline-no">&nbsp;</span>
1254
- <span class="cline-any cline-no">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-no">&nbsp;</span>
1257
- <span class="cline-any cline-no">&nbsp;</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-no">&nbsp;</span>
1260
- <span class="cline-any cline-neutral">&nbsp;</span>
1261
- <span class="cline-any cline-no">&nbsp;</span>
1262
- <span class="cline-any cline-no">&nbsp;</span>
1263
- <span class="cline-any cline-no">&nbsp;</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-neutral">&nbsp;</span>
1266
- <span class="cline-any cline-no">&nbsp;</span>
1267
- <span class="cline-any cline-neutral">&nbsp;</span>
1268
- <span class="cline-any cline-no">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-no">&nbsp;</span>
1271
- <span class="cline-any cline-no">&nbsp;</span>
1272
- <span class="cline-any cline-no">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-no">&nbsp;</span>
1276
- <span class="cline-any cline-no">&nbsp;</span>
1277
- <span class="cline-any cline-no">&nbsp;</span>
1278
- <span class="cline-any cline-no">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-no">&nbsp;</span>
1281
- <span class="cline-any cline-no">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-neutral">&nbsp;</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-no">&nbsp;</span>
1286
- <span class="cline-any cline-no">&nbsp;</span>
1287
- <span class="cline-any cline-neutral">&nbsp;</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-no">&nbsp;</span>
1291
- <span class="cline-any cline-no">&nbsp;</span>
1292
- <span class="cline-any cline-no">&nbsp;</span>
1293
- <span class="cline-any cline-no">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-neutral">&nbsp;</span>
1299
- <span class="cline-any cline-no">&nbsp;</span>
1300
- <span class="cline-any cline-no">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-neutral">&nbsp;</span>
1304
- <span class="cline-any cline-neutral">&nbsp;</span>
1305
- <span class="cline-any cline-neutral">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-no">&nbsp;</span>
1309
- <span class="cline-any cline-neutral">&nbsp;</span>
1310
- <span class="cline-any cline-neutral">&nbsp;</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-neutral">&nbsp;</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-neutral">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-no">&nbsp;</span>
1319
- <span class="cline-any cline-no">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-neutral">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-no">&nbsp;</span>
1326
- <span class="cline-any cline-neutral">&nbsp;</span>
1327
- <span class="cline-any cline-neutral">&nbsp;</span>
1328
- <span class="cline-any cline-no">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-no">&nbsp;</span>
1333
- <span class="cline-any cline-neutral">&nbsp;</span>
1334
- <span class="cline-any cline-no">&nbsp;</span>
1335
- <span class="cline-any cline-no">&nbsp;</span>
1336
- <span class="cline-any cline-no">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-no">&nbsp;</span>
1339
- <span class="cline-any cline-neutral">&nbsp;</span>
1340
- <span class="cline-any cline-no">&nbsp;</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-no">&nbsp;</span>
1343
- <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-no">&nbsp;</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-no">&nbsp;</span>
1349
- <span class="cline-any cline-no">&nbsp;</span>
1350
- <span class="cline-any cline-no">&nbsp;</span>
1351
- <span class="cline-any cline-no">&nbsp;</span>
1352
- <span class="cline-any cline-neutral">&nbsp;</span>
1353
- <span class="cline-any cline-no">&nbsp;</span>
1354
- <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-no">&nbsp;</span>
1356
- <span class="cline-any cline-neutral">&nbsp;</span>
1357
- <span class="cline-any cline-neutral">&nbsp;</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-neutral">&nbsp;</span>
1360
- <span class="cline-any cline-neutral">&nbsp;</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-yes">1x</span>
1369
- <span class="cline-any cline-yes">1x</span>
1370
- <span class="cline-any cline-yes">1x</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</span>
1372
- <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-neutral">&nbsp;</span>
1374
- <span class="cline-any cline-neutral">&nbsp;</span>
1375
- <span class="cline-any cline-neutral">&nbsp;</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-yes">1x</span>
1381
- <span class="cline-any cline-yes">1x</span>
1382
- <span class="cline-any cline-yes">1x</span>
1383
- <span class="cline-any cline-yes">1x</span>
1384
- <span class="cline-any cline-yes">1x</span>
1385
- <span class="cline-any cline-neutral">&nbsp;</span>
1386
- <span class="cline-any cline-neutral">&nbsp;</span>
1387
- <span class="cline-any cline-no">&nbsp;</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-no">&nbsp;</span>
1390
- <span class="cline-any cline-no">&nbsp;</span>
1391
- <span class="cline-any cline-no">&nbsp;</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-no">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-neutral">&nbsp;</span>
1398
- <span class="cline-any cline-no">&nbsp;</span>
1399
- <span class="cline-any cline-no">&nbsp;</span>
1400
- <span class="cline-any cline-no">&nbsp;</span>
1401
- <span class="cline-any cline-no">&nbsp;</span>
1402
- <span class="cline-any cline-neutral">&nbsp;</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-neutral">&nbsp;</span>
1405
- <span class="cline-any cline-no">&nbsp;</span>
1406
- <span class="cline-any cline-no">&nbsp;</span>
1407
- <span class="cline-any cline-no">&nbsp;</span>
1408
- <span class="cline-any cline-no">&nbsp;</span>
1409
- <span class="cline-any cline-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-no">&nbsp;</span>
1411
- <span class="cline-any cline-no">&nbsp;</span>
1412
- <span class="cline-any cline-no">&nbsp;</span>
1413
- <span class="cline-any cline-no">&nbsp;</span>
1414
- <span class="cline-any cline-neutral">&nbsp;</span>
1415
- <span class="cline-any cline-no">&nbsp;</span>
1416
- <span class="cline-any cline-no">&nbsp;</span>
1417
- <span class="cline-any cline-no">&nbsp;</span>
1418
- <span class="cline-any cline-no">&nbsp;</span>
1419
- <span class="cline-any cline-no">&nbsp;</span>
1420
- <span class="cline-any cline-no">&nbsp;</span>
1421
- <span class="cline-any cline-neutral">&nbsp;</span>
1422
- <span class="cline-any cline-neutral">&nbsp;</span>
1423
- <span class="cline-any cline-no">&nbsp;</span>
1424
- <span class="cline-any cline-no">&nbsp;</span>
1425
- <span class="cline-any cline-no">&nbsp;</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-no">&nbsp;</span>
1429
- <span class="cline-any cline-no">&nbsp;</span>
1430
- <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-neutral">&nbsp;</span>
1433
- <span class="cline-any cline-neutral">&nbsp;</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-no">&nbsp;</span>
1436
- <span class="cline-any cline-no">&nbsp;</span>
1437
- <span class="cline-any cline-no">&nbsp;</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-no">&nbsp;</span>
1440
- <span class="cline-any cline-neutral">&nbsp;</span>
1441
- <span class="cline-any cline-no">&nbsp;</span>
1442
- <span class="cline-any cline-no">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-no">&nbsp;</span>
1445
- <span class="cline-any cline-neutral">&nbsp;</span>
1446
- <span class="cline-any cline-no">&nbsp;</span>
1447
- <span class="cline-any cline-neutral">&nbsp;</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-no">&nbsp;</span>
1450
- <span class="cline-any cline-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-no">&nbsp;</span>
1452
- <span class="cline-any cline-neutral">&nbsp;</span>
1453
- <span class="cline-any cline-neutral">&nbsp;</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-no">&nbsp;</span>
1456
- <span class="cline-any cline-no">&nbsp;</span>
1457
- <span class="cline-any cline-neutral">&nbsp;</span>
1458
- <span class="cline-any cline-no">&nbsp;</span>
1459
- <span class="cline-any cline-no">&nbsp;</span>
1460
- <span class="cline-any cline-no">&nbsp;</span>
1461
- <span class="cline-any cline-no">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-neutral">&nbsp;</span>
1465
- <span class="cline-any cline-no">&nbsp;</span>
1466
- <span class="cline-any cline-neutral">&nbsp;</span>
1467
- <span class="cline-any cline-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-no">&nbsp;</span>
1469
- <span class="cline-any cline-neutral">&nbsp;</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-no">&nbsp;</span>
1472
- <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-neutral">&nbsp;</span>
1475
- <span class="cline-any cline-neutral">&nbsp;</span>
1476
- <span class="cline-any cline-neutral">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-neutral">&nbsp;</span>
1479
- <span class="cline-any cline-no">&nbsp;</span>
1480
- <span class="cline-any cline-neutral">&nbsp;</span>
1481
- <span class="cline-any cline-no">&nbsp;</span>
1482
- <span class="cline-any cline-no">&nbsp;</span>
1483
- <span class="cline-any cline-neutral">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-neutral">&nbsp;</span>
1486
- <span class="cline-any cline-no">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-no">&nbsp;</span>
1489
- <span class="cline-any cline-no">&nbsp;</span>
1490
- <span class="cline-any cline-no">&nbsp;</span>
1491
- <span class="cline-any cline-neutral">&nbsp;</span>
1492
- <span class="cline-any cline-no">&nbsp;</span>
1493
- <span class="cline-any cline-no">&nbsp;</span>
1494
- <span class="cline-any cline-no">&nbsp;</span>
1495
- <span class="cline-any cline-neutral">&nbsp;</span>
1496
- <span class="cline-any cline-neutral">&nbsp;</span>
1497
- <span class="cline-any cline-neutral">&nbsp;</span>
1498
- <span class="cline-any cline-neutral">&nbsp;</span>
1499
- <span class="cline-any cline-yes">1x</span>
1500
- <span class="cline-any cline-neutral">&nbsp;</span>
1501
- <span class="cline-any cline-no">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-neutral">&nbsp;</span>
1504
- <span class="cline-any cline-neutral">&nbsp;</span>
1505
- <span class="cline-any cline-no">&nbsp;</span>
1506
- <span class="cline-any cline-no">&nbsp;</span>
1507
- <span class="cline-any cline-no">&nbsp;</span>
1508
- <span class="cline-any cline-no">&nbsp;</span>
1509
- <span class="cline-any cline-no">&nbsp;</span>
1510
- <span class="cline-any cline-no">&nbsp;</span>
1511
- <span class="cline-any cline-no">&nbsp;</span>
1512
- <span class="cline-any cline-no">&nbsp;</span>
1513
- <span class="cline-any cline-no">&nbsp;</span>
1514
- <span class="cline-any cline-neutral">&nbsp;</span>
1515
- <span class="cline-any cline-neutral">&nbsp;</span>
1516
- <span class="cline-any cline-no">&nbsp;</span>
1517
- <span class="cline-any cline-no">&nbsp;</span>
1518
- <span class="cline-any cline-no">&nbsp;</span>
1519
- <span class="cline-any cline-neutral">&nbsp;</span>
1520
- <span class="cline-any cline-neutral">&nbsp;</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-neutral">&nbsp;</span>
1523
- <span class="cline-any cline-neutral">&nbsp;</span>
1524
- <span class="cline-any cline-neutral">&nbsp;</span>
1525
- <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-neutral">&nbsp;</span>
1527
- <span class="cline-any cline-neutral">&nbsp;</span>
1528
- <span class="cline-any cline-no">&nbsp;</span>
1529
- <span class="cline-any cline-neutral">&nbsp;</span>
1530
- <span class="cline-any cline-no">&nbsp;</span>
1531
- <span class="cline-any cline-neutral">&nbsp;</span>
1532
- <span class="cline-any cline-neutral">&nbsp;</span>
1533
- <span class="cline-any cline-no">&nbsp;</span>
1534
- <span class="cline-any cline-neutral">&nbsp;</span>
1535
- <span class="cline-any cline-no">&nbsp;</span>
1536
- <span class="cline-any cline-no">&nbsp;</span>
1537
- <span class="cline-any cline-no">&nbsp;</span>
1538
- <span class="cline-any cline-neutral">&nbsp;</span>
1539
- <span class="cline-any cline-neutral">&nbsp;</span>
1540
- <span class="cline-any cline-no">&nbsp;</span>
1541
- <span class="cline-any cline-no">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-neutral">&nbsp;</span>
1544
- <span class="cline-any cline-neutral">&nbsp;</span>
1545
- <span class="cline-any cline-no">&nbsp;</span>
1546
- <span class="cline-any cline-no">&nbsp;</span>
1547
- <span class="cline-any cline-neutral">&nbsp;</span>
1548
- <span class="cline-any cline-neutral">&nbsp;</span>
1549
- <span class="cline-any cline-neutral">&nbsp;</span>
1550
- <span class="cline-any cline-neutral">&nbsp;</span>
1551
- <span class="cline-any cline-neutral">&nbsp;</span>
1552
- <span class="cline-any cline-neutral">&nbsp;</span>
1553
- <span class="cline-any cline-neutral">&nbsp;</span>
1554
- <span class="cline-any cline-neutral">&nbsp;</span>
1555
- <span class="cline-any cline-neutral">&nbsp;</span>
1556
- <span class="cline-any cline-neutral">&nbsp;</span>
1557
- <span class="cline-any cline-neutral">&nbsp;</span>
1558
- <span class="cline-any cline-neutral">&nbsp;</span>
1559
- <span class="cline-any cline-neutral">&nbsp;</span>
1560
- <span class="cline-any cline-neutral">&nbsp;</span>
1561
- <span class="cline-any cline-neutral">&nbsp;</span>
1562
- <span class="cline-any cline-yes">1x</span>
1563
- <span class="cline-any cline-no">&nbsp;</span>
1564
- <span class="cline-any cline-no">&nbsp;</span>
1565
- <span class="cline-any cline-no">&nbsp;</span>
1566
- <span class="cline-any cline-no">&nbsp;</span>
1567
- <span class="cline-any cline-no">&nbsp;</span>
1568
- <span class="cline-any cline-no">&nbsp;</span>
1569
- <span class="cline-any cline-neutral">&nbsp;</span>
1570
- <span class="cline-any cline-no">&nbsp;</span>
1571
- <span class="cline-any cline-no">&nbsp;</span>
1572
- <span class="cline-any cline-no">&nbsp;</span>
1573
- <span class="cline-any cline-neutral">&nbsp;</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-no">&nbsp;</span>
1576
- <span class="cline-any cline-no">&nbsp;</span>
1577
- <span class="cline-any cline-no">&nbsp;</span>
1578
- <span class="cline-any cline-neutral">&nbsp;</span>
1579
- <span class="cline-any cline-neutral">&nbsp;</span>
1580
- <span class="cline-any cline-neutral">&nbsp;</span>
1581
- <span class="cline-any cline-neutral">&nbsp;</span>
1582
- <span class="cline-any cline-neutral">&nbsp;</span>
1583
- <span class="cline-any cline-no">&nbsp;</span>
1584
- <span class="cline-any cline-no">&nbsp;</span>
1585
- <span class="cline-any cline-no">&nbsp;</span>
1586
- <span class="cline-any cline-no">&nbsp;</span>
1587
- <span class="cline-any cline-neutral">&nbsp;</span>
1588
- <span class="cline-any cline-no">&nbsp;</span>
1589
- <span class="cline-any cline-no">&nbsp;</span>
1590
- <span class="cline-any cline-neutral">&nbsp;</span>
1591
- <span class="cline-any cline-no">&nbsp;</span>
1592
- <span class="cline-any cline-no">&nbsp;</span>
1593
- <span class="cline-any cline-no">&nbsp;</span>
1594
- <span class="cline-any cline-no">&nbsp;</span>
1595
- <span class="cline-any cline-neutral">&nbsp;</span>
1596
- <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-neutral">&nbsp;</span>
1598
- <span class="cline-any cline-neutral">&nbsp;</span>
1599
- <span class="cline-any cline-neutral">&nbsp;</span>
1600
- <span class="cline-any cline-neutral">&nbsp;</span>
1601
- <span class="cline-any cline-no">&nbsp;</span>
1602
- <span class="cline-any cline-no">&nbsp;</span>
1603
- <span class="cline-any cline-no">&nbsp;</span>
1604
- <span class="cline-any cline-neutral">&nbsp;</span>
1605
- <span class="cline-any cline-no">&nbsp;</span>
1606
- <span class="cline-any cline-neutral">&nbsp;</span>
1607
- <span class="cline-any cline-neutral">&nbsp;</span>
1608
- <span class="cline-any cline-neutral">&nbsp;</span>
1609
- <span class="cline-any cline-neutral">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-no">&nbsp;</span>
1612
- <span class="cline-any cline-no">&nbsp;</span>
1613
- <span class="cline-any cline-no">&nbsp;</span>
1614
- <span class="cline-any cline-no">&nbsp;</span>
1615
- <span class="cline-any cline-no">&nbsp;</span>
1616
- <span class="cline-any cline-no">&nbsp;</span>
1617
- <span class="cline-any cline-neutral">&nbsp;</span>
1618
- <span class="cline-any cline-neutral">&nbsp;</span>
1619
- <span class="cline-any cline-no">&nbsp;</span>
1620
- <span class="cline-any cline-no">&nbsp;</span>
1621
- <span class="cline-any cline-no">&nbsp;</span>
1622
- <span class="cline-any cline-no">&nbsp;</span>
1623
- <span class="cline-any cline-no">&nbsp;</span>
1624
- <span class="cline-any cline-no">&nbsp;</span>
1625
- <span class="cline-any cline-no">&nbsp;</span>
1626
- <span class="cline-any cline-no">&nbsp;</span>
1627
- <span class="cline-any cline-no">&nbsp;</span>
1628
- <span class="cline-any cline-no">&nbsp;</span>
1629
- <span class="cline-any cline-neutral">&nbsp;</span>
1630
- <span class="cline-any cline-neutral">&nbsp;</span>
1631
- <span class="cline-any cline-no">&nbsp;</span>
1632
- <span class="cline-any cline-neutral">&nbsp;</span>
1633
- <span class="cline-any cline-neutral">&nbsp;</span>
1634
- <span class="cline-any cline-neutral">&nbsp;</span>
1635
- <span class="cline-any cline-neutral">&nbsp;</span>
1636
- <span class="cline-any cline-neutral">&nbsp;</span>
1637
- <span class="cline-any cline-no">&nbsp;</span>
1638
- <span class="cline-any cline-no">&nbsp;</span>
1639
- <span class="cline-any cline-no">&nbsp;</span>
1640
- <span class="cline-any cline-neutral">&nbsp;</span>
1641
- <span class="cline-any cline-neutral">&nbsp;</span>
1642
- <span class="cline-any cline-neutral">&nbsp;</span>
1643
- <span class="cline-any cline-neutral">&nbsp;</span>
1644
- <span class="cline-any cline-neutral">&nbsp;</span>
1645
- <span class="cline-any cline-neutral">&nbsp;</span>
1646
- <span class="cline-any cline-no">&nbsp;</span>
1647
- <span class="cline-any cline-no">&nbsp;</span>
1648
- <span class="cline-any cline-neutral">&nbsp;</span>
1649
- <span class="cline-any cline-no">&nbsp;</span>
1650
- <span class="cline-any cline-no">&nbsp;</span>
1651
- <span class="cline-any cline-neutral">&nbsp;</span>
1652
- <span class="cline-any cline-neutral">&nbsp;</span>
1653
- <span class="cline-any cline-no">&nbsp;</span>
1654
- <span class="cline-any cline-no">&nbsp;</span>
1655
- <span class="cline-any cline-no">&nbsp;</span>
1656
- <span class="cline-any cline-no">&nbsp;</span>
1657
- <span class="cline-any cline-neutral">&nbsp;</span>
1658
- <span class="cline-any cline-no">&nbsp;</span>
1659
- <span class="cline-any cline-no">&nbsp;</span>
1660
- <span class="cline-any cline-neutral">&nbsp;</span>
1661
- <span class="cline-any cline-no">&nbsp;</span>
1662
- <span class="cline-any cline-no">&nbsp;</span>
1663
- <span class="cline-any cline-neutral">&nbsp;</span>
1664
- <span class="cline-any cline-no">&nbsp;</span>
1665
- <span class="cline-any cline-no">&nbsp;</span>
1666
- <span class="cline-any cline-neutral">&nbsp;</span>
1667
- <span class="cline-any cline-no">&nbsp;</span>
1668
- <span class="cline-any cline-no">&nbsp;</span>
1669
- <span class="cline-any cline-no">&nbsp;</span>
1670
- <span class="cline-any cline-neutral">&nbsp;</span>
1671
- <span class="cline-any cline-no">&nbsp;</span>
1672
- <span class="cline-any cline-neutral">&nbsp;</span>
1673
- <span class="cline-any cline-neutral">&nbsp;</span>
1674
- <span class="cline-any cline-neutral">&nbsp;</span>
1675
- <span class="cline-any cline-neutral">&nbsp;</span>
1676
- <span class="cline-any cline-no">&nbsp;</span>
1677
- <span class="cline-any cline-neutral">&nbsp;</span>
1678
- <span class="cline-any cline-neutral">&nbsp;</span>
1679
- <span class="cline-any cline-neutral">&nbsp;</span>
1680
- <span class="cline-any cline-neutral">&nbsp;</span>
1681
- <span class="cline-any cline-neutral">&nbsp;</span>
1682
- <span class="cline-any cline-neutral">&nbsp;</span>
1683
- <span class="cline-any cline-neutral">&nbsp;</span>
1684
- <span class="cline-any cline-neutral">&nbsp;</span>
1685
- <span class="cline-any cline-neutral">&nbsp;</span>
1686
- <span class="cline-any cline-neutral">&nbsp;</span>
1687
- <span class="cline-any cline-neutral">&nbsp;</span>
1688
- <span class="cline-any cline-neutral">&nbsp;</span>
1689
- <span class="cline-any cline-neutral">&nbsp;</span>
1690
- <span class="cline-any cline-neutral">&nbsp;</span>
1691
- <span class="cline-any cline-neutral">&nbsp;</span>
1692
- <span class="cline-any cline-neutral">&nbsp;</span>
1693
- <span class="cline-any cline-yes">1x</span>
1694
- <span class="cline-any cline-neutral">&nbsp;</span>
1695
- <span class="cline-any cline-no">&nbsp;</span>
1696
- <span class="cline-any cline-no">&nbsp;</span>
1697
- <span class="cline-any cline-no">&nbsp;</span>
1698
- <span class="cline-any cline-neutral">&nbsp;</span>
1699
- <span class="cline-any cline-neutral">&nbsp;</span>
1700
- <span class="cline-any cline-neutral">&nbsp;</span>
1701
- <span class="cline-any cline-neutral">&nbsp;</span>
1702
- <span class="cline-any cline-neutral">&nbsp;</span>
1703
- <span class="cline-any cline-neutral">&nbsp;</span>
1704
- <span class="cline-any cline-neutral">&nbsp;</span>
1705
- <span class="cline-any cline-neutral">&nbsp;</span>
1706
- <span class="cline-any cline-neutral">&nbsp;</span>
1707
- <span class="cline-any cline-neutral">&nbsp;</span>
1708
- <span class="cline-any cline-neutral">&nbsp;</span>
1709
- <span class="cline-any cline-neutral">&nbsp;</span>
1710
- <span class="cline-any cline-neutral">&nbsp;</span>
1711
- <span class="cline-any cline-neutral">&nbsp;</span>
1712
- <span class="cline-any cline-neutral">&nbsp;</span>
1713
- <span class="cline-any cline-neutral">&nbsp;</span>
1714
- <span class="cline-any cline-neutral">&nbsp;</span>
1715
- <span class="cline-any cline-neutral">&nbsp;</span>
1716
- <span class="cline-any cline-neutral">&nbsp;</span>
1717
- <span class="cline-any cline-neutral">&nbsp;</span>
1718
- <span class="cline-any cline-neutral">&nbsp;</span>
1719
- <span class="cline-any cline-no">&nbsp;</span>
1720
- <span class="cline-any cline-neutral">&nbsp;</span>
1721
- <span class="cline-any cline-neutral">&nbsp;</span>
1722
- <span class="cline-any cline-no">&nbsp;</span>
1723
- <span class="cline-any cline-neutral">&nbsp;</span>
1724
- <span class="cline-any cline-no">&nbsp;</span>
1725
- <span class="cline-any cline-no">&nbsp;</span>
1726
- <span class="cline-any cline-neutral">&nbsp;</span>
1727
- <span class="cline-any cline-no">&nbsp;</span>
1728
- <span class="cline-any cline-no">&nbsp;</span>
1729
- <span class="cline-any cline-neutral">&nbsp;</span>
1730
- <span class="cline-any cline-no">&nbsp;</span>
1731
- <span class="cline-any cline-no">&nbsp;</span>
1732
- <span class="cline-any cline-neutral">&nbsp;</span>
1733
- <span class="cline-any cline-no">&nbsp;</span>
1734
- <span class="cline-any cline-no">&nbsp;</span>
1735
- <span class="cline-any cline-neutral">&nbsp;</span>
1736
- <span class="cline-any cline-no">&nbsp;</span>
1737
- <span class="cline-any cline-no">&nbsp;</span>
1738
- <span class="cline-any cline-neutral">&nbsp;</span>
1739
- <span class="cline-any cline-neutral">&nbsp;</span>
1740
- <span class="cline-any cline-neutral">&nbsp;</span>
1741
- <span class="cline-any cline-no">&nbsp;</span>
1742
- <span class="cline-any cline-no">&nbsp;</span>
1743
- <span class="cline-any cline-no">&nbsp;</span>
1744
- <span class="cline-any cline-neutral">&nbsp;</span>
1745
- <span class="cline-any cline-no">&nbsp;</span>
1746
- <span class="cline-any cline-no">&nbsp;</span>
1747
- <span class="cline-any cline-no">&nbsp;</span>
1748
- <span class="cline-any cline-neutral">&nbsp;</span>
1749
- <span class="cline-any cline-neutral">&nbsp;</span>
1750
- <span class="cline-any cline-neutral">&nbsp;</span>
1751
- <span class="cline-any cline-neutral">&nbsp;</span>
1752
- <span class="cline-any cline-neutral">&nbsp;</span>
1753
- <span class="cline-any cline-neutral">&nbsp;</span>
1754
- <span class="cline-any cline-neutral">&nbsp;</span>
1755
- <span class="cline-any cline-neutral">&nbsp;</span>
1756
- <span class="cline-any cline-neutral">&nbsp;</span>
1757
- <span class="cline-any cline-neutral">&nbsp;</span>
1758
- <span class="cline-any cline-neutral">&nbsp;</span>
1759
- <span class="cline-any cline-neutral">&nbsp;</span>
1760
- <span class="cline-any cline-neutral">&nbsp;</span>
1761
- <span class="cline-any cline-neutral">&nbsp;</span>
1762
- <span class="cline-any cline-neutral">&nbsp;</span>
1763
- <span class="cline-any cline-neutral">&nbsp;</span>
1764
- <span class="cline-any cline-neutral">&nbsp;</span>
1765
- <span class="cline-any cline-neutral">&nbsp;</span>
1766
- <span class="cline-any cline-neutral">&nbsp;</span>
1767
- <span class="cline-any cline-no">&nbsp;</span>
1768
- <span class="cline-any cline-no">&nbsp;</span>
1769
- <span class="cline-any cline-neutral">&nbsp;</span>
1770
- <span class="cline-any cline-neutral">&nbsp;</span>
1771
- <span class="cline-any cline-no">&nbsp;</span>
1772
- <span class="cline-any cline-no">&nbsp;</span>
1773
- <span class="cline-any cline-no">&nbsp;</span>
1774
- <span class="cline-any cline-no">&nbsp;</span>
1775
- <span class="cline-any cline-neutral">&nbsp;</span>
1776
- <span class="cline-any cline-neutral">&nbsp;</span>
1777
- <span class="cline-any cline-neutral">&nbsp;</span>
1778
- <span class="cline-any cline-yes">1x</span>
1779
- <span class="cline-any cline-no">&nbsp;</span>
1780
- <span class="cline-any cline-no">&nbsp;</span>
1781
- <span class="cline-any cline-neutral">&nbsp;</span>
1782
- <span class="cline-any cline-no">&nbsp;</span>
1783
- <span class="cline-any cline-no">&nbsp;</span>
1784
- <span class="cline-any cline-no">&nbsp;</span>
1785
- <span class="cline-any cline-no">&nbsp;</span>
1786
- <span class="cline-any cline-no">&nbsp;</span>
1787
- <span class="cline-any cline-no">&nbsp;</span>
1788
- <span class="cline-any cline-no">&nbsp;</span>
1789
- <span class="cline-any cline-neutral">&nbsp;</span>
1790
- <span class="cline-any cline-neutral">&nbsp;</span>
1791
- <span class="cline-any cline-neutral">&nbsp;</span>
1792
- <span class="cline-any cline-no">&nbsp;</span>
1793
- <span class="cline-any cline-no">&nbsp;</span>
1794
- <span class="cline-any cline-no">&nbsp;</span>
1795
- <span class="cline-any cline-neutral">&nbsp;</span>
1796
- <span class="cline-any cline-neutral">&nbsp;</span>
1797
- <span class="cline-any cline-neutral">&nbsp;</span>
1798
- <span class="cline-any cline-neutral">&nbsp;</span>
1799
- <span class="cline-any cline-no">&nbsp;</span>
1800
- <span class="cline-any cline-no">&nbsp;</span>
1801
- <span class="cline-any cline-no">&nbsp;</span>
1802
- <span class="cline-any cline-no">&nbsp;</span>
1803
- <span class="cline-any cline-no">&nbsp;</span>
1804
- <span class="cline-any cline-no">&nbsp;</span>
1805
- <span class="cline-any cline-no">&nbsp;</span>
1806
- <span class="cline-any cline-no">&nbsp;</span>
1807
- <span class="cline-any cline-neutral">&nbsp;</span>
1808
- <span class="cline-any cline-no">&nbsp;</span>
1809
- <span class="cline-any cline-no">&nbsp;</span>
1810
- <span class="cline-any cline-no">&nbsp;</span>
1811
- <span class="cline-any cline-no">&nbsp;</span>
1812
- <span class="cline-any cline-no">&nbsp;</span>
1813
- <span class="cline-any cline-no">&nbsp;</span>
1814
- <span class="cline-any cline-no">&nbsp;</span>
1815
- <span class="cline-any cline-no">&nbsp;</span>
1816
- <span class="cline-any cline-neutral">&nbsp;</span>
1817
- <span class="cline-any cline-neutral">&nbsp;</span>
1818
- <span class="cline-any cline-neutral">&nbsp;</span>
1819
- <span class="cline-any cline-neutral">&nbsp;</span>
1820
- <span class="cline-any cline-no">&nbsp;</span>
1821
- <span class="cline-any cline-neutral">&nbsp;</span>
1822
- <span class="cline-any cline-neutral">&nbsp;</span>
1823
- <span class="cline-any cline-neutral">&nbsp;</span>
1824
- <span class="cline-any cline-neutral">&nbsp;</span>
1825
- <span class="cline-any cline-neutral">&nbsp;</span>
1826
- <span class="cline-any cline-neutral">&nbsp;</span>
1827
- <span class="cline-any cline-no">&nbsp;</span>
1828
- <span class="cline-any cline-neutral">&nbsp;</span>
1829
- <span class="cline-any cline-neutral">&nbsp;</span>
1830
- <span class="cline-any cline-neutral">&nbsp;</span>
1831
- <span class="cline-any cline-no">&nbsp;</span>
1832
- <span class="cline-any cline-no">&nbsp;</span>
1833
- <span class="cline-any cline-no">&nbsp;</span>
1834
- <span class="cline-any cline-neutral">&nbsp;</span>
1835
- <span class="cline-any cline-neutral">&nbsp;</span>
1836
- <span class="cline-any cline-neutral">&nbsp;</span>
1837
- <span class="cline-any cline-neutral">&nbsp;</span>
1838
- <span class="cline-any cline-neutral">&nbsp;</span>
1839
- <span class="cline-any cline-neutral">&nbsp;</span>
1840
- <span class="cline-any cline-neutral">&nbsp;</span>
1841
- <span class="cline-any cline-neutral">&nbsp;</span>
1842
- <span class="cline-any cline-yes">1x</span>
1843
- <span class="cline-any cline-no">&nbsp;</span>
1844
- <span class="cline-any cline-no">&nbsp;</span>
1845
- <span class="cline-any cline-no">&nbsp;</span>
1846
- <span class="cline-any cline-no">&nbsp;</span>
1847
- <span class="cline-any cline-neutral">&nbsp;</span>
1848
- <span class="cline-any cline-neutral">&nbsp;</span>
1849
- <span class="cline-any cline-neutral">&nbsp;</span>
1850
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { App, LogicItem, Logic, Module, View, ViewElement, Argument, SelectMembers, SynatxNode, BindDirective, CallLogic } from '../../concepts';
1851
- import { addBreakpointNodesFromApp } from '../../breakpoint';
1852
- import { getConceptConstructor } from '../../decorators';
1853
- import { config } from '../../config';
1854
- import storageService from './service';
1855
- import { v4 as uuidv4 } from 'uuid';
1856
- import stepRecorder from '../../manager/stepRecorder';
1857
- /// #if !process.env.NODE_ENV || process.env.BUILD_TARGET === 'node'
1858
- import * as fs from 'fs-extra';
1859
- import * as jsoner from './jsoner';
1860
- import type { NaslServer } from 'src/server/naslServer';
1861
- /// #endif
1862
- &nbsp;
1863
- &nbsp;
1864
- &nbsp;
1865
- export const batchQuery = storageService.batchQuery;
1866
- export const batchAction = storageService.batchAction;
1867
- export const batchInstruct = storageService.batchInstruct;
1868
- export const breakpoint = storageService.breakpoint;
1869
- &nbsp;
1870
- let tabTimestamp: string;
1871
- export co<span class="fstat-no" title="function not covered" >nst datab</span>aseTypes = storageService.databaseTypes;
1872
- <span class="cstat-no" title="statement not covered" ></span>
1873
- func<span class="cstat-no" title="statement not covered" >tion getLogic(key: string</span>, app: any, diffLogicList: string[]) {
1874
- if<span class="cstat-no" title="statement not covered" > (!diffLogicList.includes(key)) {</span>
1875
- diffLogicList.pu<span class="cstat-no" title="statement not covered" >sh(key);</span>
1876
- if (key.startsW<span class="cstat-no" title="statement not covered" >ith('app')) {</span>
1877
- const index = <span class="cstat-no" title="statement not covered" >key.lastIndexOf(<span class="fstat-no" title="function not covered" >'.</span>');<span class="cstat-no" title="statement not covered" ></span></span>
1878
- <span class="cstat-no" title="statement not covered" > const name = key.slice(index + 1);</span>
1879
- co<span class="cstat-no" title="statement not covered" >nst logic = app<span class="fstat-no" title="function not covered" >.l</span>ogics.find((i<span class="cstat-no" title="statement not covered" >tem: any) =&gt; item.name === name);</span></span>
1880
- if (logic &amp;&amp; logic.body &amp;&amp; logic.body.length &gt; 2) {
1881
- log<span class="cstat-no" title="statement not covered" >ic.body.map((item: any) =&gt; getStatement(item, app, diffLogicList));</span>
1882
- }<span class="cstat-no" title="statement not covered" ></span>
1883
- } else if (key.s<span class="cstat-no" title="statement not covered" >tartsWith('e</span>xtensions')) {
1884
- const _pathArr<span class="cstat-no" title="statement not covered" > = key.split</span>('.');
1885
- const _name = <span class="cstat-no" title="statement not covered" >_pathArr[1];</span>
1886
- const _path = _p<span class="cstat-no" title="statement not covered" >athArr[3];<span class="fstat-no" title="function not covered" ></span></span>
1887
- const _list = a<span class="cstat-no" title="statement not covered" >pp.dependencies;</span>
1888
- co<span class="cstat-no" title="statement not covered" >nst _module = _list.fin</span>d((it: Module) =&gt; {
1889
- const name = it.name.replaceAll('-', '_');
1890
- return name <span class="cstat-no" title="statement not covered" >=== _name;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
1891
- <span class="cstat-no" title="statement not covered" > });</span>
1892
- co<span class="cstat-no" title="statement not covered" >nst logic = _mo<span class="fstat-no" title="function not covered" >du</span>le?.logics?.f<span class="cstat-no" title="statement not covered" >ind((item: Logic) =&gt; item.name === _pat</span>h)</span>;
1893
- if (logic &amp;&amp; logic.body &amp;&amp; logic.body.length &gt; 2) {
1894
- logic.body.map((item: any) =&gt; getStatement(item, app, diffLogicList));
1895
- }
1896
- }
1897
- }
1898
- }<span class="fstat-no" title="function not covered" ></span>
1899
- /* 获取LogicITEM */<span class="cstat-no" title="statement not covered" ></span>
1900
- fu<span class="cstat-no" title="statement not covered" >nction getStatement(state: any, app: any, diffLogicList: string[]) {</span>
1901
- let logicItems = [];
1902
- swit<span class="cstat-no" title="statement not covered" >ch (state.concept) {</span>
1903
- ca<span class="cstat-no" title="statement not covered" >se 'Ass</span>ignment':
1904
- logicItems = [state.left, state.right];
1905
- <span class="cstat-no" title="statement not covered" > break;</span>
1906
- ca<span class="cstat-no" title="statement not covered" >se 'IfS</span>tatement':
1907
- logicItems = [...state.consequent, ...state.alternate];
1908
- <span class="cstat-no" title="statement not covered" > break;</span>
1909
- ca<span class="cstat-no" title="statement not covered" >se 'For</span>EachStatement':
1910
- logicItems = [...state.body, state.each, state.start, state.end];
1911
- <span class="cstat-no" title="statement not covered" > break;</span>
1912
- ca<span class="cstat-no" title="statement not covered" >se 'Mat</span>ch':
1913
- logicItems = [state.expression, ...state.cases.map(getStatement).flat(1)];
1914
- <span class="cstat-no" title="statement not covered" > break;</span>
1915
- ca<span class="cstat-no" title="statement not covered" >se 'Mat</span>chCase':
1916
- logicItems = [...state.patterns, ...state.body];
1917
- <span class="cstat-no" title="statement not covered" > break;</span>
1918
- ca<span class="cstat-no" title="statement not covered" >se 'Swi</span>tchStatement':
1919
- logicItems = state.cases.map(getStatement).flat(1);
1920
- <span class="cstat-no" title="statement not covered" > break;</span>
1921
- ca<span class="cstat-no" title="statement not covered" >se 'Swi</span>tchCase':
1922
- logicItems = [state.test, ...state.consequent];
1923
- <span class="cstat-no" title="statement not covered" > break;</span>
1924
- ca<span class="cstat-no" title="statement not covered" >se 'Whi</span>leStatement':
1925
- logicItems = [state.test, ...state.body];
1926
- <span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
1927
- ca<span class="cstat-no" title="statement not covered" >se 'CallLogic':</span>
1928
- <span class="cstat-no" title="statement not covered" > logicIt</span>ems = state.arguments?.map((item: Argument) =&gt; item.expression);
1929
- getLogic(state.calleewholeKey, app, diffLogicList);
1930
- <span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
1931
- ca<span class="cstat-no" title="statement not covered" >se 'Cal</span>lFunction':
1932
- logicItems = state.arguments?.map((item: Argument) =&gt; item.expression);
1933
- <span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
1934
- ca<span class="cstat-no" title="statement not covered" >se 'Cal</span>lInterface':
1935
- logicItems = state.arguments?.map((item: Argument) =&gt; item.expression);
1936
- <span class="cstat-no" title="statement not covered" > break;</span>
1937
- ca<span class="cstat-no" title="statement not covered" >se 'Ext</span>ernalDestination':
1938
- logicItems = [state.anchor, state.link];
1939
- <span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
1940
- ca<span class="cstat-no" title="statement not covered" >se 'Bat</span>chAssignment':
1941
- logicItems = [state.left?.expression, ...state.left?.members, ...state.rights.map((item: SelectMembers) =&gt; [item?.expression, ...item?.members]).flat(1)];
1942
- <span class="cstat-no" title="statement not covered" > break;</span>
1943
- ca<span class="cstat-no" title="statement not covered" >se 'Mem</span>berExpression':
1944
- logicItems = [state.object, state.property];
1945
- <span class="cstat-no" title="statement not covered" > break;</span>
1946
- ca<span class="cstat-no" title="statement not covered" >se 'Str</span>ingInterpolation':
1947
- logicItems = [...state.expressions];
1948
- <span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
1949
- ca<span class="cstat-no" title="statement not covered" >se 'New</span>Composite':
1950
- logicItems = [...state.rights.map((item: SelectMembers) =&gt; item.expression)];
1951
- <span class="cstat-no" title="statement not covered" > break;</span>
1952
- ca<span class="cstat-no" title="statement not covered" >se 'New</span>List':
1953
- logicItems = [...state.items];
1954
- <span class="cstat-no" title="statement not covered" > break;</span>
1955
- default:
1956
- break;
1957
- <span class="cstat-no" title="statement not covered" > }<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
1958
- &nbsp;
1959
- return logicItems.filter((item: LogicItem) =&gt; !!item);
1960
- }
1961
- <span class="fstat-no" title="function not covered" ></span>
1962
- /*<span class="cstat-no" title="statement not covered" > 小程序影响的服务端发布 */</span>
1963
- func<span class="cstat-no" title="statement not covered" >tion getMiniAp</span>pChange(target: any, obj: any, action: string) {
1964
- if (!target.app.miniEnable) {
1965
- return false;
1966
- }<span class="cstat-no" title="statement not covered" ></span>
1967
- <span class="cstat-no" title="statement not covered" > /* 分端以后需要改 */</span>
1968
- co<span class="cstat-no" title="statement not covered" >nst len = targ</span>et.nodePath?.split('.').length;
1969
- if (len &gt; 2) {
1970
- <span class="cstat-no" title="statement not covered" > return false;</span>
1971
- }<span class="cstat-no" title="statement not covered" ></span>
1972
- if (action === 'delete') {
1973
- <span class="cstat-no" title="statement not covered" > return true;</span>
1974
- } el<span class="cstat-no" title="statement not covered" >se {</span>
1975
- if ('name' in obj || 'title' in obj) {
1976
- return true;
1977
- }
1978
- }
1979
- }
1980
- &nbsp;
1981
- let aiExecuted = 0;
1982
- let sessionPath = '';<span class="fstat-no" title="function not covered" ></span>
1983
- // AI 生成内容是否被采纳<span class="cstat-no" title="statement not covered" ></span>
1984
- co<span class="cstat-no" title="statement not covered" >nst handleAIPoint = (app: any, actionItem: any) =&gt; {</span>
1985
- co<span class="cstat-no" title="statement not covered" >nst { actionMsg, action } = actionItem || {};</span>
1986
- if<span class="cstat-no" title="statement not covered" > (aiExecuted &gt; 0)</span> {
1987
- app.emit('logic:accepted', { ...actionItem, sessionPath });
1988
- <span class="cstat-no" title="statement not covered" > aiExecuted -= 1;</span>
1989
- }<span class="cstat-no" title="statement not covered" ></span>
1990
- if (actionMsg.includes('自然语言生成代码') &amp;&amp; !action) {
1991
- <span class="cstat-no" title="statement not covered" > aiExecuted += 1;</span>
1992
- // eslint-disable-next-line prefer-destructuring
1993
- sessionPath = actionMsg.match(/:(.*)/)[1];
1994
- }
1995
- }
1996
- &nbsp;
1997
- /**
1998
- * 执行更新<span class="fstat-no" title="function not covered" ></span>
1999
- */<span class="cstat-no" title="statement not covered" ></span>
2000
- async function doAc<span class="cstat-no" title="statement not covered" >tion(a</span>pp: any, actionItem: any) {
2001
- let hasFrontEnd = false;<span class="cstat-no" title="statement not covered" ></span>
2002
- let hasBackEnd = false;<span class="cstat-no" title="statement not covered" ></span>
2003
- <span class="cstat-no" title="statement not covered" > const actionList: any[] = [];</span>
2004
- const { list, act<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >io</span>nMsg, action } = actionItem || {};</span>
2005
- handleAIPoint<span class="cstat-no" title="statement not covered" >(app, actionItem);</span>
2006
- co<span class="cstat-no" title="statement not covered" >nst itemloop = (_i: LogicItem, app: any, diffArr: string[]) =&gt; {</span>
2007
- co<span class="cstat-no" title="statement not covered" >nst _l <span class="fstat-no" title="function not covered" >= </span>getStatement(_i, a<span class="cstat-no" title="statement not covered" >pp, diffArr);</span></span>
2008
- if (_l.length) {
2009
- _l.map((_ii: LogicItem) =&gt; itemloop(_ii, app, diffArr));
2010
- }<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
2011
- };<span class="cstat-no" title="statement not covered" ></span>
2012
- cons<span class="cstat-no" title="statement not covered" >t loopEle = (view: View <span class="fstat-no" title="function not covered" >| </span>ViewElem<span class="cstat-no" title="statement not covered" >ent, checkAuth: boolean) </span>=&gt;</span> {
2013
- if (view instanceof View) {
2014
- <span class="cstat-no" title="statement not covered" > view?.elements?.forEac<span class="fstat-no" title="function not covered" >h(</span>(item) =<span class="cstat-no" title="statement not covered" >&gt; loopEle(item, checkAuth</span>))</span>;
2015
- <span class="cstat-no" title="statement not covered" > }</span>
2016
- vi<span class="cstat-no" title="statement not covered" >ew?.children?.forEach((item) =&gt; loopEle(item, checkAuth));</span>
2017
- if (view instanceof ViewElemen<span class="cstat-no" title="statement not covered" >t) </span>{
2018
- if<span class="cstat-no" title="statement not covered" > (view.bindEvents.length<span class="fstat-no" title="function not covered" >) </span>{</span>
2019
- co<span class="cstat-no" title="statement not covered" >nst diffArr: string[] = [<span class="fstat-no" title="function not covered" >];</span></span>
2020
- view<span class="cstat-no" title="statement not covered" >.bindEvents.forEach<span class="fstat-no" title="function not covered" >((</span>bindEvent) =&gt;<span class="cstat-no" title="statement not covered" > {</span></span>
2021
- bindEvent.logics.forEach((logic) =&gt; {
2022
- logic.body.forEach((logicItem) =&gt; itemloop(logicItem, app, diffArr));
2023
- });<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
2024
- <span class="cstat-no" title="statement not covered" > });</span>
2025
- co<span class="cstat-no" title="statement not covered" >nst result = diffAr</span>r.filter((item) =&gt; item.startsWith('app') || item.startsWith('extensions'));
2026
- if (result.length) {
2027
- hasBackEnd = true;
2028
- <span class="cstat-no" title="statement not covered" > }</span>
2029
- }<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
2030
- if (view.tag === 'u-uploader<span class="cstat-no" title="statement not covered" >' || view.tag === 'van-uploader') {</span>
2031
- <span class="cstat-no" title="statement not covered" > const bute = view?.bindAttrs.find((item) =&gt; item.name === 'url');</span>
2032
- co<span class="cstat-no" title="statement not covered" >nst needUpdateBackEnd = bute?.value?.endsWith('/import') || bute?.value?.includes('/upload/');</span>
2033
- if (<span class="cstat-no" title="statement not covered" >checkAuth) {</span>
2034
- if (needUpdateBackEnd &amp;&amp; !view.view.parentAuth) {
2035
- hasBackEnd = true;
2036
- <span class="cstat-no" title="statement not covered" > }</span>
2037
- } el<span class="cstat-no" title="statement not covered" >se {</span>
2038
- if (needUpdateBackEnd) {
2039
- hasBackEnd = true;
2040
- }
2041
- }
2042
- }
2043
- }
2044
- };<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
2045
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
2046
- const loopEleAuth = (viewE<span class="cstat-no" title="statement not covered" >lement: ViewElement) =&gt; {</span>
2047
- view<span class="fstat-no" title="function not covered" >El</span>ement?.children?.forEac<span class="cstat-no" title="statement not covered" >h((item: ViewElement)</span> =&gt; {
2048
- const bindDirective = item?.bindDirectives?.find(
2049
- <span class="cstat-no" title="statement not covered" > (item: BindDirective) =&gt; item.name === 'auth'</span>
2050
- )<span class="cstat-no" title="statement not covered" ></span>
2051
- if (bindDirective) {
2052
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
2053
- }
2054
- loopEleAuth(item)
2055
- <span class="cstat-no" title="statement not covered" > })</span>
2056
- }<span class="cstat-no" title="statement not covered" ></span>
2057
- try <span class="cstat-no" title="statement not covered" >{<span class="fstat-no" title="function not covered" ></span></span>
2058
- if (Array.isArray(list)<span class="cstat-no" title="statement not covered" >) {</span>
2059
- list.forEach((event) =&gt; <span class="cstat-no" title="statement not covered" >{</span>
2060
- const emitTarg<span class="cstat-no" title="statement not covered" >et = event?.originEvent?.tar</span>get as SynatxNode;
2061
- <span class="cstat-no" title="statement not covered" > const _path: string = event.originEvent.path;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
2062
- co<span class="cstat-no" title="statement not covered" >nst _root = _path.s</span>plit('.')?.[1] || '';
2063
- if (['backend', 'overriddenLogics', 'dataSources', 'processes', 'roles', 'logics', 'enums', 'structures', 'interfaces', 'interfaceDependencies', 'configuration', 'dependencies', 'authLogics', 'authLogicsForCallInterface', 'triggerLaunchers', 'connections'].some((item) =&gt; _root.startsWith(item))) {
2064
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2065
- }<span class="cstat-no" title="statement not covered" ></span>
2066
- if (<span class="cstat-no" title="statement not covered" >emitTarget) {</span>
2067
- if (<span class="cstat-no" title="statement not covered" >emitTarget.concept === 'App') {</span>
2068
- if<span class="cstat-no" title="statement not covered" > (event?.object?.preferenceMap || event?.originEvent?.object?.preferenceMap) {</span>
2069
- hasBackEnd = true
2070
- hasFrontEnd = true
2071
- <span class="cstat-no" title="statement not covered" > }</span>
2072
- }<span class="cstat-no" title="statement not covered" ></span>
2073
- if (emitTarget.concept === 'ValidationRule') {
2074
- if (
2075
- event?.object?.enableServerValidation ||
2076
- <span class="cstat-no" title="statement not covered" > event?.originEvent?.object?.enableServerValidation</span>
2077
- ) <span class="cstat-no" title="statement not covered" >{</span>
2078
- hasBackEnd = true
2079
- hasFrontEnd = true
2080
- <span class="cstat-no" title="statement not covered" > }</span>
2081
- }<span class="cstat-no" title="statement not covered" ></span>
2082
- if<span class="cstat-no" title="statement not covered" > (emitTarget.concept === 'Logic') {</span>
2083
- co<span class="cstat-no" title="statement not covered" >nst diffArr: string[] = <span class="fstat-no" title="function not covered" >[]</span>;</span>
2084
- if (<span class="cstat-no" title="statement not covered" >emitTarget.body.length &gt; 2) </span>{
2085
- emitTarget.body.forEach((it: LogicItem) =&gt; {
2086
- itemloop(it, app, diffArr);
2087
- });<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
2088
- <span class="cstat-no" title="statement not covered" > }</span>
2089
- co<span class="cstat-no" title="statement not covered" >nst result = diffAr</span>r.filter((item) =&gt; item.startsWith('app') || item.startsWith('extensions'));
2090
- if (result.length) {
2091
- hasBackEnd = true;
2092
- <span class="cstat-no" title="statement not covered" > }</span>
2093
- }<span class="cstat-no" title="statement not covered" ></span>
2094
- if ('view' in emitTarget &amp;&amp; emitTarget.view) {
2095
- <span class="cstat-no" title="statement not covered" > hasFrontEnd = true</span>
2096
- }<span class="cstat-no" title="statement not covered" ></span>
2097
- if<span class="cstat-no" title="statement not covered" > (emitTarget.concept === 'BindDirective') {</span>
2098
- const isDelete = <span class="cstat-no" title="statement not covered" >event?.originEvent?.action === 'delete'</span>
2099
- if<span class="cstat-no" title="statement not covered" > (isDelete) {</span>
2100
- co<span class="cstat-no" title="statement not covered" >nst isAuto = ~event?.originEvent?.path?.indexOf('name=auth')</span>
2101
- if (isAuto) {
2102
- hasBackEnd = true
2103
- <span class="cstat-no" title="statement not covered" > }</span>
2104
- }<span class="cstat-no" title="statement not covered" ></span>
2105
- if (event?.originEvent?.object?.name === 'auth') {
2106
- hasBackEnd = true
2107
- <span class="cstat-no" title="statement not covered" > }</span>
2108
- <span class="cstat-no" title="statement not covered" > }</span>
2109
- if (<span class="cstat-no" title="statement not covered" >emitTarget.concept </span>=== 'View') {
2110
- if (getMiniAppChange(emitTarget, event?.originEvent?.object, event?.originEvent?.action)) {
2111
- hasBackEnd = tr<span class="cstat-no" title="statement not covered" >ue;</span>
2112
- }<span class="cstat-no" title="statement not covered" ></span>
2113
- const isDelete = even<span class="cstat-no" title="statement not covered" >t?.originEvent?.action === 'delete';</span>
2114
- const isAuthView = emitTar<span class="cstat-no" title="statement not covered" >get.auth &amp;&amp; event?.originEvent?.object?.name;</span>
2115
- <span class="cstat-no" title="statement not covered" > const isUpdateAuth = event?.originEvent?.action === 'update' &amp;&amp; event?.originEvent?.object &amp;&amp; event?.originEvent?.object?.auth</span>
2116
- co<span class="cstat-no" title="statement not covered" >nst isUpdateBindRol</span>es = event?.originEvent?.action === 'update' &amp;&amp; event?.originEvent?.object &amp;&amp; event?.originEvent?.object?.bindRoles;
2117
- if (isDelete || isUpdateAuth || isUpdateBindRoles || isAuthView) {
2118
- hasBackEnd = true;
2119
- // const app = emitTarget.app;
2120
- // const diffArr: string[] = [];
2121
- // emitTarget.logics.forEach((logic: Logic) =&gt; {
2122
- // if (logic.body.length &gt; 2) {
2123
- // logic.body.forEach((it: LogicItem) =&gt; {
2124
- // itemloop(it, app, diffArr);
2125
- // });
2126
- // }
2127
- // });
2128
- // const result = diffArr.filter((item) =&gt; item.startsWith('app') || item.startsWith('extensions'));
2129
- // if (result.length) {
2130
- // hasBackEnd = true;
2131
- // }
2132
- // emitTarget.children.forEach((item: View | ViewElement) =&gt; loopEle(item, isDelete));
2133
- <span class="cstat-no" title="statement not covered" > // emitTarget.elem</span>ents.forEach((item: View | ViewElement) =&gt; loopEle(item, isDelete));
2134
- }
2135
- <span class="cstat-no" title="statement not covered" > hasFrontEnd = true;</span>
2136
- }<span class="cstat-no" title="statement not covered" ></span>
2137
- if (emitTarget.concept ===<span class="cstat-no" title="statement not covered" > 'ViewElement') {</span>
2138
- if (<span class="fstat-no" title="function not covered" >ev</span>ent?.originEvent?.objec<span class="cstat-no" title="statement not covered" >t?.name) {</span>
2139
- const bindDirective = emitTarget.bindDirectives.find(
2140
- <span class="cstat-no" title="statement not covered" > (item: BindDirective) =&gt; item.name === 'auth'</span>
2141
- )<span class="cstat-no" title="statement not covered" ></span>
2142
- if (bindDirective) {
2143
- hasBackEnd = true;
2144
- }<span class="cstat-no" title="statement not covered" ></span>
2145
- }<span class="cstat-no" title="statement not covered" ></span>
2146
- if (<span class="fstat-no" title="function not covered" >ev</span>ent?.originEvent?.actio<span class="cstat-no" title="statement not covered" >n === 'delete') {</span>
2147
- const bindDirective = emitTarget?.bindDirectives?.find(
2148
- <span class="cstat-no" title="statement not covered" > (item: BindDirective) =&gt; item.name === 'auth'</span>
2149
- )<span class="cstat-no" title="statement not covered" ></span>
2150
- if (bindDirective) {
2151
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
2152
- }
2153
- <span class="cstat-no" title="statement not covered" > loopEleAuth(emitTarget)</span>
2154
- }<span class="cstat-no" title="statement not covered" ></span>
2155
- if (<span class="cstat-no" title="statement not covered" >event?.originEvent?.action !== 'create') {</span>
2156
- if (event?.originEvent?.object &amp;&amp; event?.originEvent?.object?.bindRoles) {
2157
- hasBackEnd = true
2158
- <span class="cstat-no" title="statement not covered" > }</span>
2159
- }
2160
- <span class="cstat-no" title="statement not covered" > loopEle(emitTarget, true)</span>
2161
- }
2162
- if (<span class="cstat-no" title="statement not covered" >emitTarget.concept === 'BindAttribute' &amp;&amp; emitTarget.name === 'url') {</span>
2163
- <span class="cstat-no" title="statement not covered" > const needUpdateBackEnd =</span>
2164
- <span class="cstat-no" title="statement not covered" > emitTarget?.value?.endsWith('/import') || emitTarget?.value?.includes('/upload/')</span>
2165
- if (!emitTarget.view.parentAuth &amp;&amp; needUpdateBackEnd) {
2166
- hasBackEnd = true
2167
- <span class="cstat-no" title="statement not covered" > }</span>
2168
- }<span class="cstat-no" title="statement not covered" ></span>
2169
- if<span class="cstat-no" title="statement not covered" > (emitTarget.concept === 'CallLogic') {</span>
2170
- const arrlist: <span class="cstat-no" title="statement not covered" >string[] = [];<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
2171
- getLogic((emitTarget as CallLogic).calleeKey, emitTarget.app, arrlist);
2172
- <span class="cstat-no" title="statement not covered" > const result = arrlist.filter((item) =&gt; item.startsWith('app') || item.startsWith('extensions'));</span>
2173
- //<span class="cstat-no" title="statement not covered" > console.log(result</span>, 'CallLogic');
2174
- if (result.length) {
2175
- hasBackEnd = true;
2176
- }
2177
- <span class="cstat-no" title="statement not covered" > }</span>
2178
- //<span class="cstat-no" title="statement not covered" > 更新端时需要出发后端更新</span>
2179
- if (emitTarget.concept === 'Frontend') {
2180
- hasBackEnd = true;
2181
- }
2182
- }<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
2183
- <span class="cstat-no" title="statement not covered" ></span>
2184
- even<span class="cstat-no" title="statement not covered" >t.eventList.forEach(({ action, path, object: objItem }: { action: string; path: string; object: any }) =&gt; {</span>
2185
- if (<span class="cstat-no" title="statement not covered" >Array.isArray(objItem)) {</span>
2186
- if (action === 'update') {
2187
- actionList.push({
2188
- action,
2189
- path,
2190
- node: objItem[0],
2191
- <span class="cstat-no" title="statement not covered" > });<span class="fstat-no" title="function not covered" ></span></span>
2192
- } el<span class="cstat-no" title="statement not covered" >se {</span>
2193
- objItem.forEach((item, index) =&gt; {
2194
- actionList.push({
2195
- action,
2196
- path,
2197
- node: item,
2198
- });
2199
- });
2200
- <span class="cstat-no" title="statement not covered" > }</span>
2201
- } else {
2202
- actionList.push({
2203
- action,
2204
- path,
2205
- object: objItem,
2206
- });
2207
- }
2208
- });
2209
- });
2210
- <span class="cstat-no" title="statement not covered" > }</span>
2211
- } <span class="cstat-no" title="statement not covered" >catch (error) {</span>
2212
- console.log(error);
2213
- taskQueue.refreshNasl(app, {
2214
- errorInfo: {
2215
- message: error?.message,
2216
- stack: error?.stack,
2217
- <span class="cstat-no" title="statement not covered" > },</span>
2218
- });
2219
- return;
2220
- }<span class="cstat-no" title="statement not covered" ></span>
2221
- &nbsp;
2222
- const instructList = [{
2223
- uuid: uuidv4().replace(/-/g, ''),
2224
- <span class="cstat-no" title="statement not covered" > actions: actionList,</span>
2225
- }];
2226
- <span class="cstat-no" title="statement not covered" > saveNasl({ app, hasFrontEnd, hasBackEnd, instructList });</span>
2227
- <span class="cstat-no" title="statement not covered" ></span>
2228
- if (<span class="cstat-no" title="statement not covered" >!app._historying) {</span>
2229
- if (app._historyIndex !== app._historyList.length) {
2230
- <span class="cstat-no" title="statement not covered" > app._historyList = app._historyList.splice(0, app._historyIndex);</span>
2231
- }
2232
- app._historyList.<span class="fstat-no" title="function not covered" >pu</span>sh({<span class="cstat-no" title="statement not covered" ></span>
2233
- actionMsg,
2234
- <span class="cstat-no" title="statement not covered" > list: list.map((item: any) =&gt; item.originEv</span>ent),
2235
- });
2236
- app._historyIndex <span class="cstat-no" title="statement not covered" >= app._historyList.length;</span>
2237
- } else {
2238
- const actionMap = {
2239
- undo: '已撤销操作:',
2240
- redo: '已<span class="cstat-no" title="statement not covered" >重做操作:',</span>
2241
- <span class="cstat-no" title="statement not covered" > };</span>
2242
- <span class="cstat-no" title="statement not covered" > let msg = actionMap[action as 'undo' | 'redo'];</span>
2243
- ms<span class="cstat-no" title="statement not covered" >g += actionMsg;</span>
2244
- if (process.env.BUILD_TARGET !== 'node') {
2245
- <span class="cstat-no" title="statement not covered" > require('element-plus')</span>.ElMessage.info(msg);
2246
- }
2247
- <span class="cstat-no" title="statement not covered" > app._historying = false;</span>
2248
- }
2249
- stepRecorder.initialized &amp;&amp; stepRecorder.record(actionMsg, actionItem, actionList);
2250
- }
2251
- &nbsp;
2252
- type Instruct = {
2253
- uuid: string,
2254
- actions: any[],
2255
- };
2256
- type TaskOption = {
2257
- app: any,
2258
- hasFrontEnd: boolean,
2259
- hasBackEnd: boolean,
2260
- instructList: Instruct[],
2261
- };
2262
- enum TaskQueueStatus {
2263
- ExceedMaxTaskCount,
2264
- Retrying,
2265
- }
2266
- type RefreshNaslOptions = {
2267
- errorInfo: {
2268
- message?: string,
2269
- stack?: string,
2270
- }
2271
- };
2272
- &nbsp;
2273
- class TaskQueue {
2274
- queue: TaskOption[] = []
2275
- lastQueue: TaskOption[] = []
2276
- running: Boolean = false
2277
- maxTaskCount: number = 10
2278
- <span class="fstat-no" title="function not covered" > status?:</span> TaskQueueStatus = undefined
2279
- <span class="cstat-no" title="statement not covered" ></span>
2280
- addTask(task: TaskOption) {
2281
- <span class="cstat-no" title="statement not covered" > this.queue.push(task);</span>
2282
- <span class="cstat-no" title="statement not covered" ></span>
2283
- if<span class="cstat-no" title="statement not covered" > (this.queue.length &gt;= this.maxTaskCo</span>unt) {
2284
- this.status = TaskQueueStatus.ExceedMaxTaskCount;
2285
- task.app.emit('ExceedMaxTaskCount');
2286
- <span class="cstat-no" title="statement not covered" > }</span>
2287
- &nbsp;
2288
- this.run();
2289
- <span class="fstat-no" title="function not covered" > }</span>
2290
- <span class="cstat-no" title="statement not covered" ></span>
2291
- cl<span class="cstat-no" title="statement not covered" >ear() {</span>
2292
- <span class="cstat-no" title="statement not covered" > this.queue = [];</span>
2293
- <span class="cstat-no" title="statement not covered" > this.lastQueue = [];</span>
2294
- this.status = undefined;
2295
- this.running = false;
2296
- <span class="fstat-no" title="function not covered" > }<span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
2297
- <span class="cstat-no" title="statement not covered" ></span>
2298
- asyn<span class="cstat-no" title="statement not covered" >c run(qu</span>eue = this.queue) {
2299
- <span class="cstat-no" title="statement not covered" > if (this.running)</span>
2300
- <span class="cstat-no" title="statement not covered" > return;</span>
2301
- if (queue.length === 0)
2302
- return;<span class="cstat-no" title="statement not covered" ></span>
2303
- <span class="cstat-no" title="statement not covered" ></span>
2304
- const app = queue<span class="cstat-no" title="statement not covered" >[0].ap</span>p;
2305
- let hasFrontEnd = false;<span class="cstat-no" title="statement not covered" ></span>
2306
- let hasBackEnd = false;
2307
- <span class="cstat-no" title="statement not covered" > let instructList: Instruct[] = [];</span>
2308
- <span class="cstat-no" title="statement not covered" ></span>
2309
- for <span class="cstat-no" title="statement not covered" >(const task of queue</span>) {
2310
- <span class="cstat-no" title="statement not covered" > if (task.hasFrontEnd)</span>
2311
- <span class="cstat-no" title="statement not covered" > hasFrontEnd = true;</span>
2312
- <span class="cstat-no" title="statement not covered" > if (task.hasBackEnd)</span>
2313
- hasBackEnd = true;
2314
- instructList = instructList.concat(task.instructList);
2315
- <span class="cstat-no" title="statement not covered" > }</span>
2316
- <span class="cstat-no" title="statement not covered" ></span>
2317
- if<span class="cstat-no" title="statement not covered" > (queue === this.</span>queue) {
2318
- this.lastQueue = [...queue];
2319
- this.queue = [];
2320
- <span class="cstat-no" title="statement not covered" > }</span>
2321
- <span class="cstat-no" title="statement not covered" ></span>
2322
- this.running = true;
2323
- const error = await _saveNasl({
2324
- app, hasFrontEnd, hasBackEnd, instructList,
2325
- });
2326
- &nbsp;
2327
- <span class="cstat-no" title="statement not covered" > // code: 401650, 检测到当前应用拉取操作已被强制结束, 用户确认后再刷新</span>
2328
- //<span class="cstat-no" title="statement not covered" > code: 500502 msg:</span> "该应用已在新tab 页打开,请刷新!" 不重试或刷新
2329
- if (!<span class="cstat-no" title="statement not covered" >error)</span>
2330
- this.recover(app);
2331
- el<span class="cstat-no" title="statement not covered" >se if (![401650, 500502].includes(error.code)) {</span>
2332
- // 连接失败,或超时,或后端持久化异常
2333
- if<span class="cstat-no" title="statement not covered" > ((error.message === '</span>Network Error' || error.message?.includes('timeout') || error.code === 500500)
2334
- <span class="cstat-no" title="statement not covered" > &amp;&amp; this.status</span> !== TaskQueueStatus.Retrying) {
2335
- this.running = false;
2336
- <span class="cstat-no" title="statement not covered" > this.retry();</span>
2337
- } else
2338
- <span class="cstat-no" title="statement not covered" > this.r</span>efreshNasl(app);
2339
- &nbsp;
2340
- return;
2341
- <span class="cstat-no" title="statement not covered" > }</span>
2342
- &nbsp;
2343
- <span class="cstat-no" title="statement not covered" > this.running</span> = false;
2344
- &nbsp;
2345
- this.run();
2346
- <span class="fstat-no" title="function not covered" > }</span>
2347
- <span class="cstat-no" title="statement not covered" ></span>
2348
- retr<span class="cstat-no" title="statement not covered" >y() {</span>
2349
- if (this.lastQueue.length === 0)
2350
- return;<span class="cstat-no" title="statement not covered" ></span>
2351
- <span class="cstat-no" title="statement not covered" ></span>
2352
- <span class="cstat-no" title="statement not covered" > const app = this.lastQ</span>ueue[0].app;
2353
- <span class="cstat-no" title="statement not covered" > this.status = TaskQueueSta</span>tus.Retrying;
2354
- app.emit('Retrying');
2355
- this.run(this.lastQueue);
2356
- <span class="fstat-no" title="function not covered" > }<span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
2357
- <span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
2358
- async refreshNasl(app: App, options: RefreshNaslOptions = { errorInfo: {} }) {
2359
- const failedQueue = this.lastQueue.map(({ hasFrontEnd, hasBackEnd, instructList }) =&gt; ({
2360
- hasFrontEnd,<span class="cstat-no" title="statement not covered" > hasBackEnd, in<span class="fstat-no" title="function not covered" >st</span>ructList,<span class="cstat-no" title="statement not covered" ></span></span>
2361
- }));
2362
- const queue = this.queue.map(({ hasFrontEnd, hasBackEnd, instructList }) =&gt; ({
2363
- <span class="cstat-no" title="statement not covered" > hasFrontEnd, hasBackEnd, instructList,</span>
2364
- }));
2365
- await storageService.saveFrontendNasl({
2366
- body: {
2367
- nasl: app?.toJSON(),
2368
- failedQueue,
2369
- queue,
2370
- error<span class="fstat-no" title="function not covered" >In</span>fo: options.errorInfo,
2371
- <span class="cstat-no" title="statement not covered" > },</span>
2372
- }).catch((err: any) =&gt; {
2373
- <span class="cstat-no" title="statement not covered" > console.log(</span>'备份 nasl 失败:', err);
2374
- <span class="cstat-no" title="statement not covered" > });</span>
2375
- this.clear();
2376
- app.emit('refresh');
2377
- <span class="fstat-no" title="function not covered" > }</span>
2378
- <span class="cstat-no" title="statement not covered" ></span>
2379
- recover(app: App) {
2380
- swit<span class="cstat-no" title="statement not covered" >ch (this.status) {</span>
2381
- ca<span class="cstat-no" title="statement not covered" >se TaskQueueStatus.Exceed</span>MaxTaskCount:
2382
- <span class="cstat-no" title="statement not covered" > app.emi</span>t('BelowMaxTaskCount');
2383
- this.status = undefined;
2384
- <span class="cstat-no" title="statement not covered" > break;</span>
2385
- ca<span class="cstat-no" title="statement not covered" >se TaskQueueStatus.Retryi</span>ng:
2386
- <span class="cstat-no" title="statement not covered" > app.emi</span>t('SuccessRetry');
2387
- this.status = undefined;
2388
- break;
2389
- }
2390
- }
2391
- }
2392
- <span class="fstat-no" title="function not covered" ></span>
2393
- ex<span class="cstat-no" title="statement not covered" >port const taskQueue = new T</span>askQueue();
2394
- async function saveNasl(options: TaskOption) {
2395
- taskQueue.addTask(options);
2396
- }<span class="fstat-no" title="function not covered" ></span>
2397
- <span class="cstat-no" title="statement not covered" ></span>
2398
- as<span class="cstat-no" title="statement not covered" >ync function _saveNa</span>sl(options: TaskOption) {
2399
- const { app, hasFrontE<span class="cstat-no" title="statement not covered" >nd,</span> hasBackEnd, instructList } = options;
2400
- <span class="cstat-no" title="statement not covered" > app.emit('saving');</span>
2401
- le<span class="cstat-no" title="statement not covered" >t ChangedNASLType = '';</span>
2402
- if (has<span class="cstat-no" title="statement not covered" >FrontEnd &amp;&amp; hasBackEnd) {</span>
2403
- <span class="cstat-no" title="statement not covered" > ChangedNASLType = 'both';</span>
2404
- } else <span class="cstat-no" title="statement not covered" >if (hasFrontEnd) {</span>
2405
- <span class="cstat-no" title="statement not covered" > ChangedNASLType = 'web';</span>
2406
- } else if (hasBackEnd) {
2407
- ChangedNASLType = 'backend';
2408
- <span class="cstat-no" title="statement not covered" > }</span>
2409
- le<span class="cstat-no" title="statement not covered" >t err;</span>
2410
- if (<span class="cstat-no" title="statement not covered" >config.storage.protocol === 'http') {</span>
2411
- try {
2412
- await storageService.batchInstruct({
2413
- body: instructList,
2414
- headers: {
2415
- appId: app.id,
2416
- ChangedNASLType,
2417
- tabTimestamp,
2418
- // 其他封装在 storageService 里了
2419
- },
2420
- <span class="cstat-no" title="statement not covered" > });</span>
2421
- } catch (error) {
2422
- err<span class="cstat-no" title="statement not covered" > = error;</span>
2423
- }
2424
- } else if (config.storage.protocol === 'mock') {
2425
- // Do nothing<span class="cstat-no" title="statement not covered" ></span>
2426
- } else {
2427
- const json = await fs.re<span class="cstat-no" title="statement not covered" >adJ</span>SON(config.storage.basePath);
2428
- <span class="cstat-no" title="statement not covered" ></span>
2429
- le<span class="cstat-no" title="statement not covered" >t actionList: any[] = [];</span>
2430
- for (const { actions } of instructList) {
2431
- actionList = actionList.concat(actions);
2432
- <span class="cstat-no" title="statement not covered" > }</span>
2433
- <span class="cstat-no" title="statement not covered" ></span>
2434
- jsoner.batchAction(json, actionList);
2435
- await fs.writeJSON(config.storage.basePath, json, {
2436
- spaces: 4,
2437
- <span class="cstat-no" title="statement not covered" > });</span>
2438
- <span class="cstat-no" title="statement not covered" > }</span>
2439
- app.emit('saved', err);
2440
- return err;
2441
- }
2442
- &nbsp;
2443
- export interface ProxyApp extends App {
2444
- _isCollectingCount: number;
2445
- _collectingList: number[];
2446
- _historyList: number[];
2447
- _historyIndex: number;
2448
- _historying: boolean;
2449
- _timer: NodeJS.Timeout;
2450
- _noTimer: NodeJS.Timeout;
2451
- _actionMsg: string;
2452
- _action: string;
2453
- naslServer: NaslServer;
2454
- }<span class="fstat-no" title="function not covered" ></span>
2455
- <span class="cstat-no" title="statement not covered" ></span>
2456
- ex<span class="cstat-no" title="statement not covered" >port function handleApp(ap</span>p: ProxyApp) {
2457
- <span class="cstat-no" title="statement not covered" > app._isCollectingCount </span>= 0;
2458
- <span class="cstat-no" title="statement not covered" > app._collectingList = [</span>];
2459
- <span class="cstat-no" title="statement not covered" > app._historyList = [];</span>
2460
- <span class="cstat-no" title="statement not covered" > app._historyIndex =</span> 0;
2461
- app._historying = false;
2462
- <span class="cstat-no" title="statement not covered" > app._timer = nu<span class="fstat-no" title="function not covered" >ll;</span></span>
2463
- <span class="cstat-no" title="statement not covered" ></span>
2464
- ap<span class="cstat-no" title="statement not covered" >p.on('undo', function (this: </span>ProxyApp) {
2465
- const proxyApp = this;
2466
- proxyApp._historying = true;
2467
- <span class="cstat-no" title="statement not covered" > });<span class="fstat-no" title="function not covered" ></span></span>
2468
- <span class="cstat-no" title="statement not covered" ></span>
2469
- ap<span class="cstat-no" title="statement not covered" >p.on('redo', function (this: </span>ProxyApp) {
2470
- const proxyApp = this;
2471
- proxyApp._historying = true;
2472
- });
2473
- &nbsp;
2474
- /**
2475
- <span class="cstat-no" title="statement not covered" > * 开启收集<span class="fstat-no" title="function not covered" ></span></span>
2476
- */<span class="cstat-no" title="statement not covered" ></span>
2477
- ap<span class="cstat-no" title="statement not covered" >p.on('collect:start', function (this: ProxyApp, event: any) {</span>
2478
- co<span class="cstat-no" title="statement not covered" >nst proxyApp = this;</span>
2479
- if (proxyApp._timer) {
2480
- <span class="cstat-no" title="statement not covered" > clearTimeout(proxyApp._timer);</span>
2481
- }<span class="cstat-no" title="statement not covered" ></span>
2482
- if (!proxyApp._noTimer) {
2483
- <span class="cstat-no" title="statement not covered" > proxyApp._noTimer = event.noTimer;</span>
2484
- }<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
2485
- if (<span class="cstat-no" title="statement not covered" >!proxyApp._noTimer) {</span>
2486
- pr<span class="cstat-no" title="statement not covered" >oxyApp._timer = setTimeout(() =&gt; {</span>
2487
- console.error('收集超时,请及时排查原因', event);
2488
- taskQueue.refreshNasl(proxyApp, {
2489
- errorInfo: {
2490
- message: '收集超时,请及时排查原因',
2491
- },
2492
- });
2493
- <span class="cstat-no" title="statement not covered" > }, 2500);</span>
2494
- }<span class="cstat-no" title="statement not covered" ></span>
2495
- if<span class="cstat-no" title="statement not covered" > (!proxyApp._isCollectingCount) {</span>
2496
- proxyApp._actionMsg = event?.actionMsg;
2497
- <span class="cstat-no" title="statement not covered" > proxyApp._action = event?.act</span>ion;
2498
- }
2499
- proxyApp._isCollectingCount++;
2500
- });
2501
- &nbsp;
2502
- /**
2503
- <span class="cstat-no" title="statement not covered" > * 结束收集<span class="fstat-no" title="function not covered" ></span></span>
2504
- */<span class="cstat-no" title="statement not covered" ></span>
2505
- ap<span class="cstat-no" title="statement not covered" >p.on('collect:end', async funct</span>ion (this: ProxyApp) {
2506
- <span class="cstat-no" title="statement not covered" > const proxyApp = this;</span>
2507
- pr<span class="cstat-no" title="statement not covered" >oxyApp._isCollectingCount--;</span>
2508
- if (<span class="cstat-no" title="statement not covered" >proxyApp._isCollectingCount ===</span> 0) {
2509
- if (proxyApp._timer) {
2510
- clearTimeout(proxyApp._timer);
2511
- }<span class="cstat-no" title="statement not covered" ></span>
2512
- // 结束收集时,立即将全局收集变量<span class="cstat-no" title="statement not covered" >状态重置,防止下次收集数据混乱</span>
2513
- const collectin<span class="cstat-no" title="statement not covered" >gList = proxyApp.</span>_collectingList;
2514
- <span class="cstat-no" title="statement not covered" > const actionMsg = proxyApp._act</span>ionMsg;
2515
- <span class="cstat-no" title="statement not covered" > const action = proxyApp._a</span>ction;
2516
- <span class="cstat-no" title="statement not covered" > proxyApp._collectingLis</span>t = [];
2517
- <span class="cstat-no" title="statement not covered" > proxyApp._actionMsg = '';</span>
2518
- <span class="cstat-no" title="statement not covered" > proxyApp._action = '';</span>
2519
- pr<span class="cstat-no" title="statement not covered" >oxyApp._noTimer = undefined;</span>
2520
- if<span class="cstat-no" title="statement not covered" > (Array.isArray(collectingList) &amp;&amp; collectingList.length) {</span>
2521
- mountDatabaseTypes(proxyApp);
2522
- proxyApp.naslServer?.embeddedTSEmitter?.emit('change', {
2523
- <span class="cstat-no" title="statement not covered" > value: collectingList,</span>
2524
- });
2525
- await doAction(proxyApp, {
2526
- list: collectingList,
2527
- actionMsg,
2528
- action,
2529
- });<span class="cstat-no" title="statement not covered" ></span>
2530
- <span class="cstat-no" title="statement not covered" > }</span>
2531
- } <span class="cstat-no" title="statement not covered" >else if (proxyApp._isCollect</span>ingCount &lt; 0) {
2532
- proxyApp._isCollectingCount = 0;
2533
- throw Error('关闭收集有问题,请排查');
2534
- }
2535
- });
2536
- &nbsp;
2537
- /**
2538
- <span class="cstat-no" title="statement not covered" > * 有变更<span class="fstat-no" title="function not covered" ></span></span>
2539
- */<span class="cstat-no" title="statement not covered" ></span>
2540
- app.on('storage', function (this: ProxyApp, event: any) {
2541
- <span class="cstat-no" title="statement not covered" > const proxyApp = this;</span>
2542
- //<span class="cstat-no" title="statement not covered" > 是否正在收集</span>
2543
- if (proxyApp._isCollectingCount === 0) {
2544
- proxyApp.naslServer?.embeddedTSEmitter?.emit('change', {
2545
- value: [event]<span class="cstat-no" title="statement not covered" >,</span>
2546
- });<span class="cstat-no" title="statement not covered" ></span>
2547
- let actionMsg = '';<span class="cstat-no" title="statement not covered" ></span>
2548
- <span class="cstat-no" title="statement not covered" > const { action, target } = event.originEvent || {};</span>
2549
- const { concept, name } = target || {};
2550
- swit<span class="cstat-no" title="statement not covered" >ch (action) {</span>
2551
- ca<span class="cstat-no" title="statement not covered" >se 'cre</span>ate':
2552
- actionMsg = '添加';
2553
- <span class="cstat-no" title="statement not covered" > break;</span>
2554
- ca<span class="cstat-no" title="statement not covered" >se 'del</span>ete':
2555
- actionMsg = '删除';
2556
- <span class="cstat-no" title="statement not covered" > break;</span>
2557
- ca<span class="cstat-no" title="statement not covered" >se 'upd</span>ate':
2558
- actionMsg = '修改';
2559
- <span class="cstat-no" title="statement not covered" > break;</span>
2560
- <span class="cstat-no" title="statement not covered" > }</span>
2561
- ac<span class="cstat-no" title="statement not covered" >tionMsg += getConceptConst</span>ructor(concept).nodeTitle;
2562
- if (name) {
2563
- <span class="cstat-no" title="statement not covered" > actionMsg += `“${name}”`;</span>
2564
- }
2565
- doAction(proxyApp, {
2566
- list: [event],
2567
- actionMsg,
2568
- <span class="cstat-no" title="statement not covered" > });</span>
2569
- } else {
2570
- proxyApp._collectingList.push(event);
2571
- }
2572
- });
2573
- }
2574
- &nbsp;
2575
- type BreakpointItem =
2576
- | any
2577
- | {
2578
- path: string
2579
- breakpointStatus: null | 'ENABLED' | 'DISABLED'
2580
- }
2581
- &nbsp;
2582
- /**
2583
- * 加载 app
2584
- * @param appId 如果是从文件读,就不需要传
2585
- * @returns app 对象<span class="fstat-no" title="function not covered" ></span>
2586
- */
2587
- ex<span class="cstat-no" title="statement not covered" >port async function loadApp(appId?: string) {</span>
2588
- le<span class="cstat-no" title="statement not covered" >t app: App;</span>
2589
- if (config.storage.<span class="cstat-no" title="statement not covered" >protocol === 'http') {</span>
2590
- console.time('batchQuery');
2591
- const promises = [
2592
- storageService.batchQuery({
2593
- body: [
2594
- {
2595
- path: 'app'
2596
- // excludes: ['views'],
2597
- }
2598
- ],
2599
- headers: {
2600
- appId,
2601
- checkTabOpenTime: 'true'
2602
- // 其他封装在 storageService 里了
2603
- },
2604
- config: {
2605
- shortResponse: false
2606
- }
2607
- }),
2608
- storageService.breakpoint({
2609
- body: { appId }
2610
- })
2611
- ]<span class="cstat-no" title="statement not covered" ></span>
2612
- &nbsp;
2613
- const [batchQueryRes, breakpointRes] = await Promise.all(promises)
2614
- <span class="cstat-no" title="statement not covered" ></span>
2615
- // 请求
2616
- <span class="cstat-no" title="statement not covered" > console.timeEnd('batchQuery');</span>
2617
- <span class="cstat-no" title="statement not covered" ></span>
2618
- tabTimestamp = batchQueryRes?.headers?.tabtimestamp;
2619
- <span class="cstat-no" title="statement not covered" > const data = batchQueryRe</span>s?.data?.result;
2620
- <span class="cstat-no" title="statement not covered" ></span>
2621
- console.time('new App');
2622
- <span class="cstat-no" title="statement not covered" > app = new App(Object.as<span class="fstat-no" title="function not covered" >si</span>gn(data?.[0], { id: ap<span class="branch-0 cbranch-no" title="branch not covered" >pId</span> }));</span>
2623
- <span class="cstat-no" title="statement not covered" ></span>
2624
- breakpointRes?.forEach((item: BreakpointItem = {}) =&gt; {
2625
- <span class="cstat-no" title="statement not covered" > const { path, breakpointStatus } = item</span>
2626
- <span class="cstat-no" title="statement not covered" ></span>
2627
- if (breakpointStatus) {
2628
- <span class="cstat-no" title="statement not covered" > const node = app.findNodeByPath(path)</span>
2629
- <span class="cstat-no" title="statement not covered" ></span>
2630
- if (node) {
2631
- node.breakpoint = breakpointStatus
2632
- }
2633
- <span class="cstat-no" title="statement not covered" > }</span>
2634
- <span class="cstat-no" title="statement not covered" > })</span>
2635
- co<span class="cstat-no" title="statement not covered" >nsole.timeEnd('n</span>ew App');
2636
- if (!app.id) {
2637
- <span class="cstat-no" title="statement not covered" > app.id = appId;</span>
2638
- }<span class="cstat-no" title="statement not covered" ></span>
2639
- <span class="cstat-no" title="statement not covered" > addBreakpointNodesFromApp(app)</span>
2640
- } else if (config.storage.protocol === 'mock') {
2641
- app = new App({
2642
- id: appId,
2643
- concept: 'App',
2644
- name: 'devapp',
2645
- title: '开发应用',
2646
- envs: 'dev,online',
2647
- hasAuth: true,
2648
- hasUserCenter: true,
2649
- dataSources: [],
2650
- structures: [],
2651
- enums: [],
2652
- logics: [],
2653
- interfaces: [],
2654
- processes: [],
2655
- roles: [],
2656
- dependencies: [],
2657
- interfaceDependencies: [],
2658
- frontends: [],
2659
- });<span class="cstat-no" title="statement not covered" ></span>
2660
- } <span class="cstat-no" title="statement not covered" >else {</span>
2661
- const json = await fs.readJSON(config.storage.basePath);
2662
- app = new App(appId ? Object.assign(json, { id: appId }) : json);
2663
- <span class="cstat-no" title="statement not covered" > }</span>
2664
- /<span class="cstat-no" title="statement not covered" >/ config.scope = app.scope;</span>
2665
- <span class="cstat-no" title="statement not covered" > handleApp(app as ProxyApp</span>);
2666
- <span class="cstat-no" title="statement not covered" > (app as any)._isCol</span>lectingCount = 0;
2667
- mountDatabaseTypes(app);
2668
- return app as App;
2669
- }
2670
- <span class="fstat-no" title="function not covered" ></span>
2671
- //<span class="cstat-no" title="statement not covered" > 在app上挂载所有的数据库类型</span>
2672
- expo<span class="cstat-no" title="statement not covered" >rt async function mountDatab</span>aseTypes(app: App) {
2673
- if (!app.__databaseTypeMap) {
2674
- app.__databaseType<span class="cstat-no" title="statement not covered" >Map = {};</span>
2675
- }<span class="cstat-no" title="statement not covered" ></span>
2676
- <span class="cstat-no" title="statement not covered" > const dataSources = app?.dataSources;</span>
2677
- co<span class="cstat-no" title="statement not covered" >nst dbTypeSet = new <span class="fstat-no" title="function not covered" >Se</span>t();</span>
2678
- if (Array.isArray(dataSources)<span class="cstat-no" title="statement not covered" >) {</span>
2679
- da<span class="cstat-no" title="statement not covered" >taSources.forEach((dataSource) =&gt; {</span>
2680
- co<span class="cstat-no" title="statement not covered" >nst dataSourceSqlType = JSON.parse</span>(dataSource.dataSourceConfig?.devProperty?.value || '{}')?.type;
2681
- if (dataSourceSqlType &amp;&amp; !app.__databaseTypeMap[dataSourceSqlType]) {
2682
- dbTypeSet.add(dataSourceSqlType);
2683
- }
2684
- });<span class="cstat-no" title="statement not covered" ></span>
2685
- <span class="cstat-no" title="statement not covered" > }</span>
2686
- const dbTypes = [..<span class="cstat-no" title="statement not covered" >.dbTypeSet];</span>
2687
- if (Array.isArray(dbTypes) &amp;&amp; dbTypes.length) {
2688
- const res: any = await databaseTypes({
2689
- query: {
2690
- dbTypes: dbTypes.join(','),
2691
- <span class="cstat-no" title="statement not covered" > },</span>
2692
- })<span class="cstat-no" title="statement not covered" >;<span class="fstat-no" title="function not covered" ></span></span>
2693
- if (Array.isArray(res)) {<span class="cstat-no" title="statement not covered" ></span>
2694
- res.forEach((databaseType: an<span class="cstat-no" title="statement not covered" >y) </span>=&gt; {
2695
- <span class="cstat-no" title="statement not covered" > const { dbType, columnTypes } = databaseType || {};</span>
2696
- co<span class="cstat-no" title="statement not covered" >nst columnTypeMap: a<span class="fstat-no" title="function not covered" >ny</span> = {};</span>
2697
- if (Array.isArray(columnTypes)) {<span class="cstat-no" title="statement not covered" ></span>
2698
- columnTypes.forEach((columnType<span class="cstat-no" title="statement not covered" >) =</span>&gt; {
2699
- const { naslType, dataBaseTypes } = columnType;
2700
- <span class="cstat-no" title="statement not covered" > const dataBaseTypeMap: any = {};</span>
2701
- le<span class="cstat-no" title="statement not covered" >t defaultDataBaseType;<span class="fstat-no" title="function not covered" ></span></span>
2702
- if (Array.isArray(dat<span class="cstat-no" title="statement not covered" >aBaseTypes)) {</span>
2703
- da<span class="cstat-no" title="statement not covered" >taBaseTypes.forEach((dataBaseType) =&gt; {</span>
2704
- co<span class="cstat-no" title="statement not covered" >nst { type } = dataBaseType || {};</span>
2705
- if (type) {<span class="cstat-no" title="statement not covered" ></span>
2706
- <span class="cstat-no" title="statement not covered" > dataBaseTypeMap[type] = dataBaseType;</span>
2707
- co<span class="cstat-no" title="statement not covered" >nst { defaultType } = dataBaseType;</span>
2708
- if (defaultType) {
2709
- defaultDataBaseType = dataBaseType;
2710
- }
2711
- }
2712
- <span class="cstat-no" title="statement not covered" > });</span>
2713
- }
2714
- columnTypeMap[naslType] = {
2715
- dataBaseTypes,
2716
- dataBaseTypeMap,
2717
- defaultDataBaseType,
2718
- };
2719
- <span class="cstat-no" title="statement not covered" > });</span>
2720
- }
2721
- app.__databaseTypeMap[dbType] = columnTypeMap;
2722
- });
2723
- <span class="cstat-no" title="statement not covered" > }</span>
2724
- }<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
2725
- if (<span class="cstat-no" title="statement not covered" >Array.isArray(dataSources)) {</span>
2726
- dataSources.forEach((dataSource) =&gt; {
2727
- dataSource.__hasDatabaseConfig = !!(app.__databaseTypeMap?.[dataSource.dataSourceSqlType]);
2728
- });
2729
- }
2730
- }
2731
- &nbsp;
2732
- /**
2733
- * 加载 app
2734
- * @returns app <span class="fstat-no" title="function not covered" >对象</span>
2735
- */<span class="cstat-no" title="statement not covered" ></span>
2736
- export functio<span class="cstat-no" title="statement not covered" >n loadAppSync(</span>) {
2737
- <span class="cstat-no" title="statement not covered" > const json = fs.readJSONSync</span>(config.storage.basePath);
2738
- <span class="cstat-no" title="statement not covered" > const app = </span>new App(json);
2739
- handleApp(app as ProxyApp);
2740
- return app;
2741
- }
2742
- &nbsp;</pre></td></tr></table></pre>
2743
-
2744
- <div class='push'></div><!-- for sticky footer -->
2745
- </div><!-- /wrapper -->
2746
- <div class='footer quiet pad2 space-top1 center small'>
2747
- Code coverage generated by
2748
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2749
- at 2023-10-18T11:36:07.885Z
2750
- </div>
2751
- <script src="../../../prettify.js"></script>
2752
- <script>
2753
- window.onload = function () {
2754
- prettyPrint();
2755
- };
2756
- </script>
2757
- <script src="../../../sorter.js"></script>
2758
- <script src="../../../block-navigation.js"></script>
2759
- </body>
2760
- </html>
2761
-