@vendure/admin-ui 2.2.0 → 2.2.1

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 (1184) hide show
  1. package/.eslintrc.json +96 -0
  2. package/README.md +50 -0
  3. package/angular.json +186 -0
  4. package/i18n-coverage.json +106 -0
  5. package/package/core/common/version.d.ts +1 -0
  6. package/{core → package/core}/shared/components/ui-extension-point/ui-extension-point.component.d.ts +2 -2
  7. package/{esm2022 → package/esm2022}/core/common/version.mjs +2 -2
  8. package/{esm2022 → package/esm2022}/core/shared/components/data-table-filters/data-table-filters.component.mjs +3 -2
  9. package/package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +158 -0
  10. package/{esm2022 → package/esm2022}/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +10 -4
  11. package/package/esm2022/customer/customer.routes.mjs +50 -0
  12. package/{esm2022 → package/esm2022}/order/components/order-editor/order-editor.component.mjs +6 -4
  13. package/{fesm2022 → package/fesm2022}/vendure-admin-ui-core.mjs +17 -7
  14. package/{fesm2022 → package/fesm2022}/vendure-admin-ui-core.mjs.map +1 -1
  15. package/{fesm2022 → package/fesm2022}/vendure-admin-ui-customer.mjs +1 -0
  16. package/{fesm2022 → package/fesm2022}/vendure-admin-ui-customer.mjs.map +1 -1
  17. package/{fesm2022 → package/fesm2022}/vendure-admin-ui-order.mjs +5 -3
  18. package/{fesm2022 → package/fesm2022}/vendure-admin-ui-order.mjs.map +1 -1
  19. package/package.json +117 -129
  20. package/tsconfig.json +66 -0
  21. package/tsconfig.lib.json +25 -0
  22. package/tsconfig.lib.prod.json +14 -0
  23. package/LICENSE +0 -9
  24. package/core/common/version.d.ts +0 -1
  25. package/esm2022/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +0 -155
  26. package/esm2022/customer/customer.routes.mjs +0 -49
  27. /package/{catalog → package/catalog}/catalog.module.d.ts +0 -0
  28. /package/{catalog → package/catalog}/catalog.routes.d.ts +0 -0
  29. /package/{catalog → package/catalog}/components/apply-facet-dialog/apply-facet-dialog.component.d.ts +0 -0
  30. /package/{catalog → package/catalog}/components/asset-detail/asset-detail.component.d.ts +0 -0
  31. /package/{catalog → package/catalog}/components/asset-list/asset-list.component.d.ts +0 -0
  32. /package/{catalog → package/catalog}/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.d.ts +0 -0
  33. /package/{catalog → package/catalog}/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.d.ts +0 -0
  34. /package/{catalog → package/catalog}/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.d.ts +0 -0
  35. /package/{catalog → package/catalog}/components/collection-contents/collection-contents.component.d.ts +0 -0
  36. /package/{catalog → package/catalog}/components/collection-data-table/collection-data-table.component.d.ts +0 -0
  37. /package/{catalog → package/catalog}/components/collection-detail/collection-detail.component.d.ts +0 -0
  38. /package/{catalog → package/catalog}/components/collection-list/collection-breadcrumb.pipe.d.ts +0 -0
  39. /package/{catalog → package/catalog}/components/collection-list/collection-list-bulk-actions.d.ts +0 -0
  40. /package/{catalog → package/catalog}/components/collection-list/collection-list.component.d.ts +0 -0
  41. /package/{catalog → package/catalog}/components/collection-tree/array-to-tree.d.ts +0 -0
  42. /package/{catalog → package/catalog}/components/collection-tree/collection-tree-node.component.d.ts +0 -0
  43. /package/{catalog → package/catalog}/components/collection-tree/collection-tree.component.d.ts +0 -0
  44. /package/{catalog → package/catalog}/components/collection-tree/collection-tree.service.d.ts +0 -0
  45. /package/{catalog → package/catalog}/components/collection-tree/collection-tree.types.d.ts +0 -0
  46. /package/{catalog → package/catalog}/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.d.ts +0 -0
  47. /package/{catalog → package/catalog}/components/create-facet-value-dialog/create-facet-value-dialog.component.d.ts +0 -0
  48. /package/{catalog → package/catalog}/components/create-product-option-group-dialog/create-product-option-group-dialog.component.d.ts +0 -0
  49. /package/{catalog → package/catalog}/components/create-product-variant-dialog/create-product-variant-dialog.component.d.ts +0 -0
  50. /package/{catalog → package/catalog}/components/facet-detail/facet-detail.component.d.ts +0 -0
  51. /package/{catalog → package/catalog}/components/facet-list/facet-list-bulk-actions.d.ts +0 -0
  52. /package/{catalog → package/catalog}/components/facet-list/facet-list.component.d.ts +0 -0
  53. /package/{catalog → package/catalog}/components/generate-product-variants/generate-product-variants.component.d.ts +0 -0
  54. /package/{catalog → package/catalog}/components/move-collections-dialog/move-collections-dialog.component.d.ts +0 -0
  55. /package/{catalog → package/catalog}/components/option-value-input/option-value-input.component.d.ts +0 -0
  56. /package/{catalog → package/catalog}/components/product-detail/product-detail.component.d.ts +0 -0
  57. /package/{catalog → package/catalog}/components/product-list/product-list-bulk-actions.d.ts +0 -0
  58. /package/{catalog → package/catalog}/components/product-list/product-list.component.d.ts +0 -0
  59. /package/{catalog → package/catalog}/components/product-list/product-list.graphql.d.ts +0 -0
  60. /package/{catalog → package/catalog}/components/product-options-editor/product-options-editor.component.d.ts +0 -0
  61. /package/{catalog → package/catalog}/components/product-variant-detail/product-variant-detail.component.d.ts +0 -0
  62. /package/{catalog → package/catalog}/components/product-variant-detail/product-variant-detail.graphql.d.ts +0 -0
  63. /package/{catalog → package/catalog}/components/product-variant-list/product-variant-list-bulk-actions.d.ts +0 -0
  64. /package/{catalog → package/catalog}/components/product-variant-list/product-variant-list.component.d.ts +0 -0
  65. /package/{catalog → package/catalog}/components/product-variant-list/product-variant-list.graphql.d.ts +0 -0
  66. /package/{catalog → package/catalog}/components/product-variant-quick-jump/product-variant-quick-jump.component.d.ts +0 -0
  67. /package/{catalog → package/catalog}/components/product-variants-editor/product-variants-editor.component.d.ts +0 -0
  68. /package/{catalog → package/catalog}/components/product-variants-table/product-variants-table.component.d.ts +0 -0
  69. /package/{catalog → package/catalog}/components/update-product-option-dialog/update-product-option-dialog.component.d.ts +0 -0
  70. /package/{catalog → package/catalog}/components/variant-price-detail/variant-price-detail.component.d.ts +0 -0
  71. /package/{catalog → package/catalog}/components/variant-price-strategy-detail/variant-price-strategy-detail.component.d.ts +0 -0
  72. /package/{catalog → package/catalog}/index.d.ts +0 -0
  73. /package/{catalog → package/catalog}/providers/product-detail/product-detail.service.d.ts +0 -0
  74. /package/{catalog → package/catalog}/providers/product-detail/replace-last.d.ts +0 -0
  75. /package/{catalog → package/catalog}/providers/routing/product-variants-resolver.d.ts +0 -0
  76. /package/{catalog → package/catalog}/public_api.d.ts +0 -0
  77. /package/{core → package/core}/app.component.d.ts +0 -0
  78. /package/{core → package/core}/app.component.module.d.ts +0 -0
  79. /package/{core → package/core}/app.config.d.ts +0 -0
  80. /package/{core → package/core}/common/base-detail.component.d.ts +0 -0
  81. /package/{core → package/core}/common/base-entity-resolver.d.ts +0 -0
  82. /package/{core → package/core}/common/base-list.component.d.ts +0 -0
  83. /package/{core → package/core}/common/component-registry-types.d.ts +0 -0
  84. /package/{core → package/core}/common/deactivate-aware.d.ts +0 -0
  85. /package/{core → package/core}/common/detail-breadcrumb.d.ts +0 -0
  86. /package/{core → package/core}/common/generated-types.d.ts +0 -0
  87. /package/{core → package/core}/common/introspection-result-wrapper.d.ts +0 -0
  88. /package/{core → package/core}/common/introspection-result.d.ts +0 -0
  89. /package/{core → package/core}/common/single-search-selection-model.d.ts +0 -0
  90. /package/{core → package/core}/common/title-setter.d.ts +0 -0
  91. /package/{core → package/core}/common/utilities/bulk-action-utils.d.ts +0 -0
  92. /package/{core → package/core}/common/utilities/configurable-operation-utils.d.ts +0 -0
  93. /package/{core → package/core}/common/utilities/create-updated-translatable.d.ts +0 -0
  94. /package/{core → package/core}/common/utilities/custom-field-default-value.d.ts +0 -0
  95. /package/{core → package/core}/common/utilities/find-translation.d.ts +0 -0
  96. /package/{core → package/core}/common/utilities/get-default-ui-language.d.ts +0 -0
  97. /package/{core → package/core}/common/utilities/interpolate-description.d.ts +0 -0
  98. /package/{core → package/core}/common/utilities/selection-manager.d.ts +0 -0
  99. /package/{core → package/core}/common/utilities/string-to-color.d.ts +0 -0
  100. /package/{core → package/core}/components/alerts/alerts.component.d.ts +0 -0
  101. /package/{core → package/core}/components/app-shell/app-shell.component.d.ts +0 -0
  102. /package/{core → package/core}/components/base-nav/base-nav.component.d.ts +0 -0
  103. /package/{core → package/core}/components/breadcrumb/breadcrumb.component.d.ts +0 -0
  104. /package/{core → package/core}/components/channel-switcher/channel-switcher.component.d.ts +0 -0
  105. /package/{core → package/core}/components/main-nav/main-nav.component.d.ts +0 -0
  106. /package/{core → package/core}/components/notification/notification.component.d.ts +0 -0
  107. /package/{core → package/core}/components/overlay-host/overlay-host.component.d.ts +0 -0
  108. /package/{core → package/core}/components/settings-nav/settings-nav.component.d.ts +0 -0
  109. /package/{core → package/core}/components/theme-switcher/theme-switcher.component.d.ts +0 -0
  110. /package/{core → package/core}/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.d.ts +0 -0
  111. /package/{core → package/core}/components/user-menu/user-menu.component.d.ts +0 -0
  112. /package/{core → package/core}/core.module.d.ts +0 -0
  113. /package/{core → package/core}/data/check-jobs-link.d.ts +0 -0
  114. /package/{core → package/core}/data/client-state/client-defaults.d.ts +0 -0
  115. /package/{core → package/core}/data/client-state/client-resolvers.d.ts +0 -0
  116. /package/{core → package/core}/data/data.module.d.ts +0 -0
  117. /package/{core → package/core}/data/definitions/administrator-definitions.d.ts +0 -0
  118. /package/{core → package/core}/data/definitions/auth-definitions.d.ts +0 -0
  119. /package/{core → package/core}/data/definitions/client-definitions.d.ts +0 -0
  120. /package/{core → package/core}/data/definitions/collection-definitions.d.ts +0 -0
  121. /package/{core → package/core}/data/definitions/customer-definitions.d.ts +0 -0
  122. /package/{core → package/core}/data/definitions/facet-definitions.d.ts +0 -0
  123. /package/{core → package/core}/data/definitions/order-definitions.d.ts +0 -0
  124. /package/{core → package/core}/data/definitions/product-definitions.d.ts +0 -0
  125. /package/{core → package/core}/data/definitions/promotion-definitions.d.ts +0 -0
  126. /package/{core → package/core}/data/definitions/settings-definitions.d.ts +0 -0
  127. /package/{core → package/core}/data/definitions/shared-definitions.d.ts +0 -0
  128. /package/{core → package/core}/data/definitions/shipping-definitions.d.ts +0 -0
  129. /package/{core → package/core}/data/omit-typename-link.d.ts +0 -0
  130. /package/{core → package/core}/data/providers/administrator-data.service.d.ts +0 -0
  131. /package/{core → package/core}/data/providers/auth-data.service.d.ts +0 -0
  132. /package/{core → package/core}/data/providers/base-data.service.d.ts +0 -0
  133. /package/{core → package/core}/data/providers/client-data.service.d.ts +0 -0
  134. /package/{core → package/core}/data/providers/collection-data.service.d.ts +0 -0
  135. /package/{core → package/core}/data/providers/customer-data.service.d.ts +0 -0
  136. /package/{core → package/core}/data/providers/data.service.d.ts +0 -0
  137. /package/{core → package/core}/data/providers/facet-data.service.d.ts +0 -0
  138. /package/{core → package/core}/data/providers/fetch-adapter.d.ts +0 -0
  139. /package/{core → package/core}/data/providers/interceptor.d.ts +0 -0
  140. /package/{core → package/core}/data/providers/order-data.service.d.ts +0 -0
  141. /package/{core → package/core}/data/providers/product-data.service.d.ts +0 -0
  142. /package/{core → package/core}/data/providers/promotion-data.service.d.ts +0 -0
  143. /package/{core → package/core}/data/providers/settings-data.service.d.ts +0 -0
  144. /package/{core → package/core}/data/providers/shipping-method-data.service.d.ts +0 -0
  145. /package/{core → package/core}/data/query-result.d.ts +0 -0
  146. /package/{core → package/core}/data/server-config.d.ts +0 -0
  147. /package/{core → package/core}/data/utils/add-custom-fields.d.ts +0 -0
  148. /package/{core → package/core}/data/utils/get-server-location.d.ts +0 -0
  149. /package/{core → package/core}/data/utils/is-entity-create-or-update-mutation.d.ts +0 -0
  150. /package/{core → package/core}/data/utils/remove-readonly-custom-fields.d.ts +0 -0
  151. /package/{core → package/core}/data/utils/transform-relation-custom-field-inputs.d.ts +0 -0
  152. /package/{core → package/core}/extension/add-action-bar-dropdown-menu-item.d.ts +0 -0
  153. /package/{core → package/core}/extension/add-action-bar-item.d.ts +0 -0
  154. /package/{core → package/core}/extension/add-nav-menu-item.d.ts +0 -0
  155. /package/{core → package/core}/extension/components/angular-route.component.d.ts +0 -0
  156. /package/{core → package/core}/extension/components/route.component.d.ts +0 -0
  157. /package/{core → package/core}/extension/providers/page-metadata.service.d.ts +0 -0
  158. /package/{core → package/core}/extension/register-alert.d.ts +0 -0
  159. /package/{core → package/core}/extension/register-bulk-action.d.ts +0 -0
  160. /package/{core → package/core}/extension/register-custom-detail-component.d.ts +0 -0
  161. /package/{core → package/core}/extension/register-dashboard-widget.d.ts +0 -0
  162. /package/{core → package/core}/extension/register-data-table-component.d.ts +0 -0
  163. /package/{core → package/core}/extension/register-form-input-component.d.ts +0 -0
  164. /package/{core → package/core}/extension/register-history-entry-component.d.ts +0 -0
  165. /package/{core → package/core}/extension/register-page-tab.d.ts +0 -0
  166. /package/{core → package/core}/extension/register-route-component.d.ts +0 -0
  167. /package/{core → package/core}/extension/types.d.ts +0 -0
  168. /package/{core → package/core}/index.d.ts +0 -0
  169. /package/{core → package/core}/providers/alerts/alerts.service.d.ts +0 -0
  170. /package/{core → package/core}/providers/auth/auth.service.d.ts +0 -0
  171. /package/{core → package/core}/providers/breadcrumb/breadcrumb.service.d.ts +0 -0
  172. /package/{core → package/core}/providers/bulk-action-registry/bulk-action-registry.service.d.ts +0 -0
  173. /package/{core → package/core}/providers/bulk-action-registry/bulk-action-types.d.ts +0 -0
  174. /package/{core → package/core}/providers/channel/channel.service.d.ts +0 -0
  175. /package/{core → package/core}/providers/component-registry/component-registry.service.d.ts +0 -0
  176. /package/{core → package/core}/providers/currency/currency.service.d.ts +0 -0
  177. /package/{core → package/core}/providers/custom-detail-component/custom-detail-component-types.d.ts +0 -0
  178. /package/{core → package/core}/providers/custom-detail-component/custom-detail-component.service.d.ts +0 -0
  179. /package/{core → package/core}/providers/custom-field-component/custom-field-component.service.d.ts +0 -0
  180. /package/{core → package/core}/providers/custom-history-entry-component/history-entry-component-types.d.ts +0 -0
  181. /package/{core → package/core}/providers/custom-history-entry-component/history-entry-component.service.d.ts +0 -0
  182. /package/{core → package/core}/providers/dashboard-widget/dashboard-widget-types.d.ts +0 -0
  183. /package/{core → package/core}/providers/dashboard-widget/dashboard-widget.service.d.ts +0 -0
  184. /package/{core → package/core}/providers/data-table/data-table-filter-collection.d.ts +0 -0
  185. /package/{core → package/core}/providers/data-table/data-table-filter.d.ts +0 -0
  186. /package/{core → package/core}/providers/data-table/data-table-sort-collection.d.ts +0 -0
  187. /package/{core → package/core}/providers/data-table/data-table-sort.d.ts +0 -0
  188. /package/{core → package/core}/providers/guard/auth.guard.d.ts +0 -0
  189. /package/{core → package/core}/providers/health-check/health-check.service.d.ts +0 -0
  190. /package/{core → package/core}/providers/i18n/custom-http-loader.d.ts +0 -0
  191. /package/{core → package/core}/providers/i18n/custom-message-format-compiler.d.ts +0 -0
  192. /package/{core → package/core}/providers/i18n/i18n.service.d.ts +0 -0
  193. /package/{core → package/core}/providers/job-queue/job-queue.service.d.ts +0 -0
  194. /package/{core → package/core}/providers/local-storage/local-storage.service.d.ts +0 -0
  195. /package/{core → package/core}/providers/localization/localization.service.d.ts +0 -0
  196. /package/{core → package/core}/providers/modal/modal.service.d.ts +0 -0
  197. /package/{core → package/core}/providers/modal/modal.types.d.ts +0 -0
  198. /package/{core → package/core}/providers/nav-builder/nav-builder-types.d.ts +0 -0
  199. /package/{core → package/core}/providers/nav-builder/nav-builder.service.d.ts +0 -0
  200. /package/{core → package/core}/providers/notification/notification.service.d.ts +0 -0
  201. /package/{core → package/core}/providers/overlay-host/overlay-host.service.d.ts +0 -0
  202. /package/{core → package/core}/providers/page/page.service.d.ts +0 -0
  203. /package/{core → package/core}/providers/permissions/permissions.service.d.ts +0 -0
  204. /package/{core → package/core}/public_api.d.ts +0 -0
  205. /package/{core → package/core}/shared/components/action-bar/action-bar.component.d.ts +0 -0
  206. /package/{core → package/core}/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.d.ts +0 -0
  207. /package/{core → package/core}/shared/components/action-bar-items/action-bar-base.component.d.ts +0 -0
  208. /package/{core → package/core}/shared/components/action-bar-items/action-bar-items.component.d.ts +0 -0
  209. /package/{core → package/core}/shared/components/address-form/address-form.component.d.ts +0 -0
  210. /package/{core → package/core}/shared/components/affixed-input/affixed-input.component.d.ts +0 -0
  211. /package/{core → package/core}/shared/components/affixed-input/percentage-suffix-input.component.d.ts +0 -0
  212. /package/{core → package/core}/shared/components/asset-file-input/asset-file-input.component.d.ts +0 -0
  213. /package/{core → package/core}/shared/components/asset-gallery/asset-gallery.component.d.ts +0 -0
  214. /package/{core → package/core}/shared/components/asset-gallery/asset-gallery.types.d.ts +0 -0
  215. /package/{core → package/core}/shared/components/asset-picker-dialog/asset-picker-dialog.component.d.ts +0 -0
  216. /package/{core → package/core}/shared/components/asset-preview/asset-preview.component.d.ts +0 -0
  217. /package/{core → package/core}/shared/components/asset-preview-dialog/asset-preview-dialog.component.d.ts +0 -0
  218. /package/{core → package/core}/shared/components/asset-preview-links/asset-preview-links.component.d.ts +0 -0
  219. /package/{core → package/core}/shared/components/asset-search-input/asset-search-input.component.d.ts +0 -0
  220. /package/{core → package/core}/shared/components/assets/assets.component.d.ts +0 -0
  221. /package/{core → package/core}/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.d.ts +0 -0
  222. /package/{core → package/core}/shared/components/bulk-action-menu/bulk-action-menu.component.d.ts +0 -0
  223. /package/{core → package/core}/shared/components/card/card.component.d.ts +0 -0
  224. /package/{core → package/core}/shared/components/channel-assignment-control/channel-assignment-control.component.d.ts +0 -0
  225. /package/{core → package/core}/shared/components/channel-badge/channel-badge.component.d.ts +0 -0
  226. /package/{core → package/core}/shared/components/chart/chart.component.d.ts +0 -0
  227. /package/{core → package/core}/shared/components/chart/tooltip-plugin.d.ts +0 -0
  228. /package/{core → package/core}/shared/components/chip/chip.component.d.ts +0 -0
  229. /package/{core → package/core}/shared/components/configurable-input/configurable-input.component.d.ts +0 -0
  230. /package/{core → package/core}/shared/components/currency-code-selector/currency-code-selector.component.d.ts +0 -0
  231. /package/{core → package/core}/shared/components/currency-input/currency-input.component.d.ts +0 -0
  232. /package/{core → package/core}/shared/components/custom-detail-component-host/custom-detail-component-host.component.d.ts +0 -0
  233. /package/{core → package/core}/shared/components/custom-field-control/custom-field-control.component.d.ts +0 -0
  234. /package/{core → package/core}/shared/components/customer-label/customer-label.component.d.ts +0 -0
  235. /package/{core → package/core}/shared/components/data-table/data-table-column.component.d.ts +0 -0
  236. /package/{core → package/core}/shared/components/data-table/data-table.component.d.ts +0 -0
  237. /package/{core → package/core}/shared/components/data-table-2/data-table-column.component.d.ts +0 -0
  238. /package/{core → package/core}/shared/components/data-table-2/data-table-custom-component.service.d.ts +0 -0
  239. /package/{core → package/core}/shared/components/data-table-2/data-table-custom-field-column.component.d.ts +0 -0
  240. /package/{core → package/core}/shared/components/data-table-2/data-table-search.component.d.ts +0 -0
  241. /package/{core → package/core}/shared/components/data-table-2/data-table2.component.d.ts +0 -0
  242. /package/{core → package/core}/shared/components/data-table-column-picker/data-table-column-picker.component.d.ts +0 -0
  243. /package/{core → package/core}/shared/components/data-table-filter-label/data-table-filter-label.component.d.ts +0 -0
  244. /package/{core → package/core}/shared/components/data-table-filter-presets/add-filter-preset-button.component.d.ts +0 -0
  245. /package/{core → package/core}/shared/components/data-table-filter-presets/data-table-filter-presets.component.d.ts +0 -0
  246. /package/{core → package/core}/shared/components/data-table-filter-presets/filter-preset.service.d.ts +0 -0
  247. /package/{core → package/core}/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.d.ts +0 -0
  248. /package/{core → package/core}/shared/components/data-table-filters/custom-filter-component.directive.d.ts +0 -0
  249. /package/{core → package/core}/shared/components/data-table-filters/data-table-filters.component.d.ts +0 -0
  250. /package/{core → package/core}/shared/components/datetime-picker/constants.d.ts +0 -0
  251. /package/{core → package/core}/shared/components/datetime-picker/datetime-picker.component.d.ts +0 -0
  252. /package/{core → package/core}/shared/components/datetime-picker/datetime-picker.service.d.ts +0 -0
  253. /package/{core → package/core}/shared/components/datetime-picker/types.d.ts +0 -0
  254. /package/{core → package/core}/shared/components/dropdown/dropdown-item.directive.d.ts +0 -0
  255. /package/{core → package/core}/shared/components/dropdown/dropdown-menu.component.d.ts +0 -0
  256. /package/{core → package/core}/shared/components/dropdown/dropdown-trigger.directive.d.ts +0 -0
  257. /package/{core → package/core}/shared/components/dropdown/dropdown.component.d.ts +0 -0
  258. /package/{core → package/core}/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.d.ts +0 -0
  259. /package/{core → package/core}/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.graphql.d.ts +0 -0
  260. /package/{core → package/core}/shared/components/edit-note-dialog/edit-note-dialog.component.d.ts +0 -0
  261. /package/{core → package/core}/shared/components/empty-placeholder/empty-placeholder.component.d.ts +0 -0
  262. /package/{core → package/core}/shared/components/entity-info/entity-info.component.d.ts +0 -0
  263. /package/{core → package/core}/shared/components/extension-host/extension-host-config.d.ts +0 -0
  264. /package/{core → package/core}/shared/components/extension-host/extension-host.component.d.ts +0 -0
  265. /package/{core → package/core}/shared/components/extension-host/extension-host.service.d.ts +0 -0
  266. /package/{core → package/core}/shared/components/extension-host/host-external-frame.d.ts +0 -0
  267. /package/{core → package/core}/shared/components/facet-value-chip/facet-value-chip.component.d.ts +0 -0
  268. /package/{core → package/core}/shared/components/facet-value-selector/facet-value-selector.component.d.ts +0 -0
  269. /package/{core → package/core}/shared/components/focal-point-control/focal-point-control.component.d.ts +0 -0
  270. /package/{core → package/core}/shared/components/form-field/form-field-control.directive.d.ts +0 -0
  271. /package/{core → package/core}/shared/components/form-field/form-field.component.d.ts +0 -0
  272. /package/{core → package/core}/shared/components/form-item/form-item.component.d.ts +0 -0
  273. /package/{core → package/core}/shared/components/formatted-address/formatted-address.component.d.ts +0 -0
  274. /package/{core → package/core}/shared/components/help-tooltip/help-tooltip.component.d.ts +0 -0
  275. /package/{core → package/core}/shared/components/history-entry-detail/history-entry-detail.component.d.ts +0 -0
  276. /package/{core → package/core}/shared/components/items-per-page-controls/items-per-page-controls.component.d.ts +0 -0
  277. /package/{core → package/core}/shared/components/labeled-data/labeled-data.component.d.ts +0 -0
  278. /package/{core → package/core}/shared/components/language-code-selector/language-code-selector.component.d.ts +0 -0
  279. /package/{core → package/core}/shared/components/language-selector/language-selector.component.d.ts +0 -0
  280. /package/{core → package/core}/shared/components/localized-text/localized-text.component.d.ts +0 -0
  281. /package/{core → package/core}/shared/components/manage-tags-dialog/manage-tags-dialog.component.d.ts +0 -0
  282. /package/{core → package/core}/shared/components/modal-dialog/dialog-buttons.directive.d.ts +0 -0
  283. /package/{core → package/core}/shared/components/modal-dialog/dialog-component-outlet.component.d.ts +0 -0
  284. /package/{core → package/core}/shared/components/modal-dialog/dialog-title.directive.d.ts +0 -0
  285. /package/{core → package/core}/shared/components/modal-dialog/modal-dialog.component.d.ts +0 -0
  286. /package/{core → package/core}/shared/components/object-tree/object-tree.component.d.ts +0 -0
  287. /package/{core → package/core}/shared/components/order-state-label/order-state-label.component.d.ts +0 -0
  288. /package/{core → package/core}/shared/components/page/page.component.d.ts +0 -0
  289. /package/{core → package/core}/shared/components/page-block/page-block.component.d.ts +0 -0
  290. /package/{core → package/core}/shared/components/page-body/page-body.component.d.ts +0 -0
  291. /package/{core → package/core}/shared/components/page-detail-layout/page-detail-layout.component.d.ts +0 -0
  292. /package/{core → package/core}/shared/components/page-detail-layout/page-detail-sidebar.component.d.ts +0 -0
  293. /package/{core → package/core}/shared/components/page-entity-info/page-entity-info.component.d.ts +0 -0
  294. /package/{core → package/core}/shared/components/page-header/page-header.component.d.ts +0 -0
  295. /package/{core → package/core}/shared/components/page-header-description/page-header-description.component.d.ts +0 -0
  296. /package/{core → package/core}/shared/components/page-header-tabs/page-header-tabs.component.d.ts +0 -0
  297. /package/{core → package/core}/shared/components/page-title/page-title.component.d.ts +0 -0
  298. /package/{core → package/core}/shared/components/pagination-controls/pagination-controls.component.d.ts +0 -0
  299. /package/{core → package/core}/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.d.ts +0 -0
  300. /package/{core → package/core}/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.graphql.d.ts +0 -0
  301. /package/{core → package/core}/shared/components/product-search-input/product-search-input.component.d.ts +0 -0
  302. /package/{core → package/core}/shared/components/product-variant-selector/product-variant-selector.component.d.ts +0 -0
  303. /package/{core → package/core}/shared/components/radio-card/radio-card-fieldset.component.d.ts +0 -0
  304. /package/{core → package/core}/shared/components/radio-card/radio-card.component.d.ts +0 -0
  305. /package/{core → package/core}/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.d.ts +0 -0
  306. /package/{core → package/core}/shared/components/rich-text-editor/link-dialog/link-dialog.component.d.ts +0 -0
  307. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.d.ts +0 -0
  308. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.d.ts +0 -0
  309. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/custom-nodes.d.ts +0 -0
  310. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/inputrules.d.ts +0 -0
  311. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/keymap.d.ts +0 -0
  312. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/menu/links.d.ts +0 -0
  313. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/menu/menu-common.d.ts +0 -0
  314. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.d.ts +0 -0
  315. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/menu/menu.d.ts +0 -0
  316. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.d.ts +0 -0
  317. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.d.ts +0 -0
  318. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.d.ts +0 -0
  319. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.d.ts +0 -0
  320. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.d.ts +0 -0
  321. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +0 -0
  322. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/types.d.ts +0 -0
  323. /package/{core → package/core}/shared/components/rich-text-editor/prosemirror/utils.d.ts +0 -0
  324. /package/{core → package/core}/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.d.ts +0 -0
  325. /package/{core → package/core}/shared/components/rich-text-editor/rich-text-editor.component.d.ts +0 -0
  326. /package/{core → package/core}/shared/components/select-toggle/select-toggle.component.d.ts +0 -0
  327. /package/{core → package/core}/shared/components/simple-dialog/simple-dialog.component.d.ts +0 -0
  328. /package/{core → package/core}/shared/components/split-view/split-view.component.d.ts +0 -0
  329. /package/{core → package/core}/shared/components/split-view/split-view.directive.d.ts +0 -0
  330. /package/{core → package/core}/shared/components/status-badge/status-badge.component.d.ts +0 -0
  331. /package/{core → package/core}/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.d.ts +0 -0
  332. /package/{core → package/core}/shared/components/table-row-action/table-row-action.component.d.ts +0 -0
  333. /package/{core → package/core}/shared/components/tag-selector/tag-selector.component.d.ts +0 -0
  334. /package/{core → package/core}/shared/components/timeline-entry/timeline-entry.component.d.ts +0 -0
  335. /package/{core → package/core}/shared/components/title-input/title-input.component.d.ts +0 -0
  336. /package/{core → package/core}/shared/components/zone-selector/zone-selector.component.d.ts +0 -0
  337. /package/{core → package/core}/shared/directives/disabled.directive.d.ts +0 -0
  338. /package/{core → package/core}/shared/directives/if-default-channel-active.directive.d.ts +0 -0
  339. /package/{core → package/core}/shared/directives/if-directive-base.d.ts +0 -0
  340. /package/{core → package/core}/shared/directives/if-multichannel.directive.d.ts +0 -0
  341. /package/{core → package/core}/shared/directives/if-permissions.directive.d.ts +0 -0
  342. /package/{core → package/core}/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.d.ts +0 -0
  343. /package/{core → package/core}/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.d.ts +0 -0
  344. /package/{core → package/core}/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.d.ts +0 -0
  345. /package/{core → package/core}/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +0 -0
  346. /package/{core → package/core}/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.d.ts +0 -0
  347. /package/{core → package/core}/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.d.ts +0 -0
  348. /package/{core → package/core}/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.d.ts +0 -0
  349. /package/{core → package/core}/shared/dynamic-form-inputs/date-form-input/date-form-input.component.d.ts +0 -0
  350. /package/{core → package/core}/shared/dynamic-form-inputs/default-form-inputs.d.ts +0 -0
  351. /package/{core → package/core}/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.d.ts +0 -0
  352. /package/{core → package/core}/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +0 -0
  353. /package/{core → package/core}/shared/dynamic-form-inputs/number-form-input/number-form-input.component.d.ts +0 -0
  354. /package/{core → package/core}/shared/dynamic-form-inputs/password-form-input/password-form-input.component.d.ts +0 -0
  355. /package/{core → package/core}/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.d.ts +0 -0
  356. /package/{core → package/core}/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.d.ts +0 -0
  357. /package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +0 -0
  358. /package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.d.ts +0 -0
  359. /package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.d.ts +0 -0
  360. /package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.d.ts +0 -0
  361. /package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.d.ts +0 -0
  362. /package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.d.ts +0 -0
  363. /package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.d.ts +0 -0
  364. /package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.d.ts +0 -0
  365. /package/{core → package/core}/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.d.ts +0 -0
  366. /package/{core → package/core}/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +0 -0
  367. /package/{core → package/core}/shared/dynamic-form-inputs/text-form-input/text-form-input.component.d.ts +0 -0
  368. /package/{core → package/core}/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.d.ts +0 -0
  369. /package/{core → package/core}/shared/pipes/asset-preview.pipe.d.ts +0 -0
  370. /package/{core → package/core}/shared/pipes/channel-label.pipe.d.ts +0 -0
  371. /package/{core → package/core}/shared/pipes/custom-field-description.pipe.d.ts +0 -0
  372. /package/{core → package/core}/shared/pipes/custom-field-label.pipe.d.ts +0 -0
  373. /package/{core → package/core}/shared/pipes/duration.pipe.d.ts +0 -0
  374. /package/{core → package/core}/shared/pipes/file-size.pipe.d.ts +0 -0
  375. /package/{core → package/core}/shared/pipes/has-permission.pipe.d.ts +0 -0
  376. /package/{core → package/core}/shared/pipes/locale-base.pipe.d.ts +0 -0
  377. /package/{core → package/core}/shared/pipes/locale-currency-name.pipe.d.ts +0 -0
  378. /package/{core → package/core}/shared/pipes/locale-currency.pipe.d.ts +0 -0
  379. /package/{core → package/core}/shared/pipes/locale-date.pipe.d.ts +0 -0
  380. /package/{core → package/core}/shared/pipes/locale-language-name.pipe.d.ts +0 -0
  381. /package/{core → package/core}/shared/pipes/locale-region-name.pipe.d.ts +0 -0
  382. /package/{core → package/core}/shared/pipes/sentence-case.pipe.d.ts +0 -0
  383. /package/{core → package/core}/shared/pipes/sort.pipe.d.ts +0 -0
  384. /package/{core → package/core}/shared/pipes/state-i18n-token.pipe.d.ts +0 -0
  385. /package/{core → package/core}/shared/pipes/string-to-color.pipe.d.ts +0 -0
  386. /package/{core → package/core}/shared/pipes/time-ago.pipe.d.ts +0 -0
  387. /package/{core → package/core}/shared/providers/routing/can-deactivate-detail-guard.d.ts +0 -0
  388. /package/{core → package/core}/shared/shared.module.d.ts +0 -0
  389. /package/{core → package/core}/validators/unicode-pattern.validator.d.ts +0 -0
  390. /package/{customer → package/customer}/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.d.ts +0 -0
  391. /package/{customer → package/customer}/components/address-card/address-card.component.d.ts +0 -0
  392. /package/{customer → package/customer}/components/address-detail-dialog/address-detail-dialog.component.d.ts +0 -0
  393. /package/{customer → package/customer}/components/customer-detail/customer-detail.component.d.ts +0 -0
  394. /package/{customer → package/customer}/components/customer-group-detail/customer-group-detail.component.d.ts +0 -0
  395. /package/{customer → package/customer}/components/customer-group-detail-dialog/customer-group-detail-dialog.component.d.ts +0 -0
  396. /package/{customer → package/customer}/components/customer-group-list/customer-group-list-bulk-actions.d.ts +0 -0
  397. /package/{customer → package/customer}/components/customer-group-list/customer-group-list.component.d.ts +0 -0
  398. /package/{customer → package/customer}/components/customer-group-member-list/customer-group-member-list-bulk-actions.d.ts +0 -0
  399. /package/{customer → package/customer}/components/customer-group-member-list/customer-group-member-list.component.d.ts +0 -0
  400. /package/{customer → package/customer}/components/customer-history/customer-history-entry-host.component.d.ts +0 -0
  401. /package/{customer → package/customer}/components/customer-history/customer-history.component.d.ts +0 -0
  402. /package/{customer → package/customer}/components/customer-list/customer-list-bulk-actions.d.ts +0 -0
  403. /package/{customer → package/customer}/components/customer-list/customer-list.component.d.ts +0 -0
  404. /package/{customer → package/customer}/components/customer-status-label/customer-status-label.component.d.ts +0 -0
  405. /package/{customer → package/customer}/components/select-customer-group-dialog/select-customer-group-dialog.component.d.ts +0 -0
  406. /package/{customer → package/customer}/customer.module.d.ts +0 -0
  407. /package/{customer → package/customer}/customer.routes.d.ts +0 -0
  408. /package/{customer → package/customer}/index.d.ts +0 -0
  409. /package/{customer → package/customer}/public_api.d.ts +0 -0
  410. /package/{dashboard → package/dashboard}/components/dashboard/dashboard.component.d.ts +0 -0
  411. /package/{dashboard → package/dashboard}/components/dashboard-widget/dashboard-widget.component.d.ts +0 -0
  412. /package/{dashboard → package/dashboard}/dashboard.module.d.ts +0 -0
  413. /package/{dashboard → package/dashboard}/dashboard.routes.d.ts +0 -0
  414. /package/{dashboard → package/dashboard}/default-widgets.d.ts +0 -0
  415. /package/{dashboard → package/dashboard}/index.d.ts +0 -0
  416. /package/{dashboard → package/dashboard}/public_api.d.ts +0 -0
  417. /package/{dashboard → package/dashboard}/widgets/latest-orders-widget/latest-orders-widget.component.d.ts +0 -0
  418. /package/{dashboard → package/dashboard}/widgets/order-chart-widget/order-chart-widget.component.d.ts +0 -0
  419. /package/{dashboard → package/dashboard}/widgets/order-summary-widget/order-summary-widget.component.d.ts +0 -0
  420. /package/{dashboard → package/dashboard}/widgets/test-widget/test-widget.component.d.ts +0 -0
  421. /package/{dashboard → package/dashboard}/widgets/welcome-widget/welcome-widget.component.d.ts +0 -0
  422. /package/{esm2022 → package/esm2022}/catalog/catalog.module.mjs +0 -0
  423. /package/{esm2022 → package/esm2022}/catalog/catalog.routes.mjs +0 -0
  424. /package/{esm2022 → package/esm2022}/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +0 -0
  425. /package/{esm2022 → package/esm2022}/catalog/components/asset-detail/asset-detail.component.mjs +0 -0
  426. /package/{esm2022 → package/esm2022}/catalog/components/asset-list/asset-list.component.mjs +0 -0
  427. /package/{esm2022 → package/esm2022}/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +0 -0
  428. /package/{esm2022 → package/esm2022}/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +0 -0
  429. /package/{esm2022 → package/esm2022}/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.mjs +0 -0
  430. /package/{esm2022 → package/esm2022}/catalog/components/collection-contents/collection-contents.component.mjs +0 -0
  431. /package/{esm2022 → package/esm2022}/catalog/components/collection-data-table/collection-data-table.component.mjs +0 -0
  432. /package/{esm2022 → package/esm2022}/catalog/components/collection-detail/collection-detail.component.mjs +0 -0
  433. /package/{esm2022 → package/esm2022}/catalog/components/collection-list/collection-breadcrumb.pipe.mjs +0 -0
  434. /package/{esm2022 → package/esm2022}/catalog/components/collection-list/collection-list-bulk-actions.mjs +0 -0
  435. /package/{esm2022 → package/esm2022}/catalog/components/collection-list/collection-list.component.mjs +0 -0
  436. /package/{esm2022 → package/esm2022}/catalog/components/collection-tree/array-to-tree.mjs +0 -0
  437. /package/{esm2022 → package/esm2022}/catalog/components/collection-tree/collection-tree-node.component.mjs +0 -0
  438. /package/{esm2022 → package/esm2022}/catalog/components/collection-tree/collection-tree.component.mjs +0 -0
  439. /package/{esm2022 → package/esm2022}/catalog/components/collection-tree/collection-tree.service.mjs +0 -0
  440. /package/{esm2022 → package/esm2022}/catalog/components/collection-tree/collection-tree.types.mjs +0 -0
  441. /package/{esm2022 → package/esm2022}/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +0 -0
  442. /package/{esm2022 → package/esm2022}/catalog/components/create-facet-value-dialog/create-facet-value-dialog.component.mjs +0 -0
  443. /package/{esm2022 → package/esm2022}/catalog/components/create-product-option-group-dialog/create-product-option-group-dialog.component.mjs +0 -0
  444. /package/{esm2022 → package/esm2022}/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +0 -0
  445. /package/{esm2022 → package/esm2022}/catalog/components/facet-detail/facet-detail.component.mjs +0 -0
  446. /package/{esm2022 → package/esm2022}/catalog/components/facet-list/facet-list-bulk-actions.mjs +0 -0
  447. /package/{esm2022 → package/esm2022}/catalog/components/facet-list/facet-list.component.mjs +0 -0
  448. /package/{esm2022 → package/esm2022}/catalog/components/generate-product-variants/generate-product-variants.component.mjs +0 -0
  449. /package/{esm2022 → package/esm2022}/catalog/components/move-collections-dialog/move-collections-dialog.component.mjs +0 -0
  450. /package/{esm2022 → package/esm2022}/catalog/components/option-value-input/option-value-input.component.mjs +0 -0
  451. /package/{esm2022 → package/esm2022}/catalog/components/product-detail/product-detail.component.mjs +0 -0
  452. /package/{esm2022 → package/esm2022}/catalog/components/product-list/product-list-bulk-actions.mjs +0 -0
  453. /package/{esm2022 → package/esm2022}/catalog/components/product-list/product-list.component.mjs +0 -0
  454. /package/{esm2022 → package/esm2022}/catalog/components/product-list/product-list.graphql.mjs +0 -0
  455. /package/{esm2022 → package/esm2022}/catalog/components/product-options-editor/product-options-editor.component.mjs +0 -0
  456. /package/{esm2022 → package/esm2022}/catalog/components/product-variant-detail/product-variant-detail.component.mjs +0 -0
  457. /package/{esm2022 → package/esm2022}/catalog/components/product-variant-detail/product-variant-detail.graphql.mjs +0 -0
  458. /package/{esm2022 → package/esm2022}/catalog/components/product-variant-list/product-variant-list-bulk-actions.mjs +0 -0
  459. /package/{esm2022 → package/esm2022}/catalog/components/product-variant-list/product-variant-list.component.mjs +0 -0
  460. /package/{esm2022 → package/esm2022}/catalog/components/product-variant-list/product-variant-list.graphql.mjs +0 -0
  461. /package/{esm2022 → package/esm2022}/catalog/components/product-variant-quick-jump/product-variant-quick-jump.component.mjs +0 -0
  462. /package/{esm2022 → package/esm2022}/catalog/components/product-variants-editor/product-variants-editor.component.mjs +0 -0
  463. /package/{esm2022 → package/esm2022}/catalog/components/product-variants-table/product-variants-table.component.mjs +0 -0
  464. /package/{esm2022 → package/esm2022}/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +0 -0
  465. /package/{esm2022 → package/esm2022}/catalog/components/variant-price-detail/variant-price-detail.component.mjs +0 -0
  466. /package/{esm2022 → package/esm2022}/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.mjs +0 -0
  467. /package/{esm2022 → package/esm2022}/catalog/providers/product-detail/product-detail.service.mjs +0 -0
  468. /package/{esm2022 → package/esm2022}/catalog/providers/product-detail/replace-last.mjs +0 -0
  469. /package/{esm2022 → package/esm2022}/catalog/providers/routing/product-variants-resolver.mjs +0 -0
  470. /package/{esm2022 → package/esm2022}/catalog/public_api.mjs +0 -0
  471. /package/{esm2022 → package/esm2022}/catalog/vendure-admin-ui-catalog.mjs +0 -0
  472. /package/{esm2022 → package/esm2022}/core/app.component.mjs +0 -0
  473. /package/{esm2022 → package/esm2022}/core/app.component.module.mjs +0 -0
  474. /package/{esm2022 → package/esm2022}/core/app.config.mjs +0 -0
  475. /package/{esm2022 → package/esm2022}/core/common/base-detail.component.mjs +0 -0
  476. /package/{esm2022 → package/esm2022}/core/common/base-entity-resolver.mjs +0 -0
  477. /package/{esm2022 → package/esm2022}/core/common/base-list.component.mjs +0 -0
  478. /package/{esm2022 → package/esm2022}/core/common/component-registry-types.mjs +0 -0
  479. /package/{esm2022 → package/esm2022}/core/common/deactivate-aware.mjs +0 -0
  480. /package/{esm2022 → package/esm2022}/core/common/detail-breadcrumb.mjs +0 -0
  481. /package/{esm2022 → package/esm2022}/core/common/generated-types.mjs +0 -0
  482. /package/{esm2022 → package/esm2022}/core/common/introspection-result-wrapper.mjs +0 -0
  483. /package/{esm2022 → package/esm2022}/core/common/introspection-result.mjs +0 -0
  484. /package/{esm2022 → package/esm2022}/core/common/single-search-selection-model.mjs +0 -0
  485. /package/{esm2022 → package/esm2022}/core/common/title-setter.mjs +0 -0
  486. /package/{esm2022 → package/esm2022}/core/common/utilities/bulk-action-utils.mjs +0 -0
  487. /package/{esm2022 → package/esm2022}/core/common/utilities/configurable-operation-utils.mjs +0 -0
  488. /package/{esm2022 → package/esm2022}/core/common/utilities/create-updated-translatable.mjs +0 -0
  489. /package/{esm2022 → package/esm2022}/core/common/utilities/custom-field-default-value.mjs +0 -0
  490. /package/{esm2022 → package/esm2022}/core/common/utilities/find-translation.mjs +0 -0
  491. /package/{esm2022 → package/esm2022}/core/common/utilities/get-default-ui-language.mjs +0 -0
  492. /package/{esm2022 → package/esm2022}/core/common/utilities/interpolate-description.mjs +0 -0
  493. /package/{esm2022 → package/esm2022}/core/common/utilities/selection-manager.mjs +0 -0
  494. /package/{esm2022 → package/esm2022}/core/common/utilities/string-to-color.mjs +0 -0
  495. /package/{esm2022 → package/esm2022}/core/components/alerts/alerts.component.mjs +0 -0
  496. /package/{esm2022 → package/esm2022}/core/components/app-shell/app-shell.component.mjs +0 -0
  497. /package/{esm2022 → package/esm2022}/core/components/base-nav/base-nav.component.mjs +0 -0
  498. /package/{esm2022 → package/esm2022}/core/components/breadcrumb/breadcrumb.component.mjs +0 -0
  499. /package/{esm2022 → package/esm2022}/core/components/channel-switcher/channel-switcher.component.mjs +0 -0
  500. /package/{esm2022 → package/esm2022}/core/components/main-nav/main-nav.component.mjs +0 -0
  501. /package/{esm2022 → package/esm2022}/core/components/notification/notification.component.mjs +0 -0
  502. /package/{esm2022 → package/esm2022}/core/components/overlay-host/overlay-host.component.mjs +0 -0
  503. /package/{esm2022 → package/esm2022}/core/components/settings-nav/settings-nav.component.mjs +0 -0
  504. /package/{esm2022 → package/esm2022}/core/components/theme-switcher/theme-switcher.component.mjs +0 -0
  505. /package/{esm2022 → package/esm2022}/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +0 -0
  506. /package/{esm2022 → package/esm2022}/core/components/user-menu/user-menu.component.mjs +0 -0
  507. /package/{esm2022 → package/esm2022}/core/core.module.mjs +0 -0
  508. /package/{esm2022 → package/esm2022}/core/data/check-jobs-link.mjs +0 -0
  509. /package/{esm2022 → package/esm2022}/core/data/client-state/client-defaults.mjs +0 -0
  510. /package/{esm2022 → package/esm2022}/core/data/client-state/client-resolvers.mjs +0 -0
  511. /package/{esm2022 → package/esm2022}/core/data/data.module.mjs +0 -0
  512. /package/{esm2022 → package/esm2022}/core/data/definitions/administrator-definitions.mjs +0 -0
  513. /package/{esm2022 → package/esm2022}/core/data/definitions/auth-definitions.mjs +0 -0
  514. /package/{esm2022 → package/esm2022}/core/data/definitions/client-definitions.mjs +0 -0
  515. /package/{esm2022 → package/esm2022}/core/data/definitions/collection-definitions.mjs +0 -0
  516. /package/{esm2022 → package/esm2022}/core/data/definitions/customer-definitions.mjs +0 -0
  517. /package/{esm2022 → package/esm2022}/core/data/definitions/facet-definitions.mjs +0 -0
  518. /package/{esm2022 → package/esm2022}/core/data/definitions/order-definitions.mjs +0 -0
  519. /package/{esm2022 → package/esm2022}/core/data/definitions/product-definitions.mjs +0 -0
  520. /package/{esm2022 → package/esm2022}/core/data/definitions/promotion-definitions.mjs +0 -0
  521. /package/{esm2022 → package/esm2022}/core/data/definitions/settings-definitions.mjs +0 -0
  522. /package/{esm2022 → package/esm2022}/core/data/definitions/shared-definitions.mjs +0 -0
  523. /package/{esm2022 → package/esm2022}/core/data/definitions/shipping-definitions.mjs +0 -0
  524. /package/{esm2022 → package/esm2022}/core/data/omit-typename-link.mjs +0 -0
  525. /package/{esm2022 → package/esm2022}/core/data/providers/administrator-data.service.mjs +0 -0
  526. /package/{esm2022 → package/esm2022}/core/data/providers/auth-data.service.mjs +0 -0
  527. /package/{esm2022 → package/esm2022}/core/data/providers/base-data.service.mjs +0 -0
  528. /package/{esm2022 → package/esm2022}/core/data/providers/client-data.service.mjs +0 -0
  529. /package/{esm2022 → package/esm2022}/core/data/providers/collection-data.service.mjs +0 -0
  530. /package/{esm2022 → package/esm2022}/core/data/providers/customer-data.service.mjs +0 -0
  531. /package/{esm2022 → package/esm2022}/core/data/providers/data.service.mjs +0 -0
  532. /package/{esm2022 → package/esm2022}/core/data/providers/facet-data.service.mjs +0 -0
  533. /package/{esm2022 → package/esm2022}/core/data/providers/fetch-adapter.mjs +0 -0
  534. /package/{esm2022 → package/esm2022}/core/data/providers/interceptor.mjs +0 -0
  535. /package/{esm2022 → package/esm2022}/core/data/providers/order-data.service.mjs +0 -0
  536. /package/{esm2022 → package/esm2022}/core/data/providers/product-data.service.mjs +0 -0
  537. /package/{esm2022 → package/esm2022}/core/data/providers/promotion-data.service.mjs +0 -0
  538. /package/{esm2022 → package/esm2022}/core/data/providers/settings-data.service.mjs +0 -0
  539. /package/{esm2022 → package/esm2022}/core/data/providers/shipping-method-data.service.mjs +0 -0
  540. /package/{esm2022 → package/esm2022}/core/data/query-result.mjs +0 -0
  541. /package/{esm2022 → package/esm2022}/core/data/server-config.mjs +0 -0
  542. /package/{esm2022 → package/esm2022}/core/data/utils/add-custom-fields.mjs +0 -0
  543. /package/{esm2022 → package/esm2022}/core/data/utils/get-server-location.mjs +0 -0
  544. /package/{esm2022 → package/esm2022}/core/data/utils/is-entity-create-or-update-mutation.mjs +0 -0
  545. /package/{esm2022 → package/esm2022}/core/data/utils/remove-readonly-custom-fields.mjs +0 -0
  546. /package/{esm2022 → package/esm2022}/core/data/utils/transform-relation-custom-field-inputs.mjs +0 -0
  547. /package/{esm2022 → package/esm2022}/core/extension/add-action-bar-dropdown-menu-item.mjs +0 -0
  548. /package/{esm2022 → package/esm2022}/core/extension/add-action-bar-item.mjs +0 -0
  549. /package/{esm2022 → package/esm2022}/core/extension/add-nav-menu-item.mjs +0 -0
  550. /package/{esm2022 → package/esm2022}/core/extension/components/angular-route.component.mjs +0 -0
  551. /package/{esm2022 → package/esm2022}/core/extension/components/route.component.mjs +0 -0
  552. /package/{esm2022 → package/esm2022}/core/extension/providers/page-metadata.service.mjs +0 -0
  553. /package/{esm2022 → package/esm2022}/core/extension/register-alert.mjs +0 -0
  554. /package/{esm2022 → package/esm2022}/core/extension/register-bulk-action.mjs +0 -0
  555. /package/{esm2022 → package/esm2022}/core/extension/register-custom-detail-component.mjs +0 -0
  556. /package/{esm2022 → package/esm2022}/core/extension/register-dashboard-widget.mjs +0 -0
  557. /package/{esm2022 → package/esm2022}/core/extension/register-data-table-component.mjs +0 -0
  558. /package/{esm2022 → package/esm2022}/core/extension/register-form-input-component.mjs +0 -0
  559. /package/{esm2022 → package/esm2022}/core/extension/register-history-entry-component.mjs +0 -0
  560. /package/{esm2022 → package/esm2022}/core/extension/register-page-tab.mjs +0 -0
  561. /package/{esm2022 → package/esm2022}/core/extension/register-route-component.mjs +0 -0
  562. /package/{esm2022 → package/esm2022}/core/extension/types.mjs +0 -0
  563. /package/{esm2022 → package/esm2022}/core/providers/alerts/alerts.service.mjs +0 -0
  564. /package/{esm2022 → package/esm2022}/core/providers/auth/auth.service.mjs +0 -0
  565. /package/{esm2022 → package/esm2022}/core/providers/breadcrumb/breadcrumb.service.mjs +0 -0
  566. /package/{esm2022 → package/esm2022}/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +0 -0
  567. /package/{esm2022 → package/esm2022}/core/providers/bulk-action-registry/bulk-action-types.mjs +0 -0
  568. /package/{esm2022 → package/esm2022}/core/providers/channel/channel.service.mjs +0 -0
  569. /package/{esm2022 → package/esm2022}/core/providers/component-registry/component-registry.service.mjs +0 -0
  570. /package/{esm2022 → package/esm2022}/core/providers/currency/currency.service.mjs +0 -0
  571. /package/{esm2022 → package/esm2022}/core/providers/custom-detail-component/custom-detail-component-types.mjs +0 -0
  572. /package/{esm2022 → package/esm2022}/core/providers/custom-detail-component/custom-detail-component.service.mjs +0 -0
  573. /package/{esm2022 → package/esm2022}/core/providers/custom-field-component/custom-field-component.service.mjs +0 -0
  574. /package/{esm2022 → package/esm2022}/core/providers/custom-history-entry-component/history-entry-component-types.mjs +0 -0
  575. /package/{esm2022 → package/esm2022}/core/providers/custom-history-entry-component/history-entry-component.service.mjs +0 -0
  576. /package/{esm2022 → package/esm2022}/core/providers/dashboard-widget/dashboard-widget-types.mjs +0 -0
  577. /package/{esm2022 → package/esm2022}/core/providers/dashboard-widget/dashboard-widget.service.mjs +0 -0
  578. /package/{esm2022 → package/esm2022}/core/providers/data-table/data-table-filter-collection.mjs +0 -0
  579. /package/{esm2022 → package/esm2022}/core/providers/data-table/data-table-filter.mjs +0 -0
  580. /package/{esm2022 → package/esm2022}/core/providers/data-table/data-table-sort-collection.mjs +0 -0
  581. /package/{esm2022 → package/esm2022}/core/providers/data-table/data-table-sort.mjs +0 -0
  582. /package/{esm2022 → package/esm2022}/core/providers/guard/auth.guard.mjs +0 -0
  583. /package/{esm2022 → package/esm2022}/core/providers/health-check/health-check.service.mjs +0 -0
  584. /package/{esm2022 → package/esm2022}/core/providers/i18n/custom-http-loader.mjs +0 -0
  585. /package/{esm2022 → package/esm2022}/core/providers/i18n/custom-message-format-compiler.mjs +0 -0
  586. /package/{esm2022 → package/esm2022}/core/providers/i18n/i18n.service.mjs +0 -0
  587. /package/{esm2022 → package/esm2022}/core/providers/job-queue/job-queue.service.mjs +0 -0
  588. /package/{esm2022 → package/esm2022}/core/providers/local-storage/local-storage.service.mjs +0 -0
  589. /package/{esm2022 → package/esm2022}/core/providers/localization/localization.service.mjs +0 -0
  590. /package/{esm2022 → package/esm2022}/core/providers/modal/modal.service.mjs +0 -0
  591. /package/{esm2022 → package/esm2022}/core/providers/modal/modal.types.mjs +0 -0
  592. /package/{esm2022 → package/esm2022}/core/providers/nav-builder/nav-builder-types.mjs +0 -0
  593. /package/{esm2022 → package/esm2022}/core/providers/nav-builder/nav-builder.service.mjs +0 -0
  594. /package/{esm2022 → package/esm2022}/core/providers/notification/notification.service.mjs +0 -0
  595. /package/{esm2022 → package/esm2022}/core/providers/overlay-host/overlay-host.service.mjs +0 -0
  596. /package/{esm2022 → package/esm2022}/core/providers/page/page.service.mjs +0 -0
  597. /package/{esm2022 → package/esm2022}/core/providers/permissions/permissions.service.mjs +0 -0
  598. /package/{esm2022 → package/esm2022}/core/public_api.mjs +0 -0
  599. /package/{esm2022 → package/esm2022}/core/shared/components/action-bar/action-bar.component.mjs +0 -0
  600. /package/{esm2022 → package/esm2022}/core/shared/components/action-bar-dropdown-menu/action-bar-dropdown-menu.component.mjs +0 -0
  601. /package/{esm2022 → package/esm2022}/core/shared/components/action-bar-items/action-bar-base.component.mjs +0 -0
  602. /package/{esm2022 → package/esm2022}/core/shared/components/action-bar-items/action-bar-items.component.mjs +0 -0
  603. /package/{esm2022 → package/esm2022}/core/shared/components/address-form/address-form.component.mjs +0 -0
  604. /package/{esm2022 → package/esm2022}/core/shared/components/affixed-input/affixed-input.component.mjs +0 -0
  605. /package/{esm2022 → package/esm2022}/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +0 -0
  606. /package/{esm2022 → package/esm2022}/core/shared/components/asset-file-input/asset-file-input.component.mjs +0 -0
  607. /package/{esm2022 → package/esm2022}/core/shared/components/asset-gallery/asset-gallery.component.mjs +0 -0
  608. /package/{esm2022 → package/esm2022}/core/shared/components/asset-gallery/asset-gallery.types.mjs +0 -0
  609. /package/{esm2022 → package/esm2022}/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +0 -0
  610. /package/{esm2022 → package/esm2022}/core/shared/components/asset-preview/asset-preview.component.mjs +0 -0
  611. /package/{esm2022 → package/esm2022}/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +0 -0
  612. /package/{esm2022 → package/esm2022}/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +0 -0
  613. /package/{esm2022 → package/esm2022}/core/shared/components/asset-search-input/asset-search-input.component.mjs +0 -0
  614. /package/{esm2022 → package/esm2022}/core/shared/components/assets/assets.component.mjs +0 -0
  615. /package/{esm2022 → package/esm2022}/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +0 -0
  616. /package/{esm2022 → package/esm2022}/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +0 -0
  617. /package/{esm2022 → package/esm2022}/core/shared/components/card/card.component.mjs +0 -0
  618. /package/{esm2022 → package/esm2022}/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +0 -0
  619. /package/{esm2022 → package/esm2022}/core/shared/components/channel-badge/channel-badge.component.mjs +0 -0
  620. /package/{esm2022 → package/esm2022}/core/shared/components/chart/chart.component.mjs +0 -0
  621. /package/{esm2022 → package/esm2022}/core/shared/components/chart/tooltip-plugin.mjs +0 -0
  622. /package/{esm2022 → package/esm2022}/core/shared/components/chip/chip.component.mjs +0 -0
  623. /package/{esm2022 → package/esm2022}/core/shared/components/configurable-input/configurable-input.component.mjs +0 -0
  624. /package/{esm2022 → package/esm2022}/core/shared/components/currency-code-selector/currency-code-selector.component.mjs +0 -0
  625. /package/{esm2022 → package/esm2022}/core/shared/components/currency-input/currency-input.component.mjs +0 -0
  626. /package/{esm2022 → package/esm2022}/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +0 -0
  627. /package/{esm2022 → package/esm2022}/core/shared/components/custom-field-control/custom-field-control.component.mjs +0 -0
  628. /package/{esm2022 → package/esm2022}/core/shared/components/customer-label/customer-label.component.mjs +0 -0
  629. /package/{esm2022 → package/esm2022}/core/shared/components/data-table/data-table-column.component.mjs +0 -0
  630. /package/{esm2022 → package/esm2022}/core/shared/components/data-table/data-table.component.mjs +0 -0
  631. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-2/data-table-column.component.mjs +0 -0
  632. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-2/data-table-custom-component.service.mjs +0 -0
  633. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-2/data-table-custom-field-column.component.mjs +0 -0
  634. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-2/data-table-search.component.mjs +0 -0
  635. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-2/data-table2.component.mjs +0 -0
  636. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-column-picker/data-table-column-picker.component.mjs +0 -0
  637. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-filter-label/data-table-filter-label.component.mjs +0 -0
  638. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-filter-presets/add-filter-preset-button.component.mjs +0 -0
  639. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-filter-presets/data-table-filter-presets.component.mjs +0 -0
  640. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-filter-presets/filter-preset.service.mjs +0 -0
  641. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-filter-presets/rename-filter-preset-dialog.component.mjs +0 -0
  642. /package/{esm2022 → package/esm2022}/core/shared/components/data-table-filters/custom-filter-component.directive.mjs +0 -0
  643. /package/{esm2022 → package/esm2022}/core/shared/components/datetime-picker/constants.mjs +0 -0
  644. /package/{esm2022 → package/esm2022}/core/shared/components/datetime-picker/datetime-picker.component.mjs +0 -0
  645. /package/{esm2022 → package/esm2022}/core/shared/components/datetime-picker/datetime-picker.service.mjs +0 -0
  646. /package/{esm2022 → package/esm2022}/core/shared/components/datetime-picker/types.mjs +0 -0
  647. /package/{esm2022 → package/esm2022}/core/shared/components/dropdown/dropdown-item.directive.mjs +0 -0
  648. /package/{esm2022 → package/esm2022}/core/shared/components/dropdown/dropdown-menu.component.mjs +0 -0
  649. /package/{esm2022 → package/esm2022}/core/shared/components/dropdown/dropdown-trigger.directive.mjs +0 -0
  650. /package/{esm2022 → package/esm2022}/core/shared/components/dropdown/dropdown.component.mjs +0 -0
  651. /package/{esm2022 → package/esm2022}/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.component.mjs +0 -0
  652. /package/{esm2022 → package/esm2022}/core/shared/components/duplicate-entity-dialog/duplicate-entity-dialog.graphql.mjs +0 -0
  653. /package/{esm2022 → package/esm2022}/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +0 -0
  654. /package/{esm2022 → package/esm2022}/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +0 -0
  655. /package/{esm2022 → package/esm2022}/core/shared/components/entity-info/entity-info.component.mjs +0 -0
  656. /package/{esm2022 → package/esm2022}/core/shared/components/extension-host/extension-host-config.mjs +0 -0
  657. /package/{esm2022 → package/esm2022}/core/shared/components/extension-host/extension-host.component.mjs +0 -0
  658. /package/{esm2022 → package/esm2022}/core/shared/components/extension-host/extension-host.service.mjs +0 -0
  659. /package/{esm2022 → package/esm2022}/core/shared/components/extension-host/host-external-frame.mjs +0 -0
  660. /package/{esm2022 → package/esm2022}/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +0 -0
  661. /package/{esm2022 → package/esm2022}/core/shared/components/focal-point-control/focal-point-control.component.mjs +0 -0
  662. /package/{esm2022 → package/esm2022}/core/shared/components/form-field/form-field-control.directive.mjs +0 -0
  663. /package/{esm2022 → package/esm2022}/core/shared/components/form-field/form-field.component.mjs +0 -0
  664. /package/{esm2022 → package/esm2022}/core/shared/components/form-item/form-item.component.mjs +0 -0
  665. /package/{esm2022 → package/esm2022}/core/shared/components/formatted-address/formatted-address.component.mjs +0 -0
  666. /package/{esm2022 → package/esm2022}/core/shared/components/help-tooltip/help-tooltip.component.mjs +0 -0
  667. /package/{esm2022 → package/esm2022}/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +0 -0
  668. /package/{esm2022 → package/esm2022}/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +0 -0
  669. /package/{esm2022 → package/esm2022}/core/shared/components/labeled-data/labeled-data.component.mjs +0 -0
  670. /package/{esm2022 → package/esm2022}/core/shared/components/language-code-selector/language-code-selector.component.mjs +0 -0
  671. /package/{esm2022 → package/esm2022}/core/shared/components/language-selector/language-selector.component.mjs +0 -0
  672. /package/{esm2022 → package/esm2022}/core/shared/components/localized-text/localized-text.component.mjs +0 -0
  673. /package/{esm2022 → package/esm2022}/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +0 -0
  674. /package/{esm2022 → package/esm2022}/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +0 -0
  675. /package/{esm2022 → package/esm2022}/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +0 -0
  676. /package/{esm2022 → package/esm2022}/core/shared/components/modal-dialog/dialog-title.directive.mjs +0 -0
  677. /package/{esm2022 → package/esm2022}/core/shared/components/modal-dialog/modal-dialog.component.mjs +0 -0
  678. /package/{esm2022 → package/esm2022}/core/shared/components/object-tree/object-tree.component.mjs +0 -0
  679. /package/{esm2022 → package/esm2022}/core/shared/components/order-state-label/order-state-label.component.mjs +0 -0
  680. /package/{esm2022 → package/esm2022}/core/shared/components/page/page.component.mjs +0 -0
  681. /package/{esm2022 → package/esm2022}/core/shared/components/page-block/page-block.component.mjs +0 -0
  682. /package/{esm2022 → package/esm2022}/core/shared/components/page-body/page-body.component.mjs +0 -0
  683. /package/{esm2022 → package/esm2022}/core/shared/components/page-detail-layout/page-detail-layout.component.mjs +0 -0
  684. /package/{esm2022 → package/esm2022}/core/shared/components/page-detail-layout/page-detail-sidebar.component.mjs +0 -0
  685. /package/{esm2022 → package/esm2022}/core/shared/components/page-entity-info/page-entity-info.component.mjs +0 -0
  686. /package/{esm2022 → package/esm2022}/core/shared/components/page-header/page-header.component.mjs +0 -0
  687. /package/{esm2022 → package/esm2022}/core/shared/components/page-header-description/page-header-description.component.mjs +0 -0
  688. /package/{esm2022 → package/esm2022}/core/shared/components/page-header-tabs/page-header-tabs.component.mjs +0 -0
  689. /package/{esm2022 → package/esm2022}/core/shared/components/page-title/page-title.component.mjs +0 -0
  690. /package/{esm2022 → package/esm2022}/core/shared/components/pagination-controls/pagination-controls.component.mjs +0 -0
  691. /package/{esm2022 → package/esm2022}/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +0 -0
  692. /package/{esm2022 → package/esm2022}/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.graphql.mjs +0 -0
  693. /package/{esm2022 → package/esm2022}/core/shared/components/product-search-input/product-search-input.component.mjs +0 -0
  694. /package/{esm2022 → package/esm2022}/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +0 -0
  695. /package/{esm2022 → package/esm2022}/core/shared/components/radio-card/radio-card-fieldset.component.mjs +0 -0
  696. /package/{esm2022 → package/esm2022}/core/shared/components/radio-card/radio-card.component.mjs +0 -0
  697. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +0 -0
  698. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +0 -0
  699. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.mjs +0 -0
  700. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.mjs +0 -0
  701. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/custom-nodes.mjs +0 -0
  702. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/inputrules.mjs +0 -0
  703. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/keymap.mjs +0 -0
  704. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/menu/links.mjs +0 -0
  705. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.mjs +0 -0
  706. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.mjs +0 -0
  707. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/menu/menu.mjs +0 -0
  708. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.mjs +0 -0
  709. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.mjs +0 -0
  710. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.mjs +0 -0
  711. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.mjs +0 -0
  712. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.mjs +0 -0
  713. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +0 -0
  714. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/types.mjs +0 -0
  715. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/prosemirror/utils.mjs +0 -0
  716. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.mjs +0 -0
  717. /package/{esm2022 → package/esm2022}/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +0 -0
  718. /package/{esm2022 → package/esm2022}/core/shared/components/select-toggle/select-toggle.component.mjs +0 -0
  719. /package/{esm2022 → package/esm2022}/core/shared/components/simple-dialog/simple-dialog.component.mjs +0 -0
  720. /package/{esm2022 → package/esm2022}/core/shared/components/split-view/split-view.component.mjs +0 -0
  721. /package/{esm2022 → package/esm2022}/core/shared/components/split-view/split-view.directive.mjs +0 -0
  722. /package/{esm2022 → package/esm2022}/core/shared/components/status-badge/status-badge.component.mjs +0 -0
  723. /package/{esm2022 → package/esm2022}/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +0 -0
  724. /package/{esm2022 → package/esm2022}/core/shared/components/table-row-action/table-row-action.component.mjs +0 -0
  725. /package/{esm2022 → package/esm2022}/core/shared/components/tag-selector/tag-selector.component.mjs +0 -0
  726. /package/{esm2022 → package/esm2022}/core/shared/components/timeline-entry/timeline-entry.component.mjs +0 -0
  727. /package/{esm2022 → package/esm2022}/core/shared/components/title-input/title-input.component.mjs +0 -0
  728. /package/{esm2022 → package/esm2022}/core/shared/components/zone-selector/zone-selector.component.mjs +0 -0
  729. /package/{esm2022 → package/esm2022}/core/shared/directives/disabled.directive.mjs +0 -0
  730. /package/{esm2022 → package/esm2022}/core/shared/directives/if-default-channel-active.directive.mjs +0 -0
  731. /package/{esm2022 → package/esm2022}/core/shared/directives/if-directive-base.mjs +0 -0
  732. /package/{esm2022 → package/esm2022}/core/shared/directives/if-multichannel.directive.mjs +0 -0
  733. /package/{esm2022 → package/esm2022}/core/shared/directives/if-permissions.directive.mjs +0 -0
  734. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +0 -0
  735. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.mjs +0 -0
  736. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +0 -0
  737. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +0 -0
  738. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +0 -0
  739. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +0 -0
  740. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +0 -0
  741. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +0 -0
  742. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/default-form-inputs.mjs +0 -0
  743. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +0 -0
  744. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +0 -0
  745. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +0 -0
  746. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +0 -0
  747. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +0 -0
  748. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +0 -0
  749. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +0 -0
  750. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +0 -0
  751. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +0 -0
  752. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +0 -0
  753. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +0 -0
  754. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +0 -0
  755. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +0 -0
  756. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +0 -0
  757. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +0 -0
  758. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +0 -0
  759. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +0 -0
  760. /package/{esm2022 → package/esm2022}/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +0 -0
  761. /package/{esm2022 → package/esm2022}/core/shared/pipes/asset-preview.pipe.mjs +0 -0
  762. /package/{esm2022 → package/esm2022}/core/shared/pipes/channel-label.pipe.mjs +0 -0
  763. /package/{esm2022 → package/esm2022}/core/shared/pipes/custom-field-description.pipe.mjs +0 -0
  764. /package/{esm2022 → package/esm2022}/core/shared/pipes/custom-field-label.pipe.mjs +0 -0
  765. /package/{esm2022 → package/esm2022}/core/shared/pipes/duration.pipe.mjs +0 -0
  766. /package/{esm2022 → package/esm2022}/core/shared/pipes/file-size.pipe.mjs +0 -0
  767. /package/{esm2022 → package/esm2022}/core/shared/pipes/has-permission.pipe.mjs +0 -0
  768. /package/{esm2022 → package/esm2022}/core/shared/pipes/locale-base.pipe.mjs +0 -0
  769. /package/{esm2022 → package/esm2022}/core/shared/pipes/locale-currency-name.pipe.mjs +0 -0
  770. /package/{esm2022 → package/esm2022}/core/shared/pipes/locale-currency.pipe.mjs +0 -0
  771. /package/{esm2022 → package/esm2022}/core/shared/pipes/locale-date.pipe.mjs +0 -0
  772. /package/{esm2022 → package/esm2022}/core/shared/pipes/locale-language-name.pipe.mjs +0 -0
  773. /package/{esm2022 → package/esm2022}/core/shared/pipes/locale-region-name.pipe.mjs +0 -0
  774. /package/{esm2022 → package/esm2022}/core/shared/pipes/sentence-case.pipe.mjs +0 -0
  775. /package/{esm2022 → package/esm2022}/core/shared/pipes/sort.pipe.mjs +0 -0
  776. /package/{esm2022 → package/esm2022}/core/shared/pipes/state-i18n-token.pipe.mjs +0 -0
  777. /package/{esm2022 → package/esm2022}/core/shared/pipes/string-to-color.pipe.mjs +0 -0
  778. /package/{esm2022 → package/esm2022}/core/shared/pipes/time-ago.pipe.mjs +0 -0
  779. /package/{esm2022 → package/esm2022}/core/shared/providers/routing/can-deactivate-detail-guard.mjs +0 -0
  780. /package/{esm2022 → package/esm2022}/core/shared/shared.module.mjs +0 -0
  781. /package/{esm2022 → package/esm2022}/core/validators/unicode-pattern.validator.mjs +0 -0
  782. /package/{esm2022 → package/esm2022}/core/vendure-admin-ui-core.mjs +0 -0
  783. /package/{esm2022 → package/esm2022}/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +0 -0
  784. /package/{esm2022 → package/esm2022}/customer/components/address-card/address-card.component.mjs +0 -0
  785. /package/{esm2022 → package/esm2022}/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +0 -0
  786. /package/{esm2022 → package/esm2022}/customer/components/customer-detail/customer-detail.component.mjs +0 -0
  787. /package/{esm2022 → package/esm2022}/customer/components/customer-group-detail/customer-group-detail.component.mjs +0 -0
  788. /package/{esm2022 → package/esm2022}/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +0 -0
  789. /package/{esm2022 → package/esm2022}/customer/components/customer-group-list/customer-group-list-bulk-actions.mjs +0 -0
  790. /package/{esm2022 → package/esm2022}/customer/components/customer-group-list/customer-group-list.component.mjs +0 -0
  791. /package/{esm2022 → package/esm2022}/customer/components/customer-group-member-list/customer-group-member-list-bulk-actions.mjs +0 -0
  792. /package/{esm2022 → package/esm2022}/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +0 -0
  793. /package/{esm2022 → package/esm2022}/customer/components/customer-history/customer-history-entry-host.component.mjs +0 -0
  794. /package/{esm2022 → package/esm2022}/customer/components/customer-history/customer-history.component.mjs +0 -0
  795. /package/{esm2022 → package/esm2022}/customer/components/customer-list/customer-list-bulk-actions.mjs +0 -0
  796. /package/{esm2022 → package/esm2022}/customer/components/customer-list/customer-list.component.mjs +0 -0
  797. /package/{esm2022 → package/esm2022}/customer/components/customer-status-label/customer-status-label.component.mjs +0 -0
  798. /package/{esm2022 → package/esm2022}/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +0 -0
  799. /package/{esm2022 → package/esm2022}/customer/customer.module.mjs +0 -0
  800. /package/{esm2022 → package/esm2022}/customer/public_api.mjs +0 -0
  801. /package/{esm2022 → package/esm2022}/customer/vendure-admin-ui-customer.mjs +0 -0
  802. /package/{esm2022 → package/esm2022}/dashboard/components/dashboard/dashboard.component.mjs +0 -0
  803. /package/{esm2022 → package/esm2022}/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +0 -0
  804. /package/{esm2022 → package/esm2022}/dashboard/dashboard.module.mjs +0 -0
  805. /package/{esm2022 → package/esm2022}/dashboard/dashboard.routes.mjs +0 -0
  806. /package/{esm2022 → package/esm2022}/dashboard/default-widgets.mjs +0 -0
  807. /package/{esm2022 → package/esm2022}/dashboard/public_api.mjs +0 -0
  808. /package/{esm2022 → package/esm2022}/dashboard/vendure-admin-ui-dashboard.mjs +0 -0
  809. /package/{esm2022 → package/esm2022}/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +0 -0
  810. /package/{esm2022 → package/esm2022}/dashboard/widgets/order-chart-widget/order-chart-widget.component.mjs +0 -0
  811. /package/{esm2022 → package/esm2022}/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +0 -0
  812. /package/{esm2022 → package/esm2022}/dashboard/widgets/test-widget/test-widget.component.mjs +0 -0
  813. /package/{esm2022 → package/esm2022}/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +0 -0
  814. /package/{esm2022 → package/esm2022}/login/components/login/login.component.mjs +0 -0
  815. /package/{esm2022 → package/esm2022}/login/login.module.mjs +0 -0
  816. /package/{esm2022 → package/esm2022}/login/login.routes.mjs +0 -0
  817. /package/{esm2022 → package/esm2022}/login/providers/login.guard.mjs +0 -0
  818. /package/{esm2022 → package/esm2022}/login/public_api.mjs +0 -0
  819. /package/{esm2022 → package/esm2022}/login/vendure-admin-ui-login.mjs +0 -0
  820. /package/{esm2022 → package/esm2022}/marketing/components/promotion-detail/promotion-detail.component.mjs +0 -0
  821. /package/{esm2022 → package/esm2022}/marketing/components/promotion-list/promotion-list-bulk-actions.mjs +0 -0
  822. /package/{esm2022 → package/esm2022}/marketing/components/promotion-list/promotion-list.component.mjs +0 -0
  823. /package/{esm2022 → package/esm2022}/marketing/marketing.module.mjs +0 -0
  824. /package/{esm2022 → package/esm2022}/marketing/marketing.routes.mjs +0 -0
  825. /package/{esm2022 → package/esm2022}/marketing/public_api.mjs +0 -0
  826. /package/{esm2022 → package/esm2022}/marketing/vendure-admin-ui-marketing.mjs +0 -0
  827. /package/{esm2022 → package/esm2022}/order/common/get-refundable-payments.mjs +0 -0
  828. /package/{esm2022 → package/esm2022}/order/common/modify-order-types.mjs +0 -0
  829. /package/{esm2022 → package/esm2022}/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +0 -0
  830. /package/{esm2022 → package/esm2022}/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +0 -0
  831. /package/{esm2022 → package/esm2022}/order/components/coupon-code-selector/coupon-code-selector.component.mjs +0 -0
  832. /package/{esm2022 → package/esm2022}/order/components/draft-order-detail/draft-order-detail.component.mjs +0 -0
  833. /package/{esm2022 → package/esm2022}/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +0 -0
  834. /package/{esm2022 → package/esm2022}/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +0 -0
  835. /package/{esm2022 → package/esm2022}/order/components/fulfillment-card/fulfillment-card.component.mjs +0 -0
  836. /package/{esm2022 → package/esm2022}/order/components/fulfillment-detail/fulfillment-detail.component.mjs +0 -0
  837. /package/{esm2022 → package/esm2022}/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +0 -0
  838. /package/{esm2022 → package/esm2022}/order/components/line-fulfillment/line-fulfillment.component.mjs +0 -0
  839. /package/{esm2022 → package/esm2022}/order/components/line-refunds/line-refunds.component.mjs +0 -0
  840. /package/{esm2022 → package/esm2022}/order/components/modification-detail/modification-detail.component.mjs +0 -0
  841. /package/{esm2022 → package/esm2022}/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +0 -0
  842. /package/{esm2022 → package/esm2022}/order/components/order-data-table/order-data-table.component.mjs +0 -0
  843. /package/{esm2022 → package/esm2022}/order/components/order-data-table/order-total-column.component.mjs +0 -0
  844. /package/{esm2022 → package/esm2022}/order/components/order-detail/order-detail.component.mjs +0 -0
  845. /package/{esm2022 → package/esm2022}/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +0 -0
  846. /package/{esm2022 → package/esm2022}/order/components/order-history/order-history-entry-host.component.mjs +0 -0
  847. /package/{esm2022 → package/esm2022}/order/components/order-history/order-history.component.mjs +0 -0
  848. /package/{esm2022 → package/esm2022}/order/components/order-list/order-list.component.mjs +0 -0
  849. /package/{esm2022 → package/esm2022}/order/components/order-modification-summary/order-modification-summary.component.mjs +0 -0
  850. /package/{esm2022 → package/esm2022}/order/components/order-payment-card/order-payment-card.component.mjs +0 -0
  851. /package/{esm2022 → package/esm2022}/order/components/order-process-graph/constants.mjs +0 -0
  852. /package/{esm2022 → package/esm2022}/order/components/order-process-graph/order-process-edge.component.mjs +0 -0
  853. /package/{esm2022 → package/esm2022}/order/components/order-process-graph/order-process-graph.component.mjs +0 -0
  854. /package/{esm2022 → package/esm2022}/order/components/order-process-graph/order-process-node.component.mjs +0 -0
  855. /package/{esm2022 → package/esm2022}/order/components/order-process-graph/types.mjs +0 -0
  856. /package/{esm2022 → package/esm2022}/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +0 -0
  857. /package/{esm2022 → package/esm2022}/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +0 -0
  858. /package/{esm2022 → package/esm2022}/order/components/order-table/order-table.component.mjs +0 -0
  859. /package/{esm2022 → package/esm2022}/order/components/payment-detail/payment-detail.component.mjs +0 -0
  860. /package/{esm2022 → package/esm2022}/order/components/payment-for-refund-selector/payment-for-refund-selector.component.mjs +0 -0
  861. /package/{esm2022 → package/esm2022}/order/components/payment-state-label/payment-state-label.component.mjs +0 -0
  862. /package/{esm2022 → package/esm2022}/order/components/refund-detail/refund-detail.component.mjs +0 -0
  863. /package/{esm2022 → package/esm2022}/order/components/refund-order-dialog/refund-order-dialog.component.mjs +0 -0
  864. /package/{esm2022 → package/esm2022}/order/components/refund-state-label/refund-state-label.component.mjs +0 -0
  865. /package/{esm2022 → package/esm2022}/order/components/select-address-dialog/select-address-dialog.component.mjs +0 -0
  866. /package/{esm2022 → package/esm2022}/order/components/select-address-dialog/select-address-dialog.graphql.mjs +0 -0
  867. /package/{esm2022 → package/esm2022}/order/components/select-customer-dialog/select-customer-dialog.component.mjs +0 -0
  868. /package/{esm2022 → package/esm2022}/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.mjs +0 -0
  869. /package/{esm2022 → package/esm2022}/order/components/seller-orders-card/seller-orders-card.component.mjs +0 -0
  870. /package/{esm2022 → package/esm2022}/order/components/seller-orders-card/seller-orders-card.graphql.mjs +0 -0
  871. /package/{esm2022 → package/esm2022}/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +0 -0
  872. /package/{esm2022 → package/esm2022}/order/components/simple-item-list/simple-item-list.component.mjs +0 -0
  873. /package/{esm2022 → package/esm2022}/order/order.module.mjs +0 -0
  874. /package/{esm2022 → package/esm2022}/order/order.routes.mjs +0 -0
  875. /package/{esm2022 → package/esm2022}/order/providers/order-transition.service.mjs +0 -0
  876. /package/{esm2022 → package/esm2022}/order/providers/routing/order.guard.mjs +0 -0
  877. /package/{esm2022 → package/esm2022}/order/public_api.mjs +0 -0
  878. /package/{esm2022 → package/esm2022}/order/vendure-admin-ui-order.mjs +0 -0
  879. /package/{esm2022 → package/esm2022}/public_api.mjs +0 -0
  880. /package/{esm2022 → package/esm2022}/react/components/react-custom-column.component.mjs +0 -0
  881. /package/{esm2022 → package/esm2022}/react/components/react-custom-detail.component.mjs +0 -0
  882. /package/{esm2022 → package/esm2022}/react/components/react-form-input.component.mjs +0 -0
  883. /package/{esm2022 → package/esm2022}/react/components/react-route.component.mjs +0 -0
  884. /package/{esm2022 → package/esm2022}/react/directives/react-component-host.directive.mjs +0 -0
  885. /package/{esm2022 → package/esm2022}/react/public_api.mjs +0 -0
  886. /package/{esm2022 → package/esm2022}/react/react-components/ActionBar.mjs +0 -0
  887. /package/{esm2022 → package/esm2022}/react/react-components/Card.mjs +0 -0
  888. /package/{esm2022 → package/esm2022}/react/react-components/CdsIcon.mjs +0 -0
  889. /package/{esm2022 → package/esm2022}/react/react-components/FormField.mjs +0 -0
  890. /package/{esm2022 → package/esm2022}/react/react-components/Link.mjs +0 -0
  891. /package/{esm2022 → package/esm2022}/react/react-components/PageBlock.mjs +0 -0
  892. /package/{esm2022 → package/esm2022}/react/react-components/PageDetailLayout.mjs +0 -0
  893. /package/{esm2022 → package/esm2022}/react/react-components/RichTextEditor.mjs +0 -0
  894. /package/{esm2022 → package/esm2022}/react/react-hooks/use-detail-component-data.mjs +0 -0
  895. /package/{esm2022 → package/esm2022}/react/react-hooks/use-form-control.mjs +0 -0
  896. /package/{esm2022 → package/esm2022}/react/react-hooks/use-injector.mjs +0 -0
  897. /package/{esm2022 → package/esm2022}/react/react-hooks/use-page-metadata.mjs +0 -0
  898. /package/{esm2022 → package/esm2022}/react/react-hooks/use-query.mjs +0 -0
  899. /package/{esm2022 → package/esm2022}/react/react-hooks/use-rich-text-editor.mjs +0 -0
  900. /package/{esm2022 → package/esm2022}/react/react-hooks/use-route-params.mjs +0 -0
  901. /package/{esm2022 → package/esm2022}/react/register-react-custom-detail-component.mjs +0 -0
  902. /package/{esm2022 → package/esm2022}/react/register-react-data-table-component.mjs +0 -0
  903. /package/{esm2022 → package/esm2022}/react/register-react-form-input-component.mjs +0 -0
  904. /package/{esm2022 → package/esm2022}/react/register-react-route-component.mjs +0 -0
  905. /package/{esm2022 → package/esm2022}/react/types.mjs +0 -0
  906. /package/{esm2022 → package/esm2022}/react/vendure-admin-ui-react.mjs +0 -0
  907. /package/{esm2022 → package/esm2022}/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +0 -0
  908. /package/{esm2022 → package/esm2022}/settings/components/admin-detail/admin-detail.component.mjs +0 -0
  909. /package/{esm2022 → package/esm2022}/settings/components/administrator-list/administrator-list-bulk-actions.mjs +0 -0
  910. /package/{esm2022 → package/esm2022}/settings/components/administrator-list/administrator-list.component.mjs +0 -0
  911. /package/{esm2022 → package/esm2022}/settings/components/channel-detail/channel-detail.component.mjs +0 -0
  912. /package/{esm2022 → package/esm2022}/settings/components/channel-list/channel-list-bulk-actions.mjs +0 -0
  913. /package/{esm2022 → package/esm2022}/settings/components/channel-list/channel-list.component.mjs +0 -0
  914. /package/{esm2022 → package/esm2022}/settings/components/country-detail/country-detail.component.mjs +0 -0
  915. /package/{esm2022 → package/esm2022}/settings/components/country-list/country-list-bulk-actions.mjs +0 -0
  916. /package/{esm2022 → package/esm2022}/settings/components/country-list/country-list.component.mjs +0 -0
  917. /package/{esm2022 → package/esm2022}/settings/components/global-settings/global-settings.component.mjs +0 -0
  918. /package/{esm2022 → package/esm2022}/settings/components/payment-method-detail/payment-method-detail.component.mjs +0 -0
  919. /package/{esm2022 → package/esm2022}/settings/components/payment-method-list/payment-method-list-bulk-actions.mjs +0 -0
  920. /package/{esm2022 → package/esm2022}/settings/components/payment-method-list/payment-method-list.component.mjs +0 -0
  921. /package/{esm2022 → package/esm2022}/settings/components/permission-grid/permission-grid.component.mjs +0 -0
  922. /package/{esm2022 → package/esm2022}/settings/components/profile/profile.component.mjs +0 -0
  923. /package/{esm2022 → package/esm2022}/settings/components/role-detail/role-detail.component.mjs +0 -0
  924. /package/{esm2022 → package/esm2022}/settings/components/role-list/role-list-bulk-actions.mjs +0 -0
  925. /package/{esm2022 → package/esm2022}/settings/components/role-list/role-list.component.mjs +0 -0
  926. /package/{esm2022 → package/esm2022}/settings/components/seller-detail/seller-detail.component.mjs +0 -0
  927. /package/{esm2022 → package/esm2022}/settings/components/seller-list/seller-list-bulk-actions.mjs +0 -0
  928. /package/{esm2022 → package/esm2022}/settings/components/seller-list/seller-list.component.mjs +0 -0
  929. /package/{esm2022 → package/esm2022}/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +0 -0
  930. /package/{esm2022 → package/esm2022}/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +0 -0
  931. /package/{esm2022 → package/esm2022}/settings/components/shipping-method-list/shipping-method-list-bulk-actions.mjs +0 -0
  932. /package/{esm2022 → package/esm2022}/settings/components/shipping-method-list/shipping-method-list.component.mjs +0 -0
  933. /package/{esm2022 → package/esm2022}/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +0 -0
  934. /package/{esm2022 → package/esm2022}/settings/components/stock-location-detail/stock-location-detail.component.mjs +0 -0
  935. /package/{esm2022 → package/esm2022}/settings/components/stock-location-list/stock-location-list-bulk-actions.mjs +0 -0
  936. /package/{esm2022 → package/esm2022}/settings/components/stock-location-list/stock-location-list.component.mjs +0 -0
  937. /package/{esm2022 → package/esm2022}/settings/components/tax-category-detail/tax-category-detail.component.mjs +0 -0
  938. /package/{esm2022 → package/esm2022}/settings/components/tax-category-list/tax-category-list-bulk-actions.mjs +0 -0
  939. /package/{esm2022 → package/esm2022}/settings/components/tax-category-list/tax-category-list.component.mjs +0 -0
  940. /package/{esm2022 → package/esm2022}/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +0 -0
  941. /package/{esm2022 → package/esm2022}/settings/components/tax-rate-list/tax-rate-list-bulk-actions.mjs +0 -0
  942. /package/{esm2022 → package/esm2022}/settings/components/tax-rate-list/tax-rate-list.component.mjs +0 -0
  943. /package/{esm2022 → package/esm2022}/settings/components/test-address-form/test-address-form.component.mjs +0 -0
  944. /package/{esm2022 → package/esm2022}/settings/components/test-order-builder/test-order-builder.component.mjs +0 -0
  945. /package/{esm2022 → package/esm2022}/settings/components/test-shipping-methods/test-shipping-methods.component.mjs +0 -0
  946. /package/{esm2022 → package/esm2022}/settings/components/zone-detail/zone-detail.component.mjs +0 -0
  947. /package/{esm2022 → package/esm2022}/settings/components/zone-list/zone-list-bulk-actions.mjs +0 -0
  948. /package/{esm2022 → package/esm2022}/settings/components/zone-list/zone-list.component.mjs +0 -0
  949. /package/{esm2022 → package/esm2022}/settings/components/zone-member-list/zone-member-controls.directive.mjs +0 -0
  950. /package/{esm2022 → package/esm2022}/settings/components/zone-member-list/zone-member-list-bulk-actions.mjs +0 -0
  951. /package/{esm2022 → package/esm2022}/settings/components/zone-member-list/zone-member-list-header.directive.mjs +0 -0
  952. /package/{esm2022 → package/esm2022}/settings/components/zone-member-list/zone-member-list.component.mjs +0 -0
  953. /package/{esm2022 → package/esm2022}/settings/providers/routing/profile-resolver.mjs +0 -0
  954. /package/{esm2022 → package/esm2022}/settings/public_api.mjs +0 -0
  955. /package/{esm2022 → package/esm2022}/settings/settings.module.mjs +0 -0
  956. /package/{esm2022 → package/esm2022}/settings/settings.routes.mjs +0 -0
  957. /package/{esm2022 → package/esm2022}/settings/vendure-admin-ui-settings.mjs +0 -0
  958. /package/{esm2022 → package/esm2022}/system/components/health-check/health-check.component.mjs +0 -0
  959. /package/{esm2022 → package/esm2022}/system/components/job-list/job-list.component.mjs +0 -0
  960. /package/{esm2022 → package/esm2022}/system/components/job-state-label/job-state-label.component.mjs +0 -0
  961. /package/{esm2022 → package/esm2022}/system/public_api.mjs +0 -0
  962. /package/{esm2022 → package/esm2022}/system/system.module.mjs +0 -0
  963. /package/{esm2022 → package/esm2022}/system/system.routes.mjs +0 -0
  964. /package/{esm2022 → package/esm2022}/system/vendure-admin-ui-system.mjs +0 -0
  965. /package/{esm2022 → package/esm2022}/vendure-admin-ui.mjs +0 -0
  966. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-catalog.mjs +0 -0
  967. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-catalog.mjs.map +0 -0
  968. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-dashboard.mjs +0 -0
  969. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-dashboard.mjs.map +0 -0
  970. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-login.mjs +0 -0
  971. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-login.mjs.map +0 -0
  972. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-marketing.mjs +0 -0
  973. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-marketing.mjs.map +0 -0
  974. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-react.mjs +0 -0
  975. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-react.mjs.map +0 -0
  976. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-settings.mjs +0 -0
  977. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-settings.mjs.map +0 -0
  978. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-system.mjs +0 -0
  979. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui-system.mjs.map +0 -0
  980. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui.mjs +0 -0
  981. /package/{fesm2022 → package/fesm2022}/vendure-admin-ui.mjs.map +0 -0
  982. /package/{index.d.ts → package/index.d.ts} +0 -0
  983. /package/{login → package/login}/components/login/login.component.d.ts +0 -0
  984. /package/{login → package/login}/index.d.ts +0 -0
  985. /package/{login → package/login}/login.module.d.ts +0 -0
  986. /package/{login → package/login}/login.routes.d.ts +0 -0
  987. /package/{login → package/login}/providers/login.guard.d.ts +0 -0
  988. /package/{login → package/login}/public_api.d.ts +0 -0
  989. /package/{marketing → package/marketing}/components/promotion-detail/promotion-detail.component.d.ts +0 -0
  990. /package/{marketing → package/marketing}/components/promotion-list/promotion-list-bulk-actions.d.ts +0 -0
  991. /package/{marketing → package/marketing}/components/promotion-list/promotion-list.component.d.ts +0 -0
  992. /package/{marketing → package/marketing}/index.d.ts +0 -0
  993. /package/{marketing → package/marketing}/marketing.module.d.ts +0 -0
  994. /package/{marketing → package/marketing}/marketing.routes.d.ts +0 -0
  995. /package/{marketing → package/marketing}/public_api.d.ts +0 -0
  996. /package/{order → package/order}/common/get-refundable-payments.d.ts +0 -0
  997. /package/{order → package/order}/common/modify-order-types.d.ts +0 -0
  998. /package/{order → package/order}/components/add-manual-payment-dialog/add-manual-payment-dialog.component.d.ts +0 -0
  999. /package/{order → package/order}/components/cancel-order-dialog/cancel-order-dialog.component.d.ts +0 -0
  1000. /package/{order → package/order}/components/coupon-code-selector/coupon-code-selector.component.d.ts +0 -0
  1001. /package/{order → package/order}/components/draft-order-detail/draft-order-detail.component.d.ts +0 -0
  1002. /package/{order → package/order}/components/draft-order-variant-selector/draft-order-variant-selector.component.d.ts +0 -0
  1003. /package/{order → package/order}/components/fulfill-order-dialog/fulfill-order-dialog.component.d.ts +0 -0
  1004. /package/{order → package/order}/components/fulfillment-card/fulfillment-card.component.d.ts +0 -0
  1005. /package/{order → package/order}/components/fulfillment-detail/fulfillment-detail.component.d.ts +0 -0
  1006. /package/{order → package/order}/components/fulfillment-state-label/fulfillment-state-label.component.d.ts +0 -0
  1007. /package/{order → package/order}/components/line-fulfillment/line-fulfillment.component.d.ts +0 -0
  1008. /package/{order → package/order}/components/line-refunds/line-refunds.component.d.ts +0 -0
  1009. /package/{order → package/order}/components/modification-detail/modification-detail.component.d.ts +0 -0
  1010. /package/{order → package/order}/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +0 -0
  1011. /package/{order → package/order}/components/order-data-table/order-data-table.component.d.ts +0 -0
  1012. /package/{order → package/order}/components/order-data-table/order-total-column.component.d.ts +0 -0
  1013. /package/{order → package/order}/components/order-detail/order-detail.component.d.ts +0 -0
  1014. /package/{order → package/order}/components/order-editor/order-editor.component.d.ts +0 -0
  1015. /package/{order → package/order}/components/order-edits-preview-dialog/order-edits-preview-dialog.component.d.ts +0 -0
  1016. /package/{order → package/order}/components/order-history/order-history-entry-host.component.d.ts +0 -0
  1017. /package/{order → package/order}/components/order-history/order-history.component.d.ts +0 -0
  1018. /package/{order → package/order}/components/order-list/order-list.component.d.ts +0 -0
  1019. /package/{order → package/order}/components/order-modification-summary/order-modification-summary.component.d.ts +0 -0
  1020. /package/{order → package/order}/components/order-payment-card/order-payment-card.component.d.ts +0 -0
  1021. /package/{order → package/order}/components/order-process-graph/constants.d.ts +0 -0
  1022. /package/{order → package/order}/components/order-process-graph/order-process-edge.component.d.ts +0 -0
  1023. /package/{order → package/order}/components/order-process-graph/order-process-graph.component.d.ts +0 -0
  1024. /package/{order → package/order}/components/order-process-graph/order-process-node.component.d.ts +0 -0
  1025. /package/{order → package/order}/components/order-process-graph/types.d.ts +0 -0
  1026. /package/{order → package/order}/components/order-process-graph-dialog/order-process-graph-dialog.component.d.ts +0 -0
  1027. /package/{order → package/order}/components/order-state-select-dialog/order-state-select-dialog.component.d.ts +0 -0
  1028. /package/{order → package/order}/components/order-table/order-table.component.d.ts +0 -0
  1029. /package/{order → package/order}/components/payment-detail/payment-detail.component.d.ts +0 -0
  1030. /package/{order → package/order}/components/payment-for-refund-selector/payment-for-refund-selector.component.d.ts +0 -0
  1031. /package/{order → package/order}/components/payment-state-label/payment-state-label.component.d.ts +0 -0
  1032. /package/{order → package/order}/components/refund-detail/refund-detail.component.d.ts +0 -0
  1033. /package/{order → package/order}/components/refund-order-dialog/refund-order-dialog.component.d.ts +0 -0
  1034. /package/{order → package/order}/components/refund-state-label/refund-state-label.component.d.ts +0 -0
  1035. /package/{order → package/order}/components/select-address-dialog/select-address-dialog.component.d.ts +0 -0
  1036. /package/{order → package/order}/components/select-address-dialog/select-address-dialog.graphql.d.ts +0 -0
  1037. /package/{order → package/order}/components/select-customer-dialog/select-customer-dialog.component.d.ts +0 -0
  1038. /package/{order → package/order}/components/select-shipping-method-dialog/select-shipping-method-dialog.component.d.ts +0 -0
  1039. /package/{order → package/order}/components/seller-orders-card/seller-orders-card.component.d.ts +0 -0
  1040. /package/{order → package/order}/components/seller-orders-card/seller-orders-card.graphql.d.ts +0 -0
  1041. /package/{order → package/order}/components/settle-refund-dialog/settle-refund-dialog.component.d.ts +0 -0
  1042. /package/{order → package/order}/components/simple-item-list/simple-item-list.component.d.ts +0 -0
  1043. /package/{order → package/order}/index.d.ts +0 -0
  1044. /package/{order → package/order}/order.module.d.ts +0 -0
  1045. /package/{order → package/order}/order.routes.d.ts +0 -0
  1046. /package/{order → package/order}/providers/order-transition.service.d.ts +0 -0
  1047. /package/{order → package/order}/providers/routing/order.guard.d.ts +0 -0
  1048. /package/{order → package/order}/public_api.d.ts +0 -0
  1049. /package/{public_api.d.ts → package/public_api.d.ts} +0 -0
  1050. /package/{react → package/react}/components/react-custom-column.component.d.ts +0 -0
  1051. /package/{react → package/react}/components/react-custom-detail.component.d.ts +0 -0
  1052. /package/{react → package/react}/components/react-form-input.component.d.ts +0 -0
  1053. /package/{react → package/react}/components/react-route.component.d.ts +0 -0
  1054. /package/{react → package/react}/directives/react-component-host.directive.d.ts +0 -0
  1055. /package/{react → package/react}/index.d.ts +0 -0
  1056. /package/{react → package/react}/public_api.d.ts +0 -0
  1057. /package/{react → package/react}/react-components/ActionBar.d.ts +0 -0
  1058. /package/{react → package/react}/react-components/Card.d.ts +0 -0
  1059. /package/{react → package/react}/react-components/CdsIcon.d.ts +0 -0
  1060. /package/{react → package/react}/react-components/FormField.d.ts +0 -0
  1061. /package/{react → package/react}/react-components/Link.d.ts +0 -0
  1062. /package/{react → package/react}/react-components/PageBlock.d.ts +0 -0
  1063. /package/{react → package/react}/react-components/PageDetailLayout.d.ts +0 -0
  1064. /package/{react → package/react}/react-components/RichTextEditor.d.ts +0 -0
  1065. /package/{react → package/react}/react-hooks/use-detail-component-data.d.ts +0 -0
  1066. /package/{react → package/react}/react-hooks/use-form-control.d.ts +0 -0
  1067. /package/{react → package/react}/react-hooks/use-injector.d.ts +0 -0
  1068. /package/{react → package/react}/react-hooks/use-page-metadata.d.ts +0 -0
  1069. /package/{react → package/react}/react-hooks/use-query.d.ts +0 -0
  1070. /package/{react → package/react}/react-hooks/use-rich-text-editor.d.ts +0 -0
  1071. /package/{react → package/react}/react-hooks/use-route-params.d.ts +0 -0
  1072. /package/{react → package/react}/register-react-custom-detail-component.d.ts +0 -0
  1073. /package/{react → package/react}/register-react-data-table-component.d.ts +0 -0
  1074. /package/{react → package/react}/register-react-form-input-component.d.ts +0 -0
  1075. /package/{react → package/react}/register-react-route-component.d.ts +0 -0
  1076. /package/{react → package/react}/types.d.ts +0 -0
  1077. /package/{settings → package/settings}/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.d.ts +0 -0
  1078. /package/{settings → package/settings}/components/admin-detail/admin-detail.component.d.ts +0 -0
  1079. /package/{settings → package/settings}/components/administrator-list/administrator-list-bulk-actions.d.ts +0 -0
  1080. /package/{settings → package/settings}/components/administrator-list/administrator-list.component.d.ts +0 -0
  1081. /package/{settings → package/settings}/components/channel-detail/channel-detail.component.d.ts +0 -0
  1082. /package/{settings → package/settings}/components/channel-list/channel-list-bulk-actions.d.ts +0 -0
  1083. /package/{settings → package/settings}/components/channel-list/channel-list.component.d.ts +0 -0
  1084. /package/{settings → package/settings}/components/country-detail/country-detail.component.d.ts +0 -0
  1085. /package/{settings → package/settings}/components/country-list/country-list-bulk-actions.d.ts +0 -0
  1086. /package/{settings → package/settings}/components/country-list/country-list.component.d.ts +0 -0
  1087. /package/{settings → package/settings}/components/global-settings/global-settings.component.d.ts +0 -0
  1088. /package/{settings → package/settings}/components/payment-method-detail/payment-method-detail.component.d.ts +0 -0
  1089. /package/{settings → package/settings}/components/payment-method-list/payment-method-list-bulk-actions.d.ts +0 -0
  1090. /package/{settings → package/settings}/components/payment-method-list/payment-method-list.component.d.ts +0 -0
  1091. /package/{settings → package/settings}/components/permission-grid/permission-grid.component.d.ts +0 -0
  1092. /package/{settings → package/settings}/components/profile/profile.component.d.ts +0 -0
  1093. /package/{settings → package/settings}/components/role-detail/role-detail.component.d.ts +0 -0
  1094. /package/{settings → package/settings}/components/role-list/role-list-bulk-actions.d.ts +0 -0
  1095. /package/{settings → package/settings}/components/role-list/role-list.component.d.ts +0 -0
  1096. /package/{settings → package/settings}/components/seller-detail/seller-detail.component.d.ts +0 -0
  1097. /package/{settings → package/settings}/components/seller-list/seller-list-bulk-actions.d.ts +0 -0
  1098. /package/{settings → package/settings}/components/seller-list/seller-list.component.d.ts +0 -0
  1099. /package/{settings → package/settings}/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.d.ts +0 -0
  1100. /package/{settings → package/settings}/components/shipping-method-detail/shipping-method-detail.component.d.ts +0 -0
  1101. /package/{settings → package/settings}/components/shipping-method-list/shipping-method-list-bulk-actions.d.ts +0 -0
  1102. /package/{settings → package/settings}/components/shipping-method-list/shipping-method-list.component.d.ts +0 -0
  1103. /package/{settings → package/settings}/components/shipping-method-test-result/shipping-method-test-result.component.d.ts +0 -0
  1104. /package/{settings → package/settings}/components/stock-location-detail/stock-location-detail.component.d.ts +0 -0
  1105. /package/{settings → package/settings}/components/stock-location-list/stock-location-list-bulk-actions.d.ts +0 -0
  1106. /package/{settings → package/settings}/components/stock-location-list/stock-location-list.component.d.ts +0 -0
  1107. /package/{settings → package/settings}/components/tax-category-detail/tax-category-detail.component.d.ts +0 -0
  1108. /package/{settings → package/settings}/components/tax-category-list/tax-category-list-bulk-actions.d.ts +0 -0
  1109. /package/{settings → package/settings}/components/tax-category-list/tax-category-list.component.d.ts +0 -0
  1110. /package/{settings → package/settings}/components/tax-rate-detail/tax-rate-detail.component.d.ts +0 -0
  1111. /package/{settings → package/settings}/components/tax-rate-list/tax-rate-list-bulk-actions.d.ts +0 -0
  1112. /package/{settings → package/settings}/components/tax-rate-list/tax-rate-list.component.d.ts +0 -0
  1113. /package/{settings → package/settings}/components/test-address-form/test-address-form.component.d.ts +0 -0
  1114. /package/{settings → package/settings}/components/test-order-builder/test-order-builder.component.d.ts +0 -0
  1115. /package/{settings → package/settings}/components/test-shipping-methods/test-shipping-methods.component.d.ts +0 -0
  1116. /package/{settings → package/settings}/components/zone-detail/zone-detail.component.d.ts +0 -0
  1117. /package/{settings → package/settings}/components/zone-list/zone-list-bulk-actions.d.ts +0 -0
  1118. /package/{settings → package/settings}/components/zone-list/zone-list.component.d.ts +0 -0
  1119. /package/{settings → package/settings}/components/zone-member-list/zone-member-controls.directive.d.ts +0 -0
  1120. /package/{settings → package/settings}/components/zone-member-list/zone-member-list-bulk-actions.d.ts +0 -0
  1121. /package/{settings → package/settings}/components/zone-member-list/zone-member-list-header.directive.d.ts +0 -0
  1122. /package/{settings → package/settings}/components/zone-member-list/zone-member-list.component.d.ts +0 -0
  1123. /package/{settings → package/settings}/index.d.ts +0 -0
  1124. /package/{settings → package/settings}/providers/routing/profile-resolver.d.ts +0 -0
  1125. /package/{settings → package/settings}/public_api.d.ts +0 -0
  1126. /package/{settings → package/settings}/settings.module.d.ts +0 -0
  1127. /package/{settings → package/settings}/settings.routes.d.ts +0 -0
  1128. /package/{static → package/static}/assets/.gitkeep +0 -0
  1129. /package/{static → package/static}/assets/logo-login.webp +0 -0
  1130. /package/{static → package/static}/assets/logo-top.webp +0 -0
  1131. /package/{static → package/static}/favicon.ico +0 -0
  1132. /package/{static → package/static}/fonts/fonts.scss +0 -0
  1133. /package/{static → package/static}/fonts/inter-cyrillic-ext.woff2 +0 -0
  1134. /package/{static → package/static}/fonts/inter-cyrillic.woff2 +0 -0
  1135. /package/{static → package/static}/fonts/inter-greek-ext.woff2 +0 -0
  1136. /package/{static → package/static}/fonts/inter-greek.woff2 +0 -0
  1137. /package/{static → package/static}/fonts/inter-latin-ext.woff2 +0 -0
  1138. /package/{static → package/static}/fonts/inter-latin.woff2 +0 -0
  1139. /package/{static → package/static}/fonts/inter-vietnamese.woff2 +0 -0
  1140. /package/{static → package/static}/i18n-messages/ar.json +0 -0
  1141. /package/{static → package/static}/i18n-messages/cs.json +0 -0
  1142. /package/{static → package/static}/i18n-messages/de.json +0 -0
  1143. /package/{static → package/static}/i18n-messages/en.json +0 -0
  1144. /package/{static → package/static}/i18n-messages/es.json +0 -0
  1145. /package/{static → package/static}/i18n-messages/fa.json +0 -0
  1146. /package/{static → package/static}/i18n-messages/fr.json +0 -0
  1147. /package/{static → package/static}/i18n-messages/he.json +0 -0
  1148. /package/{static → package/static}/i18n-messages/hr.json +0 -0
  1149. /package/{static → package/static}/i18n-messages/it.json +0 -0
  1150. /package/{static → package/static}/i18n-messages/nb.json +0 -0
  1151. /package/{static → package/static}/i18n-messages/ne.json +0 -0
  1152. /package/{static → package/static}/i18n-messages/pl.json +0 -0
  1153. /package/{static → package/static}/i18n-messages/pt_BR.json +0 -0
  1154. /package/{static → package/static}/i18n-messages/pt_PT.json +0 -0
  1155. /package/{static → package/static}/i18n-messages/ru.json +0 -0
  1156. /package/{static → package/static}/i18n-messages/sv.json +0 -0
  1157. /package/{static → package/static}/i18n-messages/uk.json +0 -0
  1158. /package/{static → package/static}/i18n-messages/zh_Hans.json +0 -0
  1159. /package/{static → package/static}/i18n-messages/zh_Hant.json +0 -0
  1160. /package/{static → package/static}/index.html +0 -0
  1161. /package/{static → package/static}/polyfills.ts +0 -0
  1162. /package/{static → package/static}/styles/_mixins.scss +0 -0
  1163. /package/{static → package/static}/styles/_variables.scss +0 -0
  1164. /package/{static → package/static}/styles/global/_buttons.scss +0 -0
  1165. /package/{static → package/static}/styles/global/_clarity.scss +0 -0
  1166. /package/{static → package/static}/styles/global/_forms.scss +0 -0
  1167. /package/{static → package/static}/styles/global/_global.scss +0 -0
  1168. /package/{static → package/static}/styles/global/_overrides.scss +0 -0
  1169. /package/{static → package/static}/styles/global/_sass-overrides.scss +0 -0
  1170. /package/{static → package/static}/styles/global/_utilities.scss +0 -0
  1171. /package/{static → package/static}/styles/rtl.scss +0 -0
  1172. /package/{static → package/static}/styles/styles.scss +0 -0
  1173. /package/{static → package/static}/styles/theme/dark.scss +0 -0
  1174. /package/{static → package/static}/styles/theme/default.scss +0 -0
  1175. /package/{static → package/static}/styles/ui-extension-theme.scss +0 -0
  1176. /package/{static → package/static}/theme.min.css +0 -0
  1177. /package/{static → package/static}/vendure-ui-config.json +0 -0
  1178. /package/{system → package/system}/components/health-check/health-check.component.d.ts +0 -0
  1179. /package/{system → package/system}/components/job-list/job-list.component.d.ts +0 -0
  1180. /package/{system → package/system}/components/job-state-label/job-state-label.component.d.ts +0 -0
  1181. /package/{system → package/system}/index.d.ts +0 -0
  1182. /package/{system → package/system}/public_api.d.ts +0 -0
  1183. /package/{system → package/system}/system.module.d.ts +0 -0
  1184. /package/{system → package/system}/system.routes.d.ts +0 -0
@@ -194,10 +194,12 @@ export class OrderEditorComponent extends TypedBaseDetailComponent {
194
194
  if (adjustedLine) {
195
195
  return adjustedLine.quantity;
196
196
  }
197
- else {
198
- const line = this.orderSnapshot.lines.find(l => l.id === lineId);
199
- return line ? line.quantity : 0;
197
+ const addedLine = this.modifyOrderInput.addItems?.find(l => this.getIdForAddedItem(l) === lineId);
198
+ if (addedLine) {
199
+ return addedLine.quantity ?? 1;
200
200
  }
201
+ const line = this.orderSnapshot.lines.find(l => l.id === lineId);
202
+ return line ? line.quantity : 1;
201
203
  }
202
204
  updateLineQuantity(line, quantity) {
203
205
  const { adjustOrderLines } = this.modifyOrderInput;
@@ -480,4 +482,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
480
482
  type: Component,
481
483
  args: [{ selector: 'vdr-order-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\"></div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <button class=\"btn btn-secondary\" (click)=\"transitionToPriorState(order)\">\r\n {{ 'order.cancel-modification' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-page-detail-layout *ngIf=\"entity as order\">\r\n <vdr-page-detail-sidebar>\r\n <vdr-card [title]=\"'order.modification-summary' | translate\">\r\n <vdr-order-modification-summary\r\n [orderSnapshot]=\"orderSnapshot\"\r\n [modifyOrderInput]=\"modifyOrderInput\"\r\n [addedLines]=\"addedLines\"\r\n [shippingAddressForm]=\"shippingAddressForm\"\r\n [billingAddressForm]=\"billingAddressForm\"\r\n [couponCodesControl]=\"couponCodesControl\"\r\n [updatedShippingMethods]=\"updatedShippingMethods\"\r\n ></vdr-order-modification-summary>\r\n\r\n <div *ngIf=\"!hasModifications()\" class=\"no-modifications\">\r\n {{ 'order.no-modifications-made' | translate }}\r\n </div>\r\n\r\n <div class=\"summary-controls\">\r\n <vdr-form-field [label]=\"'order.note' | translate\">\r\n <textarea\r\n [(ngModel)]=\"note\"\r\n name=\"note\"\r\n required\r\n [disabled]=\"!hasModifications()\"\r\n ></textarea>\r\n </vdr-form-field>\r\n <label class=\"flex items-center\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"recalculateShipping\"\r\n [disabled]=\"!hasModifications()\"\r\n />\r\n <div class=\"ml-1\">{{ 'order.modification-recalculate-shipping' | translate }}</div>\r\n </label>\r\n <button\r\n class=\"btn btn-primary mt-2\"\r\n [disabled]=\"!hasModifications()\"\r\n (click)=\"previewAndModify(order)\"\r\n >\r\n {{ 'order.preview-changes' | translate }}\r\n </button>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.set-coupon-codes' | translate\">\r\n <vdr-coupon-code-selector [control]=\"couponCodesControl\"></vdr-coupon-code-selector>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.shipping-address' | translate\">\r\n <ng-template vdrCardControls>\r\n <button\r\n class=\"button-small\"\r\n [title]=\"'order.edit-shipping-address' | translate\"\r\n (click)=\"editingShippingAddress = !editingShippingAddress\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n </button>\r\n </ng-template>\r\n <vdr-formatted-address\r\n *ngIf=\"!editingShippingAddress\"\r\n [address]=\"shippingAddressForm.value\"\r\n ></vdr-formatted-address>\r\n <vdr-address-form\r\n *ngIf=\"editingShippingAddress\"\r\n [formGroup]=\"shippingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.billing-address' | translate\">\r\n <ng-template vdrCardControls>\r\n <button\r\n class=\"button-small\"\r\n [title]=\"'order.edit-billing-address' | translate\"\r\n (click)=\"editingBillingAddress = !editingBillingAddress\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n </button>\r\n </ng-template>\r\n <vdr-formatted-address\r\n *ngIf=\"!editingBillingAddress\"\r\n [address]=\"billingAddressForm.value\"\r\n ></vdr-formatted-address>\r\n <vdr-address-form\r\n *ngIf=\"editingBillingAddress\"\r\n [formGroup]=\"billingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block>\r\n <vdr-card [paddingX]=\"false\">\r\n <vdr-data-table-2 id=\"modify-order\" class=\"order-table\" [items]=\"order.lines.concat(addedLines)\">\r\n <!-- Here we define all the available columns -->\r\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\r\n <ng-template let-line=\"item\">\r\n {{ line.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n id=\"created-at\"\r\n [heading]=\"'common.created-at' | translate\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-line=\"item\">\r\n {{ line.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n id=\"updated-at\"\r\n [heading]=\"'common.updated-at' | translate\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-line=\"item\">\r\n {{ line.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n id=\"product-name\"\r\n [heading]=\"'order.product-name' | translate\"\r\n [optional]=\"false\"\r\n >\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.name }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.sku }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"text-center\">\r\n <div>{{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}</div>\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <input\r\n type=\"number\"\r\n class=\"draft-qty mr-1\"\r\n min=\"0\"\r\n [value]=\"getInitialLineQuantity(line.id)\"\r\n (input)=\"updateLineQuantity(line, $event.target.value)\"\r\n />\r\n <button\r\n class=\"button-small\"\r\n *ngIf=\"isAddedLine(line)\"\r\n (click)=\"removeAddedItem(line.id)\"\r\n >\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment\r\n [line]=\"line\"\r\n [allOrderFulfillments]=\"order.fulfillments\"\r\n [orderState]=\"order.state\"\r\n ></vdr-line-fulfillment>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n *ngFor=\"let customField of orderLineCustomFields\"\r\n [id]=\"customField.name\"\r\n [heading]=\"customField | customFieldLabel : (uiLanguage$ | async)\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-line=\"item\" let-index=\"index\">\r\n <vdr-custom-field-control\r\n [compact]=\"true\"\r\n [entityName]=\"'OrderLine'\"\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.at(index)\"\r\n />\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.add-item-to-order' | translate\">\r\n <vdr-product-variant-selector class=\"mb-4\" (productSelected)=\"addItemSelectedVariant = $event\">\r\n </vdr-product-variant-selector>\r\n <div class=\"flex\">\r\n <div>\r\n <div *ngIf=\"addItemSelectedVariant\" class=\"flex mb-4\">\r\n <img\r\n *ngIf=\"addItemSelectedVariant.productAsset as asset\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n class=\"mr-4 add-item-thumb\"\r\n />\r\n <div>\r\n <strong class=\"mr-4\">{{ addItemSelectedVariant.productVariantName }}</strong>\r\n <small>{{ addItemSelectedVariant.sku }}</small>\r\n <div>\r\n {{\r\n getSelectedItemPrice(addItemSelectedVariant)\r\n | localeCurrency : order.currencyCode\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-grid\" *ngIf=\"addItemSelectedVariant\">\r\n <ng-container *ngFor=\"let customField of orderLineCustomFields\">\r\n <vdr-custom-field-control\r\n [readonly]=\"!addItemSelectedVariant\"\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"addItemCustomFieldsForm\"\r\n entityName=\"OrderLine\"\r\n [compact]=\"true\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <div>\r\n <button\r\n *ngIf=\"addItemSelectedVariant\"\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"!addItemSelectedVariant || addItemCustomFieldsForm.invalid\"\r\n (click)=\"addItemToOrder(addItemSelectedVariant)\"\r\n >\r\n {{ 'order.add-item-to-order' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.shipping' | translate\">\r\n <div *ngFor=\"let shippingLine of order.shippingLines\" class=\"flex items-center\">\r\n <ng-container *ngIf=\"getShippingLineDetails(shippingLine) as details\">\r\n <div>{{ details.name }}:</div>\r\n <div class=\"mx-1\">\r\n {{ details.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n <button class=\"button-small\" (click)=\"setShippingMethod(shippingLine.id)\">\r\n {{ 'order.set-shipping-method' | translate }}\r\n </button>\r\n </ng-container>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.add-surcharge' | translate\">\r\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.description' | translate\" for=\"description\"\r\n ><input id=\"description\" type=\"text\" formControlName=\"description\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'order.product-sku' | translate\" for=\"sku\"\r\n ><input id=\"sku\" type=\"text\" formControlName=\"sku\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'common.price' | translate\" for=\"price\">\r\n <vdr-currency-input\r\n [currencyCode]=\"order.currencyCode\"\r\n id=\"price\"\r\n formControlName=\"price\"\r\n ></vdr-currency-input>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"\r\n 'catalog.price-includes-tax-at'\r\n | translate : { rate: surchargeForm.get('taxRate')?.value ?? 0 }\r\n \"\r\n for=\"priceIncludesTax\"\r\n ><input\r\n id=\"priceIncludesTax\"\r\n type=\"checkbox\"\r\n clrCheckbox\r\n formControlName=\"priceIncludesTax\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'order.tax-rate' | translate\" for=\"taxRate\">\r\n <vdr-affixed-input suffix=\"%\"\r\n ><input id=\"taxRate\" type=\"number\" min=\"0\" max=\"100\" formControlName=\"taxRate\"\r\n /></vdr-affixed-input>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'order.tax-description' | translate\" for=\"taxDescription\"\r\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\r\n /></vdr-form-field>\r\n </div>\r\n <button\r\n class=\"btn btn-secondary mt-2\"\r\n [disabled]=\"\r\n surchargeForm.invalid ||\r\n surchargeForm.pristine ||\r\n surchargeForm.get('price')?.value === 0 ||\r\n !surchargeForm.get('description')?.value\r\n \"\r\n >\r\n {{ 'order.add-surcharge' | translate }}\r\n </button>\r\n </form>\r\n </vdr-card>\r\n </vdr-page-block>\r\n</vdr-page-detail-layout>\r\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"] }]
482
484
  }], ctorParameters: () => [{ type: i1.DataService }, { type: i1.NotificationService }, { type: i1.ModalService }, { type: i2.OrderTransitionService }, { type: i0.ChangeDetectorRef }] });
483
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvb3JkZXIvc3JjL2NvbXBvbmVudHMvb3JkZXItZWRpdG9yL29yZGVyLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWVkaXRvci9vcmRlci1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFNSCxnQkFBZ0IsRUFRaEIsU0FBUyxFQUVULGtDQUFrQyxFQUNsQyx3QkFBd0IsR0FDM0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBU3JGLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZ0NBQWdDLEdBQ25DLE1BQU0sb0VBQW9FLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7Ozs7Ozs7Ozs7OztBQVEvSCxNQUFNLE9BQU8sb0JBQ1QsU0FBUSx3QkFBa0U7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Q04sQ0FBQztJQUVTLGFBQWEsQ0FBQyxNQUEyQixFQUFFLFlBQTBCO1FBQzNFLGNBQWM7SUFDbEIsQ0FBQzs4R0F2aEJRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtFQ3BEakMsMGdoQkFtVUE7OzJGRC9RYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEZvcm1Db250cm9sLFxyXG4gICAgRm9ybUdyb3VwLFxyXG4gICAgVW50eXBlZEZvcm1BcnJheSxcclxuICAgIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICAgIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICAgIEN1c3RvbUZpZWxkQ29uZmlnLFxyXG4gICAgRGF0YVNlcnZpY2UsXHJcbiAgICBEcmFmdE9yZGVyRWxpZ2libGVTaGlwcGluZ01ldGhvZHNRdWVyeSxcclxuICAgIEVycm9yUmVzdWx0LFxyXG4gICAgR2V0QXZhaWxhYmxlQ291bnRyaWVzUXVlcnksXHJcbiAgICBIaXN0b3J5RW50cnlUeXBlLFxyXG4gICAgTGFuZ3VhZ2VDb2RlLFxyXG4gICAgTW9kYWxTZXJ2aWNlLFxyXG4gICAgTW9kaWZ5T3JkZXJJbnB1dCxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBPcmRlckFkZHJlc3NGcmFnbWVudCxcclxuICAgIE9yZGVyRGV0YWlsRnJhZ21lbnQsXHJcbiAgICBPcmRlckRldGFpbFF1ZXJ5RG9jdW1lbnQsXHJcbiAgICBTb3J0T3JkZXIsXHJcbiAgICBTdXJjaGFyZ2VJbnB1dCxcclxuICAgIHRyYW5zZm9ybVJlbGF0aW9uQ3VzdG9tRmllbGRJbnB1dHMsXHJcbiAgICBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydE5ldmVyLCBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC11dGlscyc7XHJcbmltcG9ydCB7IHNpbXBsZURlZXBDbG9uZSB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2ltcGxlLWRlZXAtY2xvbmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBtYXBUbywgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQWRkZWRMaW5lLFxyXG4gICAgTW9kaWZ5T3JkZXJEYXRhLFxyXG4gICAgT3JkZXJTbmFwc2hvdCxcclxuICAgIFByb2R1Y3RTZWxlY3Rvckl0ZW0sXHJcbn0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGlmeS1vcmRlci10eXBlcyc7XHJcblxyXG5pbXBvcnQgeyBPcmRlclRyYW5zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL29yZGVyLXRyYW5zaXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgICBPcmRlckVkaXRSZXN1bHRUeXBlLFxyXG4gICAgT3JkZXJFZGl0c1ByZXZpZXdEaWFsb2dDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vb3JkZXItZWRpdHMtcHJldmlldy1kaWFsb2cvb3JkZXItZWRpdHMtcHJldmlldy1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VsZWN0U2hpcHBpbmdNZXRob2REaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3Qtc2hpcHBpbmctbWV0aG9kLWRpYWxvZy9zZWxlY3Qtc2hpcHBpbmctbWV0aG9kLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1vcmRlci1lZGl0b3InLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL29yZGVyLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9vcmRlci1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgT3JkZXJFZGl0b3JDb21wb25lbnRcclxuICAgIGV4dGVuZHMgVHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50PHR5cGVvZiBPcmRlckRldGFpbFF1ZXJ5RG9jdW1lbnQsICdvcmRlcic+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAgIGF2YWlsYWJsZUNvdW50cmllcyQ6IE9ic2VydmFibGU8R2V0QXZhaWxhYmxlQ291bnRyaWVzUXVlcnlbJ2NvdW50cmllcyddWydpdGVtcyddPjtcclxuICAgIGFkZHJlc3NDdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW107XHJcbiAgICB1aUxhbmd1YWdlJDogT2JzZXJ2YWJsZTxMYW5ndWFnZUNvZGU+O1xyXG4gICAgZGV0YWlsRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcclxuICAgIGNvdXBvbkNvZGVzQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmdbXT4oW10pO1xyXG4gICAgb3JkZXJMaW5lQ3VzdG9tRmllbGRzRm9ybUFycmF5OiBVbnR5cGVkRm9ybUFycmF5O1xyXG4gICAgYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm1BcnJheTogVW50eXBlZEZvcm1BcnJheTtcclxuICAgIGFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gICAgYWRkSXRlbVNlbGVjdGVkVmFyaWFudDogUHJvZHVjdFNlbGVjdG9ySXRlbSB8IHVuZGVmaW5lZDtcclxuICAgIG9yZGVyTGluZUN1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXTtcclxuICAgIG9yZGVyU25hcHNob3Q6IE9yZGVyU25hcHNob3Q7XHJcbiAgICBtb2RpZnlPcmRlcklucHV0OiBNb2RpZnlPcmRlckRhdGEgPSB7XHJcbiAgICAgICAgZHJ5UnVuOiB0cnVlLFxyXG4gICAgICAgIG9yZGVySWQ6ICcnLFxyXG4gICAgICAgIGFkZEl0ZW1zOiBbXSxcclxuICAgICAgICBhZGp1c3RPcmRlckxpbmVzOiBbXSxcclxuICAgICAgICBzdXJjaGFyZ2VzOiBbXSxcclxuICAgICAgICBub3RlOiAnJyxcclxuICAgICAgICByZWZ1bmRzOiBbXSxcclxuICAgICAgICB1cGRhdGVTaGlwcGluZ0FkZHJlc3M6IHt9LFxyXG4gICAgICAgIHVwZGF0ZUJpbGxpbmdBZGRyZXNzOiB7fSxcclxuICAgIH07XHJcbiAgICBzdXJjaGFyZ2VGb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSkpLFxyXG4gICAgICAgIHNrdTogbmV3IEZvcm1Db250cm9sKCcnKSxcclxuICAgICAgICBwcmljZTogbmV3IEZvcm1Db250cm9sKDApLFxyXG4gICAgICAgIHByaWNlSW5jbHVkZXNUYXg6IG5ldyBGb3JtQ29udHJvbCh0cnVlKSxcclxuICAgICAgICB0YXhSYXRlOiBuZXcgRm9ybUNvbnRyb2woMCksXHJcbiAgICAgICAgdGF4RGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICB9KTtcclxuICAgIHNoaXBwaW5nQWRkcmVzc0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgICBmdWxsTmFtZTogbmV3IEZvcm1Db250cm9sKCcnKSxcclxuICAgICAgICBjb21wYW55OiBuZXcgRm9ybUNvbnRyb2woJycpLFxyXG4gICAgICAgIHN0cmVldExpbmUxOiBuZXcgRm9ybUNvbnRyb2woJycpLFxyXG4gICAgICAgIHN0cmVldExpbmUyOiBuZXcgRm9ybUNvbnRyb2woJycpLFxyXG4gICAgICAgIGNpdHk6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgcHJvdmluY2U6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgcG9zdGFsQ29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcclxuICAgICAgICBjb3VudHJ5Q29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcclxuICAgICAgICBwaG9uZU51bWJlcjogbmV3IEZvcm1Db250cm9sKCcnKSxcclxuICAgIH0pO1xyXG4gICAgYmlsbGluZ0FkZHJlc3NGb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgZnVsbE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgY29tcGFueTogbmV3IEZvcm1Db250cm9sKCcnKSxcclxuICAgICAgICBzdHJlZXRMaW5lMTogbmV3IEZvcm1Db250cm9sKCcnKSxcclxuICAgICAgICBzdHJlZXRMaW5lMjogbmV3IEZvcm1Db250cm9sKCcnKSxcclxuICAgICAgICBjaXR5OiBuZXcgRm9ybUNvbnRyb2woJycpLFxyXG4gICAgICAgIHByb3ZpbmNlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxyXG4gICAgICAgIHBvc3RhbENvZGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgY291bnRyeUNvZGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAgICAgcGhvbmVOdW1iZXI6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICB9KTtcclxuICAgIG5vdGUgPSAnJztcclxuICAgIHJlY2FsY3VsYXRlU2hpcHBpbmcgPSB0cnVlO1xyXG4gICAgcHJldmlvdXNTdGF0ZTogc3RyaW5nO1xyXG4gICAgZWRpdGluZ1NoaXBwaW5nQWRkcmVzcyA9IGZhbHNlO1xyXG4gICAgZWRpdGluZ0JpbGxpbmdBZGRyZXNzID0gZmFsc2U7XHJcbiAgICB1cGRhdGVkU2hpcHBpbmdNZXRob2RzOiB7XHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgICBzaGlwcGluZ0xpbmVJZDogc3RyaW5nXHJcbiAgICAgICAgXTogRHJhZnRPcmRlckVsaWdpYmxlU2hpcHBpbmdNZXRob2RzUXVlcnlbJ2VsaWdpYmxlU2hpcHBpbmdNZXRob2RzRm9yRHJhZnRPcmRlciddW251bWJlcl07XHJcbiAgICB9ID0ge307XHJcbiAgICBwcml2YXRlIGFkZGVkVmFyaWFudHMgPSBuZXcgTWFwPHN0cmluZywgUHJvZHVjdFNlbGVjdG9ySXRlbT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgb3JkZXJUcmFuc2l0aW9uU2VydmljZTogT3JkZXJUcmFuc2l0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnQWRkcmVzcycpO1xyXG4gICAgICAgIHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5vcmRlcklkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgc3RyaW5nO1xyXG4gICAgICAgIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnT3JkZXJMaW5lJyk7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKG9yZGVyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vcmRlclNuYXBzaG90ID0gdGhpcy5jcmVhdGVPcmRlclNuYXBzaG90KG9yZGVyKTtcclxuICAgICAgICAgICAgaWYgKG9yZGVyLmNvdXBvbkNvZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3Vwb25Db2Rlc0NvbnRyb2wuc2V0VmFsdWUob3JkZXIuY291cG9uQ29kZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc3VyY2hhcmdlRm9ybS5yZXNldCgpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjb250cm9sXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0uY29udHJvbHMpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG9yZGVyLnNoaXBwaW5nQWRkcmVzcz8uW25hbWVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFkZEFkZHJlc3NDdXN0b21GaWVsZHNGb3JtR3JvdXAodGhpcy5zaGlwcGluZ0FkZHJlc3NGb3JtLCBvcmRlci5zaGlwcGluZ0FkZHJlc3MpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjb250cm9sXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmJpbGxpbmdBZGRyZXNzRm9ybS5jb250cm9scykpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUob3JkZXIuYmlsbGluZ0FkZHJlc3M/LltuYW1lXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hZGRBZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwKHRoaXMuYmlsbGluZ0FkZHJlc3NGb3JtLCBvcmRlci5iaWxsaW5nQWRkcmVzcyk7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzRm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2Ygb3JkZXIubGluZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyBuYW1lIH0gb2YgdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChuYW1lLCBuZXcgVW50eXBlZEZvcm1Db250cm9sKChsaW5lIGFzIGFueSkuY3VzdG9tRmllbGRzW25hbWVdKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZnlSb3cgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRqdXN0T3JkZXJMaW5lcy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsID0+IGwub3JkZXJMaW5lSWQgPT09IGxpbmUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGlmeVJvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnlSb3cgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlckxpbmVJZDogbGluZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBsaW5lLnF1YW50aXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRqdXN0T3JkZXJMaW5lcy5wdXNoKG1vZGlmeVJvdyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZ5Um93LmN1c3RvbUZpZWxkcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHNGb3JtQXJyYXkucHVzaChmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKTtcclxuICAgICAgICB0aGlzLmFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgIGZvciAoY29uc3QgY3VzdG9tRmllbGQgb2YgdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHMpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRJdGVtQ3VzdG9tRmllbGRzRm9ybS5hZGRDb250cm9sKGN1c3RvbUZpZWxkLm5hbWUsIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXZhaWxhYmxlQ291bnRyaWVzJCA9IHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3NcclxuICAgICAgICAgICAgLmdldEF2YWlsYWJsZUNvdW50cmllcygpXHJcbiAgICAgICAgICAgIC5tYXBTaW5nbGUocmVzdWx0ID0+IHJlc3VsdC5jb3VudHJpZXMuaXRlbXMpXHJcbiAgICAgICAgICAgIC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLm9yZGVyXHJcbiAgICAgICAgICAgIC5nZXRPcmRlckhpc3RvcnkodGhpcy5pZCwge1xyXG4gICAgICAgICAgICAgICAgdGFrZTogMSxcclxuICAgICAgICAgICAgICAgIHNvcnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZpbHRlcjogeyB0eXBlOiB7IGVxOiBIaXN0b3J5RW50cnlUeXBlLk9SREVSX1NUQVRFX1RSQU5TSVRJT04gfSB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc2luZ2xlJC5zdWJzY3JpYmUoKHsgb3JkZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c1N0YXRlID0gb3JkZXI/Lmhpc3RvcnkuaXRlbXNbMF0uZGF0YS5mcm9tO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnVpTGFuZ3VhZ2UkID0gdGhpcy5kYXRhU2VydmljZS5jbGllbnRcclxuICAgICAgICAgICAgLnVpU3RhdGUoKVxyXG4gICAgICAgICAgICAuc3RyZWFtJC5waXBlKG1hcCgoeyB1aVN0YXRlIH0pID0+IHVpU3RhdGUubGFuZ3VhZ2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYWRkZWRMaW5lcygpOiBBZGRlZExpbmVbXSB7XHJcbiAgICAgICAgY29uc3QgZ2V0U2luZ2xlUHJpY2VWYWx1ZSA9IChwcmljZTogUHJvZHVjdFNlbGVjdG9ySXRlbVsncHJpY2UnXSkgPT5cclxuICAgICAgICAgICAgcHJpY2UuX190eXBlbmFtZSA9PT0gJ1NpbmdsZVByaWNlJyA/IHByaWNlLnZhbHVlIDogMDtcclxuICAgICAgICByZXR1cm4gKHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGRJdGVtcyB8fCBbXSlcclxuICAgICAgICAgICAgLm1hcChyb3cgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFyaWFudEluZm8gPSB0aGlzLmFkZGVkVmFyaWFudHMuZ2V0KHJvdy5wcm9kdWN0VmFyaWFudElkKTtcclxuICAgICAgICAgICAgICAgIGlmICh2YXJpYW50SW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdldElkRm9yQWRkZWRJdGVtKHJvdyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVkQXNzZXQ6IHZhcmlhbnRJbmZvLnByb2R1Y3RBc3NldCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdFZhcmlhbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB2YXJpYW50SW5mby5wcm9kdWN0VmFyaWFudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFyaWFudEluZm8ucHJvZHVjdFZhcmlhbnROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2t1OiB2YXJpYW50SW5mby5za3UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRQcmljZTogZ2V0U2luZ2xlUHJpY2VWYWx1ZSh2YXJpYW50SW5mby5wcmljZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRQcmljZVdpdGhUYXg6IGdldFNpbmdsZVByaWNlVmFsdWUodmFyaWFudEluZm8ucHJpY2VXaXRoVGF4KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHJvdy5xdWFudGl0eSxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuZmlsdGVyKG5vdE51bGxPclVuZGVmaW5lZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRJZEZvckFkZGVkSXRlbShyb3c6IE1vZGlmeU9yZGVyRGF0YVsnYWRkSXRlbXMnXVtudW1iZXJdKSB7XHJcbiAgICAgICAgcmV0dXJuIGBhZGRlZC0ke3Jvdy5wcm9kdWN0VmFyaWFudElkfS0ke0pTT04uc3RyaW5naWZ5KHJvdy5jdXN0b21GaWVsZHMgfHwge30pfWA7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNpdGlvblRvUHJpb3JTdGF0ZShvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIHRoaXMub3JkZXJUcmFuc2l0aW9uU2VydmljZVxyXG4gICAgICAgICAgICAudHJhbnNpdGlvblRvUHJlTW9kaWZ5aW5nU3RhdGUob3JkZXIuaWQsIG9yZGVyLm5leHRTdGF0ZXMpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNNb2RpZmljYXRpb25zKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHsgYWRkSXRlbXMsIGFkanVzdE9yZGVyTGluZXMsIHN1cmNoYXJnZXMgfSA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dDtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAhIWFkZEl0ZW1zPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgISFzdXJjaGFyZ2VzPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgISFhZGp1c3RPcmRlckxpbmVzPy5sZW5ndGggfHxcclxuICAgICAgICAgICAgKHRoaXMuc2hpcHBpbmdBZGRyZXNzRm9ybS5kaXJ0eSAmJiB0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0udmFsaWQpIHx8XHJcbiAgICAgICAgICAgICh0aGlzLmJpbGxpbmdBZGRyZXNzRm9ybS5kaXJ0eSAmJiB0aGlzLmJpbGxpbmdBZGRyZXNzRm9ybS52YWxpZCkgfHxcclxuICAgICAgICAgICAgdGhpcy5jb3Vwb25Db2Rlc0NvbnRyb2wuZGlydHkgfHxcclxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzKS5sZW5ndGggPiAwXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xpbmVNb2RpZmllZChsaW5lOiBPcmRlckRldGFpbEZyYWdtZW50WydsaW5lcyddW251bWJlcl0pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRqdXN0T3JkZXJMaW5lcz8uZmluZChcclxuICAgICAgICAgICAgbCA9PiBsLm9yZGVyTGluZUlkID09PSBsaW5lLmlkICYmIGwucXVhbnRpdHkgIT09IGxpbmUucXVhbnRpdHksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJbml0aWFsTGluZVF1YW50aXR5KGxpbmVJZDogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBhZGp1c3RlZExpbmUgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRqdXN0T3JkZXJMaW5lcz8uZmluZChsID0+IGwub3JkZXJMaW5lSWQgPT09IGxpbmVJZCk7XHJcbiAgICAgICAgaWYgKGFkanVzdGVkTGluZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWRMaW5lLnF1YW50aXR5O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLm9yZGVyU25hcHNob3QubGluZXMuZmluZChsID0+IGwuaWQgPT09IGxpbmVJZCk7XHJcbiAgICAgICAgICAgIHJldHVybiBsaW5lID8gbGluZS5xdWFudGl0eSA6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUxpbmVRdWFudGl0eShsaW5lOiBPcmRlckRldGFpbEZyYWdtZW50WydsaW5lcyddW251bWJlcl0gfCBBZGRlZExpbmUsIHF1YW50aXR5OiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCB7IGFkanVzdE9yZGVyTGluZXMgfSA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dDtcclxuICAgICAgICBpZiAodGhpcy5pc0FkZGVkTGluZShsaW5lKSkge1xyXG4gICAgICAgICAgICBjb25zdCByb3cgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXM/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICBsID0+IGwucHJvZHVjdFZhcmlhbnRJZCA9PT0gbGluZS5wcm9kdWN0VmFyaWFudC5pZCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICAgICAgcm93LnF1YW50aXR5ID0gK3F1YW50aXR5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHJvdyA9IGFkanVzdE9yZGVyTGluZXM/LmZpbmQobCA9PiBsLm9yZGVyTGluZUlkID09PSBsaW5lLmlkKTtcclxuICAgICAgICAgICAgaWYgKHJvdyAmJiArcXVhbnRpdHkgPT09IGxpbmUucXVhbnRpdHkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgbW9kaWZpY2F0aW9uIGlmIHRoZSBxdWFudGl0eSBpcyB0aGUgc2FtZSBhc1xyXG4gICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIG9yZGVyXHJcbiAgICAgICAgICAgICAgICBhZGp1c3RPcmRlckxpbmVzPy5zcGxpY2UoYWRqdXN0T3JkZXJMaW5lcz8uaW5kZXhPZihyb3cpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXJvdykge1xyXG4gICAgICAgICAgICAgICAgcm93ID0geyBvcmRlckxpbmVJZDogbGluZS5pZCwgcXVhbnRpdHk6ICtxdWFudGl0eSB9O1xyXG4gICAgICAgICAgICAgICAgYWRqdXN0T3JkZXJMaW5lcz8ucHVzaChyb3cpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJvdy5xdWFudGl0eSA9ICtxdWFudGl0eTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNBZGRlZExpbmUobGluZTogT3JkZXJEZXRhaWxGcmFnbWVudFsnbGluZXMnXVtudW1iZXJdIHwgQWRkZWRMaW5lKTogbGluZSBpcyBBZGRlZExpbmUge1xyXG4gICAgICAgIHJldHVybiAobGluZSBhcyBBZGRlZExpbmUpLmlkLnN0YXJ0c1dpdGgoJ2FkZGVkLScpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUFkZGVkSXRlbVF1YW50aXR5KGl0ZW06IEFkZGVkTGluZSwgcXVhbnRpdHk6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGRJdGVtcz8uZmluZChsID0+IGwucHJvZHVjdFZhcmlhbnRJZCA9PT0gaXRlbS5wcm9kdWN0VmFyaWFudC5pZCk7XHJcbiAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICByb3cucXVhbnRpdHkgPSArcXVhbnRpdHk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlQcm9kdWN0VmFyaWFudElkKGluZGV4OiBudW1iZXIsIGl0ZW06IEFkZGVkTGluZSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnByb2R1Y3RWYXJpYW50LmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdGVkSXRlbVByaWNlKHJlc3VsdDogUHJvZHVjdFNlbGVjdG9ySXRlbSB8IHVuZGVmaW5lZCk6IG51bWJlciB7XHJcbiAgICAgICAgc3dpdGNoIChyZXN1bHQ/LnByaWNlV2l0aFRheC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ1NpbmdsZVByaWNlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucHJpY2VXaXRoVGF4LnZhbHVlO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFkZEl0ZW1Ub09yZGVyKHJlc3VsdDogUHJvZHVjdFNlbGVjdG9ySXRlbSB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHMubGVuZ3RoXHJcbiAgICAgICAgICAgID8gdGhpcy5hZGRJdGVtQ3VzdG9tRmllbGRzRm9ybS52YWx1ZVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgcm93ID0gdGhpcy5tb2RpZnlPcmRlcklucHV0LmFkZEl0ZW1zPy5maW5kKGwgPT5cclxuICAgICAgICAgICAgdGhpcy5pc01hdGNoaW5nQWRkSXRlbVJvdyhsLCByZXN1bHQsIGN1c3RvbUZpZWxkcyksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoIXJvdykge1xyXG4gICAgICAgICAgICByb3cgPSB7IHByb2R1Y3RWYXJpYW50SWQ6IHJlc3VsdC5wcm9kdWN0VmFyaWFudElkLCBxdWFudGl0eTogMSB9O1xyXG4gICAgICAgICAgICBpZiAoY3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICByb3cuY3VzdG9tRmllbGRzID0gY3VzdG9tRmllbGRzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGRJdGVtcz8ucHVzaChyb3cpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJvdy5xdWFudGl0eSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY3VzdG9tRmllbGRzKSkge1xyXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woa2V5LCBuZXcgVW50eXBlZEZvcm1Db250cm9sKHZhbHVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hZGRJdGVtQ3VzdG9tRmllbGRzRm9ybUFycmF5LnB1c2goZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyb3cpIHtcclxuICAgICAgICAgICAgICAgICAgICByb3cuY3VzdG9tRmllbGRzID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtLnJlc2V0KHt9KTtcclxuICAgICAgICB0aGlzLmFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5hZGRlZFZhcmlhbnRzLnNldChyZXN1bHQucHJvZHVjdFZhcmlhbnRJZCwgcmVzdWx0KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTaGlwcGluZ0xpbmVEZXRhaWxzKHNoaXBwaW5nTGluZTogT3JkZXJEZXRhaWxGcmFnbWVudFsnc2hpcHBpbmdMaW5lcyddW251bWJlcl0pOiB7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgICAgIHByaWNlOiBudW1iZXI7XHJcbiAgICB9IHtcclxuICAgICAgICBjb25zdCB1cGRhdGVkTWV0aG9kID0gdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzW3NoaXBwaW5nTGluZS5pZF07XHJcbiAgICAgICAgaWYgKHVwZGF0ZWRNZXRob2QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHVwZGF0ZWRNZXRob2QubmFtZSB8fCB1cGRhdGVkTWV0aG9kLmNvZGUsXHJcbiAgICAgICAgICAgICAgICBwcmljZTogdXBkYXRlZE1ldGhvZC5wcmljZVdpdGhUYXgsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHNoaXBwaW5nTGluZS5zaGlwcGluZ01ldGhvZC5uYW1lIHx8IHNoaXBwaW5nTGluZS5zaGlwcGluZ01ldGhvZC5jb2RlLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IHNoaXBwaW5nTGluZS5kaXNjb3VudGVkUHJpY2VXaXRoVGF4LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRTaGlwcGluZ01ldGhvZChzaGlwcGluZ0xpbmVJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFNoaXBwaW5nTWV0aG9kID1cclxuICAgICAgICAgICAgdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzW3NoaXBwaW5nTGluZUlkXSA/P1xyXG4gICAgICAgICAgICB0aGlzLmVudGl0eT8uc2hpcHBpbmdMaW5lcy5maW5kKGwgPT4gbC5pZCA9PT0gc2hpcHBpbmdMaW5lSWQpPy5zaGlwcGluZ01ldGhvZDtcclxuICAgICAgICBpZiAoIWN1cnJlbnRTaGlwcGluZ01ldGhvZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcclxuICAgICAgICAgICAgLmdldERyYWZ0T3JkZXJFbGlnaWJsZVNoaXBwaW5nTWV0aG9kcyh0aGlzLmlkKVxyXG4gICAgICAgICAgICAubWFwU2luZ2xlKCh7IGVsaWdpYmxlU2hpcHBpbmdNZXRob2RzRm9yRHJhZnRPcmRlciB9KSA9PiBlbGlnaWJsZVNoaXBwaW5nTWV0aG9kc0ZvckRyYWZ0T3JkZXIpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG1ldGhvZHMgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbUNvbXBvbmVudChTZWxlY3RTaGlwcGluZ01ldGhvZERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZ2libGVTaGlwcGluZ01ldGhvZHM6IG1ldGhvZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiB0aGlzLmVudGl0eT8uY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb25JZDogY3VycmVudFNoaXBwaW5nTWV0aG9kLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2RzLmZpbmQobWV0aG9kID0+IG1ldGhvZC5pZCA9PT0gcmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlZFNoaXBwaW5nTWV0aG9kc1tzaGlwcGluZ0xpbmVJZF0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc01hdGNoaW5nQWRkSXRlbVJvdyhcclxuICAgICAgICByb3c6IE1vZGlmeU9yZGVyRGF0YVsnYWRkSXRlbXMnXVtudW1iZXJdLFxyXG4gICAgICAgIHJlc3VsdDogUHJvZHVjdFNlbGVjdG9ySXRlbSxcclxuICAgICAgICBjdXN0b21GaWVsZHM6IGFueSxcclxuICAgICk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHJvdy5wcm9kdWN0VmFyaWFudElkID09PSByZXN1bHQucHJvZHVjdFZhcmlhbnRJZCAmJlxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShyb3cuY3VzdG9tRmllbGRzKSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VzdG9tRmllbGRzKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQWRkZWRJdGVtKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXMgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXM/LmZpbHRlcihsID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gdGhpcy5nZXRJZEZvckFkZGVkSXRlbShsKTtcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW1JZCAhPT0gaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3VyY2hhcmdlUHJpY2VzKHN1cmNoYXJnZTogU3VyY2hhcmdlSW5wdXQpIHtcclxuICAgICAgICBjb25zdCBwcmljZVdpdGhUYXggPSBzdXJjaGFyZ2UucHJpY2VJbmNsdWRlc1RheFxyXG4gICAgICAgICAgICA/IHN1cmNoYXJnZS5wcmljZVxyXG4gICAgICAgICAgICA6IE1hdGgucm91bmQoc3VyY2hhcmdlLnByaWNlICogKCgxMDAgKyAoc3VyY2hhcmdlLnRheFJhdGUgfHwgMCkpIC8gMTAwKSk7XHJcbiAgICAgICAgY29uc3QgcHJpY2UgPSBzdXJjaGFyZ2UucHJpY2VJbmNsdWRlc1RheFxyXG4gICAgICAgICAgICA/IE1hdGgucm91bmQoc3VyY2hhcmdlLnByaWNlIC8gKCgxMDAgKyAoc3VyY2hhcmdlLnRheFJhdGUgfHwgMCkpIC8gMTAwKSlcclxuICAgICAgICAgICAgOiBzdXJjaGFyZ2UucHJpY2U7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJpY2UsXHJcbiAgICAgICAgICAgIHByaWNlV2l0aFRheCxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFN1cmNoYXJnZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5tb2RpZnlPcmRlcklucHV0LnN1cmNoYXJnZXM/LnB1c2godmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc3VyY2hhcmdlRm9ybS5yZXNldCh7XHJcbiAgICAgICAgICAgIHByaWNlOiAwLFxyXG4gICAgICAgICAgICBwcmljZUluY2x1ZGVzVGF4OiB0cnVlLFxyXG4gICAgICAgICAgICB0YXhSYXRlOiAwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVN1cmNoYXJnZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5tb2RpZnlPcmRlcklucHV0LnN1cmNoYXJnZXM/LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJldmlld0FuZE1vZGlmeShvcmRlcjogT3JkZXJEZXRhaWxGcmFnbWVudCkge1xyXG4gICAgICAgIGNvbnN0IG1vZGlmeU9yZGVySW5wdXQ6IE1vZGlmeU9yZGVyRGF0YSA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy5tb2RpZnlPcmRlcklucHV0LFxyXG4gICAgICAgICAgICBhZGp1c3RPcmRlckxpbmVzOiB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRqdXN0T3JkZXJMaW5lcy5tYXAobGluZSA9PlxyXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtUmVsYXRpb25DdXN0b21GaWVsZElucHV0cyhzaW1wbGVEZWVwQ2xvbmUobGluZSksIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzKSxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGlucHV0OiBNb2RpZnlPcmRlcklucHV0ID0ge1xyXG4gICAgICAgICAgICAuLi5tb2RpZnlPcmRlcklucHV0LFxyXG4gICAgICAgICAgICAuLi4odGhpcy5iaWxsaW5nQWRkcmVzc0Zvcm0uZGlydHkgPyB7IHVwZGF0ZUJpbGxpbmdBZGRyZXNzOiB0aGlzLmJpbGxpbmdBZGRyZXNzRm9ybS52YWx1ZSB9IDoge30pLFxyXG4gICAgICAgICAgICAuLi4odGhpcy5zaGlwcGluZ0FkZHJlc3NGb3JtLmRpcnR5XHJcbiAgICAgICAgICAgICAgICA/IHsgdXBkYXRlU2hpcHBpbmdBZGRyZXNzOiB0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0udmFsdWUgfVxyXG4gICAgICAgICAgICAgICAgOiB7fSksXHJcbiAgICAgICAgICAgIGRyeVJ1bjogdHJ1ZSxcclxuICAgICAgICAgICAgY291cG9uQ29kZXM6IHRoaXMuY291cG9uQ29kZXNDb250cm9sLmRpcnR5ID8gdGhpcy5jb3Vwb25Db2Rlc0NvbnRyb2wudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIG5vdGU6IHRoaXMubm90ZSA/PyAnJyxcclxuICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgcmVjYWxjdWxhdGVTaGlwcGluZzogdGhpcy5yZWNhbGN1bGF0ZVNoaXBwaW5nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKE9iamVjdC5lbnRyaWVzKHRoaXMudXBkYXRlZFNoaXBwaW5nTWV0aG9kcykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlucHV0LnNoaXBwaW5nTWV0aG9kSWRzID0gb3JkZXIuc2hpcHBpbmdMaW5lcy5tYXAobCA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzW2wuaWRdXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnVwZGF0ZWRTaGlwcGluZ01ldGhvZHNbbC5pZF0uaWRcclxuICAgICAgICAgICAgICAgICAgICA6IGwuc2hpcHBpbmdNZXRob2QuaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcclxuICAgICAgICAgICAgLm1vZGlmeU9yZGVyKGlucHV0KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBtb2RpZnlPcmRlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtb2RpZnlPcmRlci5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZGFsU2VydmljZS5mcm9tQ29tcG9uZW50KE9yZGVyRWRpdHNQcmV2aWV3RGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBtb2RpZnlPcmRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJTbmFwc2hvdDogdGhpcy5vcmRlclNuYXBzaG90LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlckxpbmVDdXN0b21GaWVsZHM6IHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnlPcmRlcklucHV0OiBpbnB1dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWRMaW5lczogdGhpcy5hZGRlZExpbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3NGb3JtOiB0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbGxpbmdBZGRyZXNzRm9ybTogdGhpcy5iaWxsaW5nQWRkcmVzc0Zvcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXBvbkNvZGVzQ29udHJvbDogdGhpcy5jb3Vwb25Db2Rlc0NvbnRyb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRTaGlwcGluZ01ldGhvZHM6IHRoaXMudXBkYXRlZFNoaXBwaW5nTWV0aG9kcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0luc3VmZmljaWVudFN0b2NrRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdOZWdhdGl2ZVF1YW50aXR5RXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdOb0NoYW5nZXNTcGVjaWZpZWRFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyTGltaXRFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyTW9kaWZpY2F0aW9uU3RhdGVFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1BheW1lbnRNZXRob2RNaXNzaW5nRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSZWZ1bmRQYXltZW50SWRNaXNzaW5nRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdDb3Vwb25Db2RlTGltaXRFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NvdXBvbkNvZGVFeHBpcmVkRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbmVsaWdpYmxlU2hpcHBpbmdNZXRob2RFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NvdXBvbkNvZGVJbnZhbGlkRXJyb3InOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IobW9kaWZ5T3JkZXIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UgYXMgY29uc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbnVsbDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UgYXMgY29uc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIobW9kaWZ5T3JkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LnJlc3VsdCA9PT0gT3JkZXJFZGl0UmVzdWx0VHlwZS5DYW5jZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmUtZmV0Y2ggc28gdGhhdCB0aGUgcHJldmlldyB2YWx1ZXMgZ2V0IG92ZXJ3cml0dGVuIGluIHRoZSBjYWNoZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXIuZ2V0T3JkZXIodGhpcy5pZCkubWFwU2luZ2xlKCgpID0+IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEbyB0aGUgbW9kaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdldFJ1bklucHV0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW5wdXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcnlSdW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJlc3VsdCA9PT0gT3JkZXJFZGl0UmVzdWx0VHlwZS5SZWZ1bmQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdldFJ1bklucHV0LnJlZnVuZHMgPSByZXN1bHQucmVmdW5kcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5vcmRlci5tb2RpZnlPcmRlcih3ZXRSdW5JbnB1dCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBtb2RpZnlPcmRlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGlmeU9yZGVyLl9fdHlwZW5hbWUgPT09ICdPcmRlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpY2VEZWx0YSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnlPcmRlci50b3RhbFdpdGhUYXggLSB0aGlzLm9yZGVyU25hcHNob3QudG90YWxXaXRoVGF4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA8IHByaWNlRGVsdGEgPyAnQXJyYW5naW5nQWRkaXRpb25hbFBheW1lbnQnIDogdGhpcy5wcmV2aW91c1N0YXRlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmFuc2l0aW9uVG9TdGF0ZShvcmRlci5pZCwgbmV4dFN0YXRlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwVG8odHJ1ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcigobW9kaWZ5T3JkZXIgYXMgRXJyb3JSZXN1bHQpLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRBZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwKFxyXG4gICAgICAgIHBhcmVudEZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcclxuICAgICAgICBhZGRyZXNzPzogT3JkZXJBZGRyZXNzRnJhZ21lbnQgfCBudWxsLFxyXG4gICAgKSB7XHJcbiAgICAgICAgaWYgKGFkZHJlc3MgJiYgdGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBhZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGN1c3RvbUZpZWxkRGVmIG9mIHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGN1c3RvbUZpZWxkRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChhZGRyZXNzIGFzIGFueSkuY3VzdG9tRmllbGRzPy5bbmFtZV07XHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwLmFkZENvbnRyb2wobmFtZSwgbmV3IFVudHlwZWRGb3JtQ29udHJvbCh2YWx1ZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcmVudEZvcm1Hcm91cC5hZGRDb250cm9sKCdjdXN0b21GaWVsZHMnLCBhZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVPcmRlclNuYXBzaG90KG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KTogT3JkZXJTbmFwc2hvdCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdG90YWxXaXRoVGF4OiBvcmRlci50b3RhbFdpdGhUYXgsXHJcbiAgICAgICAgICAgIGN1cnJlbmN5Q29kZTogb3JkZXIuY3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICBjb3Vwb25Db2Rlczogb3JkZXIuY291cG9uQ29kZXMsXHJcbiAgICAgICAgICAgIGxpbmVzOiBbLi4ub3JkZXIubGluZXNdLm1hcChsaW5lID0+ICh7IC4uLmxpbmUgfSkpLFxyXG4gICAgICAgICAgICBzaGlwcGluZ0xpbmVzOiBbLi4ub3JkZXIuc2hpcHBpbmdMaW5lc10ubWFwKGxpbmUgPT4gKHsgLi4ubGluZSB9KSksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IE9yZGVyRGV0YWlsRnJhZ21lbnQsIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKTogdm9pZCB7XHJcbiAgICAgICAgLyogbm90IHVzZWQgKi9cclxuICAgIH1cclxufVxyXG4iLCI8dmRyLXBhZ2UtYmxvY2s+XHJcbiAgICA8dmRyLWFjdGlvbi1iYXIgKm5nSWY9XCJlbnRpdHkkIHwgYXN5bmMgYXMgb3JkZXJcIj5cclxuICAgICAgICA8dmRyLWFiLWxlZnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGNsci1hbGlnbi1pdGVtcy1jZW50ZXJcIj48L2Rpdj5cclxuICAgICAgICA8L3Zkci1hYi1sZWZ0PlxyXG5cclxuICAgICAgICA8dmRyLWFiLXJpZ2h0PlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwidHJhbnNpdGlvblRvUHJpb3JTdGF0ZShvcmRlcilcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdvcmRlci5jYW5jZWwtbW9kaWZpY2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3Zkci1hYi1yaWdodD5cclxuICAgIDwvdmRyLWFjdGlvbi1iYXI+XHJcbjwvdmRyLXBhZ2UtYmxvY2s+XHJcblxyXG48dmRyLXBhZ2UtZGV0YWlsLWxheW91dCAqbmdJZj1cImVudGl0eSBhcyBvcmRlclwiPlxyXG4gICAgPHZkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ29yZGVyLm1vZGlmaWNhdGlvbi1zdW1tYXJ5JyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8dmRyLW9yZGVyLW1vZGlmaWNhdGlvbi1zdW1tYXJ5XHJcbiAgICAgICAgICAgICAgICBbb3JkZXJTbmFwc2hvdF09XCJvcmRlclNuYXBzaG90XCJcclxuICAgICAgICAgICAgICAgIFttb2RpZnlPcmRlcklucHV0XT1cIm1vZGlmeU9yZGVySW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgW2FkZGVkTGluZXNdPVwiYWRkZWRMaW5lc1wiXHJcbiAgICAgICAgICAgICAgICBbc2hpcHBpbmdBZGRyZXNzRm9ybV09XCJzaGlwcGluZ0FkZHJlc3NGb3JtXCJcclxuICAgICAgICAgICAgICAgIFtiaWxsaW5nQWRkcmVzc0Zvcm1dPVwiYmlsbGluZ0FkZHJlc3NGb3JtXCJcclxuICAgICAgICAgICAgICAgIFtjb3Vwb25Db2Rlc0NvbnRyb2xdPVwiY291cG9uQ29kZXNDb250cm9sXCJcclxuICAgICAgICAgICAgICAgIFt1cGRhdGVkU2hpcHBpbmdNZXRob2RzXT1cInVwZGF0ZWRTaGlwcGluZ01ldGhvZHNcIlxyXG4gICAgICAgICAgICA+PC92ZHItb3JkZXItbW9kaWZpY2F0aW9uLXN1bW1hcnk+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhhc01vZGlmaWNhdGlvbnMoKVwiIGNsYXNzPVwibm8tbW9kaWZpY2F0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAge3sgJ29yZGVyLm5vLW1vZGlmaWNhdGlvbnMtbWFkZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeS1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInb3JkZXIubm90ZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJub3RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5vdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc01vZGlmaWNhdGlvbnMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZWNhbGN1bGF0ZVNoaXBwaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNNb2RpZmljYXRpb25zKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTFcIj57eyAnb3JkZXIubW9kaWZpY2F0aW9uLXJlY2FsY3VsYXRlLXNoaXBwaW5nJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc01vZGlmaWNhdGlvbnMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpZXdBbmRNb2RpZnkob3JkZXIpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnb3JkZXIucHJldmlldy1jaGFuZ2VzJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIuc2V0LWNvdXBvbi1jb2RlcycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgPHZkci1jb3Vwb24tY29kZS1zZWxlY3RvciBbY29udHJvbF09XCJjb3Vwb25Db2Rlc0NvbnRyb2xcIj48L3Zkci1jb3Vwb24tY29kZS1zZWxlY3Rvcj5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ29yZGVyLnNoaXBwaW5nLWFkZHJlc3MnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZHJDYXJkQ29udHJvbHM+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInb3JkZXIuZWRpdC1zaGlwcGluZy1hZGRyZXNzJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRpbmdTaGlwcGluZ0FkZHJlc3MgPSAhZWRpdGluZ1NoaXBwaW5nQWRkcmVzc1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWRpdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPHZkci1mb3JtYXR0ZWQtYWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZWRpdGluZ1NoaXBwaW5nQWRkcmVzc1wiXHJcbiAgICAgICAgICAgICAgICBbYWRkcmVzc109XCJzaGlwcGluZ0FkZHJlc3NGb3JtLnZhbHVlXCJcclxuICAgICAgICAgICAgPjwvdmRyLWZvcm1hdHRlZC1hZGRyZXNzPlxyXG4gICAgICAgICAgICA8dmRyLWFkZHJlc3MtZm9ybVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0aW5nU2hpcHBpbmdBZGRyZXNzXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwic2hpcHBpbmdBZGRyZXNzRm9ybVwiXHJcbiAgICAgICAgICAgICAgICBbYXZhaWxhYmxlQ291bnRyaWVzXT1cImF2YWlsYWJsZUNvdW50cmllcyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImFkZHJlc3NDdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICA+PC92ZHItYWRkcmVzcy1mb3JtPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIuYmlsbGluZy1hZGRyZXNzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgdmRyQ2FyZENvbnRyb2xzPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ29yZGVyLmVkaXQtYmlsbGluZy1hZGRyZXNzJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRpbmdCaWxsaW5nQWRkcmVzcyA9ICFlZGl0aW5nQmlsbGluZ0FkZHJlc3NcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImVkaXRcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDx2ZHItZm9ybWF0dGVkLWFkZHJlc3NcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRpbmdCaWxsaW5nQWRkcmVzc1wiXHJcbiAgICAgICAgICAgICAgICBbYWRkcmVzc109XCJiaWxsaW5nQWRkcmVzc0Zvcm0udmFsdWVcIlxyXG4gICAgICAgICAgICA+PC92ZHItZm9ybWF0dGVkLWFkZHJlc3M+XHJcbiAgICAgICAgICAgIDx2ZHItYWRkcmVzcy1mb3JtXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVkaXRpbmdCaWxsaW5nQWRkcmVzc1wiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImJpbGxpbmdBZGRyZXNzRm9ybVwiXHJcbiAgICAgICAgICAgICAgICBbYXZhaWxhYmxlQ291bnRyaWVzXT1cImF2YWlsYWJsZUNvdW50cmllcyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImFkZHJlc3NDdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICA+PC92ZHItYWRkcmVzcy1mb3JtPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICA8L3Zkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG5cclxuICAgIDx2ZHItcGFnZS1ibG9jaz5cclxuICAgICAgICA8dmRyLWNhcmQgW3BhZGRpbmdYXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDx2ZHItZGF0YS10YWJsZS0yIGlkPVwibW9kaWZ5LW9yZGVyXCIgY2xhc3M9XCJvcmRlci10YWJsZVwiIFtpdGVtc109XCJvcmRlci5saW5lcy5jb25jYXQoYWRkZWRMaW5lcylcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gSGVyZSB3ZSBkZWZpbmUgYWxsIHRoZSBhdmFpbGFibGUgY29sdW1ucyAtLT5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtbiBpZD1cImlkXCIgW2hlYWRpbmddPVwiJ2NvbW1vbi5pZCcgfCB0cmFuc2xhdGVcIiBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUuaWQgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY3JlYXRlZC1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hlYWRpbmddPVwiJ2NvbW1vbi5jcmVhdGVkLWF0JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUuY3JlYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwidXBkYXRlZC1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hlYWRpbmddPVwiJ2NvbW1vbi51cGRhdGVkLWF0JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUudXBkYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLmltYWdlJyB8IHRyYW5zbGF0ZVwiIGlkPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1wbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGluZS5mZWF0dXJlZEFzc2V0IGFzIGFzc2V0OyBlbHNlIGltYWdlUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYXNzZXQgfCBhc3NldFByZXZpZXcgOiAndGlueSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiaW1hZ2VcIiBzaXplPVwiNDhcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWR0Mi1jb2x1bW5cclxuICAgICAgICAgICAgICAgICAgICBpZD1cInByb2R1Y3QtbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hlYWRpbmddPVwiJ29yZGVyLnByb2R1Y3QtbmFtZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25hbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1saW5lPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLnByb2R1Y3RWYXJpYW50Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtbiBpZD1cInByb2R1Y3Qtc2t1XCIgW2hlYWRpbmddPVwiJ29yZGVyLnByb2R1Y3Qtc2t1JyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZS5wcm9kdWN0VmFyaWFudC5za3UgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtbiBpZD1cInVuaXQtcHJpY2VcIiBbaGVhZGluZ109XCInb3JkZXIudW5pdC1wcmljZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBsaW5lLnVuaXRQcmljZVdpdGhUYXggfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ldC1wcmljZVwiIFt0aXRsZV09XCInb3JkZXIubmV0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUudW5pdFByaWNlIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtbiBpZD1cInF1YW50aXR5XCIgW2hlYWRpbmddPVwiJ29yZGVyLnF1YW50aXR5JyB8IHRyYW5zbGF0ZVwiIFtvcHRpb25hbF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZnQtcXR5IG1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0SW5pdGlhbExpbmVRdWFudGl0eShsaW5lLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwidXBkYXRlTGluZVF1YW50aXR5KGxpbmUsICRldmVudC50YXJnZXQudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0FkZGVkTGluZShsaW5lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQWRkZWRJdGVtKGxpbmUuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwidHJhc2hcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1saW5lLXJlZnVuZHMgW2xpbmVdPVwibGluZVwiIFtwYXltZW50c109XCJvcmRlci5wYXltZW50c1wiPjwvdmRyLWxpbmUtcmVmdW5kcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1saW5lLWZ1bGZpbGxtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGluZV09XCJsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxPcmRlckZ1bGZpbGxtZW50c109XCJvcmRlci5mdWxmaWxsbWVudHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZGVyU3RhdGVdPVwib3JkZXIuc3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItbGluZS1mdWxmaWxsbWVudD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBvcmRlckxpbmVDdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJjdXN0b21GaWVsZC5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGVhZGluZ109XCJjdXN0b21GaWVsZCB8IGN1c3RvbUZpZWxkTGFiZWwgOiAodWlMYW5ndWFnZSQgfCBhc3luYylcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1saW5lPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY3VzdG9tLWZpZWxkLWNvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VudGl0eU5hbWVdPVwiJ09yZGVyTGluZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkXT1cImN1c3RvbUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNGb3JtR3JvdXBdPVwib3JkZXJMaW5lQ3VzdG9tRmllbGRzRm9ybUFycmF5LmF0KGluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdmRyLWR0Mi1jb2x1bW4+XHJcbiAgICAgICAgICAgIDwvdmRyLWRhdGEtdGFibGUtMj5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ29yZGVyLmFkZC1pdGVtLXRvLW9yZGVyJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8dmRyLXByb2R1Y3QtdmFyaWFudC1zZWxlY3RvciBjbGFzcz1cIm1iLTRcIiAocHJvZHVjdFNlbGVjdGVkKT1cImFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQgPSAkZXZlbnRcIj5cclxuICAgICAgICAgICAgPC92ZHItcHJvZHVjdC12YXJpYW50LXNlbGVjdG9yPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWRkSXRlbVNlbGVjdGVkVmFyaWFudFwiIGNsYXNzPVwiZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWRkSXRlbVNlbGVjdGVkVmFyaWFudC5wcm9kdWN0QXNzZXQgYXMgYXNzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhc3NldCB8IGFzc2V0UHJldmlldyA6ICd0aW55J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTQgYWRkLWl0ZW0tdGh1bWJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cIm1yLTRcIj57eyBhZGRJdGVtU2VsZWN0ZWRWYXJpYW50LnByb2R1Y3RWYXJpYW50TmFtZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQuc2t1IH19PC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2VsZWN0ZWRJdGVtUHJpY2UoYWRkSXRlbVNlbGVjdGVkVmFyaWFudClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbG9jYWxlQ3VycmVuY3kgOiBvcmRlci5jdXJyZW5jeUNvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIiAqbmdJZj1cImFkZEl0ZW1TZWxlY3RlZFZhcmlhbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY3VzdG9tRmllbGQgb2Ygb3JkZXJMaW5lQ3VzdG9tRmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1c3RvbS1maWVsZC1jb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiFhZGRJdGVtU2VsZWN0ZWRWYXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRdPVwiY3VzdG9tRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNGb3JtR3JvdXBdPVwiYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU9XCJPcmRlckxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWN1c3RvbS1maWVsZC1jb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc3BhY2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhZGRJdGVtU2VsZWN0ZWRWYXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhYWRkSXRlbVNlbGVjdGVkVmFyaWFudCB8fCBhZGRJdGVtQ3VzdG9tRmllbGRzRm9ybS5pbnZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEl0ZW1Ub09yZGVyKGFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5hZGQtaXRlbS10by1vcmRlcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ29yZGVyLnNoaXBwaW5nJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGlwcGluZ0xpbmUgb2Ygb3JkZXIuc2hpcHBpbmdMaW5lc1wiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRTaGlwcGluZ0xpbmVEZXRhaWxzKHNoaXBwaW5nTGluZSkgYXMgZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZGV0YWlscy5uYW1lIH19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRldGFpbHMucHJpY2UgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tc21hbGxcIiAoY2xpY2spPVwic2V0U2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdMaW5lLmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnb3JkZXIuc2V0LXNoaXBwaW5nLW1ldGhvZCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ29yZGVyLmFkZC1zdXJjaGFyZ2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic3VyY2hhcmdlRm9ybVwiIChzdWJtaXQpPVwiYWRkU3VyY2hhcmdlKHN1cmNoYXJnZUZvcm0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY29tbW9uLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiIGZvcj1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjxpbnB1dCBpZD1cImRlc2NyaXB0aW9uXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz48L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ29yZGVyLnByb2R1Y3Qtc2t1JyB8IHRyYW5zbGF0ZVwiIGZvcj1cInNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48aW5wdXQgaWQ9XCJza3VcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz48L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NvbW1vbi5wcmljZScgfCB0cmFuc2xhdGVcIiBmb3I9XCJwcmljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1cnJlbmN5LWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVuY3lDb2RlXT1cIm9yZGVyLmN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWN1cnJlbmN5LWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYXRhbG9nLnByaWNlLWluY2x1ZGVzLXRheC1hdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZSA6IHsgcmF0ZTogc3VyY2hhcmdlRm9ybS5nZXQoJ3RheFJhdGUnKT8udmFsdWUgPz8gMCB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInByaWNlSW5jbHVkZXNUYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInByaWNlSW5jbHVkZXNUYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsckNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmljZUluY2x1ZGVzVGF4XCJcclxuICAgICAgICAgICAgICAgICAgICAvPjwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInb3JkZXIudGF4LXJhdGUnIHwgdHJhbnNsYXRlXCIgZm9yPVwidGF4UmF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWFmZml4ZWQtaW5wdXQgc3VmZml4PVwiJVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGlucHV0IGlkPVwidGF4UmF0ZVwiIHR5cGU9XCJudW1iZXJcIiBtaW49XCIwXCIgbWF4PVwiMTAwXCIgZm9ybUNvbnRyb2xOYW1lPVwidGF4UmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+PC92ZHItYWZmaXhlZC1pbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ29yZGVyLnRheC1kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIiBmb3I9XCJ0YXhEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48aW5wdXQgaWQ9XCJ0YXhEZXNjcmlwdGlvblwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwidGF4RGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+PC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXJjaGFyZ2VGb3JtLmludmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VyY2hhcmdlRm9ybS5wcmlzdGluZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXJjaGFyZ2VGb3JtLmdldCgncHJpY2UnKT8udmFsdWUgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXN1cmNoYXJnZUZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpPy52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ29yZGVyLmFkZC1zdXJjaGFyZ2UnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICA8L3Zkci1wYWdlLWJsb2NrPlxyXG48L3Zkci1wYWdlLWRldGFpbC1sYXlvdXQ+XHJcbiJdfQ==
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvb3JkZXIvc3JjL2NvbXBvbmVudHMvb3JkZXItZWRpdG9yL29yZGVyLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL29yZGVyL3NyYy9jb21wb25lbnRzL29yZGVyLWVkaXRvci9vcmRlci1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFNSCxnQkFBZ0IsRUFRaEIsU0FBUyxFQUVULGtDQUFrQyxFQUNsQyx3QkFBd0IsR0FDM0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBU3JGLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZ0NBQWdDLEdBQ25DLE1BQU0sb0VBQW9FLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7Ozs7Ozs7Ozs7OztBQVEvSCxNQUFNLE9BQU8sb0JBQ1QsU0FBUSx3QkFBa0U7SUFtRTFFLFlBQ2MsV0FBd0IsRUFDMUIsbUJBQXdDLEVBQ3hDLFlBQTBCLEVBQzFCLHNCQUE4QyxFQUM5QyxpQkFBb0M7UUFFNUMsS0FBSyxFQUFFLENBQUM7UUFORSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWxFaEQsZUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsdUJBQWtCLEdBQUcsSUFBSSxXQUFXLENBQVcsRUFBRSxDQUFDLENBQUM7UUFPbkQscUJBQWdCLEdBQW9CO1lBQ2hDLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsRUFBRTtZQUNaLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxJQUFJLEVBQUUsRUFBRTtZQUNSLE9BQU8sRUFBRSxFQUFFO1lBQ1gscUJBQXFCLEVBQUUsRUFBRTtZQUN6QixvQkFBb0IsRUFBRSxFQUFFO1NBQzNCLENBQUM7UUFDRixrQkFBYSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQzFCLFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxHQUFHLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3hCLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDekIsZ0JBQWdCLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDM0IsY0FBYyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztTQUN0QyxDQUFDLENBQUM7UUFDSCx3QkFBbUIsR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNoQyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxXQUFXLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekIsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3QixVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9CLFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztTQUNuQyxDQUFDLENBQUM7UUFDSCx1QkFBa0IsR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUMvQixRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxXQUFXLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDekIsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3QixVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9CLFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQztTQUNuQyxDQUFDLENBQUM7UUFDSCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1Ysd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRTNCLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMvQiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsMkJBQXNCLEdBSWxCLEVBQUUsQ0FBQztRQUNDLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFVL0QsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQVcsQ0FBQztRQUNqRixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM5RSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFDRCxJQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN0RixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDN0UsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0QsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNDLEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUNoRCxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLGtCQUFrQixDQUFFLElBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RixDQUFDO2dCQUNELFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3BFLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUNqQyxDQUFDO29CQUNGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDYixTQUFTLEdBQUc7NEJBQ1IsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFOzRCQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7eUJBQzFCLENBQUM7d0JBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDM0QsQ0FBQztvQkFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDcEMsU0FBUyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7b0JBQ25DLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RCxLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUMvQyxxQkFBcUIsRUFBRTthQUN2QixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQzthQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2FBQ2pCLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3RCLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFO2dCQUNGLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSTthQUM1QjtZQUNELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFO1NBQ3BFLENBQUM7YUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO2FBQ3JDLE9BQU8sRUFBRTthQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFtQyxFQUFFLEVBQUUsQ0FDaEUsS0FBSyxDQUFDLFVBQVUsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7YUFDeEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1AsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDakUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxPQUFPO29CQUNILEVBQUUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDO29CQUMvQixhQUFhLEVBQUUsV0FBVyxDQUFDLFlBQVk7b0JBQ3ZDLGNBQWMsRUFBRTt3QkFDWixFQUFFLEVBQUUsV0FBVyxDQUFDLGdCQUFnQjt3QkFDaEMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxrQkFBa0I7d0JBQ3BDLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRztxQkFDdkI7b0JBQ0QsU0FBUyxFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7b0JBQ2pELGdCQUFnQixFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7b0JBQy9ELFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtpQkFDekIsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsR0FBd0M7UUFDOUQsT0FBTyxTQUFTLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyRixDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBMEI7UUFDN0MsSUFBSSxDQUFDLHNCQUFzQjthQUN0Qiw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFDekQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDekUsT0FBTyxDQUNILENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTTtZQUNsQixDQUFDLENBQUMsVUFBVSxFQUFFLE1BQU07WUFDcEIsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLE1BQU07WUFDMUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7WUFDbEUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFDaEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUs7WUFDN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN6RCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUEwQztRQUNyRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUNqRCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQ2pFLENBQUM7SUFDTixDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBYztRQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUNqRyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUNsRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osT0FBTyxTQUFTLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFzRCxFQUFFLFFBQWdCO1FBQ3ZGLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FDNUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQ3JELENBQUM7WUFDRixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNOLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDN0IsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakUsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyx5REFBeUQ7Z0JBQ3pELHFCQUFxQjtnQkFDckIsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNQLEdBQUcsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBc0Q7UUFDOUQsT0FBUSxJQUFrQixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQWUsRUFBRSxRQUFnQjtRQUNyRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDTixHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBYSxFQUFFLElBQWU7UUFDbEQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBdUM7UUFDeEQsUUFBUSxNQUFNLEVBQUUsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLEtBQUssYUFBYTtnQkFDZCxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ3JDO2dCQUNJLE9BQU8sQ0FBQyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXVDO1FBQ2xELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNWLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU07WUFDbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLO1lBQ3BDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDL0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQ3JELENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDUCxHQUFHLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pFLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7WUFDcEMsQ0FBQztZQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsTUFBTSxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUNELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEQsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDcEUsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDTixHQUFHLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELHNCQUFzQixDQUFDLFlBQTBEO1FBSTdFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQixPQUFPO2dCQUNILElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxJQUFJO2dCQUM5QyxLQUFLLEVBQUUsYUFBYSxDQUFDLFlBQVk7YUFDcEMsQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTztnQkFDSCxJQUFJLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJO2dCQUMxRSxLQUFLLEVBQUUsWUFBWSxDQUFDLHNCQUFzQjthQUM3QyxDQUFDO1FBQ04sQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUFzQjtRQUNwQyxNQUFNLHFCQUFxQixHQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssY0FBYyxDQUFDLEVBQUUsY0FBYyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2FBQ2pCLG9DQUFvQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7YUFDN0MsU0FBUyxDQUFDLENBQUMsRUFBRSxvQ0FBb0MsRUFBRSxFQUFFLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQzthQUM3RixJQUFJLENBQ0QsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ2hCLElBQUksQ0FBQyxZQUFZO2FBQ1osYUFBYSxDQUFDLG1DQUFtQyxFQUFFO1lBQ2hELE1BQU0sRUFBRTtnQkFDSix1QkFBdUIsRUFBRSxPQUFPO2dCQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZO2dCQUN2QyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO2FBQy9DO1NBQ0osQ0FBQzthQUNELElBQUksQ0FDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDVCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQ1IsQ0FDSjthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sb0JBQW9CLENBQ3hCLEdBQXdDLEVBQ3hDLE1BQTJCLEVBQzNCLFlBQWlCO1FBRWpCLE9BQU8sQ0FDSCxHQUFHLENBQUMsZ0JBQWdCLEtBQUssTUFBTSxDQUFDLGdCQUFnQjtZQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUNwRSxDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWUsQ0FBQyxFQUFVO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxLQUFLLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUF5QjtRQUN4QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsZ0JBQWdCO1lBQzNDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSztZQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsZ0JBQWdCO1lBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN4RSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN0QixPQUFPO1lBQ0gsS0FBSztZQUNMLFlBQVk7U0FDZixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ3JCLEtBQUssRUFBRSxDQUFDO1lBQ1IsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixPQUFPLEVBQUUsQ0FBQztTQUNiLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQTBCO1FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQW9CO1lBQ3RDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2hFLGtDQUFrQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FDeEY7U0FDSixDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQXFCO1lBQzVCLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pHLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSztnQkFDOUIsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRTtnQkFDM0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULE1BQU0sRUFBRSxJQUFJO1lBQ1osV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdEYsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtZQUNyQixPQUFPLEVBQUU7Z0JBQ0wsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjthQUNoRDtTQUNKLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckQsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQzVCLENBQUM7UUFDTixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2FBQ2pCLFdBQVcsQ0FBQyxLQUFLLENBQUM7YUFDbEIsSUFBSSxDQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtZQUMxQixRQUFRLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDN0IsS0FBSyxPQUFPO29CQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLEVBQUU7d0JBQ3JFLElBQUksRUFBRSxJQUFJO3dCQUNWLFFBQVEsRUFBRSxLQUFLO3dCQUNmLE1BQU0sRUFBRTs0QkFDSixLQUFLLEVBQUUsV0FBVzs0QkFDbEIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhOzRCQUNqQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMscUJBQXFCOzRCQUNqRCxnQkFBZ0IsRUFBRSxLQUFLOzRCQUN2QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7NEJBQzNCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7NEJBQzdDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7NEJBQzNDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7NEJBQzNDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7eUJBQ3REO3FCQUNKLENBQUMsQ0FBQztnQkFDUCxLQUFLLHdCQUF3QixDQUFDO2dCQUM5QixLQUFLLHVCQUF1QixDQUFDO2dCQUM3QixLQUFLLHlCQUF5QixDQUFDO2dCQUMvQixLQUFLLGlCQUFpQixDQUFDO2dCQUN2QixLQUFLLDZCQUE2QixDQUFDO2dCQUNuQyxLQUFLLDJCQUEyQixDQUFDO2dCQUNqQyxLQUFLLDZCQUE2QixDQUFDO2dCQUNuQyxLQUFLLHNCQUFzQixDQUFDO2dCQUM1QixLQUFLLHdCQUF3QixDQUFDO2dCQUM5QixLQUFLLCtCQUErQixDQUFDO2dCQUNyQyxLQUFLLHdCQUF3QixDQUFDLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxDQUFDLEtBQWMsQ0FBQyxDQUFDO2dCQUM5QixDQUFDO2dCQUNELEtBQUssSUFBSSxDQUFDO2dCQUNWLEtBQUssU0FBUztvQkFDVixPQUFPLEVBQUUsQ0FBQyxLQUFjLENBQUMsQ0FBQztnQkFDOUI7b0JBQ0ksV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFELG9FQUFvRTtnQkFDcEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osc0JBQXNCO2dCQUN0QixNQUFNLFdBQVcsR0FBRztvQkFDaEIsR0FBRyxLQUFLO29CQUNSLE1BQU0sRUFBRSxLQUFLO2lCQUNoQixDQUFDO2dCQUNGLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDL0MsV0FBVyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUN6QyxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdkQsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO29CQUMxQixJQUFJLFdBQVcsQ0FBQyxVQUFVLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQ3JDLE1BQU0sVUFBVSxHQUNaLFdBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7d0JBQy9ELE1BQU0sU0FBUyxHQUNYLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO3dCQUV2RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzs2QkFDeEIsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUM7NkJBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDM0IsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUUsV0FBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDckUsT0FBTyxLQUFLLENBQUM7b0JBQ2pCLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDTDthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLCtCQUErQixDQUNuQyxlQUFpQyxFQUNqQyxPQUFxQztRQUVyQyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlELEtBQUssTUFBTSxjQUFjLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3BELE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pDLE1BQU0sS0FBSyxHQUFJLE9BQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEQsNEJBQTRCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakYsQ0FBQztZQUNELGVBQWUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFDN0UsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUEwQjtRQUNsRCxPQUFPO1lBQ0gsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxhQUFhLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFLENBQUM7SUFDTixDQUFDO0lBRVMsYUFBYSxDQUFDLE1BQTJCLEVBQUUsWUFBMEI7UUFDM0UsY0FBYztJQUNsQixDQUFDOzhHQTFoQlEsb0JBQW9CO2tHQUFwQixvQkFBb0IsK0VDcERqQywwZ2hCQW1VQTs7MkZEL1FhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgVW50eXBlZEZvcm1BcnJheSxcbiAgICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgVW50eXBlZEZvcm1Hcm91cCxcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEN1c3RvbUZpZWxkQ29uZmlnLFxuICAgIERhdGFTZXJ2aWNlLFxuICAgIERyYWZ0T3JkZXJFbGlnaWJsZVNoaXBwaW5nTWV0aG9kc1F1ZXJ5LFxuICAgIEVycm9yUmVzdWx0LFxuICAgIEdldEF2YWlsYWJsZUNvdW50cmllc1F1ZXJ5LFxuICAgIEhpc3RvcnlFbnRyeVR5cGUsXG4gICAgTGFuZ3VhZ2VDb2RlLFxuICAgIE1vZGFsU2VydmljZSxcbiAgICBNb2RpZnlPcmRlcklucHV0LFxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgT3JkZXJBZGRyZXNzRnJhZ21lbnQsXG4gICAgT3JkZXJEZXRhaWxGcmFnbWVudCxcbiAgICBPcmRlckRldGFpbFF1ZXJ5RG9jdW1lbnQsXG4gICAgU29ydE9yZGVyLFxuICAgIFN1cmNoYXJnZUlucHV0LFxuICAgIHRyYW5zZm9ybVJlbGF0aW9uQ3VzdG9tRmllbGRJbnB1dHMsXG4gICAgVHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50LFxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcbmltcG9ydCB7IGFzc2VydE5ldmVyLCBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC11dGlscyc7XG5pbXBvcnQgeyBzaW1wbGVEZWVwQ2xvbmUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NpbXBsZS1kZWVwLWNsb25lJztcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtYXBUbywgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBBZGRlZExpbmUsXG4gICAgTW9kaWZ5T3JkZXJEYXRhLFxuICAgIE9yZGVyU25hcHNob3QsXG4gICAgUHJvZHVjdFNlbGVjdG9ySXRlbSxcbn0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGlmeS1vcmRlci10eXBlcyc7XG5cbmltcG9ydCB7IE9yZGVyVHJhbnNpdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvb3JkZXItdHJhbnNpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgT3JkZXJFZGl0UmVzdWx0VHlwZSxcbiAgICBPcmRlckVkaXRzUHJldmlld0RpYWxvZ0NvbXBvbmVudCxcbn0gZnJvbSAnLi4vb3JkZXItZWRpdHMtcHJldmlldy1kaWFsb2cvb3JkZXItZWRpdHMtcHJldmlldy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdFNoaXBwaW5nTWV0aG9kRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0LXNoaXBwaW5nLW1ldGhvZC1kaWFsb2cvc2VsZWN0LXNoaXBwaW5nLW1ldGhvZC1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2ZHItb3JkZXItZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vb3JkZXItZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9vcmRlci1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgT3JkZXJFZGl0b3JDb21wb25lbnRcbiAgICBleHRlbmRzIFR5cGVkQmFzZURldGFpbENvbXBvbmVudDx0eXBlb2YgT3JkZXJEZXRhaWxRdWVyeURvY3VtZW50LCAnb3JkZXInPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgICBhdmFpbGFibGVDb3VudHJpZXMkOiBPYnNlcnZhYmxlPEdldEF2YWlsYWJsZUNvdW50cmllc1F1ZXJ5Wydjb3VudHJpZXMnXVsnaXRlbXMnXT47XG4gICAgYWRkcmVzc0N1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXTtcbiAgICB1aUxhbmd1YWdlJDogT2JzZXJ2YWJsZTxMYW5ndWFnZUNvZGU+O1xuICAgIGRldGFpbEZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG4gICAgY291cG9uQ29kZXNDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZ1tdPihbXSk7XG4gICAgb3JkZXJMaW5lQ3VzdG9tRmllbGRzRm9ybUFycmF5OiBVbnR5cGVkRm9ybUFycmF5O1xuICAgIGFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXk7XG4gICAgYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgYWRkSXRlbVNlbGVjdGVkVmFyaWFudDogUHJvZHVjdFNlbGVjdG9ySXRlbSB8IHVuZGVmaW5lZDtcbiAgICBvcmRlckxpbmVDdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW107XG4gICAgb3JkZXJTbmFwc2hvdDogT3JkZXJTbmFwc2hvdDtcbiAgICBtb2RpZnlPcmRlcklucHV0OiBNb2RpZnlPcmRlckRhdGEgPSB7XG4gICAgICAgIGRyeVJ1bjogdHJ1ZSxcbiAgICAgICAgb3JkZXJJZDogJycsXG4gICAgICAgIGFkZEl0ZW1zOiBbXSxcbiAgICAgICAgYWRqdXN0T3JkZXJMaW5lczogW10sXG4gICAgICAgIHN1cmNoYXJnZXM6IFtdLFxuICAgICAgICBub3RlOiAnJyxcbiAgICAgICAgcmVmdW5kczogW10sXG4gICAgICAgIHVwZGF0ZVNoaXBwaW5nQWRkcmVzczoge30sXG4gICAgICAgIHVwZGF0ZUJpbGxpbmdBZGRyZXNzOiB7fSxcbiAgICB9O1xuICAgIHN1cmNoYXJnZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSkpLFxuICAgICAgICBza3U6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIHByaWNlOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgICAgIHByaWNlSW5jbHVkZXNUYXg6IG5ldyBGb3JtQ29udHJvbCh0cnVlKSxcbiAgICAgICAgdGF4UmF0ZTogbmV3IEZvcm1Db250cm9sKDApLFxuICAgICAgICB0YXhEZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICB9KTtcbiAgICBzaGlwcGluZ0FkZHJlc3NGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGZ1bGxOYW1lOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBjb21wYW55OiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBzdHJlZXRMaW5lMTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgc3RyZWV0TGluZTI6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIGNpdHk6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIHByb3ZpbmNlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBwb3N0YWxDb2RlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBjb3VudHJ5Q29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgcGhvbmVOdW1iZXI6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgfSk7XG4gICAgYmlsbGluZ0FkZHJlc3NGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGZ1bGxOYW1lOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBjb21wYW55OiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBzdHJlZXRMaW5lMTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgc3RyZWV0TGluZTI6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIGNpdHk6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIHByb3ZpbmNlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBwb3N0YWxDb2RlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBjb3VudHJ5Q29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgcGhvbmVOdW1iZXI6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgfSk7XG4gICAgbm90ZSA9ICcnO1xuICAgIHJlY2FsY3VsYXRlU2hpcHBpbmcgPSB0cnVlO1xuICAgIHByZXZpb3VzU3RhdGU6IHN0cmluZztcbiAgICBlZGl0aW5nU2hpcHBpbmdBZGRyZXNzID0gZmFsc2U7XG4gICAgZWRpdGluZ0JpbGxpbmdBZGRyZXNzID0gZmFsc2U7XG4gICAgdXBkYXRlZFNoaXBwaW5nTWV0aG9kczoge1xuICAgICAgICBbXG4gICAgICAgICAgICBzaGlwcGluZ0xpbmVJZDogc3RyaW5nXG4gICAgICAgIF06IERyYWZ0T3JkZXJFbGlnaWJsZVNoaXBwaW5nTWV0aG9kc1F1ZXJ5WydlbGlnaWJsZVNoaXBwaW5nTWV0aG9kc0ZvckRyYWZ0T3JkZXInXVtudW1iZXJdO1xuICAgIH0gPSB7fTtcbiAgICBwcml2YXRlIGFkZGVkVmFyaWFudHMgPSBuZXcgTWFwPHN0cmluZywgUHJvZHVjdFNlbGVjdG9ySXRlbT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgb3JkZXJUcmFuc2l0aW9uU2VydmljZTogT3JkZXJUcmFuc2l0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICB0aGlzLmFkZHJlc3NDdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdBZGRyZXNzJyk7XG4gICAgICAgIHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5vcmRlcklkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ09yZGVyTGluZScpO1xuICAgICAgICB0aGlzLmVudGl0eSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3JkZXIgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcmRlclNuYXBzaG90ID0gdGhpcy5jcmVhdGVPcmRlclNuYXBzaG90KG9yZGVyKTtcbiAgICAgICAgICAgIGlmIChvcmRlci5jb3Vwb25Db2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvdXBvbkNvZGVzQ29udHJvbC5zZXRWYWx1ZShvcmRlci5jb3Vwb25Db2Rlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN1cmNoYXJnZUZvcm0ucmVzZXQoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW25hbWUsIGNvbnRyb2xdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc2hpcHBpbmdBZGRyZXNzRm9ybS5jb250cm9scykpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG9yZGVyLnNoaXBwaW5nQWRkcmVzcz8uW25hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWRkQWRkcmVzc0N1c3RvbUZpZWxkc0Zvcm1Hcm91cCh0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0sIG9yZGVyLnNoaXBwaW5nQWRkcmVzcyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjb250cm9sXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmJpbGxpbmdBZGRyZXNzRm9ybS5jb250cm9scykpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG9yZGVyLmJpbGxpbmdBZGRyZXNzPy5bbmFtZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZGRBZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwKHRoaXMuYmlsbGluZ0FkZHJlc3NGb3JtLCBvcmRlci5iaWxsaW5nQWRkcmVzcyk7XG4gICAgICAgICAgICB0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkc0Zvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvcmRlci5saW5lcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZSB9IG9mIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKG5hbWUsIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKGxpbmUgYXMgYW55KS5jdXN0b21GaWVsZHNbbmFtZV0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmeVJvdyA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGp1c3RPcmRlckxpbmVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICBsID0+IGwub3JkZXJMaW5lSWQgPT09IGxpbmUuaWQsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbW9kaWZ5Um93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnlSb3cgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJMaW5lSWQ6IGxpbmUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGxpbmUucXVhbnRpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RpZnlPcmRlcklucHV0LmFkanVzdE9yZGVyTGluZXMucHVzaChtb2RpZnlSb3cpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9yZGVyTGluZUN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmeVJvdy5jdXN0b21GaWVsZHMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzRm9ybUFycmF5LnB1c2goZm9ybUdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hZGRJdGVtQ3VzdG9tRmllbGRzRm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pO1xuICAgICAgICB0aGlzLmFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xuICAgICAgICBmb3IgKGNvbnN0IGN1c3RvbUZpZWxkIG9mIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtLmFkZENvbnRyb2woY3VzdG9tRmllbGQubmFtZSwgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF2YWlsYWJsZUNvdW50cmllcyQgPSB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzXG4gICAgICAgICAgICAuZ2V0QXZhaWxhYmxlQ291bnRyaWVzKClcbiAgICAgICAgICAgIC5tYXBTaW5nbGUocmVzdWx0ID0+IHJlc3VsdC5jb3VudHJpZXMuaXRlbXMpXG4gICAgICAgICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcbiAgICAgICAgICAgIC5nZXRPcmRlckhpc3RvcnkodGhpcy5pZCwge1xuICAgICAgICAgICAgICAgIHRha2U6IDEsXG4gICAgICAgICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmlsdGVyOiB7IHR5cGU6IHsgZXE6IEhpc3RvcnlFbnRyeVR5cGUuT1JERVJfU1RBVEVfVFJBTlNJVElPTiB9IH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnNpbmdsZSQuc3Vic2NyaWJlKCh7IG9yZGVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzU3RhdGUgPSBvcmRlcj8uaGlzdG9yeS5pdGVtc1swXS5kYXRhLmZyb207XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy51aUxhbmd1YWdlJCA9IHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50XG4gICAgICAgICAgICAudWlTdGF0ZSgpXG4gICAgICAgICAgICAuc3RyZWFtJC5waXBlKG1hcCgoeyB1aVN0YXRlIH0pID0+IHVpU3RhdGUubGFuZ3VhZ2UpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgZ2V0IGFkZGVkTGluZXMoKTogQWRkZWRMaW5lW10ge1xuICAgICAgICBjb25zdCBnZXRTaW5nbGVQcmljZVZhbHVlID0gKHByaWNlOiBQcm9kdWN0U2VsZWN0b3JJdGVtWydwcmljZSddKSA9PlxuICAgICAgICAgICAgcHJpY2UuX190eXBlbmFtZSA9PT0gJ1NpbmdsZVByaWNlJyA/IHByaWNlLnZhbHVlIDogMDtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXMgfHwgW10pXG4gICAgICAgICAgICAubWFwKHJvdyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFyaWFudEluZm8gPSB0aGlzLmFkZGVkVmFyaWFudHMuZ2V0KHJvdy5wcm9kdWN0VmFyaWFudElkKTtcbiAgICAgICAgICAgICAgICBpZiAodmFyaWFudEluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdldElkRm9yQWRkZWRJdGVtKHJvdyksXG4gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZEFzc2V0OiB2YXJpYW50SW5mby5wcm9kdWN0QXNzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB2YXJpYW50SW5mby5wcm9kdWN0VmFyaWFudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHZhcmlhbnRJbmZvLnByb2R1Y3RWYXJpYW50TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza3U6IHZhcmlhbnRJbmZvLnNrdSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB1bml0UHJpY2U6IGdldFNpbmdsZVByaWNlVmFsdWUodmFyaWFudEluZm8ucHJpY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5pdFByaWNlV2l0aFRheDogZ2V0U2luZ2xlUHJpY2VWYWx1ZSh2YXJpYW50SW5mby5wcmljZVdpdGhUYXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHJvdy5xdWFudGl0eSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWRGb3JBZGRlZEl0ZW0ocm93OiBNb2RpZnlPcmRlckRhdGFbJ2FkZEl0ZW1zJ11bbnVtYmVyXSkge1xuICAgICAgICByZXR1cm4gYGFkZGVkLSR7cm93LnByb2R1Y3RWYXJpYW50SWR9LSR7SlNPTi5zdHJpbmdpZnkocm93LmN1c3RvbUZpZWxkcyB8fCB7fSl9YDtcbiAgICB9XG5cbiAgICB0cmFuc2l0aW9uVG9QcmlvclN0YXRlKG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KSB7XG4gICAgICAgIHRoaXMub3JkZXJUcmFuc2l0aW9uU2VydmljZVxuICAgICAgICAgICAgLnRyYW5zaXRpb25Ub1ByZU1vZGlmeWluZ1N0YXRlKG9yZGVyLmlkLCBvcmRlci5uZXh0U3RhdGVzKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFzTW9kaWZpY2F0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeyBhZGRJdGVtcywgYWRqdXN0T3JkZXJMaW5lcywgc3VyY2hhcmdlcyB9ID0gdGhpcy5tb2RpZnlPcmRlcklucHV0O1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISFhZGRJdGVtcz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAhIXN1cmNoYXJnZXM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgISFhZGp1c3RPcmRlckxpbmVzPy5sZW5ndGggfHxcbiAgICAgICAgICAgICh0aGlzLnNoaXBwaW5nQWRkcmVzc0Zvcm0uZGlydHkgJiYgdGhpcy5zaGlwcGluZ0FkZHJlc3NGb3JtLnZhbGlkKSB8fFxuICAgICAgICAgICAgKHRoaXMuYmlsbGluZ0FkZHJlc3NGb3JtLmRpcnR5ICYmIHRoaXMuYmlsbGluZ0FkZHJlc3NGb3JtLnZhbGlkKSB8fFxuICAgICAgICAgICAgdGhpcy5jb3Vwb25Db2Rlc0NvbnRyb2wuZGlydHkgfHxcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMudXBkYXRlZFNoaXBwaW5nTWV0aG9kcykubGVuZ3RoID4gMFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzTGluZU1vZGlmaWVkKGxpbmU6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2xpbmVzJ11bbnVtYmVyXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRqdXN0T3JkZXJMaW5lcz8uZmluZChcbiAgICAgICAgICAgIGwgPT4gbC5vcmRlckxpbmVJZCA9PT0gbGluZS5pZCAmJiBsLnF1YW50aXR5ICE9PSBsaW5lLnF1YW50aXR5LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEluaXRpYWxMaW5lUXVhbnRpdHkobGluZUlkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBhZGp1c3RlZExpbmUgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRqdXN0T3JkZXJMaW5lcz8uZmluZChsID0+IGwub3JkZXJMaW5lSWQgPT09IGxpbmVJZCk7XG4gICAgICAgIGlmIChhZGp1c3RlZExpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiBhZGp1c3RlZExpbmUucXVhbnRpdHk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWRkZWRMaW5lID0gdGhpcy5tb2RpZnlPcmRlcklucHV0LmFkZEl0ZW1zPy5maW5kKGwgPT4gdGhpcy5nZXRJZEZvckFkZGVkSXRlbShsKSA9PT0gbGluZUlkKTtcbiAgICAgICAgaWYgKGFkZGVkTGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFkZGVkTGluZS5xdWFudGl0eSA/PyAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLm9yZGVyU25hcHNob3QubGluZXMuZmluZChsID0+IGwuaWQgPT09IGxpbmVJZCk7XG4gICAgICAgIHJldHVybiBsaW5lID8gbGluZS5xdWFudGl0eSA6IDE7XG4gICAgfVxuXG4gICAgdXBkYXRlTGluZVF1YW50aXR5KGxpbmU6IE9yZGVyRGV0YWlsRnJhZ21lbnRbJ2xpbmVzJ11bbnVtYmVyXSB8IEFkZGVkTGluZSwgcXVhbnRpdHk6IHN0cmluZykge1xuICAgICAgICBjb25zdCB7IGFkanVzdE9yZGVyTGluZXMgfSA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dDtcbiAgICAgICAgaWYgKHRoaXMuaXNBZGRlZExpbmUobGluZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGRJdGVtcz8uZmluZChcbiAgICAgICAgICAgICAgICBsID0+IGwucHJvZHVjdFZhcmlhbnRJZCA9PT0gbGluZS5wcm9kdWN0VmFyaWFudC5pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAocm93KSB7XG4gICAgICAgICAgICAgICAgcm93LnF1YW50aXR5ID0gK3F1YW50aXR5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJvdyA9IGFkanVzdE9yZGVyTGluZXM/LmZpbmQobCA9PiBsLm9yZGVyTGluZUlkID09PSBsaW5lLmlkKTtcbiAgICAgICAgICAgIGlmIChyb3cgJiYgK3F1YW50aXR5ID09PSBsaW5lLnF1YW50aXR5KSB7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBtb2RpZmljYXRpb24gaWYgdGhlIHF1YW50aXR5IGlzIHRoZSBzYW1lIGFzXG4gICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIG9yZGVyXG4gICAgICAgICAgICAgICAgYWRqdXN0T3JkZXJMaW5lcz8uc3BsaWNlKGFkanVzdE9yZGVyTGluZXM/LmluZGV4T2Yocm93KSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJvdykge1xuICAgICAgICAgICAgICAgIHJvdyA9IHsgb3JkZXJMaW5lSWQ6IGxpbmUuaWQsIHF1YW50aXR5OiArcXVhbnRpdHkgfTtcbiAgICAgICAgICAgICAgICBhZGp1c3RPcmRlckxpbmVzPy5wdXNoKHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb3cucXVhbnRpdHkgPSArcXVhbnRpdHk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0FkZGVkTGluZShsaW5lOiBPcmRlckRldGFpbEZyYWdtZW50WydsaW5lcyddW251bWJlcl0gfCBBZGRlZExpbmUpOiBsaW5lIGlzIEFkZGVkTGluZSB7XG4gICAgICAgIHJldHVybiAobGluZSBhcyBBZGRlZExpbmUpLmlkLnN0YXJ0c1dpdGgoJ2FkZGVkLScpO1xuICAgIH1cblxuICAgIHVwZGF0ZUFkZGVkSXRlbVF1YW50aXR5KGl0ZW06IEFkZGVkTGluZSwgcXVhbnRpdHk6IHN0cmluZykge1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXM/LmZpbmQobCA9PiBsLnByb2R1Y3RWYXJpYW50SWQgPT09IGl0ZW0ucHJvZHVjdFZhcmlhbnQuaWQpO1xuICAgICAgICBpZiAocm93KSB7XG4gICAgICAgICAgICByb3cucXVhbnRpdHkgPSArcXVhbnRpdHk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFja0J5UHJvZHVjdFZhcmlhbnRJZChpbmRleDogbnVtYmVyLCBpdGVtOiBBZGRlZExpbmUpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ucHJvZHVjdFZhcmlhbnQuaWQ7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtUHJpY2UocmVzdWx0OiBQcm9kdWN0U2VsZWN0b3JJdGVtIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgICAgICAgc3dpdGNoIChyZXN1bHQ/LnByaWNlV2l0aFRheC5fX3R5cGVuYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdTaW5nbGVQcmljZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5wcmljZVdpdGhUYXgudmFsdWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkSXRlbVRvT3JkZXIocmVzdWx0OiBQcm9kdWN0U2VsZWN0b3JJdGVtIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHMubGVuZ3RoXG4gICAgICAgICAgICA/IHRoaXMuYWRkSXRlbUN1c3RvbUZpZWxkc0Zvcm0udmFsdWVcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcm93ID0gdGhpcy5tb2RpZnlPcmRlcklucHV0LmFkZEl0ZW1zPy5maW5kKGwgPT5cbiAgICAgICAgICAgIHRoaXMuaXNNYXRjaGluZ0FkZEl0ZW1Sb3cobCwgcmVzdWx0LCBjdXN0b21GaWVsZHMpLFxuICAgICAgICApO1xuICAgICAgICBpZiAoIXJvdykge1xuICAgICAgICAgICAgcm93ID0geyBwcm9kdWN0VmFyaWFudElkOiByZXN1bHQucHJvZHVjdFZhcmlhbnRJZCwgcXVhbnRpdHk6IDEgfTtcbiAgICAgICAgICAgIGlmIChjdXN0b21GaWVsZHMpIHtcbiAgICAgICAgICAgICAgICByb3cuY3VzdG9tRmllbGRzID0gY3VzdG9tRmllbGRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tb2RpZnlPcmRlcklucHV0LmFkZEl0ZW1zPy5wdXNoKHJvdyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByb3cucXVhbnRpdHkrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VzdG9tRmllbGRzKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjdXN0b21GaWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woa2V5LCBuZXcgVW50eXBlZEZvcm1Db250cm9sKHZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtQXJyYXkucHVzaChmb3JtR3JvdXApO1xuICAgICAgICAgICAgZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocm93KSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jdXN0b21GaWVsZHMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtLnJlc2V0KHt9KTtcbiAgICAgICAgdGhpcy5hZGRJdGVtU2VsZWN0ZWRWYXJpYW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFkZGVkVmFyaWFudHMuc2V0KHJlc3VsdC5wcm9kdWN0VmFyaWFudElkLCByZXN1bHQpO1xuICAgIH1cblxuICAgIGdldFNoaXBwaW5nTGluZURldGFpbHMoc2hpcHBpbmdMaW5lOiBPcmRlckRldGFpbEZyYWdtZW50WydzaGlwcGluZ0xpbmVzJ11bbnVtYmVyXSk6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBwcmljZTogbnVtYmVyO1xuICAgIH0ge1xuICAgICAgICBjb25zdCB1cGRhdGVkTWV0aG9kID0gdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzW3NoaXBwaW5nTGluZS5pZF07XG4gICAgICAgIGlmICh1cGRhdGVkTWV0aG9kKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHVwZGF0ZWRNZXRob2QubmFtZSB8fCB1cGRhdGVkTWV0aG9kLmNvZGUsXG4gICAgICAgICAgICAgICAgcHJpY2U6IHVwZGF0ZWRNZXRob2QucHJpY2VXaXRoVGF4LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogc2hpcHBpbmdMaW5lLnNoaXBwaW5nTWV0aG9kLm5hbWUgfHwgc2hpcHBpbmdMaW5lLnNoaXBwaW5nTWV0aG9kLmNvZGUsXG4gICAgICAgICAgICAgICAgcHJpY2U6IHNoaXBwaW5nTGluZS5kaXNjb3VudGVkUHJpY2VXaXRoVGF4LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTGluZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNoaXBwaW5nTWV0aG9kID1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlZFNoaXBwaW5nTWV0aG9kc1tzaGlwcGluZ0xpbmVJZF0gPz9cbiAgICAgICAgICAgIHRoaXMuZW50aXR5Py5zaGlwcGluZ0xpbmVzLmZpbmQobCA9PiBsLmlkID09PSBzaGlwcGluZ0xpbmVJZCk/LnNoaXBwaW5nTWV0aG9kO1xuICAgICAgICBpZiAoIWN1cnJlbnRTaGlwcGluZ01ldGhvZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uub3JkZXJcbiAgICAgICAgICAgIC5nZXREcmFmdE9yZGVyRWxpZ2libGVTaGlwcGluZ01ldGhvZHModGhpcy5pZClcbiAgICAgICAgICAgIC5tYXBTaW5nbGUoKHsgZWxpZ2libGVTaGlwcGluZ01ldGhvZHNGb3JEcmFmdE9yZGVyIH0pID0+IGVsaWdpYmxlU2hpcHBpbmdNZXRob2RzRm9yRHJhZnRPcmRlcilcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChtZXRob2RzID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbUNvbXBvbmVudChTZWxlY3RTaGlwcGluZ01ldGhvZERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJsZVNoaXBwaW5nTWV0aG9kczogbWV0aG9kcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lDb2RlOiB0aGlzLmVudGl0eT8uY3VycmVuY3lDb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9uSWQ6IGN1cnJlbnRTaGlwcGluZ01ldGhvZC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kcy5maW5kKG1ldGhvZCA9PiBtZXRob2QuaWQgPT09IHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlZFNoaXBwaW5nTWV0aG9kc1tzaGlwcGluZ0xpbmVJZF0gPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01hdGNoaW5nQWRkSXRlbVJvdyhcbiAgICAgICAgcm93OiBNb2RpZnlPcmRlckRhdGFbJ2FkZEl0ZW1zJ11bbnVtYmVyXSxcbiAgICAgICAgcmVzdWx0OiBQcm9kdWN0U2VsZWN0b3JJdGVtLFxuICAgICAgICBjdXN0b21GaWVsZHM6IGFueSxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHJvdy5wcm9kdWN0VmFyaWFudElkID09PSByZXN1bHQucHJvZHVjdFZhcmlhbnRJZCAmJlxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkocm93LmN1c3RvbUZpZWxkcykgPT09IEpTT04uc3RyaW5naWZ5KGN1c3RvbUZpZWxkcylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZW1vdmVBZGRlZEl0ZW0oaWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXMgPSB0aGlzLm1vZGlmeU9yZGVySW5wdXQuYWRkSXRlbXM/LmZpbHRlcihsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JZCA9IHRoaXMuZ2V0SWRGb3JBZGRlZEl0ZW0obCk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbUlkICE9PSBpZDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0U3VyY2hhcmdlUHJpY2VzKHN1cmNoYXJnZTogU3VyY2hhcmdlSW5wdXQpIHtcbiAgICAgICAgY29uc3QgcHJpY2VXaXRoVGF4ID0gc3VyY2hhcmdlLnByaWNlSW5jbHVkZXNUYXhcbiAgICAgICAgICAgID8gc3VyY2hhcmdlLnByaWNlXG4gICAgICAgICAgICA6IE1hdGgucm91bmQoc3VyY2hhcmdlLnByaWNlICogKCgxMDAgKyAoc3VyY2hhcmdlLnRheFJhdGUgfHwgMCkpIC8gMTAwKSk7XG4gICAgICAgIGNvbnN0IHByaWNlID0gc3VyY2hhcmdlLnByaWNlSW5jbHVkZXNUYXhcbiAgICAgICAgICAgID8gTWF0aC5yb3VuZChzdXJjaGFyZ2UucHJpY2UgLyAoKDEwMCArIChzdXJjaGFyZ2UudGF4UmF0ZSB8fCAwKSkgLyAxMDApKVxuICAgICAgICAgICAgOiBzdXJjaGFyZ2UucHJpY2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmljZSxcbiAgICAgICAgICAgIHByaWNlV2l0aFRheCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhZGRTdXJjaGFyZ2UodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLm1vZGlmeU9yZGVySW5wdXQuc3VyY2hhcmdlcz8ucHVzaCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc3VyY2hhcmdlRm9ybS5yZXNldCh7XG4gICAgICAgICAgICBwcmljZTogMCxcbiAgICAgICAgICAgIHByaWNlSW5jbHVkZXNUYXg6IHRydWUsXG4gICAgICAgICAgICB0YXhSYXRlOiAwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVTdXJjaGFyZ2UoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLm1vZGlmeU9yZGVySW5wdXQuc3VyY2hhcmdlcz8uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBwcmV2aWV3QW5kTW9kaWZ5KG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KSB7XG4gICAgICAgIGNvbnN0IG1vZGlmeU9yZGVySW5wdXQ6IE1vZGlmeU9yZGVyRGF0YSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMubW9kaWZ5T3JkZXJJbnB1dCxcbiAgICAgICAgICAgIGFkanVzdE9yZGVyTGluZXM6IHRoaXMubW9kaWZ5T3JkZXJJbnB1dC5hZGp1c3RPcmRlckxpbmVzLm1hcChsaW5lID0+XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtUmVsYXRpb25DdXN0b21GaWVsZElucHV0cyhzaW1wbGVEZWVwQ2xvbmUobGluZSksIHRoaXMub3JkZXJMaW5lQ3VzdG9tRmllbGRzKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGlucHV0OiBNb2RpZnlPcmRlcklucHV0ID0ge1xuICAgICAgICAgICAgLi4ubW9kaWZ5T3JkZXJJbnB1dCxcbiAgICAgICAgICAgIC4uLih0aGlzLmJpbGxpbmdBZGRyZXNzRm9ybS5kaXJ0eSA/IHsgdXBkYXRlQmlsbGluZ0FkZHJlc3M6IHRoaXMuYmlsbGluZ0FkZHJlc3NGb3JtLnZhbHVlIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4odGhpcy5zaGlwcGluZ0FkZHJlc3NGb3JtLmRpcnR5XG4gICAgICAgICAgICAgICAgPyB7IHVwZGF0ZVNoaXBwaW5nQWRkcmVzczogdGhpcy5zaGlwcGluZ0FkZHJlc3NGb3JtLnZhbHVlIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgIGRyeVJ1bjogdHJ1ZSxcbiAgICAgICAgICAgIGNvdXBvbkNvZGVzOiB0aGlzLmNvdXBvbkNvZGVzQ29udHJvbC5kaXJ0eSA/IHRoaXMuY291cG9uQ29kZXNDb250cm9sLnZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbm90ZTogdGhpcy5ub3RlID8/ICcnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHJlY2FsY3VsYXRlU2hpcHBpbmc6IHRoaXMucmVjYWxjdWxhdGVTaGlwcGluZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGlmIChPYmplY3QuZW50cmllcyh0aGlzLnVwZGF0ZWRTaGlwcGluZ01ldGhvZHMpLmxlbmd0aCkge1xuICAgICAgICAgICAgaW5wdXQuc2hpcHBpbmdNZXRob2RJZHMgPSBvcmRlci5zaGlwcGluZ0xpbmVzLm1hcChsID0+XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzW2wuaWRdXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzW2wuaWRdLmlkXG4gICAgICAgICAgICAgICAgICAgIDogbC5zaGlwcGluZ01ldGhvZC5pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5vcmRlclxuICAgICAgICAgICAgLm1vZGlmeU9yZGVyKGlucHV0KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IG1vZGlmeU9yZGVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtb2RpZnlPcmRlci5fX3R5cGVuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubW9kYWxTZXJ2aWNlLmZyb21Db21wb25lbnQoT3JkZXJFZGl0c1ByZXZpZXdEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBtb2RpZnlPcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyU25hcHNob3Q6IHRoaXMub3JkZXJTbmFwc2hvdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyTGluZUN1c3RvbUZpZWxkczogdGhpcy5vcmRlckxpbmVDdXN0b21GaWVsZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZnlPcmRlcklucHV0OiBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkTGluZXM6IHRoaXMuYWRkZWRMaW5lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc0Zvcm06IHRoaXMuc2hpcHBpbmdBZGRyZXNzRm9ybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbGxpbmdBZGRyZXNzRm9ybTogdGhpcy5iaWxsaW5nQWRkcmVzc0Zvcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vwb25Db2Rlc0NvbnRyb2w6IHRoaXMuY291cG9uQ29kZXNDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFNoaXBwaW5nTWV0aG9kczogdGhpcy51cGRhdGVkU2hpcHBpbmdNZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnSW5zdWZmaWNpZW50U3RvY2tFcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdOZWdhdGl2ZVF1YW50aXR5RXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnTm9DaGFuZ2VzU3BlY2lmaWVkRXJyb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnT3JkZXJMaW1pdEVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ09yZGVyTW9kaWZpY2F0aW9uU3RhdGVFcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdQYXltZW50TWV0aG9kTWlzc2luZ0Vycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1JlZnVuZFBheW1lbnRJZE1pc3NpbmdFcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdDb3Vwb25Db2RlTGltaXRFcnJvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdDb3Vwb25Db2RlRXhwaXJlZEVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0luZWxpZ2libGVTaGlwcGluZ01ldGhvZEVycm9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NvdXBvbkNvZGVJbnZhbGlkRXJyb3InOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKG1vZGlmeU9yZGVyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSBhcyBjb25zdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UgYXMgY29uc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnROZXZlcihtb2RpZnlPcmRlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LnJlc3VsdCA9PT0gT3JkZXJFZGl0UmVzdWx0VHlwZS5DYW5jZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlLWZldGNoIHNvIHRoYXQgdGhlIHByZXZpZXcgdmFsdWVzIGdldCBvdmVyd3JpdHRlbiBpbiB0aGUgY2FjaGUuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5vcmRlci5nZXRPcmRlcih0aGlzLmlkKS5tYXBTaW5nbGUoKCkgPT4gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gdGhlIG1vZGlmaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2V0UnVuSW5wdXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJ5UnVuOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJlc3VsdCA9PT0gT3JkZXJFZGl0UmVzdWx0VHlwZS5SZWZ1bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZXRSdW5JbnB1dC5yZWZ1bmRzID0gcmVzdWx0LnJlZnVuZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5vcmRlci5tb2RpZnlPcmRlcih3ZXRSdW5JbnB1dCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHsgbW9kaWZ5T3JkZXIgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kaWZ5T3JkZXIuX190eXBlbmFtZSA9PT0gJ09yZGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJpY2VEZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZ5T3JkZXIudG90YWxXaXRoVGF4IC0gdGhpcy5vcmRlclNuYXBzaG90LnRvdGFsV2l0aFRheDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA8IHByaWNlRGVsdGEgPyAnQXJyYW5naW5nQWRkaXRpb25hbFBheW1lbnQnIDogdGhpcy5wcmV2aW91c1N0YXRlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5vcmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmFuc2l0aW9uVG9TdGF0ZShvcmRlci5pZCwgbmV4dFN0YXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcFRvKHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcigobW9kaWZ5T3JkZXIgYXMgRXJyb3JSZXN1bHQpLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRBZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwKFxuICAgICAgICBwYXJlbnRGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgICAgIGFkZHJlc3M/OiBPcmRlckFkZHJlc3NGcmFnbWVudCB8IG51bGwsXG4gICAgKSB7XG4gICAgICAgIGlmIChhZGRyZXNzICYmIHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NDdXN0b21GaWVsZHNGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGN1c3RvbUZpZWxkRGVmIG9mIHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjdXN0b21GaWVsZERlZi5uYW1lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGFkZHJlc3MgYXMgYW55KS5jdXN0b21GaWVsZHM/LltuYW1lXTtcbiAgICAgICAgICAgICAgICBhZGRyZXNzQ3VzdG9tRmllbGRzRm9ybUdyb3VwLmFkZENvbnRyb2wobmFtZSwgbmV3IFVudHlwZWRGb3JtQ29udHJvbCh2YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFyZW50Rm9ybUdyb3VwLmFkZENvbnRyb2woJ2N1c3RvbUZpZWxkcycsIGFkZHJlc3NDdXN0b21GaWVsZHNGb3JtR3JvdXApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVPcmRlclNuYXBzaG90KG9yZGVyOiBPcmRlckRldGFpbEZyYWdtZW50KTogT3JkZXJTbmFwc2hvdCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3RhbFdpdGhUYXg6IG9yZGVyLnRvdGFsV2l0aFRheCxcbiAgICAgICAgICAgIGN1cnJlbmN5Q29kZTogb3JkZXIuY3VycmVuY3lDb2RlLFxuICAgICAgICAgICAgY291cG9uQ29kZXM6IG9yZGVyLmNvdXBvbkNvZGVzLFxuICAgICAgICAgICAgbGluZXM6IFsuLi5vcmRlci5saW5lc10ubWFwKGxpbmUgPT4gKHsgLi4ubGluZSB9KSksXG4gICAgICAgICAgICBzaGlwcGluZ0xpbmVzOiBbLi4ub3JkZXIuc2hpcHBpbmdMaW5lc10ubWFwKGxpbmUgPT4gKHsgLi4ubGluZSB9KSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldEZvcm1WYWx1ZXMoZW50aXR5OiBPcmRlckRldGFpbEZyYWdtZW50LCBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xuICAgICAgICAvKiBub3QgdXNlZCAqL1xuICAgIH1cbn1cbiIsIjx2ZHItcGFnZS1ibG9jaz5cclxuICAgIDx2ZHItYWN0aW9uLWJhciAqbmdJZj1cImVudGl0eSQgfCBhc3luYyBhcyBvcmRlclwiPlxyXG4gICAgICAgIDx2ZHItYWItbGVmdD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggY2xyLWFsaWduLWl0ZW1zLWNlbnRlclwiPjwvZGl2PlxyXG4gICAgICAgIDwvdmRyLWFiLWxlZnQ+XHJcblxyXG4gICAgICAgIDx2ZHItYWItcmlnaHQ+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJ0cmFuc2l0aW9uVG9QcmlvclN0YXRlKG9yZGVyKVwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ29yZGVyLmNhbmNlbC1tb2RpZmljYXRpb24nIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvdmRyLWFiLXJpZ2h0PlxyXG4gICAgPC92ZHItYWN0aW9uLWJhcj5cclxuPC92ZHItcGFnZS1ibG9jaz5cclxuXHJcbjx2ZHItcGFnZS1kZXRhaWwtbGF5b3V0ICpuZ0lmPVwiZW50aXR5IGFzIG9yZGVyXCI+XHJcbiAgICA8dmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIubW9kaWZpY2F0aW9uLXN1bW1hcnknIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDx2ZHItb3JkZXItbW9kaWZpY2F0aW9uLXN1bW1hcnlcclxuICAgICAgICAgICAgICAgIFtvcmRlclNuYXBzaG90XT1cIm9yZGVyU25hcHNob3RcIlxyXG4gICAgICAgICAgICAgICAgW21vZGlmeU9yZGVySW5wdXRdPVwibW9kaWZ5T3JkZXJJbnB1dFwiXHJcbiAgICAgICAgICAgICAgICBbYWRkZWRMaW5lc109XCJhZGRlZExpbmVzXCJcclxuICAgICAgICAgICAgICAgIFtzaGlwcGluZ0FkZHJlc3NGb3JtXT1cInNoaXBwaW5nQWRkcmVzc0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgW2JpbGxpbmdBZGRyZXNzRm9ybV09XCJiaWxsaW5nQWRkcmVzc0Zvcm1cIlxyXG4gICAgICAgICAgICAgICAgW2NvdXBvbkNvZGVzQ29udHJvbF09XCJjb3Vwb25Db2Rlc0NvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgW3VwZGF0ZWRTaGlwcGluZ01ldGhvZHNdPVwidXBkYXRlZFNoaXBwaW5nTWV0aG9kc1wiXHJcbiAgICAgICAgICAgID48L3Zkci1vcmRlci1tb2RpZmljYXRpb24tc3VtbWFyeT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaGFzTW9kaWZpY2F0aW9ucygpXCIgY2xhc3M9XCJuby1tb2RpZmljYXRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnb3JkZXIubm8tbW9kaWZpY2F0aW9ucy1tYWRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidvcmRlci5ub3RlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5vdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibm90ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzTW9kaWZpY2F0aW9ucygpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlY2FsY3VsYXRlU2hpcHBpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc01vZGlmaWNhdGlvbnMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMVwiPnt7ICdvcmRlci5tb2RpZmljYXRpb24tcmVjYWxjdWxhdGUtc2hpcHBpbmcnIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG10LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGFzTW9kaWZpY2F0aW9ucygpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlld0FuZE1vZGlmeShvcmRlcilcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5wcmV2aWV3LWNoYW5nZXMnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5zZXQtY291cG9uLWNvZGVzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICA8dmRyLWNvdXBvbi1jb2RlLXNlbGVjdG9yIFtjb250cm9sXT1cImNvdXBvbkNvZGVzQ29udHJvbFwiPjwvdmRyLWNvdXBvbi1jb2RlLXNlbGVjdG9yPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIuc2hpcHBpbmctYWRkcmVzcycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkckNhcmRDb250cm9scz5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1zbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidvcmRlci5lZGl0LXNoaXBwaW5nLWFkZHJlc3MnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdGluZ1NoaXBwaW5nQWRkcmVzcyA9ICFlZGl0aW5nU2hpcHBpbmdBZGRyZXNzXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJlZGl0XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dmRyLWZvcm1hdHRlZC1hZGRyZXNzXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFlZGl0aW5nU2hpcHBpbmdBZGRyZXNzXCJcclxuICAgICAgICAgICAgICAgIFthZGRyZXNzXT1cInNoaXBwaW5nQWRkcmVzc0Zvcm0udmFsdWVcIlxyXG4gICAgICAgICAgICA+PC92ZHItZm9ybWF0dGVkLWFkZHJlc3M+XHJcbiAgICAgICAgICAgIDx2ZHItYWRkcmVzcy1mb3JtXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVkaXRpbmdTaGlwcGluZ0FkZHJlc3NcIlxyXG4gICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJzaGlwcGluZ0FkZHJlc3NGb3JtXCJcclxuICAgICAgICAgICAgICAgIFthdmFpbGFibGVDb3VudHJpZXNdPVwiYXZhaWxhYmxlQ291bnRyaWVzJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNdPVwiYWRkcmVzc0N1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgID48L3Zkci1hZGRyZXNzLWZvcm0+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidvcmRlci5iaWxsaW5nLWFkZHJlc3MnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZHJDYXJkQ29udHJvbHM+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInb3JkZXIuZWRpdC1iaWxsaW5nLWFkZHJlc3MnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdGluZ0JpbGxpbmdBZGRyZXNzID0gIWVkaXRpbmdCaWxsaW5nQWRkcmVzc1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiZWRpdFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPHZkci1mb3JtYXR0ZWQtYWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZWRpdGluZ0JpbGxpbmdBZGRyZXNzXCJcclxuICAgICAgICAgICAgICAgIFthZGRyZXNzXT1cImJpbGxpbmdBZGRyZXNzRm9ybS52YWx1ZVwiXHJcbiAgICAgICAgICAgID48L3Zkci1mb3JtYXR0ZWQtYWRkcmVzcz5cclxuICAgICAgICAgICAgPHZkci1hZGRyZXNzLWZvcm1cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWRpdGluZ0JpbGxpbmdBZGRyZXNzXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiYmlsbGluZ0FkZHJlc3NGb3JtXCJcclxuICAgICAgICAgICAgICAgIFthdmFpbGFibGVDb3VudHJpZXNdPVwiYXZhaWxhYmxlQ291bnRyaWVzJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNdPVwiYWRkcmVzc0N1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgID48L3Zkci1hZGRyZXNzLWZvcm0+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgIDwvdmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcblxyXG4gICAgPHZkci1wYWdlLWJsb2NrPlxyXG4gICAgICAgIDx2ZHItY2FyZCBbcGFkZGluZ1hdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPHZkci1kYXRhLXRhYmxlLTIgaWQ9XCJtb2RpZnktb3JkZXJcIiBjbGFzcz1cIm9yZGVyLXRhYmxlXCIgW2l0ZW1zXT1cIm9yZGVyLmxpbmVzLmNvbmNhdChhZGRlZExpbmVzKVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBIZXJlIHdlIGRlZmluZSBhbGwgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIC0tPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uIGlkPVwiaWRcIiBbaGVhZGluZ109XCInY29tbW9uLmlkJyB8IHRyYW5zbGF0ZVwiIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZS5pZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJjcmVhdGVkLWF0XCJcclxuICAgICAgICAgICAgICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLmNyZWF0ZWQtYXQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZS5jcmVhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJ1cGRhdGVkLWF0XCJcclxuICAgICAgICAgICAgICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLnVwZGF0ZWQtYXQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZS51cGRhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uaW1hZ2UnIHwgdHJhbnNsYXRlXCIgaWQ9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsaW5lLmZlYXR1cmVkQXNzZXQgYXMgYXNzZXQ7IGVsc2UgaW1hZ2VQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhc3NldCB8IGFzc2V0UHJldmlldyA6ICd0aW55J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZVBsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJpbWFnZVwiIHNpemU9XCI0OFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgIDx2ZHItZHQyLWNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwicHJvZHVjdC1uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGVhZGluZ109XCInb3JkZXIucHJvZHVjdC1uYW1lJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbmFsXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUucHJvZHVjdFZhcmlhbnQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uIGlkPVwicHJvZHVjdC1za3VcIiBbaGVhZGluZ109XCInb3JkZXIucHJvZHVjdC1za3UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1saW5lPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLnByb2R1Y3RWYXJpYW50LnNrdSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uIGlkPVwidW5pdC1wcmljZVwiIFtoZWFkaW5nXT1cIidvcmRlci51bml0LXByaWNlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbGluZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGxpbmUudW5pdFByaWNlV2l0aFRheCB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV0LXByaWNlXCIgW3RpdGxlXT1cIidvcmRlci5uZXQtcHJpY2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZS51bml0UHJpY2UgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uIGlkPVwicXVhbnRpdHlcIiBbaGVhZGluZ109XCInb3JkZXIucXVhbnRpdHknIHwgdHJhbnNsYXRlXCIgW29wdGlvbmFsXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1saW5lPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFmdC1xdHkgbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRJbml0aWFsTGluZVF1YW50aXR5KGxpbmUuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJ1cGRhdGVMaW5lUXVhbnRpdHkobGluZSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1zbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQWRkZWRMaW5lKGxpbmUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVBZGRlZEl0ZW0obGluZS5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ0cmFzaFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWxpbmUtcmVmdW5kcyBbbGluZV09XCJsaW5lXCIgW3BheW1lbnRzXT1cIm9yZGVyLnBheW1lbnRzXCI+PC92ZHItbGluZS1yZWZ1bmRzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWxpbmUtZnVsZmlsbG1lbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5lXT1cImxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE9yZGVyRnVsZmlsbG1lbnRzXT1cIm9yZGVyLmZ1bGZpbGxtZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JkZXJTdGF0ZV09XCJvcmRlci5zdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1saW5lLWZ1bGZpbGxtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kdDItY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kdDItY29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGN1c3RvbUZpZWxkIG9mIG9yZGVyTGluZUN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImN1c3RvbUZpZWxkLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtoZWFkaW5nXT1cImN1c3RvbUZpZWxkIHwgY3VzdG9tRmllbGRMYWJlbCA6ICh1aUxhbmd1YWdlJCB8IGFzeW5jKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWxpbmU9XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1jdXN0b20tZmllbGQtY29udHJvbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW50aXR5TmFtZV09XCInT3JkZXJMaW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRdPVwiY3VzdG9tRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc0Zvcm1Hcm91cF09XCJvcmRlckxpbmVDdXN0b21GaWVsZHNGb3JtQXJyYXkuYXQoaW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZHQyLWNvbHVtbj5cclxuICAgICAgICAgICAgPC92ZHItZGF0YS10YWJsZS0yPlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIuYWRkLWl0ZW0tdG8tb3JkZXInIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDx2ZHItcHJvZHVjdC12YXJpYW50LXNlbGVjdG9yIGNsYXNzPVwibWItNFwiIChwcm9kdWN0U2VsZWN0ZWQpPVwiYWRkSXRlbVNlbGVjdGVkVmFyaWFudCA9ICRldmVudFwiPlxyXG4gICAgICAgICAgICA8L3Zkci1wcm9kdWN0LXZhcmlhbnQtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhZGRJdGVtU2VsZWN0ZWRWYXJpYW50XCIgY2xhc3M9XCJmbGV4IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhZGRJdGVtU2VsZWN0ZWRWYXJpYW50LnByb2R1Y3RBc3NldCBhcyBhc3NldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFzc2V0IHwgYXNzZXRQcmV2aWV3IDogJ3RpbnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItNCBhZGQtaXRlbS10aHVtYlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwibXItNFwiPnt7IGFkZEl0ZW1TZWxlY3RlZFZhcmlhbnQucHJvZHVjdFZhcmlhbnROYW1lIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgYWRkSXRlbVNlbGVjdGVkVmFyaWFudC5za3UgfX08L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWxlY3RlZEl0ZW1QcmljZShhZGRJdGVtU2VsZWN0ZWRWYXJpYW50KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsb2NhbGVDdXJyZW5jeSA6IG9yZGVyLmN1cnJlbmN5Q29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiICpuZ0lmPVwiYWRkSXRlbVNlbGVjdGVkVmFyaWFudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBvcmRlckxpbmVDdXN0b21GaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY3VzdG9tLWZpZWxkLWNvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiIWFkZEl0ZW1TZWxlY3RlZFZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZF09XCJjdXN0b21GaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc0Zvcm1Hcm91cF09XCJhZGRJdGVtQ3VzdG9tRmllbGRzRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZT1cIk9yZGVyTGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItY3VzdG9tLWZpZWxkLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zcGFjZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFkZEl0ZW1TZWxlY3RlZFZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhZGRJdGVtU2VsZWN0ZWRWYXJpYW50IHx8IGFkZEl0ZW1DdXN0b21GaWVsZHNGb3JtLmludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkSXRlbVRvT3JkZXIoYWRkSXRlbVNlbGVjdGVkVmFyaWFudClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ29yZGVyLmFkZC1pdGVtLXRvLW9yZGVyJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIuc2hpcHBpbmcnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNoaXBwaW5nTGluZSBvZiBvcmRlci5zaGlwcGluZ0xpbmVzXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFNoaXBwaW5nTGluZURldGFpbHMoc2hpcHBpbmdMaW5lKSBhcyBkZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBkZXRhaWxzLm5hbWUgfX06PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGV0YWlscy5wcmljZSB8IGxvY2FsZUN1cnJlbmN5IDogb3JkZXIuY3VycmVuY3lDb2RlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1zbWFsbFwiIChjbGljayk9XCJzZXRTaGlwcGluZ01ldGhvZChzaGlwcGluZ0xpbmUuaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdvcmRlci5zZXQtc2hpcHBpbmctbWV0aG9kJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInb3JkZXIuYWRkLXN1cmNoYXJnZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzdXJjaGFyZ2VGb3JtXCIgKHN1Ym1pdCk9XCJhZGRTdXJjaGFyZ2Uoc3VyY2hhcmdlRm9ybS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjb21tb24uZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCIgZm9yPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PGlucHV0IGlkPVwiZGVzY3JpcHRpb25cIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAvPjwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInb3JkZXIucHJvZHVjdC1za3UnIHwgdHJhbnNsYXRlXCIgZm9yPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjxpbnB1dCBpZD1cInNrdVwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAvPjwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY29tbW9uLnByaWNlJyB8IHRyYW5zbGF0ZVwiIGZvcj1cInByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY3VycmVuY3ktaW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeUNvZGVdPVwib3JkZXIuY3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItY3VycmVuY3ktaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhdGFsb2cucHJpY2UtaW5jbHVkZXMtdGF4LWF0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlIDogeyByYXRlOiBzdXJjaGFyZ2VGb3JtLmdldCgndGF4UmF0ZScpPy52YWx1ZSA/PyAwIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicHJpY2VJbmNsdWRlc1RheFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicHJpY2VJbmNsdWRlc1RheFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNlSW5jbHVkZXNUYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+PC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidvcmRlci50YXgtcmF0ZScgfCB0cmFuc2xhdGVcIiBmb3I9XCJ0YXhSYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItYWZmaXhlZC1pbnB1dCBzdWZmaXg9XCIlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aW5wdXQgaWQ9XCJ0YXhSYXRlXCIgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiBtYXg9XCIxMDBcIiBmb3JtQ29udHJvbE5hbWU9XCJ0YXhSYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz48L3Zkci1hZmZpeGVkLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInb3JkZXIudGF4LWRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiIGZvcj1cInRheERlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjxpbnB1dCBpZD1cInRheERlc2NyaXB0aW9uXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0YXhEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz48L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cmNoYXJnZUZvcm0uaW52YWxpZCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXJjaGFyZ2VGb3JtLnByaXN0aW5lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cmNoYXJnZUZvcm0uZ2V0KCdwcmljZScpPy52YWx1ZSA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhc3VyY2hhcmdlRm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnb3JkZXIuYWRkLXN1cmNoYXJnZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC92ZHItY2FyZD5cclxuICAgIDwvdmRyLXBhZ2UtYmxvY2s+XHJcbjwvdmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuIl19
@@ -7603,7 +7603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
7603
7603
  }], ctorParameters: () => [{ type: AlertsService }] });
7604
7604
 
7605
7605
  // Auto-generated by the set-version.js script.
7606
- const ADMIN_UI_VERSION = '2.2.0';
7606
+ const ADMIN_UI_VERSION = '2.2.1';
7607
7607
 
7608
7608
  /* eslint-disable @angular-eslint/directive-selector */
7609
7609
  class FormFieldControlDirective {
@@ -9181,14 +9181,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
9181
9181
  }] } });
9182
9182
  function highlightTsCode(tsCode) {
9183
9183
  tsCode = tsCode.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
9184
- return tsCode.replace(/\b(abstract|any|as|boolean|break|case|catch|class|const|continue|default|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|never|new|null|number|object|of|private|protected|public|readonly|require|return|set|static|string|super|switch|symbol|this|throw|true|try|type|typeof|undefined|var|void|while|with|yield)\b|\/\/.*|\/\*[\s\S]*?\*\/|"(?:\\[\s\S]|[^\\"])*"|'[^']*'/g, (match, ...args) => {
9184
+ return tsCode.replace(
9185
+ // eslint-disable-next-line max-len
9186
+ /\b(abstract|any|as|boolean|break|case|catch|class|const|continue|default|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|never|new|null|number|object|of|private|protected|public|readonly|require|return|set|static|string|super|switch|symbol|this|throw|true|try|type|typeof|undefined|var|void|while|with|yield)\b|\/\/.*|\/\*[\s\S]*?\*\/|"(?:\\[\s\S]|[^\\"])*"|'[^']*'/g, (match, ...args) => {
9185
9187
  if (/^"/.test(match) || /^'/.test(match)) {
9186
9188
  return '<span class="ts-string">' + match + '</span>';
9187
9189
  }
9188
9190
  else if (/\/\/.*|\/\*[\s\S]*?\*\//.test(match)) {
9189
9191
  return '<span class="ts-comment">' + match + '</span>';
9190
9192
  }
9191
- else if (/\b(abstract|any|as|boolean|break|case|catch|class|const|continue|default|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|never|new|null|number|object|of|private|protected|public|readonly|require|return|set|static|string|super|switch|symbol|this|throw|true|try|type|typeof|undefined|var|void|while|with|yield)\b/.test(match)) {
9193
+ else if (
9194
+ // eslint-disable-next-line max-len
9195
+ /\b(abstract|any|as|boolean|break|case|catch|class|const|continue|default|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|never|new|null|number|object|of|private|protected|public|readonly|require|return|set|static|string|super|switch|symbol|this|throw|true|try|type|typeof|undefined|var|void|while|with|yield)\b/.test(match)) {
9192
9196
  return '<span class="ts-keyword">' + match + '</span>';
9193
9197
  }
9194
9198
  else {
@@ -9224,7 +9228,9 @@ export default [
9224
9228
  addNavMenuSection({
9225
9229
  id: 'my-menu-item',
9226
9230
  label: 'My Menu Item',
9227
- routerLink: ['/extensions/my-plugin'],
9231
+ items: [{
9232
+ // ...
9233
+ }],
9228
9234
  },
9229
9235
  '${locationId}',
9230
9236
  ),
@@ -12228,6 +12234,9 @@ class FacetValueSelectorComponent {
12228
12234
  if (this.readonly) {
12229
12235
  return;
12230
12236
  }
12237
+ for (const sel of selected) {
12238
+ console.log(`selected: ${sel.facet.name}:${sel.code}`);
12239
+ }
12231
12240
  this.selectedValuesChange.emit(selected);
12232
12241
  if (this.onChangeFn) {
12233
12242
  const transformedValue = this.transformControlValueAccessorValue(selected);
@@ -12279,7 +12288,7 @@ class FacetValueSelectorComponent {
12279
12288
  useExisting: FacetValueSelectorComponent,
12280
12289
  multi: true,
12281
12290
  },
12282
- ], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true }], ngImport: i0, template: "<ng-select\r\n [items]=\"searchResults$ | async\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [loading]=\"searchLoading\"\r\n [typeahead]=\"searchInput$\"\r\n multiple=\"true\"\r\n appendTo=\"body\"\r\n bindLabel=\"name\"\r\n [disabled]=\"disabled || readonly\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange($event)\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <vdr-facet-value-chip\r\n *ngIf=\"item; else facetNotFound\"\r\n [facetValue]=\"item\"\r\n [removable]=\"!readonly\"\r\n (remove)=\"clear(item)\"\r\n ></vdr-facet-value-chip>\r\n <ng-template #facetNotFound>\r\n <vdr-chip colorType=\"error\" icon=\"times\" (iconClick)=\"clear(item)\">{{\r\n 'catalog.facet-value-not-available' | translate: { id: item.id }\r\n }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-facet-value-chip [facetValue]=\"item\" [removable]=\"false\"></vdr-facet-value-chip>\r\n </ng-template>\r\n</ng-select>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "component", type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: FacetValueChipComponent, selector: "vdr-facet-value-chip", inputs: ["facetValue", "removable", "displayFacetName"], outputs: ["remove"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12291
+ ], viewQueries: [{ propertyName: "ngSelect", first: true, predicate: NgSelectComponent, descendants: true }], ngImport: i0, template: "<ng-select\r\n [items]=\"searchResults$ | async\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [loading]=\"searchLoading\"\r\n [typeahead]=\"searchInput$\"\r\n multiple=\"true\"\r\n appendTo=\"body\"\r\n bindLabel=\"id\"\r\n [disabled]=\"disabled || readonly\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange($event)\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <vdr-facet-value-chip\r\n *ngIf=\"item; else facetNotFound\"\r\n [facetValue]=\"item\"\r\n [removable]=\"!readonly\"\r\n (remove)=\"clear(item)\"\r\n ></vdr-facet-value-chip>\r\n <ng-template #facetNotFound>\r\n <vdr-chip colorType=\"error\" icon=\"times\" (iconClick)=\"clear(item)\">{{\r\n 'catalog.facet-value-not-available' | translate: { id: item.id }\r\n }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-facet-value-chip [facetValue]=\"item\" [removable]=\"false\"></vdr-facet-value-chip>\r\n </ng-template>\r\n</ng-select>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "component", type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { kind: "component", type: FacetValueChipComponent, selector: "vdr-facet-value-chip", inputs: ["facetValue", "removable", "displayFacetName"], outputs: ["remove"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12283
12292
  }
12284
12293
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FacetValueSelectorComponent, decorators: [{
12285
12294
  type: Component,
@@ -12289,7 +12298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
12289
12298
  useExisting: FacetValueSelectorComponent,
12290
12299
  multi: true,
12291
12300
  },
12292
- ], template: "<ng-select\r\n [items]=\"searchResults$ | async\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [loading]=\"searchLoading\"\r\n [typeahead]=\"searchInput$\"\r\n multiple=\"true\"\r\n appendTo=\"body\"\r\n bindLabel=\"name\"\r\n [disabled]=\"disabled || readonly\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange($event)\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <vdr-facet-value-chip\r\n *ngIf=\"item; else facetNotFound\"\r\n [facetValue]=\"item\"\r\n [removable]=\"!readonly\"\r\n (remove)=\"clear(item)\"\r\n ></vdr-facet-value-chip>\r\n <ng-template #facetNotFound>\r\n <vdr-chip colorType=\"error\" icon=\"times\" (iconClick)=\"clear(item)\">{{\r\n 'catalog.facet-value-not-available' | translate: { id: item.id }\r\n }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-facet-value-chip [facetValue]=\"item\" [removable]=\"false\"></vdr-facet-value-chip>\r\n </ng-template>\r\n</ng-select>\r\n" }]
12301
+ ], template: "<ng-select\r\n [items]=\"searchResults$ | async\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [loading]=\"searchLoading\"\r\n [typeahead]=\"searchInput$\"\r\n multiple=\"true\"\r\n appendTo=\"body\"\r\n bindLabel=\"id\"\r\n [disabled]=\"disabled || readonly\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange($event)\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <vdr-facet-value-chip\r\n *ngIf=\"item; else facetNotFound\"\r\n [facetValue]=\"item\"\r\n [removable]=\"!readonly\"\r\n (remove)=\"clear(item)\"\r\n ></vdr-facet-value-chip>\r\n <ng-template #facetNotFound>\r\n <vdr-chip colorType=\"error\" icon=\"times\" (iconClick)=\"clear(item)\">{{\r\n 'catalog.facet-value-not-available' | translate: { id: item.id }\r\n }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-facet-value-chip [facetValue]=\"item\" [removable]=\"false\"></vdr-facet-value-chip>\r\n </ng-template>\r\n</ng-select>\r\n" }]
12293
12302
  }], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }], propDecorators: { selectedValuesChange: [{
12294
12303
  type: Output
12295
12304
  }], readonly: [{
@@ -17355,7 +17364,8 @@ class DataTableFiltersComponent {
17355
17364
  if (event.target instanceof HTMLElement) {
17356
17365
  if (event.target.tagName === 'INPUT' ||
17357
17366
  event.target.tagName === 'TEXTAREA' ||
17358
- event.target.classList.contains('vdr-prosemirror')) {
17367
+ event.target.classList.contains('vdr-prosemirror') ||
17368
+ event.target.classList.contains('code-editor')) {
17359
17369
  return;
17360
17370
  }
17361
17371
  }