@lcap/nasl 2.22.12-beta.1 → 2.22.12-beta.2

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 (445) hide show
  1. package/out/breakpoint/generator/AfterStartNode.js +1 -1
  2. package/out/breakpoint/generator/AfterStartNode.js.map +1 -1
  3. package/out/breakpoint/generator/BeforeEndNode.js +1 -1
  4. package/out/breakpoint/generator/BeforeEndNode.js.map +1 -1
  5. package/out/breakpoint/generator/BreakpointNode.d.ts +3 -0
  6. package/out/breakpoint/generator/BreakpointNode.js +12 -3
  7. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  8. package/out/breakpoint/generator/CallbackNode.js +15 -0
  9. package/out/breakpoint/generator/CallbackNode.js.map +1 -1
  10. package/out/breakpoint/shared/constants.js +1 -0
  11. package/out/breakpoint/shared/constants.js.map +1 -1
  12. package/out/breakpoint/shared/utils.js +12 -6
  13. package/out/breakpoint/shared/utils.js.map +1 -1
  14. package/out/common/BaseNode.js +1 -1
  15. package/out/common/BaseNode.js.map +1 -1
  16. package/out/common/utils.d.ts +2 -0
  17. package/out/common/utils.js +18 -0
  18. package/out/common/utils.js.map +1 -0
  19. package/out/concepts/AbstractInterface__.d.ts +22 -0
  20. package/out/concepts/AbstractInterface__.js +56 -0
  21. package/out/concepts/AbstractInterface__.js.map +1 -0
  22. package/out/concepts/AuthInterface__.d.ts +5 -3
  23. package/out/concepts/AuthInterface__.js +11 -22
  24. package/out/concepts/AuthInterface__.js.map +1 -1
  25. package/out/concepts/AuthLogicForCallInterface__.d.ts +6 -4
  26. package/out/concepts/AuthLogicForCallInterface__.js +102 -118
  27. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  28. package/out/concepts/AuthLogic__.d.ts +9 -7
  29. package/out/concepts/AuthLogic__.js +11 -22
  30. package/out/concepts/AuthLogic__.js.map +1 -1
  31. package/out/concepts/BackendVariable__.d.ts +30 -23
  32. package/out/concepts/BackendVariable__.js +179 -130
  33. package/out/concepts/BackendVariable__.js.map +1 -1
  34. package/out/concepts/Backend__.d.ts +9 -10
  35. package/out/concepts/Backend__.js +42 -43
  36. package/out/concepts/Backend__.js.map +1 -1
  37. package/out/concepts/Block__.d.ts +84 -0
  38. package/out/concepts/Block__.js +215 -0
  39. package/out/concepts/Block__.js.map +1 -0
  40. package/out/concepts/BusinessComponent__.d.ts +641 -0
  41. package/out/concepts/BusinessComponent__.js +1901 -0
  42. package/out/concepts/BusinessComponent__.js.map +1 -0
  43. package/out/concepts/BusinessLogic__.d.ts +38 -0
  44. package/out/concepts/BusinessLogic__.js +358 -0
  45. package/out/concepts/BusinessLogic__.js.map +1 -0
  46. package/out/concepts/CallAuthInterface__.d.ts +10 -6
  47. package/out/concepts/CallAuthInterface__.js +84 -60
  48. package/out/concepts/CallAuthInterface__.js.map +1 -1
  49. package/out/concepts/CallConnector__.d.ts +7 -5
  50. package/out/concepts/CallConnector__.js +41 -50
  51. package/out/concepts/CallConnector__.js.map +1 -1
  52. package/out/concepts/CallEvent__.d.ts +97 -0
  53. package/out/concepts/CallEvent__.js +263 -0
  54. package/out/concepts/CallEvent__.js.map +1 -0
  55. package/out/concepts/Connection__.d.ts +10 -11
  56. package/out/concepts/Connection__.js +38 -50
  57. package/out/concepts/Connection__.js.map +1 -1
  58. package/out/concepts/ConnectorTrigger__.d.ts +9 -7
  59. package/out/concepts/ConnectorTrigger__.js +11 -32
  60. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  61. package/out/concepts/Connector__.d.ts +382 -23
  62. package/out/concepts/Connector__.js +581 -121
  63. package/out/concepts/Connector__.js.map +1 -1
  64. package/out/concepts/CountersignPolicy__.d.ts +28 -0
  65. package/out/concepts/CountersignPolicy__.js +62 -0
  66. package/out/concepts/CountersignPolicy__.js.map +1 -0
  67. package/out/concepts/DefaultValue__.d.ts +104 -0
  68. package/out/concepts/DefaultValue__.js +242 -0
  69. package/out/concepts/DefaultValue__.js.map +1 -0
  70. package/out/concepts/FrontendType__.d.ts +308 -0
  71. package/out/concepts/FrontendType__.js +605 -0
  72. package/out/concepts/FrontendType__.js.map +1 -0
  73. package/out/concepts/FrontendVariable__.d.ts +15 -1
  74. package/out/concepts/FrontendVariable__.js +23 -11
  75. package/out/concepts/FrontendVariable__.js.map +1 -1
  76. package/out/concepts/I18nInfo__.d.ts +46 -0
  77. package/out/concepts/I18nInfo__.js +90 -0
  78. package/out/concepts/I18nInfo__.js.map +1 -0
  79. package/out/concepts/ImportedInterface__.d.ts +20 -0
  80. package/out/concepts/ImportedInterface__.js +48 -0
  81. package/out/concepts/ImportedInterface__.js.map +1 -0
  82. package/out/concepts/MsgTriggerEvent__.d.ts +10 -8
  83. package/out/concepts/MsgTriggerEvent__.js +32 -30
  84. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  85. package/out/concepts/MsgTriggerLauncher__.d.ts +7 -5
  86. package/out/concepts/MsgTriggerLauncher__.js +32 -35
  87. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  88. package/out/concepts/MultiApprovalPolicy__.d.ts +26 -0
  89. package/out/concepts/MultiApprovalPolicy__.js +59 -0
  90. package/out/concepts/MultiApprovalPolicy__.js.map +1 -0
  91. package/out/concepts/OverriddenLogic__.d.ts +28 -29
  92. package/out/concepts/OverriddenLogic__.js +268 -273
  93. package/out/concepts/OverriddenLogic__.js.map +1 -1
  94. package/out/concepts/ParamWithGroup__.d.ts +39 -0
  95. package/out/concepts/ParamWithGroup__.js +85 -0
  96. package/out/concepts/ParamWithGroup__.js.map +1 -0
  97. package/out/concepts/SequentialPolicy__.d.ts +20 -0
  98. package/out/concepts/SequentialPolicy__.js +48 -0
  99. package/out/concepts/SequentialPolicy__.js.map +1 -0
  100. package/out/concepts/StaticString__.d.ts +49 -0
  101. package/out/concepts/StaticString__.js +91 -0
  102. package/out/concepts/StaticString__.js.map +1 -0
  103. package/out/concepts/TriggerEvent__.d.ts +11 -78
  104. package/out/concepts/TriggerEvent__.js +24 -118
  105. package/out/concepts/TriggerEvent__.js.map +1 -1
  106. package/out/concepts/TriggerLauncher__.d.ts +10 -11
  107. package/out/concepts/TriggerLauncher__.js +18 -43
  108. package/out/concepts/TriggerLauncher__.js.map +1 -1
  109. package/out/concepts/basics/constants.d.ts +1 -0
  110. package/out/concepts/basics/constants.js +6 -0
  111. package/out/concepts/basics/constants.js.map +1 -0
  112. package/out/concepts/basics/stdlib/nasl.http.d.ts +7 -5
  113. package/out/concepts/basics/stdlib/nasl.http.js +78 -73
  114. package/out/concepts/basics/stdlib/nasl.http.js.map +1 -1
  115. package/out/concepts/types__.d.ts +0 -124
  116. package/out/concepts/types__.js +0 -2
  117. package/out/concepts/utils/asserts.d.ts +6931 -0
  118. package/out/concepts/utils/asserts.js +9208 -0
  119. package/out/concepts/utils/asserts.js.map +1 -0
  120. package/out/concepts/utils/quick-info.d.ts +13 -0
  121. package/out/concepts/utils/quick-info.js +51 -0
  122. package/out/concepts/utils/quick-info.js.map +1 -0
  123. package/out/concepts/utils/types.d.ts +447 -0
  124. package/out/concepts/utils/types.js +3 -0
  125. package/out/concepts/utils/types.js.map +1 -0
  126. package/out/server/getConnector.js +27 -4
  127. package/out/server/getConnector.js.map +1 -1
  128. package/out/utils/i18nInfo.d.ts +5 -0
  129. package/out/utils/i18nInfo.js +36 -0
  130. package/out/utils/i18nInfo.js.map +1 -0
  131. package/out/utils/time-slicing/constant.d.ts +35 -0
  132. package/out/utils/time-slicing/constant.js +40 -0
  133. package/out/utils/time-slicing/constant.js.map +1 -0
  134. package/out/utils/time-slicing/controller.d.ts +53 -0
  135. package/out/utils/time-slicing/controller.js +294 -0
  136. package/out/utils/time-slicing/controller.js.map +1 -0
  137. package/out/utils/time-slicing/index.d.ts +5 -0
  138. package/out/utils/time-slicing/index.js +26 -0
  139. package/out/utils/time-slicing/index.js.map +1 -0
  140. package/out/utils/time-slicing/page-state.d.ts +2 -0
  141. package/out/utils/time-slicing/page-state.js +14 -0
  142. package/out/utils/time-slicing/page-state.js.map +1 -0
  143. package/out/utils/time-slicing/performance.d.ts +11 -0
  144. package/out/utils/time-slicing/performance.js +50 -0
  145. package/out/utils/time-slicing/performance.js.map +1 -0
  146. package/out/utils/time-slicing/runner.d.ts +12 -0
  147. package/out/utils/time-slicing/runner.js +52 -0
  148. package/out/utils/time-slicing/runner.js.map +1 -0
  149. package/out/utils/time-slicing/tool.d.ts +24 -0
  150. package/out/utils/time-slicing/tool.js +47 -0
  151. package/out/utils/time-slicing/tool.js.map +1 -0
  152. package/out/utils/time-slicing/utils.d.ts +62 -0
  153. package/out/utils/time-slicing/utils.js +47 -0
  154. package/out/utils/time-slicing/utils.js.map +1 -0
  155. package/out/utils/time-slicing/wrapper.d.ts +18 -0
  156. package/out/utils/time-slicing/wrapper.js +55 -0
  157. package/out/utils/time-slicing/wrapper.js.map +1 -0
  158. package/package.json +3 -3
  159. package/src/common/BaseNode.ts +1 -1
  160. package/ts-worker/package.json +1 -1
  161. package/coverage/base.css +0 -224
  162. package/coverage/block-navigation.js +0 -87
  163. package/coverage/favicon.png +0 -0
  164. package/coverage/index.html +0 -461
  165. package/coverage/prettify.css +0 -1
  166. package/coverage/prettify.js +0 -2
  167. package/coverage/sort-arrow-sprite.png +0 -0
  168. package/coverage/sorter.js +0 -196
  169. package/coverage/src/automate/engine/index.html +0 -116
  170. package/coverage/src/automate/engine/utils.js.html +0 -1414
  171. package/coverage/src/bak/index.html +0 -116
  172. package/coverage/src/bak/translator.js.html +0 -745
  173. package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +0 -175
  174. package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +0 -169
  175. package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +0 -1246
  176. package/coverage/src/breakpoint/generator/CallbackNode.ts.html +0 -145
  177. package/coverage/src/breakpoint/generator/index.html +0 -176
  178. package/coverage/src/breakpoint/generator/index.ts.html +0 -508
  179. package/coverage/src/breakpoint/index.html +0 -116
  180. package/coverage/src/breakpoint/index.ts.html +0 -94
  181. package/coverage/src/breakpoint/shared/constants.ts.html +0 -436
  182. package/coverage/src/breakpoint/shared/index.html +0 -176
  183. package/coverage/src/breakpoint/shared/index.ts.html +0 -94
  184. package/coverage/src/breakpoint/shared/operations.ts.html +0 -160
  185. package/coverage/src/breakpoint/shared/socket.ts.html +0 -1297
  186. package/coverage/src/breakpoint/shared/utils.ts.html +0 -1087
  187. package/coverage/src/breakpoint/store/core.ts.html +0 -1600
  188. package/coverage/src/breakpoint/store/dock.ts.html +0 -733
  189. package/coverage/src/breakpoint/store/index.html +0 -146
  190. package/coverage/src/breakpoint/store/index.ts.html +0 -91
  191. package/coverage/src/common/BaseNode.ts.html +0 -3904
  192. package/coverage/src/common/Command.ts.html +0 -310
  193. package/coverage/src/common/EventEmitter.ts.html +0 -370
  194. package/coverage/src/common/Messager.ts.html +0 -820
  195. package/coverage/src/common/asyncFuncMap.ts.html +0 -127
  196. package/coverage/src/common/index.html +0 -191
  197. package/coverage/src/common/index.ts.html +0 -94
  198. package/coverage/src/concepts/Abort__.ts.html +0 -331
  199. package/coverage/src/concepts/Anchor__.ts.html +0 -661
  200. package/coverage/src/concepts/AnonymousFunction__.ts.html +0 -2071
  201. package/coverage/src/concepts/App__.ts.html +0 -14095
  202. package/coverage/src/concepts/Argument__.ts.html +0 -979
  203. package/coverage/src/concepts/Assignee__.ts.html +0 -2263
  204. package/coverage/src/concepts/AssignmentLine__.ts.html +0 -412
  205. package/coverage/src/concepts/Assignment__.ts.html +0 -1162
  206. package/coverage/src/concepts/Attribute__.ts.html +0 -748
  207. package/coverage/src/concepts/AuthInterface__.ts.html +0 -370
  208. package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +0 -1999
  209. package/coverage/src/concepts/AuthLogic__.ts.html +0 -793
  210. package/coverage/src/concepts/BackendVariable__.ts.html +0 -1498
  211. package/coverage/src/concepts/Backend__.ts.html +0 -1180
  212. package/coverage/src/concepts/BatchAssignment__.ts.html +0 -3346
  213. package/coverage/src/concepts/BinaryExpression__.ts.html +0 -1543
  214. package/coverage/src/concepts/BindAttribute__.ts.html +0 -3928
  215. package/coverage/src/concepts/BindDirective__.ts.html +0 -1984
  216. package/coverage/src/concepts/BindEvent__.ts.html +0 -3463
  217. package/coverage/src/concepts/BindStyle__.ts.html +0 -1627
  218. package/coverage/src/concepts/BooleanLiteral__.ts.html +0 -421
  219. package/coverage/src/concepts/CallAuthInterface__.ts.html +0 -1630
  220. package/coverage/src/concepts/CallConnector__.ts.html +0 -925
  221. package/coverage/src/concepts/CallFunction__.ts.html +0 -2140
  222. package/coverage/src/concepts/CallInterface__.ts.html +0 -2764
  223. package/coverage/src/concepts/CallLogic__.ts.html +0 -4738
  224. package/coverage/src/concepts/CallQueryComponent__.ts.html +0 -5335
  225. package/coverage/src/concepts/Comment__.ts.html +0 -397
  226. package/coverage/src/concepts/CompletionProperty__.ts.html +0 -940
  227. package/coverage/src/concepts/ConfigGroup__.ts.html +0 -1120
  228. package/coverage/src/concepts/ConfigPropertyValue__.ts.html +0 -427
  229. package/coverage/src/concepts/ConfigProperty__.ts.html +0 -1363
  230. package/coverage/src/concepts/Configuration__.ts.html +0 -1042
  231. package/coverage/src/concepts/Connection__.ts.html +0 -1375
  232. package/coverage/src/concepts/ConnectorTrigger__.ts.html +0 -598
  233. package/coverage/src/concepts/Connector__.ts.html +0 -4318
  234. package/coverage/src/concepts/Constant__.ts.html +0 -928
  235. package/coverage/src/concepts/DataSource__.ts.html +0 -1786
  236. package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +0 -334
  237. package/coverage/src/concepts/Destination__.ts.html +0 -2743
  238. package/coverage/src/concepts/End__.ts.html +0 -436
  239. package/coverage/src/concepts/EntityIndex__.ts.html +0 -790
  240. package/coverage/src/concepts/EntityProperty__.ts.html +0 -2716
  241. package/coverage/src/concepts/Entity__.ts.html +0 -2977
  242. package/coverage/src/concepts/EnumItem__.ts.html +0 -553
  243. package/coverage/src/concepts/Enum__.ts.html +0 -1246
  244. package/coverage/src/concepts/Event__.ts.html +0 -1099
  245. package/coverage/src/concepts/ExternalDestination__.ts.html +0 -1048
  246. package/coverage/src/concepts/ForEachStatement__.ts.html +0 -1978
  247. package/coverage/src/concepts/FrontendLibrary__.ts.html +0 -1738
  248. package/coverage/src/concepts/FrontendVariable__.ts.html +0 -292
  249. package/coverage/src/concepts/Frontend__.ts.html +0 -4024
  250. package/coverage/src/concepts/Function__.ts.html +0 -3664
  251. package/coverage/src/concepts/Identifier__.ts.html +0 -1060
  252. package/coverage/src/concepts/IfStatement__.ts.html +0 -1621
  253. package/coverage/src/concepts/Integration__.ts.html +0 -1255
  254. package/coverage/src/concepts/InterfaceParam__.ts.html +0 -1102
  255. package/coverage/src/concepts/Interface__.ts.html +0 -3433
  256. package/coverage/src/concepts/JSBlock__.ts.html +0 -601
  257. package/coverage/src/concepts/JavaLogic__.ts.html +0 -463
  258. package/coverage/src/concepts/LogicItem__.ts.html +0 -1174
  259. package/coverage/src/concepts/Logic__.ts.html +0 -7444
  260. package/coverage/src/concepts/MatchCase__.ts.html +0 -2968
  261. package/coverage/src/concepts/Match__.ts.html +0 -2476
  262. package/coverage/src/concepts/MemberExpression__.ts.html +0 -1732
  263. package/coverage/src/concepts/MetadataType__.ts.html +0 -1996
  264. package/coverage/src/concepts/MicroApp__.ts.html +0 -439
  265. package/coverage/src/concepts/Module__.ts.html +0 -9874
  266. package/coverage/src/concepts/MsgTriggerEvent__.ts.html +0 -1060
  267. package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +0 -1033
  268. package/coverage/src/concepts/Namespace__.ts.html +0 -8077
  269. package/coverage/src/concepts/NewComposite__.ts.html +0 -4795
  270. package/coverage/src/concepts/NewList__.ts.html +0 -1648
  271. package/coverage/src/concepts/NewMap__.ts.html +0 -2356
  272. package/coverage/src/concepts/New__.ts.html +0 -289
  273. package/coverage/src/concepts/NullLiteral__.ts.html +0 -352
  274. package/coverage/src/concepts/NumericLiteral__.ts.html +0 -691
  275. package/coverage/src/concepts/OqlQueryComponent__.ts.html +0 -1231
  276. package/coverage/src/concepts/OverriddenLogic__.ts.html +0 -6892
  277. package/coverage/src/concepts/Param__.ts.html +0 -1735
  278. package/coverage/src/concepts/Point__.ts.html +0 -334
  279. package/coverage/src/concepts/ProcessComponent__.ts.html +0 -1693
  280. package/coverage/src/concepts/ProcessElement__.ts.html +0 -5983
  281. package/coverage/src/concepts/ProcessOutcome__.ts.html +0 -355
  282. package/coverage/src/concepts/ProcessOutcomes__.ts.html +0 -346
  283. package/coverage/src/concepts/Process__.ts.html +0 -4831
  284. package/coverage/src/concepts/QueryAggregateExpression__.ts.html +0 -583
  285. package/coverage/src/concepts/QueryFieldExpression__.ts.html +0 -586
  286. package/coverage/src/concepts/QueryFromExpression__.ts.html +0 -925
  287. package/coverage/src/concepts/QueryGroupByExpression__.ts.html +0 -574
  288. package/coverage/src/concepts/QueryJoinExpression__.ts.html +0 -1582
  289. package/coverage/src/concepts/QueryLimitExpression__.ts.html +0 -652
  290. package/coverage/src/concepts/QueryOrderByExpression__.ts.html +0 -694
  291. package/coverage/src/concepts/QuerySelectExpression__.ts.html +0 -1729
  292. package/coverage/src/concepts/Rect__.ts.html +0 -376
  293. package/coverage/src/concepts/Return__.ts.html +0 -1327
  294. package/coverage/src/concepts/Role__.ts.html +0 -604
  295. package/coverage/src/concepts/SelectMembers__.ts.html +0 -1261
  296. package/coverage/src/concepts/Slot__.ts.html +0 -643
  297. package/coverage/src/concepts/SqlQueryComponent__.ts.html +0 -997
  298. package/coverage/src/concepts/Start__.ts.html +0 -307
  299. package/coverage/src/concepts/StringInterpolation__.ts.html +0 -1150
  300. package/coverage/src/concepts/StringLiteral__.ts.html +0 -508
  301. package/coverage/src/concepts/StructureProperty__.ts.html +0 -1147
  302. package/coverage/src/concepts/Structure__.ts.html +0 -2119
  303. package/coverage/src/concepts/SwitchCase__.ts.html +0 -1189
  304. package/coverage/src/concepts/SwitchStatement__.ts.html +0 -892
  305. package/coverage/src/concepts/Theme__.ts.html +0 -361
  306. package/coverage/src/concepts/Transactional__.ts.html +0 -631
  307. package/coverage/src/concepts/TriggerEvent__.ts.html +0 -1027
  308. package/coverage/src/concepts/TriggerLauncher__.ts.html +0 -778
  309. package/coverage/src/concepts/TypeAnnotation__.ts.html +0 -3880
  310. package/coverage/src/concepts/TypeParam__.ts.html +0 -322
  311. package/coverage/src/concepts/UnaryExpression__.ts.html +0 -724
  312. package/coverage/src/concepts/Unparsed__.ts.html +0 -397
  313. package/coverage/src/concepts/UseComponent__.ts.html +0 -334
  314. package/coverage/src/concepts/ValidationRule__.ts.html +0 -1855
  315. package/coverage/src/concepts/Variable__.ts.html +0 -1534
  316. package/coverage/src/concepts/ViewBlock__.ts.html +0 -355
  317. package/coverage/src/concepts/ViewComponent__.ts.html +0 -4255
  318. package/coverage/src/concepts/ViewElement__.ts.html +0 -8956
  319. package/coverage/src/concepts/View__.ts.html +0 -8875
  320. package/coverage/src/concepts/WhileStatement__.ts.html +0 -1096
  321. package/coverage/src/concepts/basics/stdlib/index.html +0 -356
  322. package/coverage/src/concepts/basics/stdlib/index.ts.html +0 -208
  323. package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +0 -565
  324. package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +0 -517
  325. package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +0 -226
  326. package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +0 -172
  327. package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +0 -214
  328. package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +0 -145
  329. package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +0 -589
  330. package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +0 -214
  331. package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +0 -229
  332. package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +0 -268
  333. package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +0 -1999
  334. package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +0 -3259
  335. package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +0 -6844
  336. package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +0 -1768
  337. package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +0 -163
  338. package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +0 -664
  339. package/coverage/src/concepts/basics/types/coreTypeList.ts.html +0 -121
  340. package/coverage/src/concepts/basics/types/index.html +0 -131
  341. package/coverage/src/concepts/basics/types/index.ts.html +0 -160
  342. package/coverage/src/concepts/index.html +0 -1976
  343. package/coverage/src/concepts/index.ts.html +0 -103
  344. package/coverage/src/concepts/index__.ts.html +0 -454
  345. package/coverage/src/config.ts.html +0 -325
  346. package/coverage/src/decorators/index.html +0 -131
  347. package/coverage/src/decorators/index.ts.html +0 -574
  348. package/coverage/src/decorators/promise.ts.html +0 -169
  349. package/coverage/src/eventBus.ts.html +0 -100
  350. package/coverage/src/generator/compileComponent.ts.html +0 -142
  351. package/coverage/src/generator/genBundleFiles.ts.html +0 -1822
  352. package/coverage/src/generator/genHash.ts.html +0 -124
  353. package/coverage/src/generator/genMetaData.ts.html +0 -1129
  354. package/coverage/src/generator/genReleaseBody.ts.html +0 -1282
  355. package/coverage/src/generator/icestark.ts.html +0 -220
  356. package/coverage/src/generator/index.html +0 -266
  357. package/coverage/src/generator/index.ts.html +0 -106
  358. package/coverage/src/generator/microApp.ts.html +0 -172
  359. package/coverage/src/generator/permission.ts.html +0 -1036
  360. package/coverage/src/generator/qiankun.ts.html +0 -232
  361. package/coverage/src/generator/styleReplacer.ts.html +0 -199
  362. package/coverage/src/index.html +0 -146
  363. package/coverage/src/index.ts.html +0 -121
  364. package/coverage/src/manager/diagnostic.ts.html +0 -442
  365. package/coverage/src/manager/index.html +0 -131
  366. package/coverage/src/manager/stepRecorder.ts.html +0 -457
  367. package/coverage/src/natural/genNaturalTS.ts.html +0 -355
  368. package/coverage/src/natural/index.html +0 -161
  369. package/coverage/src/natural/index.ts.html +0 -91
  370. package/coverage/src/natural/naslStdlibMap.ts.html +0 -157
  371. package/coverage/src/natural/transformTSCode.ts.html +0 -2707
  372. package/coverage/src/sentry/index.html +0 -116
  373. package/coverage/src/sentry/index.ts.html +0 -676
  374. package/coverage/src/server/createUiTs.ts.html +0 -919
  375. package/coverage/src/server/entity2LogicNamespace.ts.html +0 -1294
  376. package/coverage/src/server/event.js.html +0 -526
  377. package/coverage/src/server/extendBaseNode.ts.html +0 -1765
  378. package/coverage/src/server/formatTsUtils.ts.html +0 -2689
  379. package/coverage/src/server/getConnector.ts.html +0 -316
  380. package/coverage/src/server/getExtensionModules.ts.html +0 -178
  381. package/coverage/src/server/getFunctions.ts.html +0 -133
  382. package/coverage/src/server/getInterfaces.ts.html +0 -229
  383. package/coverage/src/server/getLogging.ts.html +0 -100
  384. package/coverage/src/server/getLogics.ts.html +0 -1363
  385. package/coverage/src/server/getMemberIdentifier.ts.html +0 -1609
  386. package/coverage/src/server/getProcessComponents.ts.html +0 -112
  387. package/coverage/src/server/getProcesses.ts.html +0 -2023
  388. package/coverage/src/server/getValidates.ts.html +0 -115
  389. package/coverage/src/server/index.html +0 -401
  390. package/coverage/src/server/index.ts.html +0 -229
  391. package/coverage/src/server/naslServer.ts.html +0 -14812
  392. package/coverage/src/server/naslStdlibMap.ts.html +0 -241
  393. package/coverage/src/server/process2LogicNamespace.ts.html +0 -454
  394. package/coverage/src/server/translator.ts.html +0 -2566
  395. package/coverage/src/service/creator/add.configs.js.html +0 -397
  396. package/coverage/src/service/creator/errHandles.js.html +0 -304
  397. package/coverage/src/service/creator/index.html +0 -146
  398. package/coverage/src/service/creator/index.js.html +0 -352
  399. package/coverage/src/service/datasource/api.js.html +0 -118
  400. package/coverage/src/service/datasource/index.html +0 -131
  401. package/coverage/src/service/datasource/index.js.html +0 -103
  402. package/coverage/src/service/logic/api.js.html +0 -109
  403. package/coverage/src/service/logic/index.html +0 -131
  404. package/coverage/src/service/logic/index.js.html +0 -103
  405. package/coverage/src/service/storage/api.js.html +0 -202
  406. package/coverage/src/service/storage/index.html +0 -206
  407. package/coverage/src/service/storage/index.ts.html +0 -103
  408. package/coverage/src/service/storage/init.ts.html +0 -3661
  409. package/coverage/src/service/storage/jsoner.ts.html +0 -502
  410. package/coverage/src/service/storage/map.ts.html +0 -256
  411. package/coverage/src/service/storage/service.ts.html +0 -331
  412. package/coverage/src/service/storage/storagePoint.ts.html +0 -304
  413. package/coverage/src/templator/genCallComponentLogic.ts.html +0 -163
  414. package/coverage/src/templator/genCreateBlock.ts.html +0 -1084
  415. package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +0 -1627
  416. package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +0 -2242
  417. package/coverage/src/templator/genEditTableBlock.ts.html +0 -1024
  418. package/coverage/src/templator/genEnumSelectBlock.ts.html +0 -178
  419. package/coverage/src/templator/genGetBlock.ts.html +0 -451
  420. package/coverage/src/templator/genGridViewBlock.ts.html +0 -1114
  421. package/coverage/src/templator/genListViewBlock.ts.html +0 -475
  422. package/coverage/src/templator/genQueryComponent.ts.html +0 -1207
  423. package/coverage/src/templator/genSelectBlock.ts.html +0 -1243
  424. package/coverage/src/templator/genTableBlock.ts.html +0 -973
  425. package/coverage/src/templator/genUpdateBlock.ts.html +0 -1204
  426. package/coverage/src/templator/index.html +0 -326
  427. package/coverage/src/templator/index.ts.html +0 -154
  428. package/coverage/src/templator/utils.ts.html +0 -1927
  429. package/coverage/src/translator/constant.ts.html +0 -106
  430. package/coverage/src/translator/index.html +0 -146
  431. package/coverage/src/translator/index.ts.html +0 -94
  432. package/coverage/src/translator/utils.ts.html +0 -493
  433. package/coverage/src/utils/cookie.ts.html +0 -265
  434. package/coverage/src/utils/env.ts.html +0 -91
  435. package/coverage/src/utils/index.html +0 -236
  436. package/coverage/src/utils/index.ts.html +0 -748
  437. package/coverage/src/utils/logger.ts.html +0 -145
  438. package/coverage/src/utils/sortTsString.ts.html +0 -187
  439. package/coverage/src/utils/string.ts.html +0 -502
  440. package/coverage/src/utils/time-slicing.ts.html +0 -418
  441. package/coverage/src/utils/traverse.ts.html +0 -568
  442. package/coverage/src/utils/window.ts.html +0 -112
  443. package/out/utils/time-slicing.d.ts +0 -41
  444. package/out/utils/time-slicing.js +0 -82
  445. package/out/utils/time-slicing.js.map +0 -1
@@ -1,3661 +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">5.5% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>35/636</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0.52% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>2/382</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">1.07% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>1/93</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">5.69% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>35/615</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>
959
- <a name='L894'></a><a href='#L894'>894</a>
960
- <a name='L895'></a><a href='#L895'>895</a>
961
- <a name='L896'></a><a href='#L896'>896</a>
962
- <a name='L897'></a><a href='#L897'>897</a>
963
- <a name='L898'></a><a href='#L898'>898</a>
964
- <a name='L899'></a><a href='#L899'>899</a>
965
- <a name='L900'></a><a href='#L900'>900</a>
966
- <a name='L901'></a><a href='#L901'>901</a>
967
- <a name='L902'></a><a href='#L902'>902</a>
968
- <a name='L903'></a><a href='#L903'>903</a>
969
- <a name='L904'></a><a href='#L904'>904</a>
970
- <a name='L905'></a><a href='#L905'>905</a>
971
- <a name='L906'></a><a href='#L906'>906</a>
972
- <a name='L907'></a><a href='#L907'>907</a>
973
- <a name='L908'></a><a href='#L908'>908</a>
974
- <a name='L909'></a><a href='#L909'>909</a>
975
- <a name='L910'></a><a href='#L910'>910</a>
976
- <a name='L911'></a><a href='#L911'>911</a>
977
- <a name='L912'></a><a href='#L912'>912</a>
978
- <a name='L913'></a><a href='#L913'>913</a>
979
- <a name='L914'></a><a href='#L914'>914</a>
980
- <a name='L915'></a><a href='#L915'>915</a>
981
- <a name='L916'></a><a href='#L916'>916</a>
982
- <a name='L917'></a><a href='#L917'>917</a>
983
- <a name='L918'></a><a href='#L918'>918</a>
984
- <a name='L919'></a><a href='#L919'>919</a>
985
- <a name='L920'></a><a href='#L920'>920</a>
986
- <a name='L921'></a><a href='#L921'>921</a>
987
- <a name='L922'></a><a href='#L922'>922</a>
988
- <a name='L923'></a><a href='#L923'>923</a>
989
- <a name='L924'></a><a href='#L924'>924</a>
990
- <a name='L925'></a><a href='#L925'>925</a>
991
- <a name='L926'></a><a href='#L926'>926</a>
992
- <a name='L927'></a><a href='#L927'>927</a>
993
- <a name='L928'></a><a href='#L928'>928</a>
994
- <a name='L929'></a><a href='#L929'>929</a>
995
- <a name='L930'></a><a href='#L930'>930</a>
996
- <a name='L931'></a><a href='#L931'>931</a>
997
- <a name='L932'></a><a href='#L932'>932</a>
998
- <a name='L933'></a><a href='#L933'>933</a>
999
- <a name='L934'></a><a href='#L934'>934</a>
1000
- <a name='L935'></a><a href='#L935'>935</a>
1001
- <a name='L936'></a><a href='#L936'>936</a>
1002
- <a name='L937'></a><a href='#L937'>937</a>
1003
- <a name='L938'></a><a href='#L938'>938</a>
1004
- <a name='L939'></a><a href='#L939'>939</a>
1005
- <a name='L940'></a><a href='#L940'>940</a>
1006
- <a name='L941'></a><a href='#L941'>941</a>
1007
- <a name='L942'></a><a href='#L942'>942</a>
1008
- <a name='L943'></a><a href='#L943'>943</a>
1009
- <a name='L944'></a><a href='#L944'>944</a>
1010
- <a name='L945'></a><a href='#L945'>945</a>
1011
- <a name='L946'></a><a href='#L946'>946</a>
1012
- <a name='L947'></a><a href='#L947'>947</a>
1013
- <a name='L948'></a><a href='#L948'>948</a>
1014
- <a name='L949'></a><a href='#L949'>949</a>
1015
- <a name='L950'></a><a href='#L950'>950</a>
1016
- <a name='L951'></a><a href='#L951'>951</a>
1017
- <a name='L952'></a><a href='#L952'>952</a>
1018
- <a name='L953'></a><a href='#L953'>953</a>
1019
- <a name='L954'></a><a href='#L954'>954</a>
1020
- <a name='L955'></a><a href='#L955'>955</a>
1021
- <a name='L956'></a><a href='#L956'>956</a>
1022
- <a name='L957'></a><a href='#L957'>957</a>
1023
- <a name='L958'></a><a href='#L958'>958</a>
1024
- <a name='L959'></a><a href='#L959'>959</a>
1025
- <a name='L960'></a><a href='#L960'>960</a>
1026
- <a name='L961'></a><a href='#L961'>961</a>
1027
- <a name='L962'></a><a href='#L962'>962</a>
1028
- <a name='L963'></a><a href='#L963'>963</a>
1029
- <a name='L964'></a><a href='#L964'>964</a>
1030
- <a name='L965'></a><a href='#L965'>965</a>
1031
- <a name='L966'></a><a href='#L966'>966</a>
1032
- <a name='L967'></a><a href='#L967'>967</a>
1033
- <a name='L968'></a><a href='#L968'>968</a>
1034
- <a name='L969'></a><a href='#L969'>969</a>
1035
- <a name='L970'></a><a href='#L970'>970</a>
1036
- <a name='L971'></a><a href='#L971'>971</a>
1037
- <a name='L972'></a><a href='#L972'>972</a>
1038
- <a name='L973'></a><a href='#L973'>973</a>
1039
- <a name='L974'></a><a href='#L974'>974</a>
1040
- <a name='L975'></a><a href='#L975'>975</a>
1041
- <a name='L976'></a><a href='#L976'>976</a>
1042
- <a name='L977'></a><a href='#L977'>977</a>
1043
- <a name='L978'></a><a href='#L978'>978</a>
1044
- <a name='L979'></a><a href='#L979'>979</a>
1045
- <a name='L980'></a><a href='#L980'>980</a>
1046
- <a name='L981'></a><a href='#L981'>981</a>
1047
- <a name='L982'></a><a href='#L982'>982</a>
1048
- <a name='L983'></a><a href='#L983'>983</a>
1049
- <a name='L984'></a><a href='#L984'>984</a>
1050
- <a name='L985'></a><a href='#L985'>985</a>
1051
- <a name='L986'></a><a href='#L986'>986</a>
1052
- <a name='L987'></a><a href='#L987'>987</a>
1053
- <a name='L988'></a><a href='#L988'>988</a>
1054
- <a name='L989'></a><a href='#L989'>989</a>
1055
- <a name='L990'></a><a href='#L990'>990</a>
1056
- <a name='L991'></a><a href='#L991'>991</a>
1057
- <a name='L992'></a><a href='#L992'>992</a>
1058
- <a name='L993'></a><a href='#L993'>993</a>
1059
- <a name='L994'></a><a href='#L994'>994</a>
1060
- <a name='L995'></a><a href='#L995'>995</a>
1061
- <a name='L996'></a><a href='#L996'>996</a>
1062
- <a name='L997'></a><a href='#L997'>997</a>
1063
- <a name='L998'></a><a href='#L998'>998</a>
1064
- <a name='L999'></a><a href='#L999'>999</a>
1065
- <a name='L1000'></a><a href='#L1000'>1000</a>
1066
- <a name='L1001'></a><a href='#L1001'>1001</a>
1067
- <a name='L1002'></a><a href='#L1002'>1002</a>
1068
- <a name='L1003'></a><a href='#L1003'>1003</a>
1069
- <a name='L1004'></a><a href='#L1004'>1004</a>
1070
- <a name='L1005'></a><a href='#L1005'>1005</a>
1071
- <a name='L1006'></a><a href='#L1006'>1006</a>
1072
- <a name='L1007'></a><a href='#L1007'>1007</a>
1073
- <a name='L1008'></a><a href='#L1008'>1008</a>
1074
- <a name='L1009'></a><a href='#L1009'>1009</a>
1075
- <a name='L1010'></a><a href='#L1010'>1010</a>
1076
- <a name='L1011'></a><a href='#L1011'>1011</a>
1077
- <a name='L1012'></a><a href='#L1012'>1012</a>
1078
- <a name='L1013'></a><a href='#L1013'>1013</a>
1079
- <a name='L1014'></a><a href='#L1014'>1014</a>
1080
- <a name='L1015'></a><a href='#L1015'>1015</a>
1081
- <a name='L1016'></a><a href='#L1016'>1016</a>
1082
- <a name='L1017'></a><a href='#L1017'>1017</a>
1083
- <a name='L1018'></a><a href='#L1018'>1018</a>
1084
- <a name='L1019'></a><a href='#L1019'>1019</a>
1085
- <a name='L1020'></a><a href='#L1020'>1020</a>
1086
- <a name='L1021'></a><a href='#L1021'>1021</a>
1087
- <a name='L1022'></a><a href='#L1022'>1022</a>
1088
- <a name='L1023'></a><a href='#L1023'>1023</a>
1089
- <a name='L1024'></a><a href='#L1024'>1024</a>
1090
- <a name='L1025'></a><a href='#L1025'>1025</a>
1091
- <a name='L1026'></a><a href='#L1026'>1026</a>
1092
- <a name='L1027'></a><a href='#L1027'>1027</a>
1093
- <a name='L1028'></a><a href='#L1028'>1028</a>
1094
- <a name='L1029'></a><a href='#L1029'>1029</a>
1095
- <a name='L1030'></a><a href='#L1030'>1030</a>
1096
- <a name='L1031'></a><a href='#L1031'>1031</a>
1097
- <a name='L1032'></a><a href='#L1032'>1032</a>
1098
- <a name='L1033'></a><a href='#L1033'>1033</a>
1099
- <a name='L1034'></a><a href='#L1034'>1034</a>
1100
- <a name='L1035'></a><a href='#L1035'>1035</a>
1101
- <a name='L1036'></a><a href='#L1036'>1036</a>
1102
- <a name='L1037'></a><a href='#L1037'>1037</a>
1103
- <a name='L1038'></a><a href='#L1038'>1038</a>
1104
- <a name='L1039'></a><a href='#L1039'>1039</a>
1105
- <a name='L1040'></a><a href='#L1040'>1040</a>
1106
- <a name='L1041'></a><a href='#L1041'>1041</a>
1107
- <a name='L1042'></a><a href='#L1042'>1042</a>
1108
- <a name='L1043'></a><a href='#L1043'>1043</a>
1109
- <a name='L1044'></a><a href='#L1044'>1044</a>
1110
- <a name='L1045'></a><a href='#L1045'>1045</a>
1111
- <a name='L1046'></a><a href='#L1046'>1046</a>
1112
- <a name='L1047'></a><a href='#L1047'>1047</a>
1113
- <a name='L1048'></a><a href='#L1048'>1048</a>
1114
- <a name='L1049'></a><a href='#L1049'>1049</a>
1115
- <a name='L1050'></a><a href='#L1050'>1050</a>
1116
- <a name='L1051'></a><a href='#L1051'>1051</a>
1117
- <a name='L1052'></a><a href='#L1052'>1052</a>
1118
- <a name='L1053'></a><a href='#L1053'>1053</a>
1119
- <a name='L1054'></a><a href='#L1054'>1054</a>
1120
- <a name='L1055'></a><a href='#L1055'>1055</a>
1121
- <a name='L1056'></a><a href='#L1056'>1056</a>
1122
- <a name='L1057'></a><a href='#L1057'>1057</a>
1123
- <a name='L1058'></a><a href='#L1058'>1058</a>
1124
- <a name='L1059'></a><a href='#L1059'>1059</a>
1125
- <a name='L1060'></a><a href='#L1060'>1060</a>
1126
- <a name='L1061'></a><a href='#L1061'>1061</a>
1127
- <a name='L1062'></a><a href='#L1062'>1062</a>
1128
- <a name='L1063'></a><a href='#L1063'>1063</a>
1129
- <a name='L1064'></a><a href='#L1064'>1064</a>
1130
- <a name='L1065'></a><a href='#L1065'>1065</a>
1131
- <a name='L1066'></a><a href='#L1066'>1066</a>
1132
- <a name='L1067'></a><a href='#L1067'>1067</a>
1133
- <a name='L1068'></a><a href='#L1068'>1068</a>
1134
- <a name='L1069'></a><a href='#L1069'>1069</a>
1135
- <a name='L1070'></a><a href='#L1070'>1070</a>
1136
- <a name='L1071'></a><a href='#L1071'>1071</a>
1137
- <a name='L1072'></a><a href='#L1072'>1072</a>
1138
- <a name='L1073'></a><a href='#L1073'>1073</a>
1139
- <a name='L1074'></a><a href='#L1074'>1074</a>
1140
- <a name='L1075'></a><a href='#L1075'>1075</a>
1141
- <a name='L1076'></a><a href='#L1076'>1076</a>
1142
- <a name='L1077'></a><a href='#L1077'>1077</a>
1143
- <a name='L1078'></a><a href='#L1078'>1078</a>
1144
- <a name='L1079'></a><a href='#L1079'>1079</a>
1145
- <a name='L1080'></a><a href='#L1080'>1080</a>
1146
- <a name='L1081'></a><a href='#L1081'>1081</a>
1147
- <a name='L1082'></a><a href='#L1082'>1082</a>
1148
- <a name='L1083'></a><a href='#L1083'>1083</a>
1149
- <a name='L1084'></a><a href='#L1084'>1084</a>
1150
- <a name='L1085'></a><a href='#L1085'>1085</a>
1151
- <a name='L1086'></a><a href='#L1086'>1086</a>
1152
- <a name='L1087'></a><a href='#L1087'>1087</a>
1153
- <a name='L1088'></a><a href='#L1088'>1088</a>
1154
- <a name='L1089'></a><a href='#L1089'>1089</a>
1155
- <a name='L1090'></a><a href='#L1090'>1090</a>
1156
- <a name='L1091'></a><a href='#L1091'>1091</a>
1157
- <a name='L1092'></a><a href='#L1092'>1092</a>
1158
- <a name='L1093'></a><a href='#L1093'>1093</a>
1159
- <a name='L1094'></a><a href='#L1094'>1094</a>
1160
- <a name='L1095'></a><a href='#L1095'>1095</a>
1161
- <a name='L1096'></a><a href='#L1096'>1096</a>
1162
- <a name='L1097'></a><a href='#L1097'>1097</a>
1163
- <a name='L1098'></a><a href='#L1098'>1098</a>
1164
- <a name='L1099'></a><a href='#L1099'>1099</a>
1165
- <a name='L1100'></a><a href='#L1100'>1100</a>
1166
- <a name='L1101'></a><a href='#L1101'>1101</a>
1167
- <a name='L1102'></a><a href='#L1102'>1102</a>
1168
- <a name='L1103'></a><a href='#L1103'>1103</a>
1169
- <a name='L1104'></a><a href='#L1104'>1104</a>
1170
- <a name='L1105'></a><a href='#L1105'>1105</a>
1171
- <a name='L1106'></a><a href='#L1106'>1106</a>
1172
- <a name='L1107'></a><a href='#L1107'>1107</a>
1173
- <a name='L1108'></a><a href='#L1108'>1108</a>
1174
- <a name='L1109'></a><a href='#L1109'>1109</a>
1175
- <a name='L1110'></a><a href='#L1110'>1110</a>
1176
- <a name='L1111'></a><a href='#L1111'>1111</a>
1177
- <a name='L1112'></a><a href='#L1112'>1112</a>
1178
- <a name='L1113'></a><a href='#L1113'>1113</a>
1179
- <a name='L1114'></a><a href='#L1114'>1114</a>
1180
- <a name='L1115'></a><a href='#L1115'>1115</a>
1181
- <a name='L1116'></a><a href='#L1116'>1116</a>
1182
- <a name='L1117'></a><a href='#L1117'>1117</a>
1183
- <a name='L1118'></a><a href='#L1118'>1118</a>
1184
- <a name='L1119'></a><a href='#L1119'>1119</a>
1185
- <a name='L1120'></a><a href='#L1120'>1120</a>
1186
- <a name='L1121'></a><a href='#L1121'>1121</a>
1187
- <a name='L1122'></a><a href='#L1122'>1122</a>
1188
- <a name='L1123'></a><a href='#L1123'>1123</a>
1189
- <a name='L1124'></a><a href='#L1124'>1124</a>
1190
- <a name='L1125'></a><a href='#L1125'>1125</a>
1191
- <a name='L1126'></a><a href='#L1126'>1126</a>
1192
- <a name='L1127'></a><a href='#L1127'>1127</a>
1193
- <a name='L1128'></a><a href='#L1128'>1128</a>
1194
- <a name='L1129'></a><a href='#L1129'>1129</a>
1195
- <a name='L1130'></a><a href='#L1130'>1130</a>
1196
- <a name='L1131'></a><a href='#L1131'>1131</a>
1197
- <a name='L1132'></a><a href='#L1132'>1132</a>
1198
- <a name='L1133'></a><a href='#L1133'>1133</a>
1199
- <a name='L1134'></a><a href='#L1134'>1134</a>
1200
- <a name='L1135'></a><a href='#L1135'>1135</a>
1201
- <a name='L1136'></a><a href='#L1136'>1136</a>
1202
- <a name='L1137'></a><a href='#L1137'>1137</a>
1203
- <a name='L1138'></a><a href='#L1138'>1138</a>
1204
- <a name='L1139'></a><a href='#L1139'>1139</a>
1205
- <a name='L1140'></a><a href='#L1140'>1140</a>
1206
- <a name='L1141'></a><a href='#L1141'>1141</a>
1207
- <a name='L1142'></a><a href='#L1142'>1142</a>
1208
- <a name='L1143'></a><a href='#L1143'>1143</a>
1209
- <a name='L1144'></a><a href='#L1144'>1144</a>
1210
- <a name='L1145'></a><a href='#L1145'>1145</a>
1211
- <a name='L1146'></a><a href='#L1146'>1146</a>
1212
- <a name='L1147'></a><a href='#L1147'>1147</a>
1213
- <a name='L1148'></a><a href='#L1148'>1148</a>
1214
- <a name='L1149'></a><a href='#L1149'>1149</a>
1215
- <a name='L1150'></a><a href='#L1150'>1150</a>
1216
- <a name='L1151'></a><a href='#L1151'>1151</a>
1217
- <a name='L1152'></a><a href='#L1152'>1152</a>
1218
- <a name='L1153'></a><a href='#L1153'>1153</a>
1219
- <a name='L1154'></a><a href='#L1154'>1154</a>
1220
- <a name='L1155'></a><a href='#L1155'>1155</a>
1221
- <a name='L1156'></a><a href='#L1156'>1156</a>
1222
- <a name='L1157'></a><a href='#L1157'>1157</a>
1223
- <a name='L1158'></a><a href='#L1158'>1158</a>
1224
- <a name='L1159'></a><a href='#L1159'>1159</a>
1225
- <a name='L1160'></a><a href='#L1160'>1160</a>
1226
- <a name='L1161'></a><a href='#L1161'>1161</a>
1227
- <a name='L1162'></a><a href='#L1162'>1162</a>
1228
- <a name='L1163'></a><a href='#L1163'>1163</a>
1229
- <a name='L1164'></a><a href='#L1164'>1164</a>
1230
- <a name='L1165'></a><a href='#L1165'>1165</a>
1231
- <a name='L1166'></a><a href='#L1166'>1166</a>
1232
- <a name='L1167'></a><a href='#L1167'>1167</a>
1233
- <a name='L1168'></a><a href='#L1168'>1168</a>
1234
- <a name='L1169'></a><a href='#L1169'>1169</a>
1235
- <a name='L1170'></a><a href='#L1170'>1170</a>
1236
- <a name='L1171'></a><a href='#L1171'>1171</a>
1237
- <a name='L1172'></a><a href='#L1172'>1172</a>
1238
- <a name='L1173'></a><a href='#L1173'>1173</a>
1239
- <a name='L1174'></a><a href='#L1174'>1174</a>
1240
- <a name='L1175'></a><a href='#L1175'>1175</a>
1241
- <a name='L1176'></a><a href='#L1176'>1176</a>
1242
- <a name='L1177'></a><a href='#L1177'>1177</a>
1243
- <a name='L1178'></a><a href='#L1178'>1178</a>
1244
- <a name='L1179'></a><a href='#L1179'>1179</a>
1245
- <a name='L1180'></a><a href='#L1180'>1180</a>
1246
- <a name='L1181'></a><a href='#L1181'>1181</a>
1247
- <a name='L1182'></a><a href='#L1182'>1182</a>
1248
- <a name='L1183'></a><a href='#L1183'>1183</a>
1249
- <a name='L1184'></a><a href='#L1184'>1184</a>
1250
- <a name='L1185'></a><a href='#L1185'>1185</a>
1251
- <a name='L1186'></a><a href='#L1186'>1186</a>
1252
- <a name='L1187'></a><a href='#L1187'>1187</a>
1253
- <a name='L1188'></a><a href='#L1188'>1188</a>
1254
- <a name='L1189'></a><a href='#L1189'>1189</a>
1255
- <a name='L1190'></a><a href='#L1190'>1190</a>
1256
- <a name='L1191'></a><a href='#L1191'>1191</a>
1257
- <a name='L1192'></a><a href='#L1192'>1192</a>
1258
- <a name='L1193'></a><a href='#L1193'>1193</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
1259
- <span class="cline-any cline-yes">1x</span>
1260
- <span class="cline-any cline-yes">1x</span>
1261
- <span class="cline-any cline-yes">1x</span>
1262
- <span class="cline-any cline-yes">1x</span>
1263
- <span class="cline-any cline-yes">1x</span>
1264
- <span class="cline-any cline-yes">1x</span>
1265
- <span class="cline-any cline-yes">1x</span>
1266
- <span class="cline-any cline-yes">1x</span>
1267
- <span class="cline-any cline-neutral">&nbsp;</span>
1268
- <span class="cline-any cline-yes">1x</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-neutral">&nbsp;</span>
1271
- <span class="cline-any cline-neutral">&nbsp;</span>
1272
- <span class="cline-any cline-neutral">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-yes">1x</span>
1275
- <span class="cline-any cline-yes">1x</span>
1276
- <span class="cline-any cline-yes">1x</span>
1277
- <span class="cline-any cline-yes">1x</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-yes">1x</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-yes">1x</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-yes">1x</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-no">&nbsp;</span>
1289
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-no">&nbsp;</span>
1296
- <span class="cline-any cline-no">&nbsp;</span>
1297
- <span class="cline-any cline-no">&nbsp;</span>
1298
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1302
- <span class="cline-any cline-no">&nbsp;</span>
1303
- <span class="cline-any cline-no">&nbsp;</span>
1304
- <span class="cline-any cline-neutral">&nbsp;</span>
1305
- <span class="cline-any cline-no">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-no">&nbsp;</span>
1308
- <span class="cline-any cline-no">&nbsp;</span>
1309
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1314
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-no">&nbsp;</span>
1321
- <span class="cline-any cline-no">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-no">&nbsp;</span>
1324
- <span class="cline-any cline-no">&nbsp;</span>
1325
- <span class="cline-any cline-no">&nbsp;</span>
1326
- <span class="cline-any cline-no">&nbsp;</span>
1327
- <span class="cline-any cline-no">&nbsp;</span>
1328
- <span class="cline-any cline-neutral">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-no">&nbsp;</span>
1331
- <span class="cline-any cline-no">&nbsp;</span>
1332
- <span class="cline-any cline-no">&nbsp;</span>
1333
- <span class="cline-any cline-no">&nbsp;</span>
1334
- <span class="cline-any cline-no">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
- <span class="cline-any cline-no">&nbsp;</span>
1337
- <span class="cline-any cline-no">&nbsp;</span>
1338
- <span class="cline-any cline-no">&nbsp;</span>
1339
- <span class="cline-any cline-no">&nbsp;</span>
1340
- <span class="cline-any cline-neutral">&nbsp;</span>
1341
- <span class="cline-any cline-no">&nbsp;</span>
1342
- <span class="cline-any cline-no">&nbsp;</span>
1343
- <span class="cline-any cline-no">&nbsp;</span>
1344
- <span class="cline-any cline-no">&nbsp;</span>
1345
- <span class="cline-any cline-no">&nbsp;</span>
1346
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1356
- <span class="cline-any cline-neutral">&nbsp;</span>
1357
- <span class="cline-any cline-no">&nbsp;</span>
1358
- <span class="cline-any cline-no">&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-yes">1x</span>
1365
- <span class="cline-any cline-no">&nbsp;</span>
1366
- <span class="cline-any cline-no">&nbsp;</span>
1367
- <span class="cline-any cline-no">&nbsp;</span>
1368
- <span class="cline-any cline-no">&nbsp;</span>
1369
- <span class="cline-any cline-no">&nbsp;</span>
1370
- <span class="cline-any cline-no">&nbsp;</span>
1371
- <span class="cline-any cline-no">&nbsp;</span>
1372
- <span class="cline-any cline-no">&nbsp;</span>
1373
- <span class="cline-any cline-no">&nbsp;</span>
1374
- <span class="cline-any cline-no">&nbsp;</span>
1375
- <span class="cline-any cline-no">&nbsp;</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-no">&nbsp;</span>
1378
- <span class="cline-any cline-no">&nbsp;</span>
1379
- <span class="cline-any cline-no">&nbsp;</span>
1380
- <span class="cline-any cline-no">&nbsp;</span>
1381
- <span class="cline-any cline-no">&nbsp;</span>
1382
- <span class="cline-any cline-no">&nbsp;</span>
1383
- <span class="cline-any cline-no">&nbsp;</span>
1384
- <span class="cline-any cline-neutral">&nbsp;</span>
1385
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-neutral">&nbsp;</span>
1391
- <span class="cline-any cline-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-no">&nbsp;</span>
1393
- <span class="cline-any cline-no">&nbsp;</span>
1394
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1398
- <span class="cline-any cline-no">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-neutral">&nbsp;</span>
1401
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1410
- <span class="cline-any cline-no">&nbsp;</span>
1411
- <span class="cline-any cline-neutral">&nbsp;</span>
1412
- <span class="cline-any cline-no">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-neutral">&nbsp;</span>
1425
- <span class="cline-any cline-no">&nbsp;</span>
1426
- <span class="cline-any cline-no">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&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-yes">1x</span>
1434
- <span class="cline-any cline-no">&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-no">&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-no">&nbsp;</span>
1444
- <span class="cline-any cline-neutral">&nbsp;</span>
1445
- <span class="cline-any cline-no">&nbsp;</span>
1446
- <span class="cline-any cline-no">&nbsp;</span>
1447
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1453
- <span class="cline-any cline-no">&nbsp;</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-neutral">&nbsp;</span>
1456
- <span class="cline-any cline-no">&nbsp;</span>
1457
- <span class="cline-any cline-no">&nbsp;</span>
1458
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1465
- <span class="cline-any cline-no">&nbsp;</span>
1466
- <span class="cline-any cline-no">&nbsp;</span>
1467
- <span class="cline-any cline-no">&nbsp;</span>
1468
- <span class="cline-any cline-no">&nbsp;</span>
1469
- <span class="cline-any cline-no">&nbsp;</span>
1470
- <span class="cline-any cline-no">&nbsp;</span>
1471
- <span class="cline-any cline-no">&nbsp;</span>
1472
- <span class="cline-any cline-no">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-no">&nbsp;</span>
1475
- <span class="cline-any cline-no">&nbsp;</span>
1476
- <span class="cline-any cline-no">&nbsp;</span>
1477
- <span class="cline-any cline-no">&nbsp;</span>
1478
- <span class="cline-any cline-no">&nbsp;</span>
1479
- <span class="cline-any cline-neutral">&nbsp;</span>
1480
- <span class="cline-any cline-no">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-no">&nbsp;</span>
1483
- <span class="cline-any cline-no">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-no">&nbsp;</span>
1486
- <span class="cline-any cline-no">&nbsp;</span>
1487
- <span class="cline-any cline-no">&nbsp;</span>
1488
- <span class="cline-any cline-no">&nbsp;</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-no">&nbsp;</span>
1492
- <span class="cline-any cline-neutral">&nbsp;</span>
1493
- <span class="cline-any cline-no">&nbsp;</span>
1494
- <span class="cline-any cline-neutral">&nbsp;</span>
1495
- <span class="cline-any cline-no">&nbsp;</span>
1496
- <span class="cline-any cline-no">&nbsp;</span>
1497
- <span class="cline-any cline-neutral">&nbsp;</span>
1498
- <span class="cline-any cline-no">&nbsp;</span>
1499
- <span class="cline-any cline-neutral">&nbsp;</span>
1500
- <span class="cline-any cline-no">&nbsp;</span>
1501
- <span class="cline-any cline-neutral">&nbsp;</span>
1502
- <span class="cline-any cline-no">&nbsp;</span>
1503
- <span class="cline-any cline-no">&nbsp;</span>
1504
- <span class="cline-any cline-no">&nbsp;</span>
1505
- <span class="cline-any cline-neutral">&nbsp;</span>
1506
- <span class="cline-any cline-neutral">&nbsp;</span>
1507
- <span class="cline-any cline-no">&nbsp;</span>
1508
- <span class="cline-any cline-neutral">&nbsp;</span>
1509
- <span class="cline-any cline-neutral">&nbsp;</span>
1510
- <span class="cline-any cline-neutral">&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-neutral">&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-no">&nbsp;</span>
1520
- <span class="cline-any cline-no">&nbsp;</span>
1521
- <span class="cline-any cline-no">&nbsp;</span>
1522
- <span class="cline-any cline-no">&nbsp;</span>
1523
- <span class="cline-any cline-no">&nbsp;</span>
1524
- <span class="cline-any cline-no">&nbsp;</span>
1525
- <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-no">&nbsp;</span>
1527
- <span class="cline-any cline-no">&nbsp;</span>
1528
- <span class="cline-any cline-no">&nbsp;</span>
1529
- <span class="cline-any cline-no">&nbsp;</span>
1530
- <span class="cline-any cline-no">&nbsp;</span>
1531
- <span class="cline-any cline-no">&nbsp;</span>
1532
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1541
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1549
- <span class="cline-any cline-no">&nbsp;</span>
1550
- <span class="cline-any cline-neutral">&nbsp;</span>
1551
- <span class="cline-any cline-no">&nbsp;</span>
1552
- <span class="cline-any cline-no">&nbsp;</span>
1553
- <span class="cline-any cline-neutral">&nbsp;</span>
1554
- <span class="cline-any cline-no">&nbsp;</span>
1555
- <span class="cline-any cline-no">&nbsp;</span>
1556
- <span class="cline-any cline-neutral">&nbsp;</span>
1557
- <span class="cline-any cline-no">&nbsp;</span>
1558
- <span class="cline-any cline-no">&nbsp;</span>
1559
- <span class="cline-any cline-neutral">&nbsp;</span>
1560
- <span class="cline-any cline-no">&nbsp;</span>
1561
- <span class="cline-any cline-no">&nbsp;</span>
1562
- <span class="cline-any cline-neutral">&nbsp;</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-neutral">&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-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-no">&nbsp;</span>
1570
- <span class="cline-any cline-no">&nbsp;</span>
1571
- <span class="cline-any cline-neutral">&nbsp;</span>
1572
- <span class="cline-any cline-no">&nbsp;</span>
1573
- <span class="cline-any cline-no">&nbsp;</span>
1574
- <span class="cline-any cline-no">&nbsp;</span>
1575
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1580
- <span class="cline-any cline-no">&nbsp;</span>
1581
- <span class="cline-any cline-neutral">&nbsp;</span>
1582
- <span class="cline-any cline-no">&nbsp;</span>
1583
- <span class="cline-any cline-no">&nbsp;</span>
1584
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1594
- <span class="cline-any cline-no">&nbsp;</span>
1595
- <span class="cline-any cline-no">&nbsp;</span>
1596
- <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-no">&nbsp;</span>
1598
- <span class="cline-any cline-no">&nbsp;</span>
1599
- <span class="cline-any cline-neutral">&nbsp;</span>
1600
- <span class="cline-any cline-no">&nbsp;</span>
1601
- <span class="cline-any cline-neutral">&nbsp;</span>
1602
- <span class="cline-any cline-neutral">&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-neutral">&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-no">&nbsp;</span>
1609
- <span class="cline-any cline-no">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1616
- <span class="cline-any cline-no">&nbsp;</span>
1617
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1622
- <span class="cline-any cline-neutral">&nbsp;</span>
1623
- <span class="cline-any cline-neutral">&nbsp;</span>
1624
- <span class="cline-any cline-neutral">&nbsp;</span>
1625
- <span class="cline-any cline-yes">1x</span>
1626
- <span class="cline-any cline-yes">1x</span>
1627
- <span class="cline-any cline-neutral">&nbsp;</span>
1628
- <span class="cline-any cline-yes">1x</span>
1629
- <span class="cline-any cline-no">&nbsp;</span>
1630
- <span class="cline-any cline-no">&nbsp;</span>
1631
- <span class="cline-any cline-no">&nbsp;</span>
1632
- <span class="cline-any cline-no">&nbsp;</span>
1633
- <span class="cline-any cline-neutral">&nbsp;</span>
1634
- <span class="cline-any cline-no">&nbsp;</span>
1635
- <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1639
- <span class="cline-any cline-neutral">&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-no">&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-no">&nbsp;</span>
1649
- <span class="cline-any cline-neutral">&nbsp;</span>
1650
- <span class="cline-any cline-no">&nbsp;</span>
1651
- <span class="cline-any cline-no">&nbsp;</span>
1652
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1658
- <span class="cline-any cline-no">&nbsp;</span>
1659
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1664
- <span class="cline-any cline-neutral">&nbsp;</span>
1665
- <span class="cline-any cline-no">&nbsp;</span>
1666
- <span class="cline-any cline-no">&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-no">&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-no">&nbsp;</span>
1675
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1680
- <span class="cline-any cline-no">&nbsp;</span>
1681
- <span class="cline-any cline-no">&nbsp;</span>
1682
- <span class="cline-any cline-no">&nbsp;</span>
1683
- <span class="cline-any cline-no">&nbsp;</span>
1684
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1688
- <span class="cline-any cline-no">&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-neutral">&nbsp;</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-no">&nbsp;</span>
1699
- <span class="cline-any cline-neutral">&nbsp;</span>
1700
- <span class="cline-any cline-no">&nbsp;</span>
1701
- <span class="cline-any cline-no">&nbsp;</span>
1702
- <span class="cline-any cline-neutral">&nbsp;</span>
1703
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1707
- <span class="cline-any cline-no">&nbsp;</span>
1708
- <span class="cline-any cline-no">&nbsp;</span>
1709
- <span class="cline-any cline-no">&nbsp;</span>
1710
- <span class="cline-any cline-no">&nbsp;</span>
1711
- <span class="cline-any cline-no">&nbsp;</span>
1712
- <span class="cline-any cline-no">&nbsp;</span>
1713
- <span class="cline-any cline-no">&nbsp;</span>
1714
- <span class="cline-any cline-neutral">&nbsp;</span>
1715
- <span class="cline-any cline-no">&nbsp;</span>
1716
- <span class="cline-any cline-no">&nbsp;</span>
1717
- <span class="cline-any cline-no">&nbsp;</span>
1718
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1724
- <span class="cline-any cline-neutral">&nbsp;</span>
1725
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1731
- <span class="cline-any cline-no">&nbsp;</span>
1732
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1736
- <span class="cline-any cline-neutral">&nbsp;</span>
1737
- <span class="cline-any cline-neutral">&nbsp;</span>
1738
- <span class="cline-any cline-no">&nbsp;</span>
1739
- <span class="cline-any cline-no">&nbsp;</span>
1740
- <span class="cline-any cline-no">&nbsp;</span>
1741
- <span class="cline-any cline-neutral">&nbsp;</span>
1742
- <span class="cline-any cline-neutral">&nbsp;</span>
1743
- <span class="cline-any cline-no">&nbsp;</span>
1744
- <span class="cline-any cline-no">&nbsp;</span>
1745
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1749
- <span class="cline-any cline-no">&nbsp;</span>
1750
- <span class="cline-any cline-no">&nbsp;</span>
1751
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1755
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1759
- <span class="cline-any cline-no">&nbsp;</span>
1760
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1764
- <span class="cline-any cline-no">&nbsp;</span>
1765
- <span class="cline-any cline-no">&nbsp;</span>
1766
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1770
- <span class="cline-any cline-neutral">&nbsp;</span>
1771
- <span class="cline-any cline-neutral">&nbsp;</span>
1772
- <span class="cline-any cline-neutral">&nbsp;</span>
1773
- <span class="cline-any cline-neutral">&nbsp;</span>
1774
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1779
- <span class="cline-any cline-neutral">&nbsp;</span>
1780
- <span class="cline-any cline-neutral">&nbsp;</span>
1781
- <span class="cline-any cline-neutral">&nbsp;</span>
1782
- <span class="cline-any cline-neutral">&nbsp;</span>
1783
- <span class="cline-any cline-neutral">&nbsp;</span>
1784
- <span class="cline-any cline-neutral">&nbsp;</span>
1785
- <span class="cline-any cline-neutral">&nbsp;</span>
1786
- <span class="cline-any cline-no">&nbsp;</span>
1787
- <span class="cline-any cline-neutral">&nbsp;</span>
1788
- <span class="cline-any cline-no">&nbsp;</span>
1789
- <span class="cline-any cline-no">&nbsp;</span>
1790
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1797
- <span class="cline-any cline-no">&nbsp;</span>
1798
- <span class="cline-any cline-neutral">&nbsp;</span>
1799
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1807
- <span class="cline-any cline-no">&nbsp;</span>
1808
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1813
- <span class="cline-any cline-neutral">&nbsp;</span>
1814
- <span class="cline-any cline-no">&nbsp;</span>
1815
- <span class="cline-any cline-neutral">&nbsp;</span>
1816
- <span class="cline-any cline-no">&nbsp;</span>
1817
- <span class="cline-any cline-neutral">&nbsp;</span>
1818
- <span class="cline-any cline-no">&nbsp;</span>
1819
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1824
- <span class="cline-any cline-no">&nbsp;</span>
1825
- <span class="cline-any cline-no">&nbsp;</span>
1826
- <span class="cline-any cline-no">&nbsp;</span>
1827
- <span class="cline-any cline-neutral">&nbsp;</span>
1828
- <span class="cline-any cline-no">&nbsp;</span>
1829
- <span class="cline-any cline-no">&nbsp;</span>
1830
- <span class="cline-any cline-neutral">&nbsp;</span>
1831
- <span class="cline-any cline-neutral">&nbsp;</span>
1832
- <span class="cline-any cline-neutral">&nbsp;</span>
1833
- <span class="cline-any cline-no">&nbsp;</span>
1834
- <span class="cline-any cline-no">&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-no">&nbsp;</span>
1839
- <span class="cline-any cline-no">&nbsp;</span>
1840
- <span class="cline-any cline-no">&nbsp;</span>
1841
- <span class="cline-any cline-no">&nbsp;</span>
1842
- <span class="cline-any cline-neutral">&nbsp;</span>
1843
- <span class="cline-any cline-neutral">&nbsp;</span>
1844
- <span class="cline-any cline-neutral">&nbsp;</span>
1845
- <span class="cline-any cline-neutral">&nbsp;</span>
1846
- <span class="cline-any cline-neutral">&nbsp;</span>
1847
- <span class="cline-any cline-no">&nbsp;</span>
1848
- <span class="cline-any cline-no">&nbsp;</span>
1849
- <span class="cline-any cline-neutral">&nbsp;</span>
1850
- <span class="cline-any cline-neutral">&nbsp;</span>
1851
- <span class="cline-any cline-neutral">&nbsp;</span>
1852
- <span class="cline-any cline-neutral">&nbsp;</span>
1853
- <span class="cline-any cline-neutral">&nbsp;</span>
1854
- <span class="cline-any cline-neutral">&nbsp;</span>
1855
- <span class="cline-any cline-neutral">&nbsp;</span>
1856
- <span class="cline-any cline-no">&nbsp;</span>
1857
- <span class="cline-any cline-neutral">&nbsp;</span>
1858
- <span class="cline-any cline-neutral">&nbsp;</span>
1859
- <span class="cline-any cline-neutral">&nbsp;</span>
1860
- <span class="cline-any cline-neutral">&nbsp;</span>
1861
- <span class="cline-any cline-neutral">&nbsp;</span>
1862
- <span class="cline-any cline-neutral">&nbsp;</span>
1863
- <span class="cline-any cline-neutral">&nbsp;</span>
1864
- <span class="cline-any cline-neutral">&nbsp;</span>
1865
- <span class="cline-any cline-neutral">&nbsp;</span>
1866
- <span class="cline-any cline-no">&nbsp;</span>
1867
- <span class="cline-any cline-no">&nbsp;</span>
1868
- <span class="cline-any cline-neutral">&nbsp;</span>
1869
- <span class="cline-any cline-neutral">&nbsp;</span>
1870
- <span class="cline-any cline-neutral">&nbsp;</span>
1871
- <span class="cline-any cline-neutral">&nbsp;</span>
1872
- <span class="cline-any cline-neutral">&nbsp;</span>
1873
- <span class="cline-any cline-no">&nbsp;</span>
1874
- <span class="cline-any cline-neutral">&nbsp;</span>
1875
- <span class="cline-any cline-neutral">&nbsp;</span>
1876
- <span class="cline-any cline-no">&nbsp;</span>
1877
- <span class="cline-any cline-no">&nbsp;</span>
1878
- <span class="cline-any cline-neutral">&nbsp;</span>
1879
- <span class="cline-any cline-neutral">&nbsp;</span>
1880
- <span class="cline-any cline-neutral">&nbsp;</span>
1881
- <span class="cline-any cline-no">&nbsp;</span>
1882
- <span class="cline-any cline-neutral">&nbsp;</span>
1883
- <span class="cline-any cline-neutral">&nbsp;</span>
1884
- <span class="cline-any cline-neutral">&nbsp;</span>
1885
- <span class="cline-any cline-neutral">&nbsp;</span>
1886
- <span class="cline-any cline-neutral">&nbsp;</span>
1887
- <span class="cline-any cline-no">&nbsp;</span>
1888
- <span class="cline-any cline-no">&nbsp;</span>
1889
- <span class="cline-any cline-neutral">&nbsp;</span>
1890
- <span class="cline-any cline-neutral">&nbsp;</span>
1891
- <span class="cline-any cline-neutral">&nbsp;</span>
1892
- <span class="cline-any cline-neutral">&nbsp;</span>
1893
- <span class="cline-any cline-neutral">&nbsp;</span>
1894
- <span class="cline-any cline-neutral">&nbsp;</span>
1895
- <span class="cline-any cline-neutral">&nbsp;</span>
1896
- <span class="cline-any cline-neutral">&nbsp;</span>
1897
- <span class="cline-any cline-neutral">&nbsp;</span>
1898
- <span class="cline-any cline-neutral">&nbsp;</span>
1899
- <span class="cline-any cline-no">&nbsp;</span>
1900
- <span class="cline-any cline-neutral">&nbsp;</span>
1901
- <span class="cline-any cline-no">&nbsp;</span>
1902
- <span class="cline-any cline-no">&nbsp;</span>
1903
- <span class="cline-any cline-no">&nbsp;</span>
1904
- <span class="cline-any cline-no">&nbsp;</span>
1905
- <span class="cline-any cline-neutral">&nbsp;</span>
1906
- <span class="cline-any cline-no">&nbsp;</span>
1907
- <span class="cline-any cline-neutral">&nbsp;</span>
1908
- <span class="cline-any cline-no">&nbsp;</span>
1909
- <span class="cline-any cline-neutral">&nbsp;</span>
1910
- <span class="cline-any cline-no">&nbsp;</span>
1911
- <span class="cline-any cline-neutral">&nbsp;</span>
1912
- <span class="cline-any cline-no">&nbsp;</span>
1913
- <span class="cline-any cline-neutral">&nbsp;</span>
1914
- <span class="cline-any cline-neutral">&nbsp;</span>
1915
- <span class="cline-any cline-neutral">&nbsp;</span>
1916
- <span class="cline-any cline-no">&nbsp;</span>
1917
- <span class="cline-any cline-no">&nbsp;</span>
1918
- <span class="cline-any cline-no">&nbsp;</span>
1919
- <span class="cline-any cline-no">&nbsp;</span>
1920
- <span class="cline-any cline-neutral">&nbsp;</span>
1921
- <span class="cline-any cline-no">&nbsp;</span>
1922
- <span class="cline-any cline-neutral">&nbsp;</span>
1923
- <span class="cline-any cline-no">&nbsp;</span>
1924
- <span class="cline-any cline-neutral">&nbsp;</span>
1925
- <span class="cline-any cline-neutral">&nbsp;</span>
1926
- <span class="cline-any cline-neutral">&nbsp;</span>
1927
- <span class="cline-any cline-neutral">&nbsp;</span>
1928
- <span class="cline-any cline-neutral">&nbsp;</span>
1929
- <span class="cline-any cline-neutral">&nbsp;</span>
1930
- <span class="cline-any cline-neutral">&nbsp;</span>
1931
- <span class="cline-any cline-neutral">&nbsp;</span>
1932
- <span class="cline-any cline-neutral">&nbsp;</span>
1933
- <span class="cline-any cline-neutral">&nbsp;</span>
1934
- <span class="cline-any cline-neutral">&nbsp;</span>
1935
- <span class="cline-any cline-neutral">&nbsp;</span>
1936
- <span class="cline-any cline-neutral">&nbsp;</span>
1937
- <span class="cline-any cline-yes">1x</span>
1938
- <span class="cline-any cline-yes">1x</span>
1939
- <span class="cline-any cline-yes">1x</span>
1940
- <span class="cline-any cline-neutral">&nbsp;</span>
1941
- <span class="cline-any cline-neutral">&nbsp;</span>
1942
- <span class="cline-any cline-neutral">&nbsp;</span>
1943
- <span class="cline-any cline-neutral">&nbsp;</span>
1944
- <span class="cline-any cline-neutral">&nbsp;</span>
1945
- <span class="cline-any cline-neutral">&nbsp;</span>
1946
- <span class="cline-any cline-neutral">&nbsp;</span>
1947
- <span class="cline-any cline-neutral">&nbsp;</span>
1948
- <span class="cline-any cline-neutral">&nbsp;</span>
1949
- <span class="cline-any cline-yes">1x</span>
1950
- <span class="cline-any cline-yes">1x</span>
1951
- <span class="cline-any cline-yes">1x</span>
1952
- <span class="cline-any cline-yes">1x</span>
1953
- <span class="cline-any cline-yes">1x</span>
1954
- <span class="cline-any cline-neutral">&nbsp;</span>
1955
- <span class="cline-any cline-neutral">&nbsp;</span>
1956
- <span class="cline-any cline-no">&nbsp;</span>
1957
- <span class="cline-any cline-neutral">&nbsp;</span>
1958
- <span class="cline-any cline-no">&nbsp;</span>
1959
- <span class="cline-any cline-no">&nbsp;</span>
1960
- <span class="cline-any cline-no">&nbsp;</span>
1961
- <span class="cline-any cline-neutral">&nbsp;</span>
1962
- <span class="cline-any cline-neutral">&nbsp;</span>
1963
- <span class="cline-any cline-no">&nbsp;</span>
1964
- <span class="cline-any cline-neutral">&nbsp;</span>
1965
- <span class="cline-any cline-neutral">&nbsp;</span>
1966
- <span class="cline-any cline-neutral">&nbsp;</span>
1967
- <span class="cline-any cline-no">&nbsp;</span>
1968
- <span class="cline-any cline-no">&nbsp;</span>
1969
- <span class="cline-any cline-no">&nbsp;</span>
1970
- <span class="cline-any cline-no">&nbsp;</span>
1971
- <span class="cline-any cline-neutral">&nbsp;</span>
1972
- <span class="cline-any cline-neutral">&nbsp;</span>
1973
- <span class="cline-any cline-neutral">&nbsp;</span>
1974
- <span class="cline-any cline-no">&nbsp;</span>
1975
- <span class="cline-any cline-no">&nbsp;</span>
1976
- <span class="cline-any cline-no">&nbsp;</span>
1977
- <span class="cline-any cline-no">&nbsp;</span>
1978
- <span class="cline-any cline-neutral">&nbsp;</span>
1979
- <span class="cline-any cline-no">&nbsp;</span>
1980
- <span class="cline-any cline-no">&nbsp;</span>
1981
- <span class="cline-any cline-no">&nbsp;</span>
1982
- <span class="cline-any cline-no">&nbsp;</span>
1983
- <span class="cline-any cline-no">&nbsp;</span>
1984
- <span class="cline-any cline-neutral">&nbsp;</span>
1985
- <span class="cline-any cline-no">&nbsp;</span>
1986
- <span class="cline-any cline-no">&nbsp;</span>
1987
- <span class="cline-any cline-no">&nbsp;</span>
1988
- <span class="cline-any cline-no">&nbsp;</span>
1989
- <span class="cline-any cline-no">&nbsp;</span>
1990
- <span class="cline-any cline-no">&nbsp;</span>
1991
- <span class="cline-any cline-no">&nbsp;</span>
1992
- <span class="cline-any cline-neutral">&nbsp;</span>
1993
- <span class="cline-any cline-neutral">&nbsp;</span>
1994
- <span class="cline-any cline-no">&nbsp;</span>
1995
- <span class="cline-any cline-no">&nbsp;</span>
1996
- <span class="cline-any cline-no">&nbsp;</span>
1997
- <span class="cline-any cline-neutral">&nbsp;</span>
1998
- <span class="cline-any cline-neutral">&nbsp;</span>
1999
- <span class="cline-any cline-no">&nbsp;</span>
2000
- <span class="cline-any cline-no">&nbsp;</span>
2001
- <span class="cline-any cline-neutral">&nbsp;</span>
2002
- <span class="cline-any cline-neutral">&nbsp;</span>
2003
- <span class="cline-any cline-neutral">&nbsp;</span>
2004
- <span class="cline-any cline-neutral">&nbsp;</span>
2005
- <span class="cline-any cline-neutral">&nbsp;</span>
2006
- <span class="cline-any cline-no">&nbsp;</span>
2007
- <span class="cline-any cline-no">&nbsp;</span>
2008
- <span class="cline-any cline-no">&nbsp;</span>
2009
- <span class="cline-any cline-neutral">&nbsp;</span>
2010
- <span class="cline-any cline-no">&nbsp;</span>
2011
- <span class="cline-any cline-neutral">&nbsp;</span>
2012
- <span class="cline-any cline-no">&nbsp;</span>
2013
- <span class="cline-any cline-no">&nbsp;</span>
2014
- <span class="cline-any cline-neutral">&nbsp;</span>
2015
- <span class="cline-any cline-no">&nbsp;</span>
2016
- <span class="cline-any cline-neutral">&nbsp;</span>
2017
- <span class="cline-any cline-no">&nbsp;</span>
2018
- <span class="cline-any cline-neutral">&nbsp;</span>
2019
- <span class="cline-any cline-neutral">&nbsp;</span>
2020
- <span class="cline-any cline-no">&nbsp;</span>
2021
- <span class="cline-any cline-neutral">&nbsp;</span>
2022
- <span class="cline-any cline-no">&nbsp;</span>
2023
- <span class="cline-any cline-neutral">&nbsp;</span>
2024
- <span class="cline-any cline-neutral">&nbsp;</span>
2025
- <span class="cline-any cline-neutral">&nbsp;</span>
2026
- <span class="cline-any cline-no">&nbsp;</span>
2027
- <span class="cline-any cline-no">&nbsp;</span>
2028
- <span class="cline-any cline-neutral">&nbsp;</span>
2029
- <span class="cline-any cline-no">&nbsp;</span>
2030
- <span class="cline-any cline-no">&nbsp;</span>
2031
- <span class="cline-any cline-no">&nbsp;</span>
2032
- <span class="cline-any cline-no">&nbsp;</span>
2033
- <span class="cline-any cline-neutral">&nbsp;</span>
2034
- <span class="cline-any cline-neutral">&nbsp;</span>
2035
- <span class="cline-any cline-neutral">&nbsp;</span>
2036
- <span class="cline-any cline-no">&nbsp;</span>
2037
- <span class="cline-any cline-neutral">&nbsp;</span>
2038
- <span class="cline-any cline-neutral">&nbsp;</span>
2039
- <span class="cline-any cline-no">&nbsp;</span>
2040
- <span class="cline-any cline-neutral">&nbsp;</span>
2041
- <span class="cline-any cline-neutral">&nbsp;</span>
2042
- <span class="cline-any cline-no">&nbsp;</span>
2043
- <span class="cline-any cline-neutral">&nbsp;</span>
2044
- <span class="cline-any cline-neutral">&nbsp;</span>
2045
- <span class="cline-any cline-neutral">&nbsp;</span>
2046
- <span class="cline-any cline-neutral">&nbsp;</span>
2047
- <span class="cline-any cline-neutral">&nbsp;</span>
2048
- <span class="cline-any cline-neutral">&nbsp;</span>
2049
- <span class="cline-any cline-neutral">&nbsp;</span>
2050
- <span class="cline-any cline-no">&nbsp;</span>
2051
- <span class="cline-any cline-neutral">&nbsp;</span>
2052
- <span class="cline-any cline-no">&nbsp;</span>
2053
- <span class="cline-any cline-no">&nbsp;</span>
2054
- <span class="cline-any cline-neutral">&nbsp;</span>
2055
- <span class="cline-any cline-neutral">&nbsp;</span>
2056
- <span class="cline-any cline-neutral">&nbsp;</span>
2057
- <span class="cline-any cline-no">&nbsp;</span>
2058
- <span class="cline-any cline-neutral">&nbsp;</span>
2059
- <span class="cline-any cline-no">&nbsp;</span>
2060
- <span class="cline-any cline-no">&nbsp;</span>
2061
- <span class="cline-any cline-no">&nbsp;</span>
2062
- <span class="cline-any cline-neutral">&nbsp;</span>
2063
- <span class="cline-any cline-no">&nbsp;</span>
2064
- <span class="cline-any cline-no">&nbsp;</span>
2065
- <span class="cline-any cline-no">&nbsp;</span>
2066
- <span class="cline-any cline-neutral">&nbsp;</span>
2067
- <span class="cline-any cline-neutral">&nbsp;</span>
2068
- <span class="cline-any cline-neutral">&nbsp;</span>
2069
- <span class="cline-any cline-neutral">&nbsp;</span>
2070
- <span class="cline-any cline-yes">1x</span>
2071
- <span class="cline-any cline-neutral">&nbsp;</span>
2072
- <span class="cline-any cline-no">&nbsp;</span>
2073
- <span class="cline-any cline-neutral">&nbsp;</span>
2074
- <span class="cline-any cline-neutral">&nbsp;</span>
2075
- <span class="cline-any cline-neutral">&nbsp;</span>
2076
- <span class="cline-any cline-neutral">&nbsp;</span>
2077
- <span class="cline-any cline-neutral">&nbsp;</span>
2078
- <span class="cline-any cline-neutral">&nbsp;</span>
2079
- <span class="cline-any cline-neutral">&nbsp;</span>
2080
- <span class="cline-any cline-neutral">&nbsp;</span>
2081
- <span class="cline-any cline-neutral">&nbsp;</span>
2082
- <span class="cline-any cline-neutral">&nbsp;</span>
2083
- <span class="cline-any cline-neutral">&nbsp;</span>
2084
- <span class="cline-any cline-neutral">&nbsp;</span>
2085
- <span class="cline-any cline-neutral">&nbsp;</span>
2086
- <span class="cline-any cline-neutral">&nbsp;</span>
2087
- <span class="cline-any cline-neutral">&nbsp;</span>
2088
- <span class="cline-any cline-neutral">&nbsp;</span>
2089
- <span class="cline-any cline-neutral">&nbsp;</span>
2090
- <span class="cline-any cline-neutral">&nbsp;</span>
2091
- <span class="cline-any cline-neutral">&nbsp;</span>
2092
- <span class="cline-any cline-no">&nbsp;</span>
2093
- <span class="cline-any cline-no">&nbsp;</span>
2094
- <span class="cline-any cline-no">&nbsp;</span>
2095
- <span class="cline-any cline-no">&nbsp;</span>
2096
- <span class="cline-any cline-no">&nbsp;</span>
2097
- <span class="cline-any cline-no">&nbsp;</span>
2098
- <span class="cline-any cline-no">&nbsp;</span>
2099
- <span class="cline-any cline-no">&nbsp;</span>
2100
- <span class="cline-any cline-no">&nbsp;</span>
2101
- <span class="cline-any cline-neutral">&nbsp;</span>
2102
- <span class="cline-any cline-neutral">&nbsp;</span>
2103
- <span class="cline-any cline-neutral">&nbsp;</span>
2104
- <span class="cline-any cline-neutral">&nbsp;</span>
2105
- <span class="cline-any cline-no">&nbsp;</span>
2106
- <span class="cline-any cline-no">&nbsp;</span>
2107
- <span class="cline-any cline-neutral">&nbsp;</span>
2108
- <span class="cline-any cline-no">&nbsp;</span>
2109
- <span class="cline-any cline-neutral">&nbsp;</span>
2110
- <span class="cline-any cline-neutral">&nbsp;</span>
2111
- <span class="cline-any cline-neutral">&nbsp;</span>
2112
- <span class="cline-any cline-neutral">&nbsp;</span>
2113
- <span class="cline-any cline-neutral">&nbsp;</span>
2114
- <span class="cline-any cline-neutral">&nbsp;</span>
2115
- <span class="cline-any cline-neutral">&nbsp;</span>
2116
- <span class="cline-any cline-neutral">&nbsp;</span>
2117
- <span class="cline-any cline-neutral">&nbsp;</span>
2118
- <span class="cline-any cline-no">&nbsp;</span>
2119
- <span class="cline-any cline-neutral">&nbsp;</span>
2120
- <span class="cline-any cline-no">&nbsp;</span>
2121
- <span class="cline-any cline-no">&nbsp;</span>
2122
- <span class="cline-any cline-neutral">&nbsp;</span>
2123
- <span class="cline-any cline-neutral">&nbsp;</span>
2124
- <span class="cline-any cline-neutral">&nbsp;</span>
2125
- <span class="cline-any cline-neutral">&nbsp;</span>
2126
- <span class="cline-any cline-neutral">&nbsp;</span>
2127
- <span class="cline-any cline-no">&nbsp;</span>
2128
- <span class="cline-any cline-neutral">&nbsp;</span>
2129
- <span class="cline-any cline-neutral">&nbsp;</span>
2130
- <span class="cline-any cline-no">&nbsp;</span>
2131
- <span class="cline-any cline-neutral">&nbsp;</span>
2132
- <span class="cline-any cline-no">&nbsp;</span>
2133
- <span class="cline-any cline-no">&nbsp;</span>
2134
- <span class="cline-any cline-no">&nbsp;</span>
2135
- <span class="cline-any cline-neutral">&nbsp;</span>
2136
- <span class="cline-any cline-neutral">&nbsp;</span>
2137
- <span class="cline-any cline-no">&nbsp;</span>
2138
- <span class="cline-any cline-no">&nbsp;</span>
2139
- <span class="cline-any cline-neutral">&nbsp;</span>
2140
- <span class="cline-any cline-neutral">&nbsp;</span>
2141
- <span class="cline-any cline-neutral">&nbsp;</span>
2142
- <span class="cline-any cline-no">&nbsp;</span>
2143
- <span class="cline-any cline-no">&nbsp;</span>
2144
- <span class="cline-any cline-neutral">&nbsp;</span>
2145
- <span class="cline-any cline-neutral">&nbsp;</span>
2146
- <span class="cline-any cline-neutral">&nbsp;</span>
2147
- <span class="cline-any cline-neutral">&nbsp;</span>
2148
- <span class="cline-any cline-neutral">&nbsp;</span>
2149
- <span class="cline-any cline-neutral">&nbsp;</span>
2150
- <span class="cline-any cline-neutral">&nbsp;</span>
2151
- <span class="cline-any cline-neutral">&nbsp;</span>
2152
- <span class="cline-any cline-neutral">&nbsp;</span>
2153
- <span class="cline-any cline-neutral">&nbsp;</span>
2154
- <span class="cline-any cline-neutral">&nbsp;</span>
2155
- <span class="cline-any cline-neutral">&nbsp;</span>
2156
- <span class="cline-any cline-neutral">&nbsp;</span>
2157
- <span class="cline-any cline-neutral">&nbsp;</span>
2158
- <span class="cline-any cline-neutral">&nbsp;</span>
2159
- <span class="cline-any cline-yes">1x</span>
2160
- <span class="cline-any cline-no">&nbsp;</span>
2161
- <span class="cline-any cline-no">&nbsp;</span>
2162
- <span class="cline-any cline-no">&nbsp;</span>
2163
- <span class="cline-any cline-no">&nbsp;</span>
2164
- <span class="cline-any cline-no">&nbsp;</span>
2165
- <span class="cline-any cline-no">&nbsp;</span>
2166
- <span class="cline-any cline-neutral">&nbsp;</span>
2167
- <span class="cline-any cline-no">&nbsp;</span>
2168
- <span class="cline-any cline-no">&nbsp;</span>
2169
- <span class="cline-any cline-no">&nbsp;</span>
2170
- <span class="cline-any cline-neutral">&nbsp;</span>
2171
- <span class="cline-any cline-neutral">&nbsp;</span>
2172
- <span class="cline-any cline-no">&nbsp;</span>
2173
- <span class="cline-any cline-no">&nbsp;</span>
2174
- <span class="cline-any cline-no">&nbsp;</span>
2175
- <span class="cline-any cline-neutral">&nbsp;</span>
2176
- <span class="cline-any cline-neutral">&nbsp;</span>
2177
- <span class="cline-any cline-neutral">&nbsp;</span>
2178
- <span class="cline-any cline-neutral">&nbsp;</span>
2179
- <span class="cline-any cline-neutral">&nbsp;</span>
2180
- <span class="cline-any cline-no">&nbsp;</span>
2181
- <span class="cline-any cline-no">&nbsp;</span>
2182
- <span class="cline-any cline-no">&nbsp;</span>
2183
- <span class="cline-any cline-no">&nbsp;</span>
2184
- <span class="cline-any cline-neutral">&nbsp;</span>
2185
- <span class="cline-any cline-no">&nbsp;</span>
2186
- <span class="cline-any cline-no">&nbsp;</span>
2187
- <span class="cline-any cline-neutral">&nbsp;</span>
2188
- <span class="cline-any cline-no">&nbsp;</span>
2189
- <span class="cline-any cline-no">&nbsp;</span>
2190
- <span class="cline-any cline-no">&nbsp;</span>
2191
- <span class="cline-any cline-no">&nbsp;</span>
2192
- <span class="cline-any cline-neutral">&nbsp;</span>
2193
- <span class="cline-any cline-neutral">&nbsp;</span>
2194
- <span class="cline-any cline-neutral">&nbsp;</span>
2195
- <span class="cline-any cline-neutral">&nbsp;</span>
2196
- <span class="cline-any cline-neutral">&nbsp;</span>
2197
- <span class="cline-any cline-neutral">&nbsp;</span>
2198
- <span class="cline-any cline-no">&nbsp;</span>
2199
- <span class="cline-any cline-no">&nbsp;</span>
2200
- <span class="cline-any cline-no">&nbsp;</span>
2201
- <span class="cline-any cline-neutral">&nbsp;</span>
2202
- <span class="cline-any cline-no">&nbsp;</span>
2203
- <span class="cline-any cline-neutral">&nbsp;</span>
2204
- <span class="cline-any cline-neutral">&nbsp;</span>
2205
- <span class="cline-any cline-neutral">&nbsp;</span>
2206
- <span class="cline-any cline-neutral">&nbsp;</span>
2207
- <span class="cline-any cline-neutral">&nbsp;</span>
2208
- <span class="cline-any cline-no">&nbsp;</span>
2209
- <span class="cline-any cline-no">&nbsp;</span>
2210
- <span class="cline-any cline-no">&nbsp;</span>
2211
- <span class="cline-any cline-no">&nbsp;</span>
2212
- <span class="cline-any cline-no">&nbsp;</span>
2213
- <span class="cline-any cline-no">&nbsp;</span>
2214
- <span class="cline-any cline-neutral">&nbsp;</span>
2215
- <span class="cline-any cline-neutral">&nbsp;</span>
2216
- <span class="cline-any cline-no">&nbsp;</span>
2217
- <span class="cline-any cline-no">&nbsp;</span>
2218
- <span class="cline-any cline-no">&nbsp;</span>
2219
- <span class="cline-any cline-no">&nbsp;</span>
2220
- <span class="cline-any cline-no">&nbsp;</span>
2221
- <span class="cline-any cline-no">&nbsp;</span>
2222
- <span class="cline-any cline-no">&nbsp;</span>
2223
- <span class="cline-any cline-no">&nbsp;</span>
2224
- <span class="cline-any cline-no">&nbsp;</span>
2225
- <span class="cline-any cline-no">&nbsp;</span>
2226
- <span class="cline-any cline-neutral">&nbsp;</span>
2227
- <span class="cline-any cline-neutral">&nbsp;</span>
2228
- <span class="cline-any cline-no">&nbsp;</span>
2229
- <span class="cline-any cline-neutral">&nbsp;</span>
2230
- <span class="cline-any cline-neutral">&nbsp;</span>
2231
- <span class="cline-any cline-neutral">&nbsp;</span>
2232
- <span class="cline-any cline-neutral">&nbsp;</span>
2233
- <span class="cline-any cline-neutral">&nbsp;</span>
2234
- <span class="cline-any cline-no">&nbsp;</span>
2235
- <span class="cline-any cline-no">&nbsp;</span>
2236
- <span class="cline-any cline-no">&nbsp;</span>
2237
- <span class="cline-any cline-neutral">&nbsp;</span>
2238
- <span class="cline-any cline-neutral">&nbsp;</span>
2239
- <span class="cline-any cline-neutral">&nbsp;</span>
2240
- <span class="cline-any cline-neutral">&nbsp;</span>
2241
- <span class="cline-any cline-neutral">&nbsp;</span>
2242
- <span class="cline-any cline-neutral">&nbsp;</span>
2243
- <span class="cline-any cline-no">&nbsp;</span>
2244
- <span class="cline-any cline-no">&nbsp;</span>
2245
- <span class="cline-any cline-neutral">&nbsp;</span>
2246
- <span class="cline-any cline-no">&nbsp;</span>
2247
- <span class="cline-any cline-no">&nbsp;</span>
2248
- <span class="cline-any cline-neutral">&nbsp;</span>
2249
- <span class="cline-any cline-neutral">&nbsp;</span>
2250
- <span class="cline-any cline-no">&nbsp;</span>
2251
- <span class="cline-any cline-no">&nbsp;</span>
2252
- <span class="cline-any cline-no">&nbsp;</span>
2253
- <span class="cline-any cline-no">&nbsp;</span>
2254
- <span class="cline-any cline-neutral">&nbsp;</span>
2255
- <span class="cline-any cline-no">&nbsp;</span>
2256
- <span class="cline-any cline-no">&nbsp;</span>
2257
- <span class="cline-any cline-neutral">&nbsp;</span>
2258
- <span class="cline-any cline-no">&nbsp;</span>
2259
- <span class="cline-any cline-no">&nbsp;</span>
2260
- <span class="cline-any cline-neutral">&nbsp;</span>
2261
- <span class="cline-any cline-no">&nbsp;</span>
2262
- <span class="cline-any cline-no">&nbsp;</span>
2263
- <span class="cline-any cline-neutral">&nbsp;</span>
2264
- <span class="cline-any cline-no">&nbsp;</span>
2265
- <span class="cline-any cline-no">&nbsp;</span>
2266
- <span class="cline-any cline-no">&nbsp;</span>
2267
- <span class="cline-any cline-neutral">&nbsp;</span>
2268
- <span class="cline-any cline-no">&nbsp;</span>
2269
- <span class="cline-any cline-neutral">&nbsp;</span>
2270
- <span class="cline-any cline-neutral">&nbsp;</span>
2271
- <span class="cline-any cline-neutral">&nbsp;</span>
2272
- <span class="cline-any cline-neutral">&nbsp;</span>
2273
- <span class="cline-any cline-no">&nbsp;</span>
2274
- <span class="cline-any cline-neutral">&nbsp;</span>
2275
- <span class="cline-any cline-neutral">&nbsp;</span>
2276
- <span class="cline-any cline-neutral">&nbsp;</span>
2277
- <span class="cline-any cline-neutral">&nbsp;</span>
2278
- <span class="cline-any cline-neutral">&nbsp;</span>
2279
- <span class="cline-any cline-neutral">&nbsp;</span>
2280
- <span class="cline-any cline-neutral">&nbsp;</span>
2281
- <span class="cline-any cline-neutral">&nbsp;</span>
2282
- <span class="cline-any cline-neutral">&nbsp;</span>
2283
- <span class="cline-any cline-neutral">&nbsp;</span>
2284
- <span class="cline-any cline-neutral">&nbsp;</span>
2285
- <span class="cline-any cline-neutral">&nbsp;</span>
2286
- <span class="cline-any cline-neutral">&nbsp;</span>
2287
- <span class="cline-any cline-neutral">&nbsp;</span>
2288
- <span class="cline-any cline-neutral">&nbsp;</span>
2289
- <span class="cline-any cline-neutral">&nbsp;</span>
2290
- <span class="cline-any cline-yes">1x</span>
2291
- <span class="cline-any cline-no">&nbsp;</span>
2292
- <span class="cline-any cline-neutral">&nbsp;</span>
2293
- <span class="cline-any cline-no">&nbsp;</span>
2294
- <span class="cline-any cline-neutral">&nbsp;</span>
2295
- <span class="cline-any cline-neutral">&nbsp;</span>
2296
- <span class="cline-any cline-no">&nbsp;</span>
2297
- <span class="cline-any cline-no">&nbsp;</span>
2298
- <span class="cline-any cline-no">&nbsp;</span>
2299
- <span class="cline-any cline-neutral">&nbsp;</span>
2300
- <span class="cline-any cline-neutral">&nbsp;</span>
2301
- <span class="cline-any cline-neutral">&nbsp;</span>
2302
- <span class="cline-any cline-neutral">&nbsp;</span>
2303
- <span class="cline-any cline-neutral">&nbsp;</span>
2304
- <span class="cline-any cline-neutral">&nbsp;</span>
2305
- <span class="cline-any cline-neutral">&nbsp;</span>
2306
- <span class="cline-any cline-neutral">&nbsp;</span>
2307
- <span class="cline-any cline-neutral">&nbsp;</span>
2308
- <span class="cline-any cline-neutral">&nbsp;</span>
2309
- <span class="cline-any cline-neutral">&nbsp;</span>
2310
- <span class="cline-any cline-neutral">&nbsp;</span>
2311
- <span class="cline-any cline-neutral">&nbsp;</span>
2312
- <span class="cline-any cline-neutral">&nbsp;</span>
2313
- <span class="cline-any cline-neutral">&nbsp;</span>
2314
- <span class="cline-any cline-neutral">&nbsp;</span>
2315
- <span class="cline-any cline-neutral">&nbsp;</span>
2316
- <span class="cline-any cline-neutral">&nbsp;</span>
2317
- <span class="cline-any cline-neutral">&nbsp;</span>
2318
- <span class="cline-any cline-neutral">&nbsp;</span>
2319
- <span class="cline-any cline-neutral">&nbsp;</span>
2320
- <span class="cline-any cline-no">&nbsp;</span>
2321
- <span class="cline-any cline-neutral">&nbsp;</span>
2322
- <span class="cline-any cline-neutral">&nbsp;</span>
2323
- <span class="cline-any cline-no">&nbsp;</span>
2324
- <span class="cline-any cline-neutral">&nbsp;</span>
2325
- <span class="cline-any cline-no">&nbsp;</span>
2326
- <span class="cline-any cline-no">&nbsp;</span>
2327
- <span class="cline-any cline-neutral">&nbsp;</span>
2328
- <span class="cline-any cline-no">&nbsp;</span>
2329
- <span class="cline-any cline-no">&nbsp;</span>
2330
- <span class="cline-any cline-neutral">&nbsp;</span>
2331
- <span class="cline-any cline-no">&nbsp;</span>
2332
- <span class="cline-any cline-no">&nbsp;</span>
2333
- <span class="cline-any cline-neutral">&nbsp;</span>
2334
- <span class="cline-any cline-no">&nbsp;</span>
2335
- <span class="cline-any cline-no">&nbsp;</span>
2336
- <span class="cline-any cline-neutral">&nbsp;</span>
2337
- <span class="cline-any cline-no">&nbsp;</span>
2338
- <span class="cline-any cline-no">&nbsp;</span>
2339
- <span class="cline-any cline-neutral">&nbsp;</span>
2340
- <span class="cline-any cline-neutral">&nbsp;</span>
2341
- <span class="cline-any cline-neutral">&nbsp;</span>
2342
- <span class="cline-any cline-no">&nbsp;</span>
2343
- <span class="cline-any cline-no">&nbsp;</span>
2344
- <span class="cline-any cline-no">&nbsp;</span>
2345
- <span class="cline-any cline-neutral">&nbsp;</span>
2346
- <span class="cline-any cline-no">&nbsp;</span>
2347
- <span class="cline-any cline-no">&nbsp;</span>
2348
- <span class="cline-any cline-no">&nbsp;</span>
2349
- <span class="cline-any cline-neutral">&nbsp;</span>
2350
- <span class="cline-any cline-neutral">&nbsp;</span>
2351
- <span class="cline-any cline-neutral">&nbsp;</span>
2352
- <span class="cline-any cline-neutral">&nbsp;</span>
2353
- <span class="cline-any cline-neutral">&nbsp;</span>
2354
- <span class="cline-any cline-neutral">&nbsp;</span>
2355
- <span class="cline-any cline-neutral">&nbsp;</span>
2356
- <span class="cline-any cline-neutral">&nbsp;</span>
2357
- <span class="cline-any cline-neutral">&nbsp;</span>
2358
- <span class="cline-any cline-neutral">&nbsp;</span>
2359
- <span class="cline-any cline-neutral">&nbsp;</span>
2360
- <span class="cline-any cline-neutral">&nbsp;</span>
2361
- <span class="cline-any cline-neutral">&nbsp;</span>
2362
- <span class="cline-any cline-neutral">&nbsp;</span>
2363
- <span class="cline-any cline-neutral">&nbsp;</span>
2364
- <span class="cline-any cline-neutral">&nbsp;</span>
2365
- <span class="cline-any cline-neutral">&nbsp;</span>
2366
- <span class="cline-any cline-neutral">&nbsp;</span>
2367
- <span class="cline-any cline-neutral">&nbsp;</span>
2368
- <span class="cline-any cline-neutral">&nbsp;</span>
2369
- <span class="cline-any cline-no">&nbsp;</span>
2370
- <span class="cline-any cline-no">&nbsp;</span>
2371
- <span class="cline-any cline-neutral">&nbsp;</span>
2372
- <span class="cline-any cline-neutral">&nbsp;</span>
2373
- <span class="cline-any cline-no">&nbsp;</span>
2374
- <span class="cline-any cline-no">&nbsp;</span>
2375
- <span class="cline-any cline-no">&nbsp;</span>
2376
- <span class="cline-any cline-no">&nbsp;</span>
2377
- <span class="cline-any cline-neutral">&nbsp;</span>
2378
- <span class="cline-any cline-neutral">&nbsp;</span>
2379
- <span class="cline-any cline-neutral">&nbsp;</span>
2380
- <span class="cline-any cline-yes">1x</span>
2381
- <span class="cline-any cline-no">&nbsp;</span>
2382
- <span class="cline-any cline-no">&nbsp;</span>
2383
- <span class="cline-any cline-neutral">&nbsp;</span>
2384
- <span class="cline-any cline-no">&nbsp;</span>
2385
- <span class="cline-any cline-no">&nbsp;</span>
2386
- <span class="cline-any cline-no">&nbsp;</span>
2387
- <span class="cline-any cline-no">&nbsp;</span>
2388
- <span class="cline-any cline-no">&nbsp;</span>
2389
- <span class="cline-any cline-no">&nbsp;</span>
2390
- <span class="cline-any cline-no">&nbsp;</span>
2391
- <span class="cline-any cline-neutral">&nbsp;</span>
2392
- <span class="cline-any cline-neutral">&nbsp;</span>
2393
- <span class="cline-any cline-neutral">&nbsp;</span>
2394
- <span class="cline-any cline-no">&nbsp;</span>
2395
- <span class="cline-any cline-no">&nbsp;</span>
2396
- <span class="cline-any cline-no">&nbsp;</span>
2397
- <span class="cline-any cline-neutral">&nbsp;</span>
2398
- <span class="cline-any cline-neutral">&nbsp;</span>
2399
- <span class="cline-any cline-neutral">&nbsp;</span>
2400
- <span class="cline-any cline-neutral">&nbsp;</span>
2401
- <span class="cline-any cline-no">&nbsp;</span>
2402
- <span class="cline-any cline-no">&nbsp;</span>
2403
- <span class="cline-any cline-no">&nbsp;</span>
2404
- <span class="cline-any cline-no">&nbsp;</span>
2405
- <span class="cline-any cline-no">&nbsp;</span>
2406
- <span class="cline-any cline-no">&nbsp;</span>
2407
- <span class="cline-any cline-no">&nbsp;</span>
2408
- <span class="cline-any cline-no">&nbsp;</span>
2409
- <span class="cline-any cline-neutral">&nbsp;</span>
2410
- <span class="cline-any cline-no">&nbsp;</span>
2411
- <span class="cline-any cline-no">&nbsp;</span>
2412
- <span class="cline-any cline-no">&nbsp;</span>
2413
- <span class="cline-any cline-no">&nbsp;</span>
2414
- <span class="cline-any cline-no">&nbsp;</span>
2415
- <span class="cline-any cline-no">&nbsp;</span>
2416
- <span class="cline-any cline-no">&nbsp;</span>
2417
- <span class="cline-any cline-no">&nbsp;</span>
2418
- <span class="cline-any cline-neutral">&nbsp;</span>
2419
- <span class="cline-any cline-neutral">&nbsp;</span>
2420
- <span class="cline-any cline-neutral">&nbsp;</span>
2421
- <span class="cline-any cline-neutral">&nbsp;</span>
2422
- <span class="cline-any cline-no">&nbsp;</span>
2423
- <span class="cline-any cline-neutral">&nbsp;</span>
2424
- <span class="cline-any cline-neutral">&nbsp;</span>
2425
- <span class="cline-any cline-neutral">&nbsp;</span>
2426
- <span class="cline-any cline-neutral">&nbsp;</span>
2427
- <span class="cline-any cline-neutral">&nbsp;</span>
2428
- <span class="cline-any cline-neutral">&nbsp;</span>
2429
- <span class="cline-any cline-no">&nbsp;</span>
2430
- <span class="cline-any cline-neutral">&nbsp;</span>
2431
- <span class="cline-any cline-neutral">&nbsp;</span>
2432
- <span class="cline-any cline-neutral">&nbsp;</span>
2433
- <span class="cline-any cline-no">&nbsp;</span>
2434
- <span class="cline-any cline-no">&nbsp;</span>
2435
- <span class="cline-any cline-no">&nbsp;</span>
2436
- <span class="cline-any cline-neutral">&nbsp;</span>
2437
- <span class="cline-any cline-neutral">&nbsp;</span>
2438
- <span class="cline-any cline-neutral">&nbsp;</span>
2439
- <span class="cline-any cline-neutral">&nbsp;</span>
2440
- <span class="cline-any cline-neutral">&nbsp;</span>
2441
- <span class="cline-any cline-neutral">&nbsp;</span>
2442
- <span class="cline-any cline-neutral">&nbsp;</span>
2443
- <span class="cline-any cline-neutral">&nbsp;</span>
2444
- <span class="cline-any cline-yes">1x</span>
2445
- <span class="cline-any cline-no">&nbsp;</span>
2446
- <span class="cline-any cline-no">&nbsp;</span>
2447
- <span class="cline-any cline-no">&nbsp;</span>
2448
- <span class="cline-any cline-no">&nbsp;</span>
2449
- <span class="cline-any cline-neutral">&nbsp;</span>
2450
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { cloneDeep } from 'lodash';
2451
- import { App, LogicItem, Logic, Module, View, ViewElement, Argument, SelectMembers, SynatxNode, BindDirective, CallLogic } from '../../concepts';
2452
- import { addBreakpointNodesFromApp } from '../../breakpoint';
2453
- import { getConceptConstructor } from '../../decorators';
2454
- import { config } from '../../config';
2455
- import storageService from './service';
2456
- import { v4 as uuidv4 } from 'uuid';
2457
- import stepRecorder from '../../manager/stepRecorder';
2458
- import * as jsoner from './jsoner';
2459
- /// #if !process.env.NODE_ENV || process.env.BUILD_TARGET === 'node'
2460
- import * as fs from 'fs-extra';
2461
- import type { NaslServer } from 'src/server/naslServer';
2462
- /// #endif
2463
- &nbsp;
2464
- &nbsp;
2465
- &nbsp;
2466
- export const batchQuery = storageService.batchQuery;
2467
- export const batchAction = storageService.batchAction;
2468
- export const batchInstruct = storageService.batchInstruct;
2469
- export const breakpoint = storageService.breakpoint;
2470
- &nbsp;
2471
- let tabTimestamp: string;
2472
- export const databaseTypes = storageService.databaseTypes;
2473
- &nbsp;
2474
- export const operationRecordInfoMap: Map&lt;string, any&gt; = new Map();
2475
- &nbsp;
2476
- // 操作栈记录
2477
- export function <span class="fstat-no" title="function not covered" >doOperationRecord(</span>operation: Operation) {
2478
- const request = <span class="cstat-no" title="statement not covered" >indexedDB.open('naslData', 1);</span>
2479
- &nbsp;
2480
- <span class="cstat-no" title="statement not covered" > request.onupgradeneeded = <span class="fstat-no" title="function not covered" >(e</span>vent: any) =&gt; {</span>
2481
- const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
2482
- const objectStore = <span class="cstat-no" title="statement not covered" >db.createObjectStore('operationRecord', { autoIncrement: true });</span>
2483
- <span class="cstat-no" title="statement not covered" > objectStore.createIndex('appId', 'appId');</span>
2484
- <span class="cstat-no" title="statement not covered" > objectStore.createIndex('timestamp', 'timestamp');</span>
2485
- };
2486
- &nbsp;
2487
- <span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) =&gt; {</span>
2488
- const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
2489
- const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readwrite');</span>
2490
- const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
2491
- <span class="cstat-no" title="statement not covered" > operation.appId = operationRecordInfoMap.get('appId');</span>
2492
- <span class="cstat-no" title="statement not covered" > operation.branchId = operationRecordInfoMap.get('branchId');</span>
2493
- <span class="cstat-no" title="statement not covered" > operation.accountId = operationRecordInfoMap.get('accountId');</span>
2494
- <span class="cstat-no" title="statement not covered" > operation.userId = operationRecordInfoMap.get('userId');</span>
2495
- <span class="cstat-no" title="statement not covered" > operation.phone = operationRecordInfoMap.get('phone');</span>
2496
- // 将时间戳添加到记录中
2497
- <span class="cstat-no" title="statement not covered" > operation.timestamp = Date.now();</span>
2498
- // 这份数据不存在向上的引用,因此用cloneDeep没有关系
2499
- <span class="cstat-no" title="statement not covered" > objectStore.put(cloneDeep(operation));</span>
2500
- <span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
2501
- <span class="cstat-no" title="statement not covered" > db.close();</span>
2502
- };
2503
- };
2504
- &nbsp;
2505
- <span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >function(e</span>vent) {</span>
2506
- <span class="cstat-no" title="statement not covered" > console.log('Failed to open database');</span>
2507
- };
2508
- }
2509
- &nbsp;
2510
- // 删除失效数据
2511
- async function <span class="fstat-no" title="function not covered" >deleteExpiredRecords(</span>) {
2512
- <span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) =&gt; {</span>
2513
- const request = <span class="cstat-no" title="statement not covered" >indexedDB.open('naslData', 1);</span>
2514
- &nbsp;
2515
- <span class="cstat-no" title="statement not covered" > request.onupgradeneeded = <span class="fstat-no" title="function not covered" >(e</span>vent: any) =&gt; {</span>
2516
- const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
2517
- const objectStore = <span class="cstat-no" title="statement not covered" >db.createObjectStore('operationRecord', { autoIncrement: true });</span>
2518
- <span class="cstat-no" title="statement not covered" > objectStore.createIndex('appId', 'appId');</span>
2519
- <span class="cstat-no" title="statement not covered" > objectStore.createIndex('timestamp', 'timestamp');</span>
2520
- };
2521
- &nbsp;
2522
- <span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) =&gt; {</span>
2523
- const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
2524
- const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readwrite');</span>
2525
- const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
2526
- const index = <span class="cstat-no" title="statement not covered" >objectStore.index('timestamp');</span>
2527
- // 设置有效期,默认7天
2528
- const localStorageExpiresAt = <span class="cstat-no" title="statement not covered" >window.localStorage.getItem('expiresAt');</span>
2529
- const expiresAt = <span class="cstat-no" title="statement not covered" >Date.now() - (localStorageExpiresAt ? +localStorageExpiresAt : 7 * 24 * 60 * 60 * 1000);</span>
2530
- const range = <span class="cstat-no" title="statement not covered" >IDBKeyRange.upperBound(expiresAt);</span>
2531
- const expiredRecordsRequest = <span class="cstat-no" title="statement not covered" >index.openCursor(range);</span>
2532
- &nbsp;
2533
- <span class="cstat-no" title="statement not covered" > expiredRecordsRequest.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) =&gt; {</span>
2534
- const cursor = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
2535
- <span class="cstat-no" title="statement not covered" > if (cursor) {</span>
2536
- <span class="cstat-no" title="statement not covered" > console.log(cursor);</span>
2537
- <span class="cstat-no" title="statement not covered" > objectStore.delete(cursor.primaryKey);</span>
2538
- <span class="cstat-no" title="statement not covered" > cursor.continue();</span>
2539
- } else {
2540
- <span class="cstat-no" title="statement not covered" > resolve(void 0);</span>
2541
- }
2542
- };
2543
- &nbsp;
2544
- <span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
2545
- <span class="cstat-no" title="statement not covered" > db.close();</span>
2546
- };
2547
- };
2548
- &nbsp;
2549
- <span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >(e</span>vent) =&gt; {</span>
2550
- <span class="cstat-no" title="statement not covered" > reject('Failed to open database');</span>
2551
- };
2552
- });
2553
- }
2554
- &nbsp;
2555
- // 操作栈查询
2556
- export function <span class="fstat-no" title="function not covered" >operationRecordQuery(</span>app: any) {
2557
- <span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) =&gt; {</span>
2558
- const appId = <span class="cstat-no" title="statement not covered" >app?.id;</span>
2559
- const request = <span class="cstat-no" title="statement not covered" >indexedDB.open('naslData', 1);</span>
2560
- <span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) =&gt; {</span>
2561
- const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
2562
- const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readonly');</span>
2563
- const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
2564
- const index = <span class="cstat-no" title="statement not covered" >objectStore.index('appId');</span> // 查询 'appId' 索引
2565
- const range = <span class="cstat-no" title="statement not covered" >IDBKeyRange.only(appId);</span>
2566
- const request = <span class="cstat-no" title="statement not covered" >index.openCursor(range);</span>
2567
- const result: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
2568
- &nbsp;
2569
- <span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) =&gt; {</span>
2570
- const cursor = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
2571
- <span class="cstat-no" title="statement not covered" > if (cursor) {</span>
2572
- const record = <span class="cstat-no" title="statement not covered" >cursor.value;</span>
2573
- const branchId = <span class="cstat-no" title="statement not covered" >operationRecordInfoMap.get('branchId');</span>
2574
- <span class="cstat-no" title="statement not covered" > if (record.branchId === branchId) {</span>
2575
- <span class="cstat-no" title="statement not covered" > result.push(record);</span>
2576
- }
2577
- <span class="cstat-no" title="statement not covered" > cursor.continue();</span>
2578
- } else {
2579
- <span class="cstat-no" title="statement not covered" > console.log('操作记录栈:', result);</span>
2580
- <span class="cstat-no" title="statement not covered" > resolve(result);</span>
2581
- }
2582
- };
2583
- &nbsp;
2584
- <span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
2585
- <span class="cstat-no" title="statement not covered" > db.close();</span>
2586
- };
2587
- };
2588
- &nbsp;
2589
- <span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >(e</span>vent) =&gt; {</span>
2590
- <span class="cstat-no" title="statement not covered" > reject('Failed to open database');</span>
2591
- };
2592
- });
2593
- }
2594
- &nbsp;
2595
- // 获取父对象
2596
- function <span class="fstat-no" title="function not covered" >getParentInfo(</span>appJson: any, path: string) {
2597
- const pathArr: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
2598
- <span class="cstat-no" title="statement not covered" > (path?.split('.') || []).forEach(<span class="fstat-no" title="function not covered" >(p</span>athItem: string) =&gt; {</span>
2599
- const arrayPropertyKey = <span class="cstat-no" title="statement not covered" >pathItem.split('[')[0];</span>
2600
- const matchArr = <span class="cstat-no" title="statement not covered" >pathItem.match(/\[(.+?)\]/);</span>
2601
- <span class="cstat-no" title="statement not covered" > if (matchArr) {</span>
2602
- <span class="cstat-no" title="statement not covered" > pathArr.push(arrayPropertyKey, matchArr[0]);</span>
2603
- } else {
2604
- <span class="cstat-no" title="statement not covered" > pathArr.push(pathItem);</span>
2605
- }
2606
- });
2607
- <span class="cstat-no" title="statement not covered" > pathArr.pop();</span>
2608
- let parentPath = <span class="cstat-no" title="statement not covered" >'';</span>
2609
- <span class="cstat-no" title="statement not covered" > pathArr.forEach(<span class="fstat-no" title="function not covered" >(p</span>athItem: string, index: number) =&gt; {</span>
2610
- const matchArr = <span class="cstat-no" title="statement not covered" >pathItem.match(/\[(.+?)\]/);</span>
2611
- <span class="cstat-no" title="statement not covered" > if (matchArr || index === 0) {</span>
2612
- <span class="cstat-no" title="statement not covered" > parentPath += pathItem;</span>
2613
- } else {
2614
- <span class="cstat-no" title="statement not covered" > parentPath += `.${pathItem}`</span>
2615
- }
2616
- });
2617
- const parentNode = <span class="cstat-no" title="statement not covered" >jsoner.queryNodeByPath(appJson, parentPath);</span>
2618
- <span class="cstat-no" title="statement not covered" > return {</span>
2619
- parentPath,
2620
- parentNode,
2621
- };
2622
- }
2623
- &nbsp;
2624
- // 操作记录回放
2625
- export async function <span class="fstat-no" title="function not covered" >operationRecordPlayback(</span>app: any, operationRecordAction: 'undo' | 'redo') {
2626
- const operationRecord: any = <span class="cstat-no" title="statement not covered" >await operationRecordQuery(app);</span>
2627
- let operationRecordIndex = <span class="cstat-no" title="statement not covered" >operationRecordInfoMap.get('operationRecordIndex');</span>
2628
- <span class="cstat-no" title="statement not covered" > if ([null, undefined].includes(operationRecordIndex)) {</span>
2629
- <span class="cstat-no" title="statement not covered" > operationRecordIndex = operationRecord?.length;</span>
2630
- }
2631
- const appJson = <span class="cstat-no" title="statement not covered" >app.toJSON();</span>
2632
- <span class="cstat-no" title="statement not covered" > if (operationRecordAction === 'undo') {</span>
2633
- <span class="cstat-no" title="statement not covered" > if (operationRecordIndex &gt; 0) {</span>
2634
- const currentRecordItem = <span class="cstat-no" title="statement not covered" >operationRecord?.[operationRecordIndex];</span>
2635
- const { type, action: recordItemAction } = <span class="cstat-no" title="statement not covered" >currentRecordItem || {};</span>
2636
- // 多人协作
2637
- <span class="cstat-no" title="statement not covered" > if (type === 'cooperation' &amp;&amp; recordItemAction === 'confirmPull') {</span>
2638
- <span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},已经进行了多人协作“合并”操作,无法继续对操作栈进行回放!`);</span>
2639
- <span class="cstat-no" title="statement not covered" > return;</span>
2640
- }
2641
- <span class="cstat-no" title="statement not covered" > operationRecordIndex--;</span>
2642
- } else {
2643
- <span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},无法继续回放`);</span>
2644
- <span class="cstat-no" title="statement not covered" > console.log('当前appJSON:', appJson);</span>
2645
- <span class="cstat-no" title="statement not covered" > return;</span>
2646
- }
2647
- } else {
2648
- <span class="cstat-no" title="statement not covered" > if (operationRecordIndex &lt; operationRecord?.length) {</span>
2649
- <span class="cstat-no" title="statement not covered" > operationRecordIndex++;</span>
2650
- } else {
2651
- <span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},无法继续前进`);</span>
2652
- <span class="cstat-no" title="statement not covered" > console.log('当前appJSON:', appJson);</span>
2653
- <span class="cstat-no" title="statement not covered" > return;</span>
2654
- }
2655
- }
2656
- <span class="cstat-no" title="statement not covered" > operationRecordInfoMap.set('operationRecordIndex', operationRecordIndex);</span>
2657
- const currentIndex = <span class="cstat-no" title="statement not covered" >operationRecordIndex;</span>
2658
- <span class="cstat-no" title="statement not covered" > ([...operationRecord].splice(currentIndex, operationRecord?.length) || []).reverse()?.forEach(<span class="fstat-no" title="function not covered" >(r</span>ecordItem: any) =&gt; {</span>
2659
- const { actionItem } = <span class="cstat-no" title="statement not covered" >recordItem || {};</span>
2660
- const { list } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
2661
- <span class="cstat-no" title="statement not covered" > [...(list || [])].reverse().forEach(<span class="fstat-no" title="function not covered" >(a</span>ctionItem: any) =&gt; {</span>
2662
- const { path, action, object, oldObject, parentKey, index: oldIndex } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
2663
- const { parentNode } = <span class="cstat-no" title="statement not covered" >getParentInfo(appJson, path);</span>
2664
- let newPath = <span class="cstat-no" title="statement not covered" >path;</span>
2665
- // 如果涉及到改名操作,需要特殊处理
2666
- <span class="cstat-no" title="statement not covered" > if (operationRecordAction === 'undo' &amp;&amp; action === 'update' &amp;&amp; object?.name) {</span>
2667
- const pathArr = <span class="cstat-no" title="statement not covered" >path?.split('.') || [];</span>
2668
- const lastPathItem = <span class="cstat-no" title="statement not covered" >pathArr?.pop();</span>
2669
- <span class="cstat-no" title="statement not covered" > if (lastPathItem) {</span>
2670
- <span class="cstat-no" title="statement not covered" > pathArr.push(lastPathItem.replace(/(name=)[^\]]+/, `$1${object?.name}`));</span>
2671
- }
2672
- <span class="cstat-no" title="statement not covered" > newPath = pathArr.join('.');</span>
2673
- }
2674
- const node = <span class="cstat-no" title="statement not covered" >jsoner.queryNodeByPath(appJson, newPath);</span>
2675
- <span class="cstat-no" title="statement not covered" > switch (action) {</span>
2676
- case 'create':
2677
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(parentNode)) {</span>
2678
- const index = <span class="cstat-no" title="statement not covered" >parentNode.indexOf(node);</span>
2679
- <span class="cstat-no" title="statement not covered" > if (index !== -1) {</span>
2680
- <span class="cstat-no" title="statement not covered" > parentNode.splice(index, 1);</span>
2681
- }
2682
- } else {
2683
- <span class="cstat-no" title="statement not covered" > parentNode[parentKey] = null;</span>
2684
- }
2685
- <span class="cstat-no" title="statement not covered" > break;</span>
2686
- case 'delete':
2687
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(parentNode) &amp;&amp; oldIndex !== -1) {</span>
2688
- <span class="cstat-no" title="statement not covered" > parentNode.splice(oldIndex, 0, oldObject);</span>
2689
- } else {
2690
- <span class="cstat-no" title="statement not covered" > parentNode[parentKey] = oldObject;</span>
2691
- }
2692
- <span class="cstat-no" title="statement not covered" > break;</span>
2693
- case 'update':
2694
- <span class="cstat-no" title="statement not covered" > for (const key in oldObject) {</span>
2695
- <span class="cstat-no" title="statement not covered" > if (node) {</span>
2696
- (<span class="cstat-no" title="statement not covered" >node as any)[key] = oldObject[key] ?? null;</span>
2697
- }
2698
- }
2699
- <span class="cstat-no" title="statement not covered" > break;</span>
2700
- }
2701
- });
2702
- });
2703
- <span class="cstat-no" title="statement not covered" > console.log('当前所处栈位置:', currentIndex);</span>
2704
- <span class="cstat-no" title="statement not covered" > console.log('当前appJSON:', appJson);</span>
2705
- <span class="cstat-no" title="statement not covered" > return appJson;</span>
2706
- }
2707
- &nbsp;
2708
- function <span class="fstat-no" title="function not covered" >getLogic(</span>key: string, app: any, diffLogicList: string[]) {
2709
- <span class="cstat-no" title="statement not covered" > if (!diffLogicList.includes(key)) {</span>
2710
- <span class="cstat-no" title="statement not covered" > diffLogicList.push(key);</span>
2711
- <span class="cstat-no" title="statement not covered" > if (key.startsWith('app')) {</span>
2712
- const index = <span class="cstat-no" title="statement not covered" >key.lastIndexOf('.');</span>
2713
- const name = <span class="cstat-no" title="statement not covered" >key.slice(index + 1);</span>
2714
- const logic = <span class="cstat-no" title="statement not covered" >app.logics.find(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; <span class="cstat-no" title="statement not covered" >item.name === name)</span>;</span>
2715
- <span class="cstat-no" title="statement not covered" > if (logic &amp;&amp; logic.body &amp;&amp; logic.body.length &gt; 2) {</span>
2716
- <span class="cstat-no" title="statement not covered" > logic.body.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; <span class="cstat-no" title="statement not covered" >getStatement(item, app, diffLogicList))</span>;</span>
2717
- }
2718
- } else <span class="cstat-no" title="statement not covered" >if (key.startsWith('extensions')) {</span>
2719
- const _pathArr = <span class="cstat-no" title="statement not covered" >key.split('.');</span>
2720
- const _name = <span class="cstat-no" title="statement not covered" >_pathArr[1];</span>
2721
- const _path = <span class="cstat-no" title="statement not covered" >_pathArr[3];</span>
2722
- const _list = <span class="cstat-no" title="statement not covered" >app.dependencies;</span>
2723
- const _module = <span class="cstat-no" title="statement not covered" >_list.find(<span class="fstat-no" title="function not covered" >(i</span>t: Module) =&gt; {</span>
2724
- const name = <span class="cstat-no" title="statement not covered" >it.name.replaceAll('-', '_');</span>
2725
- <span class="cstat-no" title="statement not covered" > return name === _name;</span>
2726
- });
2727
- const logic = <span class="cstat-no" title="statement not covered" >_module?.logics?.find(<span class="fstat-no" title="function not covered" >(i</span>tem: Logic) =&gt; <span class="cstat-no" title="statement not covered" >item.name === _path)</span>;</span>
2728
- <span class="cstat-no" title="statement not covered" > if (logic &amp;&amp; logic.body &amp;&amp; logic.body.length &gt; 2) {</span>
2729
- <span class="cstat-no" title="statement not covered" > logic.body.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; <span class="cstat-no" title="statement not covered" >getStatement(item, app, diffLogicList))</span>;</span>
2730
- }
2731
- }
2732
- }
2733
- }
2734
- &nbsp;
2735
- /* 获取LogicITEM */
2736
- function <span class="fstat-no" title="function not covered" >getStatement(</span>state: any, app: any, diffLogicList: string[]) {
2737
- let logicItems = <span class="cstat-no" title="statement not covered" >[];</span>
2738
- <span class="cstat-no" title="statement not covered" > switch (state.concept) {</span>
2739
- case 'Assignment':
2740
- <span class="cstat-no" title="statement not covered" > logicItems = [state.left, state.right];</span>
2741
- <span class="cstat-no" title="statement not covered" > break;</span>
2742
- case 'IfStatement':
2743
- <span class="cstat-no" title="statement not covered" > logicItems = [...state.consequent, ...state.alternate];</span>
2744
- <span class="cstat-no" title="statement not covered" > break;</span>
2745
- case 'ForEachStatement':
2746
- <span class="cstat-no" title="statement not covered" > logicItems = [...state.body, state.each, state.start, state.end];</span>
2747
- <span class="cstat-no" title="statement not covered" > break;</span>
2748
- case 'Match':
2749
- <span class="cstat-no" title="statement not covered" > logicItems = [state.expression, ...state.cases.map(getStatement).flat(1)];</span>
2750
- <span class="cstat-no" title="statement not covered" > break;</span>
2751
- case 'MatchCase':
2752
- <span class="cstat-no" title="statement not covered" > logicItems = [...state.patterns, ...state.body];</span>
2753
- <span class="cstat-no" title="statement not covered" > break;</span>
2754
- case 'SwitchStatement':
2755
- <span class="cstat-no" title="statement not covered" > logicItems = state.cases.map(getStatement).flat(1);</span>
2756
- <span class="cstat-no" title="statement not covered" > break;</span>
2757
- case 'SwitchCase':
2758
- <span class="cstat-no" title="statement not covered" > logicItems = [state.test, ...state.consequent];</span>
2759
- <span class="cstat-no" title="statement not covered" > break;</span>
2760
- case 'WhileStatement':
2761
- <span class="cstat-no" title="statement not covered" > logicItems = [state.test, ...state.body];</span>
2762
- <span class="cstat-no" title="statement not covered" > break;</span>
2763
- case 'CallLogic':
2764
- <span class="cstat-no" title="statement not covered" > logicItems = state.arguments?.map(<span class="fstat-no" title="function not covered" >(i</span>tem: Argument) =&gt; <span class="cstat-no" title="statement not covered" >item.expression)</span>;</span>
2765
- <span class="cstat-no" title="statement not covered" > getLogic(state.calleewholeKey, app, diffLogicList);</span>
2766
- <span class="cstat-no" title="statement not covered" > break;</span>
2767
- case 'CallFunction':
2768
- <span class="cstat-no" title="statement not covered" > logicItems = state.arguments?.map(<span class="fstat-no" title="function not covered" >(i</span>tem: Argument) =&gt; <span class="cstat-no" title="statement not covered" >item.expression)</span>;</span>
2769
- <span class="cstat-no" title="statement not covered" > break;</span>
2770
- case 'CallInterface':
2771
- <span class="cstat-no" title="statement not covered" > logicItems = state.arguments?.map(<span class="fstat-no" title="function not covered" >(i</span>tem: Argument) =&gt; <span class="cstat-no" title="statement not covered" >item.expression)</span>;</span>
2772
- <span class="cstat-no" title="statement not covered" > break;</span>
2773
- case 'ExternalDestination':
2774
- <span class="cstat-no" title="statement not covered" > logicItems = [state.anchor, state.link];</span>
2775
- <span class="cstat-no" title="statement not covered" > break;</span>
2776
- case 'BatchAssignment':
2777
- <span class="cstat-no" title="statement not covered" > logicItems = [state.left?.expression, ...state.left?.members, ...state.rights.map(<span class="fstat-no" title="function not covered" >(i</span>tem: SelectMembers) =&gt; <span class="cstat-no" title="statement not covered" >[item?.expression, ...item?.members])</span>.flat(1)];</span>
2778
- <span class="cstat-no" title="statement not covered" > break;</span>
2779
- case 'MemberExpression':
2780
- <span class="cstat-no" title="statement not covered" > logicItems = [state.object, state.property];</span>
2781
- <span class="cstat-no" title="statement not covered" > break;</span>
2782
- case 'StringInterpolation':
2783
- <span class="cstat-no" title="statement not covered" > logicItems = [...state.expressions];</span>
2784
- <span class="cstat-no" title="statement not covered" > break;</span>
2785
- case 'NewComposite':
2786
- <span class="cstat-no" title="statement not covered" > logicItems = [...state.rights.map(<span class="fstat-no" title="function not covered" >(i</span>tem: SelectMembers) =&gt; <span class="cstat-no" title="statement not covered" >item.expression)</span>];</span>
2787
- <span class="cstat-no" title="statement not covered" > break;</span>
2788
- case 'NewList':
2789
- <span class="cstat-no" title="statement not covered" > logicItems = [...state.items];</span>
2790
- <span class="cstat-no" title="statement not covered" > break;</span>
2791
- default:
2792
- <span class="cstat-no" title="statement not covered" > break;</span>
2793
- }
2794
- &nbsp;
2795
- <span class="cstat-no" title="statement not covered" > return logicItems.filter(<span class="fstat-no" title="function not covered" >(i</span>tem: LogicItem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>;</span>
2796
- }
2797
- &nbsp;
2798
- /* 小程序影响的服务端发布 */
2799
- function <span class="fstat-no" title="function not covered" >getMiniAppChange(</span>target: any, obj: any, action: string) {
2800
- <span class="cstat-no" title="statement not covered" > if (!target.app.miniEnable) {</span>
2801
- <span class="cstat-no" title="statement not covered" > return false;</span>
2802
- }
2803
- /* 分端以后需要改 */
2804
- const len = <span class="cstat-no" title="statement not covered" >target.nodePath?.split('.').length;</span>
2805
- <span class="cstat-no" title="statement not covered" > if (len &gt; 2) {</span>
2806
- <span class="cstat-no" title="statement not covered" > return false;</span>
2807
- }
2808
- <span class="cstat-no" title="statement not covered" > if (action === 'delete') {</span>
2809
- <span class="cstat-no" title="statement not covered" > return true;</span>
2810
- } else {
2811
- <span class="cstat-no" title="statement not covered" > if ('name' in obj || 'title' in obj) {</span>
2812
- <span class="cstat-no" title="statement not covered" > return true;</span>
2813
- }
2814
- }
2815
- }
2816
- &nbsp;
2817
- let aiExecuted = 0;
2818
- let sessionPath = '';
2819
- // AI 生成内容是否被采纳
2820
- const handleAIPoint = <span class="fstat-no" title="function not covered" >(a</span>pp: any, actionItem: any) =&gt; {
2821
- const { actionMsg, action } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
2822
- <span class="cstat-no" title="statement not covered" > if (aiExecuted &gt; 0) {</span>
2823
- <span class="cstat-no" title="statement not covered" > app.emit('logic:accepted', { ...actionItem, sessionPath });</span>
2824
- <span class="cstat-no" title="statement not covered" > aiExecuted -= 1;</span>
2825
- }
2826
- <span class="cstat-no" title="statement not covered" > if (actionMsg.includes('自然语言生成代码') &amp;&amp; !action) {</span>
2827
- <span class="cstat-no" title="statement not covered" > aiExecuted += 1;</span>
2828
- // eslint-disable-next-line prefer-destructuring
2829
- <span class="cstat-no" title="statement not covered" > sessionPath = actionMsg.match(/:(.*)/)[1];</span>
2830
- }
2831
- }
2832
- &nbsp;
2833
- /**
2834
- * 执行更新
2835
- */
2836
- async function <span class="fstat-no" title="function not covered" >doAction(</span>app: any, actionItem: any) {
2837
- const isOperationRecord = <span class="cstat-no" title="statement not covered" >operationRecordInfoMap.get('isOperationRecord');</span>
2838
- <span class="cstat-no" title="statement not covered" > if (isOperationRecord) {</span>
2839
- <span class="cstat-no" title="statement not covered" > console.log('正在进行操作栈回放操作,如需行任何Nasl操作请刷新页面');</span>
2840
- <span class="cstat-no" title="statement not covered" > return;</span>
2841
- }
2842
- let hasFrontEnd = <span class="cstat-no" title="statement not covered" >false;</span>
2843
- let hasBackEnd = <span class="cstat-no" title="statement not covered" >false;</span>
2844
- const actionList: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
2845
- const { list, actionMsg, action } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
2846
- <span class="cstat-no" title="statement not covered" > handleAIPoint(app, actionItem);</span>
2847
- const itemloop = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(_</span>i: LogicItem, app: any, diffArr: string[]) =&gt; {</span>
2848
- const _l = <span class="cstat-no" title="statement not covered" >getStatement(_i, app, diffArr);</span>
2849
- <span class="cstat-no" title="statement not covered" > if (_l.length) {</span>
2850
- <span class="cstat-no" title="statement not covered" > _l.map(<span class="fstat-no" title="function not covered" >(_</span>ii: LogicItem) =&gt; <span class="cstat-no" title="statement not covered" >itemloop(_ii, app, diffArr))</span>;</span>
2851
- }
2852
- };
2853
- const loopEle = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(v</span>iew: View | ViewElement, checkAuth: boolean) =&gt; {</span>
2854
- <span class="cstat-no" title="statement not covered" > if (view instanceof View) {</span>
2855
- <span class="cstat-no" title="statement not covered" > view?.elements?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >loopEle(item, checkAuth))</span>;</span>
2856
- }
2857
- <span class="cstat-no" title="statement not covered" > view?.children?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >loopEle(item, checkAuth))</span>;</span>
2858
- <span class="cstat-no" title="statement not covered" > if (view instanceof ViewElement) {</span>
2859
- <span class="cstat-no" title="statement not covered" > if (view.bindEvents.length) {</span>
2860
- const diffArr: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
2861
- <span class="cstat-no" title="statement not covered" > view.bindEvents.forEach(<span class="fstat-no" title="function not covered" >(b</span>indEvent) =&gt; {</span>
2862
- <span class="cstat-no" title="statement not covered" > bindEvent.logics.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic) =&gt; {</span>
2863
- <span class="cstat-no" title="statement not covered" > logic.body.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogicItem) =&gt; <span class="cstat-no" title="statement not covered" >itemloop(logicItem, app, diffArr))</span>;</span>
2864
- });
2865
- });
2866
- const result = <span class="cstat-no" title="statement not covered" >diffArr.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.startsWith('app') || item.startsWith('extensions'))</span>;</span>
2867
- <span class="cstat-no" title="statement not covered" > if (result.length) {</span>
2868
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2869
- }
2870
- }
2871
- <span class="cstat-no" title="statement not covered" > if (view.tag === 'u-uploader' || view.tag === 'van-uploader') {</span>
2872
- const bute = <span class="cstat-no" title="statement not covered" >view?.bindAttrs.find(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.name === 'url')</span>;</span>
2873
- const needUpdateBackEnd = <span class="cstat-no" title="statement not covered" >bute?.value?.endsWith('/import') || bute?.value?.includes('/upload/');</span>
2874
- <span class="cstat-no" title="statement not covered" > if (checkAuth) {</span>
2875
- <span class="cstat-no" title="statement not covered" > if (needUpdateBackEnd &amp;&amp; !view.view.parentAuth) {</span>
2876
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2877
- }
2878
- } else {
2879
- <span class="cstat-no" title="statement not covered" > if (needUpdateBackEnd) {</span>
2880
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2881
- }
2882
- }
2883
- }
2884
- }
2885
- };
2886
- &nbsp;
2887
- const loopEleAuth = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(v</span>iewElement: ViewElement) =&gt; {</span>
2888
- <span class="cstat-no" title="statement not covered" > viewElement?.children?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: ViewElement) =&gt; {</span>
2889
- const bindDirective = <span class="cstat-no" title="statement not covered" >item?.bindDirectives?.find(</span>
2890
- <span class="fstat-no" title="function not covered" > (i</span>tem: BindDirective) =&gt; <span class="cstat-no" title="statement not covered" >item.name === 'auth'</span>
2891
- )
2892
- <span class="cstat-no" title="statement not covered" > if (bindDirective) {</span>
2893
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
2894
- }
2895
- <span class="cstat-no" title="statement not covered" > loopEleAuth(item)</span>
2896
- })
2897
- }
2898
- <span class="cstat-no" title="statement not covered" > try {</span>
2899
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(list)) {</span>
2900
- <span class="cstat-no" title="statement not covered" > list.forEach(<span class="fstat-no" title="function not covered" >(e</span>vent) =&gt; {</span>
2901
- const emitTarget = <span class="cstat-no" title="statement not covered" >event?.originEvent?.target as SynatxNode;</span>
2902
- const _path: string = <span class="cstat-no" title="statement not covered" >event.originEvent.path;</span>
2903
- const _root = <span class="cstat-no" title="statement not covered" >_path.split('.')?.[1] || '';</span>
2904
- <span class="cstat-no" title="statement not covered" > if (['backend', 'overriddenLogics', 'dataSources', 'processes', 'roles', 'logics', 'enums', 'structures', 'interfaces', 'interfaceDependencies', 'configuration', 'dependencies', 'authLogics', 'authLogicsForCallInterface', 'triggerLaunchers', 'connections'].some(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >_root.startsWith(item))</span>) {</span>
2905
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2906
- }
2907
- <span class="cstat-no" title="statement not covered" > if (emitTarget) {</span>
2908
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'App') {</span>
2909
- <span class="cstat-no" title="statement not covered" > if (event?.object?.preferenceMap || event?.originEvent?.object?.preferenceMap) {</span>
2910
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
2911
- <span class="cstat-no" title="statement not covered" > hasFrontEnd = true</span>
2912
- }
2913
- }
2914
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'ValidationRule') {</span>
2915
- <span class="cstat-no" title="statement not covered" > if (</span>
2916
- event?.object?.enableServerValidation ||
2917
- event?.originEvent?.object?.enableServerValidation
2918
- ) {
2919
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
2920
- <span class="cstat-no" title="statement not covered" > hasFrontEnd = true</span>
2921
- }
2922
- }
2923
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'Logic') {</span>
2924
- const diffArr: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
2925
- <span class="cstat-no" title="statement not covered" > if (emitTarget.body.length &gt; 2) {</span>
2926
- <span class="cstat-no" title="statement not covered" > emitTarget.body.forEach(<span class="fstat-no" title="function not covered" >(i</span>t: LogicItem) =&gt; {</span>
2927
- <span class="cstat-no" title="statement not covered" > itemloop(it, app, diffArr);</span>
2928
- });
2929
- }
2930
- const result = <span class="cstat-no" title="statement not covered" >diffArr.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.startsWith('app') || item.startsWith('extensions'))</span>;</span>
2931
- <span class="cstat-no" title="statement not covered" > if (result.length) {</span>
2932
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2933
- }
2934
- }
2935
- <span class="cstat-no" title="statement not covered" > if ('view' in emitTarget &amp;&amp; emitTarget.view) {</span>
2936
- <span class="cstat-no" title="statement not covered" > hasFrontEnd = true</span>
2937
- }
2938
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'BindDirective') {</span>
2939
- const isDelete = <span class="cstat-no" title="statement not covered" >event?.originEvent?.action === 'delete'</span>
2940
- <span class="cstat-no" title="statement not covered" > if (isDelete) {</span>
2941
- const isAuto = <span class="cstat-no" title="statement not covered" >~event?.originEvent?.path?.indexOf('name=auth')</span>
2942
- <span class="cstat-no" title="statement not covered" > if (isAuto) {</span>
2943
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
2944
- }
2945
- }
2946
- <span class="cstat-no" title="statement not covered" > if (event?.originEvent?.object?.name === 'auth') {</span>
2947
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
2948
- }
2949
- }
2950
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'View') {</span>
2951
- <span class="cstat-no" title="statement not covered" > if (getMiniAppChange(emitTarget, event?.originEvent?.object, event?.originEvent?.action)) {</span>
2952
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2953
- }
2954
-
2955
- const isDelete = <span class="cstat-no" title="statement not covered" >event?.originEvent?.action === 'delete';</span>
2956
- const isAuthView = <span class="cstat-no" title="statement not covered" >emitTarget.auth &amp;&amp; event?.originEvent?.object?.name;</span>
2957
- const isUpdateAuth = <span class="cstat-no" title="statement not covered" >event?.originEvent?.action === 'update' &amp;&amp; "auth" in (event?.originEvent?.object || {});</span>
2958
- const isUpdateAuthDes = <span class="cstat-no" title="statement not covered" >event?.originEvent?.action === 'update' &amp;&amp; "authDescription" in (event?.originEvent?.object || {});</span>
2959
- const isUpdateBindRoles = <span class="cstat-no" title="statement not covered" >event?.originEvent?.action === 'update' &amp;&amp; event?.originEvent?.object &amp;&amp; event?.originEvent?.object?.bindRoles;</span>
2960
- <span class="cstat-no" title="statement not covered" > if (isDelete || isUpdateAuth || isUpdateBindRoles || isAuthView||isUpdateAuthDes) {</span>
2961
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2962
- // const app = emitTarget.app;
2963
- // const diffArr: string[] = [];
2964
- // emitTarget.logics.forEach((logic: Logic) =&gt; {
2965
- // if (logic.body.length &gt; 2) {
2966
- // logic.body.forEach((it: LogicItem) =&gt; {
2967
- // itemloop(it, app, diffArr);
2968
- // });
2969
- // }
2970
- // });
2971
- // const result = diffArr.filter((item) =&gt; item.startsWith('app') || item.startsWith('extensions'));
2972
- // if (result.length) {
2973
- // hasBackEnd = true;
2974
- // }
2975
- // emitTarget.children.forEach((item: View | ViewElement) =&gt; loopEle(item, isDelete));
2976
- // emitTarget.elements.forEach((item: View | ViewElement) =&gt; loopEle(item, isDelete));
2977
- }
2978
- <span class="cstat-no" title="statement not covered" > hasFrontEnd = true;</span>
2979
- }
2980
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'ViewElement') {</span>
2981
- <span class="cstat-no" title="statement not covered" > if ("authDescription" in (event?.originEvent?.object || {})) {</span>
2982
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2983
- } ;
2984
- <span class="cstat-no" title="statement not covered" > if (event?.originEvent?.object?.name) {</span>
2985
- const bindDirective = <span class="cstat-no" title="statement not covered" >emitTarget.bindDirectives.find(</span>
2986
- <span class="fstat-no" title="function not covered" > (i</span>tem: BindDirective) =&gt; <span class="cstat-no" title="statement not covered" >item.name === 'auth'</span>
2987
- )
2988
- <span class="cstat-no" title="statement not covered" > if (bindDirective) {</span>
2989
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
2990
- }
2991
- }
2992
- <span class="cstat-no" title="statement not covered" > if (event?.originEvent?.action === 'delete') {</span>
2993
- const bindDirective = <span class="cstat-no" title="statement not covered" >emitTarget?.bindDirectives?.find(</span>
2994
- <span class="fstat-no" title="function not covered" > (i</span>tem: BindDirective) =&gt; <span class="cstat-no" title="statement not covered" >item.name === 'auth'</span>
2995
- )
2996
- <span class="cstat-no" title="statement not covered" > if (bindDirective) {</span>
2997
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
2998
- }
2999
- <span class="cstat-no" title="statement not covered" > loopEleAuth(emitTarget)</span>
3000
- }
3001
- <span class="cstat-no" title="statement not covered" > if (event?.originEvent?.action !== 'create') {</span>
3002
- <span class="cstat-no" title="statement not covered" > if (event?.originEvent?.object &amp;&amp; event?.originEvent?.object?.bindRoles) {</span>
3003
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
3004
- }
3005
- }
3006
- <span class="cstat-no" title="statement not covered" > loopEle(emitTarget, true)</span>
3007
- }
3008
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'BindAttribute' &amp;&amp; emitTarget.name === 'url') {</span>
3009
- const needUpdateBackEnd =
3010
- <span class="cstat-no" title="statement not covered" > emitTarget?.value?.endsWith('/import') || emitTarget?.value?.includes('/upload/')</span>
3011
- <span class="cstat-no" title="statement not covered" > if (!emitTarget.view.parentAuth &amp;&amp; needUpdateBackEnd) {</span>
3012
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
3013
- }
3014
- }
3015
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'CallLogic') {</span>
3016
- const arrlist: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
3017
- <span class="cstat-no" title="statement not covered" > getLogic((emitTarget as CallLogic).calleeKey, emitTarget.app, arrlist);</span>
3018
- const result = <span class="cstat-no" title="statement not covered" >arrlist.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.startsWith('app') || item.startsWith('extensions'))</span>;</span>
3019
- // console.log(result, 'CallLogic');
3020
- <span class="cstat-no" title="statement not covered" > if (result.length) {</span>
3021
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
3022
- }
3023
- }
3024
- // 更新端时需要出发后端更新
3025
- <span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'Frontend') {</span>
3026
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
3027
- }
3028
- }
3029
- &nbsp;
3030
- <span class="cstat-no" title="statement not covered" > event.eventList.forEach(<span class="fstat-no" title="function not covered" >({</span> action, path, object: objItem }: { action: string; path: string; object: any }) =&gt; {</span>
3031
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(objItem)) {</span>
3032
- <span class="cstat-no" title="statement not covered" > if (action === 'update') {</span>
3033
- <span class="cstat-no" title="statement not covered" > actionList.push({</span>
3034
- action,
3035
- path,
3036
- node: objItem[0],
3037
- });
3038
- } else {
3039
- <span class="cstat-no" title="statement not covered" > objItem.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem, index) =&gt; {</span>
3040
- <span class="cstat-no" title="statement not covered" > actionList.push({</span>
3041
- action,
3042
- path,
3043
- node: item,
3044
- });
3045
- });
3046
- }
3047
- } else {
3048
- <span class="cstat-no" title="statement not covered" > actionList.push({</span>
3049
- action,
3050
- path,
3051
- object: objItem,
3052
- });
3053
- }
3054
- });
3055
- });
3056
- }
3057
- } catch (error) {
3058
- <span class="cstat-no" title="statement not covered" > console.log(error);</span>
3059
- <span class="cstat-no" title="statement not covered" > taskQueue.refreshNasl(app, {</span>
3060
- errorInfo: {
3061
- message: error?.message,
3062
- stack: error?.stack,
3063
- },
3064
- });
3065
- <span class="cstat-no" title="statement not covered" > return;</span>
3066
- }
3067
- &nbsp;
3068
- const uuid = <span class="cstat-no" title="statement not covered" >uuidv4().replace(/-/g, '');</span>
3069
- const instructList = <span class="cstat-no" title="statement not covered" >[{</span>
3070
- uuid,
3071
- actions: actionList,
3072
- }];
3073
- const operation: Operation = <span class="cstat-no" title="statement not covered" >{</span>
3074
- type: 'doAction',
3075
- uuid,
3076
- actionItem: {
3077
- actionMsg,
3078
- list: list.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; {
3079
- const { path, action, object, oldObject, parentKey, index } = <span class="cstat-no" title="statement not covered" >item?.originEvent || {};</span>
3080
- <span class="cstat-no" title="statement not covered" > return {</span>
3081
- path,
3082
- action,
3083
- parentKey,
3084
- index,
3085
- object: object?.toJSON?.() || object,
3086
- oldObject: oldObject?.toJSON?.() || oldObject,
3087
- }
3088
- }),
3089
- },
3090
- };
3091
- <span class="cstat-no" title="statement not covered" > saveNasl({ app, hasFrontEnd, hasBackEnd, instructList, operationList: [operation] });</span>
3092
- // 进行nasl操作后需要将Index重置
3093
- <span class="cstat-no" title="statement not covered" > operationRecordInfoMap.set('operationRecordIndex', null);</span>
3094
- <span class="cstat-no" title="statement not covered" > if (!app._historying) {</span>
3095
- <span class="cstat-no" title="statement not covered" > if (app._historyIndex !== app._historyList.length) {</span>
3096
- <span class="cstat-no" title="statement not covered" > app._historyList = app._historyList.splice(0, app._historyIndex);</span>
3097
- }
3098
- <span class="cstat-no" title="statement not covered" > app._historyList.push({</span>
3099
- actionMsg,
3100
- list: list.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; <span class="cstat-no" title="statement not covered" >item?.originEvent)</span>,
3101
- });
3102
- <span class="cstat-no" title="statement not covered" > app._historyIndex = app._historyList.length;</span>
3103
- } else {
3104
- const actionMap = <span class="cstat-no" title="statement not covered" >{</span>
3105
- undo: '已撤销操作:',
3106
- redo: '已重做操作:',
3107
- };
3108
- let msg = <span class="cstat-no" title="statement not covered" >actionMap[action as 'undo' | 'redo'];</span>
3109
- <span class="cstat-no" title="statement not covered" > msg += actionMsg;</span>
3110
- <span class="cstat-no" title="statement not covered" > if (process.env.BUILD_TARGET !== 'node') {</span>
3111
- <span class="cstat-no" title="statement not covered" > require('element-plus').ElMessage.info(msg);</span>
3112
- }
3113
- <span class="cstat-no" title="statement not covered" > app._historying = false;</span>
3114
- }
3115
- <span class="cstat-no" title="statement not covered" > stepRecorder.initialized &amp;&amp; stepRecorder.record(actionMsg, actionItem, actionList);</span>
3116
- }
3117
- &nbsp;
3118
- type Instruct = {
3119
- uuid: string,
3120
- actions: any[],
3121
- };
3122
- type TaskOption = {
3123
- app: any,
3124
- hasFrontEnd: boolean,
3125
- hasBackEnd: boolean,
3126
- instructList: Instruct[],
3127
- operationList: Operation[],
3128
- };
3129
- enum TaskQueueStatus {
3130
- ExceedMaxTaskCount,
3131
- Retrying,
3132
- }
3133
- type RefreshNaslOptions = {
3134
- errorInfo: {
3135
- message?: string,
3136
- stack?: string,
3137
- }
3138
- };
3139
- &nbsp;
3140
- class TaskQueue {
3141
- queue: TaskOption[] = []
3142
- lastQueue: TaskOption[] = []
3143
- running: Boolean = false
3144
- maxTaskCount: number = 10
3145
- status?: TaskQueueStatus = undefined
3146
- &nbsp;
3147
- <span class="fstat-no" title="function not covered" > addTask(</span>task: TaskOption) {
3148
- <span class="cstat-no" title="statement not covered" > this.queue.push(task);</span>
3149
- &nbsp;
3150
- <span class="cstat-no" title="statement not covered" > if (this.queue.length &gt;= this.maxTaskCount) {</span>
3151
- <span class="cstat-no" title="statement not covered" > this.status = TaskQueueStatus.ExceedMaxTaskCount;</span>
3152
- <span class="cstat-no" title="statement not covered" > task.app.emit('ExceedMaxTaskCount');</span>
3153
- }
3154
- &nbsp;
3155
- <span class="cstat-no" title="statement not covered" > this.run();</span>
3156
- }
3157
- &nbsp;
3158
- <span class="fstat-no" title="function not covered" > clear(</span>) {
3159
- <span class="cstat-no" title="statement not covered" > this.queue = [];</span>
3160
- <span class="cstat-no" title="statement not covered" > this.lastQueue = [];</span>
3161
- <span class="cstat-no" title="statement not covered" > this.status = undefined;</span>
3162
- <span class="cstat-no" title="statement not covered" > this.running = false;</span>
3163
- }
3164
- &nbsp;
3165
- <span class="fstat-no" title="function not covered" > async </span>run(queue = <span class="branch-0 cbranch-no" title="branch not covered" >this.queue)</span> {
3166
- <span class="cstat-no" title="statement not covered" > if (this.running)</span>
3167
- <span class="cstat-no" title="statement not covered" > return;</span>
3168
- <span class="cstat-no" title="statement not covered" > if (queue.length === 0)</span>
3169
- <span class="cstat-no" title="statement not covered" > return;</span>
3170
- &nbsp;
3171
- const app = <span class="cstat-no" title="statement not covered" >queue[0].app;</span>
3172
- let hasFrontEnd = <span class="cstat-no" title="statement not covered" >false;</span>
3173
- let hasBackEnd = <span class="cstat-no" title="statement not covered" >false;</span>
3174
- let instructList: Instruct[] = <span class="cstat-no" title="statement not covered" >[];</span>
3175
- let operationList: Operation[] = <span class="cstat-no" title="statement not covered" >[];</span>
3176
- &nbsp;
3177
- <span class="cstat-no" title="statement not covered" > for (const task of queue) {</span>
3178
- <span class="cstat-no" title="statement not covered" > if (task.hasFrontEnd)</span>
3179
- <span class="cstat-no" title="statement not covered" > hasFrontEnd = true;</span>
3180
- <span class="cstat-no" title="statement not covered" > if (task.hasBackEnd)</span>
3181
- <span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
3182
- <span class="cstat-no" title="statement not covered" > instructList = instructList.concat(task.instructList);</span>
3183
- <span class="cstat-no" title="statement not covered" > operationList = operationList.concat(task.operationList);</span>
3184
- }
3185
- &nbsp;
3186
- <span class="cstat-no" title="statement not covered" > if (queue === this.queue) {</span>
3187
- <span class="cstat-no" title="statement not covered" > this.lastQueue = [...queue];</span>
3188
- <span class="cstat-no" title="statement not covered" > this.queue = [];</span>
3189
- }
3190
- &nbsp;
3191
- <span class="cstat-no" title="statement not covered" > this.running = true;</span>
3192
- const error = <span class="cstat-no" title="statement not covered" >await _saveNasl({</span>
3193
- app, hasFrontEnd, hasBackEnd, instructList, operationList
3194
- });
3195
- &nbsp;
3196
- // code: 401650, 检测到当前应用拉取操作已被强制结束, 用户确认后再刷新
3197
- // code: 500502 msg: '该应用已在新tab 页打开,请刷新!' 不重试或刷新
3198
- <span class="cstat-no" title="statement not covered" > if (!error)</span>
3199
- <span class="cstat-no" title="statement not covered" > this.recover(app);</span>
3200
- else <span class="cstat-no" title="statement not covered" >if (![401650, 500502].includes(error.code)) {</span>
3201
- // 连接失败,或超时,或后端持久化异常
3202
- <span class="cstat-no" title="statement not covered" > if ((error.message === 'Network Error' || error.message?.includes('timeout') || error.code === 500500)</span>
3203
- &amp;&amp; this.status !== TaskQueueStatus.Retrying) {
3204
- <span class="cstat-no" title="statement not covered" > this.running = false;</span>
3205
- <span class="cstat-no" title="statement not covered" > this.retry();</span>
3206
- } else
3207
- <span class="cstat-no" title="statement not covered" > this.refreshNasl(app);</span>
3208
- &nbsp;
3209
- <span class="cstat-no" title="statement not covered" > return;</span>
3210
- }
3211
- &nbsp;
3212
- <span class="cstat-no" title="statement not covered" > this.running = false;</span>
3213
- &nbsp;
3214
- <span class="cstat-no" title="statement not covered" > this.run();</span>
3215
- }
3216
- &nbsp;
3217
- <span class="fstat-no" title="function not covered" > retry(</span>) {
3218
- <span class="cstat-no" title="statement not covered" > if (this.lastQueue.length === 0)</span>
3219
- <span class="cstat-no" title="statement not covered" > return;</span>
3220
- &nbsp;
3221
- const app = <span class="cstat-no" title="statement not covered" >this.lastQueue[0].app;</span>
3222
- <span class="cstat-no" title="statement not covered" > this.status = TaskQueueStatus.Retrying;</span>
3223
- <span class="cstat-no" title="statement not covered" > app.emit('Retrying');</span>
3224
- <span class="cstat-no" title="statement not covered" > this.run(this.lastQueue);</span>
3225
- }
3226
- &nbsp;
3227
- <span class="fstat-no" title="function not covered" > async </span>refreshNasl(app: App, options: RefreshNaslOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{ errorInfo: {} })</span> {
3228
- const failedQueue = <span class="cstat-no" title="statement not covered" >this.lastQueue.map(<span class="fstat-no" title="function not covered" >({</span> hasFrontEnd, hasBackEnd, instructList }) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
3229
- hasFrontEnd, hasBackEnd, instructList,
3230
- }));
3231
- const queue = <span class="cstat-no" title="statement not covered" >this.queue.map(<span class="fstat-no" title="function not covered" >({</span> hasFrontEnd, hasBackEnd, instructList }) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
3232
- hasFrontEnd, hasBackEnd, instructList,
3233
- }));
3234
- <span class="cstat-no" title="statement not covered" > await storageService.saveFrontendNasl({</span>
3235
- body: {
3236
- nasl: app?.toJSON(),
3237
- failedQueue,
3238
- queue,
3239
- errorInfo: options.errorInfo,
3240
- },
3241
- }).catch(<span class="fstat-no" title="function not covered" >(e</span>rr: any) =&gt; {
3242
- <span class="cstat-no" title="statement not covered" > console.log('备份 nasl 失败:', err);</span>
3243
- });
3244
- <span class="cstat-no" title="statement not covered" > this.clear();</span>
3245
- <span class="cstat-no" title="statement not covered" > app.emit('refresh');</span>
3246
- }
3247
- &nbsp;
3248
- <span class="fstat-no" title="function not covered" > recover(</span>app: App) {
3249
- <span class="cstat-no" title="statement not covered" > switch (this.status) {</span>
3250
- case TaskQueueStatus.ExceedMaxTaskCount:
3251
- <span class="cstat-no" title="statement not covered" > app.emit('BelowMaxTaskCount');</span>
3252
- <span class="cstat-no" title="statement not covered" > this.status = undefined;</span>
3253
- <span class="cstat-no" title="statement not covered" > break;</span>
3254
- case TaskQueueStatus.Retrying:
3255
- <span class="cstat-no" title="statement not covered" > app.emit('SuccessRetry');</span>
3256
- <span class="cstat-no" title="statement not covered" > this.status = undefined;</span>
3257
- <span class="cstat-no" title="statement not covered" > break;</span>
3258
- }
3259
- }
3260
- }
3261
- &nbsp;
3262
- export const taskQueue = new TaskQueue();
3263
- async function <span class="fstat-no" title="function not covered" >saveNasl(</span>options: TaskOption) {
3264
- <span class="cstat-no" title="statement not covered" > taskQueue.addTask(options);</span>
3265
- }
3266
- &nbsp;
3267
- class Operation {
3268
- appId?: string;
3269
- branchId?: string;
3270
- accountId?: string;
3271
- userId?: string;
3272
- phone?: string;
3273
- actionItem: any;
3274
- res?: any;
3275
- err?: any;
3276
- parentKey?: string;
3277
- timestamp?: any;
3278
- type?: string;
3279
- uuid?: string;
3280
- action?: string;
3281
- }
3282
- &nbsp;
3283
- async function <span class="fstat-no" title="function not covered" >_saveNasl(</span>options: TaskOption) {
3284
- const { app, hasFrontEnd, hasBackEnd, instructList, operationList } = <span class="cstat-no" title="statement not covered" >options;</span>
3285
- <span class="cstat-no" title="statement not covered" > app.emit('saving');</span>
3286
- let ChangedNASLType = <span class="cstat-no" title="statement not covered" >'';</span>
3287
- <span class="cstat-no" title="statement not covered" > if (hasFrontEnd &amp;&amp; hasBackEnd) {</span>
3288
- <span class="cstat-no" title="statement not covered" > ChangedNASLType = 'both';</span>
3289
- } else <span class="cstat-no" title="statement not covered" >if (hasFrontEnd) {</span>
3290
- <span class="cstat-no" title="statement not covered" > ChangedNASLType = 'web';</span>
3291
- } else <span class="cstat-no" title="statement not covered" >if (hasBackEnd) {</span>
3292
- <span class="cstat-no" title="statement not covered" > ChangedNASLType = 'backend';</span>
3293
- }
3294
- let res: any;
3295
- let err: any;
3296
- &nbsp;
3297
- <span class="cstat-no" title="statement not covered" > if (config.storage.protocol === 'http') {</span>
3298
- <span class="cstat-no" title="statement not covered" > try {</span>
3299
- // 接口请求
3300
- <span class="cstat-no" title="statement not covered" > res = await storageService.batchInstruct({</span>
3301
- body: instructList,
3302
- headers: {
3303
- appId: app.id,
3304
- ChangedNASLType,
3305
- tabTimestamp,
3306
- // 其他封装在 storageService 里了
3307
- },
3308
- });
3309
- } catch (error) {
3310
- <span class="cstat-no" title="statement not covered" > err = error;</span>
3311
- }
3312
- <span class="cstat-no" title="statement not covered" > operationList.forEach(<span class="fstat-no" title="function not covered" >(o</span>peration) =&gt; {</span>
3313
- <span class="cstat-no" title="statement not covered" > doOperationRecord({</span>
3314
- ...operation,
3315
- res,
3316
- err,
3317
- });
3318
- });
3319
- } else <span class="cstat-no" title="statement not covered" >if (config.storage.protocol === 'mock') {</span>
3320
- // Do nothing
3321
- } else {
3322
- const json = <span class="cstat-no" title="statement not covered" >await fs.readJSON(config.storage.basePath);</span>
3323
- &nbsp;
3324
- let actionList: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
3325
- <span class="cstat-no" title="statement not covered" > for (const { actions } of instructList) {</span>
3326
- <span class="cstat-no" title="statement not covered" > actionList = actionList.concat(actions);</span>
3327
- }
3328
- &nbsp;
3329
- <span class="cstat-no" title="statement not covered" > jsoner.batchAction(json, actionList);</span>
3330
- <span class="cstat-no" title="statement not covered" > await fs.writeJSON(config.storage.basePath, json, {</span>
3331
- spaces: 4,
3332
- });
3333
- }
3334
- <span class="cstat-no" title="statement not covered" > app.emit('saved', err);</span>
3335
- <span class="cstat-no" title="statement not covered" > return err;</span>
3336
- }
3337
- &nbsp;
3338
- export interface ProxyApp extends App {
3339
- _isCollectingCount: number;
3340
- _collectingList: number[];
3341
- _historyList: number[];
3342
- _historyIndex: number;
3343
- _historying: boolean;
3344
- _timer: NodeJS.Timeout;
3345
- _noTimer: NodeJS.Timeout;
3346
- _actionMsg: string;
3347
- _action: string;
3348
- naslServer: NaslServer;
3349
- }
3350
- &nbsp;
3351
- export function <span class="fstat-no" title="function not covered" >handleApp(</span>app: ProxyApp) {
3352
- <span class="cstat-no" title="statement not covered" > app._isCollectingCount = 0;</span>
3353
- <span class="cstat-no" title="statement not covered" > app._collectingList = [];</span>
3354
- <span class="cstat-no" title="statement not covered" > app._historyList = [];</span>
3355
- <span class="cstat-no" title="statement not covered" > app._historyIndex = 0;</span>
3356
- <span class="cstat-no" title="statement not covered" > app._historying = false;</span>
3357
- <span class="cstat-no" title="statement not covered" > app._timer = null;</span>
3358
- &nbsp;
3359
- <span class="cstat-no" title="statement not covered" > app.on('undo', <span class="fstat-no" title="function not covered" >function (this: ProxyApp) {</span></span>
3360
- const proxyApp = <span class="cstat-no" title="statement not covered" >this;</span>
3361
- <span class="cstat-no" title="statement not covered" > proxyApp._historying = true;</span>
3362
- });
3363
- &nbsp;
3364
- <span class="cstat-no" title="statement not covered" > app.on('redo', <span class="fstat-no" title="function not covered" >function (this: ProxyApp) {</span></span>
3365
- const proxyApp = <span class="cstat-no" title="statement not covered" >this;</span>
3366
- <span class="cstat-no" title="statement not covered" > proxyApp._historying = true;</span>
3367
- });
3368
- &nbsp;
3369
- /**
3370
- * 开启收集
3371
- */
3372
- <span class="cstat-no" title="statement not covered" > app.on('collect:start', <span class="fstat-no" title="function not covered" >function (this: ProxyApp, e</span>vent: any) {</span>
3373
- const proxyApp = <span class="cstat-no" title="statement not covered" >this;</span>
3374
- <span class="cstat-no" title="statement not covered" > if (proxyApp._timer) {</span>
3375
- <span class="cstat-no" title="statement not covered" > clearTimeout(proxyApp._timer);</span>
3376
- }
3377
- <span class="cstat-no" title="statement not covered" > if (!proxyApp._noTimer) {</span>
3378
- <span class="cstat-no" title="statement not covered" > proxyApp._noTimer = event.noTimer;</span>
3379
- }
3380
- <span class="cstat-no" title="statement not covered" > if (!proxyApp._noTimer) {</span>
3381
- <span class="cstat-no" title="statement not covered" > proxyApp._timer = setTimeout(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
3382
- <span class="cstat-no" title="statement not covered" > console.error('收集超时,请及时排查原因', event);</span>
3383
- <span class="cstat-no" title="statement not covered" > taskQueue.refreshNasl(proxyApp, {</span>
3384
- errorInfo: {
3385
- message: '收集超时,请及时排查原因',
3386
- },
3387
- });
3388
- }, 2500);
3389
- }
3390
- <span class="cstat-no" title="statement not covered" > if (!proxyApp._isCollectingCount) {</span>
3391
- <span class="cstat-no" title="statement not covered" > proxyApp._actionMsg = event?.actionMsg;</span>
3392
- <span class="cstat-no" title="statement not covered" > proxyApp._action = event?.action;</span>
3393
- }
3394
- <span class="cstat-no" title="statement not covered" > proxyApp._isCollectingCount++;</span>
3395
- });
3396
- &nbsp;
3397
- /**
3398
- * 结束收集
3399
- */
3400
- <span class="cstat-no" title="statement not covered" > app.on('collect:end', <span class="fstat-no" title="function not covered" >async </span>function (this: ProxyApp) {</span>
3401
- const proxyApp = <span class="cstat-no" title="statement not covered" >this;</span>
3402
- <span class="cstat-no" title="statement not covered" > proxyApp._isCollectingCount--;</span>
3403
- <span class="cstat-no" title="statement not covered" > if (proxyApp._isCollectingCount === 0) {</span>
3404
- <span class="cstat-no" title="statement not covered" > if (proxyApp._timer) {</span>
3405
- <span class="cstat-no" title="statement not covered" > clearTimeout(proxyApp._timer);</span>
3406
- }
3407
- // 结束收集时,立即将全局收集变量状态重置,防止下次收集数据混乱
3408
- const collectingList = <span class="cstat-no" title="statement not covered" >proxyApp._collectingList;</span>
3409
- const actionMsg = <span class="cstat-no" title="statement not covered" >proxyApp._actionMsg;</span>
3410
- const action = <span class="cstat-no" title="statement not covered" >proxyApp._action;</span>
3411
- <span class="cstat-no" title="statement not covered" > proxyApp._collectingList = [];</span>
3412
- <span class="cstat-no" title="statement not covered" > proxyApp._actionMsg = '';</span>
3413
- <span class="cstat-no" title="statement not covered" > proxyApp._action = '';</span>
3414
- <span class="cstat-no" title="statement not covered" > proxyApp._noTimer = undefined;</span>
3415
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(collectingList) &amp;&amp; collectingList.length) {</span>
3416
- <span class="cstat-no" title="statement not covered" > mountDatabaseTypes(proxyApp);</span>
3417
- <span class="cstat-no" title="statement not covered" > proxyApp.naslServer?.embeddedTSEmitter?.emit('change', {</span>
3418
- value: collectingList,
3419
- });
3420
- <span class="cstat-no" title="statement not covered" > await doAction(proxyApp, {</span>
3421
- list: collectingList,
3422
- actionMsg,
3423
- action,
3424
- });
3425
- }
3426
- } else <span class="cstat-no" title="statement not covered" >if (proxyApp._isCollectingCount &lt; 0) {</span>
3427
- <span class="cstat-no" title="statement not covered" > proxyApp._isCollectingCount = 0;</span>
3428
- <span class="cstat-no" title="statement not covered" > throw Error('关闭收集有问题,请排查');</span>
3429
- }
3430
- });
3431
- &nbsp;
3432
- /**
3433
- * 有变更
3434
- */
3435
- <span class="cstat-no" title="statement not covered" > app.on('storage', <span class="fstat-no" title="function not covered" >function (this: ProxyApp, e</span>vent: any) {</span>
3436
- const proxyApp = <span class="cstat-no" title="statement not covered" >this;</span>
3437
- // 是否正在收集
3438
- <span class="cstat-no" title="statement not covered" > if (proxyApp._isCollectingCount === 0) {</span>
3439
- <span class="cstat-no" title="statement not covered" > proxyApp.naslServer?.embeddedTSEmitter?.emit('change', {</span>
3440
- value: [event],
3441
- });
3442
- let actionMsg = <span class="cstat-no" title="statement not covered" >'';</span>
3443
- const { action, target } = <span class="cstat-no" title="statement not covered" >event.originEvent || {};</span>
3444
- const { concept, name } = <span class="cstat-no" title="statement not covered" >target || {};</span>
3445
- <span class="cstat-no" title="statement not covered" > switch (action) {</span>
3446
- case 'create':
3447
- <span class="cstat-no" title="statement not covered" > actionMsg = '添加';</span>
3448
- <span class="cstat-no" title="statement not covered" > break;</span>
3449
- case 'delete':
3450
- <span class="cstat-no" title="statement not covered" > actionMsg = '删除';</span>
3451
- <span class="cstat-no" title="statement not covered" > break;</span>
3452
- case 'update':
3453
- <span class="cstat-no" title="statement not covered" > actionMsg = '修改';</span>
3454
- <span class="cstat-no" title="statement not covered" > break;</span>
3455
- }
3456
- <span class="cstat-no" title="statement not covered" > actionMsg += getConceptConstructor(concept).nodeTitle;</span>
3457
- <span class="cstat-no" title="statement not covered" > if (name) {</span>
3458
- <span class="cstat-no" title="statement not covered" > actionMsg += `“${name}”`;</span>
3459
- }
3460
- <span class="cstat-no" title="statement not covered" > doAction(proxyApp, {</span>
3461
- list: [event],
3462
- actionMsg,
3463
- });
3464
- } else {
3465
- <span class="cstat-no" title="statement not covered" > proxyApp._collectingList.push(event);</span>
3466
- }
3467
- });
3468
- }
3469
- &nbsp;
3470
- type BreakpointItem =
3471
- | any
3472
- | {
3473
- path: string
3474
- breakpointStatus: null | 'ENABLED' | 'DISABLED'
3475
- }
3476
- &nbsp;
3477
- /**
3478
- * 加载 app
3479
- * @param appId 如果是从文件读,就不需要传
3480
- * @returns app 对象
3481
- */
3482
- export async function <span class="fstat-no" title="function not covered" >loadApp(</span>appId?: string) {
3483
- <span class="cstat-no" title="statement not covered" > try {</span>
3484
- // 删除失效数据
3485
- <span class="cstat-no" title="statement not covered" > deleteExpiredRecords();</span>
3486
- } catch(err) { }
3487
- let app: App;
3488
- <span class="cstat-no" title="statement not covered" > if (config.storage.protocol === 'http') {</span>
3489
- <span class="cstat-no" title="statement not covered" > console.time('batchQuery');</span>
3490
- const promises = <span class="cstat-no" title="statement not covered" >[</span>
3491
- storageService.batchQuery({
3492
- body: [
3493
- {
3494
- path: 'app'
3495
- // excludes: ['views'],
3496
- }
3497
- ],
3498
- headers: {
3499
- appId,
3500
- checkTabOpenTime: 'true'
3501
- // 其他封装在 storageService 里了
3502
- },
3503
- config: {
3504
- shortResponse: false
3505
- }
3506
- }),
3507
- storageService.breakpoint({
3508
- body: { appId }
3509
- })
3510
- ]
3511
- &nbsp;
3512
- const [batchQueryRes, breakpointRes] = <span class="cstat-no" title="statement not covered" >await Promise.all(promises)</span>
3513
- &nbsp;
3514
- // 请求
3515
- <span class="cstat-no" title="statement not covered" > console.timeEnd('batchQuery');</span>
3516
- &nbsp;
3517
- <span class="cstat-no" title="statement not covered" > tabTimestamp = batchQueryRes?.headers?.tabtimestamp;</span>
3518
- const data = <span class="cstat-no" title="statement not covered" >batchQueryRes?.data?.result;</span>
3519
- &nbsp;
3520
- <span class="cstat-no" title="statement not covered" > console.time('new App');</span>
3521
- <span class="cstat-no" title="statement not covered" > app = new App(Object.assign(data?.[0], { id: appId }));</span>
3522
- &nbsp;
3523
- <span class="cstat-no" title="statement not covered" > breakpointRes?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: BreakpointItem = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> =&gt; {</span>
3524
- const { path, breakpointStatus } = <span class="cstat-no" title="statement not covered" >item</span>
3525
- &nbsp;
3526
- <span class="cstat-no" title="statement not covered" > if (breakpointStatus) {</span>
3527
- const node = <span class="cstat-no" title="statement not covered" >app.findNodeByPath(path)</span>
3528
- &nbsp;
3529
- <span class="cstat-no" title="statement not covered" > if (node) {</span>
3530
- <span class="cstat-no" title="statement not covered" > node.breakpoint = breakpointStatus</span>
3531
- }
3532
- }
3533
- })
3534
- <span class="cstat-no" title="statement not covered" > console.timeEnd('new App');</span>
3535
- <span class="cstat-no" title="statement not covered" > if (!app.id) {</span>
3536
- <span class="cstat-no" title="statement not covered" > app.id = appId;</span>
3537
- }
3538
- <span class="cstat-no" title="statement not covered" > addBreakpointNodesFromApp(app)</span>
3539
- } else <span class="cstat-no" title="statement not covered" >if (config.storage.protocol === 'mock') {</span>
3540
- <span class="cstat-no" title="statement not covered" > app = new App({</span>
3541
- id: appId,
3542
- concept: 'App',
3543
- name: 'devapp',
3544
- title: '开发应用',
3545
- envs: 'dev,online',
3546
- hasAuth: true,
3547
- hasUserCenter: true,
3548
- dataSources: [],
3549
- structures: [],
3550
- enums: [],
3551
- logics: [],
3552
- interfaces: [],
3553
- processes: [],
3554
- roles: [],
3555
- dependencies: [],
3556
- interfaceDependencies: [],
3557
- frontends: [],
3558
- metadataTypes: []
3559
- });
3560
- } else {
3561
- const json = <span class="cstat-no" title="statement not covered" >await fs.readJSON(config.storage.basePath);</span>
3562
- <span class="cstat-no" title="statement not covered" > app = new App(appId ? Object.assign(json, { id: appId }) : json);</span>
3563
- }
3564
- // config.scope = app.scope;
3565
- <span class="cstat-no" title="statement not covered" > handleApp(app as ProxyApp);</span>
3566
- (<span class="cstat-no" title="statement not covered" >app as any)._isCollectingCount = 0;</span>
3567
- <span class="cstat-no" title="statement not covered" > mountDatabaseTypes(app);</span>
3568
- <span class="cstat-no" title="statement not covered" > return app as App;</span>
3569
- }
3570
- &nbsp;
3571
- // 在app上挂载所有的数据库类型
3572
- export async function <span class="fstat-no" title="function not covered" >mountDatabaseTypes(</span>app: App) {
3573
- <span class="cstat-no" title="statement not covered" > if (!app.__databaseTypeMap) {</span>
3574
- <span class="cstat-no" title="statement not covered" > app.__databaseTypeMap = {};</span>
3575
- }
3576
- const dataSources = <span class="cstat-no" title="statement not covered" >app?.dataSources;</span>
3577
- const dbTypeSet = <span class="cstat-no" title="statement not covered" >new Set();</span>
3578
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(dataSources)) {</span>
3579
- <span class="cstat-no" title="statement not covered" > dataSources.forEach(<span class="fstat-no" title="function not covered" >(d</span>ataSource) =&gt; {</span>
3580
- const dataSourceSqlType = <span class="cstat-no" title="statement not covered" >JSON.parse(dataSource.dataSourceConfig?.devProperty?.value || '{}')?.type;</span>
3581
- <span class="cstat-no" title="statement not covered" > if (dataSourceSqlType &amp;&amp; !app.__databaseTypeMap[dataSourceSqlType]) {</span>
3582
- <span class="cstat-no" title="statement not covered" > dbTypeSet.add(dataSourceSqlType);</span>
3583
- }
3584
- });
3585
- }
3586
- const dbTypes = <span class="cstat-no" title="statement not covered" >[...dbTypeSet];</span>
3587
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(dbTypes) &amp;&amp; dbTypes.length) {</span>
3588
- const res: any = <span class="cstat-no" title="statement not covered" >await databaseTypes({</span>
3589
- query: {
3590
- dbTypes: dbTypes.join(','),
3591
- },
3592
- });
3593
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(res)) {</span>
3594
- <span class="cstat-no" title="statement not covered" > res.forEach(<span class="fstat-no" title="function not covered" >(d</span>atabaseType: any) =&gt; {</span>
3595
- const { dbType, columnTypes } = <span class="cstat-no" title="statement not covered" >databaseType || {};</span>
3596
- const columnTypeMap: any = <span class="cstat-no" title="statement not covered" >{};</span>
3597
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(columnTypes)) {</span>
3598
- <span class="cstat-no" title="statement not covered" > columnTypes.forEach(<span class="fstat-no" title="function not covered" >(c</span>olumnType) =&gt; {</span>
3599
- const { naslType, dataBaseTypes } = <span class="cstat-no" title="statement not covered" >columnType;</span>
3600
- const dataBaseTypeMap: any = <span class="cstat-no" title="statement not covered" >{};</span>
3601
- let defaultDataBaseType;
3602
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(dataBaseTypes)) {</span>
3603
- <span class="cstat-no" title="statement not covered" > dataBaseTypes.forEach(<span class="fstat-no" title="function not covered" >(d</span>ataBaseType) =&gt; {</span>
3604
- const { type } = <span class="cstat-no" title="statement not covered" >dataBaseType || {};</span>
3605
- <span class="cstat-no" title="statement not covered" > if (type) {</span>
3606
- <span class="cstat-no" title="statement not covered" > dataBaseTypeMap[type] = dataBaseType;</span>
3607
- const { defaultType } = <span class="cstat-no" title="statement not covered" >dataBaseType;</span>
3608
- <span class="cstat-no" title="statement not covered" > if (defaultType) {</span>
3609
- <span class="cstat-no" title="statement not covered" > defaultDataBaseType = dataBaseType;</span>
3610
- }
3611
- }
3612
- });
3613
- }
3614
- <span class="cstat-no" title="statement not covered" > columnTypeMap[naslType] = {</span>
3615
- dataBaseTypes,
3616
- dataBaseTypeMap,
3617
- defaultDataBaseType,
3618
- };
3619
- });
3620
- }
3621
- <span class="cstat-no" title="statement not covered" > app.__databaseTypeMap[dbType] = columnTypeMap;</span>
3622
- });
3623
- }
3624
- }
3625
- <span class="cstat-no" title="statement not covered" > if (Array.isArray(dataSources)) {</span>
3626
- <span class="cstat-no" title="statement not covered" > dataSources.forEach(<span class="fstat-no" title="function not covered" >(d</span>ataSource) =&gt; {</span>
3627
- <span class="cstat-no" title="statement not covered" > dataSource.__hasDatabaseConfig = !!(app.__databaseTypeMap?.[dataSource.dataSourceSqlType]);</span>
3628
- });
3629
- }
3630
- }
3631
- &nbsp;
3632
- /**
3633
- * 加载 app
3634
- * @returns app 对象
3635
- */
3636
- export function <span class="fstat-no" title="function not covered" >loadAppSync(</span>) {
3637
- const json = <span class="cstat-no" title="statement not covered" >fs.readJSONSync(config.storage.basePath);</span>
3638
- const app = <span class="cstat-no" title="statement not covered" >new App(json);</span>
3639
- <span class="cstat-no" title="statement not covered" > handleApp(app as ProxyApp);</span>
3640
- <span class="cstat-no" title="statement not covered" > return app;</span>
3641
- }
3642
- &nbsp;</pre></td></tr></table></pre>
3643
-
3644
- <div class='push'></div><!-- for sticky footer -->
3645
- </div><!-- /wrapper -->
3646
- <div class='footer quiet pad2 space-top1 center small'>
3647
- Code coverage generated by
3648
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3649
- at 2023-10-31T12:16:02.007Z
3650
- </div>
3651
- <script src="../../../prettify.js"></script>
3652
- <script>
3653
- window.onload = function () {
3654
- prettyPrint();
3655
- };
3656
- </script>
3657
- <script src="../../../sorter.js"></script>
3658
- <script src="../../../block-navigation.js"></script>
3659
- </body>
3660
- </html>
3661
-