ngx-wapp-components 1.8.2 → 1.8.4

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 (542) hide show
  1. package/ng-package.json +7 -0
  2. package/package.json +46 -53
  3. package/src/lib/button/w-button/w-button.component.html +85 -0
  4. package/src/lib/button/w-button/w-button.component.scss +227 -0
  5. package/src/lib/button/w-button/w-button.component.spec.ts +23 -0
  6. package/src/lib/button/w-button/w-button.component.ts +40 -0
  7. package/src/lib/button/w-buttons-footer/w-buttons-footer.component.html +3 -0
  8. package/src/lib/button/w-buttons-footer/w-buttons-footer.component.scss +11 -0
  9. package/src/lib/button/w-buttons-footer/w-buttons-footer.component.spec.ts +23 -0
  10. package/src/lib/button/w-buttons-footer/w-buttons-footer.component.ts +10 -0
  11. package/src/lib/button/w-radio-button/w-radio-button.component.html +31 -0
  12. package/src/lib/button/w-radio-button/w-radio-button.component.scss +114 -0
  13. package/src/lib/button/w-radio-button/w-radio-button.component.spec.ts +23 -0
  14. package/src/lib/button/w-radio-button/w-radio-button.component.ts +73 -0
  15. package/src/lib/button/w-select-button/w-select-button.component.html +29 -0
  16. package/src/lib/button/w-select-button/w-select-button.component.scss +64 -0
  17. package/src/lib/button/w-select-button/w-select-button.component.spec.ts +23 -0
  18. package/src/lib/button/w-select-button/w-select-button.component.ts +65 -0
  19. package/src/lib/button/w-toggle-button/w-toggle-button.component.html +33 -0
  20. package/src/lib/button/w-toggle-button/w-toggle-button.component.scss +116 -0
  21. package/src/lib/button/w-toggle-button/w-toggle-button.component.spec.ts +23 -0
  22. package/src/lib/button/w-toggle-button/w-toggle-button.component.ts +75 -0
  23. package/src/lib/edit/w-edit-calendar/w-edit-calendar.component.html +47 -0
  24. package/src/lib/edit/w-edit-calendar/w-edit-calendar.component.scss +96 -0
  25. package/src/lib/edit/w-edit-calendar/w-edit-calendar.component.spec.ts +23 -0
  26. package/src/lib/edit/w-edit-calendar/w-edit-calendar.component.ts +77 -0
  27. package/src/lib/edit/w-edit-checkbox/w-edit-checkbox.component.html +55 -0
  28. package/src/lib/edit/w-edit-checkbox/w-edit-checkbox.component.scss +127 -0
  29. package/src/lib/edit/w-edit-checkbox/w-edit-checkbox.component.spec.ts +23 -0
  30. package/src/lib/edit/w-edit-checkbox/w-edit-checkbox.component.ts +70 -0
  31. package/src/lib/edit/w-edit-input-number/w-edit-input-number.component.html +68 -0
  32. package/src/lib/edit/w-edit-input-number/w-edit-input-number.component.scss +247 -0
  33. package/src/lib/edit/w-edit-input-number/w-edit-input-number.component.spec.ts +23 -0
  34. package/src/lib/edit/w-edit-input-number/w-edit-input-number.component.ts +86 -0
  35. package/src/lib/edit/w-edit-input-text/w-edit-input-text.component.html +65 -0
  36. package/src/lib/edit/w-edit-input-text/w-edit-input-text.component.scss +220 -0
  37. package/src/lib/edit/w-edit-input-text/w-edit-input-text.component.spec.ts +23 -0
  38. package/src/lib/edit/w-edit-input-text/w-edit-input-text.component.ts +91 -0
  39. package/src/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.html +106 -0
  40. package/src/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.scss +213 -0
  41. package/src/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.spec.ts +23 -0
  42. package/src/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.ts +72 -0
  43. package/src/lib/edit/w-edit-multiselect/w-edit-multiselect.component.html +73 -0
  44. package/src/lib/edit/w-edit-multiselect/w-edit-multiselect.component.scss +330 -0
  45. package/src/lib/edit/w-edit-multiselect/w-edit-multiselect.component.spec.ts +23 -0
  46. package/src/lib/edit/w-edit-multiselect/w-edit-multiselect.component.ts +83 -0
  47. package/src/lib/edit/w-edit-select/w-edit-select.component.html +70 -0
  48. package/src/lib/edit/w-edit-select/w-edit-select.component.scss +188 -0
  49. package/src/lib/edit/w-edit-select/w-edit-select.component.spec.ts +23 -0
  50. package/src/lib/edit/w-edit-select/w-edit-select.component.ts +85 -0
  51. package/src/lib/edit/w-edit-toggle/w-edit-toggle.component.html +55 -0
  52. package/src/lib/edit/w-edit-toggle/w-edit-toggle.component.scss +86 -0
  53. package/src/lib/edit/w-edit-toggle/w-edit-toggle.component.spec.ts +23 -0
  54. package/src/lib/edit/w-edit-toggle/w-edit-toggle.component.ts +71 -0
  55. package/src/lib/edit/w-edit-treeselect/w-edit-treeselect.component.html +72 -0
  56. package/src/lib/edit/w-edit-treeselect/w-edit-treeselect.component.scss +205 -0
  57. package/src/lib/edit/w-edit-treeselect/w-edit-treeselect.component.spec.ts +23 -0
  58. package/src/lib/edit/w-edit-treeselect/w-edit-treeselect.component.ts +81 -0
  59. package/src/lib/file/w-image-cropper/w-image-cropper.component.html +150 -0
  60. package/src/lib/file/w-image-cropper/w-image-cropper.component.scss +55 -0
  61. package/src/lib/file/w-image-cropper/w-image-cropper.component.spec.ts +23 -0
  62. package/src/lib/file/w-image-cropper/w-image-cropper.component.ts +259 -0
  63. package/src/lib/file/w-image-file-uploader/w-image-file-uploader.component.html +100 -0
  64. package/src/lib/file/w-image-file-uploader/w-image-file-uploader.component.scss +77 -0
  65. package/src/lib/file/w-image-file-uploader/w-image-file-uploader.component.spec.ts +23 -0
  66. package/src/lib/file/w-image-file-uploader/w-image-file-uploader.component.ts +388 -0
  67. package/src/lib/file/w-preview-image/w-preview-image.component.css +0 -0
  68. package/src/lib/file/w-preview-image/w-preview-image.component.html +5 -0
  69. package/src/lib/file/w-preview-image/w-preview-image.component.spec.ts +23 -0
  70. package/src/lib/file/w-preview-image/w-preview-image.component.ts +17 -0
  71. package/src/lib/icons/icons.ts +116 -0
  72. package/src/lib/icons/wapping-icons/w-icons.component.ts +52 -0
  73. package/src/lib/layout/w-body/w-body.component.html +3 -0
  74. package/src/lib/layout/w-body/w-body.component.scss +13 -0
  75. package/src/lib/layout/w-body/w-body.component.spec.ts +23 -0
  76. package/src/lib/layout/w-body/w-body.component.ts +10 -0
  77. package/src/lib/layout/w-body-container/w-body-container.component.html +3 -0
  78. package/src/lib/layout/w-body-container/w-body-container.component.scss +58 -0
  79. package/src/lib/layout/w-body-container/w-body-container.component.spec.ts +23 -0
  80. package/src/lib/layout/w-body-container/w-body-container.component.ts +10 -0
  81. package/src/lib/layout/w-body-grid/w-body-grid.component.html +3 -0
  82. package/src/lib/layout/w-body-grid/w-body-grid.component.scss +59 -0
  83. package/src/lib/layout/w-body-grid/w-body-grid.component.spec.ts +23 -0
  84. package/src/lib/layout/w-body-grid/w-body-grid.component.ts +10 -0
  85. package/src/lib/layout/w-container/w-container.component.scss +9 -0
  86. package/src/lib/layout/w-container/w-container.component.ts +14 -0
  87. package/src/lib/layout/w-footer/w-footer.component.html +11 -0
  88. package/src/lib/layout/w-footer/w-footer.component.scss +17 -0
  89. package/src/lib/layout/w-footer/w-footer.component.spec.ts +23 -0
  90. package/src/lib/layout/w-footer/w-footer.component.ts +19 -0
  91. package/src/lib/layout/w-header-panel/w-header-panel.component.html +9 -0
  92. package/src/lib/layout/w-header-panel/w-header-panel.component.scss +29 -0
  93. package/src/lib/layout/w-header-panel/w-header-panel.component.spec.ts +23 -0
  94. package/src/lib/layout/w-header-panel/w-header-panel.component.ts +27 -0
  95. package/src/lib/layout/w-navbar/w-navbar.component.html +26 -0
  96. package/src/lib/layout/w-navbar/w-navbar.component.scss +26 -0
  97. package/src/lib/layout/w-navbar/w-navbar.component.spec.ts +23 -0
  98. package/src/lib/layout/w-navbar/w-navbar.component.ts +48 -0
  99. package/src/lib/layout/w-panel/w-panel.component.html +14 -0
  100. package/src/lib/layout/w-panel/w-panel.component.scss +122 -0
  101. package/src/lib/layout/w-panel/w-panel.component.spec.ts +23 -0
  102. package/src/lib/layout/w-panel/w-panel.component.ts +47 -0
  103. package/src/lib/layout/w-panel-grid/w-panel-grid.component.html +3 -0
  104. package/src/lib/layout/w-panel-grid/w-panel-grid.component.scss +58 -0
  105. package/src/lib/layout/w-panel-grid/w-panel-grid.component.spec.ts +23 -0
  106. package/src/lib/layout/w-panel-grid/w-panel-grid.component.ts +10 -0
  107. package/src/lib/layout/w-panel-subtitle/w-panel-subtitle.component.html +1 -0
  108. package/src/lib/layout/w-panel-subtitle/w-panel-subtitle.component.scss +6 -0
  109. package/src/lib/layout/w-panel-subtitle/w-panel-subtitle.component.spec.ts +23 -0
  110. package/src/lib/layout/w-panel-subtitle/w-panel-subtitle.component.ts +11 -0
  111. package/src/lib/layout/w-panel-title/w-panel-title.component.html +1 -0
  112. package/src/lib/layout/w-panel-title/w-panel-title.component.scss +6 -0
  113. package/src/lib/layout/w-panel-title/w-panel-title.component.spec.ts +23 -0
  114. package/src/lib/layout/w-panel-title/w-panel-title.component.ts +11 -0
  115. package/src/lib/logos/logos.ts +7 -0
  116. package/src/lib/logos/wapping-logos/w-logos.component.ts +47 -0
  117. package/src/lib/maps/w-maps/w-maps.component.html +43 -0
  118. package/src/lib/maps/w-maps/w-maps.component.scss +163 -0
  119. package/src/lib/maps/w-maps/w-maps.component.spec.ts +23 -0
  120. package/src/lib/maps/w-maps/w-maps.component.ts +151 -0
  121. package/src/lib/misc/w-badge/w-badge.component.html +3 -0
  122. package/src/lib/misc/w-badge/w-badge.component.scss +162 -0
  123. package/src/lib/misc/w-badge/w-badge.component.spec.ts +23 -0
  124. package/src/lib/misc/w-badge/w-badge.component.ts +13 -0
  125. package/src/lib/misc/w-chip/w-chip.component.html +27 -0
  126. package/src/lib/misc/w-chip/w-chip.component.scss +38 -0
  127. package/src/lib/misc/w-chip/w-chip.component.spec.ts +23 -0
  128. package/src/lib/misc/w-chip/w-chip.component.ts +35 -0
  129. package/src/lib/misc/w-filter-panel/w-filter-panel.component.html +312 -0
  130. package/src/lib/misc/w-filter-panel/w-filter-panel.component.scss +356 -0
  131. package/src/lib/misc/w-filter-panel/w-filter-panel.component.spec.ts +23 -0
  132. package/src/lib/misc/w-filter-panel/w-filter-panel.component.ts +457 -0
  133. package/src/lib/misc/w-filter-panel/w-list-field/w-list-field.component.html +21 -0
  134. package/src/lib/misc/w-filter-panel/w-list-field/w-list-field.component.scss +64 -0
  135. package/src/lib/misc/w-filter-panel/w-list-field/w-list-field.component.spec.ts +23 -0
  136. package/src/lib/misc/w-filter-panel/w-list-field/w-list-field.component.ts +73 -0
  137. package/src/lib/misc/w-timeline/w-timeline.component.html +44 -0
  138. package/src/lib/misc/w-timeline/w-timeline.component.scss +61 -0
  139. package/src/lib/misc/w-timeline/w-timeline.component.spec.ts +23 -0
  140. package/src/lib/misc/w-timeline/w-timeline.component.ts +27 -0
  141. package/src/lib/misc/w-wizard/w-wizard.component.html +72 -0
  142. package/src/lib/misc/w-wizard/w-wizard.component.scss +31 -0
  143. package/src/lib/misc/w-wizard/w-wizard.component.spec.ts +23 -0
  144. package/src/lib/misc/w-wizard/w-wizard.component.ts +55 -0
  145. package/src/lib/report/w-powerbi-report/w-powerbi-report.component.css +18 -0
  146. package/src/lib/report/w-powerbi-report/w-powerbi-report.component.html +52 -0
  147. package/src/lib/report/w-powerbi-report/w-powerbi-report.component.spec.ts +23 -0
  148. package/src/lib/report/w-powerbi-report/w-powerbi-report.component.ts +175 -0
  149. package/src/lib/search/w-autocomplete-search/w-autocomplete-search.component.html +92 -0
  150. package/src/lib/search/w-autocomplete-search/w-autocomplete-search.component.scss +144 -0
  151. package/src/lib/search/w-autocomplete-search/w-autocomplete-search.component.spec.ts +23 -0
  152. package/src/lib/search/w-autocomplete-search/w-autocomplete-search.component.ts +94 -0
  153. package/src/lib/search/w-input-search/w-input-search.component.html +140 -0
  154. package/src/lib/search/w-input-search/w-input-search.component.scss +198 -0
  155. package/src/lib/search/w-input-search/w-input-search.component.spec.ts +23 -0
  156. package/src/lib/search/w-input-search/w-input-search.component.ts +86 -0
  157. package/src/lib/shared/components/w-address-field/w-address-field.component.html +11 -0
  158. package/src/lib/shared/components/w-address-field/w-address-field.component.scss +24 -0
  159. package/src/lib/shared/components/w-address-field/w-address-field.component.spec.ts +23 -0
  160. package/src/lib/shared/components/w-address-field/w-address-field.component.ts +266 -0
  161. package/src/lib/shared/enums/enum.ts +18 -0
  162. package/src/lib/shared/models/action-button-response.model.ts +4 -0
  163. package/src/lib/shared/models/action-button.model.ts +5 -0
  164. package/src/lib/shared/models/address-maps.model.ts +14 -0
  165. package/src/lib/shared/models/back-button-config.model.ts +5 -0
  166. package/{lib/shared/models/components-tenant-storage.model.d.ts → src/lib/shared/models/components-tenant-storage.model.ts} +3 -2
  167. package/src/lib/shared/models/custom-button-config.model.ts +4 -0
  168. package/src/lib/shared/models/customer-address.model.ts +16 -0
  169. package/{lib/shared/models/embed-config.model.d.ts → src/lib/shared/models/embed-config.model.ts} +2 -2
  170. package/{lib/shared/models/enums.model.d.ts → src/lib/shared/models/enums.model.ts} +30 -23
  171. package/{lib/shared/models/filter-panel/field.model.d.ts → src/lib/shared/models/filter-panel/field.model.ts} +20 -2
  172. package/src/lib/shared/models/filter-panel/filter-field.models.ts +15 -0
  173. package/src/lib/shared/models/filter-panel/filter-panel-translations.model.ts +29 -0
  174. package/src/lib/shared/models/filter-panel/gmarealevel1.model.ts +4 -0
  175. package/src/lib/shared/models/filter-panel/gmarealevel2.model.ts +4 -0
  176. package/src/lib/shared/models/filter-panel/gmcountry-model.ts +4 -0
  177. package/src/lib/shared/models/filter-panel/gmlocality.model.ts +4 -0
  178. package/src/lib/shared/models/filter-panel/gmpostalcode.model.ts +4 -0
  179. package/src/lib/shared/models/filter-panel/last-query.model.ts +6 -0
  180. package/src/lib/shared/models/filter-panel/qb-filter-entity.model.ts +8 -0
  181. package/src/lib/shared/models/filter-panel/qb-filter-field.model.ts +12 -0
  182. package/src/lib/shared/models/filter-panel/qb-operators.model.ts +4 -0
  183. package/src/lib/shared/models/filter-panel/qb-panel-filter.model.ts +14 -0
  184. package/src/lib/shared/models/filter-panel/qb-panel-to-fields.model.ts +12 -0
  185. package/src/lib/shared/models/filter-panel/query-results.model.ts +17 -0
  186. package/src/lib/shared/models/filter.model.ts +5 -0
  187. package/src/lib/shared/models/image-b64.model.ts +5 -0
  188. package/src/lib/shared/models/lazy-element-query-request.model.ts +9 -0
  189. package/src/lib/shared/models/stored-filter-panel-query.model.ts +6 -0
  190. package/src/lib/shared/models/w-file-b64.model.ts +6 -0
  191. package/src/lib/shared/models/w-image-cropper-data.model.ts +7 -0
  192. package/src/lib/shared/models/w-image-file-uploader-config.model.ts +23 -0
  193. package/src/lib/shared/models/w-select-button-state.model.ts +4 -0
  194. package/{lib/shared/models/w-timeline-event-item.model.d.ts → src/lib/shared/models/w-timeline-event-item.model.ts} +3 -2
  195. package/src/lib/shared/models/w-tree-table.model.ts +38 -0
  196. package/src/lib/shared/models/wapp-table-lazy-loading.model.ts +57 -0
  197. package/src/lib/shared/models/wapp-table.model.ts +60 -0
  198. package/src/lib/shared/pipes/color-text.pipe.ts +20 -0
  199. package/src/lib/shared/pipes/w-date.pipe.ts +42 -0
  200. package/src/lib/shared/pipes/w-summary.pipe.ts +11 -0
  201. package/src/lib/shared/service/api/api.service.ts +116 -0
  202. package/src/lib/shared/services/form-control.service.spec.ts +16 -0
  203. package/src/lib/shared/services/form-control.service.ts +15 -0
  204. package/src/lib/shared/services/modal.service.spec.ts +16 -0
  205. package/src/lib/shared/services/modal.service.ts +71 -0
  206. package/src/lib/shared/services/session-storage.service.spec.ts +16 -0
  207. package/src/lib/shared/services/session-storage.service.ts +49 -0
  208. package/src/lib/shared/services/tree.service.ts +30 -0
  209. package/src/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.css +0 -0
  210. package/src/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.html +26 -0
  211. package/src/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.spec.ts +23 -0
  212. package/src/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.ts +15 -0
  213. package/src/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.css +0 -0
  214. package/src/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.html +37 -0
  215. package/src/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.spec.ts +23 -0
  216. package/src/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.ts +10 -0
  217. package/src/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.css +0 -0
  218. package/src/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.html +3 -0
  219. package/src/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.spec.ts +23 -0
  220. package/src/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.ts +17 -0
  221. package/src/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.css +0 -0
  222. package/src/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.html +3 -0
  223. package/src/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.spec.ts +23 -0
  224. package/src/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.ts +10 -0
  225. package/src/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.css +0 -0
  226. package/src/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.html +3 -0
  227. package/src/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.spec.ts +23 -0
  228. package/src/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.ts +10 -0
  229. package/src/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.css +4 -0
  230. package/src/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.html +6 -0
  231. package/src/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.spec.ts +23 -0
  232. package/src/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.ts +13 -0
  233. package/src/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.css +0 -0
  234. package/src/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.html +12 -0
  235. package/src/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.spec.ts +23 -0
  236. package/src/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.ts +13 -0
  237. package/src/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.css +0 -0
  238. package/src/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.html +10 -0
  239. package/src/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.spec.ts +23 -0
  240. package/src/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.ts +10 -0
  241. package/src/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.css +0 -0
  242. package/src/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.html +14 -0
  243. package/src/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.spec.ts +23 -0
  244. package/src/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.ts +10 -0
  245. package/src/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.css +0 -0
  246. package/src/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.html +41 -0
  247. package/src/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.spec.ts +23 -0
  248. package/src/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.ts +13 -0
  249. package/src/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.html +8 -0
  250. package/src/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.scss +26 -0
  251. package/src/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.spec.ts +23 -0
  252. package/src/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.ts +14 -0
  253. package/src/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.css +0 -0
  254. package/src/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.html +11 -0
  255. package/src/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.spec.ts +23 -0
  256. package/src/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.ts +16 -0
  257. package/src/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.css +0 -0
  258. package/src/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.html +10 -0
  259. package/src/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.spec.ts +23 -0
  260. package/src/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.ts +18 -0
  261. package/src/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.css +0 -0
  262. package/src/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.html +55 -0
  263. package/src/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.spec.ts +23 -0
  264. package/src/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.ts +10 -0
  265. package/src/lib/sidebar/w-sidebar/w-sidebar.component.html +26 -0
  266. package/src/lib/sidebar/w-sidebar/w-sidebar.component.scss +89 -0
  267. package/src/lib/sidebar/w-sidebar/w-sidebar.component.spec.ts +23 -0
  268. package/src/lib/sidebar/w-sidebar/w-sidebar.component.ts +58 -0
  269. package/src/lib/tables/w-table/w-table.component.html +272 -0
  270. package/src/lib/tables/w-table/w-table.component.scss +323 -0
  271. package/src/lib/tables/w-table/w-table.component.spec.ts +23 -0
  272. package/src/lib/tables/w-table/w-table.component.ts +238 -0
  273. package/src/lib/tables/w-table-lazy/w-table-lazy.component.html +253 -0
  274. package/src/lib/tables/w-table-lazy/w-table-lazy.component.scss +295 -0
  275. package/src/lib/tables/w-table-lazy/w-table-lazy.component.spec.ts +23 -0
  276. package/src/lib/tables/w-table-lazy/w-table-lazy.component.ts +268 -0
  277. package/src/lib/tables/w-tree-table/w-tree-table.component.html +289 -0
  278. package/src/lib/tables/w-tree-table/w-tree-table.component.scss +283 -0
  279. package/src/lib/tables/w-tree-table/w-tree-table.component.spec.ts +23 -0
  280. package/src/lib/tables/w-tree-table/w-tree-table.component.ts +173 -0
  281. package/src/lib/tabview/w-tabview/w-tabview.component.html +72 -0
  282. package/src/lib/tabview/w-tabview/w-tabview.component.scss +39 -0
  283. package/src/lib/tabview/w-tabview/w-tabview.component.spec.ts +23 -0
  284. package/src/lib/tabview/w-tabview/w-tabview.component.ts +14 -0
  285. package/src/lib/theme/theme.component.css +0 -0
  286. package/src/lib/theme/theme.component.html +1 -0
  287. package/src/lib/theme/theme.component.spec.ts +23 -0
  288. package/src/lib/theme/theme.component.ts +10 -0
  289. package/src/lib/tree/w-tree/w-tree.component.html +50 -0
  290. package/src/lib/tree/w-tree/w-tree.component.scss +114 -0
  291. package/src/lib/tree/w-tree/w-tree.component.spec.ts +23 -0
  292. package/src/lib/tree/w-tree/w-tree.component.ts +84 -0
  293. package/src/lib/view/w-view-boolean/w-view-boolean.component.html +27 -0
  294. package/src/lib/view/w-view-boolean/w-view-boolean.component.scss +38 -0
  295. package/src/lib/view/w-view-boolean/w-view-boolean.component.spec.ts +23 -0
  296. package/src/lib/view/w-view-boolean/w-view-boolean.component.ts +31 -0
  297. package/src/lib/view/w-view-card-title-text/w-view-card-title-text.component.html +1 -0
  298. package/src/lib/view/w-view-card-title-text/w-view-card-title-text.component.scss +5 -0
  299. package/src/lib/view/w-view-card-title-text/w-view-card-title-text.component.spec.ts +23 -0
  300. package/src/lib/view/w-view-card-title-text/w-view-card-title-text.component.ts +16 -0
  301. package/src/lib/view/w-view-text/w-view-text.component.html +18 -0
  302. package/src/lib/view/w-view-text/w-view-text.component.scss +42 -0
  303. package/src/lib/view/w-view-text/w-view-text.component.spec.ts +23 -0
  304. package/src/lib/view/w-view-text/w-view-text.component.ts +12 -0
  305. package/src/lib/w-clipboard/w-clipboard.component.css +12 -0
  306. package/src/lib/w-clipboard/w-clipboard.component.html +10 -0
  307. package/src/lib/w-clipboard/w-clipboard.component.spec.ts +23 -0
  308. package/src/lib/w-clipboard/w-clipboard.component.ts +32 -0
  309. package/src/lib/wapp-components.component.spec.ts +23 -0
  310. package/src/lib/wapp-components.component.ts +15 -0
  311. package/src/lib/wapp-components.module.ts +337 -0
  312. package/src/lib/wapp-components.service.spec.ts +16 -0
  313. package/src/lib/wapp-components.service.ts +9 -0
  314. package/{public-api.d.ts → src/public-api.ts} +20 -6
  315. package/src/styles/_variables.scss +674 -0
  316. package/tsconfig.lib.json +14 -0
  317. package/tsconfig.lib.prod.json +10 -0
  318. package/tsconfig.spec.json +14 -0
  319. package/esm2020/lib/button/w-button/w-button.component.mjs +0 -67
  320. package/esm2020/lib/button/w-buttons-footer/w-buttons-footer.component.mjs +0 -11
  321. package/esm2020/lib/button/w-radio-button/w-radio-button.component.mjs +0 -86
  322. package/esm2020/lib/button/w-select-button/w-select-button.component.mjs +0 -84
  323. package/esm2020/lib/button/w-toggle-button/w-toggle-button.component.mjs +0 -102
  324. package/esm2020/lib/edit/w-edit-calendar/w-edit-calendar.component.mjs +0 -119
  325. package/esm2020/lib/edit/w-edit-checkbox/w-edit-checkbox.component.mjs +0 -89
  326. package/esm2020/lib/edit/w-edit-input-number/w-edit-input-number.component.mjs +0 -134
  327. package/esm2020/lib/edit/w-edit-input-text/w-edit-input-text.component.mjs +0 -129
  328. package/esm2020/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.mjs +0 -112
  329. package/esm2020/lib/edit/w-edit-multiselect/w-edit-multiselect.component.mjs +0 -114
  330. package/esm2020/lib/edit/w-edit-select/w-edit-select.component.mjs +0 -119
  331. package/esm2020/lib/edit/w-edit-toggle/w-edit-toggle.component.mjs +0 -93
  332. package/esm2020/lib/edit/w-edit-treeselect/w-edit-treeselect.component.mjs +0 -111
  333. package/esm2020/lib/file/w-image-cropper/w-image-cropper.component.mjs +0 -236
  334. package/esm2020/lib/file/w-image-file-uploader/w-image-file-uploader.component.mjs +0 -409
  335. package/esm2020/lib/file/w-preview-image/w-preview-image.component.mjs +0 -20
  336. package/esm2020/lib/icons/icons.mjs +0 -115
  337. package/esm2020/lib/icons/wapping-icons/w-icons.component.mjs +0 -57
  338. package/esm2020/lib/layout/w-body/w-body.component.mjs +0 -18
  339. package/esm2020/lib/layout/w-body-container/w-body-container.component.mjs +0 -11
  340. package/esm2020/lib/layout/w-body-grid/w-body-grid.component.mjs +0 -11
  341. package/esm2020/lib/layout/w-container/w-container.component.mjs +0 -19
  342. package/esm2020/lib/layout/w-footer/w-footer.component.mjs +0 -27
  343. package/esm2020/lib/layout/w-header-panel/w-header-panel.component.mjs +0 -36
  344. package/esm2020/lib/layout/w-navbar/w-navbar.component.mjs +0 -44
  345. package/esm2020/lib/layout/w-panel/w-panel.component.mjs +0 -77
  346. package/esm2020/lib/layout/w-panel-grid/w-panel-grid.component.mjs +0 -11
  347. package/esm2020/lib/layout/w-panel-subtitle/w-panel-subtitle.component.mjs +0 -17
  348. package/esm2020/lib/layout/w-panel-title/w-panel-title.component.mjs +0 -17
  349. package/esm2020/lib/logos/logos.mjs +0 -8
  350. package/esm2020/lib/logos/wapping-logos/w-logos.component.mjs +0 -53
  351. package/esm2020/lib/maps/w-maps/w-maps.component.mjs +0 -161
  352. package/esm2020/lib/misc/w-badge/w-badge.component.mjs +0 -29
  353. package/esm2020/lib/misc/w-chip/w-chip.component.mjs +0 -67
  354. package/esm2020/lib/misc/w-filter-panel/w-filter-panel.component.mjs +0 -447
  355. package/esm2020/lib/misc/w-filter-panel/w-list-field/w-list-field.component.mjs +0 -82
  356. package/esm2020/lib/misc/w-timeline/w-timeline.component.mjs +0 -48
  357. package/esm2020/lib/misc/w-wizard/w-wizard.component.mjs +0 -87
  358. package/esm2020/lib/report/w-powerbi-report/w-powerbi-report.component.mjs +0 -206
  359. package/esm2020/lib/search/w-autocomplete-search/w-autocomplete-search.component.mjs +0 -106
  360. package/esm2020/lib/search/w-input-search/w-input-search.component.mjs +0 -113
  361. package/esm2020/lib/shared/components/w-address-field/w-address-field.component.mjs +0 -248
  362. package/esm2020/lib/shared/enums/enum.mjs +0 -20
  363. package/esm2020/lib/shared/models/action-button-response.model.mjs +0 -2
  364. package/esm2020/lib/shared/models/action-button.model.mjs +0 -2
  365. package/esm2020/lib/shared/models/components-tenant-storage.model.mjs +0 -2
  366. package/esm2020/lib/shared/models/custom-button-config.model.mjs +0 -2
  367. package/esm2020/lib/shared/models/customer-address.model.mjs +0 -2
  368. package/esm2020/lib/shared/models/embed-config.model.mjs +0 -2
  369. package/esm2020/lib/shared/models/enums.model.mjs +0 -90
  370. package/esm2020/lib/shared/models/filter-panel/field.model.mjs +0 -2
  371. package/esm2020/lib/shared/models/filter-panel/filter-field.models.mjs +0 -2
  372. package/esm2020/lib/shared/models/filter-panel/filter-panel-translations.model.mjs +0 -2
  373. package/esm2020/lib/shared/models/filter-panel/gmarealevel1.model.mjs +0 -2
  374. package/esm2020/lib/shared/models/filter-panel/gmarealevel2.model.mjs +0 -2
  375. package/esm2020/lib/shared/models/filter-panel/gmcountry-model.mjs +0 -2
  376. package/esm2020/lib/shared/models/filter-panel/gmlocality.model.mjs +0 -2
  377. package/esm2020/lib/shared/models/filter-panel/gmpostalcode.model.mjs +0 -2
  378. package/esm2020/lib/shared/models/filter-panel/qb-filter-entity.model.mjs +0 -2
  379. package/esm2020/lib/shared/models/filter-panel/qb-operators.model.mjs +0 -2
  380. package/esm2020/lib/shared/models/filter-panel/qb-panel-filter.model.mjs +0 -2
  381. package/esm2020/lib/shared/models/filter-panel/qb-panel-to-fields.model.mjs +0 -2
  382. package/esm2020/lib/shared/models/filter-panel/query-results.model.mjs +0 -8
  383. package/esm2020/lib/shared/models/filter.model.mjs +0 -2
  384. package/esm2020/lib/shared/models/image-b64.model.mjs +0 -2
  385. package/esm2020/lib/shared/models/lazy-element-query-request.model.mjs +0 -2
  386. package/esm2020/lib/shared/models/stored-filter-panel-query.model.mjs +0 -2
  387. package/esm2020/lib/shared/models/w-file-b64.model.mjs +0 -2
  388. package/esm2020/lib/shared/models/w-image-cropper-data.model.mjs +0 -2
  389. package/esm2020/lib/shared/models/w-image-file-uploader-config.model.mjs +0 -2
  390. package/esm2020/lib/shared/models/w-select-button-state.model.mjs +0 -2
  391. package/esm2020/lib/shared/models/w-timeline-event-item.model.mjs +0 -2
  392. package/esm2020/lib/shared/models/w-tree-table.model.mjs +0 -2
  393. package/esm2020/lib/shared/models/wapp-table-lazy-loading.model.mjs +0 -2
  394. package/esm2020/lib/shared/models/wapp-table.model.mjs +0 -2
  395. package/esm2020/lib/shared/pipes/color-text.pipe.mjs +0 -25
  396. package/esm2020/lib/shared/pipes/w-date.pipe.mjs +0 -44
  397. package/esm2020/lib/shared/pipes/w-summary.pipe.mjs +0 -16
  398. package/esm2020/lib/shared/service/api/api.service.mjs +0 -88
  399. package/esm2020/lib/shared/services/form-control.service.mjs +0 -18
  400. package/esm2020/lib/shared/services/modal.service.mjs +0 -62
  401. package/esm2020/lib/shared/services/session-storage.service.mjs +0 -46
  402. package/esm2020/lib/shared/services/tree.service.mjs +0 -30
  403. package/esm2020/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.mjs +0 -26
  404. package/esm2020/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.mjs +0 -17
  405. package/esm2020/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.mjs +0 -24
  406. package/esm2020/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.mjs +0 -19
  407. package/esm2020/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.mjs +0 -12
  408. package/esm2020/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.mjs +0 -30
  409. package/esm2020/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.mjs +0 -27
  410. package/esm2020/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.mjs +0 -12
  411. package/esm2020/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.mjs +0 -12
  412. package/esm2020/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.mjs +0 -26
  413. package/esm2020/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.mjs +0 -22
  414. package/esm2020/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.mjs +0 -25
  415. package/esm2020/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.mjs +0 -27
  416. package/esm2020/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.mjs +0 -12
  417. package/esm2020/lib/sidebar/w-sidebar/w-sidebar.component.mjs +0 -83
  418. package/esm2020/lib/tables/w-table/w-table.component.mjs +0 -255
  419. package/esm2020/lib/tables/w-table-lazy/w-table-lazy.component.mjs +0 -292
  420. package/esm2020/lib/tables/w-tree-table/w-tree-table.component.mjs +0 -187
  421. package/esm2020/lib/tabview/w-tabview/w-tabview.component.mjs +0 -27
  422. package/esm2020/lib/tree/w-tree/w-tree.component.mjs +0 -149
  423. package/esm2020/lib/view/w-view-boolean/w-view-boolean.component.mjs +0 -60
  424. package/esm2020/lib/view/w-view-card-title-text/w-view-card-title-text.component.mjs +0 -17
  425. package/esm2020/lib/view/w-view-text/w-view-text.component.mjs +0 -24
  426. package/esm2020/lib/w-clipboard/w-clipboard.component.mjs +0 -39
  427. package/esm2020/lib/wapp-components.component.mjs +0 -19
  428. package/esm2020/lib/wapp-components.module.mjs +0 -603
  429. package/esm2020/lib/wapp-components.service.mjs +0 -14
  430. package/esm2020/ngx-wapp-components.mjs +0 -5
  431. package/esm2020/public-api.mjs +0 -94
  432. package/fesm2015/ngx-wapp-components.mjs +0 -6179
  433. package/fesm2015/ngx-wapp-components.mjs.map +0 -1
  434. package/fesm2020/ngx-wapp-components.mjs +0 -6191
  435. package/fesm2020/ngx-wapp-components.mjs.map +0 -1
  436. package/index.d.ts +0 -5
  437. package/lib/button/w-button/w-button.component.d.ts +0 -23
  438. package/lib/button/w-buttons-footer/w-buttons-footer.component.d.ts +0 -5
  439. package/lib/button/w-radio-button/w-radio-button.component.d.ts +0 -31
  440. package/lib/button/w-select-button/w-select-button.component.d.ts +0 -27
  441. package/lib/button/w-toggle-button/w-toggle-button.component.d.ts +0 -32
  442. package/lib/edit/w-edit-calendar/w-edit-calendar.component.d.ts +0 -38
  443. package/lib/edit/w-edit-checkbox/w-edit-checkbox.component.d.ts +0 -27
  444. package/lib/edit/w-edit-input-number/w-edit-input-number.component.d.ts +0 -38
  445. package/lib/edit/w-edit-input-text/w-edit-input-text.component.d.ts +0 -37
  446. package/lib/edit/w-edit-input-textarea/w-edit-input-textarea.component.d.ts +0 -33
  447. package/lib/edit/w-edit-multiselect/w-edit-multiselect.component.d.ts +0 -36
  448. package/lib/edit/w-edit-select/w-edit-select.component.d.ts +0 -36
  449. package/lib/edit/w-edit-toggle/w-edit-toggle.component.d.ts +0 -28
  450. package/lib/edit/w-edit-treeselect/w-edit-treeselect.component.d.ts +0 -35
  451. package/lib/file/w-image-cropper/w-image-cropper.component.d.ts +0 -69
  452. package/lib/file/w-image-file-uploader/w-image-file-uploader.component.d.ts +0 -70
  453. package/lib/file/w-preview-image/w-preview-image.component.d.ts +0 -10
  454. package/lib/icons/icons.d.ts +0 -1
  455. package/lib/icons/wapping-icons/w-icons.component.d.ts +0 -15
  456. package/lib/layout/w-body/w-body.component.d.ts +0 -6
  457. package/lib/layout/w-body-container/w-body-container.component.d.ts +0 -5
  458. package/lib/layout/w-body-grid/w-body-grid.component.d.ts +0 -5
  459. package/lib/layout/w-container/w-container.component.d.ts +0 -5
  460. package/lib/layout/w-footer/w-footer.component.d.ts +0 -10
  461. package/lib/layout/w-header-panel/w-header-panel.component.d.ts +0 -15
  462. package/lib/layout/w-navbar/w-navbar.component.d.ts +0 -16
  463. package/lib/layout/w-panel/w-panel.component.d.ts +0 -23
  464. package/lib/layout/w-panel-grid/w-panel-grid.component.d.ts +0 -5
  465. package/lib/layout/w-panel-subtitle/w-panel-subtitle.component.d.ts +0 -7
  466. package/lib/layout/w-panel-title/w-panel-title.component.d.ts +0 -7
  467. package/lib/logos/logos.d.ts +0 -1
  468. package/lib/logos/wapping-logos/w-logos.component.d.ts +0 -15
  469. package/lib/maps/w-maps/w-maps.component.d.ts +0 -38
  470. package/lib/misc/w-badge/w-badge.component.d.ts +0 -9
  471. package/lib/misc/w-chip/w-chip.component.d.ts +0 -22
  472. package/lib/misc/w-filter-panel/w-filter-panel.component.d.ts +0 -74
  473. package/lib/misc/w-filter-panel/w-list-field/w-list-field.component.d.ts +0 -25
  474. package/lib/misc/w-timeline/w-timeline.component.d.ts +0 -17
  475. package/lib/misc/w-wizard/w-wizard.component.d.ts +0 -31
  476. package/lib/report/w-powerbi-report/w-powerbi-report.component.d.ts +0 -40
  477. package/lib/search/w-autocomplete-search/w-autocomplete-search.component.d.ts +0 -29
  478. package/lib/search/w-input-search/w-input-search.component.d.ts +0 -34
  479. package/lib/shared/components/w-address-field/w-address-field.component.d.ts +0 -65
  480. package/lib/shared/enums/enum.d.ts +0 -16
  481. package/lib/shared/models/action-button-response.model.d.ts +0 -4
  482. package/lib/shared/models/action-button.model.d.ts +0 -5
  483. package/lib/shared/models/custom-button-config.model.d.ts +0 -4
  484. package/lib/shared/models/customer-address.model.d.ts +0 -16
  485. package/lib/shared/models/filter-panel/filter-field.models.d.ts +0 -17
  486. package/lib/shared/models/filter-panel/filter-panel-translations.model.d.ts +0 -29
  487. package/lib/shared/models/filter-panel/gmarealevel1.model.d.ts +0 -4
  488. package/lib/shared/models/filter-panel/gmarealevel2.model.d.ts +0 -4
  489. package/lib/shared/models/filter-panel/gmcountry-model.d.ts +0 -4
  490. package/lib/shared/models/filter-panel/gmlocality.model.d.ts +0 -4
  491. package/lib/shared/models/filter-panel/gmpostalcode.model.d.ts +0 -4
  492. package/lib/shared/models/filter-panel/qb-filter-entity.model.d.ts +0 -7
  493. package/lib/shared/models/filter-panel/qb-operators.model.d.ts +0 -4
  494. package/lib/shared/models/filter-panel/qb-panel-filter.model.d.ts +0 -13
  495. package/lib/shared/models/filter-panel/qb-panel-to-fields.model.d.ts +0 -11
  496. package/lib/shared/models/filter-panel/query-results.model.d.ts +0 -15
  497. package/lib/shared/models/filter.model.d.ts +0 -5
  498. package/lib/shared/models/image-b64.model.d.ts +0 -5
  499. package/lib/shared/models/lazy-element-query-request.model.d.ts +0 -8
  500. package/lib/shared/models/stored-filter-panel-query.model.d.ts +0 -6
  501. package/lib/shared/models/w-file-b64.model.d.ts +0 -6
  502. package/lib/shared/models/w-image-cropper-data.model.d.ts +0 -7
  503. package/lib/shared/models/w-image-file-uploader-config.model.d.ts +0 -23
  504. package/lib/shared/models/w-select-button-state.model.d.ts +0 -4
  505. package/lib/shared/models/w-tree-table.model.d.ts +0 -34
  506. package/lib/shared/models/wapp-table-lazy-loading.model.d.ts +0 -55
  507. package/lib/shared/models/wapp-table.model.d.ts +0 -58
  508. package/lib/shared/pipes/color-text.pipe.d.ts +0 -7
  509. package/lib/shared/pipes/w-date.pipe.d.ts +0 -8
  510. package/lib/shared/pipes/w-summary.pipe.d.ts +0 -7
  511. package/lib/shared/service/api/api.service.d.ts +0 -24
  512. package/lib/shared/services/form-control.service.d.ts +0 -8
  513. package/lib/shared/services/modal.service.d.ts +0 -22
  514. package/lib/shared/services/session-storage.service.d.ts +0 -14
  515. package/lib/shared/services/tree.service.d.ts +0 -8
  516. package/lib/shared/skeletons/w-skeleton-edit/w-skeleton-edit.component.d.ts +0 -8
  517. package/lib/shared/skeletons/w-skeleton-edit-product/w-skeleton-edit-product.component.d.ts +0 -5
  518. package/lib/shared/skeletons/w-skeleton-form/w-skeleton-form.component.d.ts +0 -10
  519. package/lib/shared/skeletons/w-skeleton-generic/w-skeleton-generic.component.d.ts +0 -6
  520. package/lib/shared/skeletons/w-skeleton-iframe/w-skeleton-iframe.component.d.ts +0 -5
  521. package/lib/shared/skeletons/w-skeleton-input-generic/w-skeleton-input-generic.component.d.ts +0 -9
  522. package/lib/shared/skeletons/w-skeleton-list/w-skeleton-list.component.d.ts +0 -7
  523. package/lib/shared/skeletons/w-skeleton-powerbi-report/w-skeleton-powerbi-report.component.d.ts +0 -5
  524. package/lib/shared/skeletons/w-skeleton-profile-sidebar/w-skeleton-profile-sidebar.component.d.ts +0 -5
  525. package/lib/shared/skeletons/w-skeleton-query-builder/w-skeleton-query-builder.component.d.ts +0 -8
  526. package/lib/shared/skeletons/w-skeleton-sidebar/w-skeleton-sidebar.component.d.ts +0 -8
  527. package/lib/shared/skeletons/w-skeleton-timeline/w-skeleton-timeline.component.d.ts +0 -9
  528. package/lib/shared/skeletons/w-skeleton-tree/w-skeleton-tree.component.d.ts +0 -11
  529. package/lib/shared/skeletons/w-skeleton-user-profile-info-sidebar/w-skeleton-user-profile-info-sidebar.component.d.ts +0 -5
  530. package/lib/sidebar/w-sidebar/w-sidebar.component.d.ts +0 -25
  531. package/lib/tables/w-table/w-table.component.d.ts +0 -62
  532. package/lib/tables/w-table-lazy/w-table-lazy.component.d.ts +0 -61
  533. package/lib/tables/w-tree-table/w-tree-table.component.d.ts +0 -48
  534. package/lib/tabview/w-tabview/w-tabview.component.d.ts +0 -8
  535. package/lib/tree/w-tree/w-tree.component.d.ts +0 -40
  536. package/lib/view/w-view-boolean/w-view-boolean.component.d.ts +0 -19
  537. package/lib/view/w-view-card-title-text/w-view-card-title-text.component.d.ts +0 -9
  538. package/lib/view/w-view-text/w-view-text.component.d.ts +0 -8
  539. package/lib/w-clipboard/w-clipboard.component.d.ts +0 -12
  540. package/lib/wapp-components.component.d.ts +0 -5
  541. package/lib/wapp-components.module.d.ts +0 -120
  542. package/lib/wapp-components.service.d.ts +0 -6
@@ -1,292 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { TableColumnFilterTypes, TableColumnTypes, WDatePipeFormatType, WappTableColumnAlignTypes } from '../../shared/models/enums.model';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "primeng/api";
5
- import * as i2 from "primeng/inputtext";
6
- import * as i3 from "@angular/forms";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "primeng/button";
9
- import * as i6 from "primeng/tooltip";
10
- import * as i7 from "primeng/ripple";
11
- import * as i8 from "primeng/skeleton";
12
- import * as i9 from "primeng/multiselect";
13
- import * as i10 from "primeng/inputnumber";
14
- import * as i11 from "primeng/table";
15
- import * as i12 from "primeng/confirmpopup";
16
- import * as i13 from "../../misc/w-badge/w-badge.component";
17
- import * as i14 from "../../shared/pipes/w-date.pipe";
18
- export class WTableLazyComponent {
19
- constructor(confirmationService) {
20
- this.confirmationService = confirmationService;
21
- this.selectedElements = [];
22
- this.selectAll = false;
23
- this.filterElementsIndex = 0;
24
- this.wappDateFormat = WDatePipeFormatType;
25
- this.rowsPerPage = 10;
26
- this.maxRowsPerPage = 50;
27
- this.queryElements = new EventEmitter();
28
- this.onElementSelect = new EventEmitter();
29
- this.onViewElementSelect = new EventEmitter();
30
- this.onCustomElementSelect = new EventEmitter();
31
- this.onCopyElementSelect = new EventEmitter();
32
- this.onEditElementSelect = new EventEmitter();
33
- this.onDeleteElementSelect = new EventEmitter();
34
- this.onAllElementSelect = new EventEmitter();
35
- }
36
- ngOnInit() {
37
- this.loading = true;
38
- }
39
- loadElements(event) {
40
- this.loading = true;
41
- let adaptedQuery = {
42
- first: event.first,
43
- rows: this.rowsPerPage,
44
- sortOrder: event.sortOrder,
45
- sortField: event.sortField,
46
- filters: Object.keys(event.filters).map((key) => {
47
- return {
48
- columnName: key,
49
- value: event.filters[key].value,
50
- matchMode: event.filters[key].matchMode
51
- };
52
- })
53
- };
54
- this.lastQuery = adaptedQuery;
55
- this.queryElements.emit(adaptedQuery);
56
- setTimeout(() => {
57
- this.loading = false;
58
- }, 1000);
59
- }
60
- reloadElements() {
61
- this.lastQuery.rows = this.rowsPerPage;
62
- this.queryElements.emit(this.lastQuery);
63
- }
64
- readProperty(obj, prop) {
65
- if (typeof obj === 'undefined') {
66
- return false;
67
- }
68
- const properties = prop.split('.');
69
- let result = obj;
70
- for (const property of properties) {
71
- const match = property.match(/(.+?)\[(\d+)\]/);
72
- if (match) {
73
- const arrayProp = match[1];
74
- const index = parseInt(match[2], 10);
75
- if (!Array.isArray(result[arrayProp]) || isNaN(index) || index < 0 || index >= result[arrayProp].length) {
76
- return undefined;
77
- }
78
- result = result[arrayProp][index];
79
- }
80
- else {
81
- if (typeof result[property] === 'undefined') {
82
- return undefined;
83
- }
84
- result = result[property];
85
- }
86
- }
87
- return result;
88
- }
89
- onElement(element) {
90
- this.onElementSelect.emit(element);
91
- }
92
- viewElement(element) {
93
- this.onViewElementSelect.emit(element);
94
- }
95
- customElement(element) {
96
- this.onCustomElementSelect.emit(element);
97
- }
98
- editElement(element) {
99
- this.onEditElementSelect.emit(element);
100
- }
101
- confirmDeleteSelection(event) {
102
- this.confirmationService.confirm({
103
- target: event.target,
104
- message: this.wappTableLazyLoadingObject.confirmMultipleDeleteLabel,
105
- icon: "pi pi-exclamation-triangle",
106
- acceptLabel: this.wappTableLazyLoadingObject.confirmDeleteBtnLabel,
107
- accept: () => {
108
- this.deleteSelectedElements();
109
- }
110
- });
111
- }
112
- deleteSelectedElements() {
113
- this.onDeleteElementSelect.emit(this.selectedElements);
114
- this.selectedElements = [];
115
- }
116
- confirmDelete(event, element) {
117
- this.confirmationService.confirm({
118
- target: event.target,
119
- message: this.wappTableLazyLoadingObject.confirmSingleDeleteLabel,
120
- icon: "pi pi-exclamation-triangle",
121
- acceptLabel: this.wappTableLazyLoadingObject.confirmDeleteBtnLabel,
122
- accept: () => {
123
- this.deleteSingleElement(element);
124
- }
125
- });
126
- }
127
- deleteSingleElement(element) {
128
- this.onDeleteElementSelect.emit([element]);
129
- }
130
- copyElement(element) {
131
- this.onCopyElementSelect.emit(element);
132
- }
133
- confirmCopy(event, element) {
134
- this.confirmationService.confirm({
135
- target: event.target,
136
- message: this.wappTableLazyLoadingObject.confirmCopyLabel,
137
- icon: "pi pi-exclamation-triangle",
138
- acceptLabel: this.wappTableLazyLoadingObject.confirmCopyBtnLabel,
139
- accept: () => {
140
- this.copyElement(element);
141
- }
142
- });
143
- }
144
- onSelectionChange(value = []) {
145
- this.selectAll = value.length === this.totalRecords;
146
- this.selectedElements = value;
147
- }
148
- onSelectAllChange(event) {
149
- const checked = event.checked;
150
- if (checked) {
151
- this.onAllElementSelect.emit(true);
152
- this.loading = true;
153
- setTimeout(() => {
154
- this.selectedElements = this.wappTableLazyLoadingObject.disableCheckbox ? this.getSelectableElements(this.allElements) : this.allElements;
155
- this.selectAll = true;
156
- this.loading = false;
157
- }, 1000);
158
- }
159
- else {
160
- this.selectedElements = [];
161
- this.selectAll = false;
162
- }
163
- }
164
- getSelectableElements(allElements) {
165
- return allElements.filter((element) => !this.readProperty(element, this.wappTableLazyLoadingObject.disableCheckbox));
166
- }
167
- getBooleanColumnClass(index, valueProperty) {
168
- const booleanIconClasses = [];
169
- if (valueProperty == true) {
170
- booleanIconClasses.push(this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].trueIcon ?? '');
171
- booleanIconClasses.push(this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].trueIconColor ?? '');
172
- }
173
- else if (valueProperty == false) {
174
- booleanIconClasses.push(this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].falseIcon ?? '');
175
- booleanIconClasses.push(this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].falseIconColor) ?? '';
176
- }
177
- else if (valueProperty == null) {
178
- booleanIconClasses.push(this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].nullIcon ?? '');
179
- booleanIconClasses.push(this.wappTableLazyLoadingObject.columnBooleanTypeIcons[index].nullIconColor ?? '');
180
- }
181
- return booleanIconClasses;
182
- }
183
- clear(table) {
184
- table.clear();
185
- }
186
- get tableColumnFilterTypes() {
187
- return TableColumnFilterTypes;
188
- }
189
- get tableColumnTypes() {
190
- return TableColumnTypes;
191
- }
192
- clearFilters() {
193
- this.dataTable.clear();
194
- }
195
- getTableColumnAlignClass(alignment) {
196
- if (alignment == WappTableColumnAlignTypes.Right)
197
- return 'text-right';
198
- if (alignment == WappTableColumnAlignTypes.Left)
199
- return 'text-left';
200
- if (alignment == WappTableColumnAlignTypes.Center)
201
- return 'text-center';
202
- return 'text-left';
203
- }
204
- getTableColumnAlignClassDefaultByColumnType(columnType) {
205
- if (columnType == TableColumnTypes.Text)
206
- return 'text-left';
207
- if (columnType == TableColumnTypes.Currency)
208
- return 'text-left';
209
- if (columnType == TableColumnTypes.Date)
210
- return 'text-left';
211
- if (columnType == TableColumnTypes.Badge)
212
- return 'text-center';
213
- if (columnType == TableColumnTypes.Boolean)
214
- return 'text-center';
215
- if (columnType == TableColumnTypes.Image)
216
- return 'text-center';
217
- if (columnType == TableColumnTypes.Number)
218
- return 'text-right';
219
- return 'text-left';
220
- }
221
- calculateColspan() {
222
- let colspan = this.wappTableLazyLoadingObject.headers.length;
223
- this.wappTableLazyLoadingObject.hasCheckbox ?
224
- colspan += 1 : '';
225
- this.hasActionButtons() ?
226
- colspan += 1 : '';
227
- return colspan;
228
- }
229
- hasActionButtons() {
230
- return this.wappTableLazyLoadingObject.hasCopyButton ||
231
- this.wappTableLazyLoadingObject.hasEditButton ||
232
- this.wappTableLazyLoadingObject.hasViewButton ||
233
- this.wappTableLazyLoadingObject.hasDeleteButton ||
234
- this.wappTableLazyLoadingObject.customButtonConfig?.hasCustomButton ?
235
- true : false;
236
- }
237
- }
238
- WTableLazyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTableLazyComponent, deps: [{ token: i1.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
239
- WTableLazyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTableLazyComponent, selector: "w-table-lazy", inputs: { loading: "loading", elements: "elements", rowsPerPage: "rowsPerPage", allElements: "allElements", totalRecords: "totalRecords", maxRowsPerPage: "maxRowsPerPage", wappTableLazyLoadingObject: "wappTableLazyLoadingObject" }, outputs: { queryElements: "queryElements", onElementSelect: "onElementSelect", onViewElementSelect: "onViewElementSelect", onCustomElementSelect: "onCustomElementSelect", onCopyElementSelect: "onCopyElementSelect", onEditElementSelect: "onEditElementSelect", onDeleteElementSelect: "onDeleteElementSelect", onAllElementSelect: "onAllElementSelect" }, viewQueries: [{ propertyName: "dataTable", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableLazyLoadingObject\" [class.table-container]=\"wappTableLazyLoadingObject.tableContainer\">\r\n <p-table class=\"w-table-styles\"\r\n [ngClass]=\"{'w-table-no-buttons' : !wappTableLazyLoadingObject.hasEditButton && !wappTableLazyLoadingObject.hasDeleteButton && !wappTableLazyLoadingObject.hasCopyButton && !wappTableLazyLoadingObject.customButtonConfig && !wappTableLazyLoadingObject.hasViewButton }\"\r\n #table [value]=\"elements\" \r\n dataKey=\"{{wappTableLazyLoadingObject.identificator}}\"\r\n [lazy]=\"true\" \r\n (onLazyLoad)=\"loadElements($event)\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [paginator]=\"wappTableLazyLoadingObject.hasPaginator!\"\r\n [rows]=\"rowsPerPage\" \r\n [currentPageReportTemplate]=\"wappTableLazyLoadingObject.currentPageReportTemplate ? wappTableLazyLoadingObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [loading]=\"loading\"\r\n [showLoader]=\"false\"\r\n [globalFilterFields]=\"wappTableLazyLoadingObject.globalFilterFields!\"\r\n [tableStyle]=\"{'min-width': wappTableLazyLoadingObject.tableMinWidth!}\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableLazyLoadingObject.hasClearButton || wappTableLazyLoadingObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span *ngIf=\"wappTableLazyLoadingObject.hasTotalPagingSelector\" class=\"showing-per-page\"> {{wappTableLazyLoadingObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber *ngIf=\"wappTableLazyLoadingObject.hasTotalPagingSelector\"\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"maxRowsPerPage\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\"\r\n (ngModelChange)=\"reloadElements()\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableLazyLoadingObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input class=\"height-input w-input\" pInputText type=\"text\" (input)=\"table.filterGlobal($event, 'contains')\" placeholder=\"{{wappTableLazyLoadingObject.searchPlaceholder}}\" />\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableLazyLoadingObject.hasColumnFilters && wappTableLazyLoadingObject.hasCheckbox; else noCheckbox\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[0]) : 'text-center'\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n\r\n <ng-template #noCheckbox><th *ngIf=\"wappTableLazyLoadingObject.hasCheckbox\"></th></ng-template>\r\n\r\n <ng-container *ngIf=\"!wappTableLazyLoadingObject.hasSortableColumns; else something\">\r\n <th *ngFor=\"let header of wappTableLazyLoadingObject?.headers; index as i\" [class]=\"header == ('Imagen' || 'Image') ? 'image-header': ''\" \r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[wappTableLazyLoadingObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableLazyLoadingObject.columnTypes[wappTableLazyLoadingObject.hasCheckbox ? i+1 : i])\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n\r\n <ng-template #something>\r\n <ng-template #something ngFor let-filterType [ngForOf]=\"wappTableLazyLoadingObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableLazyLoadingObject.sortableNames[i]\" [class]=\"wappTableLazyLoadingObject.headers[i] == ('Imagen' || 'Image') ? 'image-header': ''\" \r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[wappTableLazyLoadingObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableLazyLoadingObject.columnTypes[wappTableLazyLoadingObject.hasCheckbox ? i+1 : i])\">\r\n {{wappTableLazyLoadingObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableLazyLoadingObject.sortableNames[i] != null\" [field]=\"wappTableLazyLoadingObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableLazyLoadingObject.hasDeleteButton || wappTableLazyLoadingObject.hasEditButton || wappTableLazyLoadingObject.hasViewButton || wappTableLazyLoadingObject.hasCopyButton || wappTableLazyLoadingObject.customButtonConfig?.hasCustomButton\"></th>\r\n </tr>\r\n\r\n <tr *ngIf=\"wappTableLazyLoadingObject.hasColumnFilters\">\r\n <th *ngIf=\"wappTableLazyLoadingObject.hasCheckbox\" [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[0]) : 'text-left'\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <th *ngIf=\"wappTableLazyLoadingObject.hasImage\" \r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[wappTableLazyLoadingObject.hasCheckbox ? 1 : 0]) : getTableColumnAlignClassDefaultByColumnType(wappTableLazyLoadingObject.columnTypes[wappTableLazyLoadingObject.hasCheckbox ? 1 : 0])\">\r\n </th>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableLazyLoadingObject.columnFilterTypes\" let-i=\"index\">\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.Text\" \r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\">\r\n <p-columnFilter type=\"text\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n </th>\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.Multiselect\" [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\">\r\n <p-columnFilter [field]=\"wappTableLazyLoadingObject.filterNames[i]\" matchMode=\"in\" [showMenu]=\"false\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" appendTo=\"body\" [options]=\"wappTableLazyLoadingObject.selectFilterElements[i]\" placeholder=\"Any\" (onChange)=\"filter($event.value)\" optionLabel=\"name\" [maxSelectedLabels]=\"1\" [selectedItemsLabel]=\"'{0} items'\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-1\">{{option.name}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </p-columnFilter>\r\n </th>\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.None\"></th>\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.Boolean\" [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-center'\">\r\n <p-columnFilter type=\"boolean\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n </th>\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.Date\" [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\">\r\n <p-columnFilter type=\"date\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n </th>\r\n </ng-template>\r\n <th *ngIf=\"wappTableLazyLoadingObject.hasDeleteButton || wappTableLazyLoadingObject.hasEditButton || wappTableLazyLoadingObject.hasViewButton || wappTableLazyLoadingObject.hasCopyButton || wappTableLazyLoadingObject.customButtonConfig?.hasCustomButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element let-index=\"index\">\r\n <tr *ngIf=\"!loading\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableLazyLoadingObject.columnTypes\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes.Checkbox && wappTableLazyLoadingObject.hasCheckbox\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\" class=\"text-center\">\r\n <div *ngIf=\"wappTableLazyLoadingObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n <img *ngIf=\"readProperty(element, wappTableLazyLoadingObject.columns[i])\" \r\n [src]=\"readProperty(element, wappTableLazyLoadingObject.columns[i])\" \r\n class=\"element-image-width\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-right'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n <w-badge [label]=\"readProperty(element, wappTableLazyLoadingObject.columns[i])\" [color]=\"'info'\"></w-badge> \r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableLazyLoadingObject.columns[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate : wappDateFormat.d }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate : wappDateFormat.D }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate : wappDateFormat.g }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate : wappDateFormat.G }}\r\n </td>\r\n </ng-template>\r\n <td>\r\n <div class=\"flex justify-content-end align-items-end\">\r\n <button *ngIf=\"wappTableLazyLoadingObject?.hasViewButton\" \r\n pButton pRipple (click)=\"viewElement(element)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.viewTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\" \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple (click)=\"customElement(element)\"\r\n [icon]=\"wappTableLazyLoadingObject.customButtonConfig?.icon!\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.customTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject.hasEditButton && !wappTableLazyLoadingObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject.hasEditButton && wappTableLazyLoadingObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableEditProperty)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject?.hasCopyButton\" \r\n pButton pRipple (click)=\"confirmCopy($event, element)\" \r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.copyTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <span *ngIf=\"wappTableLazyLoadingObject?.hasDeleteButton\">\r\n <button *ngIf=\"wappTableLazyLoadingObject.disableDeleteProperty; else noDisableDelete\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableDeleteProperty)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n <ng-template #noDisableDelete>\r\n <button pButton pRipple (click)=\"confirmDelete($event, element)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr height=\"70px\" *ngFor=\"let n of [0,1,2,3,4]\">\r\n <td *ngFor=\"let item of wappTableLazyLoadingObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableLazyLoadingObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item == tableColumnTypes.Image\" width=\"6rem\" height=\"4rem\"></p-skeleton>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox && item != tableColumnTypes.Image\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableLazyLoadingObject.hasEditButton || wappTableLazyLoadingObject.hasDeleteButton\">\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableLazyLoadingObject?.hasEditButton\" \r\n pButton pRipple\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject?.hasDeleteButton\" \r\n pButton pRipple\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr class=\"w-table-lazy-empty-message-padding\">\r\n <td [attr.colspan]=\"calculateColspan()\">{{wappTableLazyLoadingObject.emptyMessage ? wappTableLazyLoadingObject.emptyMessage : 'No matches.'}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:400}.heading5{font-size:1.5rem;line-height:1.8333333333rem;font-weight:600}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:400}.subtitle1,.w-tab-text,.w-panel-title-text,.w-sidebar-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:600}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.3333333333rem;font-weight:600}.body,.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.w-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.3333333333rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.text846{color:#2e3134}.text700{color:#5f6368}.text500{color:#9aa0a6}.textWhite{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b2eb}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#2e3134}.w-button-small-icon-text{font-size:12px}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:400;line-height:16px}.w-button-medium-tertiary-label-text{color:#2e3134}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:400;line-height:24px}.w-button-large-tertiary-label-text{color:#2e3134}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text,.w-view-small-value-text{color:#2e3134}.w-input-no-label-height{height:36px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8eaed;opacity:1}.w-input-small-label-text,.w-input-small-label-disabled{color:#2e3134}.w-input-small-label-disabled{color:#9aa0a6}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.w-input,.w-input-small-placeholder-text-only-color{color:#2e3134}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6368}.w-input-small-text-icon,.w-input-small-select-options-text{color:#2e3134}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#2e3134}.w-input-medium-label-disabled{color:#9aa0a6}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#2e3134}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6368}.w-input-medium-text-icon{color:#2e3134}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#2e3134}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#2e3134}.w-panel-content{color:#5f6368}.w-tab-text,.w-chip-text{color:#2e3134}.w-badge-text{font-size:8px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{color:#2e3134}.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{color:#5f6368}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.w-table-lazy-selectable-row{cursor:pointer}.showing-per-page{color:#9aa0a6;font-weight:400}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0px;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a6;padding:0}::ng-deep .w-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#000;margin-left:.5rem}::ng-deep .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom>button{color:#9aa0a6}::ng-deep .w-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:1px}::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:6px 8px 5px}::ng-deep .w-table-no-buttons .p-datatable .p-datatable-tbody>tr>td{padding:16px 8px 15px!important}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b2eb;background:#00b2eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b2eb;border:1px solid #d6f2ff}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b2eb;background:#00b2eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.image-header{text-align:center!important}.height-input{height:32px}.w-input{border-radius:8px;border-width:1px;border-color:#e8eaed;gap:16px}::-webkit-input-placeholder{color:#5f6368}::-moz-placeholder{color:#5f6368}:-ms-input-placeholder{color:#5f6368}:-moz-placeholder{color:#5f6368}.w-input:hover{border:1px solid #1f5b72!important}.w-input:focus{box-shadow:0 0 3px 3px #d6f2ff!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6368!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8eaed}::ng-deep .p-datatable .p-datatable-thead>tr>th{padding:16px 8px;border:1px solid #e8eaed;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-datatable .p-datatable-tbody>tr{color:#9aa0a6}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .p-datatable .p-datatable-tbody>tr.w-table-lazy-empty-message-padding>td{padding:16px 12px 15px!important}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i7.Ripple, selector: "[pRipple]" }, { kind: "component", type: i8.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i9.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove"] }, { kind: "component", type: i10.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i11.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i11.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i11.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i11.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i11.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i11.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons"] }, { kind: "component", type: i12.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: i13.WBadgeComponent, selector: "w-badge", inputs: ["label", "color", "tooltip", "maxWidthOverflow"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i14.WDatePipe, name: "wappDate" }] });
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTableLazyComponent, decorators: [{
241
- type: Component,
242
- args: [{ selector: 'w-table-lazy', template: "<ng-content select=\".filter-panel\"></ng-content>\r\n<div *ngIf=\"wappTableLazyLoadingObject\" [class.table-container]=\"wappTableLazyLoadingObject.tableContainer\">\r\n <p-table class=\"w-table-styles\"\r\n [ngClass]=\"{'w-table-no-buttons' : !wappTableLazyLoadingObject.hasEditButton && !wappTableLazyLoadingObject.hasDeleteButton && !wappTableLazyLoadingObject.hasCopyButton && !wappTableLazyLoadingObject.customButtonConfig && !wappTableLazyLoadingObject.hasViewButton }\"\r\n #table [value]=\"elements\" \r\n dataKey=\"{{wappTableLazyLoadingObject.identificator}}\"\r\n [lazy]=\"true\" \r\n (onLazyLoad)=\"loadElements($event)\"\r\n [selection]=\"selectedElements\" (selectionChange)=\"onSelectionChange($event)\"\r\n [selectAll]=\"selectAll\" (selectAllChange)=\"onSelectAllChange($event)\"\r\n [paginator]=\"wappTableLazyLoadingObject.hasPaginator!\"\r\n [rows]=\"rowsPerPage\" \r\n [currentPageReportTemplate]=\"wappTableLazyLoadingObject.currentPageReportTemplate ? wappTableLazyLoadingObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [loading]=\"loading\"\r\n [showLoader]=\"false\"\r\n [globalFilterFields]=\"wappTableLazyLoadingObject.globalFilterFields!\"\r\n [tableStyle]=\"{'min-width': wappTableLazyLoadingObject.tableMinWidth!}\"\r\n styleClass=\"p-datatable-striped\">\r\n <ng-template *ngIf=\"wappTableLazyLoadingObject.hasClearButton || wappTableLazyLoadingObject.hasGlobalSearch\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span *ngIf=\"wappTableLazyLoadingObject.hasTotalPagingSelector\" class=\"showing-per-page\"> {{wappTableLazyLoadingObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber *ngIf=\"wappTableLazyLoadingObject.hasTotalPagingSelector\"\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"maxRowsPerPage\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\"\r\n (ngModelChange)=\"reloadElements()\">\r\n </p-inputNumber>\r\n <span *ngIf=\"wappTableLazyLoadingObject?.hasGlobalSearch\" class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input class=\"height-input w-input\" pInputText type=\"text\" (input)=\"table.filterGlobal($event, 'contains')\" placeholder=\"{{wappTableLazyLoadingObject.searchPlaceholder}}\" />\r\n </span>\r\n </span>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th *ngIf=\"!wappTableLazyLoadingObject.hasColumnFilters && wappTableLazyLoadingObject.hasCheckbox; else noCheckbox\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[0]) : 'text-center'\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n\r\n <ng-template #noCheckbox><th *ngIf=\"wappTableLazyLoadingObject.hasCheckbox\"></th></ng-template>\r\n\r\n <ng-container *ngIf=\"!wappTableLazyLoadingObject.hasSortableColumns; else something\">\r\n <th *ngFor=\"let header of wappTableLazyLoadingObject?.headers; index as i\" [class]=\"header == ('Imagen' || 'Image') ? 'image-header': ''\" \r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[wappTableLazyLoadingObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableLazyLoadingObject.columnTypes[wappTableLazyLoadingObject.hasCheckbox ? i+1 : i])\">\r\n {{header}}\r\n </th>\r\n </ng-container>\r\n\r\n <ng-template #something>\r\n <ng-template #something ngFor let-filterType [ngForOf]=\"wappTableLazyLoadingObject.headers\" let-i=\"index\"> \r\n <th [pSortableColumn]=\"wappTableLazyLoadingObject.sortableNames[i]\" [class]=\"wappTableLazyLoadingObject.headers[i] == ('Imagen' || 'Image') ? 'image-header': ''\" \r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[wappTableLazyLoadingObject.hasCheckbox ? i+1 : i]) : getTableColumnAlignClassDefaultByColumnType(wappTableLazyLoadingObject.columnTypes[wappTableLazyLoadingObject.hasCheckbox ? i+1 : i])\">\r\n {{wappTableLazyLoadingObject.headers[i]}} \r\n <p-sortIcon *ngIf=\"wappTableLazyLoadingObject.sortableNames[i] != null\" [field]=\"wappTableLazyLoadingObject.sortableNames[i]\"></p-sortIcon>\r\n </th>\r\n </ng-template>\r\n </ng-template>\r\n <th *ngIf=\"wappTableLazyLoadingObject.hasDeleteButton || wappTableLazyLoadingObject.hasEditButton || wappTableLazyLoadingObject.hasViewButton || wappTableLazyLoadingObject.hasCopyButton || wappTableLazyLoadingObject.customButtonConfig?.hasCustomButton\"></th>\r\n </tr>\r\n\r\n <tr *ngIf=\"wappTableLazyLoadingObject.hasColumnFilters\">\r\n <th *ngIf=\"wappTableLazyLoadingObject.hasCheckbox\" [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[0]) : 'text-left'\">\r\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n </th>\r\n <th *ngIf=\"wappTableLazyLoadingObject.hasImage\" \r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[wappTableLazyLoadingObject.hasCheckbox ? 1 : 0]) : getTableColumnAlignClassDefaultByColumnType(wappTableLazyLoadingObject.columnTypes[wappTableLazyLoadingObject.hasCheckbox ? 1 : 0])\">\r\n </th>\r\n <ng-template ngFor let-filterType [ngForOf]=\"wappTableLazyLoadingObject.columnFilterTypes\" let-i=\"index\">\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.Text\" \r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\">\r\n <p-columnFilter type=\"text\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n </th>\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.Multiselect\" [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\">\r\n <p-columnFilter [field]=\"wappTableLazyLoadingObject.filterNames[i]\" matchMode=\"in\" [showMenu]=\"false\">\r\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\r\n <p-multiSelect [ngModel]=\"value\" appendTo=\"body\" [options]=\"wappTableLazyLoadingObject.selectFilterElements[i]\" placeholder=\"Any\" (onChange)=\"filter($event.value)\" optionLabel=\"name\" [maxSelectedLabels]=\"1\" [selectedItemsLabel]=\"'{0} items'\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"p-multiselect-representative-option\">\r\n <span class=\"ml-1\">{{option.name}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </ng-template>\r\n </p-columnFilter>\r\n </th>\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.None\"></th>\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.Boolean\" [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-center'\">\r\n <p-columnFilter type=\"boolean\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n </th>\r\n <th *ngIf=\"filterType == tableColumnFilterTypes.Date\" [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\">\r\n <p-columnFilter type=\"date\" [field]=\"wappTableLazyLoadingObject.filterNames[i]\"></p-columnFilter>\r\n </th>\r\n </ng-template>\r\n <th *ngIf=\"wappTableLazyLoadingObject.hasDeleteButton || wappTableLazyLoadingObject.hasEditButton || wappTableLazyLoadingObject.hasViewButton || wappTableLazyLoadingObject.hasCopyButton || wappTableLazyLoadingObject.customButtonConfig?.hasCustomButton\"></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-element let-index=\"index\">\r\n <tr *ngIf=\"!loading\">\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTableLazyLoadingObject.columnTypes\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes.Checkbox && wappTableLazyLoadingObject.hasCheckbox\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\" class=\"text-center\">\r\n <div *ngIf=\"wappTableLazyLoadingObject.disableCheckbox; else activeCheckbox\">\r\n <p-tableCheckbox [value]=\"element\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableCheckbox)\"></p-tableCheckbox>\r\n </div>\r\n <ng-template #activeCheckbox>\r\n <p-tableCheckbox [value]=\"element\"></p-tableCheckbox>\r\n </ng-template>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n <img *ngIf=\"readProperty(element, wappTableLazyLoadingObject.columns[i])\" \r\n [src]=\"readProperty(element, wappTableLazyLoadingObject.columns[i])\" \r\n class=\"element-image-width\"/>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-right'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | currency }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTableLazyLoadingObject.columnWidths[i]\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n <w-badge [label]=\"readProperty(element, wappTableLazyLoadingObject.columns[i])\" [color]=\"'info'\"></w-badge> \r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-center'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(element, wappTableLazyLoadingObject.columns[i]))\"></i>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate : wappDateFormat.d }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate : wappDateFormat.D }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate : wappDateFormat.g }}\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\"\r\n [ngClass]=\"wappTableLazyLoadingObject.columnAlign ? getTableColumnAlignClass(wappTableLazyLoadingObject.columnAlign[i]) : 'text-left'\"\r\n (click)=\"viewElement(element)\" class=\"w-table-lazy-selectable-row\">\r\n {{ readProperty(element, wappTableLazyLoadingObject.columns[i]) | wappDate : wappDateFormat.G }}\r\n </td>\r\n </ng-template>\r\n <td>\r\n <div class=\"flex justify-content-end align-items-end\">\r\n <button *ngIf=\"wappTableLazyLoadingObject?.hasViewButton\" \r\n pButton pRipple (click)=\"viewElement(element)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.viewTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\" \r\n icon=\"pi pi-eye\" class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject.customButtonConfig?.hasCustomButton\"\r\n pButton pRipple (click)=\"customElement(element)\"\r\n [icon]=\"wappTableLazyLoadingObject.customButtonConfig?.icon!\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.customTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n class=\"p-button-text p-button-info mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject.hasEditButton && !wappTableLazyLoadingObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject.hasEditButton && wappTableLazyLoadingObject.disableEditProperty\" \r\n pButton pRipple (click)=\"editElement(element)\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableEditProperty)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.editTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject?.hasCopyButton\" \r\n pButton pRipple (click)=\"confirmCopy($event, element)\" \r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.copyTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-copy\" class=\"p-button-text p-button-help mr-2\">\r\n </button>\r\n <span *ngIf=\"wappTableLazyLoadingObject?.hasDeleteButton\">\r\n <button *ngIf=\"wappTableLazyLoadingObject.disableDeleteProperty; else noDisableDelete\" \r\n pButton pRipple (click)=\"confirmDelete($event, element)\" [disabled]=\"readProperty(element, wappTableLazyLoadingObject.disableDeleteProperty)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n <ng-template #noDisableDelete>\r\n <button pButton pRipple (click)=\"confirmDelete($event, element)\"\r\n [pTooltip]=\"wappTableLazyLoadingObject.buttonTooltips?.deleteTooltip!\"\r\n [tooltipPosition]=\"wappTableLazyLoadingObject.buttonTooltips?.position!\"\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </ng-template>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"loadingbody\">\r\n <tr height=\"70px\" *ngFor=\"let n of [0,1,2,3,4]\">\r\n <td *ngFor=\"let item of wappTableLazyLoadingObject.columnTypes\" [style.width]=\"item == tableColumnTypes.Checkbox ? '8rem' : ''\" >\r\n <p-tableCheckbox *ngIf=\"item == tableColumnTypes.Checkbox && wappTableLazyLoadingObject.hasCheckbox\"></p-tableCheckbox>\r\n <p-skeleton *ngIf=\"item == tableColumnTypes.Image\" width=\"6rem\" height=\"4rem\"></p-skeleton>\r\n <p-skeleton *ngIf=\"item != tableColumnTypes.Checkbox && item != tableColumnTypes.Image\"></p-skeleton>\r\n </td>\r\n <td *ngIf=\"wappTableLazyLoadingObject.hasEditButton || wappTableLazyLoadingObject.hasDeleteButton\">\r\n <div class=\"flex justify-content-end\">\r\n <button *ngIf=\"wappTableLazyLoadingObject?.hasEditButton\" \r\n pButton pRipple\r\n icon=\"pi pi-pencil\" class=\"p-button-text p-button-success mr-2\">\r\n </button>\r\n <button *ngIf=\"wappTableLazyLoadingObject?.hasDeleteButton\" \r\n pButton pRipple\r\n icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\">\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr class=\"w-table-lazy-empty-message-padding\">\r\n <td [attr.colspan]=\"calculateColspan()\">{{wappTableLazyLoadingObject.emptyMessage ? wappTableLazyLoadingObject.emptyMessage : 'No matches.'}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:400}.heading5{font-size:1.5rem;line-height:1.8333333333rem;font-weight:600}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:400}.subtitle1,.w-tab-text,.w-panel-title-text,.w-sidebar-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:600}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.3333333333rem;font-weight:600}.body,.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.w-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.3333333333rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.text846{color:#2e3134}.text700{color:#5f6368}.text500{color:#9aa0a6}.textWhite{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.focus,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b2eb}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#2e3134}.w-button-small-icon-text{font-size:12px}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:400;line-height:16px}.w-button-medium-tertiary-label-text{color:#2e3134}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:400;line-height:24px}.w-button-large-tertiary-label-text{color:#2e3134}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text,.w-view-small-value-text{color:#2e3134}.w-input-no-label-height{height:36px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8eaed;opacity:1}.w-input-small-label-text,.w-input-small-label-disabled{color:#2e3134}.w-input-small-label-disabled{color:#9aa0a6}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.w-input,.w-input-small-placeholder-text-only-color{color:#2e3134}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6368}.w-input-small-text-icon,.w-input-small-select-options-text{color:#2e3134}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#2e3134}.w-input-medium-label-disabled{color:#9aa0a6}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#2e3134}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6368}.w-input-medium-text-icon{color:#2e3134}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#2e3134}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#2e3134}.w-panel-content{color:#5f6368}.w-tab-text,.w-chip-text{color:#2e3134}.w-badge-text{font-size:8px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{color:#2e3134}.w-table-td-text,::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{color:#5f6368}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 4px 8px #0000001a}.w-table-lazy-selectable-row{cursor:pointer}.showing-per-page{color:#9aa0a6;font-weight:400}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a6;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0px;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a6;padding:0}::ng-deep .w-table-styles .p-datatable .p-sortable-column .p-sortable-column-icon{color:#000;margin-left:.5rem}::ng-deep .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-datatable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-datatable .p-paginator-bottom>button{color:#9aa0a6}::ng-deep .w-table-styles .p-datatable .p-datatable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .wapp-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8eaed;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8eaed;border-width:1px}::ng-deep .w-table-styles .p-datatable .p-datatable-tbody>tr>td{border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:6px 8px 5px}::ng-deep .w-table-no-buttons .p-datatable .p-datatable-tbody>tr>td{padding:16px 8px 15px!important}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b2eb;background:#00b2eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b2eb;border:1px solid #d6f2ff}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b2eb;background:#00b2eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8eaed}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8eaed;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#2e3134}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-datatable .p-datatable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.image-header{text-align:center!important}.height-input{height:32px}.w-input{border-radius:8px;border-width:1px;border-color:#e8eaed;gap:16px}::-webkit-input-placeholder{color:#5f6368}::-moz-placeholder{color:#5f6368}:-ms-input-placeholder{color:#5f6368}:-moz-placeholder{color:#5f6368}.w-input:hover{border:1px solid #1f5b72!important}.w-input:focus{box-shadow:0 0 3px 3px #d6f2ff!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6368!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8eaed}::ng-deep .p-datatable .p-datatable-thead>tr>th{padding:16px 8px;border:1px solid #e8eaed;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-datatable .p-datatable-tbody>tr{color:#9aa0a6}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .p-datatable .p-datatable-tbody>tr.w-table-lazy-empty-message-padding>td{padding:16px 12px 15px!important}\n"] }]
243
- }], ctorParameters: function () { return [{ type: i1.ConfirmationService }]; }, propDecorators: { loading: [{
244
- type: Input,
245
- args: ['loading']
246
- }], elements: [{
247
- type: Input,
248
- args: ['elements']
249
- }], rowsPerPage: [{
250
- type: Input,
251
- args: ['rowsPerPage']
252
- }], allElements: [{
253
- type: Input,
254
- args: ['allElements']
255
- }], totalRecords: [{
256
- type: Input,
257
- args: ['totalRecords']
258
- }], maxRowsPerPage: [{
259
- type: Input,
260
- args: ['maxRowsPerPage']
261
- }], wappTableLazyLoadingObject: [{
262
- type: Input,
263
- args: ['wappTableLazyLoadingObject']
264
- }], queryElements: [{
265
- type: Output,
266
- args: ['queryElements']
267
- }], onElementSelect: [{
268
- type: Output,
269
- args: ['onElementSelect']
270
- }], onViewElementSelect: [{
271
- type: Output,
272
- args: ['onViewElementSelect']
273
- }], onCustomElementSelect: [{
274
- type: Output,
275
- args: ['onCustomElementSelect']
276
- }], onCopyElementSelect: [{
277
- type: Output,
278
- args: ['onCopyElementSelect']
279
- }], onEditElementSelect: [{
280
- type: Output,
281
- args: ['onEditElementSelect']
282
- }], onDeleteElementSelect: [{
283
- type: Output,
284
- args: ['onDeleteElementSelect']
285
- }], onAllElementSelect: [{
286
- type: Output,
287
- args: ['onAllElementSelect']
288
- }], dataTable: [{
289
- type: ViewChild,
290
- args: ['table']
291
- }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10YWJsZS1sYXp5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRhYmxlLWxhenkvdy10YWJsZS1sYXp5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRhYmxlLWxhenkvdy10YWJsZS1sYXp5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBTzNJLE1BQU0sT0FBTyxtQkFBbUI7SUE2QjlCLFlBQ1UsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUE3QmxELHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUk3QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUErQixtQkFBbUIsQ0FBQztRQUkzQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUd0QixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUc1QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FBRTFELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN0Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzVDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbEQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQU8s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aW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIExhenlMb2FkRXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IExhenlFbGVtZW50UXVlcnlSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9sYXp5LWVsZW1lbnQtcXVlcnktcmVxdWVzdC5tb2RlbCc7XHJcbmltcG9ydCB7IFdhcHBUYWJsZUxhenlMb2FkaW5nIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy93YXBwLXRhYmxlLWxhenktbG9hZGluZy5tb2RlbCc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uRmlsdGVyVHlwZXMsIFRhYmxlQ29sdW1uVHlwZXMsIFdEYXRlUGlwZUZvcm1hdFR5cGUsIFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2VudW1zLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndy10YWJsZS1sYXp5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdy10YWJsZS1sYXp5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LXRhYmxlLWxhenkuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV1RhYmxlTGF6eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2VsZWN0ZWRFbGVtZW50czogYW55W10gPSBbXTtcclxuICB0cmFuc2xhdGlvbnM6IGFueTtcclxuICBsYXN0UXVlcnkhOiBMYXp5RWxlbWVudFF1ZXJ5UmVxdWVzdDtcclxuXHJcbiAgc2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsdGVyRWxlbWVudHNJbmRleDogbnVtYmVyID0gMDtcclxuICB3YXBwRGF0ZUZvcm1hdDogdHlwZW9mIFdEYXRlUGlwZUZvcm1hdFR5cGUgPSBXRGF0ZVBpcGVGb3JtYXRUeXBlO1xyXG5cclxuICBASW5wdXQoJ2xvYWRpbmcnKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoJ2VsZW1lbnRzJykgZWxlbWVudHMhOiBhbnlbXTtcclxuICBASW5wdXQoJ3Jvd3NQZXJQYWdlJykgcm93c1BlclBhZ2U6IG51bWJlciA9IDEwO1xyXG4gIEBJbnB1dCgnYWxsRWxlbWVudHMnKSBhbGxFbGVtZW50cyE6IGFueVtdO1xyXG4gIEBJbnB1dCgndG90YWxSZWNvcmRzJykgdG90YWxSZWNvcmRzITogbnVtYmVyO1xyXG4gIEBJbnB1dCgnbWF4Um93c1BlclBhZ2UnKSBtYXhSb3dzUGVyUGFnZTogbnVtYmVyID0gNTA7XHJcbiAgQElucHV0KCd3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdCcpIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0ITogV2FwcFRhYmxlTGF6eUxvYWRpbmc7XHJcblxyXG4gIEBPdXRwdXQoJ3F1ZXJ5RWxlbWVudHMnKSBxdWVyeUVsZW1lbnRzID0gbmV3IEV2ZW50RW1pdHRlcjxMYXp5RWxlbWVudFF1ZXJ5UmVxdWVzdD4oKTtcclxuXHJcbiAgQE91dHB1dCgnb25FbGVtZW50U2VsZWN0Jykgb25FbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25WaWV3RWxlbWVudFNlbGVjdCcpIG9uVmlld0VsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkN1c3RvbUVsZW1lbnRTZWxlY3QnKSBvbkN1c3RvbUVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkNvcHlFbGVtZW50U2VsZWN0Jykgb25Db3B5RWxlbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uRWRpdEVsZW1lbnRTZWxlY3QnKSBvbkVkaXRFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25EZWxldGVFbGVtZW50U2VsZWN0Jykgb25EZWxldGVFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuICBAT3V0cHV0KCdvbkFsbEVsZW1lbnRTZWxlY3QnKSBvbkFsbEVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgZGF0YVRhYmxlITogVGFibGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbG9hZEVsZW1lbnRzKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbGV0IGFkYXB0ZWRRdWVyeTogTGF6eUVsZW1lbnRRdWVyeVJlcXVlc3QgPSB7XHJcbiAgICAgIGZpcnN0OiBldmVudC5maXJzdCEsXHJcbiAgICAgIHJvd3M6IHRoaXMucm93c1BlclBhZ2UhLFxyXG4gICAgICBzb3J0T3JkZXI6IGV2ZW50LnNvcnRPcmRlciEsXHJcbiAgICAgIHNvcnRGaWVsZDogZXZlbnQuc29ydEZpZWxkISxcclxuICAgICAgZmlsdGVyczogT2JqZWN0LmtleXMoZXZlbnQuZmlsdGVycyEpLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNvbHVtbk5hbWU6IGtleSEsXHJcbiAgICAgICAgICB2YWx1ZTogZXZlbnQuZmlsdGVycyFba2V5XS52YWx1ZSxcclxuICAgICAgICAgIG1hdGNoTW9kZTogZXZlbnQuZmlsdGVycyFba2V5XS5tYXRjaE1vZGUhXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5sYXN0UXVlcnkgPSBhZGFwdGVkUXVlcnk7XHJcbiAgICB0aGlzLnF1ZXJ5RWxlbWVudHMuZW1pdChhZGFwdGVkUXVlcnkpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7ICAgIFxyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkRWxlbWVudHMoKSB7XHJcbiAgICB0aGlzLmxhc3RRdWVyeS5yb3dzID0gdGhpcy5yb3dzUGVyUGFnZTtcclxuICAgIHRoaXMucXVlcnlFbGVtZW50cy5lbWl0KHRoaXMubGFzdFF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIHJlYWRQcm9wZXJ0eShvYmo6IGFueSwgcHJvcDogc3RyaW5nKTogYW55IHtcclxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IHByb3Auc3BsaXQoJy4nKTtcclxuICAgIGxldCByZXN1bHQgPSBvYmo7XHJcblxyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gcHJvcGVydHkubWF0Y2goLyguKz8pXFxbKFxcZCspXFxdLyk7XHJcbiAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgIGNvbnN0IGFycmF5UHJvcCA9IG1hdGNoWzFdO1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQobWF0Y2hbMl0sIDEwKTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzdWx0W2FycmF5UHJvcF0pIHx8IGlzTmFOKGluZGV4KSB8fCBpbmRleCA8IDAgfHwgaW5kZXggPj0gcmVzdWx0W2FycmF5UHJvcF0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQgPSByZXN1bHRbYXJyYXlQcm9wXVtpbmRleF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHRbcHJvcGVydHldID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0W3Byb3BlcnR5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBvbkVsZW1lbnQoZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uRWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgdmlld0VsZW1lbnQoZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uVmlld0VsZW1lbnRTZWxlY3QuZW1pdChlbGVtZW50KTtcclxuICB9XHJcbiAgY3VzdG9tRWxlbWVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25DdXN0b21FbGVtZW50U2VsZWN0LmVtaXQoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBlZGl0RWxlbWVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25FZGl0RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybURlbGV0ZVNlbGVjdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbmZpcm1NdWx0aXBsZURlbGV0ZUxhYmVsLFxyXG4gICAgICBpY29uOiBcInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIsXHJcbiAgICAgIGFjY2VwdExhYmVsOiB0aGlzLndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbmZpcm1EZWxldGVCdG5MYWJlbCxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVTZWxlY3RlZEVsZW1lbnRzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2VsZWN0ZWRFbGVtZW50cygpIHtcclxuICAgIHRoaXMub25EZWxldGVFbGVtZW50U2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEVsZW1lbnRzKVxyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gW107XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGVsZXRlKGV2ZW50OiBFdmVudCwgZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbmZpcm1TaW5nbGVEZWxldGVMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb25maXJtRGVsZXRlQnRuTGFiZWwsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlU2luZ2xlRWxlbWVudChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTaW5nbGVFbGVtZW50KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbkRlbGV0ZUVsZW1lbnRTZWxlY3QuZW1pdChbZWxlbWVudF0pXHJcbiAgfVxyXG5cclxuICBjb3B5RWxlbWVudChlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25Db3B5RWxlbWVudFNlbGVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybUNvcHkoZXZlbnQ6IEV2ZW50LCBlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQgYXMgRXZlbnRUYXJnZXQsXHJcbiAgICAgIG1lc3NhZ2U6IHRoaXMud2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29uZmlybUNvcHlMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb25maXJtQ29weUJ0bkxhYmVsLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvcHlFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKHZhbHVlID0gW10pIHtcclxuICAgIHRoaXMuc2VsZWN0QWxsID0gdmFsdWUubGVuZ3RoID09PSB0aGlzLnRvdGFsUmVjb3JkcztcclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RBbGxDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmNoZWNrZWQ7XHJcblxyXG4gICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5vbkFsbEVsZW1lbnRTZWxlY3QuZW1pdCh0cnVlKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gdGhpcy53YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5kaXNhYmxlQ2hlY2tib3ggPyB0aGlzLmdldFNlbGVjdGFibGVFbGVtZW50cyh0aGlzLmFsbEVsZW1lbnRzKSA6IHRoaXMuYWxsRWxlbWVudHM7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGFibGVFbGVtZW50cyhhbGxFbGVtZW50czogYW55W10pIHtcclxuICAgIHJldHVybiBhbGxFbGVtZW50cy5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT4gIXRoaXMucmVhZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMud2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuZGlzYWJsZUNoZWNrYm94ISkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Qm9vbGVhbkNvbHVtbkNsYXNzKGluZGV4OiBudW1iZXIsIHZhbHVlUHJvcGVydHk6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGJvb2xlYW5JY29uQ2xhc3NlcyA9IFtdO1xyXG5cclxuICAgIGlmICh2YWx1ZVByb3BlcnR5ID09IHRydWUpIHtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS50cnVlSWNvbiA/PyAnJyk7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0udHJ1ZUljb25Db2xvciA/PyAnJyk7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlUHJvcGVydHkgPT0gZmFsc2UpIHtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5mYWxzZUljb24gPz8gJycpO1xyXG4gICAgICBib29sZWFuSWNvbkNsYXNzZXMucHVzaCh0aGlzLndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLmZhbHNlSWNvbkNvbG9yKSA/PyAnJztcclxuICAgIH0gZWxzZSBpZiAodmFsdWVQcm9wZXJ0eSA9PSBudWxsKSB7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0ubnVsbEljb24gPz8gJycpO1xyXG4gICAgICBib29sZWFuSWNvbkNsYXNzZXMucHVzaCh0aGlzLndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLm51bGxJY29uQ29sb3IgPz8gJycpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBib29sZWFuSWNvbkNsYXNzZXM7XHJcbiAgfVxyXG5cclxuICBjbGVhcih0YWJsZTogVGFibGUpIHtcclxuICAgIHRhYmxlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHRhYmxlQ29sdW1uRmlsdGVyVHlwZXMoKTogdHlwZW9mIFRhYmxlQ29sdW1uRmlsdGVyVHlwZXMge1xyXG4gICAgcmV0dXJuIFRhYmxlQ29sdW1uRmlsdGVyVHlwZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHRhYmxlQ29sdW1uVHlwZXMoKTogdHlwZW9mIFRhYmxlQ29sdW1uVHlwZXMge1xyXG4gICAgcmV0dXJuIFRhYmxlQ29sdW1uVHlwZXM7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmRhdGFUYWJsZS5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKGFsaWdubWVudDogbnVtYmVyKSB7XHJcbiAgICBpZihhbGlnbm1lbnQgPT0gV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcy5SaWdodCkgcmV0dXJuICd0ZXh0LXJpZ2h0JztcclxuICAgIGlmKGFsaWdubWVudCA9PSBXYXBwVGFibGVDb2x1bW5BbGlnblR5cGVzLkxlZnQpIHJldHVybiAndGV4dC1sZWZ0JztcclxuICAgIGlmKGFsaWdubWVudCA9PSBXYXBwVGFibGVDb2x1bW5BbGlnblR5cGVzLkNlbnRlcikgcmV0dXJuICd0ZXh0LWNlbnRlcic7XHJcbiAgICByZXR1cm4gJ3RleHQtbGVmdCdcclxuICB9XHJcblxyXG4gIGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzc0RlZmF1bHRCeUNvbHVtblR5cGUoY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlcykge1xyXG4gICAgaWYoY29sdW1uVHlwZSA9PSBUYWJsZUNvbHVtblR5cGVzLlRleHQpIHJldHVybiAndGV4dC1sZWZ0JztcclxuICAgIGlmKGNvbHVtblR5cGUgPT0gVGFibGVDb2x1bW5UeXBlcy5DdXJyZW5jeSkgcmV0dXJuICd0ZXh0LWxlZnQnO1xyXG4gICAgaWYoY29sdW1uVHlwZSA9PSBUYWJsZUNvbHVtblR5cGVzLkRhdGUpIHJldHVybiAndGV4dC1sZWZ0JztcclxuICAgIGlmKGNvbHVtblR5cGUgPT0gVGFibGVDb2x1bW5UeXBlcy5CYWRnZSkgcmV0dXJuICd0ZXh0LWNlbnRlcic7XHJcbiAgICBpZihjb2x1bW5UeXBlID09IFRhYmxlQ29sdW1uVHlwZXMuQm9vbGVhbikgcmV0dXJuICd0ZXh0LWNlbnRlcic7XHJcbiAgICBpZihjb2x1bW5UeXBlID09IFRhYmxlQ29sdW1uVHlwZXMuSW1hZ2UpIHJldHVybiAndGV4dC1jZW50ZXInO1xyXG4gICAgaWYoY29sdW1uVHlwZSA9PSBUYWJsZUNvbHVtblR5cGVzLk51bWJlcikgcmV0dXJuICd0ZXh0LXJpZ2h0JztcclxuICAgIHJldHVybiAndGV4dC1sZWZ0J1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlQ29sc3BhbigpIHtcclxuICAgIGxldCBjb2xzcGFuID0gdGhpcy53YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oZWFkZXJzLmxlbmd0aDtcclxuICAgIHRoaXMud2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzQ2hlY2tib3ggPyBcclxuICAgICAgY29sc3BhbiArPSAxIDogJyc7XHJcbiAgICAgIHRoaXMuaGFzQWN0aW9uQnV0dG9ucygpID9cclxuICAgICAgICBjb2xzcGFuICs9IDEgOiAnJztcclxuICAgICAgcmV0dXJuIGNvbHNwYW47XHJcbiAgfVxyXG5cclxuICBoYXNBY3Rpb25CdXR0b25zKCkgOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0NvcHlCdXR0b24gfHxcclxuICAgICAgICAgICAgdGhpcy53YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNFZGl0QnV0dG9uIHx8XHJcbiAgICAgICAgICAgIHRoaXMud2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzVmlld0J1dHRvbiB8fFxyXG4gICAgICAgICAgICB0aGlzLndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0RlbGV0ZUJ1dHRvbiB8fCBcclxuICAgICAgICAgICAgdGhpcy53YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jdXN0b21CdXR0b25Db25maWc/Lmhhc0N1c3RvbUJ1dHRvbiA/XHJcbiAgICAgICAgICB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCIuZmlsdGVyLXBhbmVsXCI+PC9uZy1jb250ZW50PlxyXG48ZGl2ICpuZ0lmPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3RcIiBbY2xhc3MudGFibGUtY29udGFpbmVyXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LnRhYmxlQ29udGFpbmVyXCI+XHJcbiAgICA8cC10YWJsZSBjbGFzcz1cInctdGFibGUtc3R5bGVzXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd3LXRhYmxlLW5vLWJ1dHRvbnMnIDogIXdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0VkaXRCdXR0b24gJiYgIXdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0RlbGV0ZUJ1dHRvbiAmJiAhd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzQ29weUJ1dHRvbiAmJiAhd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY3VzdG9tQnV0dG9uQ29uZmlnICYmICF3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNWaWV3QnV0dG9uIH1cIlxyXG4gICAgICAgICAgICAjdGFibGUgW3ZhbHVlXT1cImVsZW1lbnRzXCIgXHJcbiAgICAgICAgICAgIGRhdGFLZXk9XCJ7e3dhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmlkZW50aWZpY2F0b3J9fVwiXHJcbiAgICAgICAgICAgIFtsYXp5XT1cInRydWVcIiBcclxuICAgICAgICAgICAgKG9uTGF6eUxvYWQpPVwibG9hZEVsZW1lbnRzKCRldmVudClcIlxyXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cInNlbGVjdGVkRWxlbWVudHNcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbc2VsZWN0QWxsXT1cInNlbGVjdEFsbFwiIChzZWxlY3RBbGxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzUGFnaW5hdG9yIVwiXHJcbiAgICAgICAgICAgIFtyb3dzXT1cInJvd3NQZXJQYWdlXCIgXHJcbiAgICAgICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPyB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlICsgJyAnICsgIHJvd3NQZXJQYWdlICsgJyBkZSAnICsgdG90YWxSZWNvcmRzISA6ICdTaG93aW5nICcgKyByb3dzUGVyUGFnZSArICcgb2YgJyArIHRvdGFsUmVjb3JkcyFcIlxyXG4gICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuZ2xvYmFsRmlsdGVyRmllbGRzIVwiXHJcbiAgICAgICAgICAgIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzogd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QudGFibGVNaW5XaWR0aCF9XCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNDbGVhckJ1dHRvbiB8fCB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNHbG9iYWxTZWFyY2hcIiBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtcGFnaW5hdG9yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNUb3RhbFBhZ2luZ1NlbGVjdG9yXCIgY2xhc3M9XCJzaG93aW5nLXBlci1wYWdlXCI+IHt7d2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZX19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyICpuZ0lmPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzVG90YWxQYWdpbmdTZWxlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwbC0yIHNob3dpbmctcGVyLXBhZ2VcIiBbc2l6ZV09XCIxXCIgWyhuZ01vZGVsKV09XCJyb3dzUGVyUGFnZVwiIFtzaG93QnV0dG9uc109XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uTGF5b3V0PVwiaG9yaXpvbnRhbFwiIGlucHV0SWQ9XCJob3Jpem9udGFsXCIgc3Bpbm5lck1vZGU9XCJob3Jpem9udGFsXCIgW3N0ZXBdPVwiMVwiIFttaW5dPVwiMVwiIFttYXhdPVwibWF4Um93c1BlclBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLXBsdXNcIiBcclxuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktbWludXNcIiBcclxuICAgICAgICAgICAgICAgICAgICBtb2RlPVwiZGVjaW1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicmVsb2FkRWxlbWVudHMoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdD8uaGFzR2xvYmFsU2VhcmNoXCIgY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCBtbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaGVpZ2h0LWlucHV0IHctaW5wdXRcIiBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgKGlucHV0KT1cInRhYmxlLmZpbHRlckdsb2JhbCgkZXZlbnQsICdjb250YWlucycpXCIgcGxhY2Vob2xkZXI9XCJ7e3dhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LnNlYXJjaFBsYWNlaG9sZGVyfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cIiF3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNDb2x1bW5GaWx0ZXJzICYmIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0NoZWNrYm94OyBlbHNlIG5vQ2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ25bMF0pIDogJ3RleHQtY2VudGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DaGVja2JveD48dGggKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNDaGVja2JveFwiPjwvdGg+PC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzU29ydGFibGVDb2x1bW5zOyBlbHNlIHNvbWV0aGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2Ygd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3Q/LmhlYWRlcnM7IGluZGV4IGFzIGlcIiBbY2xhc3NdPVwiaGVhZGVyID09ICgnSW1hZ2VuJyB8fCAnSW1hZ2UnKSA/ICdpbWFnZS1oZWFkZXInOiAnJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnblt3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNDaGVja2JveCA/IGkrMSA6IGldKSA6IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzc0RlZmF1bHRCeUNvbHVtblR5cGUod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uVHlwZXNbd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzQ2hlY2tib3ggPyBpKzEgOiBpXSlcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2hlYWRlcn19XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc29tZXRoaW5nPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzb21ldGhpbmcgbmdGb3IgbGV0LWZpbHRlclR5cGUgW25nRm9yT2ZdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGVhZGVyc1wiIGxldC1pPVwiaW5kZXhcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIFtwU29ydGFibGVDb2x1bW5dPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3Quc29ydGFibGVOYW1lc1tpXVwiIFtjbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oZWFkZXJzW2ldID09ICgnSW1hZ2VuJyB8fCAnSW1hZ2UnKSA/ICdpbWFnZS1oZWFkZXInOiAnJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ25bd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzQ2hlY2tib3ggPyBpKzEgOiBpXSkgOiBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3NEZWZhdWx0QnlDb2x1bW5UeXBlKHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtblR5cGVzW3dhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0NoZWNrYm94ID8gaSsxIDogaV0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oZWFkZXJzW2ldfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5zb3J0YWJsZU5hbWVzW2ldICE9IG51bGxcIiBbZmllbGRdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3Quc29ydGFibGVOYW1lc1tpXVwiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPHRoICpuZ0lmPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzRGVsZXRlQnV0dG9uIHx8IHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0VkaXRCdXR0b24gfHwgd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzVmlld0J1dHRvbiB8fCB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNDb3B5QnV0dG9uIHx8IHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmN1c3RvbUJ1dHRvbkNvbmZpZz8uaGFzQ3VzdG9tQnV0dG9uXCI+PC90aD5cclxuICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICA8dHIgKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNDb2x1bW5GaWx0ZXJzXCI+XHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0NoZWNrYm94XCIgW25nQ2xhc3NdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ25bMF0pIDogJ3RleHQtbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0ltYWdlXCIgXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnblt3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNDaGVja2JveCA/IDEgOiAwXSkgOiBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3NEZWZhdWx0QnlDb2x1bW5UeXBlKHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtblR5cGVzW3dhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0NoZWNrYm94ID8gMSA6IDBdKVwiPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWZpbHRlclR5cGUgW25nRm9yT2ZdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uRmlsdGVyVHlwZXNcIiBsZXQtaT1cImluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJmaWx0ZXJUeXBlID09IHRhYmxlQ29sdW1uRmlsdGVyVHlwZXMuVGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1jb2x1bW5GaWx0ZXIgdHlwZT1cInRleHRcIiBbZmllbGRdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuZmlsdGVyTmFtZXNbaV1cIj48L3AtY29sdW1uRmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImZpbHRlclR5cGUgPT0gdGFibGVDb2x1bW5GaWx0ZXJUeXBlcy5NdWx0aXNlbGVjdFwiIFtuZ0NsYXNzXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyIFtmaWVsZF09XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5maWx0ZXJOYW1lc1tpXVwiIG1hdGNoTW9kZT1cImluXCIgW3Nob3dNZW51XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtdmFsdWUgbGV0LWZpbHRlcj1cImZpbHRlckNhbGxiYWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbbmdNb2RlbF09XCJ2YWx1ZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LnNlbGVjdEZpbHRlckVsZW1lbnRzW2ldXCIgcGxhY2Vob2xkZXI9XCJBbnlcIiAob25DaGFuZ2UpPVwiZmlsdGVyKCRldmVudC52YWx1ZSlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBbbWF4U2VsZWN0ZWRMYWJlbHNdPVwiMVwiIFtzZWxlY3RlZEl0ZW1zTGFiZWxdPVwiJ3swfSBpdGVtcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW9wdGlvbiBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLW11bHRpc2VsZWN0LXJlcHJlc2VudGF0aXZlLW9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0xXCI+e3tvcHRpb24ubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1jb2x1bW5GaWx0ZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZmlsdGVyVHlwZSA9PSB0YWJsZUNvbHVtbkZpbHRlclR5cGVzLk5vbmVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZmlsdGVyVHlwZSA9PSB0YWJsZUNvbHVtbkZpbHRlclR5cGVzLkJvb2xlYW5cIiBbbmdDbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1jZW50ZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyIHR5cGU9XCJib29sZWFuXCIgW2ZpZWxkXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmZpbHRlck5hbWVzW2ldXCI+PC9wLWNvbHVtbkZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJmaWx0ZXJUeXBlID09IHRhYmxlQ29sdW1uRmlsdGVyVHlwZXMuRGF0ZVwiIFtuZ0NsYXNzXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyIHR5cGU9XCJkYXRlXCIgW2ZpZWxkXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmZpbHRlck5hbWVzW2ldXCI+PC9wLWNvbHVtbkZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0RlbGV0ZUJ1dHRvbiB8fCB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNFZGl0QnV0dG9uIHx8IHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc1ZpZXdCdXR0b24gfHwgd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzQ29weUJ1dHRvbiB8fCB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jdXN0b21CdXR0b25Db25maWc/Lmhhc0N1c3RvbUJ1dHRvblwiPjwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbGVtZW50IGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgPHRyICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNvbHVtblR5cGUgW25nRm9yT2ZdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uVHlwZXNcIiBsZXQtaT1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5DaGVja2JveCAmJiB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNDaGVja2JveFwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uV2lkdGhzW2ldXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmRpc2FibGVDaGVja2JveDsgZWxzZSBhY3RpdmVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cImVsZW1lbnRcIiBbZGlzYWJsZWRdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmRpc2FibGVDaGVja2JveClcIj48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhY3RpdmVDaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJlbGVtZW50XCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuSW1hZ2VcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1jZW50ZXInXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3RWxlbWVudChlbGVtZW50KVwiIGNsYXNzPVwidy10YWJsZS1sYXp5LXNlbGVjdGFibGUtcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbnNbaV0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbnNbaV0pXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxlbWVudC1pbWFnZS13aWR0aFwiLz5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLlRleHRcIiAgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5XaWR0aHNbaV1cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdFbGVtZW50KGVsZW1lbnQpXCIgY2xhc3M9XCJ3LXRhYmxlLWxhenktc2VsZWN0YWJsZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5zW2ldKSB9fVxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuTnVtYmVyXCIgIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uV2lkdGhzW2ldXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LXJpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0VsZW1lbnQoZWxlbWVudClcIiBjbGFzcz1cInctdGFibGUtbGF6eS1zZWxlY3RhYmxlLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbnNbaV0pIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5DdXJyZW5jeVwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uV2lkdGhzW2ldXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3RWxlbWVudChlbGVtZW50KVwiIGNsYXNzPVwidy10YWJsZS1sYXp5LXNlbGVjdGFibGUtcm93XCI+XHJcbiAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uc1tpXSkgfCBjdXJyZW5jeSB9fVxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuQmFkZ2VcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1jZW50ZXInXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3RWxlbWVudChlbGVtZW50KVwiIGNsYXNzPVwidy10YWJsZS1sYXp5LXNlbGVjdGFibGUtcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8dy1iYWRnZSBbbGFiZWxdPVwicmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbnNbaV0pXCIgW2NvbG9yXT1cIidpbmZvJ1wiPjwvdy1iYWRnZT4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkJvb2xlYW5cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0VsZW1lbnQoZWxlbWVudClcIiBjbGFzcz1cInctdGFibGUtbGF6eS1zZWxlY3RhYmxlLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaVwiIFtuZ0NsYXNzXT1cImdldEJvb2xlYW5Db2x1bW5DbGFzcyhpLCByZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uc1tpXSkpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0VsZW1lbnQoZWxlbWVudClcIiBjbGFzcz1cInctdGFibGUtbGF6eS1zZWxlY3RhYmxlLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbnNbaV0pIHwgd2FwcERhdGUgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLlNob3J0RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0VsZW1lbnQoZWxlbWVudClcIiBjbGFzcz1cInctdGFibGUtbGF6eS1zZWxlY3RhYmxlLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbnNbaV0pIHwgd2FwcERhdGUgOiB3YXBwRGF0ZUZvcm1hdC5kIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5Mb25nRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0VsZW1lbnQoZWxlbWVudClcIiBjbGFzcz1cInctdGFibGUtbGF6eS1zZWxlY3RhYmxlLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KGVsZW1lbnQsIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmNvbHVtbnNbaV0pIHwgd2FwcERhdGUgOiB3YXBwRGF0ZUZvcm1hdC5EIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5HZW5lcmFsRGF0ZVRpbWVTaG9ydFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdFbGVtZW50KGVsZW1lbnQpXCIgY2xhc3M9XCJ3LXRhYmxlLWxhenktc2VsZWN0YWJsZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5zW2ldKSB8IHdhcHBEYXRlIDogd2FwcERhdGVGb3JtYXQuZyB9fVxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuR2VuZXJhbERhdGVUaW1lTG9uZ1RpbWVcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdFbGVtZW50KGVsZW1lbnQpXCIgY2xhc3M9XCJ3LXRhYmxlLWxhenktc2VsZWN0YWJsZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5zW2ldKSB8IHdhcHBEYXRlIDogd2FwcERhdGVGb3JtYXQuRyB9fVxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3Q/Lmhhc1ZpZXdCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cInZpZXdFbGVtZW50KGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnZpZXdUb29sdGlwIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5idXR0b25Ub29sdGlwcz8ucG9zaXRpb24hXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWV5ZVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1pbmZvIG1yLTJcIj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jdXN0b21CdXR0b25Db25maWc/Lmhhc0N1c3RvbUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjdXN0b21FbGVtZW50KGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jdXN0b21CdXR0b25Db25maWc/Lmljb24hXCJcclxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuYnV0dG9uVG9vbHRpcHM/LmN1c3RvbVRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1pbmZvIG1yLTJcIj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNFZGl0QnV0dG9uICYmICF3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5kaXNhYmxlRWRpdFByb3BlcnR5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJlZGl0RWxlbWVudChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5lZGl0VG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzIG1yLTJcIj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNFZGl0QnV0dG9uICYmIHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmRpc2FibGVFZGl0UHJvcGVydHlcIiBcclxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cImVkaXRFbGVtZW50KGVsZW1lbnQpXCIgW2Rpc2FibGVkXT1cInJlYWRQcm9wZXJ0eShlbGVtZW50LCB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5kaXNhYmxlRWRpdFByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5lZGl0VG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuYnV0dG9uVG9vbHRpcHM/LnBvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzIG1yLTJcIj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdD8uaGFzQ29weUJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwiY29uZmlybUNvcHkoJGV2ZW50LCBlbGVtZW50KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5idXR0b25Ub29sdGlwcz8uY29weVRvb2x0aXAhXCJcclxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1jb3B5XCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWhlbHAgbXItMlwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdD8uaGFzRGVsZXRlQnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuZGlzYWJsZURlbGV0ZVByb3BlcnR5OyBlbHNlIG5vRGlzYWJsZURlbGV0ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cImNvbmZpcm1EZWxldGUoJGV2ZW50LCBlbGVtZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkUHJvcGVydHkoZWxlbWVudCwgd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuZGlzYWJsZURlbGV0ZVByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5idXR0b25Ub29sdGlwcz8uZGVsZXRlVG9vbHRpcCFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EaXNhYmxlRGVsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjb25maXJtRGVsZXRlKCRldmVudCwgZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5kZWxldGVUb29sdGlwIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIndhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmJ1dHRvblRvb2x0aXBzPy5wb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxvYWRpbmdib2R5XCI+XHJcbiAgICAgICAgICAgIDx0ciBoZWlnaHQ9XCI3MHB4XCIgKm5nRm9yPVwibGV0IG4gb2YgWzAsMSwyLDMsNF1cIj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgaXRlbSBvZiB3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5jb2x1bW5UeXBlc1wiIFtzdHlsZS53aWR0aF09XCJpdGVtID09IHRhYmxlQ29sdW1uVHlwZXMuQ2hlY2tib3ggPyAnOHJlbScgOiAnJ1wiID5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggKm5nSWY9XCJpdGVtID09IHRhYmxlQ29sdW1uVHlwZXMuQ2hlY2tib3ggJiYgd2FwcFRhYmxlTGF6eUxvYWRpbmdPYmplY3QuaGFzQ2hlY2tib3hcIj48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDxwLXNrZWxldG9uICpuZ0lmPVwiaXRlbSA9PSB0YWJsZUNvbHVtblR5cGVzLkltYWdlXCIgd2lkdGg9XCI2cmVtXCIgaGVpZ2h0PVwiNHJlbVwiPjwvcC1za2VsZXRvbj5cclxuICAgICAgICAgICAgICAgIDxwLXNrZWxldG9uICpuZ0lmPVwiaXRlbSAhPSB0YWJsZUNvbHVtblR5cGVzLkNoZWNrYm94ICYmIGl0ZW0gIT0gdGFibGVDb2x1bW5UeXBlcy5JbWFnZVwiPjwvcC1za2VsZXRvbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdC5oYXNFZGl0QnV0dG9uIHx8IHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0Lmhhc0RlbGV0ZUJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdD8uaGFzRWRpdEJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktcGVuY2lsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXN1Y2Nlc3MgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3YXBwVGFibGVMYXp5TG9hZGluZ09iamVjdD8uaGFzRGVsZXRlQnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcbiAgICAgICAgPHRyIGNsYXNzPVwidy10YWJsZS1sYXp5LWVtcHR5LW1lc3NhZ2UtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjYWxjdWxhdGVDb2xzcGFuKClcIj57e3dhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmVtcHR5TWVzc2FnZSA/IHdhcHBUYWJsZUxhenlMb2FkaW5nT2JqZWN0LmVtcHR5TWVzc2FnZSA6ICdObyBtYXRjaGVzLid9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtdGFibGU+XHJcbjwvZGl2PlxyXG48cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD4iXX0=