@decaf-ts/for-angular 0.1.0 → 0.1.3

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 (375) hide show
  1. package/{dist/lib/fesm2022 → fesm2022}/decaf-ts-for-angular.mjs +93 -109
  2. package/fesm2022/decaf-ts-for-angular.mjs.map +1 -0
  3. package/{dist/lib/index.d.ts → index.d.ts} +6 -5
  4. package/package.json +15 -86
  5. package/.editorconfig +0 -31
  6. package/.gitlab-ci.yml +0 -197
  7. package/.hintrc +0 -19
  8. package/.prettierrc +0 -49
  9. package/.snyk +0 -13
  10. package/LICENSE.md +0 -260
  11. package/angular.json +0 -274
  12. package/bs-config.json +0 -5
  13. package/cli-module.js.map +0 -1
  14. package/dist/for-angular/cli/cli-module.d.ts +0 -22
  15. package/dist/for-angular/cli/cli-module.d.ts.map +0 -1
  16. package/dist/for-angular/cli/cli-module.js +0 -131
  17. package/dist/for-angular/cli/cli-module.js.map +0 -1
  18. package/dist/lib/README.md +0 -117
  19. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +0 -1
  20. package/eslint.config.mjs +0 -101
  21. package/ionic.config.json +0 -14
  22. package/jest.config.ts +0 -52
  23. package/jest.setup.ts +0 -50
  24. package/karma.conf.js +0 -50
  25. package/ng-package.json +0 -17
  26. package/ngsw-config.json +0 -30
  27. package/playwright.config.ts +0 -80
  28. package/resources/favicon.png +0 -0
  29. package/resources/favicon.svg +0 -29
  30. package/resources/icon-background.png +0 -0
  31. package/resources/icon-foreground.png +0 -0
  32. package/resources/icon-only.png +0 -0
  33. package/resources/icon-only.svg +0 -29
  34. package/resources/splash-dark.png +0 -0
  35. package/resources/splash-dark2.png +0 -0
  36. package/resources/splash.png +0 -0
  37. package/resources/splash2.png +0 -0
  38. package/resources/touch-icon.svg +0 -29
  39. package/schematics/README.md +0 -28
  40. package/schematics/collection.json +0 -20
  41. package/schematics/package-lock.json +0 -1501
  42. package/schematics/package.json +0 -37
  43. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template +0 -0
  44. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template +0 -3
  45. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template +0 -40
  46. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +0 -37
  47. package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template +0 -14
  48. package/schematics/src/component/index.js +0 -146
  49. package/schematics/src/component/schema.js +0 -2
  50. package/schematics/src/component/schema.json +0 -101
  51. package/schematics/src/page/files/__name@dasherize__.page.html.template +0 -15
  52. package/schematics/src/page/files/__name@dasherize__.page.scss.template +0 -0
  53. package/schematics/src/page/files/__name@dasherize__.page.ts.template +0 -19
  54. package/schematics/src/page/index.js +0 -71
  55. package/schematics/src/page/schema.json +0 -87
  56. package/schematics/src/schematics/index.js +0 -11
  57. package/schematics/src/schematics/index_spec.js +0 -13
  58. package/schematics/src/util/ast-util.js +0 -517
  59. package/schematics/src/util/change.js +0 -96
  60. package/schematics/src/util/index.js +0 -14
  61. package/settings.json +0 -112
  62. package/tsconfig.app.json +0 -22
  63. package/tsconfig.cli.json +0 -82
  64. package/tsconfig.lib.json +0 -14
  65. package/tsconfig.lib.prod.json +0 -10
  66. package/tsconfig.spec.json +0 -22
  67. package/webpack.config.js +0 -10
  68. package/workdocs/1-Header.md +0 -5
  69. package/workdocs/2-Badges.md +0 -30
  70. package/workdocs/4-Description.md +0 -4
  71. package/workdocs/5-HowToUse.md +0 -27
  72. package/workdocs/6-Related.md +0 -7
  73. package/workdocs/7-Social.md +0 -5
  74. package/workdocs/99-Footer.md +0 -28
  75. package/workdocs/Readme.md +0 -12
  76. package/workdocs/assets/apple-touch-icon.png +0 -0
  77. package/workdocs/assets/decaf-logo.svg +0 -54
  78. package/workdocs/assets/favicon.png +0 -0
  79. package/workdocs/assets/slogans.json +0 -182
  80. package/workdocs/confluence/.markdown-confluence.template.json +0 -6
  81. package/workdocs/confluence/Angular Module.md +0 -5
  82. package/workdocs/drawings/diagram.drawio +0 -24
  83. package/workdocs/prompts/bulk.md +0 -122
  84. package/workdocs/prompts/code.md +0 -47
  85. package/workdocs/prompts/documentation.md +0 -146
  86. package/workdocs/prompts/uml.md +0 -11
  87. package/workdocs/readme-md.json +0 -6
  88. package/workdocs/reports/CHANGELOG.md +0 -12
  89. package/workdocs/reports/DEPENDENCIES.md +0 -213
  90. package/workdocs/reports/RELEASE_NOTES.md +0 -24
  91. package/workdocs/reports/coverage/.gitkeep +0 -0
  92. package/workdocs/reports/coverage/clover.xml +0 -4107
  93. package/workdocs/reports/coverage/coverage-final.json +0 -76
  94. package/workdocs/reports/coverage/lcov-report/base.css +0 -224
  95. package/workdocs/reports/coverage/lcov-report/block-navigation.js +0 -87
  96. package/workdocs/reports/coverage/lcov-report/favicon.png +0 -0
  97. package/workdocs/reports/coverage/lcov-report/index.html +0 -551
  98. package/workdocs/reports/coverage/lcov-report/prettify.css +0 -1
  99. package/workdocs/reports/coverage/lcov-report/prettify.js +0 -2
  100. package/workdocs/reports/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  101. package/workdocs/reports/coverage/lcov-report/sorter.js +0 -210
  102. package/workdocs/reports/coverage/lcov-report/src/app/models/CategoryModel.ts.html +0 -277
  103. package/workdocs/reports/coverage/lcov-report/src/app/models/DemoModel.ts.html +0 -427
  104. package/workdocs/reports/coverage/lcov-report/src/app/models/UserModel.ts.html +0 -226
  105. package/workdocs/reports/coverage/lcov-report/src/app/models/index.html +0 -146
  106. package/workdocs/reports/coverage/lcov-report/src/cli-module.ts.html +0 -502
  107. package/workdocs/reports/coverage/lcov-report/src/environments/environment.ts.html +0 -166
  108. package/workdocs/reports/coverage/lcov-report/src/environments/index.html +0 -116
  109. package/workdocs/reports/coverage/lcov-report/src/index.html +0 -191
  110. package/workdocs/reports/coverage/lcov-report/src/karma-test.ts.html +0 -121
  111. package/workdocs/reports/coverage/lcov-report/src/lib/components/card/card.component.ts.html +0 -625
  112. package/workdocs/reports/coverage/lcov-report/src/lib/components/card/index.html +0 -116
  113. package/workdocs/reports/coverage/lcov-report/src/lib/components/component-renderer/component-renderer.component.ts.html +0 -772
  114. package/workdocs/reports/coverage/lcov-report/src/lib/components/component-renderer/index.html +0 -116
  115. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-field/crud-field.component.ts.html +0 -2698
  116. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-field/index.html +0 -116
  117. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/constants.ts.html +0 -133
  118. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/crud-form.component.ts.html +0 -346
  119. package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/index.html +0 -116
  120. package/workdocs/reports/coverage/lcov-report/src/lib/components/empty-state/empty-state.component.ts.html +0 -1264
  121. package/workdocs/reports/coverage/lcov-report/src/lib/components/empty-state/index.html +0 -116
  122. package/workdocs/reports/coverage/lcov-report/src/lib/components/fieldset/fieldset.component.ts.html +0 -2965
  123. package/workdocs/reports/coverage/lcov-report/src/lib/components/fieldset/index.html +0 -116
  124. package/workdocs/reports/coverage/lcov-report/src/lib/components/file-upload/file-upload.component.ts.html +0 -2263
  125. package/workdocs/reports/coverage/lcov-report/src/lib/components/file-upload/index.html +0 -116
  126. package/workdocs/reports/coverage/lcov-report/src/lib/components/filter/filter.component.ts.html +0 -2485
  127. package/workdocs/reports/coverage/lcov-report/src/lib/components/filter/index.html +0 -116
  128. package/workdocs/reports/coverage/lcov-report/src/lib/components/for-angular-components.module.ts.html +0 -259
  129. package/workdocs/reports/coverage/lcov-report/src/lib/components/icon/icon.component.ts.html +0 -358
  130. package/workdocs/reports/coverage/lcov-report/src/lib/components/icon/index.html +0 -116
  131. package/workdocs/reports/coverage/lcov-report/src/lib/components/index.html +0 -131
  132. package/workdocs/reports/coverage/lcov-report/src/lib/components/index.ts.html +0 -181
  133. package/workdocs/reports/coverage/lcov-report/src/lib/components/layout/index.html +0 -116
  134. package/workdocs/reports/coverage/lcov-report/src/lib/components/layout/layout.component.ts.html +0 -943
  135. package/workdocs/reports/coverage/lcov-report/src/lib/components/list/index.html +0 -116
  136. package/workdocs/reports/coverage/lcov-report/src/lib/components/list/list.component.ts.html +0 -4420
  137. package/workdocs/reports/coverage/lcov-report/src/lib/components/list-item/index.html +0 -116
  138. package/workdocs/reports/coverage/lcov-report/src/lib/components/list-item/list-item.component.ts.html +0 -1741
  139. package/workdocs/reports/coverage/lcov-report/src/lib/components/modal/index.html +0 -116
  140. package/workdocs/reports/coverage/lcov-report/src/lib/components/modal/modal.component.ts.html +0 -1984
  141. package/workdocs/reports/coverage/lcov-report/src/lib/components/model-renderer/index.html +0 -116
  142. package/workdocs/reports/coverage/lcov-report/src/lib/components/model-renderer/model-renderer.component.ts.html +0 -373
  143. package/workdocs/reports/coverage/lcov-report/src/lib/components/pagination/index.html +0 -116
  144. package/workdocs/reports/coverage/lcov-report/src/lib/components/pagination/pagination.component.ts.html +0 -1165
  145. package/workdocs/reports/coverage/lcov-report/src/lib/components/searchbar/index.html +0 -116
  146. package/workdocs/reports/coverage/lcov-report/src/lib/components/searchbar/searchbar.component.ts.html +0 -1774
  147. package/workdocs/reports/coverage/lcov-report/src/lib/components/stepped-form/index.html +0 -116
  148. package/workdocs/reports/coverage/lcov-report/src/lib/components/stepped-form/stepped-form.component.ts.html +0 -1219
  149. package/workdocs/reports/coverage/lcov-report/src/lib/components/table/index.html +0 -116
  150. package/workdocs/reports/coverage/lcov-report/src/lib/components/table/table.component.ts.html +0 -1054
  151. package/workdocs/reports/coverage/lcov-report/src/lib/directives/NgxSvgDirective.ts.html +0 -163
  152. package/workdocs/reports/coverage/lcov-report/src/lib/directives/collapsable.directive.ts.html +0 -268
  153. package/workdocs/reports/coverage/lcov-report/src/lib/directives/index.html +0 -131
  154. package/workdocs/reports/coverage/lcov-report/src/lib/directives/index.ts.html +0 -91
  155. package/workdocs/reports/coverage/lcov-report/src/lib/engine/DynamicModule.ts.html +0 -133
  156. package/workdocs/reports/coverage/lcov-report/src/lib/engine/MediaService.ts.html +0 -142
  157. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxBaseComponent.ts.html +0 -2194
  158. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxComponentDirective.ts.html +0 -3430
  159. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxCrudFormField.ts.html +0 -721
  160. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafComponentDirective.ts.html +0 -1864
  161. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafFormFieldDirective.ts.html +0 -952
  162. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafFormService.ts.html +0 -3211
  163. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxEventHandler.ts.html +0 -307
  164. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormDirective.ts.html +0 -1366
  165. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormFieldDirective.ts.html +0 -1960
  166. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormService.ts.html +0 -3004
  167. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxModelPageDirective.ts.html +0 -1672
  168. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxPageDirective.ts.html +0 -748
  169. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxParentComponentDirective.ts.html +0 -775
  170. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRenderableComponentDirective.ts.html +0 -727
  171. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRenderingEngine.ts.html +0 -2005
  172. package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRepositoryDirective.ts.html +0 -1546
  173. package/workdocs/reports/coverage/lcov-report/src/lib/engine/ValidatorFactory.ts.html +0 -817
  174. package/workdocs/reports/coverage/lcov-report/src/lib/engine/constants.ts.html +0 -1120
  175. package/workdocs/reports/coverage/lcov-report/src/lib/engine/decorators.ts.html +0 -376
  176. package/workdocs/reports/coverage/lcov-report/src/lib/engine/helpers.ts.html +0 -694
  177. package/workdocs/reports/coverage/lcov-report/src/lib/engine/index.html +0 -356
  178. package/workdocs/reports/coverage/lcov-report/src/lib/engine/index.ts.html +0 -160
  179. package/workdocs/reports/coverage/lcov-report/src/lib/engine/overrides.ts.html +0 -502
  180. package/workdocs/reports/coverage/lcov-report/src/lib/for-angular-common.module.ts.html +0 -298
  181. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/index.html +0 -131
  182. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/index.ts.html +0 -121
  183. package/workdocs/reports/coverage/lcov-report/src/lib/helpers/utils.ts.html +0 -1603
  184. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/FakeLoader.ts.html +0 -157
  185. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/Loader.ts.html +0 -826
  186. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/index.html +0 -146
  187. package/workdocs/reports/coverage/lcov-report/src/lib/i18n/index.ts.html +0 -91
  188. package/workdocs/reports/coverage/lcov-report/src/lib/index.html +0 -131
  189. package/workdocs/reports/coverage/lcov-report/src/lib/public-apis.ts.html +0 -157
  190. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxFormService.ts.html +0 -3460
  191. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxMediaService.ts.html +0 -1420
  192. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxRouterService.ts.html +0 -1243
  193. package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxTranslateService.ts.html +0 -214
  194. package/workdocs/reports/coverage/lcov-report/src/lib/services/index.html +0 -176
  195. package/workdocs/reports/coverage/lcov-report/src/lib/services/index.ts.html +0 -91
  196. package/workdocs/reports/coverage/lcov-report/src/lib/utils/DecafFakerRepository.ts.html +0 -571
  197. package/workdocs/reports/coverage/lcov-report/src/lib/utils/helpers.ts.html +0 -1711
  198. package/workdocs/reports/coverage/lcov-report/src/lib/utils/index.html +0 -146
  199. package/workdocs/reports/coverage/lcov-report/src/lib/utils/index.ts.html +0 -124
  200. package/workdocs/reports/coverage/lcov-report/src/main.ts.html +0 -100
  201. package/workdocs/reports/coverage/lcov-report/src/polyfills.ts.html +0 -271
  202. package/workdocs/reports/coverage/lcov-report/src/stories/Configure.stories.ts.html +0 -1156
  203. package/workdocs/reports/coverage/lcov-report/src/stories/button.component.ts.html +0 -229
  204. package/workdocs/reports/coverage/lcov-report/src/stories/button.stories.ts.html +0 -235
  205. package/workdocs/reports/coverage/lcov-report/src/stories/crud-field.stories.ts.html +0 -325
  206. package/workdocs/reports/coverage/lcov-report/src/stories/header.stories.ts.html +0 -181
  207. package/workdocs/reports/coverage/lcov-report/src/stories/index.html +0 -281
  208. package/workdocs/reports/coverage/lcov-report/src/stories/list.stories.ts.html +0 -289
  209. package/workdocs/reports/coverage/lcov-report/src/stories/login.page.stories.ts.html +0 -175
  210. package/workdocs/reports/coverage/lcov-report/src/stories/model-renderer.stories.ts.html +0 -259
  211. package/workdocs/reports/coverage/lcov-report/src/stories/page.component.ts.html +0 -331
  212. package/workdocs/reports/coverage/lcov-report/src/stories/page.stories.ts.html +0 -193
  213. package/workdocs/reports/coverage/lcov-report/src/stories/setup.ts.html +0 -127
  214. package/workdocs/reports/coverage/lcov-report/src/stories/utils.ts.html +0 -247
  215. package/workdocs/reports/coverage/lcov-report/src/tests/index.html +0 -116
  216. package/workdocs/reports/coverage/lcov-report/src/tests/karmaErrorParser.ts.html +0 -190
  217. package/workdocs/reports/coverage/lcov-report/src/typings.d.ts.html +0 -88
  218. package/workdocs/reports/coverage/lcov-report/src/zone-flags.ts.html +0 -103
  219. package/workdocs/reports/coverage/lcov.info +0 -7898
  220. package/workdocs/reports/data/.gitkeep +0 -1
  221. package/workdocs/reports/html/.gitkeep +0 -0
  222. package/workdocs/reports/html/jest-html-reporters-attach/test-report/index.js +0 -3
  223. package/workdocs/reports/html/jest-html-reporters-attach/test-report/result.js +0 -1
  224. package/workdocs/reports/html/test-report.html +0 -1
  225. package/workdocs/reports/images/.gitkeep +0 -1
  226. package/workdocs/reports/jest.coverage.config.ts +0 -43
  227. package/workdocs/reports/junit/junit-report.xml +0 -91
  228. package/workdocs/resources/.gitlock +0 -0
  229. package/workdocs/resources/diagram-Actor.png +0 -0
  230. package/workdocs/resources/diagram-banner.png +0 -0
  231. package/workdocs/resources/diagram.png +0 -0
  232. package/workdocs/tutorials/Contributing.md +0 -64
  233. package/workdocs/tutorials/Documentation.md +0 -340
  234. package/workdocs/tutorials/For Developers.md +0 -337
  235. package/workdocs/uml/diagram.puml +0 -11
  236. package/www/1049.10b030f0de36543b.js +0 -1
  237. package/www/1102.67cedfb3e29f0a05.js +0 -1
  238. package/www/1107.6b592a1672821270.js +0 -1
  239. package/www/1459.cabc18e941afa5d7.js +0 -1
  240. package/www/1577.5221deebe3501e43.js +0 -1
  241. package/www/2075.b6dc4fbb89dd6afc.js +0 -1
  242. package/www/2348.c4cc27dadbec70ec.js +0 -1
  243. package/www/2375.318d0b24ab346271.js +0 -1
  244. package/www/2415.618d6968ffda319c.js +0 -1
  245. package/www/2460.1d97c6f48b898ee2.js +0 -1
  246. package/www/2560.2e7000dcf80b6b2c.js +0 -1
  247. package/www/2585.274d59d52bafc7ed.js +0 -1
  248. package/www/2885.d99b86afd1ff7aa8.js +0 -1
  249. package/www/3162.bbc401f4a5f82460.js +0 -1
  250. package/www/323.f64c512be5c8d797.js +0 -1
  251. package/www/3238.a3e7e8004c6b6667.js +0 -1
  252. package/www/3506.8c03f5589b33a4a6.js +0 -1
  253. package/www/3511.56b7e49bb6c2c936.js +0 -1
  254. package/www/3519.84fbb67dc803f702.js +0 -1
  255. package/www/3675.7ebfdcf145052232.js +0 -1
  256. package/www/3814.765c1794e1be63de.js +0 -1
  257. package/www/3rdpartylicenses.txt +0 -1344
  258. package/www/4171.a974bdbf9c97e4e1.js +0 -1
  259. package/www/4183.41ef1def450a2cc0.js +0 -1
  260. package/www/4406.0b2dd3839b8c1417.js +0 -1
  261. package/www/441.e1031657c7e5f0ff.js +0 -1
  262. package/www/4463.6ad7b857e5f34009.js +0 -1
  263. package/www/4591.42f34534d38b9b31.js +0 -1
  264. package/www/4699.8df8ea9806163d4c.js +0 -1
  265. package/www/5100.ed6483c55a157d67.js +0 -1
  266. package/www/5193.15ea6938534eceb1.js +0 -1
  267. package/www/5197.6733853529768a45.js +0 -1
  268. package/www/5222.8439a641c2c4b1c1.js +0 -1
  269. package/www/5373.d7878f708309f038.js +0 -1
  270. package/www/5467.f0e21031db47308c.js +0 -1
  271. package/www/5712.b08cf436ee8145ce.js +0 -1
  272. package/www/5887.3d038f564e925abb.js +0 -1
  273. package/www/5949.37330f20e95dee79.js +0 -1
  274. package/www/6024.c10cc3d1b341c748.js +0 -1
  275. package/www/6433.360fcff952bde822.js +0 -1
  276. package/www/6499.60169da9869db697.js +0 -1
  277. package/www/6521.fab1f34bfe6b8200.js +0 -1
  278. package/www/6631.eaa711da6e0aeed9.js +0 -1
  279. package/www/6717.9d970c383bb0cf1c.js +0 -1
  280. package/www/6840.7317cd962ab23932.js +0 -1
  281. package/www/7030.d115d82ca7468a4e.js +0 -1
  282. package/www/7076.cce20ed5c79ff305.js +0 -1
  283. package/www/7179.c0545989ce869b3d.js +0 -1
  284. package/www/7240.69aeb484d78eb24d.js +0 -1
  285. package/www/7372.94c62459e34f7303.js +0 -1
  286. package/www/7402.983a5ecff61e9a5d.js +0 -1
  287. package/www/7428.527ac48035a2f915.js +0 -1
  288. package/www/7676.d7db23d350e4b096.js +0 -1
  289. package/www/770.80af87d5eb0075d3.js +0 -1
  290. package/www/7720.0701576cb9966779.js +0 -1
  291. package/www/7927.ee869d0dc478250a.js +0 -1
  292. package/www/8066.894688fbb2e5c832.js +0 -1
  293. package/www/8193.7f09ecd40b6d42c2.js +0 -1
  294. package/www/8255.158098a6302c91c2.js +0 -1
  295. package/www/8314.596c1ccf26b9c93a.js +0 -1
  296. package/www/8357.c5406b92e6933d7a.js +0 -1
  297. package/www/8477.a3ccc11c25a642d3.js +0 -1
  298. package/www/8487.93b6f7465ae1b7ac.js +0 -1
  299. package/www/8584.b77ad478a5a7ac2a.js +0 -1
  300. package/www/8805.a87413652185ff8f.js +0 -1
  301. package/www/8814.b489a78ae8e926c4.js +0 -1
  302. package/www/8970.234b3db1f97528fe.js +0 -1
  303. package/www/9013.c2e6ba17a915bdd6.js +0 -1
  304. package/www/9073.16c4e42482d55a3c.js +0 -1
  305. package/www/9344.7d2d24b194b794e2.js +0 -1
  306. package/www/9364.9a028036dd89e3e7.js +0 -1
  307. package/www/944.7e4317348c48d4f4.js +0 -1
  308. package/www/964.9a979e1c1aad0f5b.js +0 -1
  309. package/www/9657.fbb680ad1064e91a.js +0 -1
  310. package/www/9956.2d00a2153e9a7799.js +0 -1
  311. package/www/9977.068cd5561462bc99.js +0 -1
  312. package/www/assets/i18n/en.json +0 -210
  313. package/www/assets/i18n/ew/en.json +0 -346
  314. package/www/assets/i18n/pt.json +0 -186
  315. package/www/assets/icons/icon-128.webp +0 -0
  316. package/www/assets/icons/icon-192.webp +0 -0
  317. package/www/assets/icons/icon-256.webp +0 -0
  318. package/www/assets/icons/icon-48.webp +0 -0
  319. package/www/assets/icons/icon-512.webp +0 -0
  320. package/www/assets/icons/icon-72.webp +0 -0
  321. package/www/assets/icons/icon-96.webp +0 -0
  322. package/www/assets/images/angular-logo.svg +0 -45
  323. package/www/assets/images/apple-touch-icon.png +0 -0
  324. package/www/assets/images/decaf-logo-black.svg +0 -22
  325. package/www/assets/images/decaf-logo-contrast.svg +0 -54
  326. package/www/assets/images/decaf-logo-white.svg +0 -22
  327. package/www/assets/images/decaf-logo.svg +0 -54
  328. package/www/assets/images/ew/product.txt +0 -1
  329. package/www/assets/images/favicon-contrast.svg +0 -7
  330. package/www/assets/images/favicon.png +0 -0
  331. package/www/assets/images/favicon.svg +0 -29
  332. package/www/assets/images/icons/document.svg +0 -7
  333. package/www/assets/images/icons/edit.svg +0 -1
  334. package/www/assets/images/icons/logout.svg +0 -4
  335. package/www/assets/images/icons/menu-collapse.svg +0 -5
  336. package/www/assets/images/icons/menu.svg +0 -3
  337. package/www/assets/images/icons/moon-stars.svg +0 -5
  338. package/www/assets/images/icons/trash.svg +0 -1
  339. package/www/cli-module.ts +0 -139
  340. package/www/common.e50b5f8708aca9a5.js +0 -1
  341. package/www/index.html +0 -29
  342. package/www/main.7814262e404641fd.js +0 -1
  343. package/www/polyfills.4c1e087fffe784e8.js +0 -1
  344. package/www/runtime.e81aa7ecff7177cd.js +0 -1
  345. package/www/styles.5a3cd83eba16afc9.css +0 -4
  346. package/www/tabler-icons.bfabe54eef86ae62.woff +0 -0
  347. package/www/tabler-icons.d9f65ab9439b4ffc.ttf +0 -0
  348. package/www/tabler-icons.f17d2c3b34a5deaa.woff2 +0 -0
  349. /package/{dist/lib/assets → assets}/i18n/en.json +0 -0
  350. /package/{dist/lib/assets → assets}/i18n/ew/en.json +0 -0
  351. /package/{dist/lib/assets → assets}/i18n/pt.json +0 -0
  352. /package/{dist/lib/assets → assets}/icons/icon-128.webp +0 -0
  353. /package/{dist/lib/assets → assets}/icons/icon-192.webp +0 -0
  354. /package/{dist/lib/assets → assets}/icons/icon-256.webp +0 -0
  355. /package/{dist/lib/assets → assets}/icons/icon-48.webp +0 -0
  356. /package/{dist/lib/assets → assets}/icons/icon-512.webp +0 -0
  357. /package/{dist/lib/assets → assets}/icons/icon-72.webp +0 -0
  358. /package/{dist/lib/assets → assets}/icons/icon-96.webp +0 -0
  359. /package/{dist/lib/assets → assets}/images/angular-logo.svg +0 -0
  360. /package/{dist/lib/assets → assets}/images/apple-touch-icon.png +0 -0
  361. /package/{dist/lib/assets → assets}/images/decaf-logo-black.svg +0 -0
  362. /package/{dist/lib/assets → assets}/images/decaf-logo-contrast.svg +0 -0
  363. /package/{dist/lib/assets → assets}/images/decaf-logo-white.svg +0 -0
  364. /package/{dist/lib/assets → assets}/images/decaf-logo.svg +0 -0
  365. /package/{dist/lib/assets → assets}/images/ew/product.txt +0 -0
  366. /package/{dist/lib/assets → assets}/images/favicon-contrast.svg +0 -0
  367. /package/{dist/lib/assets → assets}/images/favicon.png +0 -0
  368. /package/{dist/lib/assets → assets}/images/favicon.svg +0 -0
  369. /package/{dist/lib/assets → assets}/images/icons/document.svg +0 -0
  370. /package/{dist/lib/assets → assets}/images/icons/edit.svg +0 -0
  371. /package/{dist/lib/assets → assets}/images/icons/logout.svg +0 -0
  372. /package/{dist/lib/assets → assets}/images/icons/menu-collapse.svg +0 -0
  373. /package/{dist/lib/assets → assets}/images/icons/menu.svg +0 -0
  374. /package/{dist/lib/assets → assets}/images/icons/moon-stars.svg +0 -0
  375. /package/{dist/lib/assets → assets}/images/icons/trash.svg +0 -0
@@ -1,1711 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/lib/utils/helpers.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/lib/utils</a> helpers.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">43.8% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>53/121</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">6.09% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>5/82</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">30% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>9/30</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">46.22% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>49/106</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-yes">12x</span>
621
- <span class="cline-any cline-yes">12x</span>
622
- <span class="cline-any cline-yes">12x</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-yes">12x</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-yes">12x</span>
643
- <span class="cline-any cline-no">&nbsp;</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-yes">12x</span>
661
- <span class="cline-any cline-no">&nbsp;</span>
662
- <span class="cline-any cline-no">&nbsp;</span>
663
- <span class="cline-any cline-no">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-neutral">&nbsp;</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-yes">12x</span>
685
- <span class="cline-any cline-no">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-neutral">&nbsp;</span>
707
- <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-yes">12x</span>
710
- <span class="cline-any cline-no">&nbsp;</span>
711
- <span class="cline-any cline-no">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-neutral">&nbsp;</span>
725
- <span class="cline-any cline-yes">12x</span>
726
- <span class="cline-any cline-yes">139x</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-neutral">&nbsp;</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-neutral">&nbsp;</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-yes">12x</span>
743
- <span class="cline-any cline-yes">141x</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-neutral">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-yes">12x</span>
761
- <span class="cline-any cline-yes">11x</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-yes">12x</span>
777
- <span class="cline-any cline-yes">229x</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-yes">12x</span>
792
- <span class="cline-any cline-yes">2x</span>
793
- <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-yes">12x</span>
808
- <span class="cline-any cline-no">&nbsp;</span>
809
- <span class="cline-any cline-neutral">&nbsp;</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-neutral">&nbsp;</span>
816
- <span class="cline-any cline-neutral">&nbsp;</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-neutral">&nbsp;</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-yes">12x</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-yes">32x</span>
832
- <span class="cline-any cline-no">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-yes">32x</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-yes">32x</span>
837
- <span class="cline-any cline-neutral">&nbsp;</span>
838
- <span class="cline-any cline-yes">32x</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-yes">89x</span>
842
- <span class="cline-any cline-yes">89x</span>
843
- <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-yes">32x</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-yes">25x</span>
849
- <span class="cline-any cline-yes">25x</span>
850
- <span class="cline-any cline-yes">25x</span>
851
- <span class="cline-any cline-yes">25x</span>
852
- <span class="cline-any cline-neutral">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-neutral">&nbsp;</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-neutral">&nbsp;</span>
859
- <span class="cline-any cline-neutral">&nbsp;</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-neutral">&nbsp;</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-neutral">&nbsp;</span>
864
- <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-yes">12x</span>
866
- <span class="cline-any cline-no">&nbsp;</span>
867
- <span class="cline-any cline-no">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-neutral">&nbsp;</span>
874
- <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-neutral">&nbsp;</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-neutral">&nbsp;</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-neutral">&nbsp;</span>
885
- <span class="cline-any cline-yes">12x</span>
886
- <span class="cline-any cline-yes">52x</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-yes">52x</span>
890
- <span class="cline-any cline-yes">496x</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-yes">52x</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-neutral">&nbsp;</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-yes">12x</span>
909
- <span class="cline-any cline-yes">14x</span>
910
- <span class="cline-any cline-no">&nbsp;</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-yes">14x</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-yes">12x</span>
930
- <span class="cline-any cline-no">&nbsp;</span>
931
- <span class="cline-any cline-no">&nbsp;</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-no">&nbsp;</span>
935
- <span class="cline-any cline-no">&nbsp;</span>
936
- <span class="cline-any cline-no">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-no">&nbsp;</span>
939
- <span class="cline-any cline-no">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-no">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-no">&nbsp;</span>
946
- <span class="cline-any cline-no">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-neutral">&nbsp;</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-yes">12x</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-no">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-no">&nbsp;</span>
974
- <span class="cline-any cline-no">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-no">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-neutral">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&nbsp;</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-neutral">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-neutral">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-yes">12x</span>
1006
- <span class="cline-any cline-no">&nbsp;</span>
1007
- <span class="cline-any cline-no">&nbsp;</span>
1008
- <span class="cline-any cline-no">&nbsp;</span>
1009
- <span class="cline-any cline-no">&nbsp;</span>
1010
- <span class="cline-any cline-no">&nbsp;</span>
1011
- <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-no">&nbsp;</span>
1013
- <span class="cline-any cline-no">&nbsp;</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-no">&nbsp;</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-no">&nbsp;</span>
1022
- <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-no">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-no">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-neutral">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-neutral">&nbsp;</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-yes">12x</span>
1050
- <span class="cline-any cline-no">&nbsp;</span>
1051
- <span class="cline-any cline-no">&nbsp;</span>
1052
- <span class="cline-any cline-no">&nbsp;</span>
1053
- <span class="cline-any cline-no">&nbsp;</span>
1054
- <span class="cline-any cline-no">&nbsp;</span>
1055
- <span class="cline-any cline-no">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-neutral">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-yes">12x</span>
1073
- <span class="cline-any cline-no">&nbsp;</span>
1074
- <span class="cline-any cline-no">&nbsp;</span>
1075
- <span class="cline-any cline-neutral">&nbsp;</span>
1076
- <span class="cline-any cline-neutral">&nbsp;</span>
1077
- <span class="cline-any cline-neutral">&nbsp;</span>
1078
- <span class="cline-any cline-neutral">&nbsp;</span>
1079
- <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-neutral">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-yes">12x</span>
1092
- <span class="cline-any cline-no">&nbsp;</span>
1093
- <span class="cline-any cline-no">&nbsp;</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-neutral">&nbsp;</span>
1108
- <span class="cline-any cline-yes">12x</span>
1109
- <span class="cline-any cline-no">&nbsp;</span>
1110
- <span class="cline-any cline-no">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-neutral">&nbsp;</span>
1126
- <span class="cline-any cline-yes">12x</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-no">&nbsp;</span>
1132
- <span class="cline-any cline-no">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-no">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-yes">12x</span>
1147
- <span class="cline-any cline-no">&nbsp;</span>
1148
- <span class="cline-any cline-no">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
1151
- * @module module:lib/helpers/utils
1152
- * @description General helper utilities used across the library.
1153
- * @summary Exposes small, reusable utility functions for window/document access, date handling,
1154
- * string manipulation, simple mapping helpers and environment helpers used by UI components
1155
- * and services. This module's functions include `getWindow`, `getWindowDocument`, `formatDate`,
1156
- * `isValidDate`, `itemMapper`, `dataMapper`, and event helpers like `windowEventEmitter`.
1157
- *
1158
- * Do not document individual exports here — functions are documented inline.
1159
- * @link {@link getWindow}
1160
- */
1161
- &nbsp;
1162
- import { isDevMode } from '@angular/core';
1163
- import { InjectableRegistryImp, InjectablesRegistry } from '@decaf-ts/injectable-decorators';
1164
- import { Primitives } from '@decaf-ts/decorator-validation';
1165
- import { KeyValue, StringOrBoolean } from '../engine/types';
1166
- import { FunctionLike } from '../engine/types';
1167
- import { IMenuItem } from '../engine/interfaces';
1168
- import { getLogger } from '../engine/helpers';
1169
- &nbsp;
1170
- let injectableRegistry: InjectablesRegistry;
1171
- &nbsp;
1172
- /**
1173
- * @description Retrieves the singleton instance of the injectables registry
1174
- * @summary This function implements the singleton pattern for the InjectablesRegistry.
1175
- * It returns the existing registry instance if one exists, or creates a new instance
1176
- * if none exists. The registry is used to store and retrieve injectable dependencies
1177
- * throughout the application.
1178
- *
1179
- * @return {InjectablesRegistry} The singleton injectables registry instance
1180
- *
1181
- * @function getInjectablesRegistry
1182
- * @memberOf module:for-angular
1183
- */
1184
- export function <span class="fstat-no" title="function not covered" >getInjectablesRegistry(</span>): InjectablesRegistry {
1185
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!injectableRegistry) <span class="cstat-no" title="statement not covered" >injectableRegistry = new InjectableRegistryImp();</span></span>
1186
- <span class="cstat-no" title="statement not covered" > return injectableRegistry;</span>
1187
- }
1188
- &nbsp;
1189
- /**
1190
- * @description Determines if the application is running in development mode
1191
- * @summary This function checks whether the application is currently running in a development
1192
- * environment. It uses Angular's isDevMode() function and also checks the window context
1193
- * and hostname against the provided context parameter. This is useful for enabling
1194
- * development-specific features or logging.
1195
- *
1196
- * @param {string} [context='localhost'] - The context string to check against the current environment
1197
- * @return {boolean} True if the application is running in development mode, false otherwise
1198
- *
1199
- * @function isDevelopmentMode
1200
- * @memberOf module:for-angular
1201
- */
1202
- export function <span class="fstat-no" title="function not covered" >isDevelopmentMode(</span>context: string = <span class="branch-0 cbranch-no" title="branch not covered" >'localhost')</span>: boolean {
1203
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!context) <span class="cstat-no" title="statement not covered" >return isDevMode();</span></span>
1204
- const win = <span class="cstat-no" title="statement not covered" >getWindow();</span>
1205
- <span class="cstat-no" title="statement not covered" > return (</span>
1206
- isDevMode() ||
1207
- win?.['env']?.['CONTEXT'].toLowerCase() !== context.toLowerCase() ||
1208
- win?.['location']?.hostname?.includes(context)
1209
- );
1210
- }
1211
- &nbsp;
1212
- /**
1213
- * @description Dispatches a custom event to the document window
1214
- * @summary This function creates and dispatches a custom event to the browser window.
1215
- * It's useful for cross-component communication or for triggering application-wide events.
1216
- * The function allows specifying the event name, detail data, and additional event properties.
1217
- *
1218
- * @param {string} name - The name of the custom event to dispatch
1219
- * @param {unknown} detail - The data to include in the event's detail property
1220
- * @param {object} [props] - Optional additional properties for the custom event
1221
- * @return {void}
1222
- *
1223
- * @function windowEventEmitter
1224
- * @memberOf module:for-angular
1225
- */
1226
- export function <span class="fstat-no" title="function not covered" >windowEventEmitter(</span>name: string, detail: unknown, props?: object): void {
1227
- const data = <span class="cstat-no" title="statement not covered" >Object.assign(</span>
1228
- {
1229
- bubbles: true,
1230
- composed: true,
1231
- cancelable: false,
1232
- detail: detail,
1233
- },
1234
- props || {},
1235
- );
1236
- (<span class="cstat-no" title="statement not covered" >getWindow() as Window).dispatchEvent(new CustomEvent(name, data));</span>
1237
- }
1238
- /**
1239
- * @description Retrieves a property from the window's document object
1240
- * @summary This function provides a safe way to access properties on the window's document object.
1241
- * It uses the getWindowDocument function to get a reference to the document, then accesses
1242
- * the specified property. This is useful for browser environment interactions that need
1243
- * to access document properties.
1244
- *
1245
- * @param {string} key - The name of the property to retrieve from the document object
1246
- * @return {any} The value of the specified property, or undefined if the document or property doesn't exist
1247
- *
1248
- * @function getOnWindowDocument
1249
- * @memberOf module:for-angular
1250
- */
1251
- export function <span class="fstat-no" title="function not covered" >getOnWindowDocument(</span>key: string): Document | undefined {
1252
- const doc = <span class="cstat-no" title="statement not covered" >getWindowDocument() as Document;</span>
1253
- <span class="cstat-no" title="statement not covered" > return doc instanceof Document ? (doc as KeyValue)?.[key] || undefined : undefined;</span>
1254
- }
1255
- &nbsp;
1256
- /**
1257
- * @description Retrieves the document object from the window
1258
- * @summary This function provides a safe way to access the document object from the window.
1259
- * It uses the getOnWindow function to retrieve the 'document' property from the window object.
1260
- * This is useful for browser environment interactions that need access to the document.
1261
- *
1262
- * @return {Document | undefined} The window's document object, or undefined if it doesn't exist
1263
- *
1264
- * @function getWindowDocument
1265
- * @memberOf module:for-angular
1266
- */
1267
- export function getWindowDocument(): Document | undefined {
1268
- return getOnWindow('document') as Document;
1269
- }
1270
- &nbsp;
1271
- /**
1272
- * @description Retrieves a property from the window object
1273
- * @summary This function provides a safe way to access properties on the window object.
1274
- * It uses the getWindow function to get a reference to the window, then accesses
1275
- * the specified property. This is useful for browser environment interactions that need
1276
- * to access window properties or APIs.
1277
- *
1278
- * @param {string} key - The name of the property to retrieve from the window object
1279
- * @return {unknown | undefined} The value of the specified property, or undefined if the window or property doesn't exist
1280
- *
1281
- * @function getOnWindow
1282
- * @memberOf module:for-angular
1283
- */
1284
- export function getOnWindow(key: string): unknown | undefined {
1285
- return getWindow()?.[key];
1286
- }
1287
- &nbsp;
1288
- /**
1289
- * @description Sets a property on the window object
1290
- * @summary This function provides a way to set properties on the window object.
1291
- * It uses the getWindow function to get a reference to the window, then sets
1292
- * the specified property to the provided value. This is useful for storing
1293
- * global data or functions that need to be accessible across the application.
1294
- *
1295
- * @param {string} key - The name of the property to set on the window object
1296
- * @param {any} value - The value to assign to the property
1297
- * @return {void}
1298
- *
1299
- * @function setOnWindow
1300
- * @memberOf module:for-angular
1301
- */
1302
- export function setOnWindow(key: string, value: unknown): void {
1303
- getWindow()[key] = value;
1304
- }
1305
- &nbsp;
1306
- /**
1307
- * @description Retrieves the global window object
1308
- * @summary This function provides a safe way to access the global window object.
1309
- * It uses globalThis to ensure compatibility across different JavaScript environments.
1310
- * This is the core function used by other window-related utility functions to
1311
- * access the window object.
1312
- *
1313
- * @return {Window} The global window object
1314
- *
1315
- * @function getWindow
1316
- * @memberOf module:for-angular
1317
- */
1318
- export function getWindow(): Window &amp; KeyValue {
1319
- return (globalThis as KeyValue)?.['window'] as Window &amp; KeyValue;
1320
- }
1321
- &nbsp;
1322
- /**
1323
- * @description Retrieves the width of the browser window
1324
- * @summary This function provides a convenient way to get the current width of the browser window.
1325
- * It uses the getOnWindow function to access the 'innerWidth' property of the window object.
1326
- * This is useful for responsive design implementations and viewport-based calculations.
1327
- *
1328
- * @return {number | undefined} The current width of the browser window in pixels
1329
- *
1330
- * @function getWindowWidth
1331
- * @memberOf module:for-angular
1332
- */
1333
- export function getWindowWidth(): number {
1334
- return (getOnWindow('innerWidth') as number) || <span class="branch-1 cbranch-no" title="branch not covered" >0;</span>
1335
- }
1336
- &nbsp;
1337
- /**
1338
- * @description Checks if a value is not undefined
1339
- * @summary This utility function determines whether a given value is not undefined.
1340
- * It's a simple wrapper that makes code more readable when checking for defined values.
1341
- * The function is particularly useful for checking StringOrBoolean properties that might be undefined.
1342
- *
1343
- * @param {StringOrBoolean | undefined} prop - The property to check
1344
- * @return {boolean} True if the property is not undefined, false otherwise
1345
- *
1346
- * @function isNotUndefined
1347
- * @memberOf module:for-angular
1348
- */
1349
- export function <span class="fstat-no" title="function not covered" >isNotUndefined(</span>prop: StringOrBoolean | undefined): boolean {
1350
- <span class="cstat-no" title="statement not covered" > return (prop !== undefined) as boolean;</span>
1351
- }
1352
- &nbsp;
1353
- /**
1354
- * @description Generates a locale string from a class name or instance
1355
- * @summary This utility function converts a class name or instance into a locale string
1356
- * that can be used for internationalization purposes. It handles different input types
1357
- * (string, function, or object) and applies formatting rules to generate a consistent
1358
- * locale identifier. For short names (less than 3 parts), it reverses the dot-separated
1359
- * string. For longer names, it uses the last part as a prefix and joins the rest with
1360
- * underscores.
1361
- *
1362
- * @param {string|FunctionLike|object} instance - The input to generate the locale from (class name, constructor, or instance)
1363
- * @param {string} [suffix] - Optional string to append to the instance name before processing
1364
- * @return {string} A formatted locale string derived from the input
1365
- *
1366
- * @function getLocaleFromClassName
1367
- * @memberOf module:for-angular
1368
- */
1369
- export function getLocaleFromClassName(
1370
- instance: string | FunctionLike | KeyValue,
1371
- suffix?: string,
1372
- ): string {
1373
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof instance !== Primitives.STRING)
1374
- <span class="cstat-no" title="statement not covered" > instance = (instance as FunctionLike).name || (instance as object)?.constructor?.name;</span>
1375
- &nbsp;
1376
- let name: string | string[] = instance as string;
1377
- &nbsp;
1378
- <span class="missing-if-branch" title="if path not taken" >I</span>if (suffix) <span class="cstat-no" title="statement not covered" >name = `${instance}${suffix.charAt(0).toUpperCase() + suffix.slice(1)}`;</span>
1379
- &nbsp;
1380
- name = name
1381
- .replace(/_|-/g, '')
1382
- .replace(/(?:^\w|[A-Z]|\b\w)/g, (word: string, index: number) =&gt; {
1383
- if (index &gt; 1) word = '.' + word;
1384
- return word.toLowerCase();
1385
- })
1386
- .split('.');
1387
- &nbsp;
1388
- if (name.length &lt; 3) return name.reverse().join('.');
1389
- &nbsp;
1390
- const preffix = name[name.length - 1];
1391
- name.pop();
1392
- name = name.join('_');
1393
- return `${preffix}.${name}`;
1394
- }
1395
- &nbsp;
1396
- /**
1397
- * @description Retrieves the current locale language
1398
- * @summary This utility function gets the current locale language based on the user's browser settings.
1399
- * It provides a consistent way to access the user's language preference throughout the application.
1400
- * The function returns the browser's navigator.language value, defaulting to 'en' if not available.
1401
- *
1402
- * @return {string} The current locale language (e.g., 'en', 'fr')
1403
- *
1404
- * @function getLocaleLanguage
1405
- * @memberOf module:for-angular
1406
- */
1407
- export function <span class="fstat-no" title="function not covered" >getLocaleLanguage(</span>): string {
1408
- const win = <span class="cstat-no" title="statement not covered" >getWindow();</span>
1409
- <span class="cstat-no" title="statement not covered" > return (win as Window).navigator.language || 'en';</span>
1410
- // return win?.[WINDOW_KEYS.LANGUAGE_SELECTED] || (win.navigator.language || '').split('-')[0] || "en";
1411
- }
1412
- &nbsp;
1413
- /**
1414
- * @description Generates a random string or number of specified length
1415
- * @summary This utility function creates a random string of a specified length.
1416
- * It can generate either alphanumeric strings (including uppercase and lowercase letters)
1417
- * or numeric-only strings. This is useful for creating random IDs, temporary passwords,
1418
- * or other random identifiers throughout the application.
1419
- *
1420
- * @param {number} [length=8] - The length of the random value to generate
1421
- * @param {boolean} [onlyNumbers=false] - Whether to generate only numeric characters
1422
- * @return {string} A randomly generated string of the specified length and character set
1423
- *
1424
- * @function generateRandomValue
1425
- * @memberOf module:for-angular
1426
- */
1427
- export function generateRandomValue(length: number = <span class="branch-0 cbranch-no" title="branch not covered" >8,</span> onlyNumbers: boolean = false): string {
1428
- const chars = onlyNumbers
1429
- ? <span class="branch-0 cbranch-no" title="branch not covered" >'0123456789'</span>
1430
- : 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
1431
- let result = '';
1432
- for (let i = 0; i &lt; length; i++) result += chars.charAt(Math.floor(Math.random() * chars.length));
1433
- &nbsp;
1434
- return result;
1435
- }
1436
- &nbsp;
1437
- /**
1438
- * @description Converts a string representation of a boolean or a boolean value to a boolean type.
1439
- * @summary This utility function handles conversion of string-based boolean values ('true', 'false')
1440
- * to actual boolean types. It performs case-insensitive string comparison and returns the
1441
- * corresponding boolean value. This is particularly useful when parsing configuration values,
1442
- * URL parameters, or form inputs that may come as strings but need to be used as booleans.
1443
- *
1444
- * @param {'true' | 'false' | boolean} prop - The value to convert. Can be the string 'true', 'false', or a boolean
1445
- * @returns {boolean} The boolean representation of the input value. Returns true if the input is the string 'true' or boolean true, false otherwise
1446
- *
1447
- * @function stringToBoolean
1448
- * @memberOf module:lib/helpers/utils
1449
- */
1450
- export function stringToBoolean(prop: 'true' | 'false' | boolean): boolean {
1451
- <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof prop === Primitives.STRING) {
1452
- <span class="cstat-no" title="statement not covered" > prop = String(prop).toLowerCase() === 'true' ? true : false;</span>
1453
- }
1454
- return prop as boolean;
1455
- }
1456
- &nbsp;
1457
- /**
1458
- * @description Checks if a value is a valid Date object.
1459
- * @summary This validation function determines whether a given value represents a valid date.
1460
- * It handles multiple input types including Date objects, timestamp numbers, and date strings.
1461
- * For string inputs, it supports ISO 8601 format (YYYY-MM-DD) with or without time components.
1462
- * The function performs comprehensive validation including regex pattern matching and Date
1463
- * object creation to ensure the date is not only parseable but also represents a real date.
1464
- *
1465
- * @param {string | Date | number} date - The value to check. Can be a Date object, a timestamp number, or a date string
1466
- * @returns {boolean} Returns true if the value is a valid Date object (not NaN), otherwise false
1467
- *
1468
- * @function isValidDate
1469
- * @memberOf module:lib/helpers/utils
1470
- */
1471
- export function <span class="fstat-no" title="function not covered" >isValidDate(</span>date: string | Date | number): boolean {
1472
- <span class="cstat-no" title="statement not covered" > try {</span>
1473
- <span class="cstat-no" title="statement not covered" > return (</span>
1474
- (date instanceof Date &amp;&amp; !isNaN(date as unknown as number)) ||
1475
- (<span class="fstat-no" title="function not covered" >() =</span>&gt; {
1476
- const testRegex = <span class="cstat-no" title="statement not covered" >new RegExp(/^\d{4}-\d{2}-\d{2}$/).test(date as string);</span>
1477
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof date !== Primitives.STRING || (!(date as string)?.includes('T') &amp;&amp; !testRegex))</span>
1478
- <span class="cstat-no" title="statement not covered" > return false;</span>
1479
- &nbsp;
1480
- <span class="cstat-no" title="statement not covered" > date = (date as string).split('T')[0];</span>
1481
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!new RegExp(/^\d{4}-\d{2}-\d{2}$/).test(date)) <span class="cstat-no" title="statement not covered" >return false;</span></span>
1482
- &nbsp;
1483
- <span class="cstat-no" title="statement not covered" > return !!new Date(date);</span>
1484
- })()
1485
- );
1486
- } catch (error: unknown) {
1487
- <span class="cstat-no" title="statement not covered" > getLogger(isValidDate).error(error as Error | string);</span>
1488
- <span class="cstat-no" title="statement not covered" > return false;</span>
1489
- }
1490
- }
1491
- &nbsp;
1492
- /**
1493
- * @description Formats a date into a localized string representation.
1494
- * @summary This function converts a date value into a formatted string according to a specified
1495
- * or system locale. It accepts multiple input formats (Date objects, timestamps, or date strings)
1496
- * and returns a consistently formatted date string in DD/MM/YYYY format. If the input date is
1497
- * invalid, the function returns the original input as a string. The function automatically
1498
- * uses the system locale if none is provided and handles string format conversions by replacing
1499
- * forward slashes with hyphens for proper Date parsing.
1500
- *
1501
- * @param {string | Date | number} date - The date to format. Can be a Date object, a timestamp number, or a date string
1502
- * @param {string} [locale] - The locale to use for formatting. If not provided, the system's locale will be used
1503
- * @returns {Date | string} A formatted date string in the format DD/MM/YYYY according to the specified locale,
1504
- * or the original input as a string if the date is invalid
1505
- *
1506
- * @function formatDate
1507
- * @memberOf module:lib/helpers/utils
1508
- */
1509
- export function <span class="fstat-no" title="function not covered" >formatDate(</span>
1510
- date: string | Date | number,
1511
- locale?: string | undefined,
1512
- ): Date | string {
1513
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!locale) <span class="cstat-no" title="statement not covered" >locale = getLocaleLanguage();</span></span>
1514
- &nbsp;
1515
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof date === Primitives.STRING || typeof date === 'number') {</span>
1516
- <span class="cstat-no" title="statement not covered" > date = new Date(typeof date === Primitives.STRING ? `${date}`.replace(/\//g, '-') : date);</span>
1517
- }
1518
- &nbsp;
1519
- <span class="cstat-no" title="statement not covered" > return !isValidDate(date)</span>
1520
- ? `${date}`
1521
- : date.toLocaleString(locale, {
1522
- year: 'numeric',
1523
- day: '2-digit',
1524
- month: '2-digit',
1525
- });
1526
- }
1527
- &nbsp;
1528
- /**
1529
- /**
1530
- * @description Maps an item object using a provided mapper object and optional additional properties.
1531
- * @summary This function transforms a source object into a new object based on mapping rules defined
1532
- * in the mapper parameter. It supports dot notation for nested property access (e.g., 'user.name.first')
1533
- * and handles various data types including strings and complex objects. For date values, it automatically
1534
- * formats them using the formatDate function. The function also allows merging additional properties
1535
- * into the result. When a mapped value is null or undefined, it uses the original mapper value as
1536
- * a fallback.
1537
- *
1538
- * @param {KeyValue} item - The source object to be mapped
1539
- * @param {KeyValue} mapper - An object that defines the mapping rules. Keys represent the new property names,
1540
- * and values represent the path to the corresponding values in the source object
1541
- * @param {KeyValue} [props] - Optional additional properties to be included in the mapped object
1542
- * @returns {KeyValue} A new object with properties mapped according to the mapper object and including any additional properties
1543
- *
1544
- * @function itemMapper
1545
- * @memberOf module:lib/helpers/utils
1546
- */
1547
- export function <span class="fstat-no" title="function not covered" >itemMapper(</span>item: KeyValue, mapper: KeyValue, props?: KeyValue): KeyValue {
1548
- <span class="cstat-no" title="statement not covered" > return Object.entries(mapper).reduce(<span class="fstat-no" title="function not covered" >(a</span>ccum: KeyValue, [key, prop]) =&gt; {</span>
1549
- const arrayValue = <span class="cstat-no" title="statement not covered" >(prop || '').split('.');</span>
1550
- let value = <span class="cstat-no" title="statement not covered" >item?.[prop] || '';</span>
1551
- <span class="cstat-no" title="statement not covered" > if (!prop) {</span>
1552
- <span class="cstat-no" title="statement not covered" > accum[key] = prop;</span>
1553
- } else {
1554
- <span class="cstat-no" title="statement not covered" > if (arrayValue.length === 1) {</span>
1555
- <span class="cstat-no" title="statement not covered" > accum[key] = value;</span>
1556
- // accum[key] = item?.[value as string] || (value !== key ? value : "");
1557
- } else {
1558
- <span class="cstat-no" title="statement not covered" > for (const propValue of arrayValue)</span>
1559
- <span class="cstat-no" title="statement not covered" > value = !value</span>
1560
- ? item[propValue]
1561
- : (typeof value === 'string' ? JSON.parse(value) : value)[propValue];
1562
- &nbsp;
1563
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isValidDate(new Date(value))) <span class="cstat-no" title="statement not covered" >value = `${formatDate(value)}`;</span></span>
1564
- &nbsp;
1565
- <span class="cstat-no" title="statement not covered" > accum[key] = value === null || value === undefined ? prop : value;</span>
1566
- }
1567
- }
1568
- <span class="cstat-no" title="statement not covered" > return Object.assign({}, props || {}, accum);</span>
1569
- }, {});
1570
- }
1571
- &nbsp;
1572
- /**
1573
- * @description Maps an array of data objects using a provided mapper object.
1574
- * @summary This function transforms an array of objects by applying mapping rules to each item
1575
- * using the itemMapper function. It processes each element in the data array and creates
1576
- * new mapped objects based on the mapper configuration. The function includes validation
1577
- * to ensure meaningful data: if a mapped item contains only null/undefined values, it
1578
- * preserves the original item instead. This prevents data loss during transformation.
1579
- * Returns an empty array if the input data is null, undefined, or empty.
1580
- *
1581
- * @template T - The type of the resulting mapped items
1582
- * @param {T[]} data - The array of data objects to be mapped
1583
- * @param {KeyValue} mapper - An object that defines the mapping rules
1584
- * @param {KeyValue} [props] - Additional properties to be included in the mapped items
1585
- * @returns {T[]} The array of mapped items. If an item in the original array does not have any non-null values after mapping,
1586
- * the original item is returned instead
1587
- *
1588
- * @function dataMapper
1589
- * @memberOf module:lib/helpers/utils
1590
- */
1591
- export function <span class="fstat-no" title="function not covered" >dataMapper&lt;</span>T&gt;(data: T[], mapper: KeyValue, props?: KeyValue): T[] {
1592
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!data || !data.length) <span class="cstat-no" title="statement not covered" >return [];</span></span>
1593
- <span class="cstat-no" title="statement not covered" > return data.reduce(<span class="fstat-no" title="function not covered" >(a</span>ccum: T[], curr) =&gt; {</span>
1594
- const item = <span class="cstat-no" title="statement not covered" >itemMapper(curr as KeyValue, mapper, props) as T;</span>
1595
- const hasValues = <span class="cstat-no" title="statement not covered" >[...new Set(Object.values(item as T[]))].filter(<span class="fstat-no" title="function not covered" >(v</span>alue) =&gt; <span class="cstat-no" title="statement not covered" >value)</span>.length &gt; 0;</span>
1596
- <span class="cstat-no" title="statement not covered" > accum.push(hasValues ? item : curr);</span>
1597
- <span class="cstat-no" title="statement not covered" > return accum;</span>
1598
- }, []);
1599
- }
1600
- &nbsp;
1601
- /**
1602
- * @description Removes focus from the currently active DOM element
1603
- * @summary This utility function blurs the currently focused element in the document,
1604
- * effectively removing focus traps that might prevent proper navigation or keyboard
1605
- * interaction. It safely accesses the document's activeElement and calls blur() if
1606
- * an element is currently focused. This is useful for accessibility and user experience
1607
- * improvements, particularly when closing modals or dialogs.
1608
- *
1609
- * @return {void}
1610
- *
1611
- * @function removeFocusTrap
1612
- * @memberOf module:for-angular
1613
- */
1614
- export function <span class="fstat-no" title="function not covered" >removeFocusTrap(</span>): void {
1615
- const doc = <span class="cstat-no" title="statement not covered" >getWindowDocument();</span>
1616
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (doc?.activeElement) (<span class="cstat-no" title="statement not covered" >doc.activeElement as HTMLElement)?.blur();</span></span>
1617
- }
1618
- &nbsp;
1619
- /**
1620
- * @description Cleans and normalizes whitespace in a string value
1621
- * @summary This utility function trims leading and trailing whitespace from a string
1622
- * and replaces multiple consecutive whitespace characters with a single space.
1623
- * Optionally converts the result to lowercase for consistent text processing.
1624
- * This is useful for normalizing user input, search terms, or data sanitization.
1625
- *
1626
- * @param {string} value - The string value to clean and normalize
1627
- * @param {boolean} [lowercase=false] - Whether to convert the result to lowercase
1628
- * @return {string} The cleaned and normalized string
1629
- *
1630
- * @function cleanSpaces
1631
- * @memberOf module:for-angular
1632
- */
1633
- export function <span class="fstat-no" title="function not covered" >cleanSpaces(</span>value: string = <span class="branch-0 cbranch-no" title="branch not covered" >'',</span> lowercase: boolean = <span class="branch-0 cbranch-no" title="branch not covered" >false)</span>: string {
1634
- <span class="cstat-no" title="statement not covered" > value = `${value}`.trim().replace(/\s+/g, ' ');</span>
1635
- <span class="cstat-no" title="statement not covered" > return lowercase ? value.toLowerCase() : value;</span>
1636
- }
1637
- &nbsp;
1638
- /**
1639
- * @description Determines if the user's system is currently in dark mode
1640
- * @summary This function checks the user's color scheme preference using the CSS media query
1641
- * '(prefers-color-scheme: dark)'. It returns a boolean indicating whether the system is
1642
- * currently set to dark mode. This is useful for implementing theme-aware functionality
1643
- * and adjusting UI elements based on the user's preferred color scheme.
1644
- *
1645
- * @return {Promise&lt;boolean&gt;} True if the system is in dark mode, false otherwise
1646
- *
1647
- * @function isDarkMode
1648
- * @memberOf module:for-angular
1649
- */
1650
- export async function <span class="fstat-no" title="function not covered" >isDarkMode(</span>): Promise&lt;boolean&gt; {
1651
- const { matches } = <span class="cstat-no" title="statement not covered" >getWindow().matchMedia('(prefers-color-scheme: dark)');</span>
1652
- <span class="cstat-no" title="statement not covered" > return matches;</span>
1653
- }
1654
- &nbsp;
1655
- /**
1656
- * @description Filters out strings containing or not containing a specific substring from an array or space-separated string.
1657
- * @summary This function removes or retains strings based on whether they include the specified substring.
1658
- * If the input is a single string, it is split into an array using spaces as delimiters before filtering.
1659
- *
1660
- * @param {string | string[]} original - The input string or array of strings to filter.
1661
- * @param {string} value - The substring to filter by.
1662
- * @param {boolean} [contain=true] - Determines the filtering behavior. If true, retains strings containing the substring; otherwise, removes them.
1663
- * @returns {string} A string that contains or excludes the specified substring based on the `contain` parameter.
1664
- *
1665
- * @function filterString
1666
- * @memberOf module:lib/helpers/utils
1667
- */
1668
- export function <span class="fstat-no" title="function not covered" >filterString(</span>
1669
- original: string | string[],
1670
- value: string,
1671
- contain: boolean = <span class="branch-0 cbranch-no" title="branch not covered" >true,</span>
1672
- ): string {
1673
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof original === Primitives.STRING) <span class="cstat-no" title="statement not covered" >original = (original as string).split(' ');</span></span>
1674
- <span class="cstat-no" title="statement not covered" > return (</span>
1675
- (original as string[]).filter(<span class="fstat-no" title="function not covered" >(s</span>tr) =&gt;
1676
- <span class="cstat-no" title="statement not covered" > contain ? str.includes(value) : !str.includes(value),</span>
1677
- ) || []
1678
- ).join(' ');
1679
- }
1680
- &nbsp;
1681
- /**
1682
- * @summary Retrieves the icon associated with a menu item based on its label.
1683
- *
1684
- * @param {string} label - The label of the menu item to search for. The search is case-insensitive.
1685
- * @param {IMenuItem[]} menu - An array of menu items to search within.
1686
- * @returns {string} The icon associated with the menu item if found, otherwise an empty string.
1687
- */
1688
- export function <span class="fstat-no" title="function not covered" >getMenuIcon(</span>label: string, menu: IMenuItem[]): string {
1689
- const item = <span class="cstat-no" title="statement not covered" >menu.find(<span class="fstat-no" title="function not covered" >(m</span>) =&gt; <span class="cstat-no" title="statement not covered" >m.label?.toLowerCase() === label.toLowerCase())</span>;</span>
1690
- <span class="cstat-no" title="statement not covered" > return item?.icon || '';</span>
1691
- }
1692
- &nbsp;</pre></td></tr></table></pre>
1693
-
1694
- <div class='push'></div><!-- for sticky footer -->
1695
- </div><!-- /wrapper -->
1696
- <div class='footer quiet pad2 space-top1 center small'>
1697
- Code coverage generated by
1698
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1699
- at 2026-02-23T18:14:03.502Z
1700
- </div>
1701
- <script src="../../../prettify.js"></script>
1702
- <script>
1703
- window.onload = function () {
1704
- prettyPrint();
1705
- };
1706
- </script>
1707
- <script src="../../../sorter.js"></script>
1708
- <script src="../../../block-navigation.js"></script>
1709
- </body>
1710
- </html>
1711
-