@deenruv/admin-ui 1.0.17-dev.18 → 1.0.17-dev.23

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 (64) hide show
  1. package/catalog/components/collection-data-table/collection-data-table.component.d.ts +6 -6
  2. package/catalog/components/product-variants-table/product-variants-table.component.d.ts +3 -3
  3. package/catalog/providers/product-detail/product-detail.service.d.ts +12 -12
  4. package/core/common/generated-schema-types.d.ts +6086 -0
  5. package/core/common/generated-types.d.ts +2754 -8599
  6. package/core/common/utilities/tokenized-search-filter.d.ts +5 -0
  7. package/core/common/version.d.ts +1 -1
  8. package/core/data/client-state/client-defaults.d.ts +9 -9
  9. package/core/data/providers/administrator-data.service.d.ts +3 -3
  10. package/core/data/providers/collection-data.service.d.ts +10 -10
  11. package/core/data/providers/customer-data.service.d.ts +14 -14
  12. package/core/data/providers/facet-data.service.d.ts +3 -3
  13. package/core/data/providers/order-data.service.d.ts +13 -13
  14. package/core/data/providers/product-data.service.d.ts +46 -46
  15. package/core/data/providers/settings-data.service.d.ts +30 -30
  16. package/core/data/providers/shipping-method-data.service.d.ts +4 -4
  17. package/core/data/server-config.d.ts +1 -1
  18. package/core/public_api.d.ts +2 -0
  19. package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +6 -6
  20. package/core/shared/components/product-variant-selector/product-variant-selector.component.d.ts +4 -4
  21. package/customer/components/customer-history/customer-history.component.d.ts +4 -4
  22. package/esm2022/catalog/components/product-list/product-list.component.mjs +5 -14
  23. package/esm2022/catalog/components/product-variant-list/product-variant-list.component.mjs +5 -15
  24. package/esm2022/core/common/generated-schema-types.mjs +1052 -0
  25. package/esm2022/core/common/generated-types.mjs +2 -1024
  26. package/esm2022/core/common/introspection-result.mjs +2 -1
  27. package/esm2022/core/common/utilities/tokenized-search-filter.mjs +22 -0
  28. package/esm2022/core/common/version.mjs +2 -2
  29. package/esm2022/core/public_api.mjs +3 -1
  30. package/esm2022/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +10 -3
  31. package/esm2022/customer/components/customer-group-list/customer-group-list.component.mjs +9 -15
  32. package/esm2022/customer/components/customer-list/customer-list.component.mjs +3 -19
  33. package/esm2022/marketing/components/promotion-list/promotion-list.component.mjs +3 -10
  34. package/esm2022/order/components/order-list/order-list.component.mjs +11 -18
  35. package/esm2022/settings/components/administrator-list/administrator-list.component.mjs +3 -23
  36. package/esm2022/settings/components/channel-list/channel-list.component.mjs +3 -8
  37. package/esm2022/settings/components/country-list/country-list.component.mjs +3 -8
  38. package/esm2022/settings/components/payment-method-list/payment-method-list.component.mjs +3 -8
  39. package/esm2022/settings/components/role-list/role-list.component.mjs +3 -8
  40. package/esm2022/settings/components/seller-list/seller-list.component.mjs +3 -8
  41. package/esm2022/settings/components/shipping-method-list/shipping-method-list.component.mjs +3 -8
  42. package/esm2022/settings/components/stock-location-list/stock-location-list.component.mjs +3 -8
  43. package/esm2022/settings/components/tax-category-list/tax-category-list.component.mjs +3 -8
  44. package/esm2022/settings/components/tax-rate-list/tax-rate-list.component.mjs +3 -8
  45. package/esm2022/settings/components/zone-list/zone-list.component.mjs +8 -13
  46. package/esm2022/settings/components/zone-member-list/zone-member-list.component.mjs +3 -10
  47. package/fesm2022/deenruv-admin-ui-catalog.mjs +7 -26
  48. package/fesm2022/deenruv-admin-ui-catalog.mjs.map +1 -1
  49. package/fesm2022/deenruv-admin-ui-core.mjs +54 -2
  50. package/fesm2022/deenruv-admin-ui-core.mjs.map +1 -1
  51. package/fesm2022/deenruv-admin-ui-customer.mjs +18 -34
  52. package/fesm2022/deenruv-admin-ui-customer.mjs.map +1 -1
  53. package/fesm2022/deenruv-admin-ui-marketing.mjs +2 -9
  54. package/fesm2022/deenruv-admin-ui-marketing.mjs.map +1 -1
  55. package/fesm2022/deenruv-admin-ui-order.mjs +10 -17
  56. package/fesm2022/deenruv-admin-ui-order.mjs.map +1 -1
  57. package/fesm2022/deenruv-admin-ui-settings.mjs +18 -95
  58. package/fesm2022/deenruv-admin-ui-settings.mjs.map +1 -1
  59. package/order/components/modification-detail/modification-detail.component.d.ts +1 -1
  60. package/order/components/order-history/order-history.component.d.ts +10 -10
  61. package/order/components/order-payment-card/order-payment-card.component.d.ts +11 -11
  62. package/package.json +17 -17
  63. package/settings/components/administrator-list/administrator-list.component.d.ts +2 -12
  64. package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +1 -1
@@ -80,18 +80,8 @@ export class ProductListComponent extends TypedBaseListComponent {
80
80
  document: ProductListQueryDocument,
81
81
  getItems: data => data.products,
82
82
  setVariables: (skip, take) => {
83
- const searchTerm = this.searchTermControl.value;
84
- let filterInput = this.filters.createFilterInput();
85
- if (searchTerm) {
86
- filterInput = {
87
- name: {
88
- contains: searchTerm,
89
- },
90
- sku: {
91
- contains: searchTerm,
92
- },
93
- };
94
- }
83
+ const searchTerm = this.searchTermControl.value?.trim().replace(/\s+/g, ' ') || undefined;
84
+ const filterInput = this.filters.createFilterInput();
95
85
  return {
96
86
  options: {
97
87
  skip,
@@ -99,7 +89,8 @@ export class ProductListComponent extends TypedBaseListComponent {
99
89
  filter: {
100
90
  ...(filterInput ?? {}),
101
91
  },
102
- filterOperator: searchTerm ? LogicalOperator.OR : LogicalOperator.AND,
92
+ filterOperator: LogicalOperator.AND,
93
+ searchTerm,
103
94
  sort: this.sorts.createSortInput(),
104
95
  },
105
96
  };
@@ -156,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
156
147
  type: Component,
157
148
  args: [{ selector: 'vdr-products-list', template: "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"contentLanguage$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"product-list\"></vdr-action-bar-items>\n <a\n class=\"button primary mr-1\"\n [routerLink]=\"['./create']\"\n *vdrIfPermissions=\"['CreateCatalog', 'CreateProduct']\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-new-product' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu [alwaysShow]=\"true\" locationId=\"product-list\">\n <button type=\"button\" vdrDropdownItem (click)=\"rebuildSearchIndex()\">\n <clr-icon shape=\"refresh\" class=\"\"></clr-icon>\n {{ 'catalog.rebuild-search-index' | translate }}\n </button>\n </vdr-action-bar-dropdown-menu>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-data-table-2\n class=\"mt-2\"\n id=\"product-list\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"product-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'settings.search-by-product-name-or-sku' | translate\"\n />\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\n <ng-template let-product=\"item\">\n {{ product.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-product=\"item\">\n {{ product.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-product=\"item\">\n {{ product.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-product=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"product.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\n <ng-template let-product=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', product.id]\"\n ><span>{{ product.name }}</span\n ><clr-icon shape=\"arrow right\"\n /></a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.slug' | translate\" id=\"slug\" [sort]=\"sorts.get('slug')\">\n <ng-template let-product=\"item\">\n {{ product.slug }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.enabled' | translate\" id=\"enabled\">\n <ng-template let-product=\"item\">\n <vdr-chip *ngIf=\"product.enabled\" colorType=\"success\">{{\n 'common.enabled' | translate\n }}</vdr-chip>\n <vdr-chip *ngIf=\"!product.enabled\" colorType=\"warning\">{{\n 'common.disabled' | translate\n }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.number-of-variants' | translate\" id=\"number-of-variants\">\n <ng-template let-product=\"item\">\n {{ 'catalog.variant-count' | translate : { count: product.variantList?.totalItems } }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n [sorts]=\"sorts\"\n />\n</vdr-data-table-2>\n", styles: [".image-col{width:70px}.image-placeholder{width:50px;height:50px;margin-top:calc(var(--space-unit) * -1);margin-bottom:calc(var(--space-unit) * -1);background-color:var(--color-component-bg-200)}.image-placeholder img{border-radius:var(--border-radius-img)}.image-placeholder .placeholder{text-align:center;color:var(--color-grey-300)}.search-form{display:flex;align-items:center;width:100%}vdr-product-search-input{min-width:300px}@media screen and (max-width: 768px){vdr-product-search-input{min-width:100px}}.search-settings-menu{margin:0 12px}td.disabled{background-color:var(--color-component-bg-200)}.search-index-button{position:relative}.search-index-button vdr-status-badge{right:0;top:0}.run-updates-button{position:relative}.run-updates-button vdr-status-badge{left:10px;top:10px}.edit-button{margin-inline-end:24px}.sku{color:var(--color-text-300)}\n"] }]
158
149
  }], ctorParameters: () => [{ type: i1.DataService }, { type: i1.ModalService }, { type: i1.NotificationService }, { type: i1.JobQueueService }] });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LWxpc3QvcHJvZHVjdC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LWxpc3QvcHJvZHVjdC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBRUgsNEJBQTRCLEVBRTVCLFFBQVEsRUFDUixlQUFlLEVBR2Ysd0JBQXdCLEVBQ3hCLHNCQUFzQixHQUN6QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFPbEQsTUFBTSxPQUFPLG9CQUNULFNBQVEsc0JBQW1FO0lBb0UzRSxZQUNjLFdBQXdCLEVBQzFCLFlBQTBCLEVBQzFCLG1CQUF3QyxFQUN4QyxlQUFnQztRQUV4QyxLQUFLLEVBQUUsQ0FBQztRQUxFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBckU1Qyw4QkFBeUIsR0FBRyxDQUFDLENBQUM7UUFDckIsaUJBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsWUFBTyxHQUFHLElBQUksQ0FB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QUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQ2hELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7YUFDbkU7U0FDSixDQUFDO2FBQ0QsSUFBSSxDQUNELFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdGLDhFQUE4RTtRQUM5RSxjQUFjO1FBQ2QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUNiO2FBQ0EsU0FBUyxDQUNOLEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sRUFBRSxTQUFTO2FBQ3BCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO2dCQUM1RCxNQUFNLEVBQUUsU0FBUzthQUNwQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQ0osQ0FBQztJQUNWLENBQUM7K0dBMUpRLG9CQUFvQjttR0FBcEIsb0JBQW9CLGdGQ3JCakMsbWdLQXdIQTs7NEZEbkdhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xuaW1wb3J0IHtcbiAgICBEYXRhU2VydmljZSxcbiAgICBGYWNldFZhbHVlRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIEpvYlF1ZXVlU2VydmljZSxcbiAgICBKb2JTdGF0ZSxcbiAgICBMb2dpY2FsT3BlcmF0b3IsXG4gICAgTW9kYWxTZXJ2aWNlLFxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgUHJvZHVjdExpc3RRdWVyeURvY3VtZW50LFxuICAgIFR5cGVkQmFzZUxpc3RDb21wb25lbnQsXG59IGZyb20gJ0BkZWVucnV2L2FkbWluLXVpL2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndmRyLXByb2R1Y3RzLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0TGlzdENvbXBvbmVudFxuICAgIGV4dGVuZHMgVHlwZWRCYXNlTGlzdENvbXBvbmVudDx0eXBlb2YgUHJvZHVjdExpc3RRdWVyeURvY3VtZW50LCAncHJvZHVjdHMnPlxuICAgIGltcGxlbWVudHMgT25Jbml0XG57XG4gICAgcGVuZGluZ1NlYXJjaEluZGV4VXBkYXRlcyA9IDA7XG4gICAgcmVhZG9ubHkgY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnUHJvZHVjdCcpO1xuICAgIHJlYWRvbmx5IGZpbHRlcnMgPSB0aGlzLmNyZWF0ZUZpbHRlckNvbGxlY3Rpb24oKVxuICAgICAgICAuYWRkSWRGaWx0ZXIoKVxuICAgICAgICAuYWRkRGF0ZUZpbHRlcnMoKVxuICAgICAgICAuYWRkRmlsdGVycyhbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2VuYWJsZWQnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ2Jvb2xlYW4nIH0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi5lbmFibGVkJyksXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdlbmFibGVkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3NsdWcnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ3RleHQnIH0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi5zbHVnJyksXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdzbHVnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC5hZGRGaWx0ZXIoe1xuICAgICAgICAgICAgbmFtZTogJ2ZhY2V0VmFsdWVzJyxcbiAgICAgICAgICAgIHR5cGU6IHtcbiAgICAgICAgICAgICAgICBraW5kOiAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IEZhY2V0VmFsdWVGb3JtSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgc2VyaWFsaXplVmFsdWU6IHZhbHVlID0+IHZhbHVlLm1hcCh2ID0+IHYuaWQpLmpvaW4oJywnKSxcbiAgICAgICAgICAgICAgICBkZXNlcmlhbGl6ZVZhbHVlOiB2YWx1ZSA9PiB2YWx1ZS5zcGxpdCgnLCcpLm1hcChpZCA9PiAoeyBpZCB9KSksXG4gICAgICAgICAgICAgICAgZ2V0TGFiZWw6IHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVswXS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHYgPT4gdi5uYW1lKS5qb2luKCcsICcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5mYWNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0RmFjZXRWYWx1ZXMoeyBmaWx0ZXI6IHsgaWQ6IHsgaW46IHZhbHVlLm1hcCh2ID0+IHYuaWQpIH0gfSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKCh7IGZhY2V0VmFsdWVzIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNldFZhbHVlcy5pdGVtcy5tYXAoZnYgPT4gZnYubmFtZSkuam9pbignLCAnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBfKCdjYXRhbG9nLmZhY2V0LXZhbHVlcycpLFxuICAgICAgICAgICAgdG9GaWx0ZXJJbnB1dDogKHZhbHVlOiBhbnlbXSkgPT4gKHtcbiAgICAgICAgICAgICAgICBmYWNldFZhbHVlSWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaW46IHZhbHVlLm1hcCh2ID0+IHYuaWQpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSlcbiAgICAgICAgLmFkZEN1c3RvbUZpZWxkRmlsdGVycyh0aGlzLmN1c3RvbUZpZWxkcylcbiAgICAgICAgLmNvbm5lY3RUb1JvdXRlKHRoaXMucm91dGUpO1xuXG4gICAgcmVhZG9ubHkgc29ydHMgPSB0aGlzLmNyZWF0ZVNvcnRDb2xsZWN0aW9uKClcbiAgICAgICAgLmRlZmF1bHRTb3J0KCdjcmVhdGVkQXQnLCAnREVTQycpXG4gICAgICAgIC5hZGRTb3J0cyhbXG4gICAgICAgICAgICB7IG5hbWU6ICdpZCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2NyZWF0ZWRBdCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3VwZGF0ZWRBdCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ25hbWUnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdzbHVnJyB9LFxuICAgICAgICBdKVxuICAgICAgICAuYWRkQ3VzdG9tRmllbGRTb3J0cyh0aGlzLmN1c3RvbUZpZWxkcylcbiAgICAgICAgLmNvbm5lY3RUb1JvdXRlKHRoaXMucm91dGUpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBqb2JRdWV1ZVNlcnZpY2U6IEpvYlF1ZXVlU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmUoe1xuICAgICAgICAgICAgZG9jdW1lbnQ6IFByb2R1Y3RMaXN0UXVlcnlEb2N1bWVudCxcbiAgICAgICAgICAgIGdldEl0ZW1zOiBkYXRhID0+IGRhdGEucHJvZHVjdHMsXG4gICAgICAgICAgICBzZXRWYXJpYWJsZXM6IChza2lwLCB0YWtlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoVGVybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcklucHV0ID0gdGhpcy5maWx0ZXJzLmNyZWF0ZUZpbHRlcklucHV0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlYXJjaFRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5wdXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHNlYXJjaFRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2t1OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHNlYXJjaFRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBza2lwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihmaWx0ZXJJbnB1dCA/PyB7fSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyT3BlcmF0b3I6IHNlYXJjaFRlcm0gPyBMb2dpY2FsT3BlcmF0b3IuT1IgOiBMb2dpY2FsT3BlcmF0b3IuQU5ELFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogdGhpcy5zb3J0cy5jcmVhdGVTb3J0SW5wdXQoKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0T25DaGFuZ2VzOiBbdGhpcy5zb3J0cy52YWx1ZUNoYW5nZXMsIHRoaXMuZmlsdGVycy52YWx1ZUNoYW5nZXNdLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWJ1aWxkU2VhcmNoSW5kZXgoKSB7XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC5yZWluZGV4KCkuc3Vic2NyaWJlKCh7IHJlaW5kZXggfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8oXygnY2F0YWxvZy5yZWluZGV4aW5nJykpO1xuICAgICAgICAgICAgdGhpcy5qb2JRdWV1ZVNlcnZpY2UuYWRkSm9iKHJlaW5kZXguaWQsIGpvYiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGpvYi5zdGF0ZSA9PT0gSm9iU3RhdGUuQ09NUExFVEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoam9iLmR1cmF0aW9uIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjYXRhbG9nLnJlaW5kZXgtc3VjY2Vzc2Z1bCcpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogam9iLnJlc3VsdC5pbmRleGVkSXRlbUNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjYXRhbG9nLnJlaW5kZXgtZXJyb3InKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlbGV0ZVByb2R1Y3QocHJvZHVjdElkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5kaWFsb2coe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjYXRhbG9nLmNvbmZpcm0tZGVsZXRlLXByb2R1Y3QnKSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZGFuZ2VyJywgbGFiZWw6IF8oJ2NvbW1vbi5kZWxldGUnKSwgcmV0dXJuVmFsdWU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXNwb25zZSA9PiAocmVzcG9uc2UgPyB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3QuZGVsZXRlUHJvZHVjdChwcm9kdWN0SWQpIDogRU1QVFkpKSxcbiAgICAgICAgICAgICAgICAvLyBTaG9ydCBkZWxheSB0byBhbGxvdyB0aGUgcHJvZHVjdCB0byBiZSByZW1vdmVkIGZyb20gdGhlIHNlYXJjaCBpbmRleCBiZWZvcmVcbiAgICAgICAgICAgICAgICAvLyByZWZyZXNoaW5nLlxuICAgICAgICAgICAgICAgIGRlbGF5KDUwMCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1kZWxldGUtc3VjY2VzcycpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdQcm9kdWN0JyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ2NvbW1vbi5ub3RpZnktZGVsZXRlLWVycm9yJyksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1Byb2R1Y3QnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8dmRyLXBhZ2UtYmxvY2s+XG4gICAgPHZkci1hY3Rpb24tYmFyPlxuICAgICAgICA8dmRyLWFiLWxlZnQ+XG4gICAgICAgICAgICA8dmRyLWxhbmd1YWdlLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgW2F2YWlsYWJsZUxhbmd1YWdlQ29kZXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbY3VycmVudExhbmd1YWdlQ29kZV09XCJjb250ZW50TGFuZ3VhZ2UkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIChsYW5ndWFnZUNvZGVDaGFuZ2UpPVwic2V0TGFuZ3VhZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC92ZHItbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gICAgICAgIDwvdmRyLWFiLWxlZnQ+XG4gICAgICAgIDx2ZHItYWItcmlnaHQ+XG4gICAgICAgICAgICA8dmRyLWFjdGlvbi1iYXItaXRlbXMgbG9jYXRpb25JZD1cInByb2R1Y3QtbGlzdFwiPjwvdmRyLWFjdGlvbi1iYXItaXRlbXM+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIHByaW1hcnkgbXItMVwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycuL2NyZWF0ZSddXCJcbiAgICAgICAgICAgICAgICAqdmRySWZQZXJtaXNzaW9ucz1cIlsnQ3JlYXRlQ2F0YWxvZycsICdDcmVhdGVQcm9kdWN0J11cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxuICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLmNyZWF0ZS1uZXctcHJvZHVjdCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1kcm9wZG93bi1tZW51IFthbHdheXNTaG93XT1cInRydWVcIiBsb2NhdGlvbklkPVwicHJvZHVjdC1saXN0XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdmRyRHJvcGRvd25JdGVtIChjbGljayk9XCJyZWJ1aWxkU2VhcmNoSW5kZXgoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJyZWZyZXNoXCIgY2xhc3M9XCJcIj48L2Nsci1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyAnY2F0YWxvZy5yZWJ1aWxkLXNlYXJjaC1pbmRleCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdmRyLWFjdGlvbi1iYXItZHJvcGRvd24tbWVudT5cbiAgICAgICAgPC92ZHItYWItcmlnaHQ+XG4gICAgPC92ZHItYWN0aW9uLWJhcj5cbjwvdmRyLXBhZ2UtYmxvY2s+XG48dmRyLWRhdGEtdGFibGUtMlxuICAgIGNsYXNzPVwibXQtMlwiXG4gICAgaWQ9XCJwcm9kdWN0LWxpc3RcIlxuICAgIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiXG4gICAgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2UkIHwgYXN5bmNcIlxuICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXMkIHwgYXN5bmNcIlxuICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZSQgfCBhc3luY1wiXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgKHBhZ2VDaGFuZ2UpPVwic2V0UGFnZU51bWJlcigkZXZlbnQpXCJcbiAgICAoaXRlbXNQZXJQYWdlQ2hhbmdlKT1cInNldEl0ZW1zUGVyUGFnZSgkZXZlbnQpXCJcbj5cbiAgICA8dmRyLWJ1bGstYWN0aW9uLW1lbnVcbiAgICAgICAgbG9jYXRpb25JZD1cInByb2R1Y3QtbGlzdFwiXG4gICAgICAgIFtob3N0Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICBbc2VsZWN0aW9uTWFuYWdlcl09XCJzZWxlY3Rpb25NYW5hZ2VyXCJcbiAgICA+PC92ZHItYnVsay1hY3Rpb24tbWVudT5cbiAgICA8dmRyLWR0Mi1zZWFyY2hcbiAgICAgICAgW3NlYXJjaFRlcm1Db250cm9sXT1cInNlYXJjaFRlcm1Db250cm9sXCJcbiAgICAgICAgW3NlYXJjaFRlcm1QbGFjZWhvbGRlcl09XCInc2V0dGluZ3Muc2VhcmNoLWJ5LXByb2R1Y3QtbmFtZS1vci1za3UnIHwgdHJhbnNsYXRlXCJcbiAgICAvPlxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLmlkJyB8IHRyYW5zbGF0ZVwiIGlkPVwiaWRcIiBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIiBbc29ydF09XCJzb3J0cy5nZXQoJ2lkJylcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1wcm9kdWN0PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgcHJvZHVjdC5pZCB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uXG4gICAgICAgIFtoZWFkaW5nXT1cIidjb21tb24uY3JlYXRlZC1hdCcgfCB0cmFuc2xhdGVcIiBpZD1cImNyZWF0ZWQtYXRcIlxuICAgICAgICBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIlxuICAgICAgICBbc29ydF09XCJzb3J0cy5nZXQoJ2NyZWF0ZWRBdCcpXCJcbiAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcHJvZHVjdD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7IHByb2R1Y3QuY3JlYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtblxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLnVwZGF0ZWQtYXQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJ1cGRhdGVkLWF0XCJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCd1cGRhdGVkQXQnKVwiXG4gICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXByb2R1Y3Q9XCJpdGVtXCI+XG4gICAgICAgICAgICB7eyBwcm9kdWN0LnVwZGF0ZWRBdCB8IGxvY2FsZURhdGUgOiAnc2hvcnQnIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5pbWFnZScgfCB0cmFuc2xhdGVcIiBpZD1cImltYWdlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcHJvZHVjdD1cIml0ZW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1wbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0LmZlYXR1cmVkQXNzZXQgYXMgYXNzZXQ7IGVsc2UgaW1hZ2VQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYXNzZXQgfCBhc3NldFByZXZpZXcgOiAndGlueSdcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZVBsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImltYWdlXCIgc2l6ZT1cIjQ4XCI+PC9jbHItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjYXRhbG9nLm5hbWUnIHwgdHJhbnNsYXRlXCIgaWQ9XCJuYW1lXCIgW29wdGlvbmFsXT1cImZhbHNlXCIgW3NvcnRdPVwic29ydHMuZ2V0KCduYW1lJylcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1wcm9kdWN0PVwiaXRlbVwiPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJidXR0b24tZ2hvc3RcIiBbcm91dGVyTGlua109XCJbJy4vJywgcHJvZHVjdC5pZF1cIlxuICAgICAgICAgICAgICAgID48c3Bhbj57eyBwcm9kdWN0Lm5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+PGNsci1pY29uIHNoYXBlPVwiYXJyb3cgcmlnaHRcIlxuICAgICAgICAgICAgLz48L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5zbHVnJyB8IHRyYW5zbGF0ZVwiIGlkPVwic2x1Z1wiIFtzb3J0XT1cInNvcnRzLmdldCgnc2x1ZycpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcHJvZHVjdD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7IHByb2R1Y3Quc2x1ZyB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uZW5hYmxlZCcgfCB0cmFuc2xhdGVcIiBpZD1cImVuYWJsZWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1wcm9kdWN0PVwiaXRlbVwiPlxuICAgICAgICAgICAgPHZkci1jaGlwICpuZ0lmPVwicHJvZHVjdC5lbmFibGVkXCIgY29sb3JUeXBlPVwic3VjY2Vzc1wiPnt7XG4gICAgICAgICAgICAgICAgJ2NvbW1vbi5lbmFibGVkJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX08L3Zkci1jaGlwPlxuICAgICAgICAgICAgPHZkci1jaGlwICpuZ0lmPVwiIXByb2R1Y3QuZW5hYmxlZFwiIGNvbG9yVHlwZT1cIndhcm5pbmdcIj57e1xuICAgICAgICAgICAgICAgICdjb21tb24uZGlzYWJsZWQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvdmRyLWNoaXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NhdGFsb2cubnVtYmVyLW9mLXZhcmlhbnRzJyB8IHRyYW5zbGF0ZVwiIGlkPVwibnVtYmVyLW9mLXZhcmlhbnRzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcHJvZHVjdD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7ICdjYXRhbG9nLnZhcmlhbnQtY291bnQnIHwgdHJhbnNsYXRlIDogeyBjb3VudDogcHJvZHVjdC52YXJpYW50TGlzdD8udG90YWxJdGVtcyB9IH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jdXN0b20tZmllbGQtY29sdW1uXG4gICAgICAgICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBjdXN0b21GaWVsZHNcIlxuICAgICAgICBbY3VzdG9tRmllbGRdPVwiY3VzdG9tRmllbGRcIlxuICAgICAgICBbc29ydHNdPVwic29ydHNcIlxuICAgIC8+XG48L3Zkci1kYXRhLXRhYmxlLTI+XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LWxpc3QvcHJvZHVjdC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LWxpc3QvcHJvZHVjdC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBRUgsNEJBQTRCLEVBRTVCLFFBQVEsRUFDUixlQUFlLEVBR2Ysd0JBQXdCLEVBQ3hCLHNCQUFzQixHQUN6QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFPbEQsTUFBTSxPQUFPLG9CQUNULFNBQVEsc0JBQW1FO0lBb0UzRSxZQUNjLFdBQXdCLEVBQzFCLFlBQTBCLEVBQzFCLG1CQUF3QyxFQUN4QyxlQUFnQztRQUV4QyxLQUFLLEVBQUUsQ0FBQztRQUxFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBckU1Qyw4QkFBeUIsR0FBRyxDQUFDLENBQUM7UUFDckIsaUJBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsWUFBTyxHQUFHLElBQUksQ0FB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QUFFO2FBQ25FO1NBQ0osQ0FBQzthQUNELElBQUksQ0FDRCxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3Riw4RUFBOEU7UUFDOUUsY0FBYztRQUNkLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDYjthQUNBLFNBQVMsQ0FDTixHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFO2dCQUNoRSxNQUFNLEVBQUUsU0FBUzthQUNwQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsRUFBRTtnQkFDNUQsTUFBTSxFQUFFLFNBQVM7YUFDcEIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUNKLENBQUM7SUFDVixDQUFDOytHQWpKUSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnRkNyQmpDLG1nS0F3SEE7OzRGRG5HYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcbmltcG9ydCB7XG4gICAgRGF0YVNlcnZpY2UsXG4gICAgRmFjZXRWYWx1ZUZvcm1JbnB1dENvbXBvbmVudCxcbiAgICBKb2JRdWV1ZVNlcnZpY2UsXG4gICAgSm9iU3RhdGUsXG4gICAgTG9naWNhbE9wZXJhdG9yLFxuICAgIE1vZGFsU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIFByb2R1Y3RMaXN0UXVlcnlEb2N1bWVudCxcbiAgICBUeXBlZEJhc2VMaXN0Q29tcG9uZW50LFxufSBmcm9tICdAZGVlbnJ1di9hZG1pbi11aS9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Zkci1wcm9kdWN0cy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdExpc3RDb21wb25lbnRcbiAgICBleHRlbmRzIFR5cGVkQmFzZUxpc3RDb21wb25lbnQ8dHlwZW9mIFByb2R1Y3RMaXN0UXVlcnlEb2N1bWVudCwgJ3Byb2R1Y3RzJz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIHBlbmRpbmdTZWFyY2hJbmRleFVwZGF0ZXMgPSAwO1xuICAgIHJlYWRvbmx5IGN1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ1Byb2R1Y3QnKTtcbiAgICByZWFkb25seSBmaWx0ZXJzID0gdGhpcy5jcmVhdGVGaWx0ZXJDb2xsZWN0aW9uKClcbiAgICAgICAgLmFkZElkRmlsdGVyKClcbiAgICAgICAgLmFkZERhdGVGaWx0ZXJzKClcbiAgICAgICAgLmFkZEZpbHRlcnMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdlbmFibGVkJyxcbiAgICAgICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICdib29sZWFuJyB9LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24uZW5hYmxlZCcpLFxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnZW5hYmxlZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzbHVnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICd0ZXh0JyB9LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24uc2x1ZycpLFxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnc2x1ZycsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAuYWRkRmlsdGVyKHtcbiAgICAgICAgICAgIG5hbWU6ICdmYWNldFZhbHVlcycsXG4gICAgICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgICAgICAga2luZDogJ2N1c3RvbScsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBGYWNldFZhbHVlRm9ybUlucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHNlcmlhbGl6ZVZhbHVlOiB2YWx1ZSA9PiB2YWx1ZS5tYXAodiA9PiB2LmlkKS5qb2luKCcsJyksXG4gICAgICAgICAgICAgICAgZGVzZXJpYWxpemVWYWx1ZTogdmFsdWUgPT4gdmFsdWUuc3BsaXQoJywnKS5tYXAoaWQgPT4gKHsgaWQgfSkpLFxuICAgICAgICAgICAgICAgIGdldExhYmVsOiB2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbMF0ubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IHYubmFtZSkuam9pbignLCAnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuZmFjZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldEZhY2V0VmFsdWVzKHsgZmlsdGVyOiB7IGlkOiB7IGluOiB2YWx1ZS5tYXAodiA9PiB2LmlkKSB9IH0gfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcFNpbmdsZSgoeyBmYWNldFZhbHVlcyB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZXRWYWx1ZXMuaXRlbXMubWFwKGZ2ID0+IGZ2Lm5hbWUpLmpvaW4oJywgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogXygnY2F0YWxvZy5mYWNldC12YWx1ZXMnKSxcbiAgICAgICAgICAgIHRvRmlsdGVySW5wdXQ6ICh2YWx1ZTogYW55W10pID0+ICh7XG4gICAgICAgICAgICAgICAgZmFjZXRWYWx1ZUlkOiB7XG4gICAgICAgICAgICAgICAgICAgIGluOiB2YWx1ZS5tYXAodiA9PiB2LmlkKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICAgIC5hZGRDdXN0b21GaWVsZEZpbHRlcnModGhpcy5jdXN0b21GaWVsZHMpXG4gICAgICAgIC5jb25uZWN0VG9Sb3V0ZSh0aGlzLnJvdXRlKTtcblxuICAgIHJlYWRvbmx5IHNvcnRzID0gdGhpcy5jcmVhdGVTb3J0Q29sbGVjdGlvbigpXG4gICAgICAgIC5kZWZhdWx0U29ydCgnY3JlYXRlZEF0JywgJ0RFU0MnKVxuICAgICAgICAuYWRkU29ydHMoW1xuICAgICAgICAgICAgeyBuYW1lOiAnaWQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdjcmVhdGVkQXQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICd1cGRhdGVkQXQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICduYW1lJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnc2x1ZycgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLmFkZEN1c3RvbUZpZWxkU29ydHModGhpcy5jdXN0b21GaWVsZHMpXG4gICAgICAgIC5jb25uZWN0VG9Sb3V0ZSh0aGlzLnJvdXRlKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgam9iUXVldWVTZXJ2aWNlOiBKb2JRdWV1ZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY29uZmlndXJlKHtcbiAgICAgICAgICAgIGRvY3VtZW50OiBQcm9kdWN0TGlzdFF1ZXJ5RG9jdW1lbnQsXG4gICAgICAgICAgICBnZXRJdGVtczogZGF0YSA9PiBkYXRhLnByb2R1Y3RzLFxuICAgICAgICAgICAgc2V0VmFyaWFibGVzOiAoc2tpcCwgdGFrZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaFRlcm1Db250cm9sLnZhbHVlPy50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJJbnB1dCA9IHRoaXMuZmlsdGVycy5jcmVhdGVGaWx0ZXJJbnB1dCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNraXAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGZpbHRlcklucHV0ID8/IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJPcGVyYXRvcjogTG9naWNhbE9wZXJhdG9yLkFORCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiB0aGlzLnNvcnRzLmNyZWF0ZVNvcnRJbnB1dCgpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVmcmVzaExpc3RPbkNoYW5nZXM6IFt0aGlzLnNvcnRzLnZhbHVlQ2hhbmdlcywgdGhpcy5maWx0ZXJzLnZhbHVlQ2hhbmdlc10sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlYnVpbGRTZWFyY2hJbmRleCgpIHtcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LnJlaW5kZXgoKS5zdWJzY3JpYmUoKHsgcmVpbmRleCB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuaW5mbyhfKCdjYXRhbG9nLnJlaW5kZXhpbmcnKSk7XG4gICAgICAgICAgICB0aGlzLmpvYlF1ZXVlU2VydmljZS5hZGRKb2IocmVpbmRleC5pZCwgam9iID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoam9iLnN0YXRlID09PSBKb2JTdGF0ZS5DT01QTEVURUQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZSA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChqb2IuZHVyYXRpb24gfHwgMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NhdGFsb2cucmVpbmRleC1zdWNjZXNzZnVsJyksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50OiBqb2IucmVzdWx0LmluZGV4ZWRJdGVtQ291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKF8oJ2NhdGFsb2cucmVpbmRleC1lcnJvcicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlUHJvZHVjdChwcm9kdWN0SWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxuICAgICAgICAgICAgLmRpYWxvZyh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IF8oJ2NhdGFsb2cuY29uZmlybS1kZWxldGUtcHJvZHVjdCcpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnc2Vjb25kYXJ5JywgbGFiZWw6IF8oJ2NvbW1vbi5jYW5jZWwnKSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3BvbnNlID0+IChyZXNwb25zZSA/IHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC5kZWxldGVQcm9kdWN0KHByb2R1Y3RJZCkgOiBFTVBUWSkpLFxuICAgICAgICAgICAgICAgIC8vIFNob3J0IGRlbGF5IHRvIGFsbG93IHRoZSBwcm9kdWN0IHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VhcmNoIGluZGV4IGJlZm9yZVxuICAgICAgICAgICAgICAgIC8vIHJlZnJlc2hpbmcuXG4gICAgICAgICAgICAgICAgZGVsYXkoNTAwKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWRlbGV0ZS1zdWNjZXNzJyksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1Byb2R1Y3QnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS1kZWxldGUtZXJyb3InKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUHJvZHVjdCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgIH1cbn1cbiIsIjx2ZHItcGFnZS1ibG9jaz5cbiAgICA8dmRyLWFjdGlvbi1iYXI+XG4gICAgICAgIDx2ZHItYWItbGVmdD5cbiAgICAgICAgICAgIDx2ZHItbGFuZ3VhZ2Utc2VsZWN0b3JcbiAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc109XCJhdmFpbGFibGVMYW5ndWFnZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIFtjdXJyZW50TGFuZ3VhZ2VDb2RlXT1cImNvbnRlbnRMYW5ndWFnZSQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgKGxhbmd1YWdlQ29kZUNoYW5nZSk9XCJzZXRMYW5ndWFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3Zkci1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAgICAgICAgPC92ZHItYWItbGVmdD5cbiAgICAgICAgPHZkci1hYi1yaWdodD5cbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1pdGVtcyBsb2NhdGlvbklkPVwicHJvZHVjdC1saXN0XCI+PC92ZHItYWN0aW9uLWJhci1pdGVtcz5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gcHJpbWFyeSBtci0xXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy4vY3JlYXRlJ11cIlxuICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwiWydDcmVhdGVDYXRhbG9nJywgJ0NyZWF0ZVByb2R1Y3QnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGx1c1wiPjwvY2xyLWljb24+XG4gICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cuY3JlYXRlLW5ldy1wcm9kdWN0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPHZkci1hY3Rpb24tYmFyLWRyb3Bkb3duLW1lbnUgW2Fsd2F5c1Nob3ddPVwidHJ1ZVwiIGxvY2F0aW9uSWQ9XCJwcm9kdWN0LWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB2ZHJEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInJlYnVpbGRTZWFyY2hJbmRleCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInJlZnJlc2hcIiBjbGFzcz1cIlwiPjwvY2xyLWljb24+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLnJlYnVpbGQtc2VhcmNoLWluZGV4JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC92ZHItYWN0aW9uLWJhci1kcm9wZG93bi1tZW51PlxuICAgICAgICA8L3Zkci1hYi1yaWdodD5cbiAgICA8L3Zkci1hY3Rpb24tYmFyPlxuPC92ZHItcGFnZS1ibG9jaz5cbjx2ZHItZGF0YS10YWJsZS0yXG4gICAgY2xhc3M9XCJtdC0yXCJcbiAgICBpZD1cInByb2R1Y3QtbGlzdFwiXG4gICAgW2l0ZW1zXT1cIml0ZW1zJCB8IGFzeW5jXCJcbiAgICBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZSQgfCBhc3luY1wiXG4gICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtcyQgfCBhc3luY1wiXG4gICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlJCB8IGFzeW5jXCJcbiAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAocGFnZUNoYW5nZSk9XCJzZXRQYWdlTnVtYmVyKCRldmVudClcIlxuICAgIChpdGVtc1BlclBhZ2VDaGFuZ2UpPVwic2V0SXRlbXNQZXJQYWdlKCRldmVudClcIlxuPlxuICAgIDx2ZHItYnVsay1hY3Rpb24tbWVudVxuICAgICAgICBsb2NhdGlvbklkPVwicHJvZHVjdC1saXN0XCJcbiAgICAgICAgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtzZWxlY3Rpb25NYW5hZ2VyXT1cInNlbGVjdGlvbk1hbmFnZXJcIlxuICAgID48L3Zkci1idWxrLWFjdGlvbi1tZW51PlxuICAgIDx2ZHItZHQyLXNlYXJjaFxuICAgICAgICBbc2VhcmNoVGVybUNvbnRyb2xdPVwic2VhcmNoVGVybUNvbnRyb2xcIlxuICAgICAgICBbc2VhcmNoVGVybVBsYWNlaG9sZGVyXT1cIidzZXR0aW5ncy5zZWFyY2gtYnktcHJvZHVjdC1uYW1lLW9yLXNrdScgfCB0cmFuc2xhdGVcIlxuICAgIC8+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uaWQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJpZFwiIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiIFtzb3J0XT1cInNvcnRzLmdldCgnaWQnKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXByb2R1Y3Q9XCJpdGVtXCI+XG4gICAgICAgICAgICB7eyBwcm9kdWN0LmlkIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW5cbiAgICAgICAgW2hlYWRpbmddPVwiJ2NvbW1vbi5jcmVhdGVkLWF0JyB8IHRyYW5zbGF0ZVwiIGlkPVwiY3JlYXRlZC1hdFwiXG4gICAgICAgIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiXG4gICAgICAgIFtzb3J0XT1cInNvcnRzLmdldCgnY3JlYXRlZEF0JylcIlxuICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1wcm9kdWN0PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgcHJvZHVjdC5jcmVhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uXG4gICAgICAgIFtoZWFkaW5nXT1cIidjb21tb24udXBkYXRlZC1hdCcgfCB0cmFuc2xhdGVcIiBpZD1cInVwZGF0ZWQtYXRcIlxuICAgICAgICBbaGlkZGVuQnlEZWZhdWx0XT1cInRydWVcIlxuICAgICAgICBbc29ydF09XCJzb3J0cy5nZXQoJ3VwZGF0ZWRBdCcpXCJcbiAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcHJvZHVjdD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7IHByb2R1Y3QudXBkYXRlZEF0IHwgbG9jYWxlRGF0ZSA6ICdzaG9ydCcgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLmltYWdlJyB8IHRyYW5zbGF0ZVwiIGlkPVwiaW1hZ2VcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1wcm9kdWN0PVwiaXRlbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInByb2R1Y3QuZmVhdHVyZWRBc3NldCBhcyBhc3NldDsgZWxzZSBpbWFnZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhc3NldCB8IGFzc2V0UHJldmlldyA6ICd0aW55J1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ltYWdlUGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiaW1hZ2VcIiBzaXplPVwiNDhcIj48L2Nsci1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NhdGFsb2cubmFtZScgfCB0cmFuc2xhdGVcIiBpZD1cIm5hbWVcIiBbb3B0aW9uYWxdPVwiZmFsc2VcIiBbc29ydF09XCJzb3J0cy5nZXQoJ25hbWUnKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXByb2R1Y3Q9XCJpdGVtXCI+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImJ1dHRvbi1naG9zdFwiIFtyb3V0ZXJMaW5rXT1cIlsnLi8nLCBwcm9kdWN0LmlkXVwiXG4gICAgICAgICAgICAgICAgPjxzcGFuPnt7IHByb2R1Y3QubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID48Y2xyLWljb24gc2hhcGU9XCJhcnJvdyByaWdodFwiXG4gICAgICAgICAgICAvPjwvYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY29tbW9uLnNsdWcnIHwgdHJhbnNsYXRlXCIgaWQ9XCJzbHVnXCIgW3NvcnRdPVwic29ydHMuZ2V0KCdzbHVnJylcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1wcm9kdWN0PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgcHJvZHVjdC5zbHVnIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5lbmFibGVkJyB8IHRyYW5zbGF0ZVwiIGlkPVwiZW5hYmxlZFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXByb2R1Y3Q9XCJpdGVtXCI+XG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCJwcm9kdWN0LmVuYWJsZWRcIiBjb2xvclR5cGU9XCJzdWNjZXNzXCI+e3tcbiAgICAgICAgICAgICAgICAnY29tbW9uLmVuYWJsZWQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvdmRyLWNoaXA+XG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nSWY9XCIhcHJvZHVjdC5lbmFibGVkXCIgY29sb3JUeXBlPVwid2FybmluZ1wiPnt7XG4gICAgICAgICAgICAgICAgJ2NvbW1vbi5kaXNhYmxlZCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH19PC92ZHItY2hpcD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY2F0YWxvZy5udW1iZXItb2YtdmFyaWFudHMnIHwgdHJhbnNsYXRlXCIgaWQ9XCJudW1iZXItb2YtdmFyaWFudHNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1wcm9kdWN0PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgJ2NhdGFsb2cudmFyaWFudC1jb3VudCcgfCB0cmFuc2xhdGUgOiB7IGNvdW50OiBwcm9kdWN0LnZhcmlhbnRMaXN0Py50b3RhbEl0ZW1zIH0gfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWN1c3RvbS1maWVsZC1jb2x1bW5cbiAgICAgICAgKm5nRm9yPVwibGV0IGN1c3RvbUZpZWxkIG9mIGN1c3RvbUZpZWxkc1wiXG4gICAgICAgIFtjdXN0b21GaWVsZF09XCJjdXN0b21GaWVsZFwiXG4gICAgICAgIFtzb3J0c109XCJzb3J0c1wiXG4gICAgLz5cbjwvdmRyLWRhdGEtdGFibGUtMj5cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
3
- import { ProductVariantListQueryDocument, TypedBaseListComponent, } from '@deenruv/admin-ui/core';
3
+ import { LogicalOperator, ProductVariantListQueryDocument, TypedBaseListComponent, } from '@deenruv/admin-ui/core';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@clr/angular";
6
6
  import * as i2 from "@angular/common";
@@ -65,24 +65,12 @@ export class ProductVariantListComponent extends TypedBaseListComponent {
65
65
  document: ProductVariantListQueryDocument,
66
66
  getItems: data => data.productVariants,
67
67
  setVariables: (skip, take) => {
68
- const searchTerm = this.searchTermControl.value;
68
+ const searchTerm = this.searchTermControl.value?.trim().replace(/\s+/g, ' ') || undefined;
69
69
  const filterParam = { _and: [] };
70
70
  const filterInput = this.filters.createFilterInput();
71
71
  if (Object.keys(filterInput).length) {
72
72
  filterParam._and?.push(filterInput);
73
73
  }
74
- if (searchTerm) {
75
- filterParam._and?.push({
76
- _or: [
77
- {
78
- name: { contains: searchTerm },
79
- },
80
- {
81
- sku: { contains: searchTerm },
82
- },
83
- ],
84
- });
85
- }
86
74
  if (this.productId) {
87
75
  filterParam._and?.push({
88
76
  productId: {
@@ -95,6 +83,8 @@ export class ProductVariantListComponent extends TypedBaseListComponent {
95
83
  skip,
96
84
  take,
97
85
  filter: filterParam,
86
+ filterOperator: LogicalOperator.AND,
87
+ searchTerm,
98
88
  sort: this.sorts.createSortInput(),
99
89
  },
100
90
  };
@@ -115,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
115
105
  }], dataTableId: [{
116
106
  type: Input
117
107
  }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jYXRhbG9nL3NyYy9jb21wb25lbnRzL3Byb2R1Y3QtdmFyaWFudC1saXN0L3Byb2R1Y3QtdmFyaWFudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnQtbGlzdC9wcm9kdWN0LXZhcmlhbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFJSCwrQkFBK0IsRUFDL0Isc0JBQXNCLEdBQ3pCLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFPaEMsTUFBTSxPQUFPLDJCQUNULFNBQVEsc0JBQWlGO0lBMER6RjtRQUNJLEtBQUssRUFBRSxDQUFDO1FBdkRILHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQixpQkFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELFlBQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7YUFDM0MsV0FBVyxFQUFFO2FBQ2IsY0FBYyxFQUFFO2FBQ2hCLFVBQVUsQ0FBQztZQUNSO2dCQUNJLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUN2QixXQUFXLEVBQUUsTUFBTTthQUN0QjtZQUNEO2dCQUNJLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxFQUFFLElBQUksRUFB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RTt3QkFDTCxJQUFJO3dCQUNKLElBQUk7d0JBQ0osTUFBTSxFQUFFLFdBQVc7d0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtxQkFDckM7aUJBQ0osQ0FBQztZQUNOLENBQUM7WUFDRCxvQkFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1NBQzdFLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBckdRLDJCQUEyQjttR0FBM0IsMkJBQTJCLGlNQ2Z4Qyx3b0tBeUhBOzs0RkQxR2EsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNJLDBCQUEwQjt3REFRM0IsU0FBUztzQkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xuaW1wb3J0IHtcbiAgICBEYXRhVGFibGVMb2NhdGlvbklkLFxuICAgIExvZ2ljYWxPcGVyYXRvcixcbiAgICBQcm9kdWN0VmFyaWFudEZpbHRlclBhcmFtZXRlcixcbiAgICBQcm9kdWN0VmFyaWFudExpc3RRdWVyeURvY3VtZW50LFxuICAgIFR5cGVkQmFzZUxpc3RDb21wb25lbnQsXG59IGZyb20gJ0BkZWVucnV2L2FkbWluLXVpL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Zkci1wcm9kdWN0LXZhcmlhbnQtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtdmFyaWFudC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LXZhcmlhbnQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0VmFyaWFudExpc3RDb21wb25lbnRcbiAgICBleHRlbmRzIFR5cGVkQmFzZUxpc3RDb21wb25lbnQ8dHlwZW9mIFByb2R1Y3RWYXJpYW50TGlzdFF1ZXJ5RG9jdW1lbnQsICdwcm9kdWN0VmFyaWFudHMnPlxuICAgIGltcGxlbWVudHMgT25Jbml0XG57XG4gICAgQElucHV0KCkgcHJvZHVjdElkPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGhpZGVMYW5ndWFnZVNlbGVjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRhdGFUYWJsZUlkOiBEYXRhVGFibGVMb2NhdGlvbklkIHwgdW5kZWZpbmVkO1xuICAgIHJlYWRvbmx5IGN1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ1Byb2R1Y3RWYXJpYW50Jyk7XG4gICAgcmVhZG9ubHkgZmlsdGVycyA9IHRoaXMuY3JlYXRlRmlsdGVyQ29sbGVjdGlvbigpXG4gICAgICAgIC5hZGRJZEZpbHRlcigpXG4gICAgICAgIC5hZGREYXRlRmlsdGVycygpXG4gICAgICAgIC5hZGRGaWx0ZXJzKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgdHlwZTogeyBraW5kOiAndGV4dCcgfSxcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLm5hbWUnKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnYm9vbGVhbicgfSxcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLmVuYWJsZWQnKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ2VuYWJsZWQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2t1JyxcbiAgICAgICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICd0ZXh0JyB9LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBfKCdjYXRhbG9nLnNrdScpLFxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAnc2t1JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3ByaWNlJyxcbiAgICAgICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICdudW1iZXInLCBpbnB1dFR5cGU6ICdjdXJyZW5jeScgfSxcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLnByaWNlJyksXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdwcmljZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdwcmljZVdpdGhUYXgnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ251bWJlcicsIGlucHV0VHlwZTogJ2N1cnJlbmN5JyB9LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBfKCdjb21tb24ucHJpY2Utd2l0aC10YXgnKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ3ByaWNlV2l0aFRheCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKVxuICAgICAgICAuYWRkQ3VzdG9tRmllbGRGaWx0ZXJzKHRoaXMuY3VzdG9tRmllbGRzKVxuICAgICAgICAuY29ubmVjdFRvUm91dGUodGhpcy5yb3V0ZSk7XG5cbiAgICByZWFkb25seSBzb3J0cyA9IHRoaXMuY3JlYXRlU29ydENvbGxlY3Rpb24oKVxuICAgICAgICAuYWRkU29ydHMoW1xuICAgICAgICAgICAgeyBuYW1lOiAnaWQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdjcmVhdGVkQXQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICd1cGRhdGVkQXQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICduYW1lJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnc2t1JyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAncHJpY2UnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdwcmljZVdpdGhUYXgnIH0sXG4gICAgICAgIF0pXG4gICAgICAgIC5hZGRDdXN0b21GaWVsZFNvcnRzKHRoaXMuY3VzdG9tRmllbGRzKVxuICAgICAgICAuY29ubmVjdFRvUm91dGUodGhpcy5yb3V0ZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmUoe1xuICAgICAgICAgICAgZG9jdW1lbnQ6IFByb2R1Y3RWYXJpYW50TGlzdFF1ZXJ5RG9jdW1lbnQsXG4gICAgICAgICAgICBnZXRJdGVtczogZGF0YSA9PiBkYXRhLnByb2R1Y3RWYXJpYW50cyxcbiAgICAgICAgICAgIHNldFZhcmlhYmxlczogKHNraXAsIHRha2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hUZXJtID0gdGhpcy5zZWFyY2hUZXJtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJQYXJhbTogUHJvZHVjdFZhcmlhbnRGaWx0ZXJQYXJhbWV0ZXIgPSB7IF9hbmQ6IFtdIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVySW5wdXQgPSB0aGlzLmZpbHRlcnMuY3JlYXRlRmlsdGVySW5wdXQoKTtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVySW5wdXQpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbS5fYW5kPy5wdXNoKGZpbHRlcklucHV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlYXJjaFRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW0uX2FuZD8ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBfb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHsgY29udGFpbnM6IHNlYXJjaFRlcm0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2t1OiB7IGNvbnRhaW5zOiBzZWFyY2hUZXJtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9kdWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW0uX2FuZD8ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0SWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcTogdGhpcy5wcm9kdWN0SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlclBhcmFtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogdGhpcy5zb3J0cy5jcmVhdGVTb3J0SW5wdXQoKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0T25DaGFuZ2VzOiBbdGhpcy5zb3J0cy52YWx1ZUNoYW5nZXMsIHRoaXMuZmlsdGVycy52YWx1ZUNoYW5nZXNdLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8dmRyLXBhZ2UtYmxvY2sgKm5nSWY9XCIhaGlkZUxhbmd1YWdlU2VsZWN0XCI+XG4gICAgPHZkci1sYW5ndWFnZS1zZWxlY3RvclxuICAgICAgICBbYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc109XCJhdmFpbGFibGVMYW5ndWFnZXMkIHwgYXN5bmNcIlxuICAgICAgICBbY3VycmVudExhbmd1YWdlQ29kZV09XCJjb250ZW50TGFuZ3VhZ2UkIHwgYXN5bmNcIlxuICAgICAgICAobGFuZ3VhZ2VDb2RlQ2hhbmdlKT1cInNldExhbmd1YWdlKCRldmVudClcIlxuICAgID48L3Zkci1sYW5ndWFnZS1zZWxlY3Rvcj5cbjwvdmRyLXBhZ2UtYmxvY2s+XG48dmRyLWRhdGEtdGFibGUtMlxuICAgIGNsYXNzPVwibXQtMlwiXG4gICAgW2lkXT1cImRhdGFUYWJsZUlkIHx8ICdwcm9kdWN0LXZhcmlhbnQtbGlzdCdcIlxuICAgIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiXG4gICAgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2UkIHwgYXN5bmNcIlxuICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXMkIHwgYXN5bmNcIlxuICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZSQgfCBhc3luY1wiXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgKHBhZ2VDaGFuZ2UpPVwic2V0UGFnZU51bWJlcigkZXZlbnQpXCJcbiAgICAoaXRlbXNQZXJQYWdlQ2hhbmdlKT1cInNldEl0ZW1zUGVyUGFnZSgkZXZlbnQpXCJcbj5cbiAgICA8dmRyLWJ1bGstYWN0aW9uLW1lbnVcbiAgICAgICAgbG9jYXRpb25JZD1cInByb2R1Y3QtdmFyaWFudC1saXN0XCJcbiAgICAgICAgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtzZWxlY3Rpb25NYW5hZ2VyXT1cInNlbGVjdGlvbk1hbmFnZXJcIlxuICAgIC8+XG4gICAgPHZkci1kdDItc2VhcmNoXG4gICAgICAgIFtzZWFyY2hUZXJtQ29udHJvbF09XCJzZWFyY2hUZXJtQ29udHJvbFwiXG4gICAgICAgIFtzZWFyY2hUZXJtUGxhY2Vob2xkZXJdPVwiJ3NldHRpbmdzLnNlYXJjaC1ieS1wcm9kdWN0LW5hbWUtb3Itc2t1JyB8IHRyYW5zbGF0ZVwiXG4gICAgLz5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5pZCcgfCB0cmFuc2xhdGVcIiBpZD1cImlkXCIgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCIgW3NvcnRdPVwic29ydHMuZ2V0KCdpZCcpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7IHZhcmlhbnQuaWQgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtblxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLmNyZWF0ZWQtYXQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJjcmVhdGVkLWF0XCJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCdjcmVhdGVkQXQnKVwiXG4gICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICB7eyB2YXJpYW50LmNyZWF0ZWRBdCB8IGxvY2FsZURhdGUgOiAnc2hvcnQnIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW5cbiAgICAgICAgW2hlYWRpbmddPVwiJ2NvbW1vbi51cGRhdGVkLWF0JyB8IHRyYW5zbGF0ZVwiIGlkPVwidXBkYXRlZC1hdFwiXG4gICAgICAgIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiXG4gICAgICAgIFtzb3J0XT1cInNvcnRzLmdldCgndXBkYXRlZEF0JylcIlxuICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgdmFyaWFudC51cGRhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uaW1hZ2UnIHwgdHJhbnNsYXRlXCIgaWQ9XCJpbWFnZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmFyaWFudC5mZWF0dXJlZEFzc2V0IGFzIGFzc2V0OyBlbHNlIGltYWdlUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFzc2V0IHwgYXNzZXRQcmV2aWV3IDogJ3RpbnknXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJpbWFnZVwiIHNpemU9XCI0OFwiPjwvY2xyLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY2F0YWxvZy5uYW1lJyB8IHRyYW5zbGF0ZVwiIGlkPVwibmFtZVwiIFtvcHRpb25hbF09XCJmYWxzZVwiIFtzb3J0XT1cInNvcnRzLmdldCgnbmFtZScpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2NhdGFsb2cvcHJvZHVjdHMnLCB2YXJpYW50LnByb2R1Y3RJZCwgJ3ZhcmlhbnRzJywgdmFyaWFudC5pZF1cIlxuICAgICAgICAgICAgICAgID48c3Bhbj57eyB2YXJpYW50Lm5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+PGNsci1pY29uIHNoYXBlPVwiYXJyb3cgcmlnaHRcIlxuICAgICAgICAgICAgLz48L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NhdGFsb2cuc2t1JyB8IHRyYW5zbGF0ZVwiIGlkPVwic2t1XCIgW3NvcnRdPVwic29ydHMuZ2V0KCdza3UnKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICB7eyB2YXJpYW50LnNrdSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uZW5hYmxlZCcgfCB0cmFuc2xhdGVcIiBpZD1cImVuYWJsZWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxuICAgICAgICAgICAgPHZkci1jaGlwICpuZ0lmPVwidmFyaWFudC5lbmFibGVkXCIgY29sb3JUeXBlPVwic3VjY2Vzc1wiPnt7XG4gICAgICAgICAgICAgICAgJ2NvbW1vbi5lbmFibGVkJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX08L3Zkci1jaGlwPlxuICAgICAgICAgICAgPHZkci1jaGlwICpuZ0lmPVwiIXZhcmlhbnQuZW5hYmxlZFwiIGNvbG9yVHlwZT1cIndhcm5pbmdcIj57e1xuICAgICAgICAgICAgICAgICdjb21tb24uZGlzYWJsZWQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvdmRyLWNoaXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW5cbiAgICAgICAgW2hlYWRpbmddPVwiJ2NvbW1vbi5wcmljZScgfCB0cmFuc2xhdGVcIiBpZD1cInByaWNlXCJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCdwcmljZScpXCJcbiAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7IHZhcmlhbnQucHJpY2UgfCBsb2NhbGVDdXJyZW5jeSA6IHZhcmlhbnQuY3VycmVuY3lDb2RlIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5wcmljZS13aXRoLXRheCcgfCB0cmFuc2xhdGVcIiBpZD1cInByaWNlLXdpdGgtdGF4XCIgW3NvcnRdPVwic29ydHMuZ2V0KCdwcmljZVdpdGhUYXgnKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICB7eyB2YXJpYW50LnByaWNlV2l0aFRheCB8IGxvY2FsZUN1cnJlbmN5IDogdmFyaWFudC5jdXJyZW5jeUNvZGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuXG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjYXRhbG9nLnN0b2NrLW9uLWhhbmQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJzdG9jay1vbi1oYW5kXCIgW2hpZGRlbkJ5RGVmYXVsdF09XCJmYWxzZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nRm9yPVwibGV0IHN0b2NrTGV2ZWwgb2YgdmFyaWFudC5zdG9ja0xldmVsc1wiIFt0aXRsZV09XCJzdG9ja0xldmVsLnN0b2NrTG9jYXRpb24/Lm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b2NrTGV2ZWwuc3RvY2tPbkhhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XCJtbC0xXCIgKm5nSWY9XCJzdG9ja0xldmVsLnN0b2NrQWxsb2NhdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+KHt7IHN0b2NrTGV2ZWwuc3RvY2tBbGxvY2F0ZWQgfX0gYWxsb2NhdGVkKTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdmRyLWNoaXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jdXN0b20tZmllbGQtY29sdW1uICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBjdXN0b21GaWVsZHNcIiBbY3VzdG9tRmllbGRdPVwiZmllbGRcIiBbc29ydHNdPVwic29ydHNcIiAvPlxuPC92ZHItZGF0YS10YWJsZS0yPlxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jYXRhbG9nL3NyYy9jb21wb25lbnRzL3Byb2R1Y3QtdmFyaWFudC1saXN0L3Byb2R1Y3QtdmFyaWFudC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnQtbGlzdC9wcm9kdWN0LXZhcmlhbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFFSCxlQUFlLEVBRWYsK0JBQStCLEVBQy9CLHNCQUFzQixHQUN6QixNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBT2hDLE1BQU0sT0FBTywyQkFDVCxTQUFRLHNCQUFpRjtJQTBEekY7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQXZESCx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0IsaUJBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRCxZQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2FBQzNDLFdBQVcsRUFBRTthQUNiLGNBQWMsRUFBRTthQUNoQixVQUFVLENBQUM7WUFDUjtnQkFDSSxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUN0QixLQUFLLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDdkIsV0FBVyxFQUFFLE1BQU07YUFDdEI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsU0FBUztnQkFDZixJQUFJLEVBQUUsRUFB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QUM7WUFDTixDQUFDO1lBQ0Qsb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztTQUM3RSxDQUFDLENBQUM7SUFDUCxDQUFDOytHQTNGUSwyQkFBMkI7bUdBQTNCLDJCQUEyQixpTUNmeEMsd29LQXlIQTs7NEZEMUdhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDSSwwQkFBMEI7d0RBUTNCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcbmltcG9ydCB7XG4gICAgRGF0YVRhYmxlTG9jYXRpb25JZCxcbiAgICBMb2dpY2FsT3BlcmF0b3IsXG4gICAgUHJvZHVjdFZhcmlhbnRGaWx0ZXJQYXJhbWV0ZXIsXG4gICAgUHJvZHVjdFZhcmlhbnRMaXN0UXVlcnlEb2N1bWVudCxcbiAgICBUeXBlZEJhc2VMaXN0Q29tcG9uZW50LFxufSBmcm9tICdAZGVlbnJ1di9hZG1pbi11aS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2ZHItcHJvZHVjdC12YXJpYW50LWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LXZhcmlhbnQtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC12YXJpYW50LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdFZhcmlhbnRMaXN0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBUeXBlZEJhc2VMaXN0Q29tcG9uZW50PHR5cGVvZiBQcm9kdWN0VmFyaWFudExpc3RRdWVyeURvY3VtZW50LCAncHJvZHVjdFZhcmlhbnRzJz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIEBJbnB1dCgpIHByb2R1Y3RJZD86IHN0cmluZztcbiAgICBASW5wdXQoKSBoaWRlTGFuZ3VhZ2VTZWxlY3QgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkYXRhVGFibGVJZDogRGF0YVRhYmxlTG9jYXRpb25JZCB8IHVuZGVmaW5lZDtcbiAgICByZWFkb25seSBjdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdQcm9kdWN0VmFyaWFudCcpO1xuICAgIHJlYWRvbmx5IGZpbHRlcnMgPSB0aGlzLmNyZWF0ZUZpbHRlckNvbGxlY3Rpb24oKVxuICAgICAgICAuYWRkSWRGaWx0ZXIoKVxuICAgICAgICAuYWRkRGF0ZUZpbHRlcnMoKVxuICAgICAgICAuYWRkRmlsdGVycyhbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ3RleHQnIH0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi5uYW1lJyksXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2VuYWJsZWQnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHsga2luZDogJ2Jvb2xlYW4nIH0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi5lbmFibGVkJyksXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdlbmFibGVkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3NrdScsXG4gICAgICAgICAgICAgICAgdHlwZTogeyBraW5kOiAndGV4dCcgfSxcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY2F0YWxvZy5za3UnKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZDogJ3NrdScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdwcmljZScsXG4gICAgICAgICAgICAgICAgdHlwZTogeyBraW5kOiAnbnVtYmVyJywgaW5wdXRUeXBlOiAnY3VycmVuY3knIH0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IF8oJ2NvbW1vbi5wcmljZScpLFxuICAgICAgICAgICAgICAgIGZpbHRlckZpZWxkOiAncHJpY2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAncHJpY2VXaXRoVGF4JyxcbiAgICAgICAgICAgICAgICB0eXBlOiB7IGtpbmQ6ICdudW1iZXInLCBpbnB1dFR5cGU6ICdjdXJyZW5jeScgfSxcbiAgICAgICAgICAgICAgICBsYWJlbDogXygnY29tbW9uLnByaWNlLXdpdGgtdGF4JyksXG4gICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdwcmljZVdpdGhUYXgnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSlcbiAgICAgICAgLmFkZEN1c3RvbUZpZWxkRmlsdGVycyh0aGlzLmN1c3RvbUZpZWxkcylcbiAgICAgICAgLmNvbm5lY3RUb1JvdXRlKHRoaXMucm91dGUpO1xuXG4gICAgcmVhZG9ubHkgc29ydHMgPSB0aGlzLmNyZWF0ZVNvcnRDb2xsZWN0aW9uKClcbiAgICAgICAgLmFkZFNvcnRzKFtcbiAgICAgICAgICAgIHsgbmFtZTogJ2lkJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnY3JlYXRlZEF0JyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAndXBkYXRlZEF0JyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnbmFtZScgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3NrdScgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3ByaWNlJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAncHJpY2VXaXRoVGF4JyB9LFxuICAgICAgICBdKVxuICAgICAgICAuYWRkQ3VzdG9tRmllbGRTb3J0cyh0aGlzLmN1c3RvbUZpZWxkcylcbiAgICAgICAgLmNvbm5lY3RUb1JvdXRlKHRoaXMucm91dGUpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY29uZmlndXJlKHtcbiAgICAgICAgICAgIGRvY3VtZW50OiBQcm9kdWN0VmFyaWFudExpc3RRdWVyeURvY3VtZW50LFxuICAgICAgICAgICAgZ2V0SXRlbXM6IGRhdGEgPT4gZGF0YS5wcm9kdWN0VmFyaWFudHMsXG4gICAgICAgICAgICBzZXRWYXJpYWJsZXM6IChza2lwLCB0YWtlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoVGVybUNvbnRyb2wudmFsdWU/LnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJykgfHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclBhcmFtOiBQcm9kdWN0VmFyaWFudEZpbHRlclBhcmFtZXRlciA9IHsgX2FuZDogW10gfTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJJbnB1dCA9IHRoaXMuZmlsdGVycy5jcmVhdGVGaWx0ZXJJbnB1dCgpO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXJJbnB1dCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtLl9hbmQ/LnB1c2goZmlsdGVySW5wdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9kdWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW0uX2FuZD8ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0SWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcTogdGhpcy5wcm9kdWN0SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlclBhcmFtLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyT3BlcmF0b3I6IExvZ2ljYWxPcGVyYXRvci5BTkQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hUZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogdGhpcy5zb3J0cy5jcmVhdGVTb3J0SW5wdXQoKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0T25DaGFuZ2VzOiBbdGhpcy5zb3J0cy52YWx1ZUNoYW5nZXMsIHRoaXMuZmlsdGVycy52YWx1ZUNoYW5nZXNdLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8dmRyLXBhZ2UtYmxvY2sgKm5nSWY9XCIhaGlkZUxhbmd1YWdlU2VsZWN0XCI+XG4gICAgPHZkci1sYW5ndWFnZS1zZWxlY3RvclxuICAgICAgICBbYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc109XCJhdmFpbGFibGVMYW5ndWFnZXMkIHwgYXN5bmNcIlxuICAgICAgICBbY3VycmVudExhbmd1YWdlQ29kZV09XCJjb250ZW50TGFuZ3VhZ2UkIHwgYXN5bmNcIlxuICAgICAgICAobGFuZ3VhZ2VDb2RlQ2hhbmdlKT1cInNldExhbmd1YWdlKCRldmVudClcIlxuICAgID48L3Zkci1sYW5ndWFnZS1zZWxlY3Rvcj5cbjwvdmRyLXBhZ2UtYmxvY2s+XG48dmRyLWRhdGEtdGFibGUtMlxuICAgIGNsYXNzPVwibXQtMlwiXG4gICAgW2lkXT1cImRhdGFUYWJsZUlkIHx8ICdwcm9kdWN0LXZhcmlhbnQtbGlzdCdcIlxuICAgIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiXG4gICAgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2UkIHwgYXN5bmNcIlxuICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXMkIHwgYXN5bmNcIlxuICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZSQgfCBhc3luY1wiXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgKHBhZ2VDaGFuZ2UpPVwic2V0UGFnZU51bWJlcigkZXZlbnQpXCJcbiAgICAoaXRlbXNQZXJQYWdlQ2hhbmdlKT1cInNldEl0ZW1zUGVyUGFnZSgkZXZlbnQpXCJcbj5cbiAgICA8dmRyLWJ1bGstYWN0aW9uLW1lbnVcbiAgICAgICAgbG9jYXRpb25JZD1cInByb2R1Y3QtdmFyaWFudC1saXN0XCJcbiAgICAgICAgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtzZWxlY3Rpb25NYW5hZ2VyXT1cInNlbGVjdGlvbk1hbmFnZXJcIlxuICAgIC8+XG4gICAgPHZkci1kdDItc2VhcmNoXG4gICAgICAgIFtzZWFyY2hUZXJtQ29udHJvbF09XCJzZWFyY2hUZXJtQ29udHJvbFwiXG4gICAgICAgIFtzZWFyY2hUZXJtUGxhY2Vob2xkZXJdPVwiJ3NldHRpbmdzLnNlYXJjaC1ieS1wcm9kdWN0LW5hbWUtb3Itc2t1JyB8IHRyYW5zbGF0ZVwiXG4gICAgLz5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5pZCcgfCB0cmFuc2xhdGVcIiBpZD1cImlkXCIgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCIgW3NvcnRdPVwic29ydHMuZ2V0KCdpZCcpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7IHZhcmlhbnQuaWQgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtblxuICAgICAgICBbaGVhZGluZ109XCInY29tbW9uLmNyZWF0ZWQtYXQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJjcmVhdGVkLWF0XCJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCdjcmVhdGVkQXQnKVwiXG4gICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICB7eyB2YXJpYW50LmNyZWF0ZWRBdCB8IGxvY2FsZURhdGUgOiAnc2hvcnQnIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW5cbiAgICAgICAgW2hlYWRpbmddPVwiJ2NvbW1vbi51cGRhdGVkLWF0JyB8IHRyYW5zbGF0ZVwiIGlkPVwidXBkYXRlZC1hdFwiXG4gICAgICAgIFtoaWRkZW5CeURlZmF1bHRdPVwidHJ1ZVwiXG4gICAgICAgIFtzb3J0XT1cInNvcnRzLmdldCgndXBkYXRlZEF0JylcIlxuICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxuICAgICAgICAgICAge3sgdmFyaWFudC51cGRhdGVkQXQgfCBsb2NhbGVEYXRlIDogJ3Nob3J0JyB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uaW1hZ2UnIHwgdHJhbnNsYXRlXCIgaWQ9XCJpbWFnZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmFyaWFudC5mZWF0dXJlZEFzc2V0IGFzIGFzc2V0OyBlbHNlIGltYWdlUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFzc2V0IHwgYXNzZXRQcmV2aWV3IDogJ3RpbnknXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJpbWFnZVwiIHNpemU9XCI0OFwiPjwvY2xyLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuICAgIDx2ZHItZHQyLWNvbHVtbiBbaGVhZGluZ109XCInY2F0YWxvZy5uYW1lJyB8IHRyYW5zbGF0ZVwiIGlkPVwibmFtZVwiIFtvcHRpb25hbF09XCJmYWxzZVwiIFtzb3J0XT1cInNvcnRzLmdldCgnbmFtZScpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2NhdGFsb2cvcHJvZHVjdHMnLCB2YXJpYW50LnByb2R1Y3RJZCwgJ3ZhcmlhbnRzJywgdmFyaWFudC5pZF1cIlxuICAgICAgICAgICAgICAgID48c3Bhbj57eyB2YXJpYW50Lm5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+PGNsci1pY29uIHNoYXBlPVwiYXJyb3cgcmlnaHRcIlxuICAgICAgICAgICAgLz48L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NhdGFsb2cuc2t1JyB8IHRyYW5zbGF0ZVwiIGlkPVwic2t1XCIgW3NvcnRdPVwic29ydHMuZ2V0KCdza3UnKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICB7eyB2YXJpYW50LnNrdSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdmRyLWR0Mi1jb2x1bW4+XG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjb21tb24uZW5hYmxlZCcgfCB0cmFuc2xhdGVcIiBpZD1cImVuYWJsZWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YXJpYW50PVwiaXRlbVwiPlxuICAgICAgICAgICAgPHZkci1jaGlwICpuZ0lmPVwidmFyaWFudC5lbmFibGVkXCIgY29sb3JUeXBlPVwic3VjY2Vzc1wiPnt7XG4gICAgICAgICAgICAgICAgJ2NvbW1vbi5lbmFibGVkJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX08L3Zkci1jaGlwPlxuICAgICAgICAgICAgPHZkci1jaGlwICpuZ0lmPVwiIXZhcmlhbnQuZW5hYmxlZFwiIGNvbG9yVHlwZT1cIndhcm5pbmdcIj57e1xuICAgICAgICAgICAgICAgICdjb21tb24uZGlzYWJsZWQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvdmRyLWNoaXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW5cbiAgICAgICAgW2hlYWRpbmddPVwiJ2NvbW1vbi5wcmljZScgfCB0cmFuc2xhdGVcIiBpZD1cInByaWNlXCJcbiAgICAgICAgW2hpZGRlbkJ5RGVmYXVsdF09XCJ0cnVlXCJcbiAgICAgICAgW3NvcnRdPVwic29ydHMuZ2V0KCdwcmljZScpXCJcbiAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFyaWFudD1cIml0ZW1cIj5cbiAgICAgICAgICAgIHt7IHZhcmlhbnQucHJpY2UgfCBsb2NhbGVDdXJyZW5jeSA6IHZhcmlhbnQuY3VycmVuY3lDb2RlIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jb2x1bW4gW2hlYWRpbmddPVwiJ2NvbW1vbi5wcmljZS13aXRoLXRheCcgfCB0cmFuc2xhdGVcIiBpZD1cInByaWNlLXdpdGgtdGF4XCIgW3NvcnRdPVwic29ydHMuZ2V0KCdwcmljZVdpdGhUYXgnKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICB7eyB2YXJpYW50LnByaWNlV2l0aFRheCB8IGxvY2FsZUN1cnJlbmN5IDogdmFyaWFudC5jdXJyZW5jeUNvZGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Zkci1kdDItY29sdW1uPlxuXG4gICAgPHZkci1kdDItY29sdW1uIFtoZWFkaW5nXT1cIidjYXRhbG9nLnN0b2NrLW9uLWhhbmQnIHwgdHJhbnNsYXRlXCIgaWQ9XCJzdG9jay1vbi1oYW5kXCIgW2hpZGRlbkJ5RGVmYXVsdF09XCJmYWxzZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhcmlhbnQ9XCJpdGVtXCI+XG4gICAgICAgICAgICA8dmRyLWNoaXAgKm5nRm9yPVwibGV0IHN0b2NrTGV2ZWwgb2YgdmFyaWFudC5zdG9ja0xldmVsc1wiIFt0aXRsZV09XCJzdG9ja0xldmVsLnN0b2NrTG9jYXRpb24/Lm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b2NrTGV2ZWwuc3RvY2tPbkhhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XCJtbC0xXCIgKm5nSWY9XCJzdG9ja0xldmVsLnN0b2NrQWxsb2NhdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+KHt7IHN0b2NrTGV2ZWwuc3RvY2tBbGxvY2F0ZWQgfX0gYWxsb2NhdGVkKTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdmRyLWNoaXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC92ZHItZHQyLWNvbHVtbj5cbiAgICA8dmRyLWR0Mi1jdXN0b20tZmllbGQtY29sdW1uICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBjdXN0b21GaWVsZHNcIiBbY3VzdG9tRmllbGRdPVwiZmllbGRcIiBbc29ydHNdPVwic29ydHNcIiAvPlxuPC92ZHItZGF0YS10YWJsZS0yPlxuIl19