@deenruv/admin-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1175) hide show
  1. package/LICENSE +23 -0
  2. package/catalog/catalog.module.d.ts +43 -0
  3. package/catalog/catalog.routes.d.ts +4 -0
  4. package/catalog/components/apply-facet-dialog/apply-facet-dialog.component.d.ts +16 -0
  5. package/catalog/components/asset-detail/asset-detail.component.d.ts +28 -0
  6. package/catalog/components/asset-list/asset-list.component.d.ts +23 -0
  7. package/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.d.ts +35 -0
  8. package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.d.ts +40 -0
  9. package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.d.ts +4 -0
  10. package/catalog/components/collection-contents/collection-contents.component.d.ts +39 -0
  11. package/catalog/components/collection-data-table/collection-data-table.component.d.ts +80 -0
  12. package/catalog/components/collection-detail/collection-detail.component.d.ts +71 -0
  13. package/catalog/components/collection-list/collection-breadcrumb.pipe.d.ts +11 -0
  14. package/catalog/components/collection-list/collection-list-bulk-actions.d.ts +8 -0
  15. package/catalog/components/collection-list/collection-list.component.d.ts +25 -0
  16. package/catalog/components/collection-tree/array-to-tree.d.ts +19 -0
  17. package/catalog/components/collection-tree/collection-tree-node.component.d.ts +44 -0
  18. package/catalog/components/collection-tree/collection-tree.component.d.ts +22 -0
  19. package/catalog/components/collection-tree/collection-tree.service.d.ts +33 -0
  20. package/catalog/components/collection-tree/collection-tree.types.d.ts +7 -0
  21. package/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.d.ts +10 -0
  22. package/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.d.ts +19 -0
  23. package/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.d.ts +18 -0
  24. package/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.d.ts +27 -0
  25. package/catalog/components/facet-detail/facet-detail.component.d.ts +76 -0
  26. package/catalog/components/facet-list/facet-list-bulk-actions.d.ts +7 -0
  27. package/catalog/components/facet-list/facet-list.component.d.ts +19 -0
  28. package/catalog/components/generate-product-variants/generate-product-variants.component.d.ts +65 -0
  29. package/catalog/components/move-collections-dialog/move-collections-dialog.component.d.ts +23 -0
  30. package/catalog/components/option-value-input/option-value-input.component.d.ts +48 -0
  31. package/catalog/components/product-detail/product-detail.component.d.ts +75 -0
  32. package/catalog/components/product-list/product-list-bulk-actions.d.ts +7 -0
  33. package/catalog/components/product-list/product-list.component.d.ts +18 -0
  34. package/catalog/components/product-list/product-list.graphql.d.ts +1 -0
  35. package/catalog/components/product-options-editor/product-options-editor.component.d.ts +47 -0
  36. package/catalog/components/product-variant-detail/product-variant-detail.component.d.ts +79 -0
  37. package/catalog/components/product-variant-detail/product-variant-detail.graphql.d.ts +3 -0
  38. package/catalog/components/product-variant-list/product-variant-list-bulk-actions.d.ts +6 -0
  39. package/catalog/components/product-variant-list/product-variant-list.component.d.ts +14 -0
  40. package/catalog/components/product-variant-list/product-variant-list.graphql.d.ts +1 -0
  41. package/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.d.ts +18 -0
  42. package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +88 -0
  43. package/catalog/components/product-variants-table/product-variants-table.component.d.ts +55 -0
  44. package/catalog/components/update-product-option-dialog/update-product-option-dialog.component.d.ts +25 -0
  45. package/catalog/components/variant-price-detail/variant-price-detail.component.d.ts +20 -0
  46. package/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.d.ts +10 -0
  47. package/catalog/index.d.ts +5 -0
  48. package/catalog/providers/product-detail/product-detail.service.d.ts +286 -0
  49. package/catalog/providers/product-detail/replace-last.d.ts +6 -0
  50. package/catalog/providers/routing/product-variants-resolver.d.ts +8 -0
  51. package/catalog/public_api.d.ts +48 -0
  52. package/core/app.component.d.ts +19 -0
  53. package/core/app.component.module.d.ts +9 -0
  54. package/core/app.config.d.ts +3 -0
  55. package/core/common/base-detail.component.d.ts +146 -0
  56. package/core/common/base-entity-resolver.d.ts +45 -0
  57. package/core/common/base-list.component.d.ts +138 -0
  58. package/core/common/component-registry-types.d.ts +65 -0
  59. package/core/common/deactivate-aware.d.ts +8 -0
  60. package/core/common/detail-breadcrumb.d.ts +12 -0
  61. package/core/common/generated-types.d.ts +20279 -0
  62. package/core/common/introspection-result-wrapper.d.ts +1 -0
  63. package/core/common/introspection-result.d.ts +7 -0
  64. package/core/common/single-search-selection-model.d.ts +16 -0
  65. package/core/common/title-setter.d.ts +4 -0
  66. package/core/common/utilities/bulk-action-utils.d.ts +49 -0
  67. package/core/common/utilities/configurable-operation-utils.d.ts +48 -0
  68. package/core/common/utilities/create-updated-translatable.d.ts +25 -0
  69. package/core/common/utilities/custom-field-default-value.d.ts +6 -0
  70. package/core/common/utilities/find-translation.d.ts +14 -0
  71. package/core/common/utilities/get-default-ui-language.d.ts +3 -0
  72. package/core/common/utilities/interpolate-description.d.ts +7 -0
  73. package/core/common/utilities/selection-manager.d.ts +30 -0
  74. package/core/common/utilities/string-to-color.d.ts +4 -0
  75. package/core/common/version.d.ts +1 -0
  76. package/core/components/alerts/alerts.component.d.ts +11 -0
  77. package/core/components/app-shell/app-shell.component.d.ts +41 -0
  78. package/core/components/base-nav/base-nav.component.d.ts +30 -0
  79. package/core/components/breadcrumb/breadcrumb.component.d.ts +27 -0
  80. package/core/components/channel-switcher/channel-switcher.component.d.ts +21 -0
  81. package/core/components/main-nav/main-nav.component.d.ts +22 -0
  82. package/core/components/notification/notification.component.d.ts +37 -0
  83. package/core/components/overlay-host/overlay-host.component.d.ts +12 -0
  84. package/core/components/settings-nav/settings-nav.component.d.ts +11 -0
  85. package/core/components/theme-switcher/theme-switcher.component.d.ts +16 -0
  86. package/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.d.ts +30 -0
  87. package/core/components/user-menu/user-menu.component.d.ts +12 -0
  88. package/core/core.module.d.ts +39 -0
  89. package/core/data/check-jobs-link.d.ts +19 -0
  90. package/core/data/client-state/client-defaults.d.ts +32 -0
  91. package/core/data/client-state/client-resolvers.d.ts +12 -0
  92. package/core/data/data.module.d.ts +17 -0
  93. package/core/data/definitions/administrator-definitions.d.ts +14 -0
  94. package/core/data/definitions/auth-definitions.d.ts +4 -0
  95. package/core/data/definitions/client-definitions.d.ts +17 -0
  96. package/core/data/definitions/collection-definitions.d.ts +13 -0
  97. package/core/data/definitions/customer-definitions.d.ts +23 -0
  98. package/core/data/definitions/facet-definitions.d.ts +13 -0
  99. package/core/data/definitions/order-definitions.d.ts +39 -0
  100. package/core/data/definitions/product-definitions.d.ts +49 -0
  101. package/core/data/definitions/promotion-definitions.d.ts +6 -0
  102. package/core/data/definitions/settings-definitions.d.ts +69 -0
  103. package/core/data/definitions/shared-definitions.d.ts +3 -0
  104. package/core/data/definitions/shipping-definitions.d.ts +8 -0
  105. package/core/data/omit-typename-link.d.ts +11 -0
  106. package/core/data/providers/administrator-data.service.d.ts +19 -0
  107. package/core/data/providers/auth-data.service.d.ts +9 -0
  108. package/core/data/providers/base-data.service.d.ts +26 -0
  109. package/core/data/providers/client-data.service.d.ts +26 -0
  110. package/core/data/providers/collection-data.service.d.ts +25 -0
  111. package/core/data/providers/customer-data.service.d.ts +36 -0
  112. package/core/data/providers/data.service.d.ts +86 -0
  113. package/core/data/providers/facet-data.service.d.ts +19 -0
  114. package/core/data/providers/fetch-adapter.d.ts +14 -0
  115. package/core/data/providers/interceptor.d.ts +49 -0
  116. package/core/data/providers/order-data.service.d.ts +48 -0
  117. package/core/data/providers/product-data.service.d.ts +86 -0
  118. package/core/data/providers/promotion-data.service.d.ts +11 -0
  119. package/core/data/providers/settings-data.service.d.ts +74 -0
  120. package/core/data/providers/shipping-method-data.service.d.ts +17 -0
  121. package/core/data/query-result.d.ts +43 -0
  122. package/core/data/server-config.d.ts +39 -0
  123. package/core/data/utils/add-custom-fields.d.ts +7 -0
  124. package/core/data/utils/get-server-location.d.ts +4 -0
  125. package/core/data/utils/is-entity-create-or-update-mutation.d.ts +6 -0
  126. package/core/data/utils/remove-readonly-custom-fields.d.ts +17 -0
  127. package/core/data/utils/transform-relation-custom-field-inputs.d.ts +8 -0
  128. package/core/extension/add-action-bar-dropdown-menu-item.d.ts +25 -0
  129. package/core/extension/add-action-bar-item.d.ts +21 -0
  130. package/core/extension/add-nav-menu-item.d.ts +56 -0
  131. package/core/extension/components/angular-route.component.d.ts +26 -0
  132. package/core/extension/components/route.component.d.ts +20 -0
  133. package/core/extension/providers/page-metadata.service.d.ts +9 -0
  134. package/core/extension/register-alert.d.ts +11 -0
  135. package/core/extension/register-bulk-action.d.ts +49 -0
  136. package/core/extension/register-custom-detail-component.d.ts +55 -0
  137. package/core/extension/register-dashboard-widget.d.ts +17 -0
  138. package/core/extension/register-data-table-component.d.ts +45 -0
  139. package/core/extension/register-form-input-component.d.ts +51 -0
  140. package/core/extension/register-history-entry-component.d.ts +66 -0
  141. package/core/extension/register-page-tab.d.ts +23 -0
  142. package/core/extension/register-route-component.d.ts +109 -0
  143. package/core/extension/types.d.ts +11 -0
  144. package/core/index.d.ts +5 -0
  145. package/core/providers/alerts/alerts.service.d.ts +150 -0
  146. package/core/providers/auth/auth.service.d.ts +40 -0
  147. package/core/providers/breadcrumb/breadcrumb.service.d.ts +39 -0
  148. package/core/providers/bulk-action-registry/bulk-action-registry.service.d.ts +9 -0
  149. package/core/providers/bulk-action-registry/bulk-action-types.d.ts +149 -0
  150. package/core/providers/channel/channel.service.d.ts +16 -0
  151. package/core/providers/component-registry/component-registry.service.d.ts +13 -0
  152. package/core/providers/currency/currency.service.d.ts +10 -0
  153. package/core/providers/custom-detail-component/custom-detail-component-types.d.ts +26 -0
  154. package/core/providers/custom-detail-component/custom-detail-component.service.d.ts +9 -0
  155. package/core/providers/custom-field-component/custom-field-component.service.d.ts +25 -0
  156. package/core/providers/custom-history-entry-component/history-entry-component-types.d.ts +81 -0
  157. package/core/providers/custom-history-entry-component/history-entry-component.service.d.ts +10 -0
  158. package/core/providers/dashboard-widget/dashboard-widget-types.d.ts +56 -0
  159. package/core/providers/dashboard-widget/dashboard-widget.service.d.ts +24 -0
  160. package/core/providers/data-table/data-table-filter-collection.d.ts +48 -0
  161. package/core/providers/data-table/data-table-filter.d.ts +108 -0
  162. package/core/providers/data-table/data-table-sort-collection.d.ts +24 -0
  163. package/core/providers/data-table/data-table-sort.d.ts +14 -0
  164. package/core/providers/guard/auth.guard.d.ts +17 -0
  165. package/core/providers/health-check/health-check.service.d.ts +40 -0
  166. package/core/providers/i18n/custom-http-loader.d.ts +21 -0
  167. package/core/providers/i18n/custom-message-format-compiler.d.ts +15 -0
  168. package/core/providers/i18n/i18n.service.d.ts +39 -0
  169. package/core/providers/job-queue/job-queue.service.d.ts +22 -0
  170. package/core/providers/local-storage/local-storage.service.d.ts +66 -0
  171. package/core/providers/localization/localization.service.d.ts +21 -0
  172. package/core/providers/modal/modal.service.d.ts +67 -0
  173. package/core/providers/modal/modal.types.d.ts +69 -0
  174. package/core/providers/nav-builder/nav-builder-types.d.ts +279 -0
  175. package/core/providers/nav-builder/nav-builder.service.d.ts +64 -0
  176. package/core/providers/notification/notification.service.d.ts +105 -0
  177. package/core/providers/overlay-host/overlay-host.service.d.ts +25 -0
  178. package/core/providers/page/page.service.d.ts +61 -0
  179. package/core/providers/permissions/permissions.service.d.ts +26 -0
  180. package/core/public_api.d.ts +313 -0
  181. package/core/shared/components/action-bar/action-bar.component.d.ts +17 -0
  182. package/core/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.d.ts +15 -0
  183. package/core/shared/components/action-bar-items/action-bar-base.component.d.ts +29 -0
  184. package/core/shared/components/action-bar-items/action-bar-items.component.d.ts +11 -0
  185. package/core/shared/components/address-form/address-form.component.d.ts +10 -0
  186. package/core/shared/components/affixed-input/affixed-input.component.d.ts +10 -0
  187. package/core/shared/components/affixed-input/percentage-suffix-input.component.d.ts +22 -0
  188. package/core/shared/components/asset-file-input/asset-file-input.component.d.ts +39 -0
  189. package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +97 -0
  190. package/core/shared/components/asset-gallery/asset-gallery.types.d.ts +3 -0
  191. package/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.d.ts +60 -0
  192. package/core/shared/components/asset-preview/asset-preview.component.d.ts +61 -0
  193. package/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.d.ts +22 -0
  194. package/core/shared/components/asset-preview-links/asset-preview-links.component.d.ts +8 -0
  195. package/core/shared/components/asset-search-input/asset-search-input.component.d.ts +26 -0
  196. package/core/shared/components/assets/assets.component.d.ts +36 -0
  197. package/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.d.ts +28 -0
  198. package/core/shared/components/bulk-action-menu/bulk-action-menu.component.d.ts +34 -0
  199. package/core/shared/components/card/card.component.d.ts +13 -0
  200. package/core/shared/components/channel-assignment-control/channel-assignment-control.component.d.ts +32 -0
  201. package/core/shared/components/channel-badge/channel-badge.component.d.ts +7 -0
  202. package/core/shared/components/chart/chart.component.d.ts +28 -0
  203. package/core/shared/components/chart/tooltip-plugin.d.ts +21 -0
  204. package/core/shared/components/chip/chip.component.d.ts +38 -0
  205. package/core/shared/components/configurable-input/configurable-input.component.d.ts +43 -0
  206. package/core/shared/components/currency-code-selector/currency-code-selector.component.d.ts +21 -0
  207. package/core/shared/components/currency-input/currency-input.component.d.ts +53 -0
  208. package/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.d.ts +20 -0
  209. package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +31 -0
  210. package/core/shared/components/customer-label/customer-label.component.d.ts +7 -0
  211. package/core/shared/components/data-table/data-table-column.component.d.ts +11 -0
  212. package/core/shared/components/data-table/data-table.component.d.ts +107 -0
  213. package/core/shared/components/data-table-2/data-table-column.component.d.ts +25 -0
  214. package/core/shared/components/data-table-2/data-table-custom-component.service.d.ts +52 -0
  215. package/core/shared/components/data-table-2/data-table-custom-field-column.component.d.ts +18 -0
  216. package/core/shared/components/data-table-2/data-table-search.component.d.ts +10 -0
  217. package/core/shared/components/data-table-2/data-table2.component.d.ts +134 -0
  218. package/core/shared/components/data-table-column-picker/data-table-column-picker.component.d.ts +19 -0
  219. package/core/shared/components/data-table-filter-label/data-table-filter-label.component.d.ts +11 -0
  220. package/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.d.ts +25 -0
  221. package/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.d.ts +30 -0
  222. package/core/shared/components/data-table-filter-presets/filter-preset.service.d.ts +34 -0
  223. package/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.d.ts +9 -0
  224. package/core/shared/components/data-table-filters/custom-filter-component.directive.d.ts +8 -0
  225. package/core/shared/components/data-table-filters/data-table-filters.component.d.ts +30 -0
  226. package/core/shared/components/datetime-picker/constants.d.ts +5 -0
  227. package/core/shared/components/datetime-picker/datetime-picker.component.d.ts +100 -0
  228. package/core/shared/components/datetime-picker/datetime-picker.service.d.ts +37 -0
  229. package/core/shared/components/datetime-picker/types.d.ts +11 -0
  230. package/core/shared/components/dropdown/dropdown-item.directive.d.ts +9 -0
  231. package/core/shared/components/dropdown/dropdown-menu.component.d.ts +42 -0
  232. package/core/shared/components/dropdown/dropdown-trigger.directive.d.ts +11 -0
  233. package/core/shared/components/dropdown/dropdown.component.d.ts +39 -0
  234. package/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.d.ts +33 -0
  235. package/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.graphql.d.ts +2 -0
  236. package/core/shared/components/edit-note-dialog/edit-note-dialog.component.d.ts +18 -0
  237. package/core/shared/components/empty-placeholder/empty-placeholder.component.d.ts +6 -0
  238. package/core/shared/components/entity-info/entity-info.component.d.ts +11 -0
  239. package/core/shared/components/extension-host/extension-host-config.d.ts +9 -0
  240. package/core/shared/components/extension-host/extension-host.component.d.ts +28 -0
  241. package/core/shared/components/extension-host/extension-host.service.d.ts +23 -0
  242. package/core/shared/components/extension-host/host-external-frame.d.ts +28 -0
  243. package/core/shared/components/facet-value-chip/facet-value-chip.component.d.ts +11 -0
  244. package/core/shared/components/facet-value-selector/facet-value-selector.component.d.ts +49 -0
  245. package/core/shared/components/focal-point-control/focal-point-control.component.d.ts +24 -0
  246. package/core/shared/components/form-field/form-field-control.directive.d.ts +15 -0
  247. package/core/shared/components/form-field/form-field.component.d.ts +32 -0
  248. package/core/shared/components/form-item/form-item.component.d.ts +11 -0
  249. package/core/shared/components/formatted-address/formatted-address.component.d.ts +13 -0
  250. package/core/shared/components/help-tooltip/help-tooltip.component.d.ts +7 -0
  251. package/core/shared/components/history-entry-detail/history-entry-detail.component.d.ts +5 -0
  252. package/core/shared/components/items-per-page-controls/items-per-page-controls.component.d.ts +11 -0
  253. package/core/shared/components/labeled-data/labeled-data.component.d.ts +6 -0
  254. package/core/shared/components/language-code-selector/language-code-selector.component.d.ts +20 -0
  255. package/core/shared/components/language-selector/language-selector.component.d.ts +11 -0
  256. package/core/shared/components/localized-text/localized-text.component.d.ts +13 -0
  257. package/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.d.ts +24 -0
  258. package/core/shared/components/modal-dialog/dialog-buttons.directive.d.ts +14 -0
  259. package/core/shared/components/modal-dialog/dialog-component-outlet.component.d.ts +14 -0
  260. package/core/shared/components/modal-dialog/dialog-title.directive.d.ts +14 -0
  261. package/core/shared/components/modal-dialog/modal-dialog.component.d.ts +44 -0
  262. package/core/shared/components/object-tree/object-tree.component.d.ts +32 -0
  263. package/core/shared/components/order-state-label/order-state-label.component.d.ts +17 -0
  264. package/core/shared/components/page/page.component.d.ts +21 -0
  265. package/core/shared/components/page-block/page-block.component.d.ts +5 -0
  266. package/core/shared/components/page-body/page-body.component.d.ts +5 -0
  267. package/core/shared/components/page-detail-layout/page-detail-layout.component.d.ts +5 -0
  268. package/core/shared/components/page-detail-layout/page-detail-sidebar.component.d.ts +5 -0
  269. package/core/shared/components/page-entity-info/page-entity-info.component.d.ts +10 -0
  270. package/core/shared/components/page-header/page-header.component.d.ts +5 -0
  271. package/core/shared/components/page-header-description/page-header-description.component.d.ts +5 -0
  272. package/core/shared/components/page-header-tabs/page-header-tabs.component.d.ts +14 -0
  273. package/core/shared/components/page-title/page-title.component.d.ts +16 -0
  274. package/core/shared/components/pagination-controls/pagination-controls.component.d.ts +11 -0
  275. package/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.d.ts +38 -0
  276. package/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.graphql.d.ts +1 -0
  277. package/core/shared/components/product-search-input/product-search-input.component.d.ts +28 -0
  278. package/core/shared/components/product-variant-selector/product-variant-selector.component.d.ts +58 -0
  279. package/core/shared/components/radio-card/radio-card-fieldset.component.d.ts +24 -0
  280. package/core/shared/components/radio-card/radio-card.component.d.ts +22 -0
  281. package/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.d.ts +21 -0
  282. package/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.d.ts +19 -0
  283. package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.d.ts +31 -0
  284. package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.d.ts +34 -0
  285. package/core/shared/components/rich-text-editor/prosemirror/custom-nodes.d.ts +5 -0
  286. package/core/shared/components/rich-text-editor/prosemirror/inputrules.d.ts +8 -0
  287. package/core/shared/components/rich-text-editor/prosemirror/keymap.d.ts +3 -0
  288. package/core/shared/components/rich-text-editor/prosemirror/menu/links.d.ts +4 -0
  289. package/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.d.ts +16 -0
  290. package/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.d.ts +9 -0
  291. package/core/shared/components/rich-text-editor/prosemirror/menu/menu.d.ts +3 -0
  292. package/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.d.ts +14 -0
  293. package/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.d.ts +7 -0
  294. package/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.d.ts +5 -0
  295. package/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.d.ts +7 -0
  296. package/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.d.ts +13 -0
  297. package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +34 -0
  298. package/core/shared/components/rich-text-editor/prosemirror/types.d.ts +9 -0
  299. package/core/shared/components/rich-text-editor/prosemirror/utils.d.ts +9 -0
  300. package/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.d.ts +21 -0
  301. package/core/shared/components/rich-text-editor/rich-text-editor.component.d.ts +42 -0
  302. package/core/shared/components/select-toggle/select-toggle.component.d.ts +15 -0
  303. package/core/shared/components/simple-dialog/simple-dialog.component.d.ts +14 -0
  304. package/core/shared/components/split-view/split-view.component.d.ts +23 -0
  305. package/core/shared/components/split-view/split-view.directive.d.ts +13 -0
  306. package/core/shared/components/status-badge/status-badge.component.d.ts +6 -0
  307. package/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.d.ts +25 -0
  308. package/core/shared/components/table-row-action/table-row-action.component.d.ts +12 -0
  309. package/core/shared/components/tag-selector/tag-selector.component.d.ts +24 -0
  310. package/core/shared/components/timeline-entry/timeline-entry.component.d.ts +19 -0
  311. package/core/shared/components/title-input/title-input.component.d.ts +6 -0
  312. package/core/shared/components/ui-extension-point/ui-extension-point.component.d.ts +27 -0
  313. package/core/shared/components/zone-selector/zone-selector.component.d.ts +51 -0
  314. package/core/shared/directives/disabled.directive.d.ts +14 -0
  315. package/core/shared/directives/if-default-channel-active.directive.d.ts +16 -0
  316. package/core/shared/directives/if-directive-base.d.ts +27 -0
  317. package/core/shared/directives/if-multichannel.directive.d.ts +28 -0
  318. package/core/shared/directives/if-permissions.directive.d.ts +37 -0
  319. package/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.d.ts +19 -0
  320. package/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.d.ts +30 -0
  321. package/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.d.ts +22 -0
  322. package/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +23 -0
  323. package/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.d.ts +28 -0
  324. package/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.d.ts +25 -0
  325. package/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.d.ts +33 -0
  326. package/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.d.ts +22 -0
  327. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +19 -0
  328. package/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.d.ts +58 -0
  329. package/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +23 -0
  330. package/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.d.ts +24 -0
  331. package/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.d.ts +19 -0
  332. package/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.d.ts +25 -0
  333. package/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.d.ts +34 -0
  334. package/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +23 -0
  335. package/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.d.ts +25 -0
  336. package/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.d.ts +18 -0
  337. package/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.d.ts +26 -0
  338. package/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.d.ts +26 -0
  339. package/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.d.ts +23 -0
  340. package/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.d.ts +22 -0
  341. package/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.d.ts +10 -0
  342. package/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.d.ts +19 -0
  343. package/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +30 -0
  344. package/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.d.ts +21 -0
  345. package/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.d.ts +20 -0
  346. package/core/shared/pipes/asset-preview.pipe.d.ts +22 -0
  347. package/core/shared/pipes/channel-label.pipe.d.ts +7 -0
  348. package/core/shared/pipes/custom-field-description.pipe.d.ts +11 -0
  349. package/core/shared/pipes/custom-field-label.pipe.d.ts +13 -0
  350. package/core/shared/pipes/duration.pipe.d.ts +22 -0
  351. package/core/shared/pipes/file-size.pipe.d.ts +18 -0
  352. package/core/shared/pipes/has-permission.pipe.d.ts +27 -0
  353. package/core/shared/pipes/locale-base.pipe.d.ts +21 -0
  354. package/core/shared/pipes/locale-currency-name.pipe.d.ts +21 -0
  355. package/core/shared/pipes/locale-currency.pipe.d.ts +25 -0
  356. package/core/shared/pipes/locale-date.pipe.d.ts +23 -0
  357. package/core/shared/pipes/locale-language-name.pipe.d.ts +21 -0
  358. package/core/shared/pipes/locale-region-name.pipe.d.ts +21 -0
  359. package/core/shared/pipes/sentence-case.pipe.d.ts +10 -0
  360. package/core/shared/pipes/sort.pipe.d.ts +12 -0
  361. package/core/shared/pipes/state-i18n-token.pipe.d.ts +9 -0
  362. package/core/shared/pipes/string-to-color.pipe.d.ts +7 -0
  363. package/core/shared/pipes/time-ago.pipe.d.ts +21 -0
  364. package/core/shared/providers/routing/can-deactivate-detail-guard.d.ts +11 -0
  365. package/core/shared/shared.module.d.ts +168 -0
  366. package/core/validators/unicode-pattern.validator.d.ts +2 -0
  367. package/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.d.ts +22 -0
  368. package/customer/components/address-card/address-card.component.d.ts +28 -0
  369. package/customer/components/address-detail-dialog/address-detail-dialog.component.d.ts +17 -0
  370. package/customer/components/customer-detail/customer-detail.component.d.ts +70 -0
  371. package/customer/components/customer-group-detail/customer-group-detail.component.d.ts +26 -0
  372. package/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.d.ts +24 -0
  373. package/customer/components/customer-group-list/customer-group-list-bulk-actions.d.ts +1 -0
  374. package/customer/components/customer-group-list/customer-group-list.component.d.ts +29 -0
  375. package/customer/components/customer-group-member-list/customer-group-member-list-bulk-actions.d.ts +3 -0
  376. package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +39 -0
  377. package/customer/components/customer-history/customer-history-entry-host.component.d.ts +18 -0
  378. package/customer/components/customer-history/customer-history.component.d.ts +51 -0
  379. package/customer/components/customer-list/customer-list-bulk-actions.d.ts +1 -0
  380. package/customer/components/customer-list/customer-list.component.d.ts +12 -0
  381. package/customer/components/customer-status-label/customer-status-label.component.d.ts +7 -0
  382. package/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.d.ts +16 -0
  383. package/customer/customer.module.d.ts +24 -0
  384. package/customer/customer.routes.d.ts +4 -0
  385. package/customer/index.d.ts +5 -0
  386. package/customer/public_api.d.ts +18 -0
  387. package/dashboard/components/dashboard/dashboard.component.d.ts +34 -0
  388. package/dashboard/components/dashboard-widget/dashboard-widget.component.d.ts +13 -0
  389. package/dashboard/dashboard.module.d.ts +13 -0
  390. package/dashboard/dashboard.routes.d.ts +2 -0
  391. package/dashboard/default-widgets.d.ts +5 -0
  392. package/dashboard/index.d.ts +5 -0
  393. package/dashboard/public_api.d.ts +10 -0
  394. package/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.d.ts +18 -0
  395. package/dashboard/widgets/order-chart-widget/order-chart-widget.component.d.ts +17 -0
  396. package/dashboard/widgets/order-summary-widget/order-summary-widget.component.d.ts +32 -0
  397. package/dashboard/widgets/test-widget/test-widget.component.d.ts +10 -0
  398. package/dashboard/widgets/welcome-widget/welcome-widget.component.d.ts +22 -0
  399. package/esm2022/catalog/catalog.module.mjs +331 -0
  400. package/esm2022/catalog/catalog.routes.mjs +144 -0
  401. package/esm2022/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +30 -0
  402. package/esm2022/catalog/components/asset-detail/asset-detail.component.mjs +77 -0
  403. package/esm2022/catalog/components/asset-list/asset-list.component.mjs +120 -0
  404. package/esm2022/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +102 -0
  405. package/esm2022/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +83 -0
  406. package/esm2022/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.mjs +69 -0
  407. package/esm2022/catalog/components/collection-contents/collection-contents.component.mjs +124 -0
  408. package/esm2022/catalog/components/collection-data-table/collection-data-table.component.mjs +95 -0
  409. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +263 -0
  410. package/esm2022/catalog/components/collection-list/collection-breadcrumb.pipe.mjs +19 -0
  411. package/esm2022/catalog/components/collection-list/collection-list-bulk-actions.mjs +97 -0
  412. package/esm2022/catalog/components/collection-list/collection-list.component.mjs +157 -0
  413. package/esm2022/catalog/components/collection-tree/array-to-tree.mjs +56 -0
  414. package/esm2022/catalog/components/collection-tree/collection-tree-node.component.mjs +125 -0
  415. package/esm2022/catalog/components/collection-tree/collection-tree.component.mjs +49 -0
  416. package/esm2022/catalog/components/collection-tree/collection-tree.service.mjs +68 -0
  417. package/esm2022/catalog/components/collection-tree/collection-tree.types.mjs +2 -0
  418. package/esm2022/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +23 -0
  419. package/esm2022/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.mjs +44 -0
  420. package/esm2022/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.mjs +44 -0
  421. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +80 -0
  422. package/esm2022/catalog/components/facet-detail/facet-detail.component.mjs +338 -0
  423. package/esm2022/catalog/components/facet-list/facet-list-bulk-actions.mjs +148 -0
  424. package/esm2022/catalog/components/facet-list/facet-list.component.mjs +91 -0
  425. package/esm2022/catalog/components/generate-product-variants/generate-product-variants.component.mjs +133 -0
  426. package/esm2022/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +100 -0
  427. package/esm2022/catalog/components/option-value-input/option-value-input.component.mjs +156 -0
  428. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +321 -0
  429. package/esm2022/catalog/components/product-list/product-list-bulk-actions.mjs +144 -0
  430. package/esm2022/catalog/components/product-list/product-list.component.mjs +159 -0
  431. package/esm2022/catalog/components/product-list/product-list.graphql.mjs +37 -0
  432. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +207 -0
  433. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +266 -0
  434. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.graphql.mjs +129 -0
  435. package/esm2022/catalog/components/product-variant-list/product-variant-list-bulk-actions.mjs +123 -0
  436. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +118 -0
  437. package/esm2022/catalog/components/product-variant-list/product-variant-list.graphql.mjs +51 -0
  438. package/esm2022/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +53 -0
  439. package/esm2022/catalog/components/product-variants-editor/product-variants-editor.component.mjs +292 -0
  440. package/esm2022/catalog/components/product-variants-table/product-variants-table.component.mjs +72 -0
  441. package/esm2022/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +64 -0
  442. package/esm2022/catalog/components/variant-price-detail/variant-price-detail.component.mjs +59 -0
  443. package/esm2022/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.mjs +33 -0
  444. package/esm2022/catalog/deenruv-admin-ui-catalog.mjs +5 -0
  445. package/esm2022/catalog/providers/product-detail/product-detail.service.mjs +236 -0
  446. package/esm2022/catalog/providers/product-detail/replace-last.mjs +18 -0
  447. package/esm2022/catalog/providers/routing/product-variants-resolver.mjs +28 -0
  448. package/esm2022/catalog/public_api.mjs +50 -0
  449. package/esm2022/core/app.component.mjs +94 -0
  450. package/esm2022/core/app.component.module.mjs +19 -0
  451. package/esm2022/core/app.config.mjs +11 -0
  452. package/esm2022/core/common/base-detail.component.mjs +208 -0
  453. package/esm2022/core/common/base-entity-resolver.mjs +60 -0
  454. package/esm2022/core/common/base-list.component.mjs +186 -0
  455. package/esm2022/core/common/component-registry-types.mjs +2 -0
  456. package/esm2022/core/common/deactivate-aware.mjs +2 -0
  457. package/esm2022/core/common/detail-breadcrumb.mjs +26 -0
  458. package/esm2022/core/common/generated-types.mjs +1371 -0
  459. package/esm2022/core/common/introspection-result-wrapper.mjs +3 -0
  460. package/esm2022/core/common/introspection-result.mjs +329 -0
  461. package/esm2022/core/common/single-search-selection-model.mjs +51 -0
  462. package/esm2022/core/common/title-setter.mjs +14 -0
  463. package/esm2022/core/common/utilities/bulk-action-utils.mjs +271 -0
  464. package/esm2022/core/common/utilities/configurable-operation-utils.mjs +116 -0
  465. package/esm2022/core/common/utilities/create-updated-translatable.mjs +58 -0
  466. package/esm2022/core/common/utilities/custom-field-default-value.mjs +28 -0
  467. package/esm2022/core/common/utilities/find-translation.mjs +9 -0
  468. package/esm2022/core/common/utilities/get-default-ui-language.mjs +12 -0
  469. package/esm2022/core/common/utilities/interpolate-description.mjs +27 -0
  470. package/esm2022/core/common/utilities/selection-manager.mjs +96 -0
  471. package/esm2022/core/common/utilities/string-to-color.mjs +36 -0
  472. package/esm2022/core/common/version.mjs +3 -0
  473. package/esm2022/core/components/alerts/alerts.component.mjs +26 -0
  474. package/esm2022/core/components/app-shell/app-shell.component.mjs +104 -0
  475. package/esm2022/core/components/base-nav/base-nav.component.mjs +298 -0
  476. package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +33 -0
  477. package/esm2022/core/components/channel-switcher/channel-switcher.component.mjs +50 -0
  478. package/esm2022/core/components/main-nav/main-nav.component.mjs +62 -0
  479. package/esm2022/core/components/notification/notification.component.mjs +85 -0
  480. package/esm2022/core/components/overlay-host/overlay-host.component.mjs +22 -0
  481. package/esm2022/core/components/settings-nav/settings-nav.component.mjs +27 -0
  482. package/esm2022/core/components/theme-switcher/theme-switcher.component.mjs +39 -0
  483. package/esm2022/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +75 -0
  484. package/esm2022/core/components/user-menu/user-menu.component.mjs +37 -0
  485. package/esm2022/core/core.module.mjs +165 -0
  486. package/esm2022/core/data/check-jobs-link.mjs +32 -0
  487. package/esm2022/core/data/client-state/client-defaults.mjs +33 -0
  488. package/esm2022/core/data/client-state/client-resolvers.mjs +136 -0
  489. package/esm2022/core/data/data.module.mjs +135 -0
  490. package/esm2022/core/data/definitions/administrator-definitions.mjs +135 -0
  491. package/esm2022/core/data/definitions/auth-definitions.mjs +40 -0
  492. package/esm2022/core/data/definitions/client-definitions.mjs +137 -0
  493. package/esm2022/core/data/definitions/collection-definitions.mjs +184 -0
  494. package/esm2022/core/data/definitions/customer-definitions.mjs +261 -0
  495. package/esm2022/core/data/definitions/facet-definitions.mjs +155 -0
  496. package/esm2022/core/data/definitions/order-definitions.mjs +594 -0
  497. package/esm2022/core/data/definitions/product-definitions.mjs +828 -0
  498. package/esm2022/core/data/definitions/promotion-definitions.mjs +76 -0
  499. package/esm2022/core/data/definitions/settings-definitions.mjs +735 -0
  500. package/esm2022/core/data/definitions/shared-definitions.mjs +33 -0
  501. package/esm2022/core/data/definitions/shipping-definitions.mjs +98 -0
  502. package/esm2022/core/data/omit-typename-link.mjs +20 -0
  503. package/esm2022/core/data/providers/administrator-data.service.mjs +53 -0
  504. package/esm2022/core/data/providers/auth-data.service.mjs +20 -0
  505. package/esm2022/core/data/providers/base-data.service.mjs +66 -0
  506. package/esm2022/core/data/providers/client-data.service.mjs +82 -0
  507. package/esm2022/core/data/providers/collection-data.service.mjs +84 -0
  508. package/esm2022/core/data/providers/customer-data.service.mjs +125 -0
  509. package/esm2022/core/data/providers/data.service.mjs +90 -0
  510. package/esm2022/core/data/providers/facet-data.service.mjs +63 -0
  511. package/esm2022/core/data/providers/fetch-adapter.mjs +34 -0
  512. package/esm2022/core/data/providers/interceptor.mjs +162 -0
  513. package/esm2022/core/data/providers/order-data.service.mjs +135 -0
  514. package/esm2022/core/data/providers/product-data.service.mjs +257 -0
  515. package/esm2022/core/data/providers/promotion-data.service.mjs +50 -0
  516. package/esm2022/core/data/providers/settings-data.service.mjs +246 -0
  517. package/esm2022/core/data/providers/shipping-method-data.service.mjs +58 -0
  518. package/esm2022/core/data/query-result.mjs +77 -0
  519. package/esm2022/core/data/server-config.mjs +78 -0
  520. package/esm2022/core/data/utils/add-custom-fields.mjs +84 -0
  521. package/esm2022/core/data/utils/get-server-location.mjs +17 -0
  522. package/esm2022/core/data/utils/is-entity-create-or-update-mutation.mjs +45 -0
  523. package/esm2022/core/data/utils/remove-readonly-custom-fields.mjs +30 -0
  524. package/esm2022/core/data/utils/transform-relation-custom-field-inputs.mjs +46 -0
  525. package/esm2022/core/deenruv-admin-ui-core.mjs +5 -0
  526. package/esm2022/core/extension/add-action-bar-dropdown-menu-item.mjs +35 -0
  527. package/esm2022/core/extension/add-action-bar-item.mjs +31 -0
  528. package/esm2022/core/extension/add-nav-menu-item.mjs +75 -0
  529. package/esm2022/core/extension/components/angular-route.component.mjs +67 -0
  530. package/esm2022/core/extension/components/route.component.mjs +80 -0
  531. package/esm2022/core/extension/providers/page-metadata.service.mjs +20 -0
  532. package/esm2022/core/extension/register-alert.mjs +22 -0
  533. package/esm2022/core/extension/register-bulk-action.mjs +59 -0
  534. package/esm2022/core/extension/register-custom-detail-component.mjs +65 -0
  535. package/esm2022/core/extension/register-dashboard-widget.mjs +36 -0
  536. package/esm2022/core/extension/register-data-table-component.mjs +51 -0
  537. package/esm2022/core/extension/register-form-input-component.mjs +61 -0
  538. package/esm2022/core/extension/register-history-entry-component.mjs +76 -0
  539. package/esm2022/core/extension/register-page-tab.mjs +36 -0
  540. package/esm2022/core/extension/register-route-component.mjs +95 -0
  541. package/esm2022/core/extension/types.mjs +2 -0
  542. package/esm2022/core/providers/alerts/alerts.service.mjs +114 -0
  543. package/esm2022/core/providers/auth/auth.service.mjs +124 -0
  544. package/esm2022/core/providers/breadcrumb/breadcrumb.service.mjs +109 -0
  545. package/esm2022/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +28 -0
  546. package/esm2022/core/providers/bulk-action-registry/bulk-action-types.mjs +2 -0
  547. package/esm2022/core/providers/channel/channel.service.mjs +39 -0
  548. package/esm2022/core/providers/component-registry/component-registry.service.mjs +25 -0
  549. package/esm2022/core/providers/currency/currency.service.mjs +21 -0
  550. package/esm2022/core/providers/custom-detail-component/custom-detail-component-types.mjs +2 -0
  551. package/esm2022/core/providers/custom-detail-component/custom-detail-component.service.mjs +27 -0
  552. package/esm2022/core/providers/custom-field-component/custom-field-component.service.mjs +38 -0
  553. package/esm2022/core/providers/custom-history-entry-component/history-entry-component-types.mjs +2 -0
  554. package/esm2022/core/providers/custom-history-entry-component/history-entry-component.service.mjs +22 -0
  555. package/esm2022/core/providers/dashboard-widget/dashboard-widget-types.mjs +2 -0
  556. package/esm2022/core/providers/dashboard-widget/dashboard-widget.service.mjs +91 -0
  557. package/esm2022/core/providers/data-table/data-table-filter-collection.mjs +295 -0
  558. package/esm2022/core/providers/data-table/data-table-filter.mjs +114 -0
  559. package/esm2022/core/providers/data-table/data-table-sort-collection.mjs +115 -0
  560. package/esm2022/core/providers/data-table/data-table-sort.mjs +34 -0
  561. package/esm2022/core/providers/guard/auth.guard.mjs +38 -0
  562. package/esm2022/core/providers/health-check/health-check.service.mjs +34 -0
  563. package/esm2022/core/providers/i18n/custom-http-loader.mjs +39 -0
  564. package/esm2022/core/providers/i18n/custom-message-format-compiler.mjs +31 -0
  565. package/esm2022/core/providers/i18n/i18n.service.mjs +78 -0
  566. package/esm2022/core/providers/job-queue/job-queue.service.mjs +91 -0
  567. package/esm2022/core/providers/local-storage/local-storage.service.mjs +97 -0
  568. package/esm2022/core/providers/localization/localization.service.mjs +31 -0
  569. package/esm2022/core/providers/modal/modal.service.mjs +96 -0
  570. package/esm2022/core/providers/modal/modal.types.mjs +2 -0
  571. package/esm2022/core/providers/nav-builder/nav-builder-types.mjs +2 -0
  572. package/esm2022/core/providers/nav-builder/nav-builder.service.mjs +174 -0
  573. package/esm2022/core/providers/notification/notification.service.mjs +157 -0
  574. package/esm2022/core/providers/overlay-host/overlay-host.service.mjs +48 -0
  575. package/esm2022/core/providers/page/page.service.mjs +63 -0
  576. package/esm2022/core/providers/permissions/permissions.service.mjs +46 -0
  577. package/esm2022/core/public_api.mjs +315 -0
  578. package/esm2022/core/shared/components/action-bar/action-bar.component.mjs +54 -0
  579. package/esm2022/core/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.mjs +69 -0
  580. package/esm2022/core/shared/components/action-bar-items/action-bar-base.component.mjs +72 -0
  581. package/esm2022/core/shared/components/action-bar-items/action-bar-items.component.mjs +50 -0
  582. package/esm2022/core/shared/components/address-form/address-form.component.mjs +24 -0
  583. package/esm2022/core/shared/components/affixed-input/affixed-input.component.mjs +19 -0
  584. package/esm2022/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +86 -0
  585. package/esm2022/core/shared/components/asset-file-input/asset-file-input.component.mjs +97 -0
  586. package/esm2022/core/shared/components/asset-gallery/asset-gallery.component.mjs +96 -0
  587. package/esm2022/core/shared/components/asset-gallery/asset-gallery.types.mjs +2 -0
  588. package/esm2022/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +144 -0
  589. package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +229 -0
  590. package/esm2022/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +49 -0
  591. package/esm2022/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +25 -0
  592. package/esm2022/core/shared/components/asset-search-input/asset-search-input.component.mjs +102 -0
  593. package/esm2022/core/shared/components/assets/assets.component.mjs +109 -0
  594. package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +56 -0
  595. package/esm2022/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +100 -0
  596. package/esm2022/core/shared/components/card/card.component.mjs +32 -0
  597. package/esm2022/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +116 -0
  598. package/esm2022/core/shared/components/channel-badge/channel-badge.component.mjs +19 -0
  599. package/esm2022/core/shared/components/chart/chart.component.mjs +100 -0
  600. package/esm2022/core/shared/components/chart/tooltip-plugin.mjs +143 -0
  601. package/esm2022/core/shared/components/chip/chip.component.mjs +47 -0
  602. package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +161 -0
  603. package/esm2022/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +64 -0
  604. package/esm2022/core/shared/components/currency-input/currency-input.component.mjs +155 -0
  605. package/esm2022/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +44 -0
  606. package/esm2022/core/shared/components/custom-field-control/custom-field-control.component.mjs +88 -0
  607. package/esm2022/core/shared/components/customer-label/customer-label.component.mjs +17 -0
  608. package/esm2022/core/shared/components/data-table/data-table-column.component.mjs +29 -0
  609. package/esm2022/core/shared/components/data-table/data-table.component.mjs +177 -0
  610. package/esm2022/core/shared/components/data-table-2/data-table-column.component.mjs +64 -0
  611. package/esm2022/core/shared/components/data-table-2/data-table-custom-component.service.mjs +26 -0
  612. package/esm2022/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +52 -0
  613. package/esm2022/core/shared/components/data-table-2/data-table-search.component.mjs +21 -0
  614. package/esm2022/core/shared/components/data-table-2/data-table2.component.mjs +308 -0
  615. package/esm2022/core/shared/components/data-table-column-picker/data-table-column-picker.component.mjs +44 -0
  616. package/esm2022/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +32 -0
  617. package/esm2022/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +69 -0
  618. package/esm2022/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +80 -0
  619. package/esm2022/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +79 -0
  620. package/esm2022/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +20 -0
  621. package/esm2022/core/shared/components/data-table-filters/custom-filter-component.directive.mjs +16 -0
  622. package/esm2022/core/shared/components/data-table-filters/data-table-filters.component.mjs +220 -0
  623. package/esm2022/core/shared/components/datetime-picker/constants.mjs +20 -0
  624. package/esm2022/core/shared/components/datetime-picker/datetime-picker.component.mjs +226 -0
  625. package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +201 -0
  626. package/esm2022/core/shared/components/datetime-picker/types.mjs +2 -0
  627. package/esm2022/core/shared/components/dropdown/dropdown-item.directive.mjs +28 -0
  628. package/esm2022/core/shared/components/dropdown/dropdown-menu.component.mjs +202 -0
  629. package/esm2022/core/shared/components/dropdown/dropdown-trigger.directive.mjs +25 -0
  630. package/esm2022/core/shared/components/dropdown/dropdown.component.mjs +58 -0
  631. package/esm2022/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.mjs +111 -0
  632. package/esm2022/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.graphql.mjs +38 -0
  633. package/esm2022/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +32 -0
  634. package/esm2022/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +16 -0
  635. package/esm2022/core/shared/components/entity-info/entity-info.component.mjs +26 -0
  636. package/esm2022/core/shared/components/extension-host/extension-host-config.mjs +7 -0
  637. package/esm2022/core/shared/components/extension-host/extension-host.component.mjs +81 -0
  638. package/esm2022/core/shared/components/extension-host/extension-host.service.mjs +99 -0
  639. package/esm2022/core/shared/components/extension-host/host-external-frame.mjs +41 -0
  640. package/esm2022/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +26 -0
  641. package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +150 -0
  642. package/esm2022/core/shared/components/focal-point-control/focal-point-control.component.mjs +71 -0
  643. package/esm2022/core/shared/components/form-field/form-field-control.directive.mjs +37 -0
  644. package/esm2022/core/shared/components/form-field/form-field.component.mjs +73 -0
  645. package/esm2022/core/shared/components/form-item/form-item.component.mjs +21 -0
  646. package/esm2022/core/shared/components/formatted-address/formatted-address.component.mjs +38 -0
  647. package/esm2022/core/shared/components/help-tooltip/help-tooltip.component.mjs +16 -0
  648. package/esm2022/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +16 -0
  649. package/esm2022/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +28 -0
  650. package/esm2022/core/shared/components/labeled-data/labeled-data.component.mjs +13 -0
  651. package/esm2022/core/shared/components/language-code-selector/language-code-selector.component.mjs +72 -0
  652. package/esm2022/core/shared/components/language-selector/language-selector.component.mjs +30 -0
  653. package/esm2022/core/shared/components/localized-text/localized-text.component.mjs +24 -0
  654. package/esm2022/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +61 -0
  655. package/esm2022/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +23 -0
  656. package/esm2022/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +29 -0
  657. package/esm2022/core/shared/components/modal-dialog/dialog-title.directive.mjs +23 -0
  658. package/esm2022/core/shared/components/modal-dialog/modal-dialog.component.mjs +69 -0
  659. package/esm2022/core/shared/components/object-tree/object-tree.component.mjs +56 -0
  660. package/esm2022/core/shared/components/order-state-label/order-state-label.component.mjs +47 -0
  661. package/esm2022/core/shared/components/page/page.component.mjs +38 -0
  662. package/esm2022/core/shared/components/page-block/page-block.component.mjs +11 -0
  663. package/esm2022/core/shared/components/page-body/page-body.component.mjs +11 -0
  664. package/esm2022/core/shared/components/page-detail-layout/page-detail-layout.component.mjs +11 -0
  665. package/esm2022/core/shared/components/page-detail-layout/page-detail-sidebar.component.mjs +15 -0
  666. package/esm2022/core/shared/components/page-entity-info/page-entity-info.component.mjs +16 -0
  667. package/esm2022/core/shared/components/page-header/page-header.component.mjs +11 -0
  668. package/esm2022/core/shared/components/page-header-description/page-header-description.component.mjs +11 -0
  669. package/esm2022/core/shared/components/page-header-tabs/page-header-tabs.component.mjs +26 -0
  670. package/esm2022/core/shared/components/page-title/page-title.component.mjs +40 -0
  671. package/esm2022/core/shared/components/pagination-controls/pagination-controls.component.mjs +26 -0
  672. package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +138 -0
  673. package/esm2022/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.graphql.mjs +44 -0
  674. package/esm2022/core/shared/components/product-search-input/product-search-input.component.mjs +104 -0
  675. package/esm2022/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +62 -0
  676. package/esm2022/core/shared/components/radio-card/radio-card-fieldset.component.mjs +54 -0
  677. package/esm2022/core/shared/components/radio-card/radio-card.component.mjs +53 -0
  678. package/esm2022/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +37 -0
  679. package/esm2022/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +35 -0
  680. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.mjs +136 -0
  681. package/esm2022/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.mjs +44 -0
  682. package/esm2022/core/shared/components/rich-text-editor/prosemirror/custom-nodes.mjs +97 -0
  683. package/esm2022/core/shared/components/rich-text-editor/prosemirror/inputrules.mjs +61 -0
  684. package/esm2022/core/shared/components/rich-text-editor/prosemirror/keymap.mjs +118 -0
  685. package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/links.mjs +69 -0
  686. package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.mjs +41 -0
  687. package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.mjs +12 -0
  688. package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/menu.mjs +247 -0
  689. package/esm2022/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.mjs +16 -0
  690. package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.mjs +98 -0
  691. package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.mjs +22 -0
  692. package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.mjs +96 -0
  693. package/esm2022/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.mjs +164 -0
  694. package/esm2022/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +155 -0
  695. package/esm2022/core/shared/components/rich-text-editor/prosemirror/types.mjs +2 -0
  696. package/esm2022/core/shared/components/rich-text-editor/prosemirror/utils.mjs +26 -0
  697. package/esm2022/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.mjs +59 -0
  698. package/esm2022/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +106 -0
  699. package/esm2022/core/shared/components/select-toggle/select-toggle.component.mjs +35 -0
  700. package/esm2022/core/shared/components/simple-dialog/simple-dialog.component.mjs +24 -0
  701. package/esm2022/core/shared/components/split-view/split-view.component.mjs +62 -0
  702. package/esm2022/core/shared/components/split-view/split-view.directive.mjs +28 -0
  703. package/esm2022/core/shared/components/status-badge/status-badge.component.mjs +16 -0
  704. package/esm2022/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +70 -0
  705. package/esm2022/core/shared/components/table-row-action/table-row-action.component.mjs +28 -0
  706. package/esm2022/core/shared/components/tag-selector/tag-selector.component.mjs +60 -0
  707. package/esm2022/core/shared/components/timeline-entry/timeline-entry.component.mjs +54 -0
  708. package/esm2022/core/shared/components/title-input/title-input.component.mjs +21 -0
  709. package/esm2022/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +142 -0
  710. package/esm2022/core/shared/components/zone-selector/zone-selector.component.mjs +99 -0
  711. package/esm2022/core/shared/directives/disabled.directive.mjs +41 -0
  712. package/esm2022/core/shared/directives/if-default-channel-active.directive.mjs +37 -0
  713. package/esm2022/core/shared/directives/if-directive-base.mjs +73 -0
  714. package/esm2022/core/shared/directives/if-multichannel.directive.mjs +43 -0
  715. package/esm2022/core/shared/directives/if-permissions.directive.mjs +66 -0
  716. package/esm2022/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +23 -0
  717. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.mjs +62 -0
  718. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +59 -0
  719. package/esm2022/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +85 -0
  720. package/esm2022/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +45 -0
  721. package/esm2022/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +32 -0
  722. package/esm2022/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +47 -0
  723. package/esm2022/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +32 -0
  724. package/esm2022/core/shared/dynamic-form-inputs/default-form-inputs.mjs +44 -0
  725. package/esm2022/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +271 -0
  726. package/esm2022/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +34 -0
  727. package/esm2022/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +39 -0
  728. package/esm2022/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +21 -0
  729. package/esm2022/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +49 -0
  730. package/esm2022/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +66 -0
  731. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +84 -0
  732. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +66 -0
  733. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +54 -0
  734. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +87 -0
  735. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +87 -0
  736. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +60 -0
  737. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +29 -0
  738. package/esm2022/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +14 -0
  739. package/esm2022/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +21 -0
  740. package/esm2022/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +40 -0
  741. package/esm2022/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +28 -0
  742. package/esm2022/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +24 -0
  743. package/esm2022/core/shared/pipes/asset-preview.pipe.mjs +42 -0
  744. package/esm2022/core/shared/pipes/channel-label.pipe.mjs +23 -0
  745. package/esm2022/core/shared/pipes/custom-field-description.pipe.mjs +30 -0
  746. package/esm2022/core/shared/pipes/custom-field-label.pipe.mjs +39 -0
  747. package/esm2022/core/shared/pipes/duration.pipe.mjs +49 -0
  748. package/esm2022/core/shared/pipes/file-size.pipe.mjs +47 -0
  749. package/esm2022/core/shared/pipes/has-permission.pipe.mjs +54 -0
  750. package/esm2022/core/shared/pipes/locale-base.pipe.mjs +55 -0
  751. package/esm2022/core/shared/pipes/locale-currency-name.pipe.mjs +60 -0
  752. package/esm2022/core/shared/pipes/locale-currency.pipe.mjs +56 -0
  753. package/esm2022/core/shared/pipes/locale-date.pipe.mjs +90 -0
  754. package/esm2022/core/shared/pipes/locale-language-name.pipe.mjs +51 -0
  755. package/esm2022/core/shared/pipes/locale-region-name.pipe.mjs +51 -0
  756. package/esm2022/core/shared/pipes/sentence-case.pipe.mjs +30 -0
  757. package/esm2022/core/shared/pipes/sort.pipe.mjs +34 -0
  758. package/esm2022/core/shared/pipes/state-i18n-token.pipe.mjs +54 -0
  759. package/esm2022/core/shared/pipes/string-to-color.pipe.mjs +18 -0
  760. package/esm2022/core/shared/pipes/time-ago.pipe.mjs +52 -0
  761. package/esm2022/core/shared/providers/routing/can-deactivate-detail-guard.mjs +33 -0
  762. package/esm2022/core/shared/shared.module.mjs +707 -0
  763. package/esm2022/core/validators/unicode-pattern.validator.mjs +8 -0
  764. package/esm2022/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +39 -0
  765. package/esm2022/customer/components/address-card/address-card.component.mjs +97 -0
  766. package/esm2022/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +28 -0
  767. package/esm2022/customer/components/customer-detail/customer-detail.component.mjs +441 -0
  768. package/esm2022/customer/components/customer-group-detail/customer-group-detail.component.mjs +90 -0
  769. package/esm2022/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +46 -0
  770. package/esm2022/customer/components/customer-group-list/customer-group-list-bulk-actions.mjs +9 -0
  771. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +148 -0
  772. package/esm2022/customer/components/customer-group-member-list/customer-group-member-list-bulk-actions.mjs +27 -0
  773. package/esm2022/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +91 -0
  774. package/esm2022/customer/components/customer-history/customer-history-entry-host.component.mjs +62 -0
  775. package/esm2022/customer/components/customer-history/customer-history.component.mjs +89 -0
  776. package/esm2022/customer/components/customer-list/customer-list-bulk-actions.mjs +9 -0
  777. package/esm2022/customer/components/customer-list/customer-list.component.mjs +108 -0
  778. package/esm2022/customer/components/customer-status-label/customer-status-label.component.mjs +17 -0
  779. package/esm2022/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +31 -0
  780. package/esm2022/customer/customer.module.mjs +146 -0
  781. package/esm2022/customer/customer.routes.mjs +50 -0
  782. package/esm2022/customer/deenruv-admin-ui-customer.mjs +5 -0
  783. package/esm2022/customer/public_api.mjs +20 -0
  784. package/esm2022/dashboard/components/dashboard/dashboard.component.mjs +124 -0
  785. package/esm2022/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +32 -0
  786. package/esm2022/dashboard/dashboard.module.mjs +34 -0
  787. package/esm2022/dashboard/dashboard.routes.mjs +9 -0
  788. package/esm2022/dashboard/deenruv-admin-ui-dashboard.mjs +5 -0
  789. package/esm2022/dashboard/default-widgets.mjs +31 -0
  790. package/esm2022/dashboard/public_api.mjs +12 -0
  791. package/esm2022/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +73 -0
  792. package/esm2022/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +66 -0
  793. package/esm2022/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +68 -0
  794. package/esm2022/dashboard/widgets/test-widget/test-widget.component.mjs +22 -0
  795. package/esm2022/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +39 -0
  796. package/esm2022/deenruv-admin-ui.mjs +5 -0
  797. package/esm2022/login/components/login/login.component.mjs +97 -0
  798. package/esm2022/login/deenruv-admin-ui-login.mjs +5 -0
  799. package/esm2022/login/login.module.mjs +21 -0
  800. package/esm2022/login/login.routes.mjs +11 -0
  801. package/esm2022/login/providers/login.guard.mjs +31 -0
  802. package/esm2022/login/public_api.mjs +6 -0
  803. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +269 -0
  804. package/esm2022/marketing/components/promotion-list/promotion-list-bulk-actions.mjs +78 -0
  805. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +128 -0
  806. package/esm2022/marketing/deenruv-admin-ui-marketing.mjs +5 -0
  807. package/esm2022/marketing/marketing.module.mjs +75 -0
  808. package/esm2022/marketing/marketing.routes.mjs +32 -0
  809. package/esm2022/marketing/public_api.mjs +7 -0
  810. package/esm2022/order/common/get-refundable-payments.mjs +19 -0
  811. package/esm2022/order/common/modify-order-types.mjs +2 -0
  812. package/esm2022/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +61 -0
  813. package/esm2022/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +80 -0
  814. package/esm2022/order/components/coupon-code-selector/coupon-code-selector.component.mjs +62 -0
  815. package/esm2022/order/components/draft-order-detail/draft-order-detail.component.mjs +183 -0
  816. package/esm2022/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +59 -0
  817. package/esm2022/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +79 -0
  818. package/esm2022/order/components/fulfillment-card/fulfillment-card.component.mjs +48 -0
  819. package/esm2022/order/components/fulfillment-detail/fulfillment-detail.component.mjs +50 -0
  820. package/esm2022/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +28 -0
  821. package/esm2022/order/components/line-fulfillment/line-fulfillment.component.mjs +62 -0
  822. package/esm2022/order/components/line-refunds/line-refunds.component.mjs +28 -0
  823. package/esm2022/order/components/modification-detail/modification-detail.component.mjs +71 -0
  824. package/esm2022/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +64 -0
  825. package/esm2022/order/components/order-data-table/order-data-table.component.mjs +59 -0
  826. package/esm2022/order/components/order-data-table/order-total-column.component.mjs +20 -0
  827. package/esm2022/order/components/order-detail/order-detail.component.mjs +602 -0
  828. package/esm2022/order/components/order-editor/order-editor.component.mjs +485 -0
  829. package/esm2022/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +93 -0
  830. package/esm2022/order/components/order-history/order-history-entry-host.component.mjs +62 -0
  831. package/esm2022/order/components/order-history/order-history.component.mjs +184 -0
  832. package/esm2022/order/components/order-list/order-list.component.mjs +154 -0
  833. package/esm2022/order/components/order-modification-summary/order-modification-summary.component.mjs +76 -0
  834. package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +43 -0
  835. package/esm2022/order/components/order-process-graph/constants.mjs +2 -0
  836. package/esm2022/order/components/order-process-graph/order-process-edge.component.mjs +45 -0
  837. package/esm2022/order/components/order-process-graph/order-process-graph.component.mjs +96 -0
  838. package/esm2022/order/components/order-process-graph/order-process-node.component.mjs +53 -0
  839. package/esm2022/order/components/order-process-graph/types.mjs +2 -0
  840. package/esm2022/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +21 -0
  841. package/esm2022/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +28 -0
  842. package/esm2022/order/components/order-table/order-table.component.mjs +96 -0
  843. package/esm2022/order/components/payment-detail/payment-detail.component.mjs +18 -0
  844. package/esm2022/order/components/payment-for-refund-selector/payment-for-refund-selector.component.mjs +24 -0
  845. package/esm2022/order/components/payment-state-label/payment-state-label.component.mjs +28 -0
  846. package/esm2022/order/components/refund-detail/refund-detail.component.mjs +18 -0
  847. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +173 -0
  848. package/esm2022/order/components/refund-state-label/refund-state-label.component.mjs +27 -0
  849. package/esm2022/order/components/select-address-dialog/select-address-dialog.component.mjs +89 -0
  850. package/esm2022/order/components/select-address-dialog/select-address-dialog.graphql.mjs +14 -0
  851. package/esm2022/order/components/select-customer-dialog/select-customer-dialog.component.mjs +65 -0
  852. package/esm2022/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.mjs +30 -0
  853. package/esm2022/order/components/seller-orders-card/seller-orders-card.component.mjs +39 -0
  854. package/esm2022/order/components/seller-orders-card/seller-orders-card.graphql.mjs +25 -0
  855. package/esm2022/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +24 -0
  856. package/esm2022/order/components/simple-item-list/simple-item-list.component.mjs +15 -0
  857. package/esm2022/order/deenruv-admin-ui-order.mjs +5 -0
  858. package/esm2022/order/order.module.mjs +244 -0
  859. package/esm2022/order/order.routes.mjs +56 -0
  860. package/esm2022/order/providers/order-transition.service.mjs +112 -0
  861. package/esm2022/order/providers/routing/order.guard.mjs +57 -0
  862. package/esm2022/order/public_api.mjs +53 -0
  863. package/esm2022/public_api.mjs +5 -0
  864. package/esm2022/react/components/react-custom-column.component.mjs +25 -0
  865. package/esm2022/react/components/react-custom-detail.component.mjs +23 -0
  866. package/esm2022/react/components/react-form-input.component.mjs +24 -0
  867. package/esm2022/react/components/react-route.component.mjs +26 -0
  868. package/esm2022/react/deenruv-admin-ui-react.mjs +5 -0
  869. package/esm2022/react/directives/react-component-host.directive.mjs +54 -0
  870. package/esm2022/react/public_api.mjs +27 -0
  871. package/esm2022/react/react-components/ActionBar.mjs +26 -0
  872. package/esm2022/react/react-components/Card.mjs +28 -0
  873. package/esm2022/react/react-components/CdsIcon.mjs +30 -0
  874. package/esm2022/react/react-components/FormField.mjs +28 -0
  875. package/esm2022/react/react-components/Link.mjs +30 -0
  876. package/esm2022/react/react-components/PageBlock.mjs +24 -0
  877. package/esm2022/react/react-components/PageDetailLayout.mjs +26 -0
  878. package/esm2022/react/react-components/RichTextEditor.mjs +73 -0
  879. package/esm2022/react/react-hooks/use-detail-component-data.mjs +48 -0
  880. package/esm2022/react/react-hooks/use-form-control.mjs +66 -0
  881. package/esm2022/react/react-hooks/use-injector.mjs +33 -0
  882. package/esm2022/react/react-hooks/use-page-metadata.mjs +41 -0
  883. package/esm2022/react/react-hooks/use-query.mjs +198 -0
  884. package/esm2022/react/react-hooks/use-rich-text-editor.mjs +50 -0
  885. package/esm2022/react/react-hooks/use-route-params.mjs +39 -0
  886. package/esm2022/react/register-react-custom-detail-component.mjs +33 -0
  887. package/esm2022/react/register-react-data-table-component.mjs +64 -0
  888. package/esm2022/react/register-react-form-input-component.mjs +27 -0
  889. package/esm2022/react/register-react-route-component.mjs +25 -0
  890. package/esm2022/react/types.mjs +2 -0
  891. package/esm2022/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +57 -0
  892. package/esm2022/settings/components/admin-detail/admin-detail.component.mjs +205 -0
  893. package/esm2022/settings/components/administrator-list/administrator-list-bulk-actions.mjs +9 -0
  894. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +120 -0
  895. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +202 -0
  896. package/esm2022/settings/components/channel-list/channel-list-bulk-actions.mjs +16 -0
  897. package/esm2022/settings/components/channel-list/channel-list.component.mjs +81 -0
  898. package/esm2022/settings/components/country-detail/country-detail.component.mjs +126 -0
  899. package/esm2022/settings/components/country-list/country-list-bulk-actions.mjs +10 -0
  900. package/esm2022/settings/components/country-list/country-list.component.mjs +91 -0
  901. package/esm2022/settings/components/global-settings/global-settings.component.mjs +102 -0
  902. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +206 -0
  903. package/esm2022/settings/components/payment-method-list/payment-method-list-bulk-actions.mjs +56 -0
  904. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +99 -0
  905. package/esm2022/settings/components/permission-grid/permission-grid.component.mjs +81 -0
  906. package/esm2022/settings/components/profile/profile.component.mjs +96 -0
  907. package/esm2022/settings/components/role-detail/role-detail.component.mjs +119 -0
  908. package/esm2022/settings/components/role-list/role-list-bulk-actions.mjs +9 -0
  909. package/esm2022/settings/components/role-list/role-list.component.mjs +82 -0
  910. package/esm2022/settings/components/seller-detail/seller-detail.component.mjs +119 -0
  911. package/esm2022/settings/components/seller-list/seller-list-bulk-actions.mjs +9 -0
  912. package/esm2022/settings/components/seller-list/seller-list.component.mjs +75 -0
  913. package/esm2022/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +30 -0
  914. package/esm2022/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +256 -0
  915. package/esm2022/settings/components/shipping-method-list/shipping-method-list-bulk-actions.mjs +54 -0
  916. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +99 -0
  917. package/esm2022/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +30 -0
  918. package/esm2022/settings/components/stock-location-detail/stock-location-detail.component.mjs +137 -0
  919. package/esm2022/settings/components/stock-location-list/stock-location-list-bulk-actions.mjs +68 -0
  920. package/esm2022/settings/components/stock-location-list/stock-location-list.component.mjs +87 -0
  921. package/esm2022/settings/components/tax-category-detail/tax-category-detail.component.mjs +114 -0
  922. package/esm2022/settings/components/tax-category-list/tax-category-list-bulk-actions.mjs +10 -0
  923. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +69 -0
  924. package/esm2022/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +137 -0
  925. package/esm2022/settings/components/tax-rate-list/tax-rate-list-bulk-actions.mjs +10 -0
  926. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +83 -0
  927. package/esm2022/settings/components/test-address-form/test-address-form.component.mjs +48 -0
  928. package/esm2022/settings/components/test-order-builder/test-order-builder.component.mjs +71 -0
  929. package/esm2022/settings/components/test-shipping-methods/test-shipping-methods.component.mjs +52 -0
  930. package/esm2022/settings/components/zone-detail/zone-detail.component.mjs +117 -0
  931. package/esm2022/settings/components/zone-list/zone-list-bulk-actions.mjs +10 -0
  932. package/esm2022/settings/components/zone-list/zone-list.component.mjs +143 -0
  933. package/esm2022/settings/components/zone-member-list/zone-member-controls.directive.mjs +16 -0
  934. package/esm2022/settings/components/zone-member-list/zone-member-list-bulk-actions.mjs +26 -0
  935. package/esm2022/settings/components/zone-member-list/zone-member-list-header.directive.mjs +16 -0
  936. package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +95 -0
  937. package/esm2022/settings/deenruv-admin-ui-settings.mjs +5 -0
  938. package/esm2022/settings/providers/routing/profile-resolver.mjs +30 -0
  939. package/esm2022/settings/public_api.mjs +51 -0
  940. package/esm2022/settings/settings.module.mjs +467 -0
  941. package/esm2022/settings/settings.routes.mjs +232 -0
  942. package/esm2022/system/components/health-check/health-check.component.mjs +18 -0
  943. package/esm2022/system/components/job-list/job-list.component.mjs +72 -0
  944. package/esm2022/system/components/job-state-label/job-state-label.component.mjs +46 -0
  945. package/esm2022/system/deenruv-admin-ui-system.mjs +5 -0
  946. package/esm2022/system/public_api.mjs +7 -0
  947. package/esm2022/system/system.module.mjs +22 -0
  948. package/esm2022/system/system.routes.mjs +20 -0
  949. package/fesm2022/deenruv-admin-ui-catalog.mjs +5171 -0
  950. package/fesm2022/deenruv-admin-ui-catalog.mjs.map +1 -0
  951. package/fesm2022/deenruv-admin-ui-core.mjs +22758 -0
  952. package/fesm2022/deenruv-admin-ui-core.mjs.map +1 -0
  953. package/fesm2022/deenruv-admin-ui-customer.mjs +1400 -0
  954. package/fesm2022/deenruv-admin-ui-customer.mjs.map +1 -0
  955. package/fesm2022/deenruv-admin-ui-dashboard.mjs +454 -0
  956. package/fesm2022/deenruv-admin-ui-dashboard.mjs.map +1 -0
  957. package/fesm2022/deenruv-admin-ui-login.mjs +157 -0
  958. package/fesm2022/deenruv-admin-ui-login.mjs.map +1 -0
  959. package/fesm2022/deenruv-admin-ui-marketing.mjs +566 -0
  960. package/fesm2022/deenruv-admin-ui-marketing.mjs.map +1 -0
  961. package/fesm2022/deenruv-admin-ui-order.mjs +3664 -0
  962. package/fesm2022/deenruv-admin-ui-order.mjs.map +1 -0
  963. package/fesm2022/deenruv-admin-ui-react.mjs +999 -0
  964. package/fesm2022/deenruv-admin-ui-react.mjs.map +1 -0
  965. package/fesm2022/deenruv-admin-ui-settings.mjs +4067 -0
  966. package/fesm2022/deenruv-admin-ui-settings.mjs.map +1 -0
  967. package/fesm2022/deenruv-admin-ui-system.mjs +164 -0
  968. package/fesm2022/deenruv-admin-ui-system.mjs.map +1 -0
  969. package/fesm2022/deenruv-admin-ui.mjs +11 -0
  970. package/fesm2022/deenruv-admin-ui.mjs.map +1 -0
  971. package/index.d.ts +5 -0
  972. package/login/components/login/login.component.d.ts +37 -0
  973. package/login/index.d.ts +5 -0
  974. package/login/login.module.d.ts +9 -0
  975. package/login/login.routes.d.ts +2 -0
  976. package/login/providers/login.guard.d.ts +15 -0
  977. package/login/public_api.d.ts +4 -0
  978. package/marketing/components/promotion-detail/promotion-detail.component.d.ts +70 -0
  979. package/marketing/components/promotion-list/promotion-list-bulk-actions.d.ts +6 -0
  980. package/marketing/components/promotion-list/promotion-list.component.d.ts +13 -0
  981. package/marketing/index.d.ts +5 -0
  982. package/marketing/marketing.module.d.ts +14 -0
  983. package/marketing/marketing.routes.d.ts +4 -0
  984. package/marketing/public_api.d.ts +5 -0
  985. package/order/common/get-refundable-payments.d.ts +9 -0
  986. package/order/common/modify-order-types.d.ts +29 -0
  987. package/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.d.ts +19 -0
  988. package/order/components/cancel-order-dialog/cancel-order-dialog.component.d.ts +24 -0
  989. package/order/components/coupon-code-selector/coupon-code-selector.component.d.ts +22 -0
  990. package/order/components/draft-order-detail/draft-order-detail.component.d.ts +51 -0
  991. package/order/components/draft-order-variant-selector/draft-order-variant-selector.component.d.ts +24 -0
  992. package/order/components/fulfill-order-dialog/fulfill-order-dialog.component.d.ts +28 -0
  993. package/order/components/fulfillment-card/fulfillment-card.component.d.ts +12 -0
  994. package/order/components/fulfillment-detail/fulfillment-detail.component.d.ts +23 -0
  995. package/order/components/fulfillment-state-label/fulfillment-state-label.component.d.ts +7 -0
  996. package/order/components/line-fulfillment/line-fulfillment.component.d.ts +26 -0
  997. package/order/components/line-refunds/line-refunds.component.d.ts +9 -0
  998. package/order/components/modification-detail/modification-detail.component.d.ts +34 -0
  999. package/order/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +21 -0
  1000. package/order/components/order-data-table/order-data-table.component.d.ts +15 -0
  1001. package/order/components/order-data-table/order-total-column.component.d.ts +7 -0
  1002. package/order/components/order-detail/order-detail.component.d.ts +68 -0
  1003. package/order/components/order-editor/order-editor.component.d.ts +99 -0
  1004. package/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.d.ts +51 -0
  1005. package/order/components/order-history/order-history-entry-host.component.d.ts +18 -0
  1006. package/order/components/order-history/order-history.component.d.ts +92 -0
  1007. package/order/components/order-list/order-list.component.d.ts +21 -0
  1008. package/order/components/order-modification-summary/order-modification-summary.component.d.ts +19 -0
  1009. package/order/components/order-payment-card/order-payment-card.component.d.ts +67 -0
  1010. package/order/components/order-process-graph/constants.d.ts +1 -0
  1011. package/order/components/order-process-graph/order-process-edge.component.d.ts +21 -0
  1012. package/order/components/order-process-graph/order-process-graph.component.d.ts +32 -0
  1013. package/order/components/order-process-graph/order-process-node.component.d.ts +26 -0
  1014. package/order/components/order-process-graph/types.d.ts +4 -0
  1015. package/order/components/order-process-graph-dialog/order-process-graph-dialog.component.d.ts +13 -0
  1016. package/order/components/order-state-select-dialog/order-state-select-dialog.component.d.ts +13 -0
  1017. package/order/components/order-table/order-table.component.d.ts +43 -0
  1018. package/order/components/payment-detail/payment-detail.component.d.ts +8 -0
  1019. package/order/components/payment-for-refund-selector/payment-for-refund-selector.component.d.ts +14 -0
  1020. package/order/components/payment-state-label/payment-state-label.component.d.ts +7 -0
  1021. package/order/components/refund-detail/refund-detail.component.d.ts +8 -0
  1022. package/order/components/refund-order-dialog/refund-order-dialog.component.d.ts +46 -0
  1023. package/order/components/refund-state-label/refund-state-label.component.d.ts +7 -0
  1024. package/order/components/select-address-dialog/select-address-dialog.component.d.ts +27 -0
  1025. package/order/components/select-address-dialog/select-address-dialog.graphql.d.ts +1 -0
  1026. package/order/components/select-customer-dialog/select-customer-dialog.component.d.ts +32 -0
  1027. package/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.d.ts +18 -0
  1028. package/order/components/seller-orders-card/seller-orders-card.component.d.ts +24 -0
  1029. package/order/components/seller-orders-card/seller-orders-card.graphql.d.ts +1 -0
  1030. package/order/components/settle-refund-dialog/settle-refund-dialog.component.d.ts +11 -0
  1031. package/order/components/simple-item-list/simple-item-list.component.d.ts +9 -0
  1032. package/order/index.d.ts +5 -0
  1033. package/order/order.module.d.ts +52 -0
  1034. package/order/order.routes.d.ts +3 -0
  1035. package/order/providers/order-transition.service.d.ts +32 -0
  1036. package/order/providers/routing/order.guard.d.ts +13 -0
  1037. package/order/public_api.d.ts +51 -0
  1038. package/package.json +133 -0
  1039. package/public_api.d.ts +4 -0
  1040. package/react/components/react-custom-column.component.d.ts +17 -0
  1041. package/react/components/react-custom-detail.component.d.ts +24 -0
  1042. package/react/components/react-form-input.component.d.ts +20 -0
  1043. package/react/components/react-route.component.d.ts +10 -0
  1044. package/react/directives/react-component-host.directive.d.ts +23 -0
  1045. package/react/index.d.ts +5 -0
  1046. package/react/public_api.d.ts +25 -0
  1047. package/react/react-components/ActionBar.d.ts +23 -0
  1048. package/react/react-components/Card.d.ts +24 -0
  1049. package/react/react-components/CdsIcon.d.ts +45 -0
  1050. package/react/react-components/FormField.d.ts +27 -0
  1051. package/react/react-components/Link.d.ts +22 -0
  1052. package/react/react-components/PageBlock.d.ts +21 -0
  1053. package/react/react-components/PageDetailLayout.d.ts +23 -0
  1054. package/react/react-components/RichTextEditor.d.ts +62 -0
  1055. package/react/react-hooks/use-detail-component-data.d.ts +32 -0
  1056. package/react/react-hooks/use-form-control.d.ts +29 -0
  1057. package/react/react-hooks/use-injector.d.ts +24 -0
  1058. package/react/react-hooks/use-page-metadata.d.ts +30 -0
  1059. package/react/react-hooks/use-query.d.ts +163 -0
  1060. package/react/react-hooks/use-rich-text-editor.d.ts +37 -0
  1061. package/react/react-hooks/use-route-params.d.ts +22 -0
  1062. package/react/register-react-custom-detail-component.d.ts +38 -0
  1063. package/react/register-react-data-table-component.d.ts +83 -0
  1064. package/react/register-react-form-input-component.d.ts +9 -0
  1065. package/react/register-react-route-component.d.ts +32 -0
  1066. package/react/types.d.ts +17 -0
  1067. package/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.d.ts +20 -0
  1068. package/settings/components/admin-detail/admin-detail.component.d.ts +64 -0
  1069. package/settings/components/administrator-list/administrator-list-bulk-actions.d.ts +1 -0
  1070. package/settings/components/administrator-list/administrator-list.component.d.ts +29 -0
  1071. package/settings/components/channel-detail/channel-detail.component.d.ts +46 -0
  1072. package/settings/components/channel-list/channel-list-bulk-actions.d.ts +1 -0
  1073. package/settings/components/channel-list/channel-list.component.d.ts +13 -0
  1074. package/settings/components/country-detail/country-detail.component.d.ts +29 -0
  1075. package/settings/components/country-list/country-list-bulk-actions.d.ts +1 -0
  1076. package/settings/components/country-list/country-list.component.d.ts +11 -0
  1077. package/settings/components/global-settings/global-settings.component.d.ts +29 -0
  1078. package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +64 -0
  1079. package/settings/components/payment-method-list/payment-method-list-bulk-actions.d.ts +3 -0
  1080. package/settings/components/payment-method-list/payment-method-list.component.d.ts +11 -0
  1081. package/settings/components/permission-grid/permission-grid.component.d.ts +28 -0
  1082. package/settings/components/profile/profile.component.d.ts +28 -0
  1083. package/settings/components/role-detail/role-detail.component.d.ts +31 -0
  1084. package/settings/components/role-list/role-list-bulk-actions.d.ts +1 -0
  1085. package/settings/components/role-list/role-list.component.d.ts +17 -0
  1086. package/settings/components/seller-detail/seller-detail.component.d.ts +31 -0
  1087. package/settings/components/seller-list/seller-list-bulk-actions.d.ts +1 -0
  1088. package/settings/components/seller-list/seller-list.component.d.ts +11 -0
  1089. package/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.d.ts +12 -0
  1090. package/settings/components/shipping-method-detail/shipping-method-detail.component.d.ts +76 -0
  1091. package/settings/components/shipping-method-list/shipping-method-list-bulk-actions.d.ts +3 -0
  1092. package/settings/components/shipping-method-list/shipping-method-list.component.d.ts +12 -0
  1093. package/settings/components/shipping-method-test-result/shipping-method-test-result.component.d.ts +12 -0
  1094. package/settings/components/stock-location-detail/stock-location-detail.component.d.ts +32 -0
  1095. package/settings/components/stock-location-list/stock-location-list-bulk-actions.d.ts +3 -0
  1096. package/settings/components/stock-location-list/stock-location-list.component.d.ts +12 -0
  1097. package/settings/components/tax-category-detail/tax-category-detail.component.d.ts +32 -0
  1098. package/settings/components/tax-category-list/tax-category-list-bulk-actions.d.ts +1 -0
  1099. package/settings/components/tax-category-list/tax-category-list.component.d.ts +11 -0
  1100. package/settings/components/tax-rate-detail/tax-rate-detail.component.d.ts +39 -0
  1101. package/settings/components/tax-rate-list/tax-rate-list-bulk-actions.d.ts +1 -0
  1102. package/settings/components/tax-rate-list/tax-rate-list.component.d.ts +11 -0
  1103. package/settings/components/test-address-form/test-address-form.component.d.ts +25 -0
  1104. package/settings/components/test-order-builder/test-order-builder.component.d.ts +31 -0
  1105. package/settings/components/test-shipping-methods/test-shipping-methods.component.d.ts +23 -0
  1106. package/settings/components/zone-detail/zone-detail.component.d.ts +31 -0
  1107. package/settings/components/zone-list/zone-list-bulk-actions.d.ts +1 -0
  1108. package/settings/components/zone-list/zone-list.component.d.ts +26 -0
  1109. package/settings/components/zone-member-list/zone-member-controls.directive.d.ts +8 -0
  1110. package/settings/components/zone-member-list/zone-member-list-bulk-actions.d.ts +3 -0
  1111. package/settings/components/zone-member-list/zone-member-list-header.directive.d.ts +8 -0
  1112. package/settings/components/zone-member-list/zone-member-list.component.d.ts +40 -0
  1113. package/settings/index.d.ts +5 -0
  1114. package/settings/providers/routing/profile-resolver.d.ts +8 -0
  1115. package/settings/public_api.d.ts +49 -0
  1116. package/settings/settings.module.d.ts +45 -0
  1117. package/settings/settings.routes.d.ts +3 -0
  1118. package/static/assets/.gitkeep +0 -0
  1119. package/static/assets/logo-login.webp +0 -0
  1120. package/static/assets/logo-top.webp +0 -0
  1121. package/static/deenruv-ui-config.json +290 -0
  1122. package/static/favicon.ico +0 -0
  1123. package/static/fonts/fonts.scss +253 -0
  1124. package/static/fonts/inter-cyrillic-ext.woff2 +0 -0
  1125. package/static/fonts/inter-cyrillic.woff2 +0 -0
  1126. package/static/fonts/inter-greek-ext.woff2 +0 -0
  1127. package/static/fonts/inter-greek.woff2 +0 -0
  1128. package/static/fonts/inter-latin-ext.woff2 +0 -0
  1129. package/static/fonts/inter-latin.woff2 +0 -0
  1130. package/static/fonts/inter-vietnamese.woff2 +0 -0
  1131. package/static/i18n-messages/ar.json +814 -0
  1132. package/static/i18n-messages/cs.json +814 -0
  1133. package/static/i18n-messages/de.json +814 -0
  1134. package/static/i18n-messages/en.json +814 -0
  1135. package/static/i18n-messages/es.json +814 -0
  1136. package/static/i18n-messages/fa.json +814 -0
  1137. package/static/i18n-messages/fr.json +814 -0
  1138. package/static/i18n-messages/he.json +814 -0
  1139. package/static/i18n-messages/hr.json +814 -0
  1140. package/static/i18n-messages/it.json +814 -0
  1141. package/static/i18n-messages/nb.json +812 -0
  1142. package/static/i18n-messages/ne.json +814 -0
  1143. package/static/i18n-messages/pl.json +814 -0
  1144. package/static/i18n-messages/pt_BR.json +814 -0
  1145. package/static/i18n-messages/pt_PT.json +814 -0
  1146. package/static/i18n-messages/ru.json +814 -0
  1147. package/static/i18n-messages/sv.json +807 -0
  1148. package/static/i18n-messages/uk.json +814 -0
  1149. package/static/i18n-messages/zh_Hans.json +814 -0
  1150. package/static/i18n-messages/zh_Hant.json +814 -0
  1151. package/static/index.html +14 -0
  1152. package/static/polyfills.ts +66 -0
  1153. package/static/styles/_mixins.scss +60 -0
  1154. package/static/styles/_variables.scss +11 -0
  1155. package/static/styles/component/prosemirror.scss +511 -0
  1156. package/static/styles/global/_buttons.scss +147 -0
  1157. package/static/styles/global/_clarity.scss +140 -0
  1158. package/static/styles/global/_forms.scss +187 -0
  1159. package/static/styles/global/_global.scss +41 -0
  1160. package/static/styles/global/_overrides.scss +165 -0
  1161. package/static/styles/global/_sass-overrides.scss +8 -0
  1162. package/static/styles/global/_utilities.scss +155 -0
  1163. package/static/styles/rtl.scss +143 -0
  1164. package/static/styles/styles.scss +19 -0
  1165. package/static/styles/theme/dark.scss +591 -0
  1166. package/static/styles/theme/default.scss +254 -0
  1167. package/static/styles/ui-extension-theme.scss +13 -0
  1168. package/static/theme.min.css +1 -0
  1169. package/system/components/health-check/health-check.component.d.ts +8 -0
  1170. package/system/components/job-list/job-list.component.d.ts +19 -0
  1171. package/system/components/job-state-label/job-state-label.component.d.ts +9 -0
  1172. package/system/index.d.ts +5 -0
  1173. package/system/public_api.d.ts +5 -0
  1174. package/system/system.module.d.ts +11 -0
  1175. package/system/system.routes.d.ts +2 -0
@@ -0,0 +1,485 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FormControl, FormGroup, UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators, } from '@angular/forms';
3
+ import { HistoryEntryType, SortOrder, transformRelationCustomFieldInputs, TypedBaseDetailComponent, } from '@deenruv/admin-ui/core';
4
+ import { assertNever, notNullOrUndefined } from '@deenruv/common/lib/shared-utils';
5
+ import { simpleDeepClone } from '@deenruv/common/lib/simple-deep-clone';
6
+ import { EMPTY, of } from 'rxjs';
7
+ import { map, mapTo, shareReplay, switchMap, take, takeUntil } from 'rxjs/operators';
8
+ import { OrderEditResultType, OrderEditsPreviewDialogComponent, } from '../order-edits-preview-dialog/order-edits-preview-dialog.component';
9
+ import { SelectShippingMethodDialogComponent } from '../select-shipping-method-dialog/select-shipping-method-dialog.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@deenruv/admin-ui/core";
12
+ import * as i2 from "../../providers/order-transition.service";
13
+ import * as i3 from "@clr/angular";
14
+ import * as i4 from "@angular/common";
15
+ import * as i5 from "@angular/forms";
16
+ import * as i6 from "../line-fulfillment/line-fulfillment.component";
17
+ import * as i7 from "../line-refunds/line-refunds.component";
18
+ import * as i8 from "../coupon-code-selector/coupon-code-selector.component";
19
+ import * as i9 from "../order-modification-summary/order-modification-summary.component";
20
+ import * as i10 from "@ngx-translate/core";
21
+ export class OrderEditorComponent extends TypedBaseDetailComponent {
22
+ constructor(dataService, notificationService, modalService, orderTransitionService, changeDetectorRef) {
23
+ super();
24
+ this.dataService = dataService;
25
+ this.notificationService = notificationService;
26
+ this.modalService = modalService;
27
+ this.orderTransitionService = orderTransitionService;
28
+ this.changeDetectorRef = changeDetectorRef;
29
+ this.detailForm = new UntypedFormGroup({});
30
+ this.couponCodesControl = new FormControl([]);
31
+ this.modifyOrderInput = {
32
+ dryRun: true,
33
+ orderId: '',
34
+ addItems: [],
35
+ adjustOrderLines: [],
36
+ surcharges: [],
37
+ note: '',
38
+ refunds: [],
39
+ updateShippingAddress: {},
40
+ updateBillingAddress: {},
41
+ };
42
+ this.surchargeForm = new FormGroup({
43
+ description: new FormControl('', Validators.minLength(1)),
44
+ sku: new FormControl(''),
45
+ price: new FormControl(0),
46
+ priceIncludesTax: new FormControl(true),
47
+ taxRate: new FormControl(0),
48
+ taxDescription: new FormControl(''),
49
+ });
50
+ this.shippingAddressForm = new FormGroup({
51
+ fullName: new FormControl(''),
52
+ company: new FormControl(''),
53
+ streetLine1: new FormControl(''),
54
+ streetLine2: new FormControl(''),
55
+ city: new FormControl(''),
56
+ province: new FormControl(''),
57
+ postalCode: new FormControl(''),
58
+ countryCode: new FormControl(''),
59
+ phoneNumber: new FormControl(''),
60
+ });
61
+ this.billingAddressForm = new FormGroup({
62
+ fullName: new FormControl(''),
63
+ company: new FormControl(''),
64
+ streetLine1: new FormControl(''),
65
+ streetLine2: new FormControl(''),
66
+ city: new FormControl(''),
67
+ province: new FormControl(''),
68
+ postalCode: new FormControl(''),
69
+ countryCode: new FormControl(''),
70
+ phoneNumber: new FormControl(''),
71
+ });
72
+ this.note = '';
73
+ this.recalculateShipping = true;
74
+ this.editingShippingAddress = false;
75
+ this.editingBillingAddress = false;
76
+ this.updatedShippingMethods = {};
77
+ this.addedVariants = new Map();
78
+ }
79
+ ngOnInit() {
80
+ this.init();
81
+ this.addressCustomFields = this.getCustomFieldConfig('Address');
82
+ this.modifyOrderInput.orderId = this.route.snapshot.paramMap.get('id');
83
+ this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');
84
+ this.entity$.pipe(take(1)).subscribe(order => {
85
+ this.orderSnapshot = this.createOrderSnapshot(order);
86
+ if (order.couponCodes.length) {
87
+ this.couponCodesControl.setValue(order.couponCodes);
88
+ }
89
+ this.surchargeForm.reset();
90
+ for (const [name, control] of Object.entries(this.shippingAddressForm.controls)) {
91
+ control.setValue(order.shippingAddress?.[name]);
92
+ }
93
+ this.addAddressCustomFieldsFormGroup(this.shippingAddressForm, order.shippingAddress);
94
+ for (const [name, control] of Object.entries(this.billingAddressForm.controls)) {
95
+ control.setValue(order.billingAddress?.[name]);
96
+ }
97
+ this.addAddressCustomFieldsFormGroup(this.billingAddressForm, order.billingAddress);
98
+ this.orderLineCustomFieldsFormArray = new UntypedFormArray([]);
99
+ for (const line of order.lines) {
100
+ const formGroup = new UntypedFormGroup({});
101
+ for (const { name } of this.orderLineCustomFields) {
102
+ formGroup.addControl(name, new UntypedFormControl(line.customFields[name]));
103
+ }
104
+ formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {
105
+ let modifyRow = this.modifyOrderInput.adjustOrderLines.find(l => l.orderLineId === line.id);
106
+ if (!modifyRow) {
107
+ modifyRow = {
108
+ orderLineId: line.id,
109
+ quantity: line.quantity,
110
+ };
111
+ this.modifyOrderInput.adjustOrderLines.push(modifyRow);
112
+ }
113
+ if (this.orderLineCustomFields.length) {
114
+ modifyRow.customFields = value;
115
+ }
116
+ });
117
+ this.orderLineCustomFieldsFormArray.push(formGroup);
118
+ }
119
+ });
120
+ this.addItemCustomFieldsFormArray = new UntypedFormArray([]);
121
+ this.addItemCustomFieldsForm = new UntypedFormGroup({});
122
+ for (const customField of this.orderLineCustomFields) {
123
+ this.addItemCustomFieldsForm.addControl(customField.name, new UntypedFormControl());
124
+ }
125
+ this.availableCountries$ = this.dataService.settings
126
+ .getAvailableCountries()
127
+ .mapSingle(result => result.countries.items)
128
+ .pipe(shareReplay(1));
129
+ this.dataService.order
130
+ .getOrderHistory(this.id, {
131
+ take: 1,
132
+ sort: {
133
+ createdAt: SortOrder.DESC,
134
+ },
135
+ filter: { type: { eq: HistoryEntryType.ORDER_STATE_TRANSITION } },
136
+ })
137
+ .single$.subscribe(({ order }) => {
138
+ this.previousState = order?.history.items[0].data.from;
139
+ });
140
+ this.uiLanguage$ = this.dataService.client
141
+ .uiState()
142
+ .stream$.pipe(map(({ uiState }) => uiState.language));
143
+ }
144
+ ngOnDestroy() {
145
+ this.destroy();
146
+ }
147
+ get addedLines() {
148
+ const getSinglePriceValue = (price) => price.__typename === 'SinglePrice' ? price.value : 0;
149
+ return (this.modifyOrderInput.addItems || [])
150
+ .map(row => {
151
+ const variantInfo = this.addedVariants.get(row.productVariantId);
152
+ if (variantInfo) {
153
+ return {
154
+ id: this.getIdForAddedItem(row),
155
+ featuredAsset: variantInfo.productAsset,
156
+ productVariant: {
157
+ id: variantInfo.productVariantId,
158
+ name: variantInfo.productVariantName,
159
+ sku: variantInfo.sku,
160
+ },
161
+ unitPrice: getSinglePriceValue(variantInfo.price),
162
+ unitPriceWithTax: getSinglePriceValue(variantInfo.priceWithTax),
163
+ quantity: row.quantity,
164
+ };
165
+ }
166
+ })
167
+ .filter(notNullOrUndefined);
168
+ }
169
+ getIdForAddedItem(row) {
170
+ return `added-${row.productVariantId}-${JSON.stringify(row.customFields || {})}`;
171
+ }
172
+ transitionToPriorState(order) {
173
+ this.orderTransitionService
174
+ .transitionToPreModifyingState(order.id, order.nextStates)
175
+ .subscribe(result => {
176
+ this.router.navigate(['..'], { relativeTo: this.route });
177
+ });
178
+ }
179
+ hasModifications() {
180
+ const { addItems, adjustOrderLines, surcharges } = this.modifyOrderInput;
181
+ return (!!addItems?.length ||
182
+ !!surcharges?.length ||
183
+ !!adjustOrderLines?.length ||
184
+ (this.shippingAddressForm.dirty && this.shippingAddressForm.valid) ||
185
+ (this.billingAddressForm.dirty && this.billingAddressForm.valid) ||
186
+ this.couponCodesControl.dirty ||
187
+ Object.entries(this.updatedShippingMethods).length > 0);
188
+ }
189
+ isLineModified(line) {
190
+ return !!this.modifyOrderInput.adjustOrderLines?.find(l => l.orderLineId === line.id && l.quantity !== line.quantity);
191
+ }
192
+ getInitialLineQuantity(lineId) {
193
+ const adjustedLine = this.modifyOrderInput.adjustOrderLines?.find(l => l.orderLineId === lineId);
194
+ if (adjustedLine) {
195
+ return adjustedLine.quantity;
196
+ }
197
+ const addedLine = this.modifyOrderInput.addItems?.find(l => this.getIdForAddedItem(l) === lineId);
198
+ if (addedLine) {
199
+ return addedLine.quantity ?? 1;
200
+ }
201
+ const line = this.orderSnapshot.lines.find(l => l.id === lineId);
202
+ return line ? line.quantity : 1;
203
+ }
204
+ updateLineQuantity(line, quantity) {
205
+ const { adjustOrderLines } = this.modifyOrderInput;
206
+ if (this.isAddedLine(line)) {
207
+ const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === line.productVariant.id);
208
+ if (row) {
209
+ row.quantity = +quantity;
210
+ }
211
+ }
212
+ else {
213
+ let row = adjustOrderLines?.find(l => l.orderLineId === line.id);
214
+ if (row && +quantity === line.quantity) {
215
+ // Remove the modification if the quantity is the same as
216
+ // the original order
217
+ adjustOrderLines?.splice(adjustOrderLines?.indexOf(row), 1);
218
+ }
219
+ if (!row) {
220
+ row = { orderLineId: line.id, quantity: +quantity };
221
+ adjustOrderLines?.push(row);
222
+ }
223
+ row.quantity = +quantity;
224
+ }
225
+ }
226
+ isAddedLine(line) {
227
+ return line.id.startsWith('added-');
228
+ }
229
+ updateAddedItemQuantity(item, quantity) {
230
+ const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === item.productVariant.id);
231
+ if (row) {
232
+ row.quantity = +quantity;
233
+ }
234
+ }
235
+ trackByProductVariantId(index, item) {
236
+ return item.productVariant.id;
237
+ }
238
+ getSelectedItemPrice(result) {
239
+ switch (result?.priceWithTax.__typename) {
240
+ case 'SinglePrice':
241
+ return result.priceWithTax.value;
242
+ default:
243
+ return 0;
244
+ }
245
+ }
246
+ addItemToOrder(result) {
247
+ if (!result) {
248
+ return;
249
+ }
250
+ const customFields = this.orderLineCustomFields.length
251
+ ? this.addItemCustomFieldsForm.value
252
+ : undefined;
253
+ let row = this.modifyOrderInput.addItems?.find(l => this.isMatchingAddItemRow(l, result, customFields));
254
+ if (!row) {
255
+ row = { productVariantId: result.productVariantId, quantity: 1 };
256
+ if (customFields) {
257
+ row.customFields = customFields;
258
+ }
259
+ this.modifyOrderInput.addItems?.push(row);
260
+ }
261
+ else {
262
+ row.quantity++;
263
+ }
264
+ if (customFields) {
265
+ const formGroup = new UntypedFormGroup({});
266
+ for (const [key, value] of Object.entries(customFields)) {
267
+ formGroup.addControl(key, new UntypedFormControl(value));
268
+ }
269
+ this.addItemCustomFieldsFormArray.push(formGroup);
270
+ formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {
271
+ if (row) {
272
+ row.customFields = value;
273
+ }
274
+ });
275
+ }
276
+ this.addItemCustomFieldsForm.reset({});
277
+ this.addItemSelectedVariant = undefined;
278
+ this.addedVariants.set(result.productVariantId, result);
279
+ }
280
+ getShippingLineDetails(shippingLine) {
281
+ const updatedMethod = this.updatedShippingMethods[shippingLine.id];
282
+ if (updatedMethod) {
283
+ return {
284
+ name: updatedMethod.name || updatedMethod.code,
285
+ price: updatedMethod.priceWithTax,
286
+ };
287
+ }
288
+ else {
289
+ return {
290
+ name: shippingLine.shippingMethod.name || shippingLine.shippingMethod.code,
291
+ price: shippingLine.discountedPriceWithTax,
292
+ };
293
+ }
294
+ }
295
+ setShippingMethod(shippingLineId) {
296
+ const currentShippingMethod = this.updatedShippingMethods[shippingLineId] ??
297
+ this.entity?.shippingLines.find(l => l.id === shippingLineId)?.shippingMethod;
298
+ if (!currentShippingMethod) {
299
+ return;
300
+ }
301
+ this.dataService.order
302
+ .getDraftOrderEligibleShippingMethods(this.id)
303
+ .mapSingle(({ eligibleShippingMethodsForDraftOrder }) => eligibleShippingMethodsForDraftOrder)
304
+ .pipe(switchMap(methods => this.modalService
305
+ .fromComponent(SelectShippingMethodDialogComponent, {
306
+ locals: {
307
+ eligibleShippingMethods: methods,
308
+ currencyCode: this.entity?.currencyCode,
309
+ currentSelectionId: currentShippingMethod.id,
310
+ },
311
+ })
312
+ .pipe(map(result => {
313
+ if (result) {
314
+ return methods.find(method => method.id === result);
315
+ }
316
+ }))))
317
+ .subscribe(result => {
318
+ if (result) {
319
+ this.updatedShippingMethods[shippingLineId] = result;
320
+ this.changeDetectorRef.markForCheck();
321
+ }
322
+ });
323
+ }
324
+ isMatchingAddItemRow(row, result, customFields) {
325
+ return (row.productVariantId === result.productVariantId &&
326
+ JSON.stringify(row.customFields) === JSON.stringify(customFields));
327
+ }
328
+ removeAddedItem(id) {
329
+ this.modifyOrderInput.addItems = this.modifyOrderInput.addItems?.filter(l => {
330
+ const itemId = this.getIdForAddedItem(l);
331
+ return itemId !== id;
332
+ });
333
+ }
334
+ getSurchargePrices(surcharge) {
335
+ const priceWithTax = surcharge.priceIncludesTax
336
+ ? surcharge.price
337
+ : Math.round(surcharge.price * ((100 + (surcharge.taxRate || 0)) / 100));
338
+ const price = surcharge.priceIncludesTax
339
+ ? Math.round(surcharge.price / ((100 + (surcharge.taxRate || 0)) / 100))
340
+ : surcharge.price;
341
+ return {
342
+ price,
343
+ priceWithTax,
344
+ };
345
+ }
346
+ addSurcharge(value) {
347
+ this.modifyOrderInput.surcharges?.push(value);
348
+ this.surchargeForm.reset({
349
+ price: 0,
350
+ priceIncludesTax: true,
351
+ taxRate: 0,
352
+ });
353
+ }
354
+ removeSurcharge(index) {
355
+ this.modifyOrderInput.surcharges?.splice(index, 1);
356
+ }
357
+ previewAndModify(order) {
358
+ const modifyOrderInput = {
359
+ ...this.modifyOrderInput,
360
+ adjustOrderLines: this.modifyOrderInput.adjustOrderLines.map(line => transformRelationCustomFieldInputs(simpleDeepClone(line), this.orderLineCustomFields)),
361
+ };
362
+ const input = {
363
+ ...modifyOrderInput,
364
+ ...(this.billingAddressForm.dirty ? { updateBillingAddress: this.billingAddressForm.value } : {}),
365
+ ...(this.shippingAddressForm.dirty
366
+ ? { updateShippingAddress: this.shippingAddressForm.value }
367
+ : {}),
368
+ dryRun: true,
369
+ couponCodes: this.couponCodesControl.dirty ? this.couponCodesControl.value : undefined,
370
+ note: this.note ?? '',
371
+ options: {
372
+ recalculateShipping: this.recalculateShipping,
373
+ },
374
+ };
375
+ if (Object.entries(this.updatedShippingMethods).length) {
376
+ input.shippingMethodIds = order.shippingLines.map(l => this.updatedShippingMethods[l.id]
377
+ ? this.updatedShippingMethods[l.id].id
378
+ : l.shippingMethod.id);
379
+ }
380
+ this.dataService.order
381
+ .modifyOrder(input)
382
+ .pipe(switchMap(({ modifyOrder }) => {
383
+ switch (modifyOrder.__typename) {
384
+ case 'Order':
385
+ return this.modalService.fromComponent(OrderEditsPreviewDialogComponent, {
386
+ size: 'xl',
387
+ closable: false,
388
+ locals: {
389
+ order: modifyOrder,
390
+ orderSnapshot: this.orderSnapshot,
391
+ orderLineCustomFields: this.orderLineCustomFields,
392
+ modifyOrderInput: input,
393
+ addedLines: this.addedLines,
394
+ shippingAddressForm: this.shippingAddressForm,
395
+ billingAddressForm: this.billingAddressForm,
396
+ couponCodesControl: this.couponCodesControl,
397
+ updatedShippingMethods: this.updatedShippingMethods,
398
+ },
399
+ });
400
+ case 'InsufficientStockError':
401
+ case 'NegativeQuantityError':
402
+ case 'NoChangesSpecifiedError':
403
+ case 'OrderLimitError':
404
+ case 'OrderModificationStateError':
405
+ case 'PaymentMethodMissingError':
406
+ case 'RefundPaymentIdMissingError':
407
+ case 'CouponCodeLimitError':
408
+ case 'CouponCodeExpiredError':
409
+ case 'IneligibleShippingMethodError':
410
+ case 'CouponCodeInvalidError': {
411
+ this.notificationService.error(modifyOrder.message);
412
+ return of(false);
413
+ }
414
+ case null:
415
+ case undefined:
416
+ return of(false);
417
+ default:
418
+ assertNever(modifyOrder);
419
+ }
420
+ }), switchMap(result => {
421
+ if (!result || result.result === OrderEditResultType.Cancel) {
422
+ // re-fetch so that the preview values get overwritten in the cache.
423
+ return this.dataService.order.getOrder(this.id).mapSingle(() => false);
424
+ }
425
+ else {
426
+ // Do the modification
427
+ const wetRunInput = {
428
+ ...input,
429
+ dryRun: false,
430
+ };
431
+ if (result.result === OrderEditResultType.Refund) {
432
+ wetRunInput.refunds = result.refunds;
433
+ }
434
+ return this.dataService.order.modifyOrder(wetRunInput).pipe(switchMap(({ modifyOrder }) => {
435
+ if (modifyOrder.__typename === 'Order') {
436
+ const priceDelta = modifyOrder.totalWithTax - this.orderSnapshot.totalWithTax;
437
+ const nextState = 0 < priceDelta ? 'ArrangingAdditionalPayment' : this.previousState;
438
+ return this.dataService.order
439
+ .transitionToState(order.id, nextState)
440
+ .pipe(mapTo(true));
441
+ }
442
+ else {
443
+ this.notificationService.error(modifyOrder.message);
444
+ return EMPTY;
445
+ }
446
+ }));
447
+ }
448
+ }))
449
+ .subscribe(result => {
450
+ if (result) {
451
+ this.router.navigate(['../'], { relativeTo: this.route });
452
+ }
453
+ });
454
+ }
455
+ addAddressCustomFieldsFormGroup(parentFormGroup, address) {
456
+ if (address && this.addressCustomFields.length) {
457
+ const addressCustomFieldsFormGroup = new UntypedFormGroup({});
458
+ for (const customFieldDef of this.addressCustomFields) {
459
+ const name = customFieldDef.name;
460
+ const value = address.customFields?.[name];
461
+ addressCustomFieldsFormGroup.addControl(name, new UntypedFormControl(value));
462
+ }
463
+ parentFormGroup.addControl('customFields', addressCustomFieldsFormGroup);
464
+ }
465
+ }
466
+ createOrderSnapshot(order) {
467
+ return {
468
+ totalWithTax: order.totalWithTax,
469
+ currencyCode: order.currencyCode,
470
+ couponCodes: order.couponCodes,
471
+ lines: [...order.lines].map(line => ({ ...line })),
472
+ shippingLines: [...order.shippingLines].map(line => ({ ...line })),
473
+ };
474
+ }
475
+ setFormValues(entity, languageCode) {
476
+ /* not used */
477
+ }
478
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderEditorComponent, deps: [{ token: i1.DataService }, { token: i1.NotificationService }, { token: i1.ModalService }, { token: i2.OrderTransitionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
479
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: OrderEditorComponent, selector: "vdr-order-editor", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\n <vdr-ab-left>\n <div class=\"flex clr-align-items-center\"></div>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <button class=\"btn btn-secondary\" (click)=\"transitionToPriorState(order)\">\n {{ 'order.cancel-modification' | translate }}\n </button>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-page-detail-layout *ngIf=\"entity as order\">\n <vdr-page-detail-sidebar>\n <vdr-card [title]=\"'order.modification-summary' | translate\">\n <vdr-order-modification-summary\n [orderSnapshot]=\"orderSnapshot\"\n [modifyOrderInput]=\"modifyOrderInput\"\n [addedLines]=\"addedLines\"\n [shippingAddressForm]=\"shippingAddressForm\"\n [billingAddressForm]=\"billingAddressForm\"\n [couponCodesControl]=\"couponCodesControl\"\n [updatedShippingMethods]=\"updatedShippingMethods\"\n ></vdr-order-modification-summary>\n\n <div *ngIf=\"!hasModifications()\" class=\"no-modifications\">\n {{ 'order.no-modifications-made' | translate }}\n </div>\n\n <div class=\"summary-controls\">\n <vdr-form-field [label]=\"'order.note' | translate\">\n <textarea\n [(ngModel)]=\"note\"\n name=\"note\"\n required\n [disabled]=\"!hasModifications()\"\n ></textarea>\n </vdr-form-field>\n <label class=\"flex items-center\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"recalculateShipping\"\n [disabled]=\"!hasModifications()\"\n />\n <div class=\"ml-1\">{{ 'order.modification-recalculate-shipping' | translate }}</div>\n </label>\n <button\n class=\"btn btn-primary mt-2\"\n [disabled]=\"!hasModifications()\"\n (click)=\"previewAndModify(order)\"\n >\n {{ 'order.preview-changes' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.set-coupon-codes' | translate\">\n <vdr-coupon-code-selector [control]=\"couponCodesControl\"></vdr-coupon-code-selector>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping-address' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n [title]=\"'order.edit-shipping-address' | translate\"\n (click)=\"editingShippingAddress = !editingShippingAddress\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n </button>\n </ng-template>\n <vdr-formatted-address\n *ngIf=\"!editingShippingAddress\"\n [address]=\"shippingAddressForm.value\"\n ></vdr-formatted-address>\n <vdr-address-form\n *ngIf=\"editingShippingAddress\"\n [formGroup]=\"shippingAddressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n [customFields]=\"addressCustomFields\"\n ></vdr-address-form>\n </vdr-card>\n <vdr-card [title]=\"'order.billing-address' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n [title]=\"'order.edit-billing-address' | translate\"\n (click)=\"editingBillingAddress = !editingBillingAddress\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n </button>\n </ng-template>\n <vdr-formatted-address\n *ngIf=\"!editingBillingAddress\"\n [address]=\"billingAddressForm.value\"\n ></vdr-formatted-address>\n <vdr-address-form\n *ngIf=\"editingBillingAddress\"\n [formGroup]=\"billingAddressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n [customFields]=\"addressCustomFields\"\n ></vdr-address-form>\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block>\n <vdr-card [paddingX]=\"false\">\n <vdr-data-table-2 id=\"modify-order\" class=\"order-table\" [items]=\"order.lines.concat(addedLines)\">\n <!-- Here we define all the available columns -->\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"created-at\"\n [heading]=\"'common.created-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"updated-at\"\n [heading]=\"'common.updated-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-line=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"product-name\"\n [heading]=\"'order.product-name' | translate\"\n [optional]=\"false\"\n >\n <ng-template let-line=\"item\">\n {{ line.productVariant.name }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\">\n <ng-template let-line=\"item\">\n <div class=\"text-center\">\n <div>{{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}</div>\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\n </div>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <input\n type=\"number\"\n class=\"draft-qty mr-1\"\n min=\"0\"\n [value]=\"getInitialLineQuantity(line.id)\"\n (input)=\"updateLineQuantity(line, $event.target.value)\"\n />\n <button\n class=\"button-small\"\n *ngIf=\"isAddedLine(line)\"\n (click)=\"removeAddedItem(line.id)\"\n >\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\n <vdr-line-fulfillment\n [line]=\"line\"\n [allOrderFulfillments]=\"order.fulfillments\"\n [orderState]=\"order.state\"\n ></vdr-line-fulfillment>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n *ngFor=\"let customField of orderLineCustomFields\"\n [id]=\"customField.name\"\n [heading]=\"customField | customFieldLabel : (uiLanguage$ | async)\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\" let-index=\"index\">\n <vdr-custom-field-control\n [compact]=\"true\"\n [entityName]=\"'OrderLine'\"\n [customField]=\"customField\"\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.at(index)\"\n />\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </vdr-card>\n <vdr-card [title]=\"'order.add-item-to-order' | translate\">\n <vdr-product-variant-selector class=\"mb-4\" (productSelected)=\"addItemSelectedVariant = $event\">\n </vdr-product-variant-selector>\n <div class=\"flex\">\n <div>\n <div *ngIf=\"addItemSelectedVariant\" class=\"flex mb-4\">\n <img\n *ngIf=\"addItemSelectedVariant.productAsset as asset\"\n [src]=\"asset | assetPreview : 'tiny'\"\n class=\"mr-4 add-item-thumb\"\n />\n <div>\n <strong class=\"mr-4\">{{ addItemSelectedVariant.productVariantName }}</strong>\n <small>{{ addItemSelectedVariant.sku }}</small>\n <div>\n {{\n getSelectedItemPrice(addItemSelectedVariant)\n | localeCurrency : order.currencyCode\n }}\n </div>\n </div>\n </div>\n <div class=\"form-grid\" *ngIf=\"addItemSelectedVariant\">\n <ng-container *ngFor=\"let customField of orderLineCustomFields\">\n <vdr-custom-field-control\n [readonly]=\"!addItemSelectedVariant\"\n [customField]=\"customField\"\n [customFieldsFormGroup]=\"addItemCustomFieldsForm\"\n entityName=\"OrderLine\"\n [compact]=\"true\"\n ></vdr-custom-field-control>\n </ng-container>\n </div>\n </div>\n <div class=\"flex-spacer\"></div>\n <div>\n <button\n *ngIf=\"addItemSelectedVariant\"\n class=\"btn btn-secondary\"\n [disabled]=\"!addItemSelectedVariant || addItemCustomFieldsForm.invalid\"\n (click)=\"addItemToOrder(addItemSelectedVariant)\"\n >\n {{ 'order.add-item-to-order' | translate }}\n </button>\n </div>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping' | translate\">\n <div *ngFor=\"let shippingLine of order.shippingLines\" class=\"flex items-center\">\n <ng-container *ngIf=\"getShippingLineDetails(shippingLine) as details\">\n <div>{{ details.name }}:</div>\n <div class=\"mx-1\">\n {{ details.price | localeCurrency : order.currencyCode }}\n </div>\n <button class=\"button-small\" (click)=\"setShippingMethod(shippingLine.id)\">\n {{ 'order.set-shipping-method' | translate }}\n </button>\n </ng-container>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.add-surcharge' | translate\">\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.description' | translate\" for=\"description\"\n ><input id=\"description\" type=\"text\" formControlName=\"description\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'order.product-sku' | translate\" for=\"sku\"\n ><input id=\"sku\" type=\"text\" formControlName=\"sku\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'common.price' | translate\" for=\"price\">\n <vdr-currency-input\n [currencyCode]=\"order.currencyCode\"\n id=\"price\"\n formControlName=\"price\"\n ></vdr-currency-input>\n </vdr-form-field>\n <vdr-form-field\n [label]=\"\n 'catalog.price-includes-tax-at'\n | translate : { rate: surchargeForm.get('taxRate')?.value ?? 0 }\n \"\n for=\"priceIncludesTax\"\n ><input\n id=\"priceIncludesTax\"\n type=\"checkbox\"\n clrCheckbox\n formControlName=\"priceIncludesTax\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'order.tax-rate' | translate\" for=\"taxRate\">\n <vdr-affixed-input suffix=\"%\"\n ><input id=\"taxRate\" type=\"number\" min=\"0\" max=\"100\" formControlName=\"taxRate\"\n /></vdr-affixed-input>\n </vdr-form-field>\n <vdr-form-field [label]=\"'order.tax-description' | translate\" for=\"taxDescription\"\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\n /></vdr-form-field>\n </div>\n <button\n class=\"btn btn-secondary mt-2\"\n [disabled]=\"\n surchargeForm.invalid ||\n surchargeForm.pristine ||\n surchargeForm.get('price')?.value === 0 ||\n !surchargeForm.get('description')?.value\n \"\n >\n {{ 'order.add-surcharge' | translate }}\n </button>\n </form>\n </vdr-card>\n </vdr-page-block>\n</vdr-page-detail-layout>\n", styles: [".order-table .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}.order-table .sub-total td{border-top:1px dashed var(--color-component-border-200)}.order-table .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}.order-table td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}.order-table img{border-radius:var(--border-radius-img)}.order-table .order-line-custom-fields{display:flex;flex-wrap:wrap}.order-table .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}.order-table .draft-qty{max-width:48px}.order-table .order-line-custom-field{background-color:var(--color-component-bg-100)}.order-table .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}.order-table .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}.order-table .promotions-label{text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}.order-table .thumb img{width:50px;height:50px}.order-table .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}.order-table .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}.order-table tr.modified td{background-color:var(--color-warning-100)}.order-table .order-line-custom-field{text-align:start}.add-item-thumb{max-width:50px}.no-modifications{color:var(--color-grey-400)}.summary-controls{border-top:1px solid var(--color-weight-200);margin-top:calc(var(--space-unit) * 2);padding-top:calc(var(--space-unit) * 1)}\n"], dependencies: [{ kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { 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.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.AffixedInputComponent, selector: "vdr-affixed-input", inputs: ["prefix", "suffix"] }, { kind: "component", type: i1.CurrencyInputComponent, selector: "vdr-currency-input", inputs: ["disabled", "readonly", "value", "currencyCode"], outputs: ["valueChange"] }, { kind: "component", type: i1.CustomFieldControlComponent, selector: "vdr-custom-field-control", inputs: ["entityName", "customFieldsFormGroup", "customField", "compact", "showLabel", "readonly"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"], outputs: ["readOnlyToggleChange"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select, vdr-currency-input" }, { kind: "component", type: i1.FormattedAddressComponent, selector: "vdr-formatted-address", inputs: ["address"] }, { kind: "component", type: i1.ProductVariantSelectorComponent, selector: "vdr-product-variant-selector", outputs: ["productSelected"] }, { kind: "component", type: i1.AddressFormComponent, selector: "vdr-address-form", inputs: ["customFields", "formGroup", "availableCountries"] }, { kind: "component", type: i1.DataTable2Component, selector: "vdr-data-table-2", inputs: ["id", "items", "itemsPerPage", "currentPage", "totalItems", "emptyStateLabel", "filters", "activeIndex"], outputs: ["pageChange", "itemsPerPageChange"] }, { kind: "component", type: i1.DataTable2ColumnComponent, selector: "vdr-dt2-column", inputs: ["id", "expand", "heading", "align", "sort", "optional", "hiddenByDefault", "orderable"], exportAs: ["row"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "directive", type: i1.CardControlsDirective, selector: "[vdrCardControls]" }, { kind: "component", type: i6.LineFulfillmentComponent, selector: "vdr-line-fulfillment", inputs: ["line", "allOrderFulfillments", "orderState"] }, { kind: "component", type: i7.LineRefundsComponent, selector: "vdr-line-refunds", inputs: ["line", "payments"] }, { kind: "component", type: i8.CouponCodeSelectorComponent, selector: "vdr-coupon-code-selector", inputs: ["couponCodes", "control"], outputs: ["addCouponCode", "removeCouponCode"] }, { kind: "component", type: i9.OrderModificationSummaryComponent, selector: "vdr-order-modification-summary", inputs: ["orderSnapshot", "modifyOrderInput", "addedLines", "shippingAddressForm", "billingAddressForm", "updatedShippingMethods", "couponCodesControl"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.CustomFieldLabelPipe, name: "customFieldLabel" }, { kind: "pipe", type: i1.AssetPreviewPipe, name: "assetPreview" }, { kind: "pipe", type: i1.LocaleDatePipe, name: "localeDate" }, { kind: "pipe", type: i1.LocaleCurrencyPipe, name: "localeCurrency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
480
+ }
481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OrderEditorComponent, decorators: [{
482
+ type: Component,
483
+ args: [{ selector: 'vdr-order-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\n <vdr-ab-left>\n <div class=\"flex clr-align-items-center\"></div>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <button class=\"btn btn-secondary\" (click)=\"transitionToPriorState(order)\">\n {{ 'order.cancel-modification' | translate }}\n </button>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-page-detail-layout *ngIf=\"entity as order\">\n <vdr-page-detail-sidebar>\n <vdr-card [title]=\"'order.modification-summary' | translate\">\n <vdr-order-modification-summary\n [orderSnapshot]=\"orderSnapshot\"\n [modifyOrderInput]=\"modifyOrderInput\"\n [addedLines]=\"addedLines\"\n [shippingAddressForm]=\"shippingAddressForm\"\n [billingAddressForm]=\"billingAddressForm\"\n [couponCodesControl]=\"couponCodesControl\"\n [updatedShippingMethods]=\"updatedShippingMethods\"\n ></vdr-order-modification-summary>\n\n <div *ngIf=\"!hasModifications()\" class=\"no-modifications\">\n {{ 'order.no-modifications-made' | translate }}\n </div>\n\n <div class=\"summary-controls\">\n <vdr-form-field [label]=\"'order.note' | translate\">\n <textarea\n [(ngModel)]=\"note\"\n name=\"note\"\n required\n [disabled]=\"!hasModifications()\"\n ></textarea>\n </vdr-form-field>\n <label class=\"flex items-center\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"recalculateShipping\"\n [disabled]=\"!hasModifications()\"\n />\n <div class=\"ml-1\">{{ 'order.modification-recalculate-shipping' | translate }}</div>\n </label>\n <button\n class=\"btn btn-primary mt-2\"\n [disabled]=\"!hasModifications()\"\n (click)=\"previewAndModify(order)\"\n >\n {{ 'order.preview-changes' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.set-coupon-codes' | translate\">\n <vdr-coupon-code-selector [control]=\"couponCodesControl\"></vdr-coupon-code-selector>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping-address' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n [title]=\"'order.edit-shipping-address' | translate\"\n (click)=\"editingShippingAddress = !editingShippingAddress\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n </button>\n </ng-template>\n <vdr-formatted-address\n *ngIf=\"!editingShippingAddress\"\n [address]=\"shippingAddressForm.value\"\n ></vdr-formatted-address>\n <vdr-address-form\n *ngIf=\"editingShippingAddress\"\n [formGroup]=\"shippingAddressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n [customFields]=\"addressCustomFields\"\n ></vdr-address-form>\n </vdr-card>\n <vdr-card [title]=\"'order.billing-address' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n [title]=\"'order.edit-billing-address' | translate\"\n (click)=\"editingBillingAddress = !editingBillingAddress\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n </button>\n </ng-template>\n <vdr-formatted-address\n *ngIf=\"!editingBillingAddress\"\n [address]=\"billingAddressForm.value\"\n ></vdr-formatted-address>\n <vdr-address-form\n *ngIf=\"editingBillingAddress\"\n [formGroup]=\"billingAddressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n [customFields]=\"addressCustomFields\"\n ></vdr-address-form>\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block>\n <vdr-card [paddingX]=\"false\">\n <vdr-data-table-2 id=\"modify-order\" class=\"order-table\" [items]=\"order.lines.concat(addedLines)\">\n <!-- Here we define all the available columns -->\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"created-at\"\n [heading]=\"'common.created-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"updated-at\"\n [heading]=\"'common.updated-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-line=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"product-name\"\n [heading]=\"'order.product-name' | translate\"\n [optional]=\"false\"\n >\n <ng-template let-line=\"item\">\n {{ line.productVariant.name }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\">\n <ng-template let-line=\"item\">\n <div class=\"text-center\">\n <div>{{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}</div>\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\n </div>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <input\n type=\"number\"\n class=\"draft-qty mr-1\"\n min=\"0\"\n [value]=\"getInitialLineQuantity(line.id)\"\n (input)=\"updateLineQuantity(line, $event.target.value)\"\n />\n <button\n class=\"button-small\"\n *ngIf=\"isAddedLine(line)\"\n (click)=\"removeAddedItem(line.id)\"\n >\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\n <vdr-line-fulfillment\n [line]=\"line\"\n [allOrderFulfillments]=\"order.fulfillments\"\n [orderState]=\"order.state\"\n ></vdr-line-fulfillment>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n *ngFor=\"let customField of orderLineCustomFields\"\n [id]=\"customField.name\"\n [heading]=\"customField | customFieldLabel : (uiLanguage$ | async)\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\" let-index=\"index\">\n <vdr-custom-field-control\n [compact]=\"true\"\n [entityName]=\"'OrderLine'\"\n [customField]=\"customField\"\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.at(index)\"\n />\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </vdr-card>\n <vdr-card [title]=\"'order.add-item-to-order' | translate\">\n <vdr-product-variant-selector class=\"mb-4\" (productSelected)=\"addItemSelectedVariant = $event\">\n </vdr-product-variant-selector>\n <div class=\"flex\">\n <div>\n <div *ngIf=\"addItemSelectedVariant\" class=\"flex mb-4\">\n <img\n *ngIf=\"addItemSelectedVariant.productAsset as asset\"\n [src]=\"asset | assetPreview : 'tiny'\"\n class=\"mr-4 add-item-thumb\"\n />\n <div>\n <strong class=\"mr-4\">{{ addItemSelectedVariant.productVariantName }}</strong>\n <small>{{ addItemSelectedVariant.sku }}</small>\n <div>\n {{\n getSelectedItemPrice(addItemSelectedVariant)\n | localeCurrency : order.currencyCode\n }}\n </div>\n </div>\n </div>\n <div class=\"form-grid\" *ngIf=\"addItemSelectedVariant\">\n <ng-container *ngFor=\"let customField of orderLineCustomFields\">\n <vdr-custom-field-control\n [readonly]=\"!addItemSelectedVariant\"\n [customField]=\"customField\"\n [customFieldsFormGroup]=\"addItemCustomFieldsForm\"\n entityName=\"OrderLine\"\n [compact]=\"true\"\n ></vdr-custom-field-control>\n </ng-container>\n </div>\n </div>\n <div class=\"flex-spacer\"></div>\n <div>\n <button\n *ngIf=\"addItemSelectedVariant\"\n class=\"btn btn-secondary\"\n [disabled]=\"!addItemSelectedVariant || addItemCustomFieldsForm.invalid\"\n (click)=\"addItemToOrder(addItemSelectedVariant)\"\n >\n {{ 'order.add-item-to-order' | translate }}\n </button>\n </div>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping' | translate\">\n <div *ngFor=\"let shippingLine of order.shippingLines\" class=\"flex items-center\">\n <ng-container *ngIf=\"getShippingLineDetails(shippingLine) as details\">\n <div>{{ details.name }}:</div>\n <div class=\"mx-1\">\n {{ details.price | localeCurrency : order.currencyCode }}\n </div>\n <button class=\"button-small\" (click)=\"setShippingMethod(shippingLine.id)\">\n {{ 'order.set-shipping-method' | translate }}\n </button>\n </ng-container>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.add-surcharge' | translate\">\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.description' | translate\" for=\"description\"\n ><input id=\"description\" type=\"text\" formControlName=\"description\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'order.product-sku' | translate\" for=\"sku\"\n ><input id=\"sku\" type=\"text\" formControlName=\"sku\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'common.price' | translate\" for=\"price\">\n <vdr-currency-input\n [currencyCode]=\"order.currencyCode\"\n id=\"price\"\n formControlName=\"price\"\n ></vdr-currency-input>\n </vdr-form-field>\n <vdr-form-field\n [label]=\"\n 'catalog.price-includes-tax-at'\n | translate : { rate: surchargeForm.get('taxRate')?.value ?? 0 }\n \"\n for=\"priceIncludesTax\"\n ><input\n id=\"priceIncludesTax\"\n type=\"checkbox\"\n clrCheckbox\n formControlName=\"priceIncludesTax\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'order.tax-rate' | translate\" for=\"taxRate\">\n <vdr-affixed-input suffix=\"%\"\n ><input id=\"taxRate\" type=\"number\" min=\"0\" max=\"100\" formControlName=\"taxRate\"\n /></vdr-affixed-input>\n </vdr-form-field>\n <vdr-form-field [label]=\"'order.tax-description' | translate\" for=\"taxDescription\"\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\n /></vdr-form-field>\n </div>\n <button\n class=\"btn btn-secondary mt-2\"\n [disabled]=\"\n surchargeForm.invalid ||\n surchargeForm.pristine ||\n surchargeForm.get('price')?.value === 0 ||\n !surchargeForm.get('description')?.value\n \"\n >\n {{ 'order.add-surcharge' | translate }}\n </button>\n </form>\n </vdr-card>\n </vdr-page-block>\n</vdr-page-detail-layout>\n", styles: [".order-table .is-cancelled td{text-decoration:line-through;background-color:var(--color-component-bg-200)}.order-table .sub-total td{border-top:1px dashed var(--color-component-border-200)}.order-table .total td{font-weight:700;border-top:1px dashed var(--color-component-border-200)}.order-table td.custom-fields-row{border-top-style:dashed;border-top-color:var(--color-grey-200)}.order-table img{border-radius:var(--border-radius-img)}.order-table .order-line-custom-fields{display:flex;flex-wrap:wrap}.order-table .order-line-custom-fields .custom-field{text-align:start;max-width:200px;overflow:hidden;text-overflow:ellipsis;margin-bottom:6px;margin-inline-end:18px}.order-table .draft-qty{max-width:48px}.order-table .order-line-custom-field{background-color:var(--color-component-bg-100)}.order-table .order-line-custom-field .custom-field-ellipsis{color:var(--color-text-300)}.order-table .net-price{font-size:11px;color:var(--color-text-300);line-height:14px}.order-table .promotions-label{text-decoration:underline dotted var(--color-text-200);font-size:11px;margin-top:6px;cursor:pointer;text-transform:lowercase}.order-table .thumb img{width:50px;height:50px}.order-table .shipping-method-name{font-size:var(--font-size-xs);margin-inline-end:2px}.order-table .order-placed-quantity{text-decoration:line-through;color:var(--color-text-300);margin-inline-end:2px}.order-table tr.modified td{background-color:var(--color-warning-100)}.order-table .order-line-custom-field{text-align:start}.add-item-thumb{max-width:50px}.no-modifications{color:var(--color-grey-400)}.summary-controls{border-top:1px solid var(--color-weight-200);margin-top:calc(var(--space-unit) * 2);padding-top:calc(var(--space-unit) * 1)}\n"] }]
484
+ }], ctorParameters: () => [{ type: i1.DataService }, { type: i1.NotificationService }, { type: i1.ModalService }, { type: i2.OrderTransitionService }, { type: i0.ChangeDetectorRef }] });
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvb3JkZXIvc3JjL2NvbXBvbmVudHMvb3JkZXItZWRpdG9yL29yZGVyLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWVkaXRvci9vcmRlci1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFNSCxnQkFBZ0IsRUFRaEIsU0FBUyxFQUVULGtDQUFrQyxFQUNsQyx3QkFBd0IsR0FDM0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBU3JGLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZ0NBQWdDLEdBQ25DLE1BQU0sb0VBQW9FLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7Ozs7Ozs7Ozs7OztBQVEvSCxNQUFNLE9BQU8sb0JBQ1QsU0FBUSx3QkFBa0U7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RyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxhQUFhLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFLENBQUM7SUFDTixDQUFDO0lBRVMsYUFBYSxDQUFDLE1BQTJCLEVBQUUsWUFBMEI7UUFDM0UsY0FBYztJQUNsQixDQUFDOytHQTFoQlEsb0JBQW9CO21HQUFwQixvQkFBb0IsK0VDcERqQyxvNGZBbVVBOzs0RkQvUWEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBVbnR5cGVkRm9ybUFycmF5LFxuICAgIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgICBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ3VzdG9tRmllbGRDb25maWcsXG4gICAgRGF0YVNlcnZpY2UsXG4gICAgRHJhZnRPcmRlckVsaWdpYmxlU2hpcHBpbmdNZXRob2RzUXVlcnksXG4gICAgRXJyb3JSZXN1bHQsXG4gICAgR2V0QXZhaWxhYmxlQ291bnRyaWVzUXVlcnksXG4gICAgSGlzdG9yeUVudHJ5VHlwZSxcbiAgICBMYW5ndWFnZUNvZGUsXG4gICAgTW9kYWxTZXJ2aWNlLFxuICAgIE1vZGlmeU9yZGVySW5wdXQsXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBPcmRlckFkZHJlc3NGcmFnbWVudCxcbiAgICBPcmRlckRldGFpbEZyYWdtZW50LFxuICAgIE9yZGVyRGV0YWlsUXVlcnlEb2N1bWVudCxcbiAgICBTb3J0T3JkZXIsXG4gICAgU3VyY2hhcmdlSW5wdXQsXG4gICAgdHJhbnNmb3JtUmVsYXRpb25DdXN0b21GaWVsZElucHV0cyxcbiAgICBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQsXG59IGZyb20gJ0BkZWVucnV2L2FkbWluLXVpL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIsIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BkZWVucnV2L2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcbmltcG9ydCB7IHNpbXBsZURlZXBDbG9uZSB9IGZyb20gJ0BkZWVucnV2L2NvbW1vbi9saWIvc2ltcGxlLWRlZXAtY2xvbmUnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1hcFRvLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIEFkZGVkTGluZSxcbiAgICBNb2RpZnlPcmRlckRhdGEsXG4gICAgT3JkZXJTbmFwc2hvdCxcbiAgICBQcm9kdWN0U2VsZWN0b3JJdGVtLFxufSBmcm9tICcuLi8uLi9jb21tb24vbW9kaWZ5LW9yZGVyLXR5cGVzJztcblxuaW1wb3J0IHsgT3JkZXJUcmFuc2l0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9vcmRlci10cmFuc2l0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBPcmRlckVkaXRSZXN1bHRUeXBlLFxuICAgIE9yZGVyRWRpdHNQcmV2aWV3RGlhbG9nQ29tcG9uZW50LFxufSBmcm9tICcuLi9vcmRlci1lZGl0cy1wcmV2aWV3LWRpYWxvZy9vcmRlci1lZGl0cy1wcmV2aWV3LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0U2hpcHBpbmdNZXRob2REaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3Qtc2hpcHBpbmctbWV0aG9kLWRpYWxvZy9zZWxlY3Qtc2hpcHBpbmctbWV0aG9kLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Zkci1vcmRlci1lZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9vcmRlci1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL29yZGVyLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBPcmRlckVkaXRvckNvbXBvbmVudFxuICAgIGV4dGVuZHMgVHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50PHR5cGVvZiBPcmRlckRldGFpbFF1ZXJ5RG9jdW1lbnQsICdvcmRlcic+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICAgIGF2YWlsYWJsZUNvdW50cmllcyQ6IE9ic2VydmFibGU8R2V0QXZhaWxhYmxlQ291bnRyaWVzUXVlcnlbJ2NvdW50cmllcyddWydpdGVtcyddPjtcbiAgICBhZGRyZXNzQ3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xuICAgIHVpTGFuZ3VhZ2UkOiBPYnNlcnZhYmxlPExhbmd1YWdlQ29kZT47XG4gICAgZGV0YWlsRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcbiAgICBjb3Vwb25Db2Rlc0NvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nW10+KFtdKTtcbiAgICBvcmRlckxpbmVDdXN0b21GaWVsZHNGb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXk7XG4gICAgYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm1BcnJheTogVW50eXBlZEZvcm1BcnJheTtcbiAgICBhZGRJdGVtQ3VzdG9tRmllbGRzRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgICBhZGRJdGVtU2VsZWN0ZWRWYXJpYW50OiBQcm9kdWN0U2VsZWN0b3JJdGVtIHwgdW5kZWZpbmVkO1xuICAgIG9yZGVyTGluZUN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXTtcbiAgICBvcmRlclNuYXBzaG90OiBPcmRlclNuYXBzaG90O1xuICAgIG1vZGlmeU9yZGVySW5wdXQ6IE1vZGlmeU9yZGVyRGF0YSA9IHtcbiAgICAgICAgZHJ5UnVuOiB0cnVlLFxuICAgICAgICBvcmRlcklkOiAnJyxcbiAgICAgICAgYWRkSXRlbXM6IFtdLFxuICAgICAgICBhZGp1c3RPcmRlckxpbmVzOiBbXSxcbiAgICAgICAgc3VyY2hhcmdlczogW10sXG4gICAgICAgIG5vdGU6ICcnLFxuICAgICAgICByZWZ1bmRzOiBbXSxcbiAgICAgICAgdXBkYXRlU2hpcHBpbmdBZGRyZXNzOiB7fSxcbiAgICAgICAgdXBkYXRlQmlsbGluZ0FkZHJlc3M6IHt9LFxuICAgIH07XG4gICAgc3VyY2hhcmdlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSksXG4gICAgICAgIHNrdTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgcHJpY2U6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICAgICAgcHJpY2VJbmNsdWRlc1RheDogbmV3IEZvcm1Db250cm9sKHRydWUpLFxuICAgICAgICB0YXhSYXRlOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgICAgIHRheERlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgIH0pO1xuICAgIHNoaXBwaW5nQWRkcmVzc0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZnVsbE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIGNvbXBhbnk6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIHN0cmVldExpbmUxOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBzdHJlZXRMaW5lMjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgY2l0eTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgcHJvdmluY2U6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIHBvc3RhbENvZGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIGNvdW50cnlDb2RlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBwaG9uZU51bWJlcjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICB9KTtcbiAgICBiaWxsaW5nQWRkcmVzc0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZnVsbE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIGNvbXBhbnk6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIHN0cmVldExpbmUxOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBzdHJlZXRMaW5lMjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgY2l0eTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgcHJvdmluY2U6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIHBvc3RhbENvZGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIGNvdW50cnlDb2RlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBwaG9uZU51bWJlcjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICB9KTtcbiAgICBub3RlID0gJyc7XG4gICAgcmVjYWxjdWxhdGVTaGlwcGluZyA9IHRydWU7XG4gICAgcHJldmlvdXNTdGF0ZTogc3RyaW5nO1xuICAgIGVkaXRpbmdTaGlwcGluZ0FkZHJlc3MgPSBmYWxzZTtcbiAgICBlZGl0aW5nQmlsbGluZ0FkZHJlc3MgPSBmYWxzZTtcbiAgICB1cGRhdGVkU2hpcHBpbmdNZXRob2RzOiB7XG4gICAgICAgIFtcbiAgICAgICAgICAgIHNoaXBwaW5nTGluZUlkOiBzdHJpbmdcbiAgICAgICAgXTogRHJhZnRPcmRlckVsaWdpYmxlU2hpcHBpbmdNZXRob2RzUXVlcnlbJ2VsaWdpYmxlU2hpcHBpbmdNZXRob2RzRm9yRHJhZnRPcmRlciddW251bWJlcl07XG4gICAgfSA9IHt9O1xuICAgIHByaXZhdGUgYWRkZWRWYXJpYW50cyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9kdWN0U2VsZWN0b3JJdGVtPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBvcmRlclRyYW5zaXRpb25TZXJ2aWNlOiBPcmRlclRyYW5zaXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ0FkZHJlc3MnKTtcbiAgICAgICAgdGhpcy5tb2RpZnlPcmRlcklucHV0Lm9yZGVySWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSBhcyBzdHJpbmc7XG4gICAgICAgIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnT3JkZXJMaW5lJyk7XG4gICAgICAgIHRoaXMuZW50aXR5JC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShvcmRlciA9PiB7XG4gICAgICAgICAgICB0aGlzLm9yZGVyU25hcHNob3QgPSB0aGlzLmNyZWF0ZU9yZGVyU25hcHNob3Qob3JkZXIpO1xuICAgICAgICAgICAgaWYgKG9yZGVyLmNvdXBvbkNvZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY291cG9uQ29kZXNDb250cm9sLnNldFZhbHVlKG9yZGVyLmNvdXBvbkNvZGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3VyY2hhcmdlRm9ybS5yZXNldCgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgY29udHJvbF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zaGlwcGluZ0FkZHJlc3NGb3JtLmNvbnRyb2xzKSkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUob3JkZXIuc2hpcHBpbmdBZGRyZXNzPy5bbmFtZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZGRBZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwKHRoaXMuc2hpcHBpbmdBZGRyZXNzRm9ybSwgb3JkZXIuc2hpcHBpbmdBZGRyZXNzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW25hbWUsIGNvbnRyb2xdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuYmlsbGluZ0FkZHJlc3NGb3JtLmNvbnRyb2xzKSkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUob3JkZXIuYmlsbGluZ0FkZHJlc3M/LltuYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZEFkZHJlc3NDdXN0b21GaWVsZHNGb3JtR3JvdXAodGhpcy5iaWxsaW5nQWRkcmVzc0Zvcm0sIG9yZGVyLmJpbGxpbmdBZGRyZXNzKTtcbiAgICAgICAgICAgIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzRm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG9yZGVyLmxpbmVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyBuYW1lIH0gb2YgdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2wobmFtZSwgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgobGluZSBhcyBhbnkpLmN1c3RvbUZpZWxkc1tuYW1lXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW9kaWZ5Um93ID0gdGhpcy5tb2RpZnlPcmRlcklucHV0LmFkanVzdE9yZGVyTGluZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGwgPT4gbC5vcmRlckxpbmVJZCA9PT0gbGluZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RpZnlSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmeVJvdyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlckxpbmVJZDogbGluZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFudGl0eTogbGluZS5xdWFudGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRqdXN0T3JkZXJMaW5lcy5wdXNoKG1vZGlmeVJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZ5Um93LmN1c3RvbUZpZWxkcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHNGb3JtQXJyYXkucHVzaChmb3JtR3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtQXJyYXkgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSk7XG4gICAgICAgIHRoaXMuYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG4gICAgICAgIGZvciAoY29uc3QgY3VzdG9tRmllbGQgb2YgdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm0uYWRkQ29udHJvbChjdXN0b21GaWVsZC5uYW1lLCBuZXcgVW50eXBlZEZvcm1Db250cm9sKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlQ291bnRyaWVzJCA9IHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3NcbiAgICAgICAgICAgIC5nZXRBdmFpbGFibGVDb3VudHJpZXMoKVxuICAgICAgICAgICAgLm1hcFNpbmdsZShyZXN1bHQgPT4gcmVzdWx0LmNvdW50cmllcy5pdGVtcylcbiAgICAgICAgICAgIC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlclxuICAgICAgICAgICAgLmdldE9yZGVySGlzdG9yeSh0aGlzLmlkLCB7XG4gICAgICAgICAgICAgICAgdGFrZTogMSxcbiAgICAgICAgICAgICAgICBzb3J0OiB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogU29ydE9yZGVyLkRFU0MsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IHsgdHlwZTogeyBlcTogSGlzdG9yeUVudHJ5VHlwZS5PUkRFUl9TVEFURV9UUkFOU0lUSU9OIH0gfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc2luZ2xlJC5zdWJzY3JpYmUoKHsgb3JkZXIgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNTdGF0ZSA9IG9yZGVyPy5oaXN0b3J5Lml0ZW1zWzBdLmRhdGEuZnJvbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVpTGFuZ3VhZ2UkID0gdGhpcy5kYXRhU2VydmljZS5jbGllbnRcbiAgICAgICAgICAgIC51aVN0YXRlKClcbiAgICAgICAgICAgIC5zdHJlYW0kLnBpcGUobWFwKCh7IHVpU3RhdGUgfSkgPT4gdWlTdGF0ZS5sYW5ndWFnZSkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBnZXQgYWRkZWRMaW5lcygpOiBBZGRlZExpbmVbXSB7XG4gICAgICAgIGNvbnN0IGdldFNpbmdsZVByaWNlVmFsdWUgPSAocHJpY2U6IFByb2R1Y3RTZWxlY3Rvckl0ZW1bJ3ByaWNlJ10pID0+XG4gICAgICAgICAgICBwcmljZS5fX3R5cGVuYW1lID09PSAnU2luZ2xlUHJpY2UnID8gcHJpY2UudmFsdWUgOiAwO1xuICAgICAgICByZXR1cm4gKHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGRJdGVtcyB8fCBbXSlcbiAgICAgICAgICAgIC5tYXAocm93ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YXJpYW50SW5mbyA9IHRoaXMuYWRkZWRWYXJpYW50cy5nZXQocm93LnByb2R1Y3RWYXJpYW50SWQpO1xuICAgICAgICAgICAgICAgIGlmICh2YXJpYW50SW5mbykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0SWRGb3JBZGRlZEl0ZW0ocm93KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQ6IHZhcmlhbnRJbmZvLnByb2R1Y3RBc3NldCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RWYXJpYW50OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHZhcmlhbnRJbmZvLnByb2R1Y3RWYXJpYW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFyaWFudEluZm8ucHJvZHVjdFZhcmlhbnROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrdTogdmFyaWFudEluZm8uc2t1LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRQcmljZTogZ2V0U2luZ2xlUHJpY2VWYWx1ZSh2YXJpYW50SW5mby5wcmljZSksXG4gICAgICAgICAgICAgICAgICAgICAgICB1bml0UHJpY2VXaXRoVGF4OiBnZXRTaW5nbGVQcmljZVZhbHVlKHZhcmlhbnRJbmZvLnByaWNlV2l0aFRheCksXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWFudGl0eTogcm93LnF1YW50aXR5LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJZEZvckFkZGVkSXRlbShyb3c6IE1vZGlmeU9yZGVyRGF0YVsnYWRkSXRlbXMnXVtudW1iZXJdKSB7XG4gICAgICAgIHJldHVybiBgYWRkZWQtJHtyb3cucHJvZHVjdFZhcmlhbnRJZH0tJHtKU09OLnN0cmluZ2lmeShyb3cuY3VzdG9tRmllbGRzIHx8IHt9KX1gO1xuICAgIH1cblxuICAgIHRyYW5zaXRpb25Ub1ByaW9yU3RhdGUob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpIHtcbiAgICAgICAgdGhpcy5vcmRlclRyYW5zaXRpb25TZXJ2aWNlXG4gICAgICAgICAgICAudHJhbnNpdGlvblRvUHJlTW9kaWZ5aW5nU3RhdGUob3JkZXIuaWQsIG9yZGVyLm5leHRTdGF0ZXMpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYXNNb2RpZmljYXRpb25zKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7IGFkZEl0ZW1zLCBhZGp1c3RPcmRlckxpbmVzLCBzdXJjaGFyZ2VzIH0gPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQ7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIWFkZEl0ZW1zPy5sZW5ndGggfHxcbiAgICAgICAgICAgICEhc3VyY2hhcmdlcz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAhIWFkanVzdE9yZGVyTGluZXM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgKHRoaXMuc2hpcHBpbmdBZGRyZXNzRm9ybS5kaXJ0eSAmJiB0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0udmFsaWQpIHx8XG4gICAgICAgICAgICAodGhpcy5iaWxsaW5nQWRkcmVzc0Zvcm0uZGlydHkgJiYgdGhpcy5iaWxsaW5nQWRkcmVzc0Zvcm0udmFsaWQpIHx8XG4gICAgICAgICAgICB0aGlzLmNvdXBvbkNvZGVzQ29udHJvbC5kaXJ0eSB8fFxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzKS5sZW5ndGggPiAwXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNMaW5lTW9kaWZpZWQobGluZTogT3JkZXJEZXRhaWxGcmFnbWVudFsnbGluZXMnXVtudW1iZXJdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGp1c3RPcmRlckxpbmVzPy5maW5kKFxuICAgICAgICAgICAgbCA9PiBsLm9yZGVyTGluZUlkID09PSBsaW5lLmlkICYmIGwucXVhbnRpdHkgIT09IGxpbmUucXVhbnRpdHksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0SW5pdGlhbExpbmVRdWFudGl0eShsaW5lSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkTGluZSA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGp1c3RPcmRlckxpbmVzPy5maW5kKGwgPT4gbC5vcmRlckxpbmVJZCA9PT0gbGluZUlkKTtcbiAgICAgICAgaWYgKGFkanVzdGVkTGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkTGluZS5xdWFudGl0eTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZGRlZExpbmUgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXM/LmZpbmQobCA9PiB0aGlzLmdldElkRm9yQWRkZWRJdGVtKGwpID09PSBsaW5lSWQpO1xuICAgICAgICBpZiAoYWRkZWRMaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gYWRkZWRMaW5lLnF1YW50aXR5ID8/IDE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGluZSA9IHRoaXMub3JkZXJTbmFwc2hvdC5saW5lcy5maW5kKGwgPT4gbC5pZCA9PT0gbGluZUlkKTtcbiAgICAgICAgcmV0dXJuIGxpbmUgPyBsaW5lLnF1YW50aXR5IDogMTtcbiAgICB9XG5cbiAgICB1cGRhdGVMaW5lUXVhbnRpdHkobGluZTogT3JkZXJEZXRhaWxGcmFnbWVudFsnbGluZXMnXVtudW1iZXJdIHwgQWRkZWRMaW5lLCBxdWFudGl0eTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHsgYWRqdXN0T3JkZXJMaW5lcyB9ID0gdGhpcy5tb2RpZnlPcmRlcklucHV0O1xuICAgICAgICBpZiAodGhpcy5pc0FkZGVkTGluZShsaW5lKSkge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5tb2RpZnlPcmRlcklucHV0LmFkZEl0ZW1zPy5maW5kKFxuICAgICAgICAgICAgICAgIGwgPT4gbC5wcm9kdWN0VmFyaWFudElkID09PSBsaW5lLnByb2R1Y3RWYXJpYW50LmlkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChyb3cpIHtcbiAgICAgICAgICAgICAgICByb3cucXVhbnRpdHkgPSArcXVhbnRpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gYWRqdXN0T3JkZXJMaW5lcz8uZmluZChsID0+IGwub3JkZXJMaW5lSWQgPT09IGxpbmUuaWQpO1xuICAgICAgICAgICAgaWYgKHJvdyAmJiArcXVhbnRpdHkgPT09IGxpbmUucXVhbnRpdHkpIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIG1vZGlmaWNhdGlvbiBpZiB0aGUgcXVhbnRpdHkgaXMgdGhlIHNhbWUgYXNcbiAgICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgb3JkZXJcbiAgICAgICAgICAgICAgICBhZGp1c3RPcmRlckxpbmVzPy5zcGxpY2UoYWRqdXN0T3JkZXJMaW5lcz8uaW5kZXhPZihyb3cpLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcm93KSB7XG4gICAgICAgICAgICAgICAgcm93ID0geyBvcmRlckxpbmVJZDogbGluZS5pZCwgcXVhbnRpdHk6ICtxdWFudGl0eSB9O1xuICAgICAgICAgICAgICAgIGFkanVzdE9yZGVyTGluZXM/LnB1c2gocm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvdy5xdWFudGl0eSA9ICtxdWFudGl0eTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzQWRkZWRMaW5lKGxpbmU6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2xpbmVzJ11bbnVtYmVyXSB8IEFkZGVkTGluZSk6IGxpbmUgaXMgQWRkZWRMaW5lIHtcbiAgICAgICAgcmV0dXJuIChsaW5lIGFzIEFkZGVkTGluZSkuaWQuc3RhcnRzV2l0aCgnYWRkZWQtJyk7XG4gICAgfVxuXG4gICAgdXBkYXRlQWRkZWRJdGVtUXVhbnRpdHkoaXRlbTogQWRkZWRMaW5lLCBxdWFudGl0eTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGRJdGVtcz8uZmluZChsID0+IGwucHJvZHVjdFZhcmlhbnRJZCA9PT0gaXRlbS5wcm9kdWN0VmFyaWFudC5pZCk7XG4gICAgICAgIGlmIChyb3cpIHtcbiAgICAgICAgICAgIHJvdy5xdWFudGl0eSA9ICtxdWFudGl0eTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRyYWNrQnlQcm9kdWN0VmFyaWFudElkKGluZGV4OiBudW1iZXIsIGl0ZW06IEFkZGVkTGluZSkge1xuICAgICAgICByZXR1cm4gaXRlbS5wcm9kdWN0VmFyaWFudC5pZDtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZEl0ZW1QcmljZShyZXN1bHQ6IFByb2R1Y3RTZWxlY3Rvckl0ZW0gfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICAgICAgICBzd2l0Y2ggKHJlc3VsdD8ucHJpY2VXaXRoVGF4Ll9fdHlwZW5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1NpbmdsZVByaWNlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnByaWNlV2l0aFRheC52YWx1ZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRJdGVtVG9PcmRlcihyZXN1bHQ6IFByb2R1Y3RTZWxlY3Rvckl0ZW0gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSB0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5hZGRJdGVtQ3VzdG9tRmllbGRzRm9ybS52YWx1ZVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCByb3cgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXM/LmZpbmQobCA9PlxuICAgICAgICAgICAgdGhpcy5pc01hdGNoaW5nQWRkSXRlbVJvdyhsLCByZXN1bHQsIGN1c3RvbUZpZWxkcyksXG4gICAgICAgICk7XG4gICAgICAgIGlmICghcm93KSB7XG4gICAgICAgICAgICByb3cgPSB7IHByb2R1Y3RWYXJpYW50SWQ6IHJlc3VsdC5wcm9kdWN0VmFyaWFudElkLCBxdWFudGl0eTogMSB9O1xuICAgICAgICAgICAgaWYgKGN1c3RvbUZpZWxkcykge1xuICAgICAgICAgICAgICAgIHJvdy5jdXN0b21GaWVsZHMgPSBjdXN0b21GaWVsZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXM/LnB1c2gocm93KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvdy5xdWFudGl0eSsrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXN0b21GaWVsZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGN1c3RvbUZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChrZXksIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm1BcnJheS5wdXNoKGZvcm1Hcm91cCk7XG4gICAgICAgICAgICBmb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LmN1c3RvbUZpZWxkcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm0ucmVzZXQoe30pO1xuICAgICAgICB0aGlzLmFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWRkZWRWYXJpYW50cy5zZXQocmVzdWx0LnByb2R1Y3RWYXJpYW50SWQsIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgZ2V0U2hpcHBpbmdMaW5lRGV0YWlscyhzaGlwcGluZ0xpbmU6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ3NoaXBwaW5nTGluZXMnXVtudW1iZXJdKToge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIHByaWNlOiBudW1iZXI7XG4gICAgfSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRNZXRob2QgPSB0aGlzLnVwZGF0ZWRTaGlwcGluZ01ldGhvZHNbc2hpcHBpbmdMaW5lLmlkXTtcbiAgICAgICAgaWYgKHVwZGF0ZWRNZXRob2QpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogdXBkYXRlZE1ldGhvZC5uYW1lIHx8IHVwZGF0ZWRNZXRob2QuY29kZSxcbiAgICAgICAgICAgICAgICBwcmljZTogdXBkYXRlZE1ldGhvZC5wcmljZVdpdGhUYXgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBzaGlwcGluZ0xpbmUuc2hpcHBpbmdNZXRob2QubmFtZSB8fCBzaGlwcGluZ0xpbmUuc2hpcHBpbmdNZXRob2QuY29kZSxcbiAgICAgICAgICAgICAgICBwcmljZTogc2hpcHBpbmdMaW5lLmRpc2NvdW50ZWRQcmljZVdpdGhUYXgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0U2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdMaW5lSWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjdXJyZW50U2hpcHBpbmdNZXRob2QgPVxuICAgICAgICAgICAgdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzW3NoaXBwaW5nTGluZUlkXSA/P1xuICAgICAgICAgICAgdGhpcy5lbnRpdHk/LnNoaXBwaW5nTGluZXMuZmluZChsID0+IGwuaWQgPT09IHNoaXBwaW5nTGluZUlkKT8uc2hpcHBpbmdNZXRob2Q7XG4gICAgICAgIGlmICghY3VycmVudFNoaXBwaW5nTWV0aG9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlclxuICAgICAgICAgICAgLmdldERyYWZ0T3JkZXJFbGlnaWJsZVNoaXBwaW5nTWV0aG9kcyh0aGlzLmlkKVxuICAgICAgICAgICAgLm1hcFNpbmdsZSgoeyBlbGlnaWJsZVNoaXBwaW5nTWV0aG9kc0ZvckRyYWZ0T3JkZXIgfSkgPT4gZWxpZ2libGVTaGlwcGluZ01ldGhvZHNGb3JEcmFmdE9yZGVyKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG1ldGhvZHMgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KFNlbGVjdFNoaXBwaW5nTWV0aG9kRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWdpYmxlU2hpcHBpbmdNZXRob2RzOiBtZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuZW50aXR5Py5jdXJyZW5jeUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb25JZDogY3VycmVudFNoaXBwaW5nTWV0aG9kLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2RzLmZpbmQobWV0aG9kID0+IG1ldGhvZC5pZCA9PT0gcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzW3NoaXBwaW5nTGluZUlkXSA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTWF0Y2hpbmdBZGRJdGVtUm93KFxuICAgICAgICByb3c6IE1vZGlmeU9yZGVyRGF0YVsnYWRkSXRlbXMnXVtudW1iZXJdLFxuICAgICAgICByZXN1bHQ6IFByb2R1Y3RTZWxlY3Rvckl0ZW0sXG4gICAgICAgIGN1c3RvbUZpZWxkczogYW55LFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgcm93LnByb2R1Y3RWYXJpYW50SWQgPT09IHJlc3VsdC5wcm9kdWN0VmFyaWFudElkICYmXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShyb3cuY3VzdG9tRmllbGRzKSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VzdG9tRmllbGRzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlbW92ZUFkZGVkSXRlbShpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGRJdGVtcyA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGRJdGVtcz8uZmlsdGVyKGwgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gdGhpcy5nZXRJZEZvckFkZGVkSXRlbShsKTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtSWQgIT09IGlkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRTdXJjaGFyZ2VQcmljZXMoc3VyY2hhcmdlOiBTdXJjaGFyZ2VJbnB1dCkge1xuICAgICAgICBjb25zdCBwcmljZVdpdGhUYXggPSBzdXJjaGFyZ2UucHJpY2VJbmNsdWRlc1RheFxuICAgICAgICAgICAgPyBzdXJjaGFyZ2UucHJpY2VcbiAgICAgICAgICAgIDogTWF0aC5yb3VuZChzdXJjaGFyZ2UucHJpY2UgKiAoKDEwMCArIChzdXJjaGFyZ2UudGF4UmF0ZSB8fCAwKSkgLyAxMDApKTtcbiAgICAgICAgY29uc3QgcHJpY2UgPSBzdXJjaGFyZ2UucHJpY2VJbmNsdWRlc1RheFxuICAgICAgICAgICAgPyBNYXRoLnJvdW5kKHN1cmNoYXJnZS5wcmljZSAvICgoMTAwICsgKHN1cmNoYXJnZS50YXhSYXRlIHx8IDApKSAvIDEwMCkpXG4gICAgICAgICAgICA6IHN1cmNoYXJnZS5wcmljZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByaWNlLFxuICAgICAgICAgICAgcHJpY2VXaXRoVGF4LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFkZFN1cmNoYXJnZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5zdXJjaGFyZ2VzPy5wdXNoKHZhbHVlKTtcbiAgICAgICAgdGhpcy5zdXJjaGFyZ2VGb3JtLnJlc2V0KHtcbiAgICAgICAgICAgIHByaWNlOiAwLFxuICAgICAgICAgICAgcHJpY2VJbmNsdWRlc1RheDogdHJ1ZSxcbiAgICAgICAgICAgIHRheFJhdGU6IDAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZVN1cmNoYXJnZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5zdXJjaGFyZ2VzPy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHByZXZpZXdBbmRNb2RpZnkob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpIHtcbiAgICAgICAgY29uc3QgbW9kaWZ5T3JkZXJJbnB1dDogTW9kaWZ5T3JkZXJEYXRhID0ge1xuICAgICAgICAgICAgLi4udGhpcy5tb2RpZnlPcmRlcklucHV0LFxuICAgICAgICAgICAgYWRqdXN0T3JkZXJMaW5lczogdGhpcy5tb2RpZnlPcmRlcklucHV0LmFkanVzdE9yZGVyTGluZXMubWFwKGxpbmUgPT5cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbkN1c3RvbUZpZWxkSW5wdXRzKHNpbXBsZURlZXBDbG9uZShsaW5lKSwgdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHMpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaW5wdXQ6IE1vZGlmeU9yZGVySW5wdXQgPSB7XG4gICAgICAgICAgICAuLi5tb2RpZnlPcmRlcklucHV0LFxuICAgICAgICAgICAgLi4uKHRoaXMuYmlsbGluZ0FkZHJlc3NGb3JtLmRpcnR5ID8geyB1cGRhdGVCaWxsaW5nQWRkcmVzczogdGhpcy5iaWxsaW5nQWRkcmVzc0Zvcm0udmFsdWUgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLih0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0uZGlydHlcbiAgICAgICAgICAgICAgICA/IHsgdXBkYXRlU2hpcHBpbmdBZGRyZXNzOiB0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0udmFsdWUgfVxuICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgZHJ5UnVuOiB0cnVlLFxuICAgICAgICAgICAgY291cG9uQ29kZXM6IHRoaXMuY291cG9uQ29kZXNDb250cm9sLmRpcnR5ID8gdGhpcy5jb3Vwb25Db2Rlc0NvbnRyb2wudmFsdWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBub3RlOiB0aGlzLm5vdGUgPz8gJycsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgcmVjYWxjdWxhdGVTaGlwcGluZzogdGhpcy5yZWNhbGN1bGF0ZVNoaXBwaW5nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKE9iamVjdC5lbnRyaWVzKHRoaXMudXBkYXRlZFNoaXBwaW5nTWV0aG9kcykubGVuZ3RoKSB7XG4gICAgICAgICAgICBpbnB1dC5zaGlwcGluZ01ldGhvZElkcyA9IG9yZGVyLnNoaXBwaW5nTGluZXMubWFwKGwgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZWRTaGlwcGluZ01ldGhvZHNbbC5pZF1cbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnVwZGF0ZWRTaGlwcGluZ01ldGhvZHNbbC5pZF0uaWRcbiAgICAgICAgICAgICAgICAgICAgOiBsLnNoaXBwaW5nTWV0aG9kLmlkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyXG4gICAgICAgICAgICAubW9kaWZ5T3JkZXIoaW5wdXQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHsgbW9kaWZ5T3JkZXIgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGlmeU9yZGVyLl9fdHlwZW5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tb2RhbFNlcnZpY2UuZnJvbUNvbXBvbmVudChPcmRlckVkaXRzUHJldmlld0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAneGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IG1vZGlmeU9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJTbmFwc2hvdDogdGhpcy5vcmRlclNuYXBzaG90LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJMaW5lQ3VzdG9tRmllbGRzOiB0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmeU9yZGVySW5wdXQ6IGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWRMaW5lczogdGhpcy5hZGRlZExpbmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzRm9ybTogdGhpcy5zaGlwcGluZ0FkZHJlc3NGb3JtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlsbGluZ0FkZHJlc3NGb3JtOiB0aGlzLmJpbGxpbmdBZGRyZXNzRm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXBvbkNvZGVzQ29udHJvbDogdGhpcy5jb3Vwb25Db2Rlc0NvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkU2hpcHBpbmdNZXRob2RzOiB0aGlzLnVwZGF0ZWRTaGlwcGluZ01ldGhvZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbnN1ZmZpY2llbnRTdG9ja0Vycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ05lZ2F0aXZlUXVhbnRpdHlFcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdOb0NoYW5nZXNTcGVjaWZpZWRFcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPcmRlckxpbWl0RXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnT3JkZXJNb2RpZmljYXRpb25TdGF0ZUVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1BheW1lbnRNZXRob2RNaXNzaW5nRXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnUmVmdW5kUGF5bWVudElkTWlzc2luZ0Vycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NvdXBvbkNvZGVMaW1pdEVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NvdXBvbkNvZGVFeHBpcmVkRXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnSW5lbGlnaWJsZVNoaXBwaW5nTWV0aG9kRXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ291cG9uQ29kZUludmFsaWRFcnJvcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IobW9kaWZ5T3JkZXIubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlIGFzIGNvbnN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbnVsbDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSBhcyBjb25zdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydE5ldmVyKG1vZGlmeU9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQucmVzdWx0ID09PSBPcmRlckVkaXRSZXN1bHRUeXBlLkNhbmNlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmUtZmV0Y2ggc28gdGhhdCB0aGUgcHJldmlldyB2YWx1ZXMgZ2V0IG92ZXJ3cml0dGVuIGluIHRoZSBjYWNoZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLmdldE9yZGVyKHRoaXMuaWQpLm1hcFNpbmdsZSgoKSA9PiBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEbyB0aGUgbW9kaWZpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZXRSdW5JbnB1dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcnlSdW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVzdWx0ID09PSBPcmRlckVkaXRSZXN1bHRUeXBlLlJlZnVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdldFJ1bklucHV0LnJlZnVuZHMgPSByZXN1bHQucmVmdW5kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyLm1vZGlmeU9yZGVyKHdldFJ1bklucHV0KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBtb2RpZnlPcmRlciB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZnlPcmRlci5fX3R5cGVuYW1lID09PSAnT3JkZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmljZURlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnlPcmRlci50b3RhbFdpdGhUYXggLSB0aGlzLm9yZGVyU25hcHNob3QudG90YWxXaXRoVGF4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIDwgcHJpY2VEZWx0YSA/ICdBcnJhbmdpbmdBZGRpdGlvbmFsUGF5bWVudCcgOiB0aGlzLnByZXZpb3VzU3RhdGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zaXRpb25Ub1N0YXRlKG9yZGVyLmlkLCBuZXh0U3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwVG8odHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKChtb2RpZnlPcmRlciBhcyBFcnJvclJlc3VsdCkubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEFkZHJlc3NDdXN0b21GaWVsZHNGb3JtR3JvdXAoXG4gICAgICAgIHBhcmVudEZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICAgICAgYWRkcmVzcz86IE9yZGVyQWRkcmVzc0ZyYWdtZW50IHwgbnVsbCxcbiAgICApIHtcbiAgICAgICAgaWYgKGFkZHJlc3MgJiYgdGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgYWRkcmVzc0N1c3RvbUZpZWxkc0Zvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY3VzdG9tRmllbGREZWYgb2YgdGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGN1c3RvbUZpZWxkRGVmLm5hbWU7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAoYWRkcmVzcyBhcyBhbnkpLmN1c3RvbUZpZWxkcz8uW25hbWVdO1xuICAgICAgICAgICAgICAgIGFkZHJlc3NDdXN0b21GaWVsZHNGb3JtR3JvdXAuYWRkQ29udHJvbChuYW1lLCBuZXcgVW50eXBlZEZvcm1Db250cm9sKHZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnRGb3JtR3JvdXAuYWRkQ29udHJvbCgnY3VzdG9tRmllbGRzJywgYWRkcmVzc0N1c3RvbUZpZWxkc0Zvcm1Hcm91cCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU9yZGVyU25hcHNob3Qob3JkZXI6IE9yZGVyRGV0YWlsRnJhZ21lbnQpOiBPcmRlclNuYXBzaG90IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvdGFsV2l0aFRheDogb3JkZXIudG90YWxXaXRoVGF4LFxuICAgICAgICAgICAgY3VycmVuY3lDb2RlOiBvcmRlci5jdXJyZW5jeUNvZGUsXG4gICAgICAgICAgICBjb3Vwb25Db2Rlczogb3JkZXIuY291cG9uQ29kZXMsXG4gICAgICAgICAgICBsaW5lczogWy4uLm9yZGVyLmxpbmVzXS5tYXAobGluZSA9PiAoeyAuLi5saW5lIH0pKSxcbiAgICAgICAgICAgIHNoaXBwaW5nTGluZXM6IFsuLi5vcmRlci5zaGlwcGluZ0xpbmVzXS5tYXAobGluZSA9PiAoeyAuLi5saW5lIH0pKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IE9yZGVyRGV0YWlsRnJhZ21lbnQsIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKTogdm9pZCB7XG4gICAgICAgIC8qIG5vdCB1c2VkICovXG4gICAgfVxufVxuIiwiPHZkci1wYWdlLWJsb2NrPlxuICAgIDx2ZHItYWN0aW9uLWJhciAqbmdJZj1cImVudGl0eSQgfCBhc3luYyBhcyBvcmRlclwiPlxuICAgICAgICA8dmRyLWFiLWxlZnQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBjbHItYWxpZ24taXRlbXMtY2VudGVyXCI+PC9kaXY+XG4gICAgICAgIDwvdmRyLWFiLWxlZnQ+XG5cbiAgICAgICAgPHZkci1hYi1yaWdodD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJ0cmFuc2l0aW9uVG9QcmlvclN0YXRlKG9yZGVyKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdvcmRlci5jYW5jZWwtbW9kaWZpY2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdmRyLWFiLXJpZ2h0PlxuICAgIDwvdmRyLWFjdGlvbi1iYXI+XG48L3Zkci1wYWdlLWJsb2NrPlxuXG48dmRyLXBhZ2UtZGV0YWlsLWxheW91dCAqbmdJZj1cImVudGl0eSBhcyBvcmRlclwiPlxuICAgIDx2ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIubW9kaWZpY2F0aW9uLXN1bW1hcnknIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8dmRyLW9yZGVyLW1vZGlmaWNhdGlvbi1zdW1tYXJ5XG4gICAgICAgICAgICAgICAgW29yZGVyU25hcHNob3RdPVwib3JkZXJTbmFwc2hvdFwiXG4gICAgICAgICAgICAgICAgW21vZGlmeU9yZGVySW5wdXRdPVwibW9kaWZ5T3JkZXJJbnB1dFwiXG4gICAgICAgICAgICAgICAgW2FkZGVkTGluZXNdPVwiYWRkZWRMaW5lc1wiXG4gICAgICAgICAgICAgICAgW3NoaXBwaW5nQWRkcmVzc0Zvcm1dPVwic2hpcHBpbmdBZGRyZXNzRm9ybVwiXG4gICAgICAgICAgICAgICAgW2JpbGxpbmdBZGRyZXNzRm9ybV09XCJiaWxsaW5nQWRkcmVzc0Zvcm1cIlxuICAgICAgICAgICAgICAgIFtjb3Vwb25Db2Rlc0NvbnRyb2xdPVwiY291cG9uQ29kZXNDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbdXBkYXRlZFNoaXBwaW5nTWV0aG9kc109XCJ1cGRhdGVkU2hpcHBpbmdNZXRob2RzXCJcbiAgICAgICAgICAgID48L3Zkci1vcmRlci1tb2RpZmljYXRpb24tc3VtbWFyeT5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFoYXNNb2RpZmljYXRpb25zKClcIiBjbGFzcz1cIm5vLW1vZGlmaWNhdGlvbnNcIj5cbiAgICAgICAgICAgICAgICB7eyAnb3JkZXIubm8tbW9kaWZpY2F0aW9ucy1tYWRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LWNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInb3JkZXIubm90ZScgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5vdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5vdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzTW9kaWZpY2F0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlY2FsY3VsYXRlU2hpcHBpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNNb2RpZmljYXRpb25zKClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMVwiPnt7ICdvcmRlci5tb2RpZmljYXRpb24tcmVjYWxjdWxhdGUtc2hpcHBpbmcnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG10LTJcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc01vZGlmaWNhdGlvbnMoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aWV3QW5kTW9kaWZ5KG9yZGVyKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnb3JkZXIucHJldmlldy1jaGFuZ2VzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdmRyLWNhcmQ+XG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ29yZGVyLnNldC1jb3Vwb24tY29kZXMnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8dmRyLWNvdXBvbi1jb2RlLXNlbGVjdG9yIFtjb250cm9sXT1cImNvdXBvbkNvZGVzQ29udHJvbFwiPjwvdmRyLWNvdXBvbi1jb2RlLXNlbGVjdG9yPlxuICAgICAgICA8L3Zkci1jYXJkPlxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5zaGlwcGluZy1hZGRyZXNzJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkckNhcmRDb250cm9scz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidvcmRlci5lZGl0LXNoaXBwaW5nLWFkZHJlc3MnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRpbmdTaGlwcGluZ0FkZHJlc3MgPSAhZWRpdGluZ1NoaXBwaW5nQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJlZGl0XCI+PC9jbHItaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8dmRyLWZvcm1hdHRlZC1hZGRyZXNzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZWRpdGluZ1NoaXBwaW5nQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW2FkZHJlc3NdPVwic2hpcHBpbmdBZGRyZXNzRm9ybS52YWx1ZVwiXG4gICAgICAgICAgICA+PC92ZHItZm9ybWF0dGVkLWFkZHJlc3M+XG4gICAgICAgICAgICA8dmRyLWFkZHJlc3MtZm9ybVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWRpdGluZ1NoaXBwaW5nQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJzaGlwcGluZ0FkZHJlc3NGb3JtXCJcbiAgICAgICAgICAgICAgICBbYXZhaWxhYmxlQ291bnRyaWVzXT1cImF2YWlsYWJsZUNvdW50cmllcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc109XCJhZGRyZXNzQ3VzdG9tRmllbGRzXCJcbiAgICAgICAgICAgID48L3Zkci1hZGRyZXNzLWZvcm0+XG4gICAgICAgIDwvdmRyLWNhcmQ+XG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ29yZGVyLmJpbGxpbmctYWRkcmVzcycgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZHJDYXJkQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1zbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInb3JkZXIuZWRpdC1iaWxsaW5nLWFkZHJlc3MnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRpbmdCaWxsaW5nQWRkcmVzcyA9ICFlZGl0aW5nQmlsbGluZ0FkZHJlc3NcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWRpdFwiPjwvY2xyLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPHZkci1mb3JtYXR0ZWQtYWRkcmVzc1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRpbmdCaWxsaW5nQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW2FkZHJlc3NdPVwiYmlsbGluZ0FkZHJlc3NGb3JtLnZhbHVlXCJcbiAgICAgICAgICAgID48L3Zkci1mb3JtYXR0ZWQtYWRkcmVzcz5cbiAgICAgICAgICAgIDx2ZHItYWRkcmVzcy1mb3JtXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0aW5nQmlsbGluZ0FkZHJlc3NcIlxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiYmlsbGluZ0FkZHJlc3NGb3JtXCJcbiAgICAgICAgICAgICAgICBbYXZhaWxhYmxlQ291bnRyaWVzXT1cImF2YWlsYWJsZUNvdW50cmllcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc109XCJhZGRyZXNzQ3VzdG9tRmllbGRzXCJcbiAgICAgICAgICAgID48L3Zkci1hZGRyZXNzLWZvcm0+XG4gICAgICAgIDwvdmRyLWNhcmQ+XG4gICAgPC92ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cblxuICAgIDx2ZHItcGFnZS1ibG9jaz5cbiAgICAgICAgPHZkci1jYXJkIFtwYWRkaW5nWF09XCJmYWxzZVwiPlxuICAgICAgICAgICAgPHZkci1kYXRhLXRhYmxlLTIgaWQ9XCJtb2RpZnktb3JkZXJcIiBjbGFzcz1cIm9yZGVyLXRhYmxlXCIgW2l0ZW1zXT1cIm9yZGVyLmxpbmVzLmNvbmNhdChhZGRlZExpbmVzKVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gSGVyZSB3ZSBkZWZpbmUgYWxsIHRoZSBhdmFpbGFibGUgY29sdW1ucyAtLT5cbiAgICAgICAgICAgICAgICA8dmRyLWR0Mi1jb2x1bW4gaWQ9XCJpZFwiIFtoZWFkaW5nXT1cIidjb21tb24uaWQnIHwgdHJhbnNsYXRlXCIgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUuaWQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtblxuICAgICAgICAgICAgICAgICAgICBpZD1cImNyZWF0ZWQtYXRcIlxuICAgICAgICAgICAgICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLmNyZWF0ZWQtYXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUuY3JlYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtblxuICAgICAgICAgICAgICAgICAgICBpZD1cInVwZGF0ZWQtYXRcIlxuICAgICAgICAgICAgICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLnVwZGF0ZWQtYXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUudXBkYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLmltYWdlJyB8IHRyYW5zbGF0ZVwiIGlkPVwiaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1saW5lPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxpbmUuZmVhdHVyZWRBc3NldCBhcyBhc3NldDsgZWxzZSBpbWFnZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhc3NldCB8IGFzc2V0UHJldmlldyA6ICd0aW55J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ltYWdlUGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiaW1hZ2VcIiBzaXplPVwiNDhcIj48L2Nsci1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8dmRyLWR0Mi1jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJwcm9kdWN0LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbaGVhZGluZ109XCInb3JkZXIucHJvZHVjdC1uYW1lJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25hbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLnByb2R1Y3RWYXJpYW50Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtbiBpZD1cInByb2R1Y3Qtc2t1XCIgW2hlYWRpbmddPVwiJ29yZGVyLnByb2R1Y3Qtc2t1JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLnByb2R1Y3RWYXJpYW50LnNrdSB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uIGlkPVwidW5pdC1wcmljZVwiIFtoZWFkaW5nXT1cIidvcmRlci51bml0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGxpbmUudW5pdFByaWNlV2l0aFRheCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldC1wcmljZVwiIFt0aXRsZV09XCInb3JkZXIubmV0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLnVuaXRQcmljZSB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtbiBpZD1cInF1YW50aXR5XCIgW2hlYWRpbmddPVwiJ29yZGVyLnF1YW50aXR5JyB8IHRyYW5zbGF0ZVwiIFtvcHRpb25hbF09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWZ0LXF0eSBtci0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0SW5pdGlhbExpbmVRdWFudGl0eShsaW5lLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZUxpbmVRdWFudGl0eShsaW5lLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQWRkZWRMaW5lKGxpbmUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQWRkZWRJdGVtKGxpbmUuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ0cmFzaFwiPjwvY2xyLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItbGluZS1yZWZ1bmRzIFtsaW5lXT1cImxpbmVcIiBbcGF5bWVudHNdPVwib3JkZXIucGF5bWVudHNcIj48L3Zkci1saW5lLXJlZnVuZHM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWxpbmUtZnVsZmlsbG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGluZV09XCJsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsT3JkZXJGdWxmaWxsbWVudHNdPVwib3JkZXIuZnVsZmlsbG1lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JkZXJTdGF0ZV09XCJvcmRlci5zdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItbGluZS1mdWxmaWxsbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3VzdG9tRmllbGQgb2Ygb3JkZXJMaW5lQ3VzdG9tRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImN1c3RvbUZpZWxkLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbaGVhZGluZ109XCJjdXN0b21GaWVsZCB8IGN1c3RvbUZpZWxkTGFiZWwgOiAodWlMYW5ndWFnZSQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1saW5lPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1c3RvbS1maWVsZC1jb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VudGl0eU5hbWVdPVwiJ09yZGVyTGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZF09XCJjdXN0b21GaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc0Zvcm1Hcm91cF09XCJvcmRlckxpbmVDdXN0b21GaWVsZHNGb3JtQXJyYXkuYXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICAgICAgICAgIDwvdmRyLWRhdGEtdGFibGUtMj5cbiAgICAgICAgPC92ZHItY2FyZD5cbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIuYWRkLWl0ZW0tdG8tb3JkZXInIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8dmRyLXByb2R1Y3QtdmFyaWFudC1zZWxlY3RvciBjbGFzcz1cIm1iLTRcIiAocHJvZHVjdFNlbGVjdGVkKT1cImFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQgPSAkZXZlbnRcIj5cbiAgICAgICAgICAgIDwvdmRyLXByb2R1Y3QtdmFyaWFudC1zZWxlY3Rvcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFkZEl0ZW1TZWxlY3RlZFZhcmlhbnRcIiBjbGFzcz1cImZsZXggbWItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWRkSXRlbVNlbGVjdGVkVmFyaWFudC5wcm9kdWN0QXNzZXQgYXMgYXNzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYXNzZXQgfCBhc3NldFByZXZpZXcgOiAndGlueSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItNCBhZGQtaXRlbS10aHVtYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwibXItNFwiPnt7IGFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQucHJvZHVjdFZhcmlhbnROYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQuc2t1IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2VsZWN0ZWRJdGVtUHJpY2UoYWRkSXRlbVNlbGVjdGVkVmFyaWFudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIiAqbmdJZj1cImFkZEl0ZW1TZWxlY3RlZFZhcmlhbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGN1c3RvbUZpZWxkIG9mIG9yZGVyTGluZUN1c3RvbUZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY3VzdG9tLWZpZWxkLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiFhZGRJdGVtU2VsZWN0ZWRWYXJpYW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkXT1cImN1c3RvbUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc0Zvcm1Hcm91cF09XCJhZGRJdGVtQ3VzdG9tRmllbGRzRm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU9XCJPcmRlckxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItY3VzdG9tLWZpZWxkLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc3BhY2VyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhZGRJdGVtU2VsZWN0ZWRWYXJpYW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhZGRJdGVtU2VsZWN0ZWRWYXJpYW50IHx8IGFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEl0ZW1Ub09yZGVyKGFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ29yZGVyLmFkZC1pdGVtLXRvLW9yZGVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Zkci1jYXJkPlxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5zaGlwcGluZycgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNoaXBwaW5nTGluZSBvZiBvcmRlci5zaGlwcGluZ0xpbmVzXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRTaGlwcGluZ0xpbmVEZXRhaWxzKHNoaXBwaW5nTGluZSkgYXMgZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGRldGFpbHMubmFtZSB9fTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRldGFpbHMucHJpY2UgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1zbWFsbFwiIChjbGljayk9XCJzZXRTaGlwcGluZ01ldGhvZChzaGlwcGluZ0xpbmUuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnb3JkZXIuc2V0LXNoaXBwaW5nLW1ldGhvZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92ZHItY2FyZD5cbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIuYWRkLXN1cmNoYXJnZScgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic3VyY2hhcmdlRm9ybVwiIChzdWJtaXQpPVwiYWRkU3VyY2hhcmdlKHN1cmNoYXJnZUZvcm0udmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjb21tb24uZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCIgZm9yPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxpbnB1dCBpZD1cImRlc2NyaXB0aW9uXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIC8+PC92ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInb3JkZXIucHJvZHVjdC1za3UnIHwgdHJhbnNsYXRlXCIgZm9yPVwic2t1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48aW5wdXQgaWQ9XCJza3VcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInNrdVwiXG4gICAgICAgICAgICAgICAgICAgIC8+PC92ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY29tbW9uLnByaWNlJyB8IHRyYW5zbGF0ZVwiIGZvcj1cInByaWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1cnJlbmN5LWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5Q29kZV09XCJvcmRlci5jdXJyZW5jeUNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1jdXJyZW5jeS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhdGFsb2cucHJpY2UtaW5jbHVkZXMtdGF4LWF0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZSA6IHsgcmF0ZTogc3VyY2hhcmdlRm9ybS5nZXQoJ3RheFJhdGUnKT8udmFsdWUgPz8gMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicHJpY2VJbmNsdWRlc1RheFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwcmljZUluY2x1ZGVzVGF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsckNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2VJbmNsdWRlc1RheFwiXG4gICAgICAgICAgICAgICAgICAgIC8+PC92ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInb3JkZXIudGF4LXJhdGUnIHwgdHJhbnNsYXRlXCIgZm9yPVwidGF4UmF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1hZmZpeGVkLWlucHV0IHN1ZmZpeD1cIiVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aW5wdXQgaWQ9XCJ0YXhSYXRlXCIgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiBtYXg9XCIxMDBcIiBmb3JtQ29udHJvbE5hbWU9XCJ0YXhSYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+PC92ZHItYWZmaXhlZC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInb3JkZXIudGF4LWRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiIGZvcj1cInRheERlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48aW5wdXQgaWQ9XCJ0YXhEZXNjcmlwdGlvblwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGF4RGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAvPjwvdmRyLWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IG10LTJcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXJjaGFyZ2VGb3JtLmludmFsaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cmNoYXJnZUZvcm0ucHJpc3RpbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cmNoYXJnZUZvcm0uZ2V0KCdwcmljZScpPy52YWx1ZSA9PT0gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIXN1cmNoYXJnZUZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgJ29yZGVyLmFkZC1zdXJjaGFyZ2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvdmRyLWNhcmQ+XG4gICAgPC92ZHItcGFnZS1ibG9jaz5cbjwvdmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cbiJdfQ==