@sumaris-net/ngx-components 2.7.3-rc8 → 2.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/esm2022/src/app/admin/admin-routing.module.mjs +4 -4
  2. package/esm2022/src/app/admin/admin.module.mjs +4 -4
  3. package/esm2022/src/app/admin/services/person.service.mjs +3 -3
  4. package/esm2022/src/app/admin/services/validator/person.validator.mjs +3 -3
  5. package/esm2022/src/app/admin/users/users.mjs +4 -4
  6. package/esm2022/src/app/admin/users/users.module.mjs +4 -4
  7. package/esm2022/src/app/core/about/about.modal.mjs +3 -3
  8. package/esm2022/src/app/core/about/about.module.mjs +4 -4
  9. package/esm2022/src/app/core/account/account.module.mjs +4 -4
  10. package/esm2022/src/app/core/account/account.page.mjs +3 -3
  11. package/esm2022/src/app/core/account/new-token.modal.mjs +3 -3
  12. package/esm2022/src/app/core/account/token.table.mjs +3 -3
  13. package/esm2022/src/app/core/auth/auth.form.mjs +3 -3
  14. package/esm2022/src/app/core/auth/auth.modal.mjs +3 -3
  15. package/esm2022/src/app/core/auth/auth.module.mjs +4 -4
  16. package/esm2022/src/app/core/core.module.mjs +4 -4
  17. package/esm2022/src/app/core/core.testing.module.mjs +4 -4
  18. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +3 -3
  19. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +4 -4
  20. package/esm2022/src/app/core/form/entity/editor.class.mjs +6 -6
  21. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +3 -3
  22. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +3 -3
  23. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +3 -3
  24. package/esm2022/src/app/core/form/entity/entity.module.mjs +4 -4
  25. package/esm2022/src/app/core/form/form.class.mjs +3 -3
  26. package/esm2022/src/app/core/form/form.module.mjs +4 -4
  27. package/esm2022/src/app/core/form/list/list.form.mjs +3 -3
  28. package/esm2022/src/app/core/form/list/list.module.mjs +4 -4
  29. package/esm2022/src/app/core/form/properties/properties.form.mjs +3 -3
  30. package/esm2022/src/app/core/form/properties/properties.module.mjs +4 -4
  31. package/esm2022/src/app/core/form/properties/properties.table.mjs +6 -6
  32. package/esm2022/src/app/core/form/properties/property.validator.mjs +3 -3
  33. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +3 -3
  34. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +4 -4
  35. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +3 -3
  36. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +4 -4
  37. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +3 -3
  38. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +4 -4
  39. package/esm2022/src/app/core/graphql/graphql.module.mjs +4 -4
  40. package/esm2022/src/app/core/graphql/graphql.service.mjs +3 -3
  41. package/esm2022/src/app/core/home/home.mjs +5 -5
  42. package/esm2022/src/app/core/home/home.module.mjs +4 -4
  43. package/esm2022/src/app/core/icon/icon.component.mjs +3 -3
  44. package/esm2022/src/app/core/icon/icon.module.mjs +4 -4
  45. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +3 -3
  46. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +4 -4
  47. package/esm2022/src/app/core/menu/menu.component.mjs +5 -5
  48. package/esm2022/src/app/core/menu/menu.module.mjs +4 -4
  49. package/esm2022/src/app/core/menu/menu.service.mjs +3 -3
  50. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +3 -3
  51. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +7 -6
  52. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +42 -7
  53. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +4 -4
  54. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +3 -3
  55. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +4 -4
  56. package/esm2022/src/app/core/peer/select-peer.modal.mjs +3 -3
  57. package/esm2022/src/app/core/peer/select-peer.module.mjs +4 -4
  58. package/esm2022/src/app/core/register/register-confirm.page.mjs +3 -3
  59. package/esm2022/src/app/core/register/register.form.mjs +3 -3
  60. package/esm2022/src/app/core/register/register.modal.mjs +3 -3
  61. package/esm2022/src/app/core/register/register.module.mjs +4 -4
  62. package/esm2022/src/app/core/services/account.service.mjs +3 -3
  63. package/esm2022/src/app/core/services/auth-guard.service.mjs +3 -3
  64. package/esm2022/src/app/core/services/base-entity-service.class.mjs +3 -3
  65. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +3 -3
  66. package/esm2022/src/app/core/services/config/core.config.mjs +7 -1
  67. package/esm2022/src/app/core/services/config.service.mjs +3 -3
  68. package/esm2022/src/app/core/services/crypto.service.mjs +3 -3
  69. package/esm2022/src/app/core/services/local-settings.service.mjs +17 -4
  70. package/esm2022/src/app/core/services/model/settings.model.mjs +1 -1
  71. package/esm2022/src/app/core/services/network.service.mjs +3 -3
  72. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +8 -8
  73. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +4 -4
  74. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +4 -4
  75. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +4 -4
  76. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +3 -3
  77. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +8 -8
  78. package/esm2022/src/app/core/services/platform.service.mjs +3 -3
  79. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +3 -3
  80. package/esm2022/src/app/core/services/testing/referential.validator.mjs +3 -3
  81. package/esm2022/src/app/core/services/validator/account.validator.mjs +3 -3
  82. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +3 -3
  83. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +12 -10
  84. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +3 -3
  85. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +3 -3
  86. package/esm2022/src/app/core/settings/settings.module.mjs +4 -4
  87. package/esm2022/src/app/core/settings/settings.page.mjs +13 -5
  88. package/esm2022/src/app/core/table/actions-column.component.mjs +3 -3
  89. package/esm2022/src/app/core/table/async-table.class.mjs +3 -3
  90. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +3 -3
  91. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +3 -3
  92. package/esm2022/src/app/core/table/memory-table.class.mjs +3 -3
  93. package/esm2022/src/app/core/table/table-select-columns.component.mjs +3 -3
  94. package/esm2022/src/app/core/table/table.class.mjs +3 -3
  95. package/esm2022/src/app/core/table/table.module.mjs +4 -4
  96. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +7 -4
  97. package/esm2022/src/app/core/table/testing/table.testing.mjs +42 -23
  98. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +4 -4
  99. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +3 -3
  100. package/esm2022/src/app/core/table/testing/table2.testing.mjs +4 -4
  101. package/esm2022/src/app/shared/audio/audio.mjs +3 -3
  102. package/esm2022/src/app/shared/audio/audio.testing.mjs +3 -3
  103. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +4 -4
  104. package/esm2022/src/app/shared/capacitor/keyboard.mjs +3 -3
  105. package/esm2022/src/app/shared/debug/debug.component.mjs +3 -3
  106. package/esm2022/src/app/shared/debug/debug.module.mjs +4 -4
  107. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +3 -3
  108. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +3 -3
  109. package/esm2022/src/app/shared/directives/directives.module.mjs +4 -4
  110. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +3 -3
  111. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +3 -3
  112. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +3 -3
  113. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +3 -3
  114. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
  115. package/esm2022/src/app/shared/file/file.service.mjs +3 -3
  116. package/esm2022/src/app/shared/form/field.component.mjs +12 -9
  117. package/esm2022/src/app/shared/form/loading-spinner.mjs +3 -3
  118. package/esm2022/src/app/shared/gesture/gesture-config.mjs +3 -3
  119. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +3 -3
  120. package/esm2022/src/app/shared/help/help.modal.mjs +3 -3
  121. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +3 -3
  122. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +3 -3
  123. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +4 -4
  124. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +3 -3
  125. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +4 -4
  126. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +3 -3
  127. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +3 -3
  128. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +4 -4
  129. package/esm2022/src/app/shared/image/image.module.mjs +4 -4
  130. package/esm2022/src/app/shared/image/image.service.mjs +3 -3
  131. package/esm2022/src/app/shared/logging/logging-service.class.mjs +3 -3
  132. package/esm2022/src/app/shared/logging/logging-service.module.mjs +4 -4
  133. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +11 -8
  134. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +4 -4
  135. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +25 -21
  136. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +3 -3
  137. package/esm2022/src/app/shared/material/badge/badge.module.mjs +4 -4
  138. package/esm2022/src/app/shared/material/badge/badge.test.mjs +3 -3
  139. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +4 -4
  140. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +5 -5
  141. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +8 -5
  142. package/esm2022/src/app/shared/material/chips/chips.module.mjs +4 -4
  143. package/esm2022/src/app/shared/material/chips/material.chips.mjs +6 -6
  144. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +6 -5
  145. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +4 -4
  146. package/esm2022/src/app/shared/material/datetime/material.date.mjs +14 -6
  147. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +5 -5
  148. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +72 -43
  149. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +18 -17
  150. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +14 -13
  151. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +11 -12
  152. package/esm2022/src/app/shared/material/duration/duration.module.mjs +4 -4
  153. package/esm2022/src/app/shared/material/duration/material.duration.mjs +11 -12
  154. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +10 -11
  155. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +18 -13
  156. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +4 -4
  157. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +9 -5
  158. package/esm2022/src/app/shared/material/material.config.mjs +2 -1
  159. package/esm2022/src/app/shared/material/material.module.mjs +4 -4
  160. package/esm2022/src/app/shared/material/material.testing.module.mjs +4 -4
  161. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +3 -3
  162. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +3 -3
  163. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +12 -12
  164. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +4 -4
  165. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +3 -3
  166. package/esm2022/src/app/shared/material/testing/common.test.mjs +18 -14
  167. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +7 -6
  168. package/esm2022/src/app/shared/material/text/text-form.component.mjs +10 -6
  169. package/esm2022/src/app/shared/material/text/text-form.module.mjs +4 -4
  170. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +3 -3
  171. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +4 -4
  172. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +3 -3
  173. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +24 -24
  174. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +3 -3
  175. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +4 -4
  176. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +6 -6
  177. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +4 -4
  178. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +4 -4
  179. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +3 -3
  180. package/esm2022/src/app/shared/pipes/form.pipes.mjs +18 -18
  181. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +4 -4
  182. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +9 -9
  183. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +12 -12
  184. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +40 -19
  185. package/esm2022/src/app/shared/pipes/math.pipes.mjs +12 -12
  186. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +3 -3
  187. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +4 -4
  188. package/esm2022/src/app/shared/pipes/pipes.module.mjs +4 -4
  189. package/esm2022/src/app/shared/pipes/property.pipes.mjs +7 -7
  190. package/esm2022/src/app/shared/pipes/string.pipes.mjs +34 -32
  191. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +8 -8
  192. package/esm2022/src/app/shared/pipes/types.pipes.mjs +12 -12
  193. package/esm2022/src/app/shared/rx-state.module.mjs +4 -4
  194. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +3 -3
  195. package/esm2022/src/app/shared/services/progress-bar.service.mjs +3 -3
  196. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +3 -3
  197. package/esm2022/src/app/shared/services/startable-service.class.mjs +3 -3
  198. package/esm2022/src/app/shared/services/translate-context.service.mjs +3 -3
  199. package/esm2022/src/app/shared/shared-routing.module.mjs +7 -7
  200. package/esm2022/src/app/shared/shared.module.mjs +4 -4
  201. package/esm2022/src/app/shared/shared.testing.module.mjs +4 -4
  202. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +3 -3
  203. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +4 -4
  204. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +4 -4
  205. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +4 -4
  206. package/esm2022/src/app/shared/storage/storage.service.mjs +3 -3
  207. package/esm2022/src/app/shared/testing/observable.test.mjs +3 -3
  208. package/esm2022/src/app/shared/testing/tests.page.mjs +3 -3
  209. package/esm2022/src/app/shared/toast/toast.testing.mjs +3 -3
  210. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +4 -4
  211. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +3 -3
  212. package/esm2022/src/app/shared/toolbar/toolbar.mjs +3 -3
  213. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +4 -4
  214. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +3 -3
  215. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +4 -4
  216. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +3 -3
  217. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +3 -3
  218. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +3 -3
  219. package/esm2022/src/app/social/job/job.module.mjs +4 -4
  220. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +3 -3
  221. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +8 -4
  222. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +3 -3
  223. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +11 -7
  224. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +3 -3
  225. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +3 -3
  226. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +4 -4
  227. package/esm2022/src/app/social/message/message.form.mjs +3 -3
  228. package/esm2022/src/app/social/message/message.modal.mjs +3 -3
  229. package/esm2022/src/app/social/message/message.module.mjs +4 -4
  230. package/esm2022/src/app/social/message/message.service.mjs +3 -3
  231. package/esm2022/src/app/social/social.module.mjs +4 -4
  232. package/esm2022/src/app/social/social.testing.module.mjs +4 -4
  233. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +14 -12
  234. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +3 -3
  235. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +3 -3
  236. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +4 -4
  237. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +3 -3
  238. package/esm2022/src/app/social/user-event/user-event.module.mjs +4 -4
  239. package/esm2022/src/app/social/user-event/user-event.service.mjs +8 -6
  240. package/esm2022/src/environments/environment.class.mjs +4 -2
  241. package/esm2022/src/environments/environment.loader.mjs +3 -3
  242. package/esm2022/src/environments/environment.mjs +3 -1
  243. package/fesm2022/sumaris-net.ngx-components.mjs +1367 -1174
  244. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  245. package/package.json +11 -11
  246. package/src/app/core/menu/testing/menu-other.testing.d.ts +1 -1
  247. package/src/app/core/menu/testing/menu.testing.d.ts +10 -2
  248. package/src/app/core/services/config/core.config.d.ts +1 -0
  249. package/src/app/core/services/local-settings.service.d.ts +2 -0
  250. package/src/app/core/services/model/settings.model.d.ts +1 -0
  251. package/src/app/core/settings/settings.page.d.ts +2 -0
  252. package/src/app/shared/form/field.component.d.ts +5 -3
  253. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +1 -0
  254. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +3 -2
  255. package/src/app/shared/material/datetime/material.date.d.ts +3 -2
  256. package/src/app/shared/material/datetime/material.dateshort.d.ts +1 -1
  257. package/src/app/shared/material/datetime/material.datetime.d.ts +25 -22
  258. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +2 -2
  259. package/src/app/shared/material/duration/material.duration.d.ts +1 -1
  260. package/src/app/shared/material/latlong/material.latlong.d.ts +5 -3
  261. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +4 -0
  262. package/src/app/shared/material/material.config.d.ts +2 -1
  263. package/src/app/shared/material/text/text-form.component.d.ts +3 -1
  264. package/src/app/shared/pipes/string.pipes.d.ts +2 -1
  265. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +4 -4
  266. package/src/assets/i18n/en-US.json +1 -0
  267. package/src/assets/i18n/en.json +1 -0
  268. package/src/assets/i18n/fr.json +1 -0
  269. package/src/assets/manifest.json +1 -1
  270. package/src/environments/environment.class.d.ts +2 -1
  271. package/src/theme/_ionic.globals.scss +4 -1
  272. package/src/theme/_material.globals.scss +1 -36
  273. package/src/theme/_material.scss +31 -8
  274. package/src/theme/_mixins.scss +20 -5
  275. package/src/theme/_ngx-components.forms.scss +203 -0
  276. package/src/theme/_ngx-components.globals.scss +10 -7
  277. package/src/theme/_ngx-components.scss +6 -198
  278. package/src/theme/_ngx-components.table.scss +137 -143
  279. package/src/theme/_ngx-components.tabs.scss +16 -1
  280. package/src/theme/_theme.scss +1 -0
  281. package/src/theme/_theme.variables.scss +170 -0
@@ -20,6 +20,7 @@ export class LatLongTestPage {
20
20
  form;
21
21
  geoPositionMessage;
22
22
  mode = 'desktop';
23
+ appearance = 'fill';
23
24
  constructor(formBuilder, platform) {
24
25
  this.formBuilder = formBuilder;
25
26
  this.platform = platform;
@@ -102,12 +103,15 @@ export class LatLongTestPage {
102
103
  }
103
104
  }, 5000);
104
105
  }
106
+ toggleAppearance(event) {
107
+ this.appearance = event.checked ? 'outline' : 'fill';
108
+ }
105
109
  stringify = JSON.stringify;
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: LatLongTestPage, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.PlatformService }], target: i0.ɵɵFactoryTarget.Component });
107
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: LatLongTestPage, selector: "app-latlong-test", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- Tab nav - desktop mode -->\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link [active]=\"mode === 'desktop'\" (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'temp'\" (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form #tabPanel class=\"form-container ion-padding\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <ng-container *ngIf=\"mode === 'desktop'\">\n <!-- Empty value -->\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Empty, with defaults</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM, defaultSign '+'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form | formGetGroup: 'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row>\n <ion-col>\n <ion-text><h4>With value</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMMSS</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form | formGetGroup: 'disable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Disabled control</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled control</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly (control is enable)</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"readonlyField.readonly = $event.checked\"\n [checked]=\"readonlyField.readonly\"\n ></mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n </ng-container>\n\n <!-- Temporay TAB (for DEV) -->\n <ng-container *ngIf=\"mode === 'temp'\">\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"- \"\n [required]=\"true\"\n placeholder=\"Latitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"- \"\n placeholder=\"Longitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </form>\n </ng-container>\n </form>\n</ion-content>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonRow, selector: "ion-row" }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i9.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i9.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i10.MatLatLongField, selector: "mat-latlong-field", inputs: ["formControl", "formControlName", "type", "latLongPattern", "required", "floatLabel", "appearance", "placeholder", "tabindex", "defaultSign", "maxDecimals", "placeholderChar", "autofocus", "readonly", "subscriptSizing"], outputs: ["onBlur", "onFocus"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }, { kind: "pipe", type: i11.FormGetControlPipe, name: "formGetControl" }, { kind: "pipe", type: i11.FormGetGroupPipe, name: "formGetGroup" }] });
110
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LatLongTestPage, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.PlatformService }], target: i0.ɵɵFactoryTarget.Component });
111
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: LatLongTestPage, selector: "app-latlong-test", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- Tab nav - desktop mode -->\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link [active]=\"mode === 'desktop'\" (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'temp'\" (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form #tabPanel class=\"form-container ion-padding\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <ng-container *ngIf=\"mode === 'desktop'\">\n <!-- Empty value -->\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <mat-checkbox (change)=\"toggleAppearance($event)\">Change apparence</mat-checkbox>\n </ion-col>\n </ion-row>\n\n\n <ion-row>\n <ion-col>\n <ion-text><h4>Empty, with defaults</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM, defaultSign '+'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form | formGetGroup: 'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row>\n <ion-col>\n <ion-text><h4>With value</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMMSS</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form | formGetGroup: 'disable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Disabled control</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled control</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly (control is enable)</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"readonlyField.readonly = $event.checked\"\n [checked]=\"readonlyField.readonly\"\n ></mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">With hint</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-hint align=\"end\">This is a long long hint</mat-hint>\n </mat-latlong-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n </ng-container>\n\n <!-- Temporay TAB (for DEV) -->\n <ng-container *ngIf=\"mode === 'temp'\">\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"- \"\n [required]=\"true\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"- \"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </form>\n </ng-container>\n </form>\n</ion-content>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i4.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i4.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonRow, selector: "ion-row" }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i9.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i9.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i10.MatLatLongField, selector: "mat-latlong-field", inputs: ["formControl", "formControlName", "type", "latLongPattern", "required", "floatLabel", "placeholder", "tabindex", "defaultSign", "maxDecimals", "placeholderChar", "autofocus", "appearance", "readonly", "subscriptSizing"], outputs: ["onBlur", "onFocus"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }, { kind: "pipe", type: i11.FormGetControlPipe, name: "formGetControl" }, { kind: "pipe", type: i11.FormGetGroupPipe, name: "formGetGroup" }] });
108
112
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: LatLongTestPage, decorators: [{
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LatLongTestPage, decorators: [{
110
114
  type: Component,
111
- args: [{ selector: 'app-latlong-test', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- Tab nav - desktop mode -->\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link [active]=\"mode === 'desktop'\" (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'temp'\" (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form #tabPanel class=\"form-container ion-padding\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <ng-container *ngIf=\"mode === 'desktop'\">\n <!-- Empty value -->\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Empty, with defaults</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM, defaultSign '+'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form | formGetGroup: 'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row>\n <ion-col>\n <ion-text><h4>With value</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMMSS</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form | formGetGroup: 'disable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Disabled control</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled control</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly (control is enable)</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"readonlyField.readonly = $event.checked\"\n [checked]=\"readonlyField.readonly\"\n ></mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n </ng-container>\n\n <!-- Temporay TAB (for DEV) -->\n <ng-container *ngIf=\"mode === 'temp'\">\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"- \"\n [required]=\"true\"\n placeholder=\"Latitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"- \"\n placeholder=\"Longitude\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </form>\n </ng-container>\n </form>\n</ion-content>\n" }]
115
+ args: [{ selector: 'app-latlong-test', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <!-- Tab nav - desktop mode -->\n <nav mat-tab-nav-bar [tabPanel]=\"tabPanel\">\n <a mat-tab-link [active]=\"mode === 'desktop'\" (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode === 'temp'\" (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form #tabPanel class=\"form-container ion-padding\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n <ng-container *ngIf=\"mode === 'desktop'\">\n <!-- Empty value -->\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <mat-checkbox (change)=\"toggleAppearance($event)\">Change apparence</mat-checkbox>\n </ion-col>\n </ion-row>\n\n\n <ion-row>\n <ion-col>\n <ion-text><h4>Empty, with defaults</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM, defaultSign '+'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form | formGetGroup: 'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row>\n <ion-col>\n <ion-text><h4>With value</h4></ion-text>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMM</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DDMMSS</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n ></mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form | formGetGroup: 'disable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text><h4>Disabled control</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Disabled control</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ stringify(formGroup.value) }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Readonly (control is enable)</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox\n (change)=\"readonlyField.readonly = $event.checked\"\n [checked]=\"readonlyField.readonly\"\n ></mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">With hint</ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-latlong-field\n #readonlyField\n [formControl]=\"form | formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-hint align=\"end\">This is a long long hint</mat-hint>\n </mat-latlong-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n </ng-container>\n\n <!-- Temporay TAB (for DEV) -->\n <ng-container *ngIf=\"mode === 'temp'\">\n <form *ngIf=\"form | formGetGroup: 'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">Format DD, defaultSign '-'</ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>{{ formGroup.value | json }}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field\n formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"- \"\n [required]=\"true\"\n placeholder=\"Latitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field\n formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"- \"\n placeholder=\"Longitude\"\n [appearance]=\"appearance\"\n >\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"geoPositionMessage\">\n <ion-col>{{ geoPositionMessage }}</ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </form>\n </ng-container>\n </form>\n</ion-content>\n" }]
112
116
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.PlatformService }] });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG9uZy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbGF0bG9uZy90ZXN0aW5nL2xhdGxvbmcudGVzdC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvdGVzdGluZy9sYXRsb25nLnRlc3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBd0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPMUUsTUFBTSxPQUFPLGVBQWU7SUFRZDtJQUNBO0lBUlosSUFBSSxDQUFtQjtJQUV2QixrQkFBa0IsQ0FBUztJQUUzQixJQUFJLEdBQUcsU0FBUyxDQUFDO0lBRWpCLFlBQ1ksV0FBK0IsRUFDL0IsUUFBeUI7UUFEekIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRW5DLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDdkIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RGLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ3pGLENBQUM7WUFDRixNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDeEIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztnQkFDM0MsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQzthQUM5QyxDQUFDO1lBQ0YsT0FBTyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7Z0JBQzNDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7YUFDOUMsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFM0Isb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxRQUFRO1FBQ04sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCwwQkFBMEI7SUFDMUIsS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLElBQUksR0FBRztZQUNYLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxTQUFTLEVBQUUsSUFBSTthQUNoQjtZQUNELE1BQU0sRUFBRTtnQkFDTixRQUFRLEVBQUUsSUFBSTtnQkFDZCxTQUFTLEVBQUUsQ0FBQyxDQUFDO2FBQ2Q7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNkO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFZLEVBQUUsV0FBb0I7UUFDbEQsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksVUFBa0IsQ0FBQztRQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN4RSxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsa0JBQWtCLEVBQUUsS0FBSzthQUMxQixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTNELFVBQVUsR0FBRyw2QkFBNkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2pFLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsVUFBVSxHQUFHLEdBQUcsRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDbEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELFVBQVUsR0FBRyx3QkFBd0IsVUFBVSxZQUFZLFFBQVEsSUFBSSxDQUFDO1FBQzFFLENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO1FBRXJDLGlDQUFpQztRQUNqQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzt1R0F2R2hCLGVBQWU7MkZBQWYsZUFBZSx3RENWNUIscXdoQkE2YUE7OzJGRG5hYSxlQUFlO2tCQUozQixTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaGFyZWRWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vLi4vdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgR2VvbG9jYXRpb25VdGlscyB9IGZyb20gJy4uLy4uLy4uL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLnV0aWxzJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sYXRsb25nLXRlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF0bG9uZy50ZXN0Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBMYXRMb25nVGVzdFBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIGdlb1Bvc2l0aW9uTWVzc2FnZTogc3RyaW5nO1xuXG4gIG1vZGUgPSAnZGVza3RvcCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZW1wdHk6IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgbGF0aXR1ZGU6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFNoYXJlZFZhbGlkYXRvcnMubGF0aXR1ZGVdKV0sXG4gICAgICAgIGxvbmdpdHVkZTogW251bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgU2hhcmVkVmFsaWRhdG9ycy5sb25naXR1ZGVdKV0sXG4gICAgICB9KSxcbiAgICAgIGVuYWJsZTogZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBsYXRpdHVkZTogW251bGwsIFNoYXJlZFZhbGlkYXRvcnMubGF0aXR1ZGVdLFxuICAgICAgICBsb25naXR1ZGU6IFtudWxsLCBTaGFyZWRWYWxpZGF0b3JzLmxvbmdpdHVkZV0sXG4gICAgICB9KSxcbiAgICAgIGRpc2FibGU6IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgbGF0aXR1ZGU6IFtudWxsLCBTaGFyZWRWYWxpZGF0b3JzLmxhdGl0dWRlXSxcbiAgICAgICAgbG9uZ2l0dWRlOiBbbnVsbCwgU2hhcmVkVmFsaWRhdG9ycy5sb25naXR1ZGVdLFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBjb25zdCBkaXNhYmxlRm9ybUdyb3VwID0gdGhpcy5mb3JtLmdldCgnZGlzYWJsZScpO1xuICAgIGRpc2FibGVGb3JtR3JvdXAuZGlzYWJsZSgpO1xuXG4gICAgLy8gQ29weSBlbmFibGUgdmFsdWUgdG8gZGlzYWJsZSBmb3JtXG4gICAgdGhpcy5mb3JtLmdldCgnZW5hYmxlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IGRpc2FibGVGb3JtR3JvdXAuc2V0VmFsdWUodmFsdWUpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sb2FkRGF0YSgpLCAyNTApO1xuICB9XG5cbiAgdG9nZ2xlTW9kZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLm1vZGUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLm1vZGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgLy8gTG9hZCB0aGUgZm9ybSB3aXRoIGRhdGFcbiAgYXN5bmMgbG9hZERhdGEoKSB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGVtcHR5OiB7XG4gICAgICAgIGxhdGl0dWRlOiBudWxsLFxuICAgICAgICBsb25naXR1ZGU6IG51bGwsXG4gICAgICB9LFxuICAgICAgZW5hYmxlOiB7XG4gICAgICAgIGxhdGl0dWRlOiA1MC4xLFxuICAgICAgICBsb25naXR1ZGU6IC0yLFxuICAgICAgfSxcbiAgICAgIGRpc2FibGU6IHtcbiAgICAgICAgbGF0aXR1ZGU6IDUwLjEsXG4gICAgICAgIGxvbmdpdHVkZTogLTIsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm0uc2V0VmFsdWUoZGF0YSk7XG4gIH1cblxuICBkb1N1Ym1pdChldmVudCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1ZhbGlkYXRlIGZvcm06ICcsIHRoaXMuZm9ybS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBnZW9Qb3NpdGlvbihldmVudDogRXZlbnQsIGNvbnRyb2xOYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnQ2xpY2sgb24gZ2VvTG9jYXRpb24gYnV0dG9uJywgZXZlbnQpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBsZXQgbG9nTWVzc2FnZTogc3RyaW5nO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSBhd2FpdCBHZW9sb2NhdGlvblV0aWxzLmdldEN1cnJlbnRQb3NpdGlvbih0aGlzLnBsYXRmb3JtLCB7XG4gICAgICAgIG1heGltdW1BZ2U6IDgwMDAwIC8qODBzKi8sXG4gICAgICAgIHRpbWVvdXQ6IDQwMDAwIC8qNDBzKi8sXG4gICAgICAgIGVuYWJsZUhpZ2hBY2N1cmFjeTogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5mb3JtLmdldChjb250cm9sTmFtZSB8fCAnZW1wdHknKS5wYXRjaFZhbHVlKHBvc2l0aW9uKTtcblxuICAgICAgbG9nTWVzc2FnZSA9IGBJTkZPIChnZW9sb2NhdGlvbik6IE9LIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2A7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dNZXNzYWdlID0gZXJyPy5tZXNzYWdlIHx8IGVycjtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIG5vdztcbiAgICAgIGlmICh0eXBlb2YgbG9nTWVzc2FnZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgbG9nTWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KGxvZ01lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgbG9nTWVzc2FnZSA9IGBFUlJPUiAoZ2VvbG9jYXRpb24pOiAke2xvZ01lc3NhZ2V9IC0gYWZ0ZXIgJHtkdXJhdGlvbn1tc2A7XG4gICAgfVxuXG4gICAgdGhpcy5nZW9Qb3NpdGlvbk1lc3NhZ2UgPSBsb2dNZXNzYWdlO1xuXG4gICAgLy8gQ2xlYW4gdGhlIGxvZyBtZXNzYWdlLCBpZiBzYW1lXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5nZW9Qb3NpdGlvbk1lc3NhZ2UgPT09IGxvZ01lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5nZW9Qb3NpdGlvbk1lc3NhZ2UgPSBudWxsO1xuICAgICAgfVxuICAgIH0sIDUwMDApO1xuICB9XG5cbiAgc3RyaW5naWZ5ID0gSlNPTi5zdHJpbmdpZnk7XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvbj48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZT5MYXQvTG9uZyBmaWVsZCB0ZXN0IHBhZ2U8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50PlxuICA8IS0tIFRhYiBuYXYgLSBkZXNrdG9wIG1vZGUgLS0+XG4gIDxuYXYgbWF0LXRhYi1uYXYtYmFyIFt0YWJQYW5lbF09XCJ0YWJQYW5lbFwiPlxuICAgIDxhIG1hdC10YWItbGluayBbYWN0aXZlXT1cIm1vZGUgPT09ICdkZXNrdG9wJ1wiIChjbGljayk9XCJ0b2dnbGVNb2RlKCdkZXNrdG9wJylcIj5cbiAgICAgIDxtYXQtbGFiZWw+RGVza3RvcDwvbWF0LWxhYmVsPlxuICAgIDwvYT5cbiAgICA8YSBtYXQtdGFiLWxpbmsgW2FjdGl2ZV09XCJtb2RlID09PSAndGVtcCdcIiAoY2xpY2spPVwidG9nZ2xlTW9kZSgndGVtcCcpXCI+XG4gICAgICA8bWF0LWxhYmVsPlRlbXBvcmFyeTwvbWF0LWxhYmVsPlxuICAgIDwvYT5cbiAgPC9uYXY+XG5cbiAgPGZvcm0gI3RhYlBhbmVsIGNsYXNzPVwiZm9ybS1jb250YWluZXIgaW9uLXBhZGRpbmdcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwiZG9TdWJtaXQoJGV2ZW50KVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09PSAnZGVza3RvcCdcIj5cbiAgICAgIDwhLS0gRW1wdHkgdmFsdWUgLS0+XG4gICAgICA8Zm9ybSAqbmdJZj1cImZvcm0gfCBmb3JtR2V0R3JvdXA6ICdlbXB0eScgYXMgZm9ybUdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgICAgPGlvbi1ncmlkPlxuICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgIDxpb24tdGV4dD48aDQ+RW1wdHksIHdpdGggZGVmYXVsdHM8L2g0PjwvaW9uLXRleHQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICA8IS0tIEREIERlZmF1bHQgc2lnbiAtLT5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5Gb3JtYXQgREQsIGRlZmF1bHRTaWduICctJzwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByZT57eyBmb3JtR3JvdXAudmFsdWUgfCBqc29uIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2lnbj1cIi1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5yb29tPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJnZW9Qb3NpdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmdwc19maXhlZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGF0bG9uZy1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhdGxvbmctZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2lnbj1cIi1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+cm9vbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImdlb1Bvc2l0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cImdlb1Bvc2l0aW9uTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPnt7IGdlb1Bvc2l0aW9uTWVzc2FnZSB9fTwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0gRERNTSBEZWZhdWx0IHNpZ24gLS0+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+Rm9ybWF0IERETU0sIGRlZmF1bHRTaWduICcrJzwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByZT57eyBzdHJpbmdpZnkoZm9ybUdyb3VwLnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhdGxvbmctZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkRETU1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2lnbj1cIitcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5yb29tPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCAoY2xpY2spPVwiZ2VvUG9zaXRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5ncHNfZml4ZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkRETU1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2lnbj1cIitcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+cm9vbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImdlb1Bvc2l0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgPC9mb3JtPlxuXG4gICAgICA8Zm9ybSAqbmdJZj1cImZvcm0gfCBmb3JtR2V0R3JvdXA6ICdlbmFibGUnIGFzIGZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgICA8IS0tIFdpdGggdmFsdWUgLS0+XG4gICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPGlvbi10ZXh0PjxoND5XaXRoIHZhbHVlPC9oND48L2lvbi10ZXh0PlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDwvaW9uLXJvdz5cblxuICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgPCEtLSBERCAtLT5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5Gb3JtYXQgREQ8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm1Hcm91cC52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkREXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJMb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgICAgPCEtLSBERE1NU1MgLS0+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+Rm9ybWF0IERETU08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm1Hcm91cC52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERE1NXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJMYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9tYXQtbGF0bG9uZy1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhdGxvbmctZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERNTVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0gRERNTVNTIC0tPlxuICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkZvcm1hdCBERE1NU1M8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm1Hcm91cC52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERE1NU1NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERE1NU1NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9tYXQtbGF0bG9uZy1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgIDwvZm9ybT5cblxuICAgICAgPCEtLSBEaXNhYmxlICAtLT5cbiAgICAgIDxmb3JtICpuZ0lmPVwiZm9ybSB8IGZvcm1HZXRHcm91cDogJ2Rpc2FibGUnIGFzIGZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLXRleHQ+PGg0PkRpc2FibGVkIGNvbnRyb2w8L2g0PjwvaW9uLXRleHQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkRpc2FibGVkIGNvbnRyb2w8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm1Hcm91cC52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERE1NXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJMYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+cm9vbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXg+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkRETU1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+cm9vbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImdlb1Bvc2l0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5SZWFkb25seSAoY29udHJvbCBpcyBlbmFibGUpPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInJlYWRvbmx5RmllbGQucmVhZG9ubHkgPSAkZXZlbnQuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlYWRvbmx5RmllbGQucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgPjwvbWF0LWNoZWNrYm94PlxuXG4gICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAjcmVhZG9ubHlGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybSB8IGZvcm1HZXRDb250cm9sOiAnZW5hYmxlLmxhdGl0dWRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERNTVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+cm9vbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXg+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFRlbXBvcmF5IFRBQiAoZm9yIERFVikgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICd0ZW1wJ1wiPlxuICAgICAgPGZvcm0gKm5nSWY9XCJmb3JtIHwgZm9ybUdldEdyb3VwOiAnZW1wdHknIGFzIGZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkZvcm1hdCBERCwgZGVmYXVsdFNpZ24gJy0nPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICA8cHJlPnt7IGZvcm1Hcm91cC52YWx1ZSB8IGpzb24gfX08L3ByZT5cbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERFwiXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaWduPVwiLSBcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4PnJvb208L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImdlb1Bvc2l0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERFwiXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaWduPVwiLSBcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+cm9vbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImdlb1Bvc2l0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cImdlb1Bvc2l0aW9uTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxpb24tY29sPnt7IGdlb1Bvc2l0aW9uTWVzc2FnZSB9fTwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG9uZy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbGF0bG9uZy90ZXN0aW5nL2xhdGxvbmcudGVzdC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvdGVzdGluZy9sYXRsb25nLnRlc3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBd0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTMUUsTUFBTSxPQUFPLGVBQWU7SUFTZDtJQUNBO0lBVFosSUFBSSxDQUFtQjtJQUV2QixrQkFBa0IsQ0FBUztJQUUzQixJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ2pCLFVBQVUsR0FBMkIsTUFBTSxDQUFDO0lBRTVDLFlBQ1ksV0FBK0IsRUFDL0IsUUFBeUI7UUFEekIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRW5DLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDdkIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RGLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ3pGLENBQUM7WUFDRixNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDeEIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztnQkFDM0MsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQzthQUM5QyxDQUFDO1lBQ0YsT0FBTyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7Z0JBQzNDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7YUFDOUMsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFM0Isb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxRQUFRO1FBQ04sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCwwQkFBMEI7SUFDMUIsS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLElBQUksR0FBRztZQUNYLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxTQUFTLEVBQUUsSUFBSTthQUNoQjtZQUNELE1BQU0sRUFBRTtnQkFDTixRQUFRLEVBQUUsSUFBSTtnQkFDZCxTQUFTLEVBQUUsQ0FBQyxDQUFDO2FBQ2Q7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNkO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFZLEVBQUUsV0FBb0I7UUFDbEQsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksVUFBa0IsQ0FBQztRQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN4RSxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsa0JBQWtCLEVBQUUsS0FBSzthQUMxQixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTNELFVBQVUsR0FBRyw2QkFBNkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2pFLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsVUFBVSxHQUFHLEdBQUcsRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDbEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELFVBQVUsR0FBRyx3QkFBd0IsVUFBVSxZQUFZLFFBQVEsSUFBSSxDQUFDO1FBQzFFLENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO1FBRXJDLGlDQUFpQztRQUNqQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzt1R0E1R2hCLGVBQWU7MkZBQWYsZUFBZSx3RENaNUIscWxsQkF5ZEE7OzJGRDdjYSxlQUFlO2tCQUozQixTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaGFyZWRWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vLi4vdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgR2VvbG9jYXRpb25VdGlscyB9IGZyb20gJy4uLy4uLy4uL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLnV0aWxzJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxhdGxvbmctdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXRsb25nLnRlc3QuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIExhdExvbmdUZXN0UGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgZ2VvUG9zaXRpb25NZXNzYWdlOiBzdHJpbmc7XG5cbiAgbW9kZSA9ICdkZXNrdG9wJztcbiAgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9ICdmaWxsJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZVxuICApIHtcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBlbXB0eTogZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBsYXRpdHVkZTogW251bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgU2hhcmVkVmFsaWRhdG9ycy5sYXRpdHVkZV0pXSxcbiAgICAgICAgbG9uZ2l0dWRlOiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBTaGFyZWRWYWxpZGF0b3JzLmxvbmdpdHVkZV0pXSxcbiAgICAgIH0pLFxuICAgICAgZW5hYmxlOiBmb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIGxhdGl0dWRlOiBbbnVsbCwgU2hhcmVkVmFsaWRhdG9ycy5sYXRpdHVkZV0sXG4gICAgICAgIGxvbmdpdHVkZTogW251bGwsIFNoYXJlZFZhbGlkYXRvcnMubG9uZ2l0dWRlXSxcbiAgICAgIH0pLFxuICAgICAgZGlzYWJsZTogZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBsYXRpdHVkZTogW251bGwsIFNoYXJlZFZhbGlkYXRvcnMubGF0aXR1ZGVdLFxuICAgICAgICBsb25naXR1ZGU6IFtudWxsLCBTaGFyZWRWYWxpZGF0b3JzLmxvbmdpdHVkZV0sXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRpc2FibGVGb3JtR3JvdXAgPSB0aGlzLmZvcm0uZ2V0KCdkaXNhYmxlJyk7XG4gICAgZGlzYWJsZUZvcm1Hcm91cC5kaXNhYmxlKCk7XG5cbiAgICAvLyBDb3B5IGVuYWJsZSB2YWx1ZSB0byBkaXNhYmxlIGZvcm1cbiAgICB0aGlzLmZvcm0uZ2V0KCdlbmFibGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gZGlzYWJsZUZvcm1Hcm91cC5zZXRWYWx1ZSh2YWx1ZSkpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWREYXRhKCksIDI1MCk7XG4gIH1cblxuICB0b2dnbGVNb2RlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMubW9kZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMubW9kZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICAvLyBMb2FkIHRoZSBmb3JtIHdpdGggZGF0YVxuICBhc3luYyBsb2FkRGF0YSgpIHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgZW1wdHk6IHtcbiAgICAgICAgbGF0aXR1ZGU6IG51bGwsXG4gICAgICAgIGxvbmdpdHVkZTogbnVsbCxcbiAgICAgIH0sXG4gICAgICBlbmFibGU6IHtcbiAgICAgICAgbGF0aXR1ZGU6IDUwLjEsXG4gICAgICAgIGxvbmdpdHVkZTogLTIsXG4gICAgICB9LFxuICAgICAgZGlzYWJsZToge1xuICAgICAgICBsYXRpdHVkZTogNTAuMSxcbiAgICAgICAgbG9uZ2l0dWRlOiAtMixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShkYXRhKTtcbiAgfVxuXG4gIGRvU3VibWl0KGV2ZW50KSB7XG4gICAgY29uc29sZS5kZWJ1ZygnVmFsaWRhdGUgZm9ybTogJywgdGhpcy5mb3JtLnZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIGdlb1Bvc2l0aW9uKGV2ZW50OiBFdmVudCwgY29udHJvbE5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdDbGljayBvbiBnZW9Mb2NhdGlvbiBidXR0b24nLCBldmVudCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGxldCBsb2dNZXNzYWdlOiBzdHJpbmc7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IGF3YWl0IEdlb2xvY2F0aW9uVXRpbHMuZ2V0Q3VycmVudFBvc2l0aW9uKHRoaXMucGxhdGZvcm0sIHtcbiAgICAgICAgbWF4aW11bUFnZTogODAwMDAgLyo4MHMqLyxcbiAgICAgICAgdGltZW91dDogNDAwMDAgLyo0MHMqLyxcbiAgICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5OiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmZvcm0uZ2V0KGNvbnRyb2xOYW1lIHx8ICdlbXB0eScpLnBhdGNoVmFsdWUocG9zaXRpb24pO1xuXG4gICAgICBsb2dNZXNzYWdlID0gYElORk8gKGdlb2xvY2F0aW9uKTogT0sgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ01lc3NhZ2UgPSBlcnI/Lm1lc3NhZ2UgfHwgZXJyO1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gbm93O1xuICAgICAgaWYgKHR5cGVvZiBsb2dNZXNzYWdlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBsb2dNZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkobG9nTWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBsb2dNZXNzYWdlID0gYEVSUk9SIChnZW9sb2NhdGlvbik6ICR7bG9nTWVzc2FnZX0gLSBhZnRlciAke2R1cmF0aW9ufW1zYDtcbiAgICB9XG5cbiAgICB0aGlzLmdlb1Bvc2l0aW9uTWVzc2FnZSA9IGxvZ01lc3NhZ2U7XG5cbiAgICAvLyBDbGVhbiB0aGUgbG9nIG1lc3NhZ2UsIGlmIHNhbWVcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdlb1Bvc2l0aW9uTWVzc2FnZSA9PT0gbG9nTWVzc2FnZSkge1xuICAgICAgICB0aGlzLmdlb1Bvc2l0aW9uTWVzc2FnZSA9IG51bGw7XG4gICAgICB9XG4gICAgfSwgNTAwMCk7XG4gIH1cblxuICB0b2dnbGVBcHBlYXJhbmNlKGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuYXBwZWFyYW5jZSA9IGV2ZW50LmNoZWNrZWQgPyAnb3V0bGluZScgOiAnZmlsbCc7XG4gIH1cblxuICBzdHJpbmdpZnkgPSBKU09OLnN0cmluZ2lmeTtcblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPkxhdC9Mb25nIGZpZWxkIHRlc3QgcGFnZTwvaW9uLXRpdGxlPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQ+XG4gIDwhLS0gVGFiIG5hdiAtIGRlc2t0b3AgbW9kZSAtLT5cbiAgPG5hdiBtYXQtdGFiLW5hdi1iYXIgW3RhYlBhbmVsXT1cInRhYlBhbmVsXCI+XG4gICAgPGEgbWF0LXRhYi1saW5rIFthY3RpdmVdPVwibW9kZSA9PT0gJ2Rlc2t0b3AnXCIgKGNsaWNrKT1cInRvZ2dsZU1vZGUoJ2Rlc2t0b3AnKVwiPlxuICAgICAgPG1hdC1sYWJlbD5EZXNrdG9wPC9tYXQtbGFiZWw+XG4gICAgPC9hPlxuICAgIDxhIG1hdC10YWItbGluayBbYWN0aXZlXT1cIm1vZGUgPT09ICd0ZW1wJ1wiIChjbGljayk9XCJ0b2dnbGVNb2RlKCd0ZW1wJylcIj5cbiAgICAgIDxtYXQtbGFiZWw+VGVtcG9yYXJ5PC9tYXQtbGFiZWw+XG4gICAgPC9hPlxuICA8L25hdj5cblxuICA8Zm9ybSAjdGFiUGFuZWwgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBpb24tcGFkZGluZ1wiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJkb1N1Ym1pdCgkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICdkZXNrdG9wJ1wiPlxuICAgICAgPCEtLSBFbXB0eSB2YWx1ZSAtLT5cbiAgICAgIDxmb3JtICpuZ0lmPVwiZm9ybSB8IGZvcm1HZXRHcm91cDogJ2VtcHR5JyBhcyBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8aW9uLWdyaWQ+XG4gICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cInRvZ2dsZUFwcGVhcmFuY2UoJGV2ZW50KVwiPkNoYW5nZSBhcHBhcmVuY2U8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8L2lvbi1yb3c+XG5cblxuICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgIDxpb24tdGV4dD48aDQ+RW1wdHksIHdpdGggZGVmYXVsdHM8L2g0PjwvaW9uLXRleHQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICA8IS0tIEREIERlZmF1bHQgc2lnbiAtLT5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5Gb3JtYXQgREQsIGRlZmF1bHRTaWduICctJzwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByZT57eyBmb3JtR3JvdXAudmFsdWUgfCBqc29uIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2lnbj1cIi1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+cm9vbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZ2VvUG9zaXRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5ncHNfZml4ZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkREXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNpZ249XCItXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJMb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5yb29tPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCAoY2xpY2spPVwiZ2VvUG9zaXRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5ncHNfZml4ZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZ2VvUG9zaXRpb25NZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+e3sgZ2VvUG9zaXRpb25NZXNzYWdlIH19PC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgICAgPCEtLSBERE1NIERlZmF1bHQgc2lnbiAtLT5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5Gb3JtYXQgRERNTSwgZGVmYXVsdFNpZ24gJysnPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJlPnt7IHN0cmluZ2lmeShmb3JtR3JvdXAudmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERNTVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaWduPVwiK1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5yb29tPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCAoY2xpY2spPVwiZ2VvUG9zaXRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5ncHNfZml4ZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkRETU1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2lnbj1cIitcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4PnJvb208L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IChjbGljayk9XCJnZW9Qb3NpdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmdwc19maXhlZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGF0bG9uZy1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICA8L2lvbi1jYXJkPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgIDwvZm9ybT5cblxuICAgICAgPGZvcm0gKm5nSWY9XCJmb3JtIHwgZm9ybUdldEdyb3VwOiAnZW5hYmxlJyBhcyBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8aW9uLWdyaWQ+XG4gICAgICAgICAgPCEtLSBXaXRoIHZhbHVlIC0tPlxuICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgIDxpb24tdGV4dD48aDQ+V2l0aCB2YWx1ZTwvaDQ+PC9pb24tdGV4dD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8L2lvbi1yb3c+XG5cbiAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgIDwhLS0gREQgLS0+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+Rm9ybWF0IEREPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJlPnt7IHN0cmluZ2lmeShmb3JtR3JvdXAudmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9tYXQtbGF0bG9uZy1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhdGxvbmctZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgICAgPCEtLSBERE1NU1MgLS0+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+Rm9ybWF0IERETU08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+e3sgc3RyaW5naWZ5KGZvcm1Hcm91cC52YWx1ZSkgfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERE1NXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJMYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkRETU1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgICAgPCEtLSBERE1NU1MgLS0+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPGlvbi1jYXJkPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCI+Rm9ybWF0IERETU1TUzwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwibWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByZT57eyBzdHJpbmdpZnkoZm9ybUdyb3VwLnZhbHVlKSB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhdGxvbmctZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkRETU1TU1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERE1NU1NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICA8L2Zvcm0+XG5cbiAgICAgIDwhLS0gRGlzYWJsZSAgLS0+XG4gICAgICA8Zm9ybSAqbmdJZj1cImZvcm0gfCBmb3JtR2V0R3JvdXA6ICdkaXNhYmxlJyBhcyBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8aW9uLWdyaWQ+XG4gICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPGlvbi10ZXh0PjxoND5EaXNhYmxlZCBjb250cm9sPC9oND48L2lvbi10ZXh0PlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5EaXNhYmxlZCBjb250cm9sPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJlPnt7IHN0cmluZ2lmeShmb3JtR3JvdXAudmFsdWUpIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERNTVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5yb29tPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeD5ncHNfZml4ZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGF0bG9uZy1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhdGxvbmctZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERNTVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+cm9vbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImdlb1Bvc2l0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5SZWFkb25seSAoY29udHJvbCBpcyBlbmFibGUpPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInJlYWRvbmx5RmllbGQucmVhZG9ubHkgPSAkZXZlbnQuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJlYWRvbmx5RmllbGQucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgPjwvbWF0LWNoZWNrYm94PlxuXG4gICAgICAgICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGF0bG9uZy1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAjcmVhZG9ubHlGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybSB8IGZvcm1HZXRDb250cm9sOiAnZW5hYmxlLmxhdGl0dWRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJsYXRpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERNTVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4PnJvb208L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4Pmdwc19maXhlZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNhcmQ+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cInByaW1hcnlcIj5XaXRoIGhpbnQ8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8bWF0LWxhdGxvbmctZmllbGRcbiAgICAgICAgICAgICAgICAgICAgI3JlYWRvbmx5RmllbGRcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0gfCBmb3JtR2V0Q29udHJvbDogJ2VuYWJsZS5sYXRpdHVkZSdcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICBsYXRMb25nUGF0dGVybj1cIkRETU1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCBhbGlnbj1cImVuZFwiPlRoaXMgaXMgYSBsb25nIGxvbmcgaGludDwvbWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICA8L21hdC1sYXRsb25nLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFRlbXBvcmF5IFRBQiAoZm9yIERFVikgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICd0ZW1wJ1wiPlxuICAgICAgPGZvcm0gKm5nSWY9XCJmb3JtIHwgZm9ybUdldEdyb3VwOiAnZW1wdHknIGFzIGZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxpb24tY2FyZD5cbiAgICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiPkZvcm1hdCBERCwgZGVmYXVsdFNpZ24gJy0nPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+XG4gICAgICAgICAgICAgICAgICA8cHJlPnt7IGZvcm1Hcm91cC52YWx1ZSB8IGpzb24gfX08L3ByZT5cbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgPC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICAgICAgPG1hdC1sYXRsb25nLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxhdGl0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgbGF0TG9uZ1BhdHRlcm49XCJERFwiXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaWduPVwiLSBcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTGF0aXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5yb29tPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJnZW9Qb3NpdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmdwc19maXhlZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtbGF0bG9uZy1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgICA8bWF0LWxhdGxvbmctZmllbGRcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibG9uZ2l0dWRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImxvbmdpdHVkZVwiXG4gICAgICAgICAgICAgICAgICAgIGxhdExvbmdQYXR0ZXJuPVwiRERcIlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2lnbj1cIi0gXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJMb25naXR1ZGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5yb29tPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCAoY2xpY2spPVwiZ2VvUG9zaXRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5ncHNfZml4ZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWxhdGxvbmctZmllbGQ+XG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZ2VvUG9zaXRpb25NZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1jb2w+e3sgZ2VvUG9zaXRpb25NZXNzYWdlIH19PC9pb24tY29sPlxuICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPC9pb24tY2FyZD5cbiAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cbiJdfQ==
@@ -1,2 +1,3 @@
1
1
  export const MAT_FORM_FIELD_DEFAULT_SUBSCRIPT_SIZING = 'fixed';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFvQixPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRTaXppbmcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuZXhwb3J0IGNvbnN0IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfU1VCU0NSSVBUX1NJWklORzogU3Vic2NyaXB0U2l6aW5nID0gJ2ZpeGVkJztcbiJdfQ==
2
+ export const MAT_FORM_FIELD_DEFAULT_APPEARANCE = 'fill';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvbWF0ZXJpYWwuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFvQixPQUFPLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQTJCLE1BQU0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIFN1YnNjcmlwdFNpemluZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5leHBvcnQgY29uc3QgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9TVUJTQ1JJUFRfU0laSU5HOiBTdWJzY3JpcHRTaXppbmcgPSAnZml4ZWQnO1xuXG5leHBvcnQgY29uc3QgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9BUFBFQVJBTkNFOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ2ZpbGwnO1xuIl19
@@ -86,8 +86,8 @@ const modules = [
86
86
  SharedTextFormModule,
87
87
  ];
88
88
  export class SharedMaterialModule {
89
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SharedMaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
90
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: SharedMaterialModule, imports: [
89
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SharedMaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
90
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: SharedMaterialModule, imports: [
91
91
  // Angular material components
92
92
  MatCommonModule,
93
93
  MatTableModule,
@@ -174,7 +174,7 @@ export class SharedMaterialModule {
174
174
  SharedMatChipsModule,
175
175
  SharedBadgeModule,
176
176
  SharedTextFormModule] });
177
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SharedMaterialModule, imports: [modules,
177
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SharedMaterialModule, imports: [modules,
178
178
  // Angular material components
179
179
  MatCommonModule,
180
180
  MatTableModule,
@@ -219,7 +219,7 @@ export class SharedMaterialModule {
219
219
  SharedBadgeModule,
220
220
  SharedTextFormModule] });
221
221
  }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SharedMaterialModule, decorators: [{
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SharedMaterialModule, decorators: [{
223
223
  type: NgModule,
224
224
  args: [{
225
225
  imports: modules,
@@ -121,8 +121,8 @@ const routes = [
121
121
  },
122
122
  ];
123
123
  export class MaterialTestingModule {
124
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MaterialTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
125
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: MaterialTestingModule, declarations: [MatCommonTestPage,
124
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MaterialTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
125
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: MaterialTestingModule, declarations: [MatCommonTestPage,
126
126
  DateTimeTestPage,
127
127
  DateTestPage,
128
128
  DateShortTestPage,
@@ -156,7 +156,7 @@ export class MaterialTestingModule {
156
156
  ChipsTestPage,
157
157
  MatBadgeTestPage,
158
158
  ObservableTestPage] });
159
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MaterialTestingModule, imports: [CommonModule,
159
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MaterialTestingModule, imports: [CommonModule,
160
160
  IonicModule,
161
161
  ReactiveFormsModule,
162
162
  SharedMaterialModule,
@@ -167,7 +167,7 @@ export class MaterialTestingModule {
167
167
  FormsModule, SharedMaterialModule,
168
168
  RouterModule] });
169
169
  }
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MaterialTestingModule, decorators: [{
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MaterialTestingModule, decorators: [{
171
171
  type: NgModule,
172
172
  args: [{
173
173
  imports: [
@@ -32,10 +32,10 @@ export class MatPaginatorI18n extends MatPaginatorIntl {
32
32
  _getTranslationValue(translations, key, defaultValue) {
33
33
  return translations[key] !== key ? translations[key] : defaultValue;
34
34
  }
35
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatPaginatorI18n, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
36
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatPaginatorI18n, providedIn: 'root' });
35
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatPaginatorI18n, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
36
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatPaginatorI18n, providedIn: 'root' });
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatPaginatorI18n, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatPaginatorI18n, decorators: [{
39
39
  type: Injectable,
40
40
  args: [{ providedIn: 'root' }]
41
41
  }], ctorParameters: () => [{ type: i1.TranslateService }] });
@@ -13,10 +13,10 @@ export class MatStepperI18n extends MatStepperIntl {
13
13
  translateLabels() {
14
14
  this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
15
15
  }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatStepperI18n, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
17
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatStepperI18n, providedIn: 'root' });
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatStepperI18n, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
17
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatStepperI18n, providedIn: 'root' });
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: MatStepperI18n, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MatStepperI18n, decorators: [{
20
20
  type: Injectable,
21
21
  args: [{ providedIn: 'root' }]
22
22
  }], ctorParameters: () => [{ type: i1.TranslateService }] });