@sumaris-net/ngx-components 18.10.29 → 18.12.0

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 (1383) hide show
  1. package/.editorconfig +24 -0
  2. package/.eslintrc.json +95 -0
  3. package/.gitattribute +1 -0
  4. package/.github/CONTRIBUTING.md +10 -0
  5. package/.github/ISSUE_TEMPLATE.md +6 -0
  6. package/.github/PULL_REQUEST_TEMPLATE.md +10 -0
  7. package/.github/github_disclaimer.md +14 -0
  8. package/.gitlab-ci.yml +46 -0
  9. package/.graphqlconfig +15 -0
  10. package/.prettierignore +9 -0
  11. package/.prettierrc.json +17 -0
  12. package/angular.json +236 -0
  13. package/capacitor.config.ts +49 -0
  14. package/doc/changelog.md +4 -0
  15. package/graphql.config.yml +13 -0
  16. package/ionic.config.json +7 -0
  17. package/karma.conf.js +38 -0
  18. package/ng-package.json +21 -0
  19. package/ngcc.config.js +9 -0
  20. package/package.json +132 -19
  21. package/public_api.ts +426 -0
  22. package/resources/README.md +7 -0
  23. package/resources/icon/TODO.md +11 -0
  24. package/resources/icon.png +0 -0
  25. package/resources/icon.png.md5 +1 -0
  26. package/resources/icon.xcf +0 -0
  27. package/resources/ios/icon/icon-1024.png +0 -0
  28. package/resources/ios/icon/icon-108@2x.png +0 -0
  29. package/resources/ios/icon/icon-20.png +0 -0
  30. package/resources/ios/icon/icon-20@2x.png +0 -0
  31. package/resources/ios/icon/icon-20@3x.png +0 -0
  32. package/resources/ios/icon/icon-24@2x.png +0 -0
  33. package/resources/ios/icon/icon-27.5@2x.png +0 -0
  34. package/resources/ios/icon/icon-29.png +0 -0
  35. package/resources/ios/icon/icon-29@2x.png +0 -0
  36. package/resources/ios/icon/icon-29@3x.png +0 -0
  37. package/resources/ios/icon/icon-40.png +0 -0
  38. package/resources/ios/icon/icon-40@2x.png +0 -0
  39. package/resources/ios/icon/icon-40@3x.png +0 -0
  40. package/resources/ios/icon/icon-44@2x.png +0 -0
  41. package/resources/ios/icon/icon-50.png +0 -0
  42. package/resources/ios/icon/icon-50@2x.png +0 -0
  43. package/resources/ios/icon/icon-60.png +0 -0
  44. package/resources/ios/icon/icon-60@2x.png +0 -0
  45. package/resources/ios/icon/icon-60@3x.png +0 -0
  46. package/resources/ios/icon/icon-72.png +0 -0
  47. package/resources/ios/icon/icon-72@2x.png +0 -0
  48. package/resources/ios/icon/icon-76.png +0 -0
  49. package/resources/ios/icon/icon-76@2x.png +0 -0
  50. package/resources/ios/icon/icon-83.5@2x.png +0 -0
  51. package/resources/ios/icon/icon-86@2x.png +0 -0
  52. package/resources/ios/icon/icon-98@2x.png +0 -0
  53. package/resources/ios/icon/icon-small.png +0 -0
  54. package/resources/ios/icon/icon-small@2x.png +0 -0
  55. package/resources/ios/icon/icon-small@3x.png +0 -0
  56. package/resources/ios/icon/icon.png +0 -0
  57. package/resources/ios/icon/icon@2x.png +0 -0
  58. package/resources/ios/splash/Default-1792h~iphone.png +0 -0
  59. package/resources/ios/splash/Default-2436h.png +0 -0
  60. package/resources/ios/splash/Default-2688h~iphone.png +0 -0
  61. package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
  62. package/resources/ios/splash/Default-667h.png +0 -0
  63. package/resources/ios/splash/Default-736h.png +0 -0
  64. package/resources/ios/splash/Default-Landscape-1792h~iphone.png +0 -0
  65. package/resources/ios/splash/Default-Landscape-2436h.png +0 -0
  66. package/resources/ios/splash/Default-Landscape-2688h~iphone.png +0 -0
  67. package/resources/ios/splash/Default-Landscape-736h.png +0 -0
  68. package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
  69. package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
  70. package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
  71. package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
  72. package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
  73. package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
  74. package/resources/ios/splash/Default@2x~iphone.png +0 -0
  75. package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
  76. package/resources/ios/splash/Default~iphone.png +0 -0
  77. package/resources/splash.png +0 -0
  78. package/resources/splash.png.md5 +1 -0
  79. package/scripts/build-android.sh +18 -0
  80. package/scripts/docker-start.sh +6 -0
  81. package/scripts/emulate-android.sh +17 -0
  82. package/scripts/env-android.sh +83 -0
  83. package/scripts/env-clean.sh +23 -0
  84. package/scripts/env-global.sh +154 -0
  85. package/scripts/install-android-sdk-tools.sh +73 -0
  86. package/scripts/ionic-update.sh +24 -0
  87. package/scripts/node/build-i18n.js +37 -0
  88. package/scripts/node/playground.ts +9 -0
  89. package/scripts/node/resources.js +108 -0
  90. package/scripts/release.sh +162 -0
  91. package/scripts/run-android.sh +59 -0
  92. package/scripts/test.sh +19 -0
  93. package/src/app/admin/admin-routing.module.ts +26 -0
  94. package/src/app/admin/admin.module.ts +20 -0
  95. package/src/app/admin/services/filter/person.filter.ts +86 -0
  96. package/src/app/admin/services/person.service.ts +244 -0
  97. package/src/app/admin/services/validator/person.validator.ts +86 -0
  98. package/src/app/admin/users/users.html +613 -0
  99. package/src/app/admin/users/users.module.ts +32 -0
  100. package/src/app/admin/users/users.scss +80 -0
  101. package/src/app/admin/users/users.ts +387 -0
  102. package/src/app/app-routing.module.ts +165 -0
  103. package/src/app/app.component.html +14 -0
  104. package/src/app/app.component.scss +4 -0
  105. package/src/app/app.component.ts +252 -0
  106. package/src/app/app.module.ts +355 -0
  107. package/src/app/core/about/about.modal.html +145 -0
  108. package/src/app/core/about/about.modal.scss +22 -0
  109. package/src/app/core/about/about.modal.ts +69 -0
  110. package/src/app/core/about/about.module.ts +14 -0
  111. package/src/app/core/account/account.module.ts +43 -0
  112. package/src/app/core/account/account.page.html +329 -0
  113. package/src/app/core/account/account.page.scss +20 -0
  114. package/src/app/core/account/account.page.ts +389 -0
  115. package/src/app/core/account/new-token.form.html +90 -0
  116. package/src/app/core/account/new-token.form.ts +99 -0
  117. package/src/app/core/account/new-token.modal.html +52 -0
  118. package/src/app/core/account/new-token.modal.ts +68 -0
  119. package/src/app/core/account/password/change-password.form.html +62 -0
  120. package/src/app/core/account/password/change-password.form.scss +0 -0
  121. package/src/app/core/account/password/change-password.form.ts +58 -0
  122. package/src/app/core/account/password/change-password.module.ts +14 -0
  123. package/src/app/core/account/password/change-password.page.html +41 -0
  124. package/src/app/core/account/password/change-password.page.scss +49 -0
  125. package/src/app/core/account/password/change-password.page.ts +158 -0
  126. package/src/app/core/account/token.table.html +160 -0
  127. package/src/app/core/account/token.table.scss +7 -0
  128. package/src/app/core/account/token.table.ts +160 -0
  129. package/src/app/core/auth/auth.form.html +108 -0
  130. package/src/app/core/auth/auth.form.scss +0 -0
  131. package/src/app/core/auth/auth.form.ts +165 -0
  132. package/src/app/core/auth/auth.modal.html +50 -0
  133. package/src/app/core/auth/auth.modal.scss +0 -0
  134. package/src/app/core/auth/auth.modal.ts +78 -0
  135. package/src/app/core/auth/auth.module.ts +35 -0
  136. package/src/app/core/auth/reset-password.modal.html +59 -0
  137. package/src/app/core/auth/reset-password.modal.ts +83 -0
  138. package/src/app/core/core.module.ts +72 -0
  139. package/src/app/core/core.testing.module.ts +80 -0
  140. package/src/app/core/form/array/form-array.ts +409 -0
  141. package/src/app/core/form/array/testing/form-array-test.module.ts +15 -0
  142. package/src/app/core/form/array/testing/form-array.test.html +196 -0
  143. package/src/app/core/form/array/testing/form-array.test.ts +119 -0
  144. package/src/app/core/form/buttons/form-buttons-bar.component.html +82 -0
  145. package/src/app/core/form/buttons/form-buttons-bar.component.scss +19 -0
  146. package/src/app/core/form/buttons/form-buttons-bar.component.ts +89 -0
  147. package/src/app/core/form/buttons/form-buttons-bar.module.ts +20 -0
  148. package/src/app/core/form/entity/editor.class.ts +295 -0
  149. package/src/app/core/form/entity/entity-editor-modal.class.ts +494 -0
  150. package/src/app/core/form/entity/entity-editor.class.ts +894 -0
  151. package/src/app/core/form/entity/entity-metadata.component.html +57 -0
  152. package/src/app/core/form/entity/entity-metadata.component.scss +40 -0
  153. package/src/app/core/form/entity/entity-metadata.component.ts +18 -0
  154. package/src/app/core/form/entity/entity.module.ts +20 -0
  155. package/src/app/core/form/entity/tab-editor.class.ts +224 -0
  156. package/src/app/core/form/form-container.class.ts +380 -0
  157. package/src/app/core/form/form.class.ts +377 -0
  158. package/src/app/core/form/form.module.ts +38 -0
  159. package/src/app/core/form/form.utils.ts +305 -0
  160. package/src/app/core/form/list/list.form.html +68 -0
  161. package/src/app/core/form/list/list.form.scss +40 -0
  162. package/src/app/core/form/list/list.form.ts +266 -0
  163. package/src/app/core/form/list/list.module.ts +20 -0
  164. package/src/app/core/form/properties/properties.form.html +160 -0
  165. package/src/app/core/form/properties/properties.form.scss +21 -0
  166. package/src/app/core/form/properties/properties.form.ts +331 -0
  167. package/src/app/core/form/properties/properties.module.ts +24 -0
  168. package/src/app/core/form/properties/properties.table.html +228 -0
  169. package/src/app/core/form/properties/properties.table.scss +0 -0
  170. package/src/app/core/form/properties/properties.table.ts +275 -0
  171. package/src/app/core/form/properties/properties.utils.ts +391 -0
  172. package/src/app/core/form/properties/property.validator.ts +82 -0
  173. package/src/app/core/form/properties/testing/properties-form.test.html +23 -0
  174. package/src/app/core/form/properties/testing/properties-form.test.ts +109 -0
  175. package/src/app/core/form/properties/testing/properties-form.testing.module.ts +14 -0
  176. package/src/app/core/form/text-popover/testing/text-popover.testing.html +50 -0
  177. package/src/app/core/form/text-popover/testing/text-popover.testing.module.ts +21 -0
  178. package/src/app/core/form/text-popover/testing/text-popover.testing.ts +76 -0
  179. package/src/app/core/form/text-popover/text-popover.component.html +89 -0
  180. package/src/app/core/form/text-popover/text-popover.component.scss +7 -0
  181. package/src/app/core/form/text-popover/text-popover.component.ts +176 -0
  182. package/src/app/core/form/text-popover/text-popover.module.ts +19 -0
  183. package/src/app/core/form/username/username.form.html +27 -0
  184. package/src/app/core/form/username/username.form.ts +44 -0
  185. package/src/app/core/form/username/username.module.ts +12 -0
  186. package/src/app/core/graphql/graphql.module.ts +7 -0
  187. package/src/app/core/graphql/graphql.service.ts +962 -0
  188. package/src/app/core/graphql/graphql.utils.ts +166 -0
  189. package/src/app/core/home/home.html +295 -0
  190. package/src/app/core/home/home.module.ts +27 -0
  191. package/src/app/core/home/home.scss +279 -0
  192. package/src/app/core/home/home.ts +422 -0
  193. package/src/app/core/icon/icon.component.html +19 -0
  194. package/src/app/core/icon/icon.component.ts +22 -0
  195. package/src/app/core/icon/icon.module.ts +13 -0
  196. package/src/app/core/install/install-upgrade-card.component.html +144 -0
  197. package/src/app/core/install/install-upgrade-card.component.scss +3 -0
  198. package/src/app/core/install/install-upgrade-card.component.ts +445 -0
  199. package/src/app/core/install/install-upgrade-card.module.ts +18 -0
  200. package/src/app/core/menu/menu.component.html +219 -0
  201. package/src/app/core/menu/menu.component.scss +304 -0
  202. package/src/app/core/menu/menu.component.ts +251 -0
  203. package/src/app/core/menu/menu.filter.ts +28 -0
  204. package/src/app/core/menu/menu.model.ts +356 -0
  205. package/src/app/core/menu/menu.module.ts +27 -0
  206. package/src/app/core/menu/menu.service.ts +727 -0
  207. package/src/app/core/menu/sub-menu-tab.directive.ts +99 -0
  208. package/src/app/core/menu/testing/menu-other.testing.ts +57 -0
  209. package/src/app/core/menu/testing/menu.testing.html +143 -0
  210. package/src/app/core/menu/testing/menu.testing.module.ts +52 -0
  211. package/src/app/core/menu/testing/menu.testing.scss +5 -0
  212. package/src/app/core/menu/testing/menu.testing.ts +175 -0
  213. package/src/app/core/offline/update-offline-mode-card.component.html +39 -0
  214. package/src/app/core/offline/update-offline-mode-card.component.scss +3 -0
  215. package/src/app/core/offline/update-offline-mode-card.component.ts +23 -0
  216. package/src/app/core/offline/update-offline-mode-card.module.ts +20 -0
  217. package/src/app/core/peer/select-peer.modal.html +317 -0
  218. package/src/app/core/peer/select-peer.modal.scss +41 -0
  219. package/src/app/core/peer/select-peer.modal.ts +366 -0
  220. package/src/app/core/peer/select-peer.module.ts +23 -0
  221. package/src/app/core/register/register-confirm.page.html +51 -0
  222. package/src/app/core/register/register-confirm.page.scss +56 -0
  223. package/src/app/core/register/register-confirm.page.ts +90 -0
  224. package/src/app/core/register/register.form.html +143 -0
  225. package/src/app/core/register/register.form.scss +10 -0
  226. package/src/app/core/register/register.form.ts +218 -0
  227. package/src/app/core/register/register.modal.html +66 -0
  228. package/src/app/core/register/register.modal.ts +50 -0
  229. package/src/app/core/register/register.module.ts +15 -0
  230. package/src/app/core/services/account.service.ts +1567 -0
  231. package/src/app/core/services/auth-guard.service.ts +70 -0
  232. package/src/app/core/services/base-entity-service.class.ts +659 -0
  233. package/src/app/core/services/base-graphql-service.class.ts +319 -0
  234. package/src/app/core/services/base58.ts +90 -0
  235. package/src/app/core/services/config/core.config.ts +263 -0
  236. package/src/app/core/services/config.service.ts +425 -0
  237. package/src/app/core/services/crypto.service.ts +126 -0
  238. package/src/app/core/services/errors.ts +80 -0
  239. package/src/app/core/services/local-settings.service.spec.ts +39 -0
  240. package/src/app/core/services/local-settings.service.ts +605 -0
  241. package/src/app/core/services/model/account.model.ts +188 -0
  242. package/src/app/core/services/model/config.model.ts +116 -0
  243. package/src/app/core/services/model/department.model.ts +34 -0
  244. package/src/app/core/services/model/entity.decorators.ts +110 -0
  245. package/src/app/core/services/model/entity.model.ts +409 -0
  246. package/src/app/core/services/model/filter.model.ts +127 -0
  247. package/src/app/core/services/model/history.model.ts +25 -0
  248. package/src/app/core/services/model/model.enum.ts +10 -0
  249. package/src/app/core/services/model/node-feature.model.ts +31 -0
  250. package/src/app/core/services/model/peer.model.ts +119 -0
  251. package/src/app/core/services/model/person.model.ts +122 -0
  252. package/src/app/core/services/model/referential.model.ts +253 -0
  253. package/src/app/core/services/model/settings.model.ts +37 -0
  254. package/src/app/core/services/model/token.model.ts +60 -0
  255. package/src/app/core/services/model/tree-item-entity.model.ts +230 -0
  256. package/src/app/core/services/network.service.spec.ts +47 -0
  257. package/src/app/core/services/network.service.ts +761 -0
  258. package/src/app/core/services/network.types.ts +7 -0
  259. package/src/app/core/services/network.utils.ts +83 -0
  260. package/src/app/core/services/pipes/account.pipes.ts +22 -0
  261. package/src/app/core/services/pipes/department-to-string.pipe.ts +13 -0
  262. package/src/app/core/services/pipes/person-to-string.pipe.ts +13 -0
  263. package/src/app/core/services/pipes/pipes.module.ts +30 -0
  264. package/src/app/core/services/pipes/referential-to-string.pipe.ts +18 -0
  265. package/src/app/core/services/pipes/usage-mode.pipes.ts +23 -0
  266. package/src/app/core/services/platform.service.spec.ts +50 -0
  267. package/src/app/core/services/platform.service.ts +694 -0
  268. package/src/app/core/services/storage/entities-storage.service.ts +557 -0
  269. package/src/app/core/services/storage/entity-store.class.ts +589 -0
  270. package/src/app/core/services/testing/local-settings.config.ts +35 -0
  271. package/src/app/core/services/testing/referential-filter.model.ts +28 -0
  272. package/src/app/core/services/testing/referential.validator.ts +58 -0
  273. package/src/app/core/services/testing/user-settings.config.ts +77 -0
  274. package/src/app/core/services/validator/account.validator.ts +50 -0
  275. package/src/app/core/services/validator/base.validator.class.ts +51 -0
  276. package/src/app/core/services/validator/local-settings.validator.ts +59 -0
  277. package/src/app/core/services/validator/user-settings.validator.ts +22 -0
  278. package/src/app/core/services/validator/user-token.validator.ts +54 -0
  279. package/src/app/core/settings/settings.module.ts +15 -0
  280. package/src/app/core/settings/settings.page.html +300 -0
  281. package/src/app/core/settings/settings.page.ts +455 -0
  282. package/src/app/core/table/async-table.class.ts +2019 -0
  283. package/src/app/core/table/column/actions-column.component.html +219 -0
  284. package/src/app/core/table/column/actions-column.component.scss +17 -0
  285. package/src/app/core/table/column/actions-column.component.ts +83 -0
  286. package/src/app/core/table/column/nav-actions-column.component.html +119 -0
  287. package/src/app/core/table/column/nav-actions-column.component.ts +108 -0
  288. package/src/app/core/table/column/row-field.component.html +43 -0
  289. package/src/app/core/table/column/row-field.component.scss +0 -0
  290. package/src/app/core/table/column/row-field.component.ts +63 -0
  291. package/src/app/core/table/entities-async-table-datasource.class.ts +501 -0
  292. package/src/app/core/table/entities-table-datasource.class.ts +499 -0
  293. package/src/app/core/table/memory-table.class.ts +56 -0
  294. package/src/app/core/table/table-select-columns.component.html +56 -0
  295. package/src/app/core/table/table-select-columns.component.ts +49 -0
  296. package/src/app/core/table/table.class.ts +2080 -0
  297. package/src/app/core/table/table.model.ts +39 -0
  298. package/src/app/core/table/table.module.ts +28 -0
  299. package/src/app/core/table/table.pipes.ts +87 -0
  300. package/src/app/core/table/table.utils.ts +42 -0
  301. package/src/app/core/table/testing/multi-table.testing.html +456 -0
  302. package/src/app/core/table/testing/multi-table.testing.ts +263 -0
  303. package/src/app/core/table/testing/table-validator.service.ts +29 -0
  304. package/src/app/core/table/testing/table.testing.html +556 -0
  305. package/src/app/core/table/testing/table.testing.module.ts +16 -0
  306. package/src/app/core/table/testing/table.testing.scss +32 -0
  307. package/src/app/core/table/testing/table.testing.ts +329 -0
  308. package/src/app/core/table/testing/table2-validator.service.ts +19 -0
  309. package/src/app/core/table/testing/table2.testing.html +470 -0
  310. package/src/app/core/table/testing/table2.testing.scss +25 -0
  311. package/src/app/core/table/testing/table2.testing.ts +274 -0
  312. package/src/app/shared/alerts.ts +296 -0
  313. package/src/app/shared/audio/audio.testing.html +29 -0
  314. package/src/app/shared/audio/audio.testing.module.ts +21 -0
  315. package/src/app/shared/audio/audio.testing.ts +27 -0
  316. package/src/app/shared/audio/audio.ts +273 -0
  317. package/src/app/shared/base64.utils.ts +66 -0
  318. package/src/app/shared/capacitor/keyboard.ts +38 -0
  319. package/src/app/shared/capacitor/plugins.ts +12 -0
  320. package/src/app/shared/constants.ts +19 -0
  321. package/src/app/shared/dates.ts +206 -0
  322. package/src/app/shared/debug/debug-service.class.ts +7 -0
  323. package/src/app/shared/debug/debug.component.html +13 -0
  324. package/src/app/shared/debug/debug.component.scss +21 -0
  325. package/src/app/shared/debug/debug.component.spec.ts +24 -0
  326. package/src/app/shared/debug/debug.component.ts +25 -0
  327. package/src/app/shared/debug/debug.module.ts +14 -0
  328. package/src/app/shared/directives/autofocus.directive.ts +93 -0
  329. package/src/app/shared/directives/autoresize.directive.ts +67 -0
  330. package/src/app/shared/directives/autotitle.directive.ts +17 -0
  331. package/src/app/shared/directives/directives.module.ts +16 -0
  332. package/src/app/shared/directives/drag-and-drop.directive.ts +46 -0
  333. package/src/app/shared/directives/ng-var.directive.ts +31 -0
  334. package/src/app/shared/directives/resizable/resizable.component.ts +48 -0
  335. package/src/app/shared/directives/resizable/resizable.directive.ts +43 -0
  336. package/src/app/shared/directives/resizable/resizable.module.ts +9 -0
  337. package/src/app/shared/directives/resizable/resizable.style.scss +37 -0
  338. package/src/app/shared/directives/resizable/resizable.template.html +6 -0
  339. package/src/app/shared/directives/throttled-click.directive.ts +36 -0
  340. package/src/app/shared/events.ts +93 -0
  341. package/src/app/shared/file/csv.utils.ts +123 -0
  342. package/src/app/shared/file/file.service.ts +129 -0
  343. package/src/app/shared/file/file.utils.ts +142 -0
  344. package/src/app/shared/file/images.utils.ts +214 -0
  345. package/src/app/shared/file/json.utils.ts +82 -0
  346. package/src/app/shared/file/uri.utils.ts +31 -0
  347. package/src/app/shared/file/url.utils.ts +163 -0
  348. package/src/app/shared/focusable.ts +8 -0
  349. package/src/app/shared/form/field.component.html +380 -0
  350. package/src/app/shared/form/field.component.scss +7 -0
  351. package/src/app/shared/form/field.component.ts +344 -0
  352. package/src/app/shared/form/field.model.ts +158 -0
  353. package/src/app/shared/form/loading-spinner.ts +16 -0
  354. package/src/app/shared/forms.ts +577 -0
  355. package/src/app/shared/functions.spec.ts +197 -0
  356. package/src/app/shared/functions.ts +694 -0
  357. package/src/app/shared/geolocation/geolocation.utils.ts +105 -0
  358. package/src/app/shared/gesture/gesture-config.ts +43 -0
  359. package/src/app/shared/gesture/hammer.utils.ts +14 -0
  360. package/src/app/shared/graph/colors.utils.ts +69 -0
  361. package/src/app/shared/graph/graph-colors.ts +270 -0
  362. package/src/app/shared/guard/component-dirty.guard.ts +67 -0
  363. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.html +11 -0
  364. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.scss +37 -0
  365. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.ts +14 -0
  366. package/src/app/shared/hotkeys/hotkeys.service.ts +165 -0
  367. package/src/app/shared/hotkeys/shared-hotkeys.module.ts +15 -0
  368. package/src/app/shared/http/http.utils.ts +95 -0
  369. package/src/app/shared/image/gallery/image-gallery.component.html +282 -0
  370. package/src/app/shared/image/gallery/image-gallery.component.scss +218 -0
  371. package/src/app/shared/image/gallery/image-gallery.component.ts +434 -0
  372. package/src/app/shared/image/gallery/image-gallery.module.ts +35 -0
  373. package/src/app/shared/image/gallery/testing/gallegry.model.testing.ts +23 -0
  374. package/src/app/shared/image/gallery/testing/gallery.service.testing.ts +99 -0
  375. package/src/app/shared/image/gallery/testing/gallery.testing.html +27 -0
  376. package/src/app/shared/image/gallery/testing/gallery.testing.module.ts +39 -0
  377. package/src/app/shared/image/gallery/testing/gallery.testing.ts +34 -0
  378. package/src/app/shared/image/image.model.ts +8 -0
  379. package/src/app/shared/image/image.module.ts +12 -0
  380. package/src/app/shared/image/image.service.ts +111 -0
  381. package/src/app/shared/image/image.testing.module.ts +16 -0
  382. package/src/app/shared/inputs.ts +330 -0
  383. package/src/app/shared/interceptors/progess.interceptor.ts +24 -0
  384. package/src/app/shared/logging/log-level.model.ts +53 -0
  385. package/src/app/shared/logging/logger.model.ts +117 -0
  386. package/src/app/shared/logging/logging-service.class.ts +131 -0
  387. package/src/app/shared/logging/logging-service.config.ts +29 -0
  388. package/src/app/shared/logging/logging-service.module.ts +19 -0
  389. package/src/app/shared/markdown/markdown.component.html +55 -0
  390. package/src/app/shared/markdown/markdown.component.scss +75 -0
  391. package/src/app/shared/markdown/markdown.component.ts +350 -0
  392. package/src/app/shared/markdown/markdown.directive.ts +28 -0
  393. package/src/app/shared/markdown/markdown.modal.html +42 -0
  394. package/src/app/shared/markdown/markdown.modal.ts +91 -0
  395. package/src/app/shared/markdown/markdown.module.ts +65 -0
  396. package/src/app/shared/markdown/markdown.service.ts +234 -0
  397. package/src/app/shared/markdown/markdown.utils.ts +90 -0
  398. package/src/app/shared/markdown/testing/markdown.test.html +50 -0
  399. package/src/app/shared/markdown/testing/markdown.test.ts +49 -0
  400. package/src/app/shared/markdown/testing/markdown.testing.module.ts +22 -0
  401. package/src/app/shared/material/autocomplete/material.autocomplete.config.ts +127 -0
  402. package/src/app/shared/material/autocomplete/material.autocomplete.html +400 -0
  403. package/src/app/shared/material/autocomplete/material.autocomplete.module.ts +41 -0
  404. package/src/app/shared/material/autocomplete/material.autocomplete.scss +54 -0
  405. package/src/app/shared/material/autocomplete/material.autocomplete.ts +1375 -0
  406. package/src/app/shared/material/autocomplete/material.autocomplete.utils.ts +21 -0
  407. package/src/app/shared/material/autocomplete/testing/autocomplete.test.html +1164 -0
  408. package/src/app/shared/material/autocomplete/testing/autocomplete.test.spec.ts +33 -0
  409. package/src/app/shared/material/autocomplete/testing/autocomplete.test.ts +272 -0
  410. package/src/app/shared/material/badge/badge.directive.ts +217 -0
  411. package/src/app/shared/material/badge/badge.module.ts +12 -0
  412. package/src/app/shared/material/badge/badge.test.html +275 -0
  413. package/src/app/shared/material/badge/badge.test.ts +34 -0
  414. package/src/app/shared/material/boolean/boolean.module.ts +36 -0
  415. package/src/app/shared/material/boolean/material.boolean.html +271 -0
  416. package/src/app/shared/material/boolean/material.boolean.scss +27 -0
  417. package/src/app/shared/material/boolean/material.boolean.ts +343 -0
  418. package/src/app/shared/material/boolean/testing/boolean.test.page.html +469 -0
  419. package/src/app/shared/material/boolean/testing/boolean.test.page.ts +66 -0
  420. package/src/app/shared/material/chips/chips.module.ts +38 -0
  421. package/src/app/shared/material/chips/material.chips.html +233 -0
  422. package/src/app/shared/material/chips/material.chips.scss +67 -0
  423. package/src/app/shared/material/chips/material.chips.ts +834 -0
  424. package/src/app/shared/material/chips/testing/chips.test.html +207 -0
  425. package/src/app/shared/material/chips/testing/chips.test.ts +169 -0
  426. package/src/app/shared/material/datetime/datetime.module.ts +42 -0
  427. package/src/app/shared/material/datetime/material.date.html +186 -0
  428. package/src/app/shared/material/datetime/material.date.scss +17 -0
  429. package/src/app/shared/material/datetime/material.date.ts +512 -0
  430. package/src/app/shared/material/datetime/material.dateshort.html +194 -0
  431. package/src/app/shared/material/datetime/material.dateshort.scss +23 -0
  432. package/src/app/shared/material/datetime/material.dateshort.ts +497 -0
  433. package/src/app/shared/material/datetime/material.datetime.html +325 -0
  434. package/src/app/shared/material/datetime/material.datetime.scss +87 -0
  435. package/src/app/shared/material/datetime/material.datetime.ts +758 -0
  436. package/src/app/shared/material/datetime/testing/mat-date-time.test.html +794 -0
  437. package/src/app/shared/material/datetime/testing/mat-date-time.test.ts +155 -0
  438. package/src/app/shared/material/datetime/testing/mat-date.test.html +564 -0
  439. package/src/app/shared/material/datetime/testing/mat-date.test.ts +145 -0
  440. package/src/app/shared/material/datetime/testing/mat-dateshort.test.html +530 -0
  441. package/src/app/shared/material/datetime/testing/mat-dateshort.test.ts +133 -0
  442. package/src/app/shared/material/duration/duration.module.ts +33 -0
  443. package/src/app/shared/material/duration/duration.utils.ts +18 -0
  444. package/src/app/shared/material/duration/material.duration.html +116 -0
  445. package/src/app/shared/material/duration/material.duration.scss +28 -0
  446. package/src/app/shared/material/duration/material.duration.ts +308 -0
  447. package/src/app/shared/material/duration/testing/mat-duration.test.html +170 -0
  448. package/src/app/shared/material/duration/testing/mat-duration.test.ts +88 -0
  449. package/src/app/shared/material/latlong/latlong.utils.ts +376 -0
  450. package/src/app/shared/material/latlong/material.latlong-input.html +95 -0
  451. package/src/app/shared/material/latlong/material.latlong-input.scss +66 -0
  452. package/src/app/shared/material/latlong/material.latlong-input.ts +445 -0
  453. package/src/app/shared/material/latlong/material.latlong.html +90 -0
  454. package/src/app/shared/material/latlong/material.latlong.module.ts +37 -0
  455. package/src/app/shared/material/latlong/material.latlong.scss +0 -0
  456. package/src/app/shared/material/latlong/material.latlong.ts +203 -0
  457. package/src/app/shared/material/latlong/testing/latlong.test.html +1008 -0
  458. package/src/app/shared/material/latlong/testing/latlong.test.ts +144 -0
  459. package/src/app/shared/material/material.animations.ts +269 -0
  460. package/src/app/shared/material/material.config.ts +5 -0
  461. package/src/app/shared/material/material.module.ts +94 -0
  462. package/src/app/shared/material/material.testing.module.ts +192 -0
  463. package/src/app/shared/material/memory/memory.utils.ts +57 -0
  464. package/src/app/shared/material/numpad/numpad.animation.ts +1 -0
  465. package/src/app/shared/material/numpad/numpad.append-to-input.directive.ts +110 -0
  466. package/src/app/shared/material/numpad/numpad.component.ts +73 -0
  467. package/src/app/shared/material/numpad/numpad.container.html +37 -0
  468. package/src/app/shared/material/numpad/numpad.container.scss +55 -0
  469. package/src/app/shared/material/numpad/numpad.container.ts +152 -0
  470. package/src/app/shared/material/numpad/numpad.content.html +13 -0
  471. package/src/app/shared/material/numpad/numpad.content.ts +10 -0
  472. package/src/app/shared/material/numpad/numpad.directive.ts +159 -0
  473. package/src/app/shared/material/numpad/numpad.dom-service.ts +35 -0
  474. package/src/app/shared/material/numpad/numpad.model.ts +53 -0
  475. package/src/app/shared/material/numpad/numpad.module.ts +18 -0
  476. package/src/app/shared/material/numpad/testing/numpad.test.html +146 -0
  477. package/src/app/shared/material/numpad/testing/numpad.test.ts +44 -0
  478. package/src/app/shared/material/paginator/material.paginator-i18n.ts +47 -0
  479. package/src/app/shared/material/stepper/material.stepper-i18n.ts +17 -0
  480. package/src/app/shared/material/swipe/material.swipe.html +85 -0
  481. package/src/app/shared/material/swipe/material.swipe.scss +55 -0
  482. package/src/app/shared/material/swipe/material.swipe.ts +366 -0
  483. package/src/app/shared/material/swipe/swipe.module.ts +29 -0
  484. package/src/app/shared/material/swipe/testing/swipe.test.html +112 -0
  485. package/src/app/shared/material/swipe/testing/swipe.test.ts +74 -0
  486. package/src/app/shared/material/test/test-component.css +22 -0
  487. package/src/app/shared/material/test/test-component.html +40 -0
  488. package/src/app/shared/material/test/test-component.ts +295 -0
  489. package/src/app/shared/material/testing/common.test.html +227 -0
  490. package/src/app/shared/material/testing/common.test.ts +126 -0
  491. package/src/app/shared/material/text/testing/text-form.testing.html +213 -0
  492. package/src/app/shared/material/text/testing/text-form.testing.ts +30 -0
  493. package/src/app/shared/material/text/text-form.component.html +63 -0
  494. package/src/app/shared/material/text/text-form.component.scss +8 -0
  495. package/src/app/shared/material/text/text-form.component.ts +177 -0
  496. package/src/app/shared/material/text/text-form.module.ts +36 -0
  497. package/src/app/shared/modules.ts +12 -0
  498. package/src/app/shared/named-filter/named-filter-selector.component.html +77 -0
  499. package/src/app/shared/named-filter/named-filter-selector.component.scss +3 -0
  500. package/src/app/shared/named-filter/named-filter-selector.component.ts +287 -0
  501. package/src/app/shared/named-filter/named-filter.model.ts +64 -0
  502. package/src/app/shared/named-filter/named-filter.module.ts +15 -0
  503. package/src/app/shared/named-filter/named-filter.service.ts +100 -0
  504. package/src/app/shared/named-filter/testing/named-filter-selector.testing.html +61 -0
  505. package/src/app/shared/named-filter/testing/named-filter-selector.testing.ts +80 -0
  506. package/src/app/shared/named-filter/testing/named-filter.testing.module.ts +20 -0
  507. package/src/app/shared/named-filter/testing/named-filter.testing.service.ts +83 -0
  508. package/src/app/shared/observables.ts +139 -0
  509. package/src/app/shared/pipes/arrays.pipe.ts +153 -0
  510. package/src/app/shared/pipes/badge.pipes.ts +17 -0
  511. package/src/app/shared/pipes/colors.pipe.ts +24 -0
  512. package/src/app/shared/pipes/date-diff-duration.pipe.ts +53 -0
  513. package/src/app/shared/pipes/date-format.pipe.ts +73 -0
  514. package/src/app/shared/pipes/date-from-now.pipe.ts +17 -0
  515. package/src/app/shared/pipes/dates.pipe.ts +13 -0
  516. package/src/app/shared/pipes/display-with.pipe.ts +13 -0
  517. package/src/app/shared/pipes/duration.pipe.spec.ts +41 -0
  518. package/src/app/shared/pipes/duration.pipe.ts +28 -0
  519. package/src/app/shared/pipes/file-size.pipe.ts +50 -0
  520. package/src/app/shared/pipes/form.pipes.ts +209 -0
  521. package/src/app/shared/pipes/highlight.pipe.ts +41 -0
  522. package/src/app/shared/pipes/html.pipes.ts +49 -0
  523. package/src/app/shared/pipes/latlong-format.pipe.ts +28 -0
  524. package/src/app/shared/pipes/maps.pipe.ts +41 -0
  525. package/src/app/shared/pipes/maskito.pipe.ts +68 -0
  526. package/src/app/shared/pipes/math.pipes.ts +46 -0
  527. package/src/app/shared/pipes/ng-init.pipe.ts +13 -0
  528. package/src/app/shared/pipes/number-format.pipe.ts +11 -0
  529. package/src/app/shared/pipes/observable.pipes.ts +45 -0
  530. package/src/app/shared/pipes/pipes.module.ts +162 -0
  531. package/src/app/shared/pipes/property.pipes.ts +115 -0
  532. package/src/app/shared/pipes/selection.pipes.ts +165 -0
  533. package/src/app/shared/pipes/string.pipes.ts +128 -0
  534. package/src/app/shared/pipes/translate-context.pipe.ts +27 -0
  535. package/src/app/shared/pipes/types.pipes.ts +52 -0
  536. package/src/app/shared/pipes/url.pipes.ts +36 -0
  537. package/src/app/shared/platforms.ts +99 -0
  538. package/src/app/shared/print/print.service.ts +337 -0
  539. package/src/app/shared/regexps.ts +112 -0
  540. package/src/app/shared/rx-state/rx-state.decorators.ts +281 -0
  541. package/src/app/shared/rx-state/rx-state.module.ts +11 -0
  542. package/src/app/shared/rx-state/rx-state.types.ts +5 -0
  543. package/src/app/shared/services/entity-service.class.ts +120 -0
  544. package/src/app/shared/services/job.utils.ts +124 -0
  545. package/src/app/shared/services/memory-entity-service.class.ts +435 -0
  546. package/src/app/shared/services/progress-bar.service.ts +40 -0
  547. package/src/app/shared/services/startable-observable-service.class.ts +129 -0
  548. package/src/app/shared/services/startable-service.class.ts +120 -0
  549. package/src/app/shared/services/storage.utils.ts +53 -0
  550. package/src/app/shared/services/translate-context.service.ts +112 -0
  551. package/src/app/shared/services/validator-service.class.ts +13 -0
  552. package/src/app/shared/services.ts +134 -0
  553. package/src/app/shared/shared-routing.module.ts +69 -0
  554. package/src/app/shared/shared.module.spec.ts +13 -0
  555. package/src/app/shared/shared.module.ts +168 -0
  556. package/src/app/shared/shared.testing.module.ts +61 -0
  557. package/src/app/shared/storage/storage-explorer.component.html +160 -0
  558. package/src/app/shared/storage/storage-explorer.component.scss +37 -0
  559. package/src/app/shared/storage/storage-explorer.component.spec.ts +24 -0
  560. package/src/app/shared/storage/storage-explorer.component.ts +268 -0
  561. package/src/app/shared/storage/storage-explorer.module.ts +24 -0
  562. package/src/app/shared/storage/storage-explorer.testing-routing.module.ts +19 -0
  563. package/src/app/shared/storage/storage-explorer.testing.module.ts +19 -0
  564. package/src/app/shared/storage/storage.service.ts +131 -0
  565. package/src/app/shared/storage/storage.utils.ts +25 -0
  566. package/src/app/shared/testing/maskito.test.html +40 -0
  567. package/src/app/shared/testing/maskito.test.ts +33 -0
  568. package/src/app/shared/testing/observable.test.html +53 -0
  569. package/src/app/shared/testing/observable.test.scss +3 -0
  570. package/src/app/shared/testing/observable.test.ts +101 -0
  571. package/src/app/shared/testing/tests.page.html +22 -0
  572. package/src/app/shared/testing/tests.page.ts +32 -0
  573. package/src/app/shared/toast/toast.testing.html +50 -0
  574. package/src/app/shared/toast/toast.testing.module.ts +22 -0
  575. package/src/app/shared/toast/toast.testing.ts +52 -0
  576. package/src/app/shared/toast/toasts.ts +161 -0
  577. package/src/app/shared/toolbar/modal-toolbar.html +30 -0
  578. package/src/app/shared/toolbar/modal-toolbar.scss +0 -0
  579. package/src/app/shared/toolbar/modal-toolbar.ts +64 -0
  580. package/src/app/shared/toolbar/toolbar.html +68 -0
  581. package/src/app/shared/toolbar/toolbar.module.ts +18 -0
  582. package/src/app/shared/toolbar/toolbar.scss +0 -0
  583. package/src/app/shared/toolbar/toolbar.ts +262 -0
  584. package/src/app/shared/types.ts +44 -0
  585. package/src/app/shared/upload-file/testing/upload-file.testing.html +30 -0
  586. package/src/app/shared/upload-file/testing/upload-file.testing.module.ts +21 -0
  587. package/src/app/shared/upload-file/testing/upload-file.testing.ts +65 -0
  588. package/src/app/shared/upload-file/upload-file-popover.component.html +46 -0
  589. package/src/app/shared/upload-file/upload-file-popover.component.scss +6 -0
  590. package/src/app/shared/upload-file/upload-file-popover.component.ts +115 -0
  591. package/src/app/shared/upload-file/upload-file.component.html +57 -0
  592. package/src/app/shared/upload-file/upload-file.component.scss +60 -0
  593. package/src/app/shared/upload-file/upload-file.component.ts +222 -0
  594. package/src/app/shared/upload-file/upload-file.model.ts +40 -0
  595. package/src/app/shared/validator/form-error-adapter.class.ts +136 -0
  596. package/src/app/shared/validator/validators.ts +725 -0
  597. package/src/app/shared/version/versions.ts +89 -0
  598. package/src/app/social/job/job.module.ts +14 -0
  599. package/src/app/social/job/progression/job-progression.component.html +19 -0
  600. package/src/app/social/job/progression/job-progression.component.scss +15 -0
  601. package/src/app/social/job/progression/job-progression.component.ts +39 -0
  602. package/src/app/social/job/progression/job-progression.icon.html +30 -0
  603. package/src/app/social/job/progression/job-progression.icon.scss +7 -0
  604. package/src/app/social/job/progression/job-progression.icon.ts +276 -0
  605. package/src/app/social/job/progression/job-progression.list.html +25 -0
  606. package/src/app/social/job/progression/job-progression.list.scss +17 -0
  607. package/src/app/social/job/progression/job-progression.list.ts +40 -0
  608. package/src/app/social/job/progression/job-progression.model.ts +26 -0
  609. package/src/app/social/job/progression/job-progression.service.ts +97 -0
  610. package/src/app/social/job/testing/job-progression.testing.html +11 -0
  611. package/src/app/social/job/testing/job-progression.testing.service.ts +33 -0
  612. package/src/app/social/job/testing/job-progression.testing.ts +28 -0
  613. package/src/app/social/job/testing/job.testing.module.ts +13 -0
  614. package/src/app/social/message/message.form.html +71 -0
  615. package/src/app/social/message/message.form.scss +6 -0
  616. package/src/app/social/message/message.form.ts +128 -0
  617. package/src/app/social/message/message.modal.html +68 -0
  618. package/src/app/social/message/message.modal.ts +117 -0
  619. package/src/app/social/message/message.model.ts +78 -0
  620. package/src/app/social/message/message.module.ts +14 -0
  621. package/src/app/social/message/message.service.ts +104 -0
  622. package/src/app/social/social.errors.ts +10 -0
  623. package/src/app/social/social.module.ts +23 -0
  624. package/src/app/social/social.testing.module.ts +33 -0
  625. package/src/app/social/user-event/notification/user-event-notification.icon.html +17 -0
  626. package/src/app/social/user-event/notification/user-event-notification.icon.ts +112 -0
  627. package/src/app/social/user-event/notification/user-event-notification.list.html +142 -0
  628. package/src/app/social/user-event/notification/user-event-notification.list.scss +73 -0
  629. package/src/app/social/user-event/notification/user-event-notification.list.ts +270 -0
  630. package/src/app/social/user-event/testing/user-event.testing.html +26 -0
  631. package/src/app/social/user-event/testing/user-event.testing.model.ts +142 -0
  632. package/src/app/social/user-event/testing/user-event.testing.module.ts +13 -0
  633. package/src/app/social/user-event/testing/user-event.testing.service.ts +161 -0
  634. package/src/app/social/user-event/testing/user-event.testing.ts +282 -0
  635. package/src/app/social/user-event/user-event.model.ts +55 -0
  636. package/src/app/social/user-event/user-event.module.ts +15 -0
  637. package/src/app/social/user-event/user-event.service.ts +686 -0
  638. package/src/assets/manifest.json +1 -1
  639. package/src/browserslist +9 -0
  640. package/src/environments/environment.class.ts +106 -0
  641. package/src/environments/environment.loader.ts +90 -0
  642. package/src/environments/environment.prod.ts +49 -0
  643. package/src/environments/environment.test.ts +92 -0
  644. package/src/environments/environment.ts +126 -0
  645. package/src/favicon.ico +0 -0
  646. package/src/global.scss +13 -0
  647. package/src/index.html +76 -0
  648. package/src/main.ts +18 -0
  649. package/src/polyfills.ts +34 -0
  650. package/src/schema.graphql +4381 -0
  651. package/src/service-worker.js +31 -0
  652. package/src/test.ts +30 -0
  653. package/tsconfig.app.json +15 -0
  654. package/tsconfig.json +47 -0
  655. package/tsconfig.spec.json +18 -0
  656. package/esm2022/public_api.mjs +0 -380
  657. package/esm2022/src/app/admin/admin-routing.module.mjs +0 -34
  658. package/esm2022/src/app/admin/admin.module.mjs +0 -32
  659. package/esm2022/src/app/admin/services/filter/person.filter.mjs +0 -76
  660. package/esm2022/src/app/admin/services/person.service.mjs +0 -184
  661. package/esm2022/src/app/admin/services/validator/person.validator.mjs +0 -72
  662. package/esm2022/src/app/admin/users/users.mjs +0 -379
  663. package/esm2022/src/app/admin/users/users.module.mjs +0 -56
  664. package/esm2022/src/app/core/about/about.modal.mjs +0 -86
  665. package/esm2022/src/app/core/about/about.module.mjs +0 -22
  666. package/esm2022/src/app/core/account/account.module.mjs +0 -75
  667. package/esm2022/src/app/core/account/account.page.mjs +0 -364
  668. package/esm2022/src/app/core/account/new-token.form.mjs +0 -106
  669. package/esm2022/src/app/core/account/new-token.modal.mjs +0 -66
  670. package/esm2022/src/app/core/account/password/change-password.form.mjs +0 -63
  671. package/esm2022/src/app/core/account/password/change-password.module.mjs +0 -22
  672. package/esm2022/src/app/core/account/password/change-password.page.mjs +0 -150
  673. package/esm2022/src/app/core/account/token.table.mjs +0 -157
  674. package/esm2022/src/app/core/auth/auth.form.mjs +0 -159
  675. package/esm2022/src/app/core/auth/auth.modal.mjs +0 -76
  676. package/esm2022/src/app/core/auth/auth.module.mjs +0 -56
  677. package/esm2022/src/app/core/auth/reset-password.modal.mjs +0 -89
  678. package/esm2022/src/app/core/core.module.mjs +0 -151
  679. package/esm2022/src/app/core/core.testing.module.mjs +0 -107
  680. package/esm2022/src/app/core/form/array/form-array.mjs +0 -328
  681. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +0 -23
  682. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +0 -94
  683. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -108
  684. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +0 -31
  685. package/esm2022/src/app/core/form/entity/editor.class.mjs +0 -268
  686. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -420
  687. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +0 -741
  688. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +0 -24
  689. package/esm2022/src/app/core/form/entity/entity.module.mjs +0 -32
  690. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +0 -190
  691. package/esm2022/src/app/core/form/form-container.class.mjs +0 -340
  692. package/esm2022/src/app/core/form/form.class.mjs +0 -337
  693. package/esm2022/src/app/core/form/form.module.mjs +0 -70
  694. package/esm2022/src/app/core/form/form.utils.mjs +0 -205
  695. package/esm2022/src/app/core/form/list/list.form.mjs +0 -235
  696. package/esm2022/src/app/core/form/list/list.module.mjs +0 -31
  697. package/esm2022/src/app/core/form/properties/properties.form.mjs +0 -317
  698. package/esm2022/src/app/core/form/properties/properties.module.mjs +0 -37
  699. package/esm2022/src/app/core/form/properties/properties.table.mjs +0 -264
  700. package/esm2022/src/app/core/form/properties/properties.utils.mjs +0 -304
  701. package/esm2022/src/app/core/form/properties/property.validator.mjs +0 -70
  702. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +0 -104
  703. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +0 -23
  704. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -73
  705. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +0 -30
  706. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +0 -161
  707. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +0 -31
  708. package/esm2022/src/app/core/form/username/username.form.mjs +0 -55
  709. package/esm2022/src/app/core/form/username/username.module.mjs +0 -20
  710. package/esm2022/src/app/core/graphql/graphql.module.mjs +0 -14
  711. package/esm2022/src/app/core/graphql/graphql.service.mjs +0 -781
  712. package/esm2022/src/app/core/graphql/graphql.utils.mjs +0 -119
  713. package/esm2022/src/app/core/home/home.mjs +0 -382
  714. package/esm2022/src/app/core/home/home.module.mjs +0 -46
  715. package/esm2022/src/app/core/icon/icon.component.mjs +0 -40
  716. package/esm2022/src/app/core/icon/icon.module.mjs +0 -20
  717. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +0 -394
  718. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +0 -31
  719. package/esm2022/src/app/core/menu/menu.component.mjs +0 -258
  720. package/esm2022/src/app/core/menu/menu.model.mjs +0 -272
  721. package/esm2022/src/app/core/menu/menu.module.mjs +0 -47
  722. package/esm2022/src/app/core/menu/menu.service.mjs +0 -666
  723. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +0 -109
  724. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +0 -50
  725. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +0 -158
  726. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +0 -60
  727. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +0 -28
  728. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +0 -31
  729. package/esm2022/src/app/core/peer/select-peer.modal.mjs +0 -344
  730. package/esm2022/src/app/core/peer/select-peer.module.mjs +0 -36
  731. package/esm2022/src/app/core/register/register-confirm.page.mjs +0 -90
  732. package/esm2022/src/app/core/register/register.form.mjs +0 -194
  733. package/esm2022/src/app/core/register/register.modal.mjs +0 -55
  734. package/esm2022/src/app/core/register/register.module.mjs +0 -23
  735. package/esm2022/src/app/core/services/account.service.mjs +0 -1358
  736. package/esm2022/src/app/core/services/auth-guard.service.mjs +0 -74
  737. package/esm2022/src/app/core/services/base-entity-service.class.mjs +0 -485
  738. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +0 -230
  739. package/esm2022/src/app/core/services/base58.mjs +0 -83
  740. package/esm2022/src/app/core/services/config/core.config.mjs +0 -258
  741. package/esm2022/src/app/core/services/config.service.mjs +0 -384
  742. package/esm2022/src/app/core/services/crypto.service.mjs +0 -107
  743. package/esm2022/src/app/core/services/errors.mjs +0 -54
  744. package/esm2022/src/app/core/services/local-settings.service.mjs +0 -516
  745. package/esm2022/src/app/core/services/model/account.model.mjs +0 -178
  746. package/esm2022/src/app/core/services/model/config.model.mjs +0 -107
  747. package/esm2022/src/app/core/services/model/department.model.mjs +0 -35
  748. package/esm2022/src/app/core/services/model/entity.decorators.mjs +0 -97
  749. package/esm2022/src/app/core/services/model/entity.model.mjs +0 -274
  750. package/esm2022/src/app/core/services/model/filter.model.mjs +0 -93
  751. package/esm2022/src/app/core/services/model/history.model.mjs +0 -2
  752. package/esm2022/src/app/core/services/model/model.enum.mjs +0 -11
  753. package/esm2022/src/app/core/services/model/node-feature.model.mjs +0 -31
  754. package/esm2022/src/app/core/services/model/peer.model.mjs +0 -113
  755. package/esm2022/src/app/core/services/model/person.model.mjs +0 -114
  756. package/esm2022/src/app/core/services/model/referential.model.mjs +0 -205
  757. package/esm2022/src/app/core/services/model/settings.model.mjs +0 -6
  758. package/esm2022/src/app/core/services/model/token.model.mjs +0 -57
  759. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +0 -195
  760. package/esm2022/src/app/core/services/network.service.mjs +0 -638
  761. package/esm2022/src/app/core/services/network.types.mjs +0 -2
  762. package/esm2022/src/app/core/services/network.utils.mjs +0 -35
  763. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +0 -38
  764. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +0 -23
  765. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +0 -23
  766. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +0 -54
  767. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +0 -21
  768. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +0 -37
  769. package/esm2022/src/app/core/services/platform.service.mjs +0 -627
  770. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +0 -427
  771. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +0 -450
  772. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +0 -25
  773. package/esm2022/src/app/core/services/testing/referential.validator.mjs +0 -46
  774. package/esm2022/src/app/core/services/validator/account.validator.mjs +0 -45
  775. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +0 -49
  776. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +0 -57
  777. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +0 -27
  778. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +0 -55
  779. package/esm2022/src/app/core/settings/settings.module.mjs +0 -23
  780. package/esm2022/src/app/core/settings/settings.page.mjs +0 -403
  781. package/esm2022/src/app/core/table/async-table.class.mjs +0 -1811
  782. package/esm2022/src/app/core/table/column/actions-column.component.mjs +0 -130
  783. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +0 -117
  784. package/esm2022/src/app/core/table/column/row-field.component.mjs +0 -116
  785. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +0 -404
  786. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +0 -405
  787. package/esm2022/src/app/core/table/memory-table.class.mjs +0 -57
  788. package/esm2022/src/app/core/table/table-select-columns.component.mjs +0 -46
  789. package/esm2022/src/app/core/table/table.class.mjs +0 -1867
  790. package/esm2022/src/app/core/table/table.model.mjs +0 -21
  791. package/esm2022/src/app/core/table/table.module.mjs +0 -51
  792. package/esm2022/src/app/core/table/table.pipes.mjs +0 -77
  793. package/esm2022/src/app/core/table/table.utils.mjs +0 -34
  794. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +0 -32
  795. package/esm2022/src/app/core/table/testing/table.testing.mjs +0 -329
  796. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +0 -25
  797. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +0 -25
  798. package/esm2022/src/app/core/table/testing/table2.testing.mjs +0 -273
  799. package/esm2022/src/app/shared/alerts.mjs +0 -243
  800. package/esm2022/src/app/shared/audio/audio.mjs +0 -255
  801. package/esm2022/src/app/shared/audio/audio.testing.mjs +0 -32
  802. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +0 -30
  803. package/esm2022/src/app/shared/capacitor/keyboard.mjs +0 -42
  804. package/esm2022/src/app/shared/capacitor/plugins.mjs +0 -9
  805. package/esm2022/src/app/shared/constants.mjs +0 -16
  806. package/esm2022/src/app/shared/dates.mjs +0 -180
  807. package/esm2022/src/app/shared/debug/debug-service.class.mjs +0 -3
  808. package/esm2022/src/app/shared/debug/debug.component.mjs +0 -44
  809. package/esm2022/src/app/shared/debug/debug.module.mjs +0 -23
  810. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +0 -91
  811. package/esm2022/src/app/shared/directives/autoresize.directive.mjs +0 -75
  812. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +0 -30
  813. package/esm2022/src/app/shared/directives/directives.module.mjs +0 -24
  814. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +0 -52
  815. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +0 -33
  816. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +0 -62
  817. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +0 -45
  818. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +0 -17
  819. package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +0 -43
  820. package/esm2022/src/app/shared/events.mjs +0 -64
  821. package/esm2022/src/app/shared/file/csv.utils.mjs +0 -97
  822. package/esm2022/src/app/shared/file/file.service.mjs +0 -118
  823. package/esm2022/src/app/shared/file/file.utils.mjs +0 -117
  824. package/esm2022/src/app/shared/file/images.utils.mjs +0 -186
  825. package/esm2022/src/app/shared/file/json.utils.mjs +0 -58
  826. package/esm2022/src/app/shared/file/uri.utils.mjs +0 -29
  827. package/esm2022/src/app/shared/file/url.utils.mjs +0 -164
  828. package/esm2022/src/app/shared/focusable.mjs +0 -6
  829. package/esm2022/src/app/shared/form/field.component.mjs +0 -393
  830. package/esm2022/src/app/shared/form/field.model.mjs +0 -82
  831. package/esm2022/src/app/shared/form/loading-spinner.mjs +0 -35
  832. package/esm2022/src/app/shared/forms.mjs +0 -510
  833. package/esm2022/src/app/shared/functions.mjs +0 -672
  834. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +0 -86
  835. package/esm2022/src/app/shared/gesture/gesture-config.mjs +0 -46
  836. package/esm2022/src/app/shared/gesture/hammer.utils.mjs +0 -2
  837. package/esm2022/src/app/shared/graph/colors.utils.mjs +0 -60
  838. package/esm2022/src/app/shared/graph/graph-colors.mjs +0 -214
  839. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +0 -65
  840. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
  841. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +0 -147
  842. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +0 -24
  843. package/esm2022/src/app/shared/http/http.utils.mjs +0 -56
  844. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +0 -443
  845. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +0 -62
  846. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -26
  847. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -87
  848. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -37
  849. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +0 -59
  850. package/esm2022/src/app/shared/image/image.model.mjs +0 -2
  851. package/esm2022/src/app/shared/image/image.module.mjs +0 -24
  852. package/esm2022/src/app/shared/image/image.service.mjs +0 -109
  853. package/esm2022/src/app/shared/inputs.mjs +0 -275
  854. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
  855. package/esm2022/src/app/shared/logging/log-level.model.mjs +0 -48
  856. package/esm2022/src/app/shared/logging/logger.model.mjs +0 -47
  857. package/esm2022/src/app/shared/logging/logging-service.class.mjs +0 -125
  858. package/esm2022/src/app/shared/logging/logging-service.config.mjs +0 -2
  859. package/esm2022/src/app/shared/logging/logging-service.module.mjs +0 -30
  860. package/esm2022/src/app/shared/markdown/markdown.component.mjs +0 -321
  861. package/esm2022/src/app/shared/markdown/markdown.directive.mjs +0 -34
  862. package/esm2022/src/app/shared/markdown/markdown.modal.mjs +0 -99
  863. package/esm2022/src/app/shared/markdown/markdown.module.mjs +0 -87
  864. package/esm2022/src/app/shared/markdown/markdown.service.mjs +0 -204
  865. package/esm2022/src/app/shared/markdown/markdown.utils.mjs +0 -87
  866. package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +0 -55
  867. package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +0 -30
  868. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -46
  869. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -1313
  870. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -79
  871. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -18
  872. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -242
  873. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +0 -251
  874. package/esm2022/src/app/shared/material/badge/badge.module.mjs +0 -20
  875. package/esm2022/src/app/shared/material/badge/badge.test.mjs +0 -42
  876. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +0 -67
  877. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +0 -371
  878. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +0 -72
  879. package/esm2022/src/app/shared/material/chips/chips.module.mjs +0 -71
  880. package/esm2022/src/app/shared/material/chips/material.chips.mjs +0 -836
  881. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +0 -151
  882. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +0 -76
  883. package/esm2022/src/app/shared/material/datetime/material.date.mjs +0 -471
  884. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +0 -457
  885. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +0 -693
  886. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -136
  887. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -127
  888. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -118
  889. package/esm2022/src/app/shared/material/duration/duration.module.mjs +0 -61
  890. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +0 -16
  891. package/esm2022/src/app/shared/material/duration/material.duration.mjs +0 -283
  892. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +0 -85
  893. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +0 -319
  894. package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +0 -432
  895. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +0 -231
  896. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +0 -68
  897. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -137
  898. package/esm2022/src/app/shared/material/material.animations.mjs +0 -200
  899. package/esm2022/src/app/shared/material/material.config.mjs +0 -3
  900. package/esm2022/src/app/shared/material/material.module.mjs +0 -229
  901. package/esm2022/src/app/shared/material/material.testing.module.mjs +0 -245
  902. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -51
  903. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -23
  904. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +0 -379
  905. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +0 -52
  906. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -67
  907. package/esm2022/src/app/shared/material/test/test-component.mjs +0 -264
  908. package/esm2022/src/app/shared/material/testing/common.test.mjs +0 -111
  909. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +0 -42
  910. package/esm2022/src/app/shared/material/text/text-form.component.mjs +0 -205
  911. package/esm2022/src/app/shared/material/text/text-form.module.mjs +0 -63
  912. package/esm2022/src/app/shared/modules.mjs +0 -12
  913. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -303
  914. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +0 -49
  915. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +0 -24
  916. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +0 -69
  917. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +0 -74
  918. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +0 -28
  919. package/esm2022/src/app/shared/observables.mjs +0 -100
  920. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +0 -217
  921. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +0 -24
  922. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +0 -29
  923. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -50
  924. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +0 -72
  925. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +0 -28
  926. package/esm2022/src/app/shared/pipes/dates.pipe.mjs +0 -18
  927. package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +0 -23
  928. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +0 -34
  929. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +0 -53
  930. package/esm2022/src/app/shared/pipes/form.pipes.mjs +0 -219
  931. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +0 -50
  932. package/esm2022/src/app/shared/pipes/html.pipes.mjs +0 -69
  933. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +0 -42
  934. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +0 -65
  935. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +0 -67
  936. package/esm2022/src/app/shared/pipes/math.pipes.mjs +0 -77
  937. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +0 -19
  938. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +0 -17
  939. package/esm2022/src/app/shared/pipes/observable.pipes.mjs +0 -61
  940. package/esm2022/src/app/shared/pipes/pipes.module.mjs +0 -285
  941. package/esm2022/src/app/shared/pipes/property.pipes.mjs +0 -135
  942. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +0 -179
  943. package/esm2022/src/app/shared/pipes/string.pipes.mjs +0 -183
  944. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +0 -44
  945. package/esm2022/src/app/shared/pipes/types.pipes.mjs +0 -74
  946. package/esm2022/src/app/shared/pipes/url.pipes.mjs +0 -43
  947. package/esm2022/src/app/shared/platforms.mjs +0 -81
  948. package/esm2022/src/app/shared/print/print.service.mjs +0 -305
  949. package/esm2022/src/app/shared/regexps.mjs +0 -96
  950. package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +0 -71
  951. package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +0 -19
  952. package/esm2022/src/app/shared/rx-state/rx-state.types.mjs +0 -2
  953. package/esm2022/src/app/shared/services/entity-service.class.mjs +0 -10
  954. package/esm2022/src/app/shared/services/job.utils.mjs +0 -92
  955. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +0 -353
  956. package/esm2022/src/app/shared/services/progress-bar.service.mjs +0 -31
  957. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +0 -118
  958. package/esm2022/src/app/shared/services/startable-service.class.mjs +0 -107
  959. package/esm2022/src/app/shared/services/translate-context.service.mjs +0 -107
  960. package/esm2022/src/app/shared/services/validator-service.class.mjs +0 -2
  961. package/esm2022/src/app/shared/services.mjs +0 -85
  962. package/esm2022/src/app/shared/shared-routing.module.mjs +0 -72
  963. package/esm2022/src/app/shared/shared.module.mjs +0 -229
  964. package/esm2022/src/app/shared/shared.testing.module.mjs +0 -108
  965. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +0 -279
  966. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +0 -42
  967. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +0 -27
  968. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +0 -25
  969. package/esm2022/src/app/shared/storage/storage.service.mjs +0 -134
  970. package/esm2022/src/app/shared/storage/storage.utils.mjs +0 -13
  971. package/esm2022/src/app/shared/testing/maskito.test.mjs +0 -41
  972. package/esm2022/src/app/shared/testing/observable.test.mjs +0 -94
  973. package/esm2022/src/app/shared/testing/tests.page.mjs +0 -37
  974. package/esm2022/src/app/shared/toast/toast.testing.mjs +0 -54
  975. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +0 -31
  976. package/esm2022/src/app/shared/toast/toasts.mjs +0 -134
  977. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +0 -62
  978. package/esm2022/src/app/shared/toolbar/toolbar.mjs +0 -267
  979. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +0 -26
  980. package/esm2022/src/app/shared/types.mjs +0 -2
  981. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -59
  982. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +0 -30
  983. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -109
  984. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +0 -216
  985. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +0 -26
  986. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +0 -114
  987. package/esm2022/src/app/shared/validator/validators.mjs +0 -621
  988. package/esm2022/src/app/shared/version/versions.mjs +0 -81
  989. package/esm2022/src/app/social/job/job.module.mjs +0 -23
  990. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +0 -35
  991. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +0 -235
  992. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +0 -47
  993. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +0 -29
  994. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +0 -91
  995. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +0 -38
  996. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +0 -34
  997. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +0 -22
  998. package/esm2022/src/app/social/message/message.form.mjs +0 -141
  999. package/esm2022/src/app/social/message/message.modal.mjs +0 -110
  1000. package/esm2022/src/app/social/message/message.model.mjs +0 -75
  1001. package/esm2022/src/app/social/message/message.module.mjs +0 -22
  1002. package/esm2022/src/app/social/message/message.service.mjs +0 -110
  1003. package/esm2022/src/app/social/social.errors.mjs +0 -10
  1004. package/esm2022/src/app/social/social.module.mjs +0 -22
  1005. package/esm2022/src/app/social/social.testing.module.mjs +0 -40
  1006. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -127
  1007. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -260
  1008. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +0 -257
  1009. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -129
  1010. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +0 -22
  1011. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -128
  1012. package/esm2022/src/app/social/user-event/user-event.model.mjs +0 -2
  1013. package/esm2022/src/app/social/user-event/user-event.module.mjs +0 -23
  1014. package/esm2022/src/app/social/user-event/user-event.service.mjs +0 -512
  1015. package/esm2022/src/environments/environment.class.mjs +0 -65
  1016. package/esm2022/src/environments/environment.loader.mjs +0 -77
  1017. package/esm2022/src/environments/environment.mjs +0 -109
  1018. package/esm2022/sumaris-net.ngx-components.mjs +0 -5
  1019. package/fesm2022/sumaris-net.ngx-components.mjs +0 -48529
  1020. package/fesm2022/sumaris-net.ngx-components.mjs.map +0 -1
  1021. package/index.d.ts +0 -5
  1022. package/public_api.d.ts +0 -344
  1023. package/src/app/admin/admin-routing.module.d.ts +0 -9
  1024. package/src/app/admin/admin.module.d.ts +0 -10
  1025. package/src/app/admin/services/filter/person.filter.d.ts +0 -22
  1026. package/src/app/admin/services/person.service.d.ts +0 -37
  1027. package/src/app/admin/services/validator/person.validator.d.ts +0 -23
  1028. package/src/app/admin/users/users.d.ts +0 -61
  1029. package/src/app/admin/users/users.module.d.ts +0 -14
  1030. package/src/app/core/about/about.modal.d.ts +0 -32
  1031. package/src/app/core/about/about.module.d.ts +0 -11
  1032. package/src/app/core/account/account.module.d.ts +0 -18
  1033. package/src/app/core/account/account.page.d.ts +0 -83
  1034. package/src/app/core/account/new-token.form.d.ts +0 -29
  1035. package/src/app/core/account/new-token.modal.d.ts +0 -29
  1036. package/src/app/core/account/password/change-password.form.d.ts +0 -19
  1037. package/src/app/core/account/password/change-password.module.d.ts +0 -11
  1038. package/src/app/core/account/password/change-password.page.d.ts +0 -36
  1039. package/src/app/core/account/token.table.d.ts +0 -27
  1040. package/src/app/core/auth/auth.form.d.ts +0 -38
  1041. package/src/app/core/auth/auth.modal.d.ts +0 -24
  1042. package/src/app/core/auth/auth.module.d.ts +0 -13
  1043. package/src/app/core/auth/reset-password.modal.d.ts +0 -29
  1044. package/src/app/core/core.module.d.ts +0 -28
  1045. package/src/app/core/core.testing.module.d.ts +0 -15
  1046. package/src/app/core/form/array/form-array.d.ts +0 -137
  1047. package/src/app/core/form/array/testing/form-array-test.module.d.ts +0 -12
  1048. package/src/app/core/form/array/testing/form-array.test.d.ts +0 -26
  1049. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +0 -37
  1050. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +0 -9
  1051. package/src/app/core/form/entity/editor.class.d.ts +0 -84
  1052. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +0 -126
  1053. package/src/app/core/form/entity/entity-editor.class.d.ts +0 -204
  1054. package/src/app/core/form/entity/entity-metadata.component.d.ts +0 -13
  1055. package/src/app/core/form/entity/entity.module.d.ts +0 -10
  1056. package/src/app/core/form/entity/tab-editor.class.d.ts +0 -66
  1057. package/src/app/core/form/form-container.class.d.ts +0 -127
  1058. package/src/app/core/form/form.class.d.ts +0 -144
  1059. package/src/app/core/form/form.module.d.ts +0 -14
  1060. package/src/app/core/form/form.utils.d.ts +0 -260
  1061. package/src/app/core/form/list/list.form.d.ts +0 -81
  1062. package/src/app/core/form/list/list.module.d.ts +0 -9
  1063. package/src/app/core/form/properties/properties.form.d.ts +0 -92
  1064. package/src/app/core/form/properties/properties.module.d.ts +0 -11
  1065. package/src/app/core/form/properties/properties.table.d.ts +0 -72
  1066. package/src/app/core/form/properties/properties.utils.d.ts +0 -59
  1067. package/src/app/core/form/properties/property.validator.d.ts +0 -27
  1068. package/src/app/core/form/properties/testing/properties-form.test.d.ts +0 -22
  1069. package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +0 -12
  1070. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +0 -16
  1071. package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +0 -11
  1072. package/src/app/core/form/text-popover/text-popover.component.d.ts +0 -80
  1073. package/src/app/core/form/text-popover/text-popover.module.d.ts +0 -9
  1074. package/src/app/core/form/username/username.form.d.ts +0 -19
  1075. package/src/app/core/form/username/username.module.d.ts +0 -9
  1076. package/src/app/core/graphql/graphql.module.d.ts +0 -7
  1077. package/src/app/core/graphql/graphql.service.d.ts +0 -142
  1078. package/src/app/core/graphql/graphql.utils.d.ts +0 -47
  1079. package/src/app/core/home/home.d.ts +0 -109
  1080. package/src/app/core/home/home.module.d.ts +0 -14
  1081. package/src/app/core/icon/icon.component.d.ts +0 -13
  1082. package/src/app/core/icon/icon.module.d.ts +0 -9
  1083. package/src/app/core/install/install-upgrade-card.component.d.ts +0 -63
  1084. package/src/app/core/install/install-upgrade-card.module.d.ts +0 -9
  1085. package/src/app/core/menu/menu.component.d.ts +0 -66
  1086. package/src/app/core/menu/menu.model.d.ts +0 -144
  1087. package/src/app/core/menu/menu.module.d.ts +0 -12
  1088. package/src/app/core/menu/menu.service.d.ts +0 -93
  1089. package/src/app/core/menu/sub-menu-tab.directive.d.ts +0 -29
  1090. package/src/app/core/menu/testing/menu-other.testing.d.ts +0 -15
  1091. package/src/app/core/menu/testing/menu.testing.d.ts +0 -51
  1092. package/src/app/core/menu/testing/menu.testing.module.d.ts +0 -12
  1093. package/src/app/core/offline/update-offline-mode-card.component.d.ts +0 -11
  1094. package/src/app/core/offline/update-offline-mode-card.module.d.ts +0 -9
  1095. package/src/app/core/peer/select-peer.modal.d.ts +0 -101
  1096. package/src/app/core/peer/select-peer.module.d.ts +0 -12
  1097. package/src/app/core/register/register-confirm.page.d.ts +0 -24
  1098. package/src/app/core/register/register.form.d.ts +0 -49
  1099. package/src/app/core/register/register.modal.d.ts +0 -14
  1100. package/src/app/core/register/register.module.d.ts +0 -12
  1101. package/src/app/core/services/account.service.d.ts +0 -207
  1102. package/src/app/core/services/auth-guard.service.d.ts +0 -17
  1103. package/src/app/core/services/base-entity-service.class.d.ts +0 -135
  1104. package/src/app/core/services/base-graphql-service.class.d.ts +0 -77
  1105. package/src/app/core/services/base58.d.ts +0 -7
  1106. package/src/app/core/services/config/core.config.d.ts +0 -46
  1107. package/src/app/core/services/config.service.d.ts +0 -63
  1108. package/src/app/core/services/crypto.service.d.ts +0 -44
  1109. package/src/app/core/services/errors.d.ts +0 -65
  1110. package/src/app/core/services/local-settings.service.d.ts +0 -99
  1111. package/src/app/core/services/model/account.model.d.ts +0 -56
  1112. package/src/app/core/services/model/config.model.d.ts +0 -36
  1113. package/src/app/core/services/model/department.model.d.ts +0 -11
  1114. package/src/app/core/services/model/entity.decorators.d.ts +0 -17
  1115. package/src/app/core/services/model/entity.model.d.ts +0 -110
  1116. package/src/app/core/services/model/filter.model.d.ts +0 -37
  1117. package/src/app/core/services/model/history.model.d.ts +0 -20
  1118. package/src/app/core/services/model/model.enum.d.ts +0 -7
  1119. package/src/app/core/services/model/node-feature.model.d.ts +0 -14
  1120. package/src/app/core/services/model/peer.model.d.ts +0 -35
  1121. package/src/app/core/services/model/person.model.d.ts +0 -37
  1122. package/src/app/core/services/model/referential.model.d.ts +0 -84
  1123. package/src/app/core/services/model/settings.model.d.ts +0 -29
  1124. package/src/app/core/services/model/token.model.d.ts +0 -22
  1125. package/src/app/core/services/model/tree-item-entity.model.d.ts +0 -53
  1126. package/src/app/core/services/network.service.d.ts +0 -159
  1127. package/src/app/core/services/network.types.d.ts +0 -4
  1128. package/src/app/core/services/network.utils.d.ts +0 -38
  1129. package/src/app/core/services/pipes/account.pipes.d.ts +0 -15
  1130. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +0 -9
  1131. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +0 -11
  1132. package/src/app/core/services/pipes/pipes.module.d.ts +0 -11
  1133. package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +0 -13
  1134. package/src/app/core/services/pipes/usage-mode.pipes.d.ts +0 -15
  1135. package/src/app/core/services/platform.service.d.ts +0 -110
  1136. package/src/app/core/services/storage/entities-storage.service.d.ts +0 -108
  1137. package/src/app/core/services/storage/entity-store.class.d.ts +0 -113
  1138. package/src/app/core/services/testing/referential-filter.model.d.ts +0 -9
  1139. package/src/app/core/services/testing/referential.validator.d.ts +0 -22
  1140. package/src/app/core/services/validator/account.validator.d.ts +0 -24
  1141. package/src/app/core/services/validator/base.validator.class.d.ts +0 -21
  1142. package/src/app/core/services/validator/local-settings.validator.d.ts +0 -18
  1143. package/src/app/core/services/validator/user-settings.validator.d.ts +0 -10
  1144. package/src/app/core/services/validator/user-token.validator.d.ts +0 -13
  1145. package/src/app/core/settings/settings.module.d.ts +0 -12
  1146. package/src/app/core/settings/settings.page.d.ts +0 -88
  1147. package/src/app/core/table/async-table.class.d.ts +0 -395
  1148. package/src/app/core/table/column/actions-column.component.d.ts +0 -62
  1149. package/src/app/core/table/column/nav-actions-column.component.d.ts +0 -46
  1150. package/src/app/core/table/column/row-field.component.d.ts +0 -40
  1151. package/src/app/core/table/entities-async-table-datasource.class.d.ts +0 -100
  1152. package/src/app/core/table/entities-table-datasource.class.d.ts +0 -103
  1153. package/src/app/core/table/memory-table.class.d.ts +0 -25
  1154. package/src/app/core/table/table-select-columns.component.d.ts +0 -22
  1155. package/src/app/core/table/table.class.d.ts +0 -400
  1156. package/src/app/core/table/table.model.d.ts +0 -31
  1157. package/src/app/core/table/table.module.d.ts +0 -14
  1158. package/src/app/core/table/table.pipes.d.ts +0 -29
  1159. package/src/app/core/table/table.utils.d.ts +0 -13
  1160. package/src/app/core/table/testing/table-validator.service.d.ts +0 -17
  1161. package/src/app/core/table/testing/table.testing.d.ts +0 -54
  1162. package/src/app/core/table/testing/table.testing.module.d.ts +0 -14
  1163. package/src/app/core/table/testing/table2-validator.service.d.ts +0 -15
  1164. package/src/app/core/table/testing/table2.testing.d.ts +0 -48
  1165. package/src/app/shared/alerts.d.ts +0 -55
  1166. package/src/app/shared/audio/audio.d.ts +0 -45
  1167. package/src/app/shared/audio/audio.testing.d.ts +0 -13
  1168. package/src/app/shared/audio/audio.testing.module.d.ts +0 -11
  1169. package/src/app/shared/capacitor/keyboard.d.ts +0 -16
  1170. package/src/app/shared/capacitor/plugins.d.ts +0 -7
  1171. package/src/app/shared/constants.d.ts +0 -13
  1172. package/src/app/shared/dates.d.ts +0 -61
  1173. package/src/app/shared/debug/debug-service.class.d.ts +0 -5
  1174. package/src/app/shared/debug/debug.component.d.ts +0 -14
  1175. package/src/app/shared/debug/debug.module.d.ts +0 -12
  1176. package/src/app/shared/directives/autofocus.directive.d.ts +0 -18
  1177. package/src/app/shared/directives/autoresize.directive.d.ts +0 -20
  1178. package/src/app/shared/directives/autotitle.directive.d.ts +0 -11
  1179. package/src/app/shared/directives/directives.module.d.ts +0 -14
  1180. package/src/app/shared/directives/drag-and-drop.directive.d.ts +0 -17
  1181. package/src/app/shared/directives/ng-var.directive.d.ts +0 -12
  1182. package/src/app/shared/directives/resizable/resizable.component.d.ts +0 -21
  1183. package/src/app/shared/directives/resizable/resizable.directive.d.ts +0 -12
  1184. package/src/app/shared/directives/resizable/resizable.module.d.ts +0 -8
  1185. package/src/app/shared/directives/throttled-click.directive.d.ts +0 -16
  1186. package/src/app/shared/events.d.ts +0 -29
  1187. package/src/app/shared/file/csv.utils.d.ts +0 -30
  1188. package/src/app/shared/file/file.service.d.ts +0 -23
  1189. package/src/app/shared/file/file.utils.d.ts +0 -20
  1190. package/src/app/shared/file/images.utils.d.ts +0 -36
  1191. package/src/app/shared/file/json.utils.d.ts +0 -19
  1192. package/src/app/shared/file/uri.utils.d.ts +0 -8
  1193. package/src/app/shared/file/url.utils.d.ts +0 -77
  1194. package/src/app/shared/focusable.d.ts +0 -4
  1195. package/src/app/shared/form/field.component.d.ts +0 -85
  1196. package/src/app/shared/form/field.model.d.ts +0 -82
  1197. package/src/app/shared/form/loading-spinner.d.ts +0 -8
  1198. package/src/app/shared/forms.d.ts +0 -135
  1199. package/src/app/shared/functions.d.ts +0 -206
  1200. package/src/app/shared/geolocation/geolocation.utils.d.ts +0 -19
  1201. package/src/app/shared/gesture/gesture-config.d.ts +0 -15
  1202. package/src/app/shared/gesture/hammer.utils.d.ts +0 -16
  1203. package/src/app/shared/graph/colors.utils.d.ts +0 -17
  1204. package/src/app/shared/graph/graph-colors.d.ts +0 -63
  1205. package/src/app/shared/guard/component-dirty.guard.d.ts +0 -14
  1206. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +0 -8
  1207. package/src/app/shared/hotkeys/hotkeys.service.d.ts +0 -48
  1208. package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +0 -11
  1209. package/src/app/shared/http/http.utils.d.ts +0 -28
  1210. package/src/app/shared/image/gallery/image-gallery.component.d.ts +0 -137
  1211. package/src/app/shared/image/gallery/image-gallery.module.d.ts +0 -15
  1212. package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +0 -12
  1213. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +0 -33
  1214. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +0 -16
  1215. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +0 -13
  1216. package/src/app/shared/image/image.model.d.ts +0 -7
  1217. package/src/app/shared/image/image.module.d.ts +0 -8
  1218. package/src/app/shared/image/image.service.d.ts +0 -36
  1219. package/src/app/shared/inputs.d.ts +0 -35
  1220. package/src/app/shared/interceptors/progess.interceptor.d.ts +0 -8
  1221. package/src/app/shared/logging/log-level.model.d.ts +0 -38
  1222. package/src/app/shared/logging/logger.model.d.ts +0 -68
  1223. package/src/app/shared/logging/logging-service.class.d.ts +0 -39
  1224. package/src/app/shared/logging/logging-service.config.d.ts +0 -25
  1225. package/src/app/shared/logging/logging-service.module.d.ts +0 -9
  1226. package/src/app/shared/markdown/markdown.component.d.ts +0 -86
  1227. package/src/app/shared/markdown/markdown.directive.d.ts +0 -13
  1228. package/src/app/shared/markdown/markdown.modal.d.ts +0 -49
  1229. package/src/app/shared/markdown/markdown.module.d.ts +0 -17
  1230. package/src/app/shared/markdown/markdown.service.d.ts +0 -37
  1231. package/src/app/shared/markdown/markdown.utils.d.ts +0 -26
  1232. package/src/app/shared/markdown/testing/markdown.test.d.ts +0 -18
  1233. package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +0 -12
  1234. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +0 -74
  1235. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +0 -211
  1236. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +0 -22
  1237. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +0 -5
  1238. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +0 -48
  1239. package/src/app/shared/material/badge/badge.directive.d.ts +0 -43
  1240. package/src/app/shared/material/badge/badge.module.d.ts +0 -10
  1241. package/src/app/shared/material/badge/badge.test.d.ts +0 -21
  1242. package/src/app/shared/material/boolean/boolean.module.d.ts +0 -20
  1243. package/src/app/shared/material/boolean/material.boolean.d.ts +0 -93
  1244. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +0 -26
  1245. package/src/app/shared/material/chips/chips.module.d.ts +0 -21
  1246. package/src/app/shared/material/chips/material.chips.d.ts +0 -164
  1247. package/src/app/shared/material/chips/testing/chips.test.d.ts +0 -32
  1248. package/src/app/shared/material/datetime/datetime.module.d.ts +0 -24
  1249. package/src/app/shared/material/datetime/material.date.d.ts +0 -90
  1250. package/src/app/shared/material/datetime/material.dateshort.d.ts +0 -89
  1251. package/src/app/shared/material/datetime/material.datetime.d.ts +0 -116
  1252. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +0 -37
  1253. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +0 -32
  1254. package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +0 -31
  1255. package/src/app/shared/material/duration/duration.module.d.ts +0 -18
  1256. package/src/app/shared/material/duration/duration.utils.d.ts +0 -2
  1257. package/src/app/shared/material/duration/material.duration.d.ts +0 -64
  1258. package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +0 -23
  1259. package/src/app/shared/material/latlong/latlong.utils.d.ts +0 -59
  1260. package/src/app/shared/material/latlong/material.latlong-input.d.ts +0 -85
  1261. package/src/app/shared/material/latlong/material.latlong.d.ts +0 -90
  1262. package/src/app/shared/material/latlong/material.latlong.module.d.ts +0 -21
  1263. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +0 -28
  1264. package/src/app/shared/material/material.animations.d.ts +0 -8
  1265. package/src/app/shared/material/material.config.d.ts +0 -3
  1266. package/src/app/shared/material/material.module.d.ts +0 -45
  1267. package/src/app/shared/material/material.testing.module.d.ts +0 -32
  1268. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -12
  1269. package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +0 -10
  1270. package/src/app/shared/material/swipe/material.swipe.d.ts +0 -89
  1271. package/src/app/shared/material/swipe/swipe.module.d.ts +0 -16
  1272. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +0 -22
  1273. package/src/app/shared/material/test/test-component.d.ts +0 -75
  1274. package/src/app/shared/material/testing/common.test.d.ts +0 -25
  1275. package/src/app/shared/material/text/testing/text-form.testing.d.ts +0 -19
  1276. package/src/app/shared/material/text/text-form.component.d.ts +0 -66
  1277. package/src/app/shared/material/text/text-form.module.d.ts +0 -16
  1278. package/src/app/shared/modules.d.ts +0 -9
  1279. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +0 -62
  1280. package/src/app/shared/named-filter/named-filter.model.d.ts +0 -32
  1281. package/src/app/shared/named-filter/named-filter.module.d.ts +0 -13
  1282. package/src/app/shared/named-filter/named-filter.service.d.ts +0 -32
  1283. package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +0 -34
  1284. package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +0 -10
  1285. package/src/app/shared/observables.d.ts +0 -30
  1286. package/src/app/shared/pipes/arrays.pipe.d.ts +0 -82
  1287. package/src/app/shared/pipes/badge.pipes.d.ts +0 -7
  1288. package/src/app/shared/pipes/colors.pipe.d.ts +0 -9
  1289. package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +0 -25
  1290. package/src/app/shared/pipes/date-format.pipe.d.ts +0 -35
  1291. package/src/app/shared/pipes/date-from-now.pipe.d.ts +0 -12
  1292. package/src/app/shared/pipes/dates.pipe.d.ts +0 -10
  1293. package/src/app/shared/pipes/display-with.pipe.d.ts +0 -8
  1294. package/src/app/shared/pipes/duration.pipe.d.ts +0 -23
  1295. package/src/app/shared/pipes/file-size.pipe.d.ts +0 -30
  1296. package/src/app/shared/pipes/form.pipes.d.ts +0 -69
  1297. package/src/app/shared/pipes/highlight.pipe.d.ts +0 -11
  1298. package/src/app/shared/pipes/html.pipes.d.ts +0 -22
  1299. package/src/app/shared/pipes/latlong-format.pipe.d.ts +0 -20
  1300. package/src/app/shared/pipes/maps.pipe.d.ts +0 -23
  1301. package/src/app/shared/pipes/maskito.pipe.d.ts +0 -14
  1302. package/src/app/shared/pipes/math.pipes.d.ts +0 -26
  1303. package/src/app/shared/pipes/ng-init.pipe.d.ts +0 -8
  1304. package/src/app/shared/pipes/number-format.pipe.d.ts +0 -9
  1305. package/src/app/shared/pipes/observable.pipes.d.ts +0 -25
  1306. package/src/app/shared/pipes/pipes.module.d.ts +0 -35
  1307. package/src/app/shared/pipes/property.pipes.d.ts +0 -41
  1308. package/src/app/shared/pipes/selection.pipes.d.ts +0 -62
  1309. package/src/app/shared/pipes/string.pipes.d.ts +0 -68
  1310. package/src/app/shared/pipes/translate-context.pipe.d.ts +0 -17
  1311. package/src/app/shared/pipes/types.pipes.d.ts +0 -30
  1312. package/src/app/shared/pipes/url.pipes.d.ts +0 -27
  1313. package/src/app/shared/platforms.d.ts +0 -16
  1314. package/src/app/shared/print/print.service.d.ts +0 -94
  1315. package/src/app/shared/regexps.d.ts +0 -32
  1316. package/src/app/shared/rx-state/rx-state.decorators.d.ts +0 -7
  1317. package/src/app/shared/rx-state/rx-state.module.d.ts +0 -10
  1318. package/src/app/shared/rx-state/rx-state.types.d.ts +0 -4
  1319. package/src/app/shared/services/entity-service.class.d.ts +0 -75
  1320. package/src/app/shared/services/job.utils.d.ts +0 -20
  1321. package/src/app/shared/services/memory-entity-service.class.d.ts +0 -79
  1322. package/src/app/shared/services/progress-bar.service.d.ts +0 -20
  1323. package/src/app/shared/services/startable-observable-service.class.d.ts +0 -36
  1324. package/src/app/shared/services/startable-service.class.d.ts +0 -37
  1325. package/src/app/shared/services/translate-context.service.d.ts +0 -29
  1326. package/src/app/shared/services/validator-service.class.d.ts +0 -11
  1327. package/src/app/shared/services.d.ts +0 -17
  1328. package/src/app/shared/shared-routing.module.d.ts +0 -23
  1329. package/src/app/shared/shared.module.d.ts +0 -33
  1330. package/src/app/shared/shared.testing.module.d.ts +0 -20
  1331. package/src/app/shared/storage/storage-explorer.component.d.ts +0 -59
  1332. package/src/app/shared/storage/storage-explorer.module.d.ts +0 -13
  1333. package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +0 -9
  1334. package/src/app/shared/storage/storage-explorer.testing.module.d.ts +0 -10
  1335. package/src/app/shared/storage/storage.service.d.ts +0 -22
  1336. package/src/app/shared/storage/storage.utils.d.ts +0 -19
  1337. package/src/app/shared/testing/maskito.test.d.ts +0 -10
  1338. package/src/app/shared/testing/observable.test.d.ts +0 -25
  1339. package/src/app/shared/testing/tests.page.d.ts +0 -20
  1340. package/src/app/shared/toast/toast.testing.d.ts +0 -15
  1341. package/src/app/shared/toast/toast.testing.module.d.ts +0 -12
  1342. package/src/app/shared/toast/toasts.d.ts +0 -16
  1343. package/src/app/shared/toolbar/modal-toolbar.d.ts +0 -21
  1344. package/src/app/shared/toolbar/toolbar.d.ts +0 -70
  1345. package/src/app/shared/toolbar/toolbar.module.d.ts +0 -16
  1346. package/src/app/shared/types.d.ts +0 -36
  1347. package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +0 -21
  1348. package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +0 -11
  1349. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +0 -41
  1350. package/src/app/shared/upload-file/upload-file.component.d.ts +0 -50
  1351. package/src/app/shared/upload-file/upload-file.model.d.ts +0 -30
  1352. package/src/app/shared/validator/form-error-adapter.class.d.ts +0 -33
  1353. package/src/app/shared/validator/validators.d.ts +0 -139
  1354. package/src/app/shared/version/versions.d.ts +0 -26
  1355. package/src/app/social/job/job.module.d.ts +0 -12
  1356. package/src/app/social/job/progression/job-progression.component.d.ts +0 -23
  1357. package/src/app/social/job/progression/job-progression.icon.d.ts +0 -62
  1358. package/src/app/social/job/progression/job-progression.list.d.ts +0 -19
  1359. package/src/app/social/job/progression/job-progression.model.d.ts +0 -10
  1360. package/src/app/social/job/progression/job-progression.service.d.ts +0 -33
  1361. package/src/app/social/job/testing/job-progression.testing.d.ts +0 -13
  1362. package/src/app/social/job/testing/job-progression.testing.service.d.ts +0 -9
  1363. package/src/app/social/job/testing/job.testing.module.d.ts +0 -11
  1364. package/src/app/social/message/message.form.d.ts +0 -36
  1365. package/src/app/social/message/message.modal.d.ts +0 -43
  1366. package/src/app/social/message/message.model.d.ts +0 -33
  1367. package/src/app/social/message/message.module.d.ts +0 -12
  1368. package/src/app/social/message/message.service.d.ts +0 -32
  1369. package/src/app/social/social.errors.d.ts +0 -9
  1370. package/src/app/social/social.module.d.ts +0 -20
  1371. package/src/app/social/social.testing.module.d.ts +0 -13
  1372. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +0 -32
  1373. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +0 -71
  1374. package/src/app/social/user-event/testing/user-event.testing.d.ts +0 -35
  1375. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -42
  1376. package/src/app/social/user-event/testing/user-event.testing.module.d.ts +0 -11
  1377. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +0 -42
  1378. package/src/app/social/user-event/user-event.model.d.ts +0 -44
  1379. package/src/app/social/user-event/user-event.module.d.ts +0 -13
  1380. package/src/app/social/user-event/user-event.service.d.ts +0 -124
  1381. package/src/environments/environment.class.d.ts +0 -75
  1382. package/src/environments/environment.d.ts +0 -2
  1383. package/src/environments/environment.loader.d.ts +0 -24
@@ -1,393 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, numberAttribute, Optional, Output, ViewChild, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
3
- import { isBlankString, isNilOrBlank, isNotNil, isNotNilBoolean, isNotNilOrBlank, joinPropertiesPath, toBoolean } from '../functions';
4
- import { FormFieldDefinitionUtils } from './field.model';
5
- import { getColorContrast } from '../graph/colors.utils';
6
- import { asInputElement, filterNumberInput, selectInputContentFromEvent } from '../inputs';
7
- import { toDateISOString } from '../dates';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@ngx-translate/core";
10
- import * as i2 from "@angular/forms";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@ionic/angular";
13
- import * as i5 from "ngx-color-picker";
14
- import * as i6 from "@angular/material/form-field";
15
- import * as i7 from "@angular/material/input";
16
- import * as i8 from "@angular/material/icon";
17
- import * as i9 from "@angular/material/button";
18
- import * as i10 from "@angular/material/select";
19
- import * as i11 from "@angular/material/core";
20
- import * as i12 from "../material/autocomplete/material.autocomplete";
21
- import * as i13 from "../material/datetime/material.date";
22
- import * as i14 from "../material/datetime/material.datetime";
23
- import * as i15 from "../material/boolean/material.boolean";
24
- import * as i16 from "../material/chips/material.chips";
25
- import * as i17 from "../directives/autofocus.directive";
26
- import * as i18 from "../pipes/string.pipes";
27
- import * as i19 from "../pipes/form.pipes";
28
- import * as i20 from "../pipes/colors.pipe";
29
- import * as i21 from "../pipes/types.pipes";
30
- const noop = () => { };
31
- export class AppFormField {
32
- translate;
33
- cd;
34
- injector;
35
- formGroupDir;
36
- _onChangeCallback = noop;
37
- _onTouchedCallback = noop;
38
- _definition;
39
- _values;
40
- type;
41
- numberInputStep;
42
- set definition(value) {
43
- if (!value || this._definition === value)
44
- return; // Skip is same or nil
45
- this._definition = value;
46
- this._onDefinitionChanged(value);
47
- }
48
- get definition() {
49
- return this._definition;
50
- }
51
- readonly = false;
52
- disabled;
53
- formControl;
54
- formControlName;
55
- placeholder;
56
- compact = false;
57
- required;
58
- hideRequiredMarker = false;
59
- floatLabel = 'auto';
60
- label = null;
61
- appearance;
62
- subscriptSizing;
63
- tabindex;
64
- autofocus;
65
- clearable;
66
- chipColor = null;
67
- // eslint-disable-next-line @angular-eslint/no-input-rename
68
- classList;
69
- debug = false;
70
- panelClass;
71
- panelWidth;
72
- onKeyupEnter = new EventEmitter();
73
- get value() {
74
- return this.formControl.value;
75
- }
76
- matInput;
77
- autocompleteField;
78
- constructor(translate, cd, injector, formGroupDir) {
79
- this.translate = translate;
80
- this.cd = cd;
81
- this.injector = injector;
82
- this.formGroupDir = formGroupDir;
83
- }
84
- ngOnInit() {
85
- this.checkAndResolveFormControl();
86
- if (!this._definition)
87
- throw new Error("Missing mandatory attribute 'definition' in <app-form-field>.");
88
- if (typeof this._definition !== 'object')
89
- throw new Error("Invalid attribute 'definition' in <app-form-field>. Should be an object.");
90
- this._onDefinitionChanged(this._definition, { emitEvent: false });
91
- }
92
- writeValue(obj) {
93
- if ((this.type === 'integer' || this.type === 'double') && Number.isNaN(obj)) {
94
- // DEBUG
95
- //if (this.debug) console.debug("WARN: trying to set NaN value, in an <app-form-field>! Reset to null");
96
- obj = null;
97
- }
98
- else if (this.type === 'boolean' && typeof obj === 'string') {
99
- obj = obj !== 'false';
100
- }
101
- else if (this.type === 'date') {
102
- obj = toDateISOString(obj);
103
- }
104
- else if (this.type === 'enums' && isNotNil(obj)) {
105
- let changes = false;
106
- if (!Array.isArray(obj)) {
107
- // Convert string to array
108
- if (typeof obj === 'string') {
109
- obj = obj.trim().split(/[|,]+/);
110
- changes = true;
111
- }
112
- // Convert object to array
113
- else if (typeof obj === 'object') {
114
- obj = [obj];
115
- changes = true;
116
- }
117
- }
118
- const updatedArray = (obj || [])
119
- .map((item) => {
120
- if (typeof item === 'string') {
121
- changes = true;
122
- return this._values.find((v) => v.key === item.trim());
123
- }
124
- return item;
125
- })
126
- .filter(isNotNil);
127
- if (changes) {
128
- obj = updatedArray;
129
- }
130
- }
131
- else if (this.type === 'entity' && isNilOrBlank(obj)) {
132
- obj = null;
133
- }
134
- else if (this.type === 'entities' && isNotNil(obj)) {
135
- let changes = false;
136
- if (!Array.isArray(obj)) {
137
- // Convert string to array
138
- if (typeof obj === 'string') {
139
- obj = obj.trim();
140
- if (obj.startsWith('[') && obj.endsWith(']')) {
141
- obj = JSON.parse(obj);
142
- }
143
- else {
144
- obj = obj.split(/[|,]+/);
145
- }
146
- changes = true;
147
- }
148
- // Convert object to array
149
- else if (typeof obj === 'object') {
150
- obj = [obj];
151
- changes = true;
152
- }
153
- }
154
- const updatedArray = (obj || [])
155
- .map((item) => {
156
- if (typeof item === 'string' && item.startsWith('{') && item.endsWith('}')) {
157
- item = JSON.parse(item);
158
- changes = true;
159
- return item;
160
- }
161
- return item;
162
- })
163
- .filter(isNotNilOrBlank);
164
- if (changes) {
165
- obj = updatedArray;
166
- }
167
- }
168
- if (obj !== this.formControl.value) {
169
- // DEBUG
170
- //if (this.debug) console.debug("Set <app-form-field> value: ", obj);
171
- this.formControl.patchValue(obj, { emitEvent: false });
172
- this._onChangeCallback(obj);
173
- }
174
- this.cd.markForCheck();
175
- }
176
- registerOnChange(fn) {
177
- this._onChangeCallback = fn;
178
- }
179
- registerOnTouched(fn) {
180
- this._onTouchedCallback = fn;
181
- }
182
- setDisabledState(isDisabled) {
183
- if (this.disabled === isDisabled)
184
- return;
185
- this.disabled = isDisabled;
186
- this.cd.markForCheck();
187
- }
188
- markAsTouched() {
189
- if (this.formControl.touched) {
190
- this.cd.markForCheck();
191
- this._onTouchedCallback();
192
- }
193
- }
194
- filterAlphanumericalInput(event) {
195
- if (event.code === 'Enter' && this.onKeyupEnter.observed) {
196
- this.onKeyupEnter.emit(event);
197
- return;
198
- }
199
- // Add features (e.g. check against a pattern)
200
- }
201
- focus() {
202
- if (this.matInput)
203
- this.matInput.nativeElement.focus();
204
- else if (this.autocompleteField)
205
- this.autocompleteField.focus();
206
- }
207
- filterNumberInput = filterNumberInput;
208
- selectInputContentFromEvent = selectInputContentFromEvent;
209
- getDisplayValueFn(definition) {
210
- if (definition.autocomplete && definition.autocomplete.displayWith) {
211
- return (obj) => definition.autocomplete.displayWith(obj);
212
- }
213
- const attributes = (definition.autocomplete && definition.autocomplete.attributes) || ['label', 'name'];
214
- return (obj) => obj && joinPropertiesPath(obj, attributes);
215
- }
216
- getColorContrast(color) {
217
- return isNotNilOrBlank(color) ? getColorContrast(color, true) : undefined;
218
- }
219
- /**
220
- * Allow to reload values, if not detected
221
- *
222
- * @param value
223
- */
224
- reloadItems(value) {
225
- if (!this._definition)
226
- return;
227
- this._onDefinitionChanged(this._definition);
228
- if (this.autocompleteField) {
229
- setTimeout(() => this.autocompleteField?.reloadItems(value));
230
- }
231
- }
232
- /* -- protected method -- */
233
- computeNumberInputStep(definition) {
234
- if (definition.maximumNumberDecimals > 0) {
235
- let step = '0.';
236
- if (definition.maximumNumberDecimals > 1) {
237
- for (let i = 0; i < definition.maximumNumberDecimals - 1; i++) {
238
- step += '0';
239
- }
240
- }
241
- step += '1';
242
- return step;
243
- }
244
- else {
245
- return '1';
246
- }
247
- }
248
- checkAndResolveFormControl() {
249
- if (this.formControl)
250
- return; // OK, there is a control
251
- if (this.formGroupDir) {
252
- // Try to find using definition.key, as formControlName
253
- if (!this.formControlName && this._definition.key) {
254
- this.formControlName = this._definition.key;
255
- }
256
- const formControlName = (this.formGroupDir.directives || []).find((d) => this.formControlName && d.name === this.formControlName);
257
- this.formControl = formControlName && formControlName.control;
258
- if (!this.formControl) {
259
- this.formControl = this.formGroupDir.form.get(this.formControlName);
260
- }
261
- }
262
- if (!this.formControl) {
263
- throw new Error("Missing attribute 'formControl' or 'formControlName' in <app-form-field> component.");
264
- }
265
- }
266
- _onDefinitionChanged(definition, opts) {
267
- this.type = definition.type;
268
- if (!this.type)
269
- throw new Error("Invalid attribute 'definition' in <app-form-field>. Missing type !");
270
- this.placeholder = this.placeholder || (this._definition.label && this.translate.instant(this._definition.label));
271
- this.required = isNotNilBoolean(this.required)
272
- ? this.required
273
- : this._definition.required || this.formControl?.validator === Validators.required || isBlankString(this.required);
274
- this.disabled = toBoolean(this.disabled, toBoolean(this._definition.disabled, false));
275
- // double
276
- if (this.type === 'double') {
277
- this.numberInputStep = this.computeNumberInputStep(definition);
278
- }
279
- else {
280
- this.numberInputStep = null;
281
- }
282
- // enum (or enums)
283
- if (this.type === 'enum' || this.type === 'enums') {
284
- // Resolve enum values
285
- this._values = FormFieldDefinitionUtils.getEnumValues(this.injector, definition.values);
286
- }
287
- else {
288
- this._values = [];
289
- }
290
- // Repaint
291
- if (!opts || opts.emitEvent !== false) {
292
- this.cd.markForCheck();
293
- }
294
- // Recompute tab index, because if type changed, then matInput can have changed
295
- this.updateTabIndex(100);
296
- }
297
- updateTabIndex(timeout) {
298
- if (this.tabindex && this.tabindex !== -1) {
299
- setTimeout(() => {
300
- const element = asInputElement(this.matInput);
301
- if (element) {
302
- element.tabIndex = this.tabindex;
303
- this.cd.markForCheck();
304
- }
305
- else if (this.autocompleteField) {
306
- this.autocompleteField.tabindex = this.tabindex;
307
- }
308
- }, timeout || 0);
309
- }
310
- }
311
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFormField, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i2.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
312
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppFormField, selector: "app-form-field", inputs: { definition: "definition", readonly: ["readonly", "readonly", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", compact: ["compact", "compact", booleanAttribute], required: ["required", "required", booleanAttribute], hideRequiredMarker: ["hideRequiredMarker", "hideRequiredMarker", booleanAttribute], floatLabel: "floatLabel", label: "label", appearance: "appearance", subscriptSizing: "subscriptSizing", tabindex: ["tabindex", "tabindex", numberAttribute], autofocus: ["autofocus", "autofocus", booleanAttribute], clearable: ["clearable", "clearable", booleanAttribute], chipColor: "chipColor", classList: ["class", "classList"], debug: ["debug", "debug", booleanAttribute], panelClass: "panelClass", panelWidth: "panelWidth" }, outputs: { onKeyupEnter: "keyup.enter" }, providers: [
313
- {
314
- provide: NG_VALUE_ACCESSOR,
315
- useExisting: forwardRef(() => AppFormField),
316
- multi: true,
317
- },
318
- ], viewQueries: [{ propertyName: "matInput", first: true, predicate: ["matInput"], descendants: true }, { propertyName: "autocompleteField", first: true, predicate: ["autocompleteField"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- integer -->\n <mat-form-field\n *ngSwitchCase=\"'integer'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n matInput\n #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate: formControl.errors['min'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{ (compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate: formControl.errors['max'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{ 'ERROR.FIELD_NOT_VALID_INTEGER' | translate }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{ 'ERROR.FIELD_NOT_VALID_INTEGER' | translate }}\n </mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field\n *ngSwitchCase=\"'double'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n matInput\n #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [step]=\"numberInputStep\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('decimal')\" translate>ERROR.FIELD_NOT_VALID_DECIMAL</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate: formControl.errors['min'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{ (compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate: formControl.errors['max'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{\n (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')\n | translate: { maxDecimals: definition.maximumNumberDecimals }\n }}\n </mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field\n *ngSwitchCase=\"'boolean'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field\n *ngSwitchCase=\"'date'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER' | translate) : placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field\n *ngSwitchCase=\"'dateTime'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER' | translate) : placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field\n *ngSwitchCase=\"'enum'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"readonly\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n @if (readonly) {\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value }}</ion-text>\n } @else {\n <mat-select\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n >\n <mat-option *ngFor=\"let item of _values\" [value]=\"item.key\">{{ item.value | translate }}</mat-option>\n </mat-select>\n }\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- multi enum -->\n <mat-chips-field\n *ngSwitchCase=\"'enums'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [formControl]=\"formControl\"\n [clearable]=\"clearable\"\n [items]=\"_values\"\n [displayAttributes]=\"definition.autocomplete?.attributes || ['key', 'value']\"\n [config]=\"definition.autocomplete\"\n [showAllOnFocus]=\"true\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [chipColor]=\"chipColor | matColor\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- color -->\n <mat-form-field\n *ngSwitchCase=\"'color'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input\n matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field\n *ngSwitchCase=\"'string'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field\n *ngSwitchCase=\"'entity'\"\n #autocompleteField\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [hideRequiredMarker]=\"hideRequiredMarker\"\n [tabindex]=\"tabindex\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [displayWith]=\"getDisplayValueFn(definition)\"\n [panelClass]=\"panelClass\"\n [panelWidth]=\"panelWidth\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field\n *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\"\n [clearable]=\"clearable\"\n [displayWith]=\"getDisplayValueFn(definition)\"\n [readonly]=\"readonly\"\n [panelClass]=\"panelClass\"\n [panelWidth]=\"panelWidth\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">\n Unknown type {{ type }} for option {{ definition.key }}. Please report this error.\n </mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:inline-block;position:relative}button[hidden]{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i5.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpArrowPosition", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i12.MatAutocompleteField, selector: "mat-autocomplete-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "label", "appearance", "subscriptSizing", "placeholder", "suggestFn", "required", "hideRequiredMarker", "mobile", "clearable", "debounceTime", "displaySeparator", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "reloadItemsOnFocus", "clearInvalidValueOnBlur", "autofocus", "config", "i18nPrefix", "noResultMessage", "panelClass", "panelWidth", "disableRipple", "matAutocompletePosition", "multiple", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "debug", "showSearchBar", "stickySearchBar", "applyImplicitValue", "dropButtonTitle", "clearButtonTitle", "trimSearchText", "splitSearchText", "selectInputContentOnFocus", "selectInputContentOnFocusDelay", "previewImplicitValue", "showFavorites", "toggleFavoriteTitle", "favoriteItems", "colSizes", "class", "filter", "readonly", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keydown.backspace", "keyup.enter", "selectionChange", "openedChange", "toggleFavorite"] }, { kind: "component", type: i13.MatDate, selector: "mat-date-field", inputs: ["formControl", "formControlName", "placeholder", "floatLabel", "mobile", "compact", "autofocus", "clearable", "required", "startDate", "timezone", "datePickerFilter", "appearance", "subscriptSizing", "readonly", "tabindex"] }, { kind: "component", type: i14.MatDateTime, selector: "mat-date-time-field", inputs: ["placeholder", "floatLabel", "mobile", "compact", "autofocus", "clearable", "startDate", "datePickerFilter", "allowNoTime", "appearance", "subscriptSizing", "formControl", "formControlName", "required", "readonly", "tabindex"] }, { kind: "component", type: i15.MatBooleanField, selector: "mat-boolean-field", inputs: ["disabled", "formControl", "formControlName", "placeholder", "floatLabel", "appearance", "subscriptSizing", "readonly", "required", "compact", "autofocus", "style", "buttonsColCount", "class", "yesLabel", "noLabel", "showButtonIcons", "yesIcon", "noIcon", "clearable", "labelPosition", "tabindex", "showRadio", "value"], outputs: ["keyup.enter", "focus", "blur"] }, { kind: "component", type: i16.MatChipsField, selector: "mat-chips-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "placeholder", "suggestFn", "required", "mobile", "readonly", "clearable", "debounceTime", "displaySeparator", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "panelClass", "panelWidth", "disableRipple", "matAutocompletePosition", "itemSize", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "chipColor", "debug", "applyImplicitValue", "dropButtonTitle", "clearButtonTitle", "trimSearchText", "hideRequiredMarker", "colSizes", "separatorKeysCodes", "appearance", "subscriptSizing", "class", "filter", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter"] }, { kind: "directive", type: i17.AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: ["appAutofocus", "autofocusDelay"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i18.IsNilOrBlankPipe, name: "isNilOrBlank" }, { kind: "pipe", type: i19.FormGetValuePipe, name: "formGetValue" }, { kind: "pipe", type: i20.MatColorPipe, name: "matColor" }, { kind: "pipe", type: i21.AsFloatLabelTypePipe, name: "asFloatLabelType" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
319
- }
320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFormField, decorators: [{
321
- type: Component,
322
- args: [{ selector: 'app-form-field', providers: [
323
- {
324
- provide: NG_VALUE_ACCESSOR,
325
- useExisting: forwardRef(() => AppFormField),
326
- multi: true,
327
- },
328
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"type\">\n <!-- integer -->\n <mat-form-field\n *ngSwitchCase=\"'integer'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n matInput\n #matInput\n type=\"number\"\n autocomplete=\"off\"\n [readonly]=\"readonly\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n pattern=\"-?[0-9]*\"\n step=\"1\"\n [appAutofocus]=\"autofocus\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, false)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate: formControl.errors['min'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{ (compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate: formControl.errors['max'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('pattern')\">\n {{ 'ERROR.FIELD_NOT_VALID_INTEGER' | translate }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('integer')\">\n {{ 'ERROR.FIELD_NOT_VALID_INTEGER' | translate }}\n </mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- double -->\n <mat-form-field\n *ngSwitchCase=\"'double'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n matInput\n #matInput\n type=\"number\"\n decimal=\"true\"\n autocomplete=\"off\"\n [min]=\"definition.minValue\"\n [max]=\"definition.maxValue\"\n [appAutofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [step]=\"numberInputStep\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterNumberInput($event, true)\"\n [formControl]=\"formControl\"\n [required]=\"required\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('decimal')\" translate>ERROR.FIELD_NOT_VALID_DECIMAL</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{ (compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate: formControl.errors['min'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{ (compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate: formControl.errors['max'] }}\n </mat-error>\n <mat-error *ngIf=\"formControl.hasError('maxDecimals')\">\n {{\n (compact ? 'ERROR.FIELD_MAXIMUM_DECIMALS_COMPACT' : 'ERROR.FIELD_MAXIMUM_DECIMALS')\n | translate: { maxDecimals: definition.maximumNumberDecimals }\n }}\n </mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- boolean -->\n <mat-boolean-field\n *ngSwitchCase=\"'boolean'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [readonly]=\"readonly\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-boolean-field>\n\n <!-- date -->\n <mat-date-field\n *ngSwitchCase=\"'date'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_PLACEHOLDER' | translate) : placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-field>\n\n <!-- date time -->\n <mat-date-time-field\n *ngSwitchCase=\"'dateTime'\"\n #matInput\n [class]=\"classList\"\n [formControl]=\"formControl\"\n [placeholder]=\"compact ? ('COMMON.DATE_TIME_PLACEHOLDER' | translate) : placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [required]=\"required\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n [compact]=\"compact\"\n [tabindex]=\"tabindex\"\n [autofocus]=\"autofocus\"\n >\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-date-time-field>\n\n <!-- enum -->\n <mat-form-field\n *ngSwitchCase=\"'enum'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"readonly\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n @if (readonly) {\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\" />\n <ion-text>{{ formControl.value }}</ion-text>\n } @else {\n <mat-select\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n >\n <mat-option *ngFor=\"let item of _values\" [value]=\"item.key\">{{ item.value | translate }}</mat-option>\n </mat-select>\n }\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- multi enum -->\n <mat-chips-field\n *ngSwitchCase=\"'enums'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [formControl]=\"formControl\"\n [clearable]=\"clearable\"\n [items]=\"_values\"\n [displayAttributes]=\"definition.autocomplete?.attributes || ['key', 'value']\"\n [config]=\"definition.autocomplete\"\n [showAllOnFocus]=\"true\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [chipColor]=\"chipColor | matColor\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- color -->\n <mat-form-field\n *ngSwitchCase=\"'color'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n <ion-icon margin-right name=\"color-fill\" matPrefix></ion-icon>\n\n <input\n matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [style.color]=\"getColorContrast(formControl.value)\"\n [style.background]=\"formControl.value\"\n [colorPicker]=\"formControl.value\"\n (colorPickerChange)=\"writeValue($event)\"\n [cpSaveClickOutside]=\"true\"\n cpPosition=\"top\"\n cpOutputFormat=\"hex\"\n [cpOKButton]=\"false\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- string -->\n <mat-form-field\n *ngSwitchCase=\"'string'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class]=\"classList\"\n >\n @if (placeholder && floatLabel !== 'never') {\n <mat-label>{{ placeholder }}</mat-label>\n }\n <input\n matInput\n #matInput\n autocomplete=\"off\"\n [appAutofocus]=\"autofocus\"\n [formControl]=\"formControl\"\n [placeholder]=\"floatLabel === 'never' ? placeholder : null\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [tabIndex]=\"tabindex\"\n (click)=\"selectInputContentFromEvent($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keypress)=\"filterAlphanumericalInput($event)\"\n />\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <button\n matSuffix\n *ngIf=\"clearable\"\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"formControl.reset()\"\n [hidden]=\"formControl.disabled || (formControl | formGetValue | isNilOrBlank)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-form-field>\n\n <!-- auto-complete -->\n <mat-autocomplete-field\n *ngSwitchCase=\"'entity'\"\n #autocompleteField\n [class]=\"classList\"\n [autofocus]=\"autofocus\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [hideRequiredMarker]=\"hideRequiredMarker\"\n [tabindex]=\"tabindex\"\n [clearable]=\"clearable\"\n [readonly]=\"readonly\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [displayWith]=\"getDisplayValueFn(definition)\"\n [panelClass]=\"panelClass\"\n [panelWidth]=\"panelWidth\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </mat-autocomplete-field>\n\n <!-- multi auto-complete -->\n <mat-chips-field\n *ngSwitchCase=\"'entities'\"\n [class]=\"classList\"\n [placeholder]=\"placeholder\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [formControl]=\"formControl\"\n [config]=\"definition.autocomplete\"\n [required]=\"required\"\n [chipColor]=\"chipColor | matColor\"\n [clearable]=\"clearable\"\n [displayWith]=\"getDisplayValueFn(definition)\"\n [readonly]=\"readonly\"\n [panelClass]=\"panelClass\"\n [panelWidth]=\"panelWidth\"\n >\n <ng-content select=\"[matPrefix]\"></ng-content>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </mat-chips-field>\n\n <!-- other -->\n <div *ngSwitchDefault>\n <mat-error *ngIf=\"type\">\n Unknown type {{ type }} for option {{ definition.key }}. Please report this error.\n </mat-error>\n <mat-error *ngIf=\"!type\">Error on option field. Please check console log for details.</mat-error>\n <div matSuffix>\n <ng-content select=\"[matSuffix]\"></ng-content>\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:inline-block;position:relative}button[hidden]{display:none}\n"] }]
329
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i2.FormGroupDirective, decorators: [{
330
- type: Optional
331
- }] }], propDecorators: { definition: [{
332
- type: Input
333
- }], readonly: [{
334
- type: Input,
335
- args: [{ transform: booleanAttribute }]
336
- }], disabled: [{
337
- type: Input,
338
- args: [{ transform: booleanAttribute }]
339
- }], formControl: [{
340
- type: Input
341
- }], formControlName: [{
342
- type: Input
343
- }], placeholder: [{
344
- type: Input
345
- }], compact: [{
346
- type: Input,
347
- args: [{ transform: booleanAttribute }]
348
- }], required: [{
349
- type: Input,
350
- args: [{ transform: booleanAttribute }]
351
- }], hideRequiredMarker: [{
352
- type: Input,
353
- args: [{ transform: booleanAttribute }]
354
- }], floatLabel: [{
355
- type: Input
356
- }], label: [{
357
- type: Input
358
- }], appearance: [{
359
- type: Input
360
- }], subscriptSizing: [{
361
- type: Input
362
- }], tabindex: [{
363
- type: Input,
364
- args: [{ transform: numberAttribute }]
365
- }], autofocus: [{
366
- type: Input,
367
- args: [{ transform: booleanAttribute }]
368
- }], clearable: [{
369
- type: Input,
370
- args: [{ transform: booleanAttribute }]
371
- }], chipColor: [{
372
- type: Input
373
- }], classList: [{
374
- type: Input,
375
- args: ['class']
376
- }], debug: [{
377
- type: Input,
378
- args: [{ transform: booleanAttribute }]
379
- }], panelClass: [{
380
- type: Input
381
- }], panelWidth: [{
382
- type: Input
383
- }], onKeyupEnter: [{
384
- type: Output,
385
- args: ['keyup.enter']
386
- }], matInput: [{
387
- type: ViewChild,
388
- args: ['matInput']
389
- }], autocompleteField: [{
390
- type: ViewChild,
391
- args: ['autocompleteField']
392
- }] } });
393
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZm9ybS9maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUVWLEtBQUssRUFDTCxlQUFlLEVBRWYsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QyxpQkFBaUIsRUFBc0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RJLE9BQU8sRUFBcUQsd0JBQXdCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPM0MsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBZXRCLE1BQU0sT0FBTyxZQUFZO0lBc0RYO0lBQ0E7SUFDQTtJQUNVO0lBeERkLGlCQUFpQixHQUFxQixJQUFJLENBQUM7SUFDM0Msa0JBQWtCLEdBQWUsSUFBSSxDQUFDO0lBQ3RDLFdBQVcsQ0FBc0I7SUFFL0IsT0FBTyxD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QUFhO2dCQU1FLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDVyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc0JsYW5rU3RyaW5nLCBpc05pbE9yQmxhbmssIGlzTm90TmlsLCBpc05vdE5pbEJvb2xlYW4sIGlzTm90TmlsT3JCbGFuaywgam9pblByb3BlcnRpZXNQYXRoLCB0b0Jvb2xlYW4gfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQXBwRmxvYXRMYWJlbFR5cGUsIERpc3BsYXlGbiwgRm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkRGVmaW5pdGlvblV0aWxzLCBGb3JtRmllbGRUeXBlIH0gZnJvbSAnLi9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXRDb2xvckNvbnRyYXN0IH0gZnJvbSAnLi4vZ3JhcGgvY29sb3JzLnV0aWxzJztcbmltcG9ydCB7IGFzSW5wdXRFbGVtZW50LCBmaWx0ZXJOdW1iZXJJbnB1dCwgc2VsZWN0SW5wdXRDb250ZW50RnJvbUV2ZW50IH0gZnJvbSAnLi4vaW5wdXRzJztcbmltcG9ydCB7IHRvRGF0ZUlTT1N0cmluZyB9IGZyb20gJy4uL2RhdGVzJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBQcmVkZWZpbmVkQ29sb3JzIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlRmllbGQgfSBmcm9tICcuLi9tYXRlcmlhbC9hdXRvY29tcGxldGUvbWF0ZXJpYWwuYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIFN1YnNjcmlwdFNpemluZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mb3JtLWZpZWxkJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBcHBGb3JtRmllbGQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFwcEZvcm1GaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9kZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uO1xuXG4gIHByb3RlY3RlZCBfdmFsdWVzOiBQcm9wZXJ0eVtdO1xuXG4gIHByb3RlY3RlZCB0eXBlOiBGb3JtRmllbGRUeXBlO1xuICBwcm90ZWN0ZWQgbnVtYmVySW5wdXRTdGVwOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2V0IGRlZmluaXRpb24odmFsdWU6IEZvcm1GaWVsZERlZmluaXRpb24pIHtcbiAgICBpZiAoIXZhbHVlIHx8IHRoaXMuX2RlZmluaXRpb24gPT09IHZhbHVlKSByZXR1cm47IC8vIFNraXAgaXMgc2FtZSBvciBuaWxcbiAgICB0aGlzLl9kZWZpbml0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5fb25EZWZpbml0aW9uQ2hhbmdlZCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGVmaW5pdGlvbigpOiBGb3JtRmllbGREZWZpbml0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmaW5pdGlvbjtcbiAgfVxuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY29tcGFjdCA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoaWRlUmVxdWlyZWRNYXJrZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogQXBwRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSBudWxsO1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBASW5wdXQoKSBzdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGFiaW5kZXg6IG51bWJlcjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9mb2N1czogYm9vbGVhbjtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY2xlYXJhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBjaGlwQ29sb3I6IFRoZW1lUGFsZXR0ZSB8IFByZWRlZmluZWRDb2xvcnMgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2NsYXNzJykgY2xhc3NMaXN0OiBzdHJpbmc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkZWJ1ZyA9IGZhbHNlO1xuICBASW5wdXQoKSBwYW5lbENsYXNzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBhbmVsV2lkdGg6IHN0cmluZztcblxuICBAT3V0cHV0KCdrZXl1cC5lbnRlcicpIG9uS2V5dXBFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWF0SW5wdXQnKSBtYXRJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlRmllbGQnKSBhdXRvY29tcGxldGVGaWVsZDogTWF0QXV0b2NvbXBsZXRlRmllbGQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jaGVja0FuZFJlc29sdmVGb3JtQ29udHJvbCgpO1xuXG4gICAgaWYgKCF0aGlzLl9kZWZpbml0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIG1hbmRhdG9yeSBhdHRyaWJ1dGUgJ2RlZmluaXRpb24nIGluIDxhcHAtZm9ybS1maWVsZD4uXCIpO1xuICAgIGlmICh0eXBlb2YgdGhpcy5fZGVmaW5pdGlvbiAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXR0cmlidXRlICdkZWZpbml0aW9uJyBpbiA8YXBwLWZvcm0tZmllbGQ+LiBTaG91bGQgYmUgYW4gb2JqZWN0LlwiKTtcbiAgICB0aGlzLl9vbkRlZmluaXRpb25DaGFuZ2VkKHRoaXMuX2RlZmluaXRpb24sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoKHRoaXMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHRoaXMudHlwZSA9PT0gJ2RvdWJsZScpICYmIE51bWJlci5pc05hTihvYmopKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9pZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhcIldBUk46IHRyeWluZyB0byBzZXQgTmFOIHZhbHVlLCBpbiBhbiA8YXBwLWZvcm0tZmllbGQ+ISBSZXNldCB0byBudWxsXCIpO1xuXG4gICAgICBvYmogPSBudWxsO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9iaiA9IG9iaiAhPT0gJ2ZhbHNlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICBvYmogPSB0b0RhdGVJU09TdHJpbmcob2JqKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudW1zJyAmJiBpc05vdE5pbChvYmopKSB7XG4gICAgICBsZXQgY2hhbmdlcyA9IGZhbHNlO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gYXJyYXlcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgb2JqID0gb2JqLnRyaW0oKS5zcGxpdCgvW3wsXSsvKTtcbiAgICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDb252ZXJ0IG9iamVjdCB0byBhcnJheVxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIG9iaiA9IFtvYmpdO1xuICAgICAgICAgIGNoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB1cGRhdGVkQXJyYXkgPSAob2JqIHx8IFtdKVxuICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVzLmZpbmQoKHYpID0+IHYua2V5ID09PSBpdGVtLnRyaW0oKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGlzTm90TmlsKTtcbiAgICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICAgIG9iaiA9IHVwZGF0ZWRBcnJheTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2VudGl0eScgJiYgaXNOaWxPckJsYW5rKG9iaikpIHtcbiAgICAgIG9iaiA9IG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdlbnRpdGllcycgJiYgaXNOb3ROaWwob2JqKSkge1xuICAgICAgbGV0IGNoYW5nZXMgPSBmYWxzZTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgdG8gYXJyYXlcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgb2JqID0gb2JqLnRyaW0oKTtcbiAgICAgICAgICBpZiAob2JqLnN0YXJ0c1dpdGgoJ1snKSAmJiBvYmouZW5kc1dpdGgoJ10nKSkge1xuICAgICAgICAgICAgb2JqID0gSlNPTi5wYXJzZShvYmopO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmogPSBvYmouc3BsaXQoL1t8LF0rLyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvbnZlcnQgb2JqZWN0IHRvIGFycmF5XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgb2JqID0gW29ial07XG4gICAgICAgICAgY2hhbmdlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHVwZGF0ZWRBcnJheSA9IChvYmogfHwgW10pXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnICYmIGl0ZW0uc3RhcnRzV2l0aCgneycpICYmIGl0ZW0uZW5kc1dpdGgoJ30nKSkge1xuICAgICAgICAgICAgaXRlbSA9IEpTT04ucGFyc2UoaXRlbSk7XG4gICAgICAgICAgICBjaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihpc05vdE5pbE9yQmxhbmspO1xuICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgb2JqID0gdXBkYXRlZEFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2JqICE9PSB0aGlzLmZvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9pZiAodGhpcy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhcIlNldCA8YXBwLWZvcm0tZmllbGQ+IHZhbHVlOiBcIiwgb2JqKTtcblxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9iaiwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayhvYmopO1xuICAgIH1cblxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkID09PSBpc0Rpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1hcmtBc1RvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyQWxwaGFudW1lcmljYWxJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInICYmIHRoaXMub25LZXl1cEVudGVyLm9ic2VydmVkKSB7XG4gICAgICB0aGlzLm9uS2V5dXBFbnRlci5lbWl0KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQWRkIGZlYXR1cmVzIChlLmcuIGNoZWNrIGFnYWluc3QgYSBwYXR0ZXJuKVxuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgaWYgKHRoaXMubWF0SW5wdXQpIHRoaXMubWF0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIGVsc2UgaWYgKHRoaXMuYXV0b2NvbXBsZXRlRmllbGQpIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQuZm9jdXMoKTtcbiAgfVxuXG4gIGZpbHRlck51bWJlcklucHV0ID0gZmlsdGVyTnVtYmVySW5wdXQ7XG4gIHNlbGVjdElucHV0Q29udGVudEZyb21FdmVudCA9IHNlbGVjdElucHV0Q29udGVudEZyb21FdmVudDtcblxuICBnZXREaXNwbGF5VmFsdWVGbihkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogRGlzcGxheUZuIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5hdXRvY29tcGxldGUgJiYgZGVmaW5pdGlvbi5hdXRvY29tcGxldGUuZGlzcGxheVdpdGgpIHtcbiAgICAgIHJldHVybiAob2JqOiBhbnkpID0+IGRlZmluaXRpb24uYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKG9iaik7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSAoZGVmaW5pdGlvbi5hdXRvY29tcGxldGUgJiYgZGVmaW5pdGlvbi5hdXRvY29tcGxldGUuYXR0cmlidXRlcykgfHwgWydsYWJlbCcsICduYW1lJ107XG4gICAgcmV0dXJuIChvYmo6IGFueSkgPT4gb2JqICYmIGpvaW5Qcm9wZXJ0aWVzUGF0aChvYmosIGF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgZ2V0Q29sb3JDb250cmFzdChjb2xvcjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaXNOb3ROaWxPckJsYW5rKGNvbG9yKSA/IGdldENvbG9yQ29udHJhc3QoY29sb3IsIHRydWUpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IHRvIHJlbG9hZCB2YWx1ZXMsIGlmIG5vdCBkZXRlY3RlZFxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIHJlbG9hZEl0ZW1zKHZhbHVlPzogYW55KSB7XG4gICAgaWYgKCF0aGlzLl9kZWZpbml0aW9uKSByZXR1cm47XG5cbiAgICB0aGlzLl9vbkRlZmluaXRpb25DaGFuZ2VkKHRoaXMuX2RlZmluaXRpb24pO1xuXG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlRmllbGQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdXRvY29tcGxldGVGaWVsZD8ucmVsb2FkSXRlbXModmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kIC0tICovXG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVOdW1iZXJJbnB1dFN0ZXAoZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbik6IHN0cmluZyB7XG4gICAgaWYgKGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzID4gMCkge1xuICAgICAgbGV0IHN0ZXAgPSAnMC4nO1xuICAgICAgaWYgKGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzID4gMSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZmluaXRpb24ubWF4aW11bU51bWJlckRlY2ltYWxzIC0gMTsgaSsrKSB7XG4gICAgICAgICAgc3RlcCArPSAnMCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0ZXAgKz0gJzEnO1xuICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnMSc7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrQW5kUmVzb2x2ZUZvcm1Db250cm9sKCkge1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sKSByZXR1cm47IC8vIE9LLCB0aGVyZSBpcyBhIGNvbnRyb2xcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cERpcikge1xuICAgICAgLy8gVHJ5IHRvIGZpbmQgdXNpbmcgZGVmaW5pdGlvbi5rZXksIGFzIGZvcm1Db250cm9sTmFtZVxuICAgICAgaWYgKCF0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLl9kZWZpbml0aW9uLmtleSkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sTmFtZSA9IHRoaXMuX2RlZmluaXRpb24ua2V5O1xuICAgICAgfVxuICAgICAgY29uc3QgZm9ybUNvbnRyb2xOYW1lID0gKHRoaXMuZm9ybUdyb3VwRGlyLmRpcmVjdGl2ZXMgfHwgW10pLmZpbmQoKGQpID0+IHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIGQubmFtZSA9PT0gdGhpcy5mb3JtQ29udHJvbE5hbWUpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IGZvcm1Db250cm9sTmFtZSAmJiBmb3JtQ29udHJvbE5hbWUuY29udHJvbDtcbiAgICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5mb3JtR3JvdXBEaXIuZm9ybS5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgYXR0cmlidXRlICdmb3JtQ29udHJvbCcgb3IgJ2Zvcm1Db250cm9sTmFtZScgaW4gPGFwcC1mb3JtLWZpZWxkPiBjb21wb25lbnQuXCIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfb25EZWZpbml0aW9uQ2hhbmdlZChkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLnR5cGUgPSBkZWZpbml0aW9uLnR5cGU7XG4gICAgaWYgKCF0aGlzLnR5cGUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXR0cmlidXRlICdkZWZpbml0aW9uJyBpbiA8YXBwLWZvcm0tZmllbGQ+LiBNaXNzaW5nIHR5cGUgIVwiKTtcblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyIHx8ICh0aGlzLl9kZWZpbml0aW9uLmxhYmVsICYmIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5fZGVmaW5pdGlvbi5sYWJlbCkpO1xuICAgIHRoaXMucmVxdWlyZWQgPSBpc05vdE5pbEJvb2xlYW4odGhpcy5yZXF1aXJlZClcbiAgICAgID8gdGhpcy5yZXF1aXJlZFxuICAgICAgOiB0aGlzLl9kZWZpbml0aW9uLnJlcXVpcmVkIHx8IHRoaXMuZm9ybUNvbnRyb2w/LnZhbGlkYXRvciA9PT0gVmFsaWRhdG9ycy5yZXF1aXJlZCB8fCBpc0JsYW5rU3RyaW5nKHRoaXMucmVxdWlyZWQpO1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0b0Jvb2xlYW4odGhpcy5kaXNhYmxlZCwgdG9Cb29sZWFuKHRoaXMuX2RlZmluaXRpb24uZGlzYWJsZWQsIGZhbHNlKSk7XG5cbiAgICAvLyBkb3VibGVcbiAgICBpZiAodGhpcy50eXBlID09PSAnZG91YmxlJykge1xuICAgICAgdGhpcy5udW1iZXJJbnB1dFN0ZXAgPSB0aGlzLmNvbXB1dGVOdW1iZXJJbnB1dFN0ZXAoZGVmaW5pdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubnVtYmVySW5wdXRTdGVwID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBlbnVtIChvciBlbnVtcylcbiAgICBpZiAodGhpcy50eXBlID09PSAnZW51bScgfHwgdGhpcy50eXBlID09PSAnZW51bXMnKSB7XG4gICAgICAvLyBSZXNvbHZlIGVudW0gdmFsdWVzXG4gICAgICB0aGlzLl92YWx1ZXMgPSBGb3JtRmllbGREZWZpbml0aW9uVXRpbHMuZ2V0RW51bVZhbHVlcyh0aGlzLmluamVjdG9yLCBkZWZpbml0aW9uLnZhbHVlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlcyA9IFtdO1xuICAgIH1cblxuICAgIC8vIFJlcGFpbnRcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vIFJlY29tcHV0ZSB0YWIgaW5kZXgsIGJlY2F1c2UgaWYgdHlwZSBjaGFuZ2VkLCB0aGVuIG1hdElucHV0IGNhbiBoYXZlIGNoYW5nZWRcbiAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KDEwMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVGFiSW5kZXgodGltZW91dD86IG51bWJlcikge1xuICAgIGlmICh0aGlzLnRhYmluZGV4ICYmIHRoaXMudGFiaW5kZXggIT09IC0xKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGFzSW5wdXRFbGVtZW50KHRoaXMubWF0SW5wdXQpO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSB0aGlzLnRhYmluZGV4O1xuICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRvY29tcGxldGVGaWVsZCkge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQudGFiaW5kZXggPSB0aGlzLnRhYmluZGV4O1xuICAgICAgICB9XG4gICAgICB9LCB0aW1lb3V0IHx8IDApO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuICA8IS0tIGludGVnZXIgLS0+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgICpuZ1N3aXRjaENhc2U9XCInaW50ZWdlcidcIlxuICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gID5cbiAgICBAaWYgKHBsYWNlaG9sZGVyICYmIGZsb2F0TGFiZWwgIT09ICduZXZlcicpIHtcbiAgICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cbiAgICB9XG5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICAjbWF0SW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbbWluXT1cImRlZmluaXRpb24ubWluVmFsdWVcIlxuICAgICAgW21heF09XCJkZWZpbml0aW9uLm1heFZhbHVlXCJcbiAgICAgIHBhdHRlcm49XCItP1swLTldKlwiXG4gICAgICBzdGVwPVwiMVwiXG4gICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogbnVsbFwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXl1cEVudGVyLmVtaXQoJGV2ZW50KVwiXG4gICAgICAoa2V5cHJlc3MpPVwiZmlsdGVyTnVtYmVySW5wdXQoJGV2ZW50LCBmYWxzZSlcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdElucHV0Q29udGVudEZyb21FdmVudCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWluJylcIj5cbiAgICAgIHt7IChjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01JTl9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NSU4nKSB8IHRyYW5zbGF0ZTogZm9ybUNvbnRyb2wuZXJyb3JzWydtaW4nXSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignbWF4JylcIj5cbiAgICAgIHt7IChjb21wYWN0ID8gJ0VSUk9SLkZJRUxEX01BWF9DT01QQUNUJyA6ICdFUlJPUi5GSUVMRF9NQVgnKSB8IHRyYW5zbGF0ZTogZm9ybUNvbnRyb2wuZXJyb3JzWydtYXgnXSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncGF0dGVybicpXCI+XG4gICAgICB7eyAnRVJST1IuRklFTERfTk9UX1ZBTElEX0lOVEVHRVInIHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdpbnRlZ2VyJylcIj5cbiAgICAgIHt7ICdFUlJPUi5GSUVMRF9OT1RfVkFMSURfSU5URUdFUicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1lcnJvcj5cblxuICAgIDxidXR0b25cbiAgICAgIG1hdFN1ZmZpeFxuICAgICAgKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImZvcm1Db250cm9sLnJlc2V0KClcIlxuICAgICAgW2hpZGRlbl09XCJmb3JtQ29udHJvbC5kaXNhYmxlZCB8fCAoZm9ybUNvbnRyb2wgfCBmb3JtR2V0VmFsdWUgfCBpc05pbE9yQmxhbmspXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIGRvdWJsZSAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidkb3VibGUnXCJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIlxuICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICA+XG4gICAgQGlmIChwbGFjZWhvbGRlciAmJiBmbG9hdExhYmVsICE9PSAnbmV2ZXInKSB7XG4gICAgICA8bWF0LWxhYmVsPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gICAgfVxuXG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgI21hdElucHV0XG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIGRlY2ltYWw9XCJ0cnVlXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICBbbWluXT1cImRlZmluaXRpb24ubWluVmFsdWVcIlxuICAgICAgW21heF09XCJkZWZpbml0aW9uLm1heFZhbHVlXCJcbiAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogbnVsbFwiXG4gICAgICBbc3RlcF09XCJudW1iZXJJbnB1dFN0ZXBcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5dXBFbnRlci5lbWl0KCRldmVudClcIlxuICAgICAgKGtleXByZXNzKT1cImZpbHRlck51bWJlcklucHV0KCRldmVudCwgdHJ1ZSlcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdElucHV0Q29udGVudEZyb21FdmVudCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcignZGVjaW1hbCcpXCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9ERUNJTUFMPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdtaW4nKVwiPlxuICAgICAge3sgKGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUlOX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01JTicpIHwgdHJhbnNsYXRlOiBmb3JtQ29udHJvbC5lcnJvcnNbJ21pbiddIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdtYXgnKVwiPlxuICAgICAge3sgKGNvbXBhY3QgPyAnRVJST1IuRklFTERfTUFYX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01BWCcpIHwgdHJhbnNsYXRlOiBmb3JtQ29udHJvbC5lcnJvcnNbJ21heCddIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmhhc0Vycm9yKCdtYXhEZWNpbWFscycpXCI+XG4gICAgICB7e1xuICAgICAgICAoY29tcGFjdCA/ICdFUlJPUi5GSUVMRF9NQVhJTVVNX0RFQ0lNQUxTX0NPTVBBQ1QnIDogJ0VSUk9SLkZJRUxEX01BWElNVU1fREVDSU1BTFMnKVxuICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IG1heERlY2ltYWxzOiBkZWZpbml0aW9uLm1heGltdW1OdW1iZXJEZWNpbWFscyB9XG4gICAgICB9fVxuICAgIDwvbWF0LWVycm9yPlxuXG4gICAgPGJ1dHRvblxuICAgICAgbWF0U3VmZml4XG4gICAgICAqbmdJZj1cImNsZWFyYWJsZVwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiZm9ybUNvbnRyb2wucmVzZXQoKVwiXG4gICAgICBbaGlkZGVuXT1cImZvcm1Db250cm9sLmRpc2FibGVkIHx8IChmb3JtQ29udHJvbCB8IGZvcm1HZXRWYWx1ZSB8IGlzTmlsT3JCbGFuaylcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIGJvb2xlYW4gLS0+XG4gIDxtYXQtYm9vbGVhbi1maWVsZFxuICAgICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIlxuICAgICNtYXRJbnB1dFxuICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gID5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1ib29sZWFuLWZpZWxkPlxuXG4gIDwhLS0gZGF0ZSAtLT5cbiAgPG1hdC1kYXRlLWZpZWxkXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiXG4gICAgI21hdElucHV0XG4gICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiY29tcGFjdCA/ICgnQ09NTU9OLkRBVEVfUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlKSA6IHBsYWNlaG9sZGVyXCJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgPlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWRhdGUtZmllbGQ+XG5cbiAgPCEtLSBkYXRlIHRpbWUgLS0+XG4gIDxtYXQtZGF0ZS10aW1lLWZpZWxkXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIlxuICAgICNtYXRJbnB1dFxuICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cImNvbXBhY3QgPyAoJ0NPTU1PTi5EQVRFX1RJTUVfUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlKSA6IHBsYWNlaG9sZGVyXCJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgPlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWRhdGUtdGltZS1maWVsZD5cblxuICA8IS0tIGVudW0gLS0+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgICpuZ1N3aXRjaENhc2U9XCInZW51bSdcIlxuICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgPlxuICAgIEBpZiAocGxhY2Vob2xkZXIgJiYgZmxvYXRMYWJlbCAhPT0gJ25ldmVyJykge1xuICAgICAgPG1hdC1sYWJlbD57eyBwbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuICAgIH1cbiAgICBAaWYgKHJlYWRvbmx5KSB7XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHk9XCJ0cnVlXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgLz5cbiAgICAgIDxpb24tdGV4dD57eyBmb3JtQ29udHJvbC52YWx1ZSB9fTwvaW9uLXRleHQ+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bWF0LXNlbGVjdFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogbnVsbFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJvbktleXVwRW50ZXIuZW1pdCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgX3ZhbHVlc1wiIFt2YWx1ZV09XCJpdGVtLmtleVwiPnt7IGl0ZW0udmFsdWUgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgfVxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gbXVsdGkgZW51bSAtLT5cbiAgPG1hdC1jaGlwcy1maWVsZFxuICAgICpuZ1N3aXRjaENhc2U9XCInZW51bXMnXCJcbiAgICBbY2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgIFtpdGVtc109XCJfdmFsdWVzXCJcbiAgICBbZGlzcGxheUF0dHJpYnV0ZXNdPVwiZGVmaW5pdGlvbi5hdXRvY29tcGxldGU/LmF0dHJpYnV0ZXMgfHwgWydrZXknLCAndmFsdWUnXVwiXG4gICAgW2NvbmZpZ109XCJkZWZpbml0aW9uLmF1dG9jb21wbGV0ZVwiXG4gICAgW3Nob3dBbGxPbkZvY3VzXT1cInRydWVcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbY2hpcENvbG9yXT1cImNoaXBDb2xvciB8IG1hdENvbG9yXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWNoaXBzLWZpZWxkPlxuXG4gIDwhLS0gY29sb3IgLS0+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgICpuZ1N3aXRjaENhc2U9XCInY29sb3InXCJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIlxuICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICA+XG4gICAgPGlvbi1pY29uIG1hcmdpbi1yaWdodCBuYW1lPVwiY29sb3ItZmlsbFwiIG1hdFByZWZpeD48L2lvbi1pY29uPlxuXG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiZ2V0Q29sb3JDb250cmFzdChmb3JtQ29udHJvbC52YWx1ZSlcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZm9ybUNvbnRyb2wudmFsdWVcIlxuICAgICAgW2NvbG9yUGlja2VyXT1cImZvcm1Db250cm9sLnZhbHVlXCJcbiAgICAgIChjb2xvclBpY2tlckNoYW5nZSk9XCJ3cml0ZVZhbHVlKCRldmVudClcIlxuICAgICAgW2NwU2F2ZUNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgIGNwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgY3BPdXRwdXRGb3JtYXQ9XCJoZXhcIlxuICAgICAgW2NwT0tCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgLz5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIHN0cmluZyAtLT5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidzdHJpbmcnXCJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIlxuICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICA+XG4gICAgQGlmIChwbGFjZWhvbGRlciAmJiBmbG9hdExhYmVsICE9PSAnbmV2ZXInKSB7XG4gICAgICA8bWF0LWxhYmVsPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gICAgfVxuICAgIDxpbnB1dFxuICAgICAgbWF0SW5wdXRcbiAgICAgICNtYXRJbnB1dFxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyA/IHBsYWNlaG9sZGVyIDogbnVsbFwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFt0YWJJbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0SW5wdXRDb250ZW50RnJvbUV2ZW50KCRldmVudClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5dXBFbnRlci5lbWl0KCRldmVudClcIlxuICAgICAgKGtleXByZXNzKT1cImZpbHRlckFscGhhbnVtZXJpY2FsSW5wdXQoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgIDxidXR0b25cbiAgICAgIG1hdFN1ZmZpeFxuICAgICAgKm5nSWY9XCJjbGVhcmFibGVcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImZvcm1Db250cm9sLnJlc2V0KClcIlxuICAgICAgW2hpZGRlbl09XCJmb3JtQ29udHJvbC5kaXNhYmxlZCB8fCAoZm9ybUNvbnRyb2wgfCBmb3JtR2V0VmFsdWUgfCBpc05pbE9yQmxhbmspXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIGF1dG8tY29tcGxldGUgLS0+XG4gIDxtYXQtYXV0b2NvbXBsZXRlLWZpZWxkXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidlbnRpdHknXCJcbiAgICAjYXV0b2NvbXBsZXRlRmllbGRcbiAgICBbY2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwiaGlkZVJlcXVpcmVkTWFya2VyXCJcbiAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIChrZXl1cC5lbnRlcik9XCJvbktleXVwRW50ZXIuZW1pdCgkZXZlbnQpXCJcbiAgICBbZGlzcGxheVdpdGhdPVwiZ2V0RGlzcGxheVZhbHVlRm4oZGVmaW5pdGlvbilcIlxuICAgIFtwYW5lbENsYXNzXT1cInBhbmVsQ2xhc3NcIlxuICAgIFtwYW5lbFdpZHRoXT1cInBhbmVsV2lkdGhcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZS1maWVsZD5cblxuICA8IS0tIG11bHRpIGF1dG8tY29tcGxldGUgLS0+XG4gIDxtYXQtY2hpcHMtZmllbGRcbiAgICAqbmdTd2l0Y2hDYXNlPVwiJ2VudGl0aWVzJ1wiXG4gICAgW2NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICBbY29uZmlnXT1cImRlZmluaXRpb24uYXV0b2NvbXBsZXRlXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtjaGlwQ29sb3JdPVwiY2hpcENvbG9yIHwgbWF0Q29sb3JcIlxuICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICBbZGlzcGxheVdpdGhdPVwiZ2V0RGlzcGxheVZhbHVlRm4oZGVmaW5pdGlvbilcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW3BhbmVsQ2xhc3NdPVwicGFuZWxDbGFzc1wiXG4gICAgW3BhbmVsV2lkdGhdPVwicGFuZWxXaWR0aFwiXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L21hdC1jaGlwcy1maWVsZD5cblxuICA8IS0tIG90aGVyIC0tPlxuICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cInR5cGVcIj5cbiAgICAgIFVua25vd24gdHlwZSB7eyB0eXBlIH19IGZvciBvcHRpb24ge3sgZGVmaW5pdGlvbi5rZXkgfX0uIFBsZWFzZSByZXBvcnQgdGhpcyBlcnJvci5cbiAgICA8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiIXR5cGVcIj5FcnJvciBvbiBvcHRpb24gZmllbGQuIFBsZWFzZSBjaGVjayBjb25zb2xlIGxvZyBmb3IgZGV0YWlscy48L21hdC1lcnJvcj5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19