ng-miam 9.2.0 → 9.2.2

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 (104) hide show
  1. package/bundles/ng-miam.umd.js +927 -634
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +1 -1
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_components/accordion/accordion.component.js +2 -2
  6. package/esm2015/lib/_components/addon-link/addon-link.component.js +3 -3
  7. package/esm2015/lib/_components/counter-input/counter-input.component.js +14 -12
  8. package/esm2015/lib/_components/guests-dropdown/guests-dropdown.component.js +8 -5
  9. package/esm2015/lib/_components/icon/icon.component.js +2 -2
  10. package/esm2015/lib/_components/like-button/like-button.component.js +6 -5
  11. package/esm2015/lib/_components/modal/modal.component.js +39 -36
  12. package/esm2015/lib/_components/no-pos-selected/no-pos-selected.component.js +2 -2
  13. package/esm2015/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.js +15 -6
  14. package/esm2015/lib/_components/product-card/product-card-skeleton/product-card-skeleton.component.js +1 -1
  15. package/esm2015/lib/_components/product-card/product-card.component.js +25 -7
  16. package/esm2015/lib/_components/products-picker/products-picker.component.js +2 -2
  17. package/esm2015/lib/_components/recipe-promotion-badge/recipe-promotion-badge.component.js +2 -2
  18. package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +4 -4
  19. package/esm2015/lib/_components/sponsor-blocks/sponsor-logo-block/sponsor-logo-block.component.js +4 -4
  20. package/esm2015/lib/_components/sponsor-blocks/sponsor-picture-block/sponsor-picture-block.component.js +3 -3
  21. package/esm2015/lib/_components/sponsor-blocks/sponsor-small-picture-block/sponsor-small-picture-block.component.js +3 -3
  22. package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +4 -4
  23. package/esm2015/lib/_models/basket-actions/basket-action.js +2 -2
  24. package/esm2015/lib/_services/basket-recipe-cleanup.service.js +62 -0
  25. package/esm2015/lib/_services/basket-transfer.service.js +3 -2
  26. package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +9 -3
  27. package/esm2015/lib/_services/context.service.js +17 -13
  28. package/esm2015/lib/_services/interceptor.service.js +10 -3
  29. package/esm2015/lib/_services/recipe-details.service.js +22 -7
  30. package/esm2015/lib/_services/recipes.service.js +5 -5
  31. package/esm2015/lib/_services/store-locator.service.js +10 -3
  32. package/esm2015/lib/_services/store-out-of-stock.service.js +57 -0
  33. package/esm2015/lib/_services/user.service.js +3 -3
  34. package/esm2015/lib/_types/builded/mealz-interface.js +1 -1
  35. package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +3 -2
  36. package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +130 -122
  37. package/esm2015/lib/_web-components/basket-preview/basket-preview-product/basket-preview-product.component.js +44 -34
  38. package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +14 -7
  39. package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +2 -2
  40. package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +13 -13
  41. package/esm2015/lib/_web-components/no-supplier-onboarding/no-supplier-onboarding.component.js +8 -12
  42. package/esm2015/lib/_web-components/preferences/preferences-search/preferences-search.component.js +2 -2
  43. package/esm2015/lib/_web-components/preferences/preferences.component.js +28 -28
  44. package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +118 -97
  45. package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +21 -14
  46. package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +9 -8
  47. package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +10 -8
  48. package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +3 -3
  49. package/esm2015/lib/_web-components/recipe-catalog/catalog-toolbar/catalog-toolbar.component.js +14 -10
  50. package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +42 -37
  51. package/esm2015/lib/_web-components/recipe-details/last-order-modal/last-order-modal.component.js +2 -2
  52. package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +4 -3
  53. package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +16 -13
  54. package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +4 -3
  55. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +98 -103
  56. package/esm2015/lib/_web-components/recipe-details/store-locator-link/store-locator-link.component.js +8 -7
  57. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +7 -2
  58. package/esm2015/lib/environments/environment.js +2 -2
  59. package/esm2015/lib/environments/environment.prod.js +2 -2
  60. package/esm2015/lib/environments/version.js +2 -2
  61. package/esm2015/lib/ng-miam.module.js +4 -1
  62. package/fesm2015/ng-miam.js +882 -627
  63. package/fesm2015/ng-miam.js.map +1 -1
  64. package/lib/_components/components.module.d.ts +2 -1
  65. package/lib/_components/components.module.d.ts.map +1 -1
  66. package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts +7 -3
  67. package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts.map +1 -1
  68. package/lib/_components/product-card/product-card.component.d.ts +2 -0
  69. package/lib/_components/product-card/product-card.component.d.ts.map +1 -1
  70. package/lib/_models/basket-actions/basket-action.d.ts.map +1 -1
  71. package/lib/_services/basket-recipe-cleanup.service.d.ts +21 -0
  72. package/lib/_services/basket-recipe-cleanup.service.d.ts.map +1 -0
  73. package/lib/_services/basket-transfer.service.d.ts.map +1 -1
  74. package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +1 -1
  75. package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts.map +1 -1
  76. package/lib/_services/context.service.d.ts +3 -1
  77. package/lib/_services/context.service.d.ts.map +1 -1
  78. package/lib/_services/interceptor.service.d.ts +1 -0
  79. package/lib/_services/interceptor.service.d.ts.map +1 -1
  80. package/lib/_services/recipe-details.service.d.ts +8 -2
  81. package/lib/_services/recipe-details.service.d.ts.map +1 -1
  82. package/lib/_services/recipes.service.d.ts +2 -6
  83. package/lib/_services/recipes.service.d.ts.map +1 -1
  84. package/lib/_services/store-locator.service.d.ts +1 -0
  85. package/lib/_services/store-locator.service.d.ts.map +1 -1
  86. package/lib/_services/store-out-of-stock.service.d.ts +13 -0
  87. package/lib/_services/store-out-of-stock.service.d.ts.map +1 -0
  88. package/lib/_services/user.service.d.ts +2 -2
  89. package/lib/_services/user.service.d.ts.map +1 -1
  90. package/lib/_types/builded/mealz-interface.d.ts +4 -0
  91. package/lib/_types/builded/mealz-interface.d.ts.map +1 -1
  92. package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +1 -0
  93. package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts.map +1 -1
  94. package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +1 -0
  95. package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts.map +1 -1
  96. package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +1 -1
  97. package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts.map +1 -1
  98. package/lib/_web-components/recipe-details/recipe-details.component.d.ts +1 -1
  99. package/lib/_web-components/recipe-details/recipe-details.component.d.ts.map +1 -1
  100. package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts.map +1 -1
  101. package/lib/environments/version.d.ts +1 -1
  102. package/lib/ng-miam.module.d.ts.map +1 -1
  103. package/miam-style.css +1 -1
  104. package/package.json +1 -1
@@ -9,30 +9,30 @@ import * as i1 from "../../../_services";
9
9
  import * as i2 from "@angular/common";
10
10
  import * as i3 from "../../../_components/counter-input/counter-input.component";
11
11
  import * as i4 from "../../../_utils/pipes/capitalize-first-letter/capitalize-first-letter.pipe";
12
- function BasketPreviewProductComponent_div_0_div_15_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelementStart(0, "div", 19);
12
+ function BasketPreviewProductComponent_div_0_div_19_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementStart(0, "div", 20);
14
14
  i0.ɵɵelementStart(1, "span");
15
15
  i0.ɵɵtext(2, "Sponsoris\u00E9");
16
16
  i0.ɵɵelementEnd();
17
17
  i0.ɵɵelementEnd();
18
18
  } }
19
- function BasketPreviewProductComponent_div_0_button_16_Template(rf, ctx) { if (rf & 1) {
19
+ function BasketPreviewProductComponent_div_0_button_20_Template(rf, ctx) { if (rf & 1) {
20
20
  const _r6 = i0.ɵɵgetCurrentView();
21
- i0.ɵɵelementStart(0, "button", 20);
22
- i0.ɵɵlistener("click", function BasketPreviewProductComponent_div_0_button_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(2); return ctx_r5.replaceProduct(); });
21
+ i0.ɵɵelementStart(0, "button", 21);
22
+ i0.ɵɵlistener("click", function BasketPreviewProductComponent_div_0_button_20_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(2); return ctx_r5.replaceProduct(); });
23
23
  i0.ɵɵelementStart(1, "span");
24
- i0.ɵɵi18n(2, 21);
24
+ i0.ɵɵi18n(2, 22);
25
25
  i0.ɵɵelementEnd();
26
26
  i0.ɵɵelementEnd();
27
27
  } if (rf & 2) {
28
28
  const ctx_r2 = i0.ɵɵnextContext(2);
29
29
  i0.ɵɵproperty("disabled", ctx_r2.loading);
30
30
  } }
31
- function BasketPreviewProductComponent_div_0_div_18_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelement(0, "div", 22);
31
+ function BasketPreviewProductComponent_div_0_div_22_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelement(0, "div", 23);
33
33
  } }
34
- function BasketPreviewProductComponent_div_0_img_19_Template(rf, ctx) { if (rf & 1) {
35
- i0.ɵɵelement(0, "img", 23);
34
+ function BasketPreviewProductComponent_div_0_img_23_Template(rf, ctx) { if (rf & 1) {
35
+ i0.ɵɵelement(0, "img", 24);
36
36
  } }
37
37
  const _c2 = function (a0) { return { loading: a0 }; };
38
38
  function BasketPreviewProductComponent_div_0_Template(rf, ctx) { if (rf & 1) {
@@ -56,27 +56,33 @@ function BasketPreviewProductComponent_div_0_Template(rf, ctx) { if (rf & 1) {
56
56
  i0.ɵɵelementEnd();
57
57
  i0.ɵɵelementStart(11, "div", 9);
58
58
  i0.ɵɵelementStart(12, "div", 10);
59
- i0.ɵɵtext(13);
60
- i0.ɵɵpipe(14, "number");
59
+ i0.ɵɵpipe(13, "number");
60
+ i0.ɵɵelementStart(14, "span", 11);
61
+ i0.ɵɵtext(15);
62
+ i0.ɵɵpipe(16, "number");
61
63
  i0.ɵɵelementEnd();
64
+ i0.ɵɵelementStart(17, "span", 11);
65
+ i0.ɵɵtext(18);
62
66
  i0.ɵɵelementEnd();
63
- i0.ɵɵtemplate(15, BasketPreviewProductComponent_div_0_div_15_Template, 3, 0, "div", 11);
64
- i0.ɵɵtemplate(16, BasketPreviewProductComponent_div_0_button_16_Template, 3, 1, "button", 12);
65
67
  i0.ɵɵelementEnd();
66
- i0.ɵɵelementStart(17, "button", 13);
67
- i0.ɵɵlistener("click", function BasketPreviewProductComponent_div_0_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r8); const ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.removeProduct(); });
68
- i0.ɵɵtemplate(18, BasketPreviewProductComponent_div_0_div_18_Template, 1, 0, "div", 14);
69
- i0.ɵɵtemplate(19, BasketPreviewProductComponent_div_0_img_19_Template, 1, 0, "img", 15);
70
68
  i0.ɵɵelementEnd();
69
+ i0.ɵɵtemplate(19, BasketPreviewProductComponent_div_0_div_19_Template, 3, 0, "div", 12);
70
+ i0.ɵɵtemplate(20, BasketPreviewProductComponent_div_0_button_20_Template, 3, 1, "button", 13);
71
71
  i0.ɵɵelementEnd();
72
+ i0.ɵɵelementStart(21, "button", 14);
73
+ i0.ɵɵlistener("click", function BasketPreviewProductComponent_div_0_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r8); const ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.removeProduct(); });
74
+ i0.ɵɵtemplate(22, BasketPreviewProductComponent_div_0_div_22_Template, 1, 0, "div", 15);
75
+ i0.ɵɵtemplate(23, BasketPreviewProductComponent_div_0_img_23_Template, 1, 0, "img", 16);
72
76
  i0.ɵɵelementEnd();
73
- i0.ɵɵelementStart(20, "div", 16);
74
- i0.ɵɵelementStart(21, "span", 17);
75
- i0.ɵɵtext(22);
76
- i0.ɵɵpipe(23, "currency");
77
77
  i0.ɵɵelementEnd();
78
- i0.ɵɵelementStart(24, "ng-miam-counter-input", 18);
79
- i0.ɵɵlistener("valueChange", function BasketPreviewProductComponent_div_0_Template_ng_miam_counter_input_valueChange_24_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r10 = i0.ɵɵnextContext(); return ctx_r10.counterChanged($event); });
78
+ i0.ɵɵelementEnd();
79
+ i0.ɵɵelementStart(24, "div", 17);
80
+ i0.ɵɵelementStart(25, "span", 18);
81
+ i0.ɵɵtext(26);
82
+ i0.ɵɵpipe(27, "currency");
83
+ i0.ɵɵelementEnd();
84
+ i0.ɵɵelementStart(28, "ng-miam-counter-input", 19);
85
+ i0.ɵɵlistener("valueChange", function BasketPreviewProductComponent_div_0_Template_ng_miam_counter_input_valueChange_28_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r10 = i0.ɵɵnextContext(); return ctx_r10.counterChanged($event); });
80
86
  i0.ɵɵelementEnd();
81
87
  i0.ɵɵelementEnd();
82
88
  i0.ɵɵelementEnd();
@@ -84,23 +90,27 @@ function BasketPreviewProductComponent_div_0_Template(rf, ctx) { if (rf & 1) {
84
90
  const ctx_r0 = i0.ɵɵnextContext();
85
91
  i0.ɵɵpropertyInterpolate("id", ctx_r0.basketEntry.id);
86
92
  i0.ɵɵadvance(4);
87
- i0.ɵɵproperty("src", ctx_r0.basketEntry.selectedItem.attributes.image, i0.ɵɵsanitizeUrl);
93
+ i0.ɵɵproperty("alt", ctx_r0.basketEntry.selectedItem.attributes.name || "Image du produit")("src", ctx_r0.basketEntry.selectedItem.attributes.image, i0.ɵɵsanitizeUrl);
88
94
  i0.ɵɵadvance(5);
89
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(10, 14, ctx_r0.basketEntry.selectedItem.attributes.name));
90
- i0.ɵɵadvance(4);
91
- i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind2(14, 16, ctx_r0.basketEntry.selectedItem.capacityVolume, "1.0-2"), " ", ctx_r0.basketEntry.selectedItem.capacityUnit, " ");
92
- i0.ɵɵadvance(2);
95
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(10, 16, ctx_r0.basketEntry.selectedItem.attributes.name));
96
+ i0.ɵɵadvance(3);
97
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind2(13, 18, ctx_r0.basketEntry.selectedItem.capacityVolume, "1.0-2") + " " + ctx_r0.basketEntry.selectedItem.capacityUnit);
98
+ i0.ɵɵadvance(3);
99
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(16, 21, ctx_r0.basketEntry.selectedItem.capacityVolume, "1.0-2"));
100
+ i0.ɵɵadvance(3);
101
+ i0.ɵɵtextInterpolate(ctx_r0.basketEntry.selectedItem.capacityUnit);
102
+ i0.ɵɵadvance(1);
93
103
  i0.ɵɵproperty("ngIf", ctx_r0.basketEntry.selectedItem.attributes.promoted);
94
104
  i0.ɵɵadvance(1);
95
105
  i0.ɵɵproperty("ngIf", ctx_r0.basketEntry.recipesIds.length != 0 || ctx_r0.displayReplace);
96
106
  i0.ɵɵadvance(1);
97
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(22, _c2, ctx_r0.loading));
107
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(27, _c2, ctx_r0.loading));
98
108
  i0.ɵɵadvance(1);
99
109
  i0.ɵɵproperty("ngIf", ctx_r0.loading);
100
110
  i0.ɵɵadvance(1);
101
111
  i0.ɵɵproperty("ngIf", !ctx_r0.loading);
102
112
  i0.ɵɵadvance(3);
103
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(23, 19, ctx_r0.basketEntry.price, ctx_r0.basketEntry.selectedItem.attributes.currency), " ");
113
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(27, 24, ctx_r0.basketEntry.price, ctx_r0.basketEntry.selectedItem.attributes.currency), " ");
104
114
  i0.ɵɵadvance(2);
105
115
  i0.ɵɵproperty("value", ctx_r0.basketEntry.quantity)("minusLoading", ctx_r0.minusLoading)("disable", ctx_r0.loading);
106
116
  } }
@@ -199,8 +209,8 @@ BasketPreviewProductComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPrevi
199
209
  }
200
210
  else {
201
211
  i18n_0 = $localize `:␟8e4fa20cb8b77c41c980ba077b80bc8ea128239a␟4705093661060921903:Remplacer`;
202
- } return [["class", "miam-basket-preview-product", 3, "id", 4, "ngIf"], [1, "miam-basket-preview-product", 3, "id"], [1, "miam-basket-preview-product__infos-container"], [1, "miam-basket-preview-product__picture-container"], [1, "miam-basket-preview-product__picture"], ["alt", "product picture", 3, "src", "error"], [1, "miam-basket-preview-product__infos-and-actions"], [1, "miam-basket-preview-product__infos"], [1, "miam-basket-preview-product__title", "miam-ds-text", "weight-l", "size-s"], [1, "miam-product-card__badges"], [1, "miam-basket-preview-product__capacity", "miam-ds-badge"], ["class", "miam-basket-preview-product__sponsorised miam-ds-badge", 4, "ngIf"], ["class", "miam-basket-preview-product__replace-button miam-ds-button ghost", 3, "disabled", "click", 4, "ngIf"], [1, "miam-basket-preview-line__remove", "miam-ds-button", "ghost", 3, "ngClass", "click"], ["class", "miam-ds-loader", 4, "ngIf"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/trash.svg", "alt", "remove recipe", 4, "ngIf"], [1, "miam-basket-preview-product__price-and-action"], [1, "miam-basket-preview-product__price", "miam-ds-text", "size-l", "weight-xl"], ["minRange", "0", 3, "value", "minusLoading", "disable", "valueChange"], [1, "miam-basket-preview-product__sponsorised", "miam-ds-badge"], [1, "miam-basket-preview-product__replace-button", "miam-ds-button", "ghost", 3, "disabled", "click"], i18n_0, [1, "miam-ds-loader"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/trash.svg", "alt", "remove recipe"]]; }, template: function BasketPreviewProductComponent_Template(rf, ctx) { if (rf & 1) {
203
- i0.ɵɵtemplate(0, BasketPreviewProductComponent_div_0_Template, 25, 24, "div", 0);
212
+ } return [["class", "miam-basket-preview-product", 3, "id", 4, "ngIf"], [1, "miam-basket-preview-product", 3, "id"], [1, "miam-basket-preview-product__infos-container"], [1, "miam-basket-preview-product__picture-container"], [1, "miam-basket-preview-product__picture"], [3, "alt", "src", "error"], [1, "miam-basket-preview-product__infos-and-actions"], [1, "miam-basket-preview-product__infos"], [1, "miam-basket-preview-product__title", "miam-ds-text", "weight-l", "size-s"], [1, "miam-product-card__badges"], [1, "miam-basket-preview-product__capacity", "miam-ds-badge"], ["aria-hidden", "true"], ["class", "miam-basket-preview-product__sponsorised miam-ds-badge", 4, "ngIf"], ["class", "miam-basket-preview-product__replace-button miam-ds-button ghost", 3, "disabled", "click", 4, "ngIf"], ["aria-label", "Supprimer", 1, "miam-basket-preview-line__remove", "miam-ds-button", "ghost", 3, "ngClass", "click"], ["class", "miam-ds-loader", 4, "ngIf"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/trash.svg", "alt", "", "aria-hidden", "true", 4, "ngIf"], [1, "miam-basket-preview-product__price-and-action"], [1, "miam-basket-preview-product__price", "miam-ds-text", "size-l", "weight-xl"], ["minRange", "0", 3, "value", "minusLoading", "disable", "valueChange"], [1, "miam-basket-preview-product__sponsorised", "miam-ds-badge"], [1, "miam-basket-preview-product__replace-button", "miam-ds-button", "ghost", 3, "disabled", "click"], i18n_0, [1, "miam-ds-loader"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/trash.svg", "alt", "", "aria-hidden", "true"]]; }, template: function BasketPreviewProductComponent_Template(rf, ctx) { if (rf & 1) {
213
+ i0.ɵɵtemplate(0, BasketPreviewProductComponent_div_0_Template, 29, 29, "div", 0);
204
214
  } if (rf & 2) {
205
215
  i0.ɵɵproperty("ngIf", ctx.basketEntry.selectedItem);
206
216
  } }, directives: [i2.NgIf, i2.NgClass, i3.CounterInputComponent], pipes: [i4.CapitalizeFirstLetterPipe, i2.DecimalPipe, i2.CurrencyPipe], styles: [".miam-basket-preview-product{display:flex;padding:12px;flex-direction:column;align-items:flex-start;align-self:stretch;background:var(--miam-ds-color-background-primary,#fff)}.miam-basket-preview-product .miam-basket-preview-product__infos-container{display:flex;flex-direction:row;align-items:flex-start;width:100%}.miam-basket-preview-product .miam-basket-preview-product__infos-container .miam-basket-preview-product__picture-container{position:relative;margin-right:12px;margin-bottom:12px}.miam-basket-preview-product .miam-basket-preview-product__infos-container .miam-basket-preview-product__picture-container .miam-basket-preview-product__picture{height:100px;width:100px;border-radius:8px;cursor:pointer}.miam-basket-preview-product .miam-basket-preview-product__infos-container .miam-basket-preview-product__picture-container .miam-basket-preview-product__picture img{height:100%;width:100%;-o-object-fit:cover;object-fit:cover;border-radius:8px}.miam-basket-preview-product .miam-basket-preview-product__infos-container .miam-basket-preview-product__infos-and-actions{display:flex;align-items:flex-start;gap:8px;flex:1 0 0}.miam-basket-preview-product .miam-basket-preview-product__infos-container .miam-basket-preview-product__infos-and-actions .miam-basket-preview-product__infos{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;gap:4px}.miam-basket-preview-product .miam-basket-preview-product__infos-container .miam-basket-preview-product__infos-and-actions .miam-basket-preview-product__infos .miam-basket-preview-product__title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-product-clamp:2;align-self:stretch;overflow:hidden;color:var(--miam-ds-color-neutral-black,#02182b);text-overflow:ellipsis;cursor:pointer}.miam-basket-preview-product .miam-basket-preview-product__price-and-action{display:flex;flex-direction:row;justify-content:space-between;align-items:center;align-self:stretch}"], encapsulation: 2, changeDetection: 0 });
@@ -224,4 +234,4 @@ BasketPreviewProductComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPrevi
224
234
  }], countChanged: [{
225
235
  type: Output
226
236
  }] }); })();
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXByZXZpZXctcHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL2Jhc2tldC1wcmV2aWV3L2Jhc2tldC1wcmV2aWV3LXByb2R1Y3QvYmFza2V0LXByZXZpZXctcHJvZHVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL2Jhc2tldC1wcmV2aWV3L2Jhc2tldC1wcmV2aWV3LXByb2R1Y3QvYmFza2V0LXByZXZpZXctcHJvZHVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLFdBQVcsRUFDWixNQUFNLG9CQUFvQixDQUFDOzs7Ozs7O0lDVXBCLCtCQUdDO0lBQ0MsNEJBQU07SUFBQSwrQkFBVTtJQUFBLGlCQUFPO0lBQ3pCLGlCQUFNOzs7O0lBQ04sa0NBS0M7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QUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFOztZQUNyRSxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksT0FBQSxJQUFJLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLDBDQUFFLEVBQUUsTUFBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMxRyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsSUFBSSxVQUFVLElBQUksYUFBYSxJQUFJLFdBQVcsQ0FBQztZQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsSUFBSSxhQUFhLENBQUM7WUFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7MEdBdEdVLDZCQUE2QjtrRUFBN0IsNkJBQTZCOzs7OztpQkNhckIsVUFBQSwwRUFBUzs7UUEvQzlCLGdGQWlGTTs7UUFoRkgsbURBQThCOzt1RkRpQ3BCLDZCQUE2QjtjQVB6QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztnQkFDMUMsV0FBVyxFQUFFLHlDQUF5QztnQkFDdEQsU0FBUyxFQUFFLENBQUMseUNBQXlDLENBQUM7Z0JBQ3RELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDswVkFFVSxXQUFXO2tCQUFuQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNJLG9CQUFvQjtrQkFBN0IsTUFBTTtZQUNHLE9BQU87a0JBQWhCLE1BQU07WUFDRyxZQUFZO2tCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2tldEVudHJ5IH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscyc7XG5pbXBvcnQge1xuICBBbmFseXRpY3NTZXJ2aWNlLFxuICBCYXNrZXRzU2VydmljZSxcbiAgQ29udGV4dFNlcnZpY2UsXG4gIFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gIFByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2UsXG4gIFJlY2lwZURldGFpbHNTZXJ2aWNlLFxuICBSZWNpcGVzU2VydmljZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2tldC1wcmV2aWV3LXByb2R1Y3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXNrZXQtcHJldmlldy1wcm9kdWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhc2tldFByZXZpZXdQcm9kdWN0Q29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGJhc2tldEVudHJ5OiBCYXNrZXRFbnRyeTtcbiAgQElucHV0KCkgZGlzcGxheVJlcGxhY2UgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJlcGxhY2VCdXR0b25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNvdW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvdW50ZXJNaW51c0xvYWRpbmcgPSBmYWxzZTtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBtaW51c0xvYWRpbmcgPSBmYWxzZTtcbiAgaXNTcG9uc29yZWQgPSBmYWxzZTtcbiAgcHJpY2UgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyByZWNpcGVEZXRhaWxzU2VydmljZTogUmVjaXBlRGV0YWlsc1NlcnZpY2UsXG4gICAgcHVibGljIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9kdWN0UmVwbGFjZW1lbnRTZXJ2aWNlOiBQcm9kdWN0UmVwbGFjZW1lbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnNjcm9sbEJhY2tUb1Byb2R1Y3RDYXJkKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJlcGxhY2VQcm9kdWN0KCk6IHZvaWQge1xuICAgIHRoaXMucHJvZHVjdFJlcGxhY2VtZW50U2VydmljZS5zY3JvbGxCYWNrVG9CYXNrZXRFbnRyeUlkID0gdGhpcy5iYXNrZXRFbnRyeS5pZDtcbiAgICB0aGlzLnJlcGxhY2VCdXR0b25DbGlja2VkLmVtaXQoKTtcbiAgICB0aGlzLnByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2UucmVwbGFjZU1vZGFsT3BlbiQucGlwZShcbiAgICAgIHNraXBXaGlsZShpc09wZW4gPT4gaXNPcGVuKSxcbiAgICAgIHRha2UoMSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxCYWNrVG9Qcm9kdWN0Q2FyZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9kdWN0UmVwbGFjZW1lbnRTZXJ2aWNlLnNjcm9sbEJhY2tUb0Jhc2tldEVudHJ5SWQgPT09IHRoaXMuYmFza2V0RW50cnkuaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50SWQgPSAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgRWxlbWVudCkuZmlyc3RFbGVtZW50Q2hpbGQ/LmlkO1xuICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSkge1xuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgYmVoYXZpb3I6IHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UuaGFzUmVwbGFjZWQgPyAnc21vb3RoJyA6ICdhdXRvJyxcbiAgICAgICAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGlubGluZTogJ2NlbnRlcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgdGhpcy5wcm9kdWN0UmVwbGFjZW1lbnRTZXJ2aWNlLnNjcm9sbEJhY2tUb0Jhc2tldEVudHJ5SWQgPSBudWxsO1xuICAgICAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UuaGFzUmVwbGFjZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgY291bnRlckNoYW5nZWQobmV3Q291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChuZXdDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy5yZW1vdmVQcm9kdWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuY2hhbmdlUHJvZHVjdFF1YW50aXR5KHRoaXMuYmFza2V0RW50cnksIG5ld0NvdW50LCB0aGlzLmV2ZW50VHJhY2UpO1xuICAgICAgdGhpcy5jb3VudENoYW5nZWQuZW1pdChuZXdDb3VudCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlUHJvZHVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbW92ZVByb2R1Y3QodGhpcy5iYXNrZXRFbnRyeSwgdGhpcy5ldmVudFRyYWNlKTtcbiAgICB0aGlzLnJlbW92ZWQuZW1pdCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCByZXF1ZXN0cyA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5lbnRyeUlzQmVpbmdVcGRhdGVkKHRoaXMuYmFza2V0RW50cnkuaWQpLFxuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5lbnRyeUlzQmVpbmdSZW1vdmVkKHRoaXMuYmFza2V0RW50cnkuaWQpLFxuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5lbnRyeVdpbGxCZVJlbW92ZWQodGhpcy5iYXNrZXRFbnRyeS5pZCksXG4gICAgICB0aGlzLnByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2UucmVwbGFjZU1vZGFsT3BlbiRcbiAgICBdKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgcmVxdWVzdHMuc3Vic2NyaWJlKChbaXNVcGRhdGluZywgaXNSZW1vdmluZywgd2lsbEJlUmVtb3ZlZCwgaXNPcGVuXSkgPT4ge1xuICAgICAgICBjb25zdCBpc1JlcGxhY2luZyA9IGlzT3BlbiAmJiB0aGlzLnByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2UucHJvZHVjdFRvUmVwbGFjZT8uaWQgPT09IHRoaXMuYmFza2V0RW50cnkuaWQ7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGlzVXBkYXRpbmcgfHwgaXNSZW1vdmluZyB8fCB3aWxsQmVSZW1vdmVkIHx8IGlzUmVwbGFjaW5nO1xuICAgICAgICB0aGlzLm1pbnVzTG9hZGluZyA9IGlzUmVtb3ZpbmcgfHwgd2lsbEJlUmVtb3ZlZDtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtXCJcbiAgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3RcIlxuICBpZD1cInt7IGJhc2tldEVudHJ5LmlkIH19XCJcbj5cbiAgPCEtLSBJTkZPUyBDT05UQUlORVIgLS0+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3RfX2luZm9zLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3RfX3BpY3R1cmUtY29udGFpbmVyXCI+XG4gICAgICA8IS0tIFBJQ1RVUkUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0X19waWN0dXJlXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBhbHQ9XCJwcm9kdWN0IHBpY3R1cmVcIlxuICAgICAgICAgIFtzcmNdPVwiYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMuaW1hZ2VcIlxuICAgICAgICAgIChlcnJvcik9XCIkZXZlbnQudGFyZ2V0WydzcmMnXSA9IGNvbnRleHRTZXJ2aWNlLmRlZmF1bHRJbmdyZWRpZW50UGljdHVyZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0X19pbmZvcy1hbmQtYWN0aW9uc1wiPlxuICAgICAgPCEtLSBJTkZPUyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3RfX2luZm9zXCI+XG4gICAgICAgIDwhLS0gVElUTEUgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctcHJvZHVjdF9fdGl0bGUgbWlhbS1kcy10ZXh0IHdlaWdodC1sIHNpemUtc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMubmFtZSB8IGNhcGl0YWxpemVGaXJzdExldHRlclxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcHJvZHVjdC1jYXJkX19iYWRnZXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0X19jYXBhY2l0eSBtaWFtLWRzLWJhZGdlXCI+XG4gICAgICAgICAgICB7eyBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uY2FwYWNpdHlWb2x1bWUgfCBudW1iZXIgOiBcIjEuMC0yXCIgfX1cbiAgICAgICAgICAgIHt7IGJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5jYXBhY2l0eVVuaXQgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gU1BPTlNPUklTRUQgQkFER0UgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5hdHRyaWJ1dGVzLnByb21vdGVkXCJcbiAgICAgICAgICBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctcHJvZHVjdF9fc3BvbnNvcmlzZWQgbWlhbS1kcy1iYWRnZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3Bhbj5TcG9uc29yaXPDqTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImJhc2tldEVudHJ5LnJlY2lwZXNJZHMubGVuZ3RoICE9IDAgfHwgZGlzcGxheVJlcGxhY2VcIlxuICAgICAgICAgIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0X19yZXBsYWNlLWJ1dHRvbiBtaWFtLWRzLWJ1dHRvbiBnaG9zdFwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlcGxhY2VQcm9kdWN0KClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGkxOG4+UmVtcGxhY2VyPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBSRU1PVkUgLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1saW5lX19yZW1vdmUgbWlhbS1kcy1idXR0b24gZ2hvc3RcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGxvYWRpbmc6IGxvYWRpbmcgfVwiXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVQcm9kdWN0KClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibWlhbS1kcy1sb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvdHJhc2guc3ZnXCJcbiAgICAgICAgICBhbHQ9XCJyZW1vdmUgcmVjaXBlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBQUklDRSBBTkQgQUNUSU9OIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0X19wcmljZS1hbmQtYWN0aW9uXCI+XG4gICAgPCEtLSBQUklDRSAtLT5cbiAgICA8c3BhbiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctcHJvZHVjdF9fcHJpY2UgbWlhbS1kcy10ZXh0IHNpemUtbCB3ZWlnaHQteGxcIj5cbiAgICAgIHt7IGJhc2tldEVudHJ5LnByaWNlIHwgY3VycmVuY3k6IGJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5hdHRyaWJ1dGVzLmN1cnJlbmN5IH19XG4gICAgPC9zcGFuPlxuICAgIDwhLS0gQ1RBIC0tPlxuICAgIDxuZy1taWFtLWNvdW50ZXItaW5wdXRcbiAgICAgIG1pblJhbmdlPVwiMFwiXG4gICAgICBbdmFsdWVdPVwiYmFza2V0RW50cnkucXVhbnRpdHlcIlxuICAgICAgW21pbnVzTG9hZGluZ109XCJtaW51c0xvYWRpbmdcIlxuICAgICAgW2Rpc2FibGVdPVwibG9hZGluZ1wiXG4gICAgICAodmFsdWVDaGFuZ2UpPVwiY291bnRlckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbmctbWlhbS1jb3VudGVyLWlucHV0PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXByZXZpZXctcHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL2Jhc2tldC1wcmV2aWV3L2Jhc2tldC1wcmV2aWV3LXByb2R1Y3QvYmFza2V0LXByZXZpZXctcHJvZHVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL2Jhc2tldC1wcmV2aWV3L2Jhc2tldC1wcmV2aWV3LXByb2R1Y3QvYmFza2V0LXByZXZpZXctcHJvZHVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLFdBQVcsRUFDWixNQUFNLG9CQUFvQixDQUFDOzs7Ozs7O0lDVXBCLCtCQUdDO0lBQ0MsNEJBQU07SUFBQSwrQkFBVTtJQUFBLGlCQUFPO0lBQ3pCLGlCQUFNOzs7O0lBQ04sa0NBS0M7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bmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV2ZW50VHJhY2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2NvbXBvbmVudHMvYWJzdHJhY3RzL2V2ZW50LXRyYWNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFza2V0RW50cnkgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc1NlcnZpY2UsXG4gIEJhc2tldHNTZXJ2aWNlLFxuICBDb250ZXh0U2VydmljZSxcbiAgUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgUHJvZHVjdFJlcGxhY2VtZW50U2VydmljZSxcbiAgUmVjaXBlRGV0YWlsc1NlcnZpY2UsXG4gIFJlY2lwZXNTZXJ2aWNlLFxuICBVc2VyU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFza2V0LXByZXZpZXctcHJvZHVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhc2tldC1wcmV2aWV3LXByb2R1Y3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFza2V0UHJldmlld1Byb2R1Y3RDb21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgYmFza2V0RW50cnk6IEJhc2tldEVudHJ5O1xuICBASW5wdXQoKSBkaXNwbGF5UmVwbGFjZSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcmVwbGFjZUJ1dHRvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY291bnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY291bnRlck1pbnVzTG9hZGluZyA9IGZhbHNlO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIG1pbnVzTG9hZGluZyA9IGZhbHNlO1xuICBpc1Nwb25zb3JlZCA9IGZhbHNlO1xuICBwcmljZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlY2lwZURldGFpbHNTZXJ2aWNlOiBSZWNpcGVEZXRhaWxzU2VydmljZSxcbiAgICBwdWJsaWMgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIHByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2U6IFByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2UsXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZVxuICApIHtcbiAgICBzdXBlcihhbmFseXRpY3NTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdExpc3RlbmVycygpO1xuICAgIHRoaXMuc2Nyb2xsQmFja1RvUHJvZHVjdENhcmQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmVwbGFjZVByb2R1Y3QoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9kdWN0UmVwbGFjZW1lbnRTZXJ2aWNlLnNjcm9sbEJhY2tUb0Jhc2tldEVudHJ5SWQgPSB0aGlzLmJhc2tldEVudHJ5LmlkO1xuICAgIHRoaXMucmVwbGFjZUJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xuICAgIHRoaXMucHJvZHVjdFJlcGxhY2VtZW50U2VydmljZS5yZXBsYWNlTW9kYWxPcGVuJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKGlzT3BlbiA9PiBpc09wZW4pLFxuICAgICAgdGFrZSgxKVxuICAgICkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbEJhY2tUb1Byb2R1Y3RDYXJkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2Uuc2Nyb2xsQmFja1RvQmFza2V0RW50cnlJZCA9PT0gdGhpcy5iYXNrZXRFbnRyeS5pZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9ICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50KS5maXJzdEVsZW1lbnRDaGlsZD8uaWQ7XG4gICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKSB7XG4gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKS5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICBiZWhhdmlvcjogdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5oYXNSZXBsYWNlZCA/ICdzbW9vdGgnIDogJ2F1dG8nLFxuICAgICAgICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgICAgICAgICAgaW5saW5lOiAnY2VudGVyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLnByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2Uuc2Nyb2xsQmFja1RvQmFza2V0RW50cnlJZCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5oYXNSZXBsYWNlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBjb3VudGVyQ2hhbmdlZChuZXdDb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKG5ld0NvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnJlbW92ZVByb2R1Y3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5jaGFuZ2VQcm9kdWN0UXVhbnRpdHkodGhpcy5iYXNrZXRFbnRyeSwgbmV3Q291bnQsIHRoaXMuZXZlbnRUcmFjZSk7XG4gICAgICB0aGlzLmNvdW50Q2hhbmdlZC5lbWl0KG5ld0NvdW50KTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVQcm9kdWN0KCk6IHZvaWQge1xuICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVtb3ZlUHJvZHVjdCh0aGlzLmJhc2tldEVudHJ5LCB0aGlzLmV2ZW50VHJhY2UpO1xuICAgIHRoaXMucmVtb3ZlZC5lbWl0KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVlc3RzID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmVudHJ5SXNCZWluZ1VwZGF0ZWQodGhpcy5iYXNrZXRFbnRyeS5pZCksXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmVudHJ5SXNCZWluZ1JlbW92ZWQodGhpcy5iYXNrZXRFbnRyeS5pZCksXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmVudHJ5V2lsbEJlUmVtb3ZlZCh0aGlzLmJhc2tldEVudHJ5LmlkKSxcbiAgICAgIHRoaXMucHJvZHVjdFJlcGxhY2VtZW50U2VydmljZS5yZXBsYWNlTW9kYWxPcGVuJFxuICAgIF0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICByZXF1ZXN0cy5zdWJzY3JpYmUoKFtpc1VwZGF0aW5nLCBpc1JlbW92aW5nLCB3aWxsQmVSZW1vdmVkLCBpc09wZW5dKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzUmVwbGFjaW5nID0gaXNPcGVuICYmIHRoaXMucHJvZHVjdFJlcGxhY2VtZW50U2VydmljZS5wcm9kdWN0VG9SZXBsYWNlPy5pZCA9PT0gdGhpcy5iYXNrZXRFbnRyeS5pZDtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gaXNVcGRhdGluZyB8fCBpc1JlbW92aW5nIHx8IHdpbGxCZVJlbW92ZWQgfHwgaXNSZXBsYWNpbmc7XG4gICAgICAgIHRoaXMubWludXNMb2FkaW5nID0gaXNSZW1vdmluZyB8fCB3aWxsQmVSZW1vdmVkO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW1cIlxuICBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctcHJvZHVjdFwiXG4gIGlkPVwie3sgYmFza2V0RW50cnkuaWQgfX1cIlxuPlxuICA8IS0tIElORk9TIENPTlRBSU5FUiAtLT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctcHJvZHVjdF9faW5mb3MtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctcHJvZHVjdF9fcGljdHVyZS1jb250YWluZXJcIj5cbiAgICAgIDwhLS0gUElDVFVSRSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3RfX3BpY3R1cmVcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFthbHRdPVwiYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMubmFtZSB8fCAnSW1hZ2UgZHUgcHJvZHVpdCdcIlxuICAgICAgICAgIFtzcmNdPVwiYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMuaW1hZ2VcIlxuICAgICAgICAgIChlcnJvcik9XCIkZXZlbnQudGFyZ2V0WydzcmMnXSA9IGNvbnRleHRTZXJ2aWNlLmRlZmF1bHRJbmdyZWRpZW50UGljdHVyZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0X19pbmZvcy1hbmQtYWN0aW9uc1wiPlxuICAgICAgPCEtLSBJTkZPUyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3RfX2luZm9zXCI+XG4gICAgICAgIDwhLS0gVElUTEUgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctcHJvZHVjdF9fdGl0bGUgbWlhbS1kcy10ZXh0IHdlaWdodC1sIHNpemUtc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMubmFtZSB8IGNhcGl0YWxpemVGaXJzdExldHRlclxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcHJvZHVjdC1jYXJkX19iYWRnZXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0X19jYXBhY2l0eSBtaWFtLWRzLWJhZGdlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCIoYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmNhcGFjaXR5Vm9sdW1lIHwgbnVtYmVyIDogJzEuMC0yJykgKyAnICcgKyBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uY2FwYWNpdHlVbml0XCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uY2FwYWNpdHlWb2x1bWUgfCBudW1iZXIgOiBcIjEuMC0yXCIgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uY2FwYWNpdHlVbml0IH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBTUE9OU09SSVNFRCBCQURHRSAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMucHJvbW90ZWRcIlxuICAgICAgICAgIGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1wcm9kdWN0X19zcG9uc29yaXNlZCBtaWFtLWRzLWJhZGdlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPlNwb25zb3Jpc8OpPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiYmFza2V0RW50cnkucmVjaXBlc0lkcy5sZW5ndGggIT0gMCB8fCBkaXNwbGF5UmVwbGFjZVwiXG4gICAgICAgICAgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3RfX3JlcGxhY2UtYnV0dG9uIG1pYW0tZHMtYnV0dG9uIGdob3N0XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVwbGFjZVByb2R1Y3QoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gaTE4bj5SZW1wbGFjZXI8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFJFTU9WRSAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWxpbmVfX3JlbW92ZSBtaWFtLWRzLWJ1dHRvbiBnaG9zdFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgbG9hZGluZzogbG9hZGluZyB9XCJcbiAgICAgICAgKGNsaWNrKT1cInJlbW92ZVByb2R1Y3QoKVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJTdXBwcmltZXJcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibWlhbS1kcy1sb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvdHJhc2guc3ZnXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gUFJJQ0UgQU5EIEFDVElPTiAtLT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctcHJvZHVjdF9fcHJpY2UtYW5kLWFjdGlvblwiPlxuICAgIDwhLS0gUFJJQ0UgLS0+XG4gICAgPHNwYW4gY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LXByb2R1Y3RfX3ByaWNlIG1pYW0tZHMtdGV4dCBzaXplLWwgd2VpZ2h0LXhsXCI+XG4gICAgICB7eyBiYXNrZXRFbnRyeS5wcmljZSB8IGN1cnJlbmN5OiBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uYXR0cmlidXRlcy5jdXJyZW5jeSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8IS0tIENUQSAtLT5cbiAgICA8bmctbWlhbS1jb3VudGVyLWlucHV0XG4gICAgICBtaW5SYW5nZT1cIjBcIlxuICAgICAgW3ZhbHVlXT1cImJhc2tldEVudHJ5LnF1YW50aXR5XCJcbiAgICAgIFttaW51c0xvYWRpbmddPVwibWludXNMb2FkaW5nXCJcbiAgICAgIFtkaXNhYmxlXT1cImxvYWRpbmdcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cImNvdW50ZXJDaGFuZ2VkKCRldmVudClcIlxuICAgID5cbiAgICA8L25nLW1pYW0tY291bnRlci1pbnB1dD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -164,11 +164,11 @@ function ReplaceItemComponent_div_14_Template(rf, ctx) { if (rf & 1) {
164
164
  const i_r17 = ctx.index;
165
165
  const _r19 = i0.ɵɵreference(20);
166
166
  const ctx_r6 = i0.ɵɵnextContext();
167
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(19, _c14, (ctx_r6.basketEntry.selectedItem == null ? null : ctx_r6.basketEntry.selectedItem.id) === itemWithPrice_r16.item.id && !ctx_r6.ignoreSelected && i_r17 === 0));
167
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(20, _c14, ctx_r6.isProductDisabled(itemWithPrice_r16.item.id, i_r17)));
168
168
  i0.ɵɵadvance(1);
169
169
  i0.ɵɵproperty("priceData", itemWithPrice_r16.price);
170
170
  i0.ɵɵadvance(3);
171
- i0.ɵɵproperty("src", itemWithPrice_r16.item.attributes.image, i0.ɵɵsanitizeUrl);
171
+ i0.ɵɵproperty("alt", itemWithPrice_r16.item.attributes.name || "Image du produit")("src", itemWithPrice_r16.item.attributes.image, i0.ɵɵsanitizeUrl);
172
172
  i0.ɵɵadvance(4);
173
173
  i0.ɵɵtextInterpolate(itemWithPrice_r16.item.attributes.brand);
174
174
  i0.ɵɵadvance(3);
@@ -176,9 +176,9 @@ function ReplaceItemComponent_div_14_Template(rf, ctx) { if (rf & 1) {
176
176
  i0.ɵɵadvance(1);
177
177
  i0.ɵɵproperty("isSponsored", itemWithPrice_r16.item.attributes.sponsored)("item", itemWithPrice_r16.item)("price", itemWithPrice_r16.price);
178
178
  i0.ɵɵadvance(2);
179
- i0.ɵɵproperty("oldPrice", i0.ɵɵpipeBind2(15, 13, ctx_r6.priceService.getOldPrice(itemWithPrice_r16.price), itemWithPrice_r16.item.attributes.currency))("price", i0.ɵɵpipeBind2(16, 16, ctx_r6.priceService.getCurrentPrice(itemWithPrice_r16.price), itemWithPrice_r16.item.attributes.currency));
179
+ i0.ɵɵproperty("oldPrice", i0.ɵɵpipeBind2(15, 14, ctx_r6.priceService.getOldPrice(itemWithPrice_r16.price), itemWithPrice_r16.item.attributes.currency))("price", i0.ɵɵpipeBind2(16, 17, ctx_r6.priceService.getCurrentPrice(itemWithPrice_r16.price), itemWithPrice_r16.item.attributes.currency));
180
180
  i0.ɵɵadvance(3);
181
- i0.ɵɵproperty("disabled", (ctx_r6.basketEntry.selectedItem == null ? null : ctx_r6.basketEntry.selectedItem.id) === itemWithPrice_r16.item.id && !ctx_r6.ignoreSelected && i_r17 === 0);
181
+ i0.ɵɵproperty("disabled", ctx_r6.isProductDisabled(itemWithPrice_r16.item.id, i_r17));
182
182
  i0.ɵɵadvance(1);
183
183
  i0.ɵɵproperty("ngIf", ctx_r6.replaceItemLoading && ctx_r6.replaceItemLoading === itemWithPrice_r16.item)("ngIfElse", _r19);
184
184
  } }
@@ -382,6 +382,12 @@ export class ReplaceItemComponent extends EventTracerComponent {
382
382
  this.subscriptions.push(this.recipeDetailsService.canAddProductToBasket(this.getAddIngredientMethod(), this.eventTrace).pipe(filter(passed => passed), switchMap(() => this.basketsService.basketEntryFromIngredient(this.ingredient.id, +this.recipe.modifiedGuests, true, item.id))).subscribe((newEntry) => this.handleAddToBasketResponse(newEntry)));
383
383
  this.cdr.detectChanges();
384
384
  }
385
+ isProductDisabled(id, index) {
386
+ var _a;
387
+ return ((!this.ignoreSelected && ((_a = this.basketEntry.selectedItem) === null || _a === void 0 ? void 0 : _a.id) === id)
388
+ || this.basketEntry.status === 'out_of_stock')
389
+ && index === 0;
390
+ }
385
391
  getAddIngredientMethod() {
386
392
  return {
387
393
  method: 'addIngredientToBasket',
@@ -502,6 +508,7 @@ export class ReplaceItemComponent extends EventTracerComponent {
502
508
  this.replaceItemLoading = undefined;
503
509
  this.basketEntry.relationships['selected-item'].data = this.previousItem;
504
510
  this.cdr.detectChanges();
511
+ this.onClose();
505
512
  }
506
513
  }
507
514
  ReplaceItemComponent.ɵfac = function ReplaceItemComponent_Factory(t) { return new (t || ReplaceItemComponent)(i0.ɵɵdirectiveInject(i1.AnalyticsService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.BasketsService), i0.ɵɵdirectiveInject(i1.BasketEntriesService), i0.ɵɵdirectiveInject(i1.ItemsService), i0.ɵɵdirectiveInject(i2.IgnoredIngredientsService), i0.ɵɵdirectiveInject(i1.RecipeDetailsService), i0.ɵɵdirectiveInject(i1.BasketsSynchronizerService), i0.ɵɵdirectiveInject(i1.ProductReplacementService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i1.PriceService)); };
@@ -573,7 +580,7 @@ ReplaceItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ReplaceItemComponent
573
580
  }
574
581
  else {
575
582
  i18n_21 = $localize `:␟796be7ef70e6714417dffe1ff46622824ce81a03␟3094902783246996897:Trouver une liste de produit en effectuant votre recherche`;
576
- } return [[1, "miam-replace-item__header", "miam-ds-text", "weight-xxl"], [1, "miam-ds-button", "ghost", "square", 3, "click"], ["width", "24", "height", "24", "primaryColor", "var(--miam-ds-color-primary-500)", 3, "iconName"], [4, "ngIf", "ngIfElse"], ["addProduct", ""], [1, "miam-replace-item__top-container"], [1, "miam-replace-item__searchbar"], ["width", "20", "height", "20", 3, "iconName"], ["type", "text", "placeholder", i18n_0, "class", "miam-replace-item__searchbar__input miam-ds-text size-m weight-l", 3, "ngModel", "ngModelChange", 4, "ngIf"], ["type", "text", "placeholder", i18n_2, "class", "miam-replace-item__searchbar__input miam-ds-text size-m weight-l", 3, "ngModel", "ngModelChange", 4, "ngIf"], [1, "miam-ds-loader"], ["class", "miam-replace-item__product-banner", 4, "ngIf"], [1, "miam-replace-item__product-list"], ["class", "miam-replace-item__product-item", 3, "ngClass", 4, "ngFor", "ngForOf"], [4, "ngIf"], i18n_4, i18n_6, ["type", "text", "placeholder", i18n_0, 1, "miam-replace-item__searchbar__input", "miam-ds-text", "size-m", "weight-l", 3, "ngModel", "ngModelChange"], ["type", "text", "placeholder", i18n_2, 1, "miam-replace-item__searchbar__input", "miam-ds-text", "size-m", "weight-l", 3, "ngModel", "ngModelChange"], [1, "miam-replace-item__product-banner"], [1, "miam-replace-item__banner-product-name", "miam-ds-text", "size-s"], [1, "miam-replace-item__banner-quantity", "miam-ds-text", "weight-xxl"], [1, "miam-replace-item__product-item", 3, "ngClass"], [1, "miam-replace-item__promotions", 3, "priceData"], [1, "miam-replace-item__card-upper-section"], [1, "miam-replace-item__product-image-container"], ["alt", "product to replace", 1, "miam-replace-item__product-image", 3, "src", "error"], [1, "miam-replace-item__product-info"], [1, "miam-replace-item__product-brand", "miam-ds-text", "size-xs", "weight-xl"], [1, "miam-replace-item__product-brand-text"], [1, "miam-replace-item__product-name", "miam-ds-text", "size-xs"], [1, "miam-replace-item__product-name-text"], [3, "isSponsored", "item", "price"], [1, "miam-replace-item__card-lower-section"], [1, "miam-replace-item__product-price", "miam-ds-text", "size-m", "weight-xxl", 3, "oldPrice", "price"], [1, "miam-replace-item__cta", "miam-ds-button", "small", "primary", 3, "disabled", "click"], ["class", "miam-ds-loader", 4, "ngIf", "ngIfElse"], ["defaultSelectButton", ""], ["withSupplier", ""], i18n_8, i18n_10, i18n_12, [1, "miam-replace-item__error"], [1, "miam-replace-item__error-image-container", "small-img"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/product-issue.png", "alt", "issue with product", 1, "miam-replace-item__error-image"], [1, "miam-replace-item__issue-entry-name"], [1, "miam-replace-item__issue-title", "miam-replace-item__issue-title__no-substitution"], i18n_15, [1, "miam-replace-item__error-image-container"], [1, "miam-replace-item__issue-search-string"], [1, "miam-replace-item__issue-title", "miam-replace-item__issue-title__not-found"], i18n_17, [1, "miam-replace-item__issue-description", "miam-ds-text", "weight-xxl"], i18n_19, [1, "miam-replace-item__add-product-default"], [1, "miam-replace-item__add-product-image-container"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Search.svg", "alt", "search icon", 1, "miam-replace-item__add-product-image"], [1, "miam-replace-item__add-product-title"], i18n_21]; }, template: function ReplaceItemComponent_Template(rf, ctx) { if (rf & 1) {
583
+ } return [[1, "miam-replace-item__header", "miam-ds-text", "weight-xxl"], ["aria-label", "Fermer", 1, "miam-ds-button", "ghost", "square", 3, "click"], ["width", "24", "height", "24", "primaryColor", "var(--miam-ds-color-primary-500)", 3, "iconName"], [4, "ngIf", "ngIfElse"], ["addProduct", ""], [1, "miam-replace-item__top-container"], [1, "miam-replace-item__searchbar"], ["width", "20", "height", "20", "aria-hidden", "true", 3, "iconName"], ["type", "text", "placeholder", i18n_0, "class", "miam-replace-item__searchbar__input miam-ds-text size-m weight-l", "aria-label", "Rechercher un produit de substitution", 3, "ngModel", "ngModelChange", 4, "ngIf"], ["type", "text", "placeholder", i18n_2, "class", "miam-replace-item__searchbar__input miam-ds-text size-m weight-l", "aria-label", "Je cherche un produit", 3, "ngModel", "ngModelChange", 4, "ngIf"], [1, "miam-ds-loader"], ["class", "miam-replace-item__product-banner", 4, "ngIf"], [1, "miam-replace-item__product-list"], ["class", "miam-replace-item__product-item", 3, "ngClass", 4, "ngFor", "ngForOf"], [4, "ngIf"], i18n_4, i18n_6, ["type", "text", "placeholder", i18n_0, "aria-label", "Rechercher un produit de substitution", 1, "miam-replace-item__searchbar__input", "miam-ds-text", "size-m", "weight-l", 3, "ngModel", "ngModelChange"], ["type", "text", "placeholder", i18n_2, "aria-label", "Je cherche un produit", 1, "miam-replace-item__searchbar__input", "miam-ds-text", "size-m", "weight-l", 3, "ngModel", "ngModelChange"], [1, "miam-replace-item__product-banner"], [1, "miam-replace-item__banner-product-name", "miam-ds-text", "size-s"], [1, "miam-replace-item__banner-quantity", "miam-ds-text", "weight-xxl"], [1, "miam-replace-item__product-item", 3, "ngClass"], [1, "miam-replace-item__promotions", 3, "priceData"], [1, "miam-replace-item__card-upper-section"], [1, "miam-replace-item__product-image-container"], [1, "miam-replace-item__product-image", 3, "alt", "src", "error"], [1, "miam-replace-item__product-info"], [1, "miam-replace-item__product-brand", "miam-ds-text", "size-xs", "weight-xl"], [1, "miam-replace-item__product-brand-text"], [1, "miam-replace-item__product-name", "miam-ds-text", "size-xs"], [1, "miam-replace-item__product-name-text"], [3, "isSponsored", "item", "price"], [1, "miam-replace-item__card-lower-section"], [1, "miam-replace-item__product-price", "miam-ds-text", "size-m", "weight-xxl", 3, "oldPrice", "price"], [1, "miam-replace-item__cta", "miam-ds-button", "small", "primary", 3, "disabled", "click"], ["class", "miam-ds-loader", 4, "ngIf", "ngIfElse"], ["defaultSelectButton", ""], ["withSupplier", ""], i18n_8, i18n_10, i18n_12, [1, "miam-replace-item__error"], [1, "miam-replace-item__error-image-container", "small-img"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/product-issue.png", "alt", "Probl\u00E8me de produit", 1, "miam-replace-item__error-image"], [1, "miam-replace-item__issue-entry-name"], [1, "miam-replace-item__issue-title", "miam-replace-item__issue-title__no-substitution"], i18n_15, [1, "miam-replace-item__error-image-container"], [1, "miam-replace-item__issue-search-string"], [1, "miam-replace-item__issue-title", "miam-replace-item__issue-title__not-found"], i18n_17, [1, "miam-replace-item__issue-description", "miam-ds-text", "weight-xxl"], i18n_19, [1, "miam-replace-item__add-product-default"], [1, "miam-replace-item__add-product-image-container"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Search.svg", "alt", "", "aria-hidden", "true", 1, "miam-replace-item__add-product-image"], [1, "miam-replace-item__add-product-title"], i18n_21]; }, template: function ReplaceItemComponent_Template(rf, ctx) { if (rf & 1) {
577
584
  i0.ɵɵelementStart(0, "div", 0);
578
585
  i0.ɵɵelementStart(1, "button", 1);
579
586
  i0.ɵɵlistener("click", function ReplaceItemComponent_Template_button_click_1_listener() { return ctx.onClose(); });
@@ -592,7 +599,7 @@ ReplaceItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ReplaceItemComponent
592
599
  i0.ɵɵtemplate(12, ReplaceItemComponent_div_12_Template, 7, 5, "div", 11);
593
600
  i0.ɵɵelementEnd();
594
601
  i0.ɵɵelementStart(13, "div", 12);
595
- i0.ɵɵtemplate(14, ReplaceItemComponent_div_14_Template, 21, 21, "div", 13);
602
+ i0.ɵɵtemplate(14, ReplaceItemComponent_div_14_Template, 21, 22, "div", 13);
596
603
  i0.ɵɵtemplate(15, ReplaceItemComponent_ng_container_15_Template, 9, 1, "ng-container", 14);
597
604
  i0.ɵɵtemplate(16, ReplaceItemComponent_ng_container_16_Template, 12, 1, "ng-container", 14);
598
605
  i0.ɵɵtemplate(17, ReplaceItemComponent_ng_container_17_Template, 6, 0, "ng-container", 14);
@@ -678,4 +685,4 @@ ReplaceItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ReplaceItemComponent
678
685
  type: HostBinding,
679
686
  args: ['@slide']
680
687
  }] }); })();
681
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fd2ViLWNvbXBvbmVudHMvYmFza2V0LXByZXZpZXcvcmVwbGFjZS1pdGVtL3JlcGxhY2UtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL2Jhc2tldC1wcmV2aWV3L3JlcGxhY2UtaXRlbS9yZXBsYWNlLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBUSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFB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QUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO3dCQUN0RCxVQUFVLENBQUMsUUFBUSxFQUFFOzRCQUNuQixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs0QkFDeEMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO3lCQUM3QixDQUFDO3dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7NEJBQ25CLE9BQU8sQ0FBQyxtQkFBbUIsRUFDekIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQzt5QkFDN0MsQ0FBQztxQkFDSCxDQUFDO2lCQUNIO2FBQ0Y7a1pBRVUsV0FBVztrQkFBbkIsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDSSxRQUFRO2tCQUFqQixNQUFNO1lBQ0csbUJBQW1CO2tCQUE1QixNQUFNO1lBQ2dCLEtBQUs7a0JBQTNCLFdBQVc7bUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG1lcmdlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2tldEVudHJ5LCBJbmdyZWRpZW50LCBJdGVtLCBSZWNpcGUgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IEFkZEluZ3JlZGllbnRBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2FkZC1pbmdyZWRpZW50LWFjdGlvbic7XG5pbXBvcnQgeyBBZGRJbmdyZWRpZW50RnJvbVJlcGxhY2VBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2FkZC1pbmdyZWRpZW50LWZyb20tcmVwbGFjZS1hY3Rpb24nO1xuaW1wb3J0IHsgUmVtb3ZlSW5ncmVkaWVudEZyb21SZXBsYWNlQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9iYXNrZXQtYWN0aW9ucy9yZW1vdmUtaW5ncmVkaWVudC1mcm9tLXJlcGxhY2UtYWN0aW9uJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc1NlcnZpY2UsXG4gIEJhc2tldEVudHJpZXNTZXJ2aWNlLFxuICBCYXNrZXRzU2VydmljZSxcbiAgQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UsXG4gIENvbnRleHRTZXJ2aWNlLFxuICBJdGVtc1NlcnZpY2UsXG4gIFByaWNlU2VydmljZSxcbiAgUHJvZHVjdFByaWNlLFxuICBQcm9kdWN0UmVwbGFjZW1lbnRTZXJ2aWNlLFxuICBSZWNpcGVEZXRhaWxzU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgSWdub3JlZEluZ3JlZGllbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9pZ25vcmVkLWluZ3JlZGllbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyc2VkTWV0aG9kIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL3BlbmRpbmctYmFza2V0LW1ldGhvZHMuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBkZWVwQ2xvbmVXaXRoQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi9fdXRpbHMvbWV0aG9kcy9kZWVwQ2xvbmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlcGxhY2UtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBsYWNlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXBsYWNlLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZScsIFtcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpLFxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScgfSkpLFxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbi1vdXQnLFxuICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKSAnIH0pKVxuICAgICAgXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlcGxhY2VJdGVtQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgYmFza2V0RW50cnk6IEJhc2tldEVudHJ5ID0gbmV3IEJhc2tldEVudHJ5KCk7XG4gIEBJbnB1dCgpIHJlY2lwZTogUmVjaXBlO1xuICBASW5wdXQoKSBpZ25vcmVTZWxlY3RlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbmdyZWRpZW50OiBJbmdyZWRpZW50O1xuICBASW5wdXQoKSBsb2FkT25TZWxlY3QgPSBmYWxzZTtcbiAgQElucHV0KCkgYWRkUHJvZHVjdE1vZGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hTdHJpbmdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBIb3N0QmluZGluZygnQHNsaWRlJykgc3RhdGUgPSAnb3V0JztcblxuICBpY29uID0gSWNvbjtcbiAgc2VhcmNoU3RyaW5nID0gJyc7XG4gIHByaXZhdGUgcHJldmlvdXNJdGVtOiBJdGVtO1xuICBwcml2YXRlIHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIGl0ZW1zV2l0aFByaWNlc0xpc3Q6IHsgaXRlbTogSXRlbTsgcHJpY2U6IFByb2R1Y3RQcmljZSB9W10gPSBbXTtcbiAgcmVwbGFjZUl0ZW1Mb2FkaW5nOiBJdGVtO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG1vZGlmaWVkSW5nUXR5OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRFbnRyaWVzU2VydmljZTogQmFza2V0RW50cmllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtc1NlcnZpY2U6IEl0ZW1zU2VydmljZSxcbiAgICBwcml2YXRlIGlnbm9yZWRCYXNrZXRzU2VydmljZTogSWdub3JlZEluZ3JlZGllbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZURldGFpbHNTZXJ2aWNlOiBSZWNpcGVEZXRhaWxzU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldFN5bmNocm9TZXJ2aWNlOiBCYXNrZXRzU3luY2hyb25pemVyU2VydmljZSxcbiAgICBwcml2YXRlIHByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2U6IFByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2UsXG4gICAgcHVibGljIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwdWJsaWMgcHJpY2VTZXJ2aWNlOiBQcmljZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2luJztcbiAgICBpZiAodGhpcy5yZWNpcGUpIHtcbiAgICAgIHRoaXMubW9kaWZpZWRJbmdRdHkgPSArdGhpcy5yZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5maW5kKGkgPT4gaS5uYW1lID09PSB0aGlzLmluZ3JlZGllbnQuYXR0cmlidXRlcy5uYW1lKT8ucXR5LnRvRml4ZWQoMik7XG4gICAgfVxuICAgIHRoaXMucGFnZXZpZXcoKTtcbiAgICB0aGlzLnNldHVwU2VhcmNoT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvdXQnO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZmV0Y2ggaXRlbXMgd2hlbiB3ZSBhcmUgaW4gYWRkUHJvZHVjdE1vZGUgb3Igd2hlbiB0aGUgb3JpZ2luVHJhY2UgY2hhbmdlZCBhZnRlciBmaXJzdENoYW5nZVxuICAgIGlmICghdGhpcy5hZGRQcm9kdWN0TW9kZSAmJiBjaGFuZ2VzPy5vcmlnaW5UcmFjZT8uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuZmV0Y2hJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWRkUHJvZHVjdE1vZGUpIHtcbiAgICAgIHRoaXMucHJvZHVjdFJlcGxhY2VtZW50U2VydmljZS5jaGFuZ2VBZGRpdGlvbk1vZGFsU3RhdGUoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoKTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2l0ZW0tc2VsZWN0b3InO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNlYXJjaE9ic2VydmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3QucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgIGZpbHRlcihzZWFyY2ggPT4gc2VhcmNoLmxlbmd0aCA+PSAzKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKHNlYXJjaCA9PlxuICAgICAgICAgIHRoaXMuaXRlbXNTZXJ2aWNlLnNlYXJjaEZvckluZ3JlZGllbnQoXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgICB0aGlzLmluZ3JlZGllbnQ/LmlkLCt0aGlzLnJlY2lwZT8ubW9kaWZpZWRHdWVzdHMpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXNTZXJ2aWNlLm5ld0NvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgaXRlbXMuZmlsbChyZXNwb25zZSk7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtcy5kYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgIT09IHRoaXMuYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtPy5pZCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcChpdGVtcyA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHByaWNlT2JzZXJ2YWJsZXMgPSBpdGVtcy5tYXAoaXRlbSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNTZXJ2aWNlLmdldFByaWNlRm9ySXRlbShpdGVtLmlkKS5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKHByaWNlID0+ICh7IGl0ZW0sIHByaWNlIH0pKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHByaWNlT2JzZXJ2YWJsZXMubGVuZ3RoID09PSAwID8gb2YoW10pIDogZm9ya0pvaW4ocHJpY2VPYnNlcnZhYmxlcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKS5zdWJzY3JpYmUoKGl0ZW1zV2l0aFByaWNlczogeyBpdGVtOiBJdGVtOyBwcmljZTogUHJvZHVjdFByaWNlIH1bXSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXNXaXRoUHJpY2VzTGlzdCA9IGl0ZW1zV2l0aFByaWNlcztcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBvblNlYXJjaElucHV0Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHRoaXMuc2VhcmNoU3RyaW5nKTtcbiAgfVxuXG4gIG9uU2VsZWN0SXRlbShpdGVtOiBJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5yZXBsYWNlSXRlbUxvYWRpbmcgPSBpdGVtO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBpZiAodGhpcy5hZGRQcm9kdWN0TW9kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbUFkZGl0aW9uKGl0ZW0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5pZ25vcmVTZWxlY3RlZCkge1xuICAgICAgdGhpcy5pZ25vcmVkQmFza2V0c1NlcnZpY2UucmVtb3ZlSW5ncmVkaWVudEZyb21JZ25vcmVkKHRoaXMuaW5ncmVkaWVudC5pZCk7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNJdGVtID0gdGhpcy5iYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW07XG4gICAgaWYgKHRoaXMuYmFza2V0RW50cnkuc3RhdHVzID09PSAnYWN0aXZlJykge1xuICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlcGxhY2VSZWxhdGlvbnNoaXAodGhpcy5iYXNrZXRFbnRyeSwgaXRlbSk7XG4gICAgICB0aGlzLmFkZFRvQmFza2V0KGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SXRlbShpdGVtOiBJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS51cGRhdGVJbmdyZWRpZW50RnJvbUJhc2tldExvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGNvbnN0IGRlbGV0ZWRCYXNrZXRFbnRyeTogQmFza2V0RW50cnkgPSBkZWVwQ2xvbmVXaXRoQ2xhc3ModGhpcy5iYXNrZXRFbnRyeSk7XG4gICAgZGVsZXRlZEJhc2tldEVudHJ5LnF1YW50aXR5ID0gMDtcbiAgICBkZWxldGVkQmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmV4dElkID0gdGhpcy5wcmV2aW91c0l0ZW0uZXh0SWQ7XG4gICAgY29uc3QgcmVtb3ZlSW5ncmVkaWVudCA9IG5ldyBSZW1vdmVJbmdyZWRpZW50RnJvbVJlcGxhY2VBY3Rpb24oXG4gICAgICBkZWxldGVkQmFza2V0RW50cnksXG4gICAgICB7fSxcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2VcbiAgICApO1xuICAgIG1lcmdlKHJlbW92ZUluZ3JlZGllbnQub25UaW1lb3V0LCByZW1vdmVJbmdyZWRpZW50Lm9uRXJyb3IpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucm9sbGJhY2tSZXBsYWNlKCk7XG4gICAgfSk7XG4gICAgdGhpcy5iYXNrZXRTeW5jaHJvU2VydmljZS5hZGRUb0FjdGlvbkxpc3QoW3JlbW92ZUluZ3JlZGllbnRdKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICh0aGlzLmluZ3JlZGllbnQgJiYgdGhpcy5yZWNpcGUgPyB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldEVudHJ5RnJvbUluZ3JlZGllbnQodGhpcy5pbmdyZWRpZW50LmlkLCArdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMsIHRydWUsIGl0ZW0uaWQpIDogb2YodGhpcy5iYXNrZXRFbnRyeSkpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgobmV3RW50cnk6IEJhc2tldEVudHJ5KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3QmFza2V0RW50cnk6IEJhc2tldEVudHJ5ID0gZGVlcENsb25lV2l0aENsYXNzKHRoaXMuYmFza2V0RW50cnkpO1xuICAgICAgICAgIG5ld0Jhc2tldEVudHJ5LnF1YW50aXR5VG9BZGQgPSBuZXdFbnRyeS5xdWFudGl0eVRvQWRkO1xuICAgICAgICAgIHRoaXMucmVwbGFjZVJlbGF0aW9uc2hpcChuZXdCYXNrZXRFbnRyeSwgaXRlbSk7XG4gICAgICAgICAgY29uc3QgYWRkSW5ncmVkaWVudEZyb21SZXBsYWNlID0gbmV3IEFkZEluZ3JlZGllbnRGcm9tUmVwbGFjZUFjdGlvbihcbiAgICAgICAgICAgIG5ld0Jhc2tldEVudHJ5LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZSxcbiAgICAgICAgICAgIHRoaXMuYmFza2V0RW50cmllc1NlcnZpY2VcbiAgICAgICAgICApO1xuICAgICAgICAgIG1lcmdlKGFkZEluZ3JlZGllbnRGcm9tUmVwbGFjZS5vblRpbWVvdXQsIGFkZEluZ3JlZGllbnRGcm9tUmVwbGFjZS5vbkVycm9yKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvbGxiYWNrUmVwbGFjZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFkZEluZ3JlZGllbnRGcm9tUmVwbGFjZS5vblN1Y2Nlc3MucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS51cGRhdGVJbmdyZWRpZW50RnJvbUJhc2tldExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UuaGFzUmVwbGFjZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5lbWl0V2hlblJlcXVlc3RzRW5kZWQoKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmJhc2tldFN5bmNocm9TZXJ2aWNlLmFkZFRvQWN0aW9uTGlzdChbYWRkSW5ncmVkaWVudEZyb21SZXBsYWNlXSk7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZW5kUmVwbGFjZUV2ZW50KCkpXG4gICAgKTtcbiAgfVxuXG4gIHJlcGxhY2VSZWxhdGlvbnNoaXAoYmFza2V0RW50cnk6IEJhc2tldEVudHJ5LCBpdGVtOiBJdGVtKTogdm9pZCB7XG4gICAgaWYgKGJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbSkge1xuICAgICAgYmFza2V0RW50cnkucmVtb3ZlUmVsYXRpb25zaGlwKCdzZWxlY3RlZC1pdGVtJywgYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmlkKTtcbiAgICB9XG4gICAgYmFza2V0RW50cnkuYWRkUmVsYXRpb25zaGlwKGl0ZW0sICdzZWxlY3RlZC1pdGVtJyk7XG4gIH1cblxuICBhZGRUb0Jhc2tldChpdGVtOiBJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnJlY2lwZURldGFpbHNTZXJ2aWNlLmNhbkFkZFByb2R1Y3RUb0Jhc2tldChcbiAgICAgICAgdGhpcy5nZXRBZGRJbmdyZWRpZW50TWV0aG9kKCksXG4gICAgICAgIHRoaXMuZXZlbnRUcmFjZVxuICAgICAgKS5waXBlKFxuICAgICAgICBmaWx0ZXIocGFzc2VkID0+IHBhc3NlZCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0RW50cnlGcm9tSW5ncmVkaWVudCh0aGlzLmluZ3JlZGllbnQuaWQsICt0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cywgdHJ1ZSwgaXRlbS5pZCkpXG4gICAgICApLnN1YnNjcmliZShcbiAgICAgICAgKG5ld0VudHJ5OiBCYXNrZXRFbnRyeSkgPT4gdGhpcy5oYW5kbGVBZGRUb0Jhc2tldFJlc3BvbnNlKG5ld0VudHJ5KVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBZGRJbmdyZWRpZW50TWV0aG9kKCk6IFBhcnNlZE1ldGhvZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGhvZDogJ2FkZEluZ3JlZGllbnRUb0Jhc2tldCcsXG4gICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgcmVjaXBlSWQ6IHRoaXMucmVjaXBlLmlkLFxuICAgICAgICBpbmdyZWRpZW50SWQ6IHRoaXMuaW5ncmVkaWVudC5pZCxcbiAgICAgICAgZW50cnk6IHRoaXMuYmFza2V0RW50cnksXG4gICAgICAgIGV2ZW50VHJhY2U6IHRoaXMuZXZlbnRUcmFjZSxcbiAgICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaFN0cmluZ1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFkZFRvQmFza2V0UmVzcG9uc2UobmV3RW50cnk6IEJhc2tldEVudHJ5KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVMb2FkaW5nU3RhdGVzKCk7XG4gICAgY29uc3QgbmV3QmFza2V0RW50cnk6IEJhc2tldEVudHJ5ID0gZGVlcENsb25lV2l0aENsYXNzKHRoaXMuYmFza2V0RW50cnkpO1xuICAgIG5ld0Jhc2tldEVudHJ5LnF1YW50aXR5VG9BZGQgPSBuZXdFbnRyeS5xdWFudGl0eVRvQWRkO1xuICAgIGNvbnN0IGFkZEluZ3JlZGllbnQgPSBuZXcgQWRkSW5ncmVkaWVudEFjdGlvbihcbiAgICAgIG5ld0Jhc2tldEVudHJ5LFxuICAgICAge1xuICAgICAgICBldmVudFRyYWNlOiB0aGlzLmV2ZW50VHJhY2UsXG4gICAgICAgIHJlY2lwZUlkOiB0aGlzLnJlY2lwZS5pZCxcbiAgICAgICAgaW5ncmVkaWVudElkOiB0aGlzLmluZ3JlZGllbnQuaWQsXG4gICAgICAgIHByZXZpb3VzSXRlbTogdGhpcy5wcmV2aW91c0l0ZW0sXG4gICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmdcbiAgICAgIH0sXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlXG4gICAgKTtcbiAgICB0aGlzLmhhbmRsZUFkZEluZ3JlZGllbnRBY3Rpb24oYWRkSW5ncmVkaWVudCk7XG4gICAgdGhpcy5iYXNrZXRTeW5jaHJvU2VydmljZS5hZGRUb0FjdGlvbkxpc3QoW2FkZEluZ3JlZGllbnRdKTtcbiAgICAvLyBObyBuZWVkIHRvIHNlbmQgZW50cnkuYWRkZWQgZXZlbnQsIGJlY2F1c2UgaXQgaXMgZG9uZSBpbiB0aGUgYWN0aW9uXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFkZEluZ3JlZGllbnRBY3Rpb24oYWRkSW5ncmVkaWVudDogQWRkSW5ncmVkaWVudEFjdGlvbik6IHZvaWQge1xuICAgIG1lcmdlKGFkZEluZ3JlZGllbnQub25FcnJvciwgYWRkSW5ncmVkaWVudC5vblRpbWVvdXQpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucm9sbGJhY2tSZXBsYWNlKCk7XG4gICAgfSk7XG4gICAgYWRkSW5ncmVkaWVudC5vblN1Y2Nlc3MucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5oYXNSZXBsYWNlZCA9IHRydWU7XG4gICAgICB0aGlzLmVtaXRXaGVuUmVxdWVzdHNFbmRlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMb2FkaW5nU3RhdGVzKCk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UuaW5ncmVkaWVudFRvQmFza2V0TG9hZGluZyA9IHRoaXMuYmFza2V0RW50cnkuc3RhdHVzID09PSAnaW5pdGlhbCc7XG4gICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS51cGRhdGVJbmdyZWRpZW50RnJvbUJhc2tldExvYWRpbmcgPSB0aGlzLmJhc2tldEVudHJ5LnN0YXR1cyAhPT0gJ2luaXRpYWwnO1xuICB9XG5cbiAgcHJpdmF0ZSBpdGVtQWRkaXRpb24oaXRlbTogSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuYWRkSXRlbVRvQmFza2V0KGl0ZW0sIHRoaXMuZXZlbnRUcmFjZSk7XG4gICAgdGhpcy5lbWl0V2hlblJlcXVlc3RzRW5kZWQoaXRlbS5pZCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRXaGVuUmVxdWVzdHNFbmRlZChpdGVtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLmJhc2tldEVudHJ5LmlkKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWRkUHJvZHVjdE1vZGUpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuYmFza2V0c1NlcnZpY2UuaXRlbVdpbGxCZUFkZGVkKGl0ZW1JZCkuc3Vic2NyaWJlKGFkZEl0ZW0gPT4ge1xuICAgICAgICBpZiAoIWFkZEl0ZW0gJiYgdGhpcy5yZXBsYWNlSXRlbUxvYWRpbmcpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoaXRlbUlkKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmJhc2tldHNTZXJ2aWNlLmluZ3JlZGllbnRXaWxsQmVBZGRlZCh0aGlzLmluZ3JlZGllbnQuaWQpLnN1YnNjcmliZShhZGRJbmdyZWRpZW50ID0+IHtcbiAgICAgICAgaWYgKCFhZGRJbmdyZWRpZW50ICYmIHRoaXMucmVwbGFjZUl0ZW1Mb2FkaW5nKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuYmFza2V0RW50cnkuaWQpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZW5kUmVwbGFjZUV2ZW50KCk6IHZvaWQge1xuICAgIC8vIFRPRE8gYW5hbHl0aWNzOiBlbnRyeS5kZWxldGVkIGFuZCBlbnRyeS5hZGQgZXZlbnRzIHNob3VsZCBub3QgYmUgc2VudCBhZnRlciBlbnRyeS5yZXBsYWNlZFxuICAgIGNvbnN0IGV2ZW50RGF0YSA9IHtcbiAgICAgIGVudHJ5X25hbWU6IHRoaXMuYmFza2V0RW50cnkubmFtZSxcbiAgICAgIG5ld19pdGVtX2lkOiB0aGlzLmJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5pZCxcbiAgICAgIG5ld19pdGVtX2V4dF9pZDogdGhpcy5iYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uYXR0cmlidXRlc1snZXh0LWlkJ10sXG4gICAgICBuZXdfaXRlbV9lYW46IHRoaXMuYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmVhbixcbiAgICAgIHByb2R1Y3RfcXVhbnRpdHk6IHRoaXMuYmFza2V0RW50cnkucXVhbnRpdHkudG9TdHJpbmcoKSxcbiAgICAgIHNlYXJjaF90ZXJtOiB0aGlzLnNlYXJjaFN0cmluZyxcbiAgICAgIG9sZF9pdGVtX2lkOiB0aGlzLnByZXZpb3VzSXRlbS5pZCxcbiAgICAgIG9sZF9pdGVtX2V4dF9pZDogdGhpcy5wcmV2aW91c0l0ZW0uYXR0cmlidXRlc1snZXh0LWlkJ10sXG4gICAgICBvbGRfaXRlbV9lYW46IHRoaXMucHJldmlvdXNJdGVtLmVhblxuICAgIH07XG5cbiAgICAvLyBPbmx5IGFkZCByZWNpcGVfaWQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMucmVjaXBlICYmIHRoaXMucmVjaXBlLmlkKSB7XG4gICAgICBldmVudERhdGFbJ3JlY2lwZV9pZCddID0gdGhpcy5yZWNpcGUuaWQ7XG4gICAgfVxuXG4gICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudChcbiAgICAgICdlbnRyeS5yZXBsYWNlZCcsXG4gICAgICB0aGlzLnBhdGgsXG4gICAgICBldmVudERhdGFcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaEl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuaXRlbXNTZXJ2aWNlLnNlYXJjaEZvckluZ3JlZGllbnQoXG4gICAgICAgIHRoaXMuaW5ncmVkaWVudD8uaWQgPyBudWxsIDogdGhpcy5iYXNrZXRFbnRyeS5uYW1lLCB0aGlzLmluZ3JlZGllbnQ/LmlkLCArdGhpcy5yZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzKS5waXBlKFxuICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtc1NlcnZpY2UubmV3Q29sbGVjdGlvbigpO1xuICAgICAgICAgIGl0ZW1zLmZpbGwocmVzcG9uc2UpO1xuICAgICAgICAgIHJldHVybiBpdGVtcy5kYXRhO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKGl0ZW1zID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5iYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0gJiYgaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5iYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0/LmlkKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHRoaXMuYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcHJpY2VPYnNlcnZhYmxlcyA9IGl0ZW1zLm1hcChpdGVtID0+XG4gICAgICAgICAgICB0aGlzLml0ZW1zU2VydmljZS5nZXRQcmljZUZvckl0ZW0oaXRlbS5pZCkucGlwZShcbiAgICAgICAgICAgICAgbWFwKHByaWNlID0+ICh7IGl0ZW0sIHByaWNlIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHByaWNlT2JzZXJ2YWJsZXMubGVuZ3RoID09PSAwID8gb2YoW10pIDogZm9ya0pvaW4ocHJpY2VPYnNlcnZhYmxlcyk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgoaXRlbXNXaXRoUHJpY2VzOiB7IGl0ZW06IEl0ZW07IHByaWNlOiBQcm9kdWN0UHJpY2UgfVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5pdGVtc1dpdGhQcmljZXNMaXN0ID0gdGhpcy5tb3ZlU2VsZWN0ZWRJdGVtVG9Gcm9udChpdGVtc1dpdGhQcmljZXMpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZVNlbGVjdGVkSXRlbVRvRnJvbnQoaXRlbXNXaXRoUHJpY2VzOiB7IGl0ZW06IEl0ZW07IHByaWNlOiBQcm9kdWN0UHJpY2UgfVtdKTogeyBpdGVtOiBJdGVtOyBwcmljZTogUHJvZHVjdFByaWNlIH1bXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtSWQgPSB0aGlzLmJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbT8uaWQ7XG5cbiAgICByZXR1cm4gaXRlbXNXaXRoUHJpY2VzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLml0ZW0uaWQgPT09IHNlbGVjdGVkSXRlbUlkKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChiLml0ZW0uaWQgPT09IHNlbGVjdGVkSXRlbUlkKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJvbGxiYWNrUmVwbGFjZSgpIHtcbiAgICB0aGlzLnJlY2lwZURldGFpbHNTZXJ2aWNlLmluZ3JlZGllbnRUb0Jhc2tldExvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJlY2lwZURldGFpbHNTZXJ2aWNlLnVwZGF0ZUluZ3JlZGllbnRGcm9tQmFza2V0TG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMucmVwbGFjZUl0ZW1Mb2FkaW5nID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYmFza2V0RW50cnkucmVsYXRpb25zaGlwc1snc2VsZWN0ZWQtaXRlbSddLmRhdGEgPSB0aGlzLnByZXZpb3VzSXRlbTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjwhLS0gSEVBREVSIC0tPlxuPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19oZWFkZXIgbWlhbS1kcy10ZXh0IHdlaWdodC14eGxcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cIm1pYW0tZHMtYnV0dG9uIGdob3N0IHNxdWFyZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLkNoZXZyb25Eb3duXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgIHByaW1hcnlDb2xvcj1cInZhcigtLW1pYW0tZHMtY29sb3ItcHJpbWFyeS01MDApXCI+PC9uZy1taWFtLWljb24+XG4gIDwvYnV0dG9uPlxuICA8c3BhbiAqbmdJZj1cImJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbSAmJiAhaWdub3JlU2VsZWN0ZWQgJiYgIWFkZFByb2R1Y3RNb2RlIGVsc2UgYWRkUHJvZHVjdFwiIGkxOG4+UmVtcGxhY2VyIHVuIHByb2R1aXQ8L3NwYW4+XG4gIDxuZy10ZW1wbGF0ZSAjYWRkUHJvZHVjdD5cbiAgICA8c3BhbiBpMThuPkFqb3V0ZXIgdW4gcHJvZHVpdDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX190b3AtY29udGFpbmVyXCI+XG4gIDwhLS0gU0VBUkNIIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX3NlYXJjaGJhclwiPlxuICAgIDxuZy1taWFtLWljb25cbiAgICAgIFtpY29uTmFtZV09XCJpY29uLlNlYXJjaFwiXG4gICAgICB3aWR0aD1cIjIwXCJcbiAgICAgIGhlaWdodD1cIjIwXCJcbiAgICA+XG4gICAgPC9uZy1taWFtLWljb24+XG4gICAgPGlucHV0XG4gICAgICAqbmdJZj1cIiFhZGRQcm9kdWN0TW9kZVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBpMThuLXBsYWNlaG9sZGVyXG4gICAgICBwbGFjZWhvbGRlcj1cIlJlY2hlcmNoZXIgdW4gcHJvZHVpdCBkZSBzdWJzdGl0dXRpb25cIlxuICAgICAgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fc2VhcmNoYmFyX19pbnB1dCBtaWFtLWRzLXRleHQgc2l6ZS1tIHdlaWdodC1sXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoU3RyaW5nXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoSW5wdXRDaGFuZ2UoKVwiXG4gICAgPlxuICAgIDxpbnB1dFxuICAgICAgKm5nSWY9XCJhZGRQcm9kdWN0TW9kZVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBpMThuLXBsYWNlaG9sZGVyXG4gICAgICBwbGFjZWhvbGRlcj1cIkplIGNoZXJjaGUgdW4gcHJvZHVpdFwiXG4gICAgICBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19zZWFyY2hiYXJfX2lucHV0IG1pYW0tZHMtdGV4dCBzaXplLW0gd2VpZ2h0LWxcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hTdHJpbmdcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hJbnB1dENoYW5nZSgpXCJcbiAgICA+XG4gICAgPGRpdiBbY2xhc3MuaGlkZGVuXT1cIiFpc0xvYWRpbmdcIiBjbGFzcz1cIm1pYW0tZHMtbG9hZGVyXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIFBST0RVQ1QgTkVFREVEIEJBTk5FUiAtLT5cbiAgPGRpdiAqbmdJZj1cIiFhZGRQcm9kdWN0TW9kZVwiIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX3Byb2R1Y3QtYmFubmVyXCI+XG4gIDxzcGFuIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Jhbm5lci1wcm9kdWN0LW5hbWUgbWlhbS1kcy10ZXh0IHNpemUtc1wiPlxuICAgIDxzcGFuPnt7IGJhc2tldEVudHJ5Lm5hbWUgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfX0gOjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19iYW5uZXItcXVhbnRpdHkgbWlhbS1kcy10ZXh0IHdlaWdodC14eGxcIj5cbiAgICAgIHt7IG1vZGlmaWVkSW5nUXR5IHx8IGluZ3JlZGllbnQ/LnF1YW50aXR5IH19IHt7IGluZ3JlZGllbnQ/LmF0dHJpYnV0ZXMudW5pdCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBQUk9EVUNUIExJU1QgR1JJRCAtLT5cbjxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1saXN0XCIgW2NsYXNzLmZ1bGwtd2lkdGhdPVwiaXRlbXNXaXRoUHJpY2VzTGlzdC5sZW5ndGggPCAyXCI+XG4gIDwhLS0gUFJPRFVDVCBDQVJEIC0tPlxuICA8ZGl2XG4gICAgKm5nRm9yPVwibGV0IGl0ZW1XaXRoUHJpY2Ugb2YgaXRlbXNXaXRoUHJpY2VzTGlzdCwgbGV0IGkgPSBpbmRleFwiXG4gICAgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1pdGVtXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2VsZWN0ZWQnOiBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0/LmlkID09PSBpdGVtV2l0aFByaWNlLml0ZW0uaWQgJiYgIWlnbm9yZVNlbGVjdGVkICYmIGkgPT09IDBcbiAgICB9XCJcbiAgPlxuICAgIDxuZy1taWFtLXByb21vdGlvbi1iYWRnZSBbcHJpY2VEYXRhXT1cIml0ZW1XaXRoUHJpY2UucHJpY2VcIiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9tb3Rpb25zXCI+PC9uZy1taWFtLXByb21vdGlvbi1iYWRnZT5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2NhcmQtdXBwZXItc2VjdGlvblwiPlxuICAgICAgPCEtLSBQUk9EVUNUIElNQUdFIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LWltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgYWx0PVwicHJvZHVjdCB0byByZXBsYWNlXCJcbiAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LWltYWdlXCJcbiAgICAgICAgICBbc3JjXT1cIml0ZW1XaXRoUHJpY2UuaXRlbS5hdHRyaWJ1dGVzLmltYWdlXCJcbiAgICAgICAgICAoZXJyb3IpPVwiJGV2ZW50LnRhcmdldFsnc3JjJ10gPSBjb250ZXh0U2VydmljZS5kZWZhdWx0SW5ncmVkaWVudFBpY3R1cmVcIlxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gUFJPRFVDVCBJTkZPIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LWluZm9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LWJyYW5kIG1pYW0tZHMtdGV4dCBzaXplLXhzIHdlaWdodC14bFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX3Byb2R1Y3QtYnJhbmQtdGV4dFwiPnt7IGl0ZW1XaXRoUHJpY2UuaXRlbS5hdHRyaWJ1dGVzLmJyYW5kIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LW5hbWUgbWlhbS1kcy10ZXh0IHNpemUteHNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LW5hbWUtdGV4dFwiPnt7IGl0ZW1XaXRoUHJpY2UuaXRlbS5hdHRyaWJ1dGVzLm5hbWUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctbWlhbS1wcm9kdWN0LWJhZGdlc1xuICAgICAgICAgIFtpc1Nwb25zb3JlZF09XCJpdGVtV2l0aFByaWNlLml0ZW0uYXR0cmlidXRlcy5zcG9uc29yZWRcIlxuICAgICAgICAgIFtpdGVtXT1cIml0ZW1XaXRoUHJpY2UuaXRlbVwiXG4gICAgICAgICAgW3ByaWNlXT1cIml0ZW1XaXRoUHJpY2UucHJpY2VcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctbWlhbS1wcm9kdWN0LWJhZGdlcz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fY2FyZC1sb3dlci1zZWN0aW9uXCI+XG4gICAgICA8IS0tIFBST0RVQ1QgUFJJQ0UgLS0+XG4gICAgICA8bmctbWlhbS1wcmljZVxuICAgICAgICBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LXByaWNlIG1pYW0tZHMtdGV4dCBzaXplLW0gd2VpZ2h0LXh4bFwiXG4gICAgICAgIFtvbGRQcmljZV09XCJwcmljZVNlcnZpY2UuZ2V0T2xkUHJpY2UoaXRlbVdpdGhQcmljZS5wcmljZSkgfCBjdXJyZW5jeTogaXRlbVdpdGhQcmljZS5pdGVtLmF0dHJpYnV0ZXMuY3VycmVuY3lcIlxuICAgICAgICBbcHJpY2VdPVwicHJpY2VTZXJ2aWNlLmdldEN1cnJlbnRQcmljZShpdGVtV2l0aFByaWNlLnByaWNlKSB8IGN1cnJlbmN5OiBpdGVtV2l0aFByaWNlLml0ZW0uYXR0cmlidXRlcy5jdXJyZW5jeVwiPlxuICAgICAgPC9uZy1taWFtLXByaWNlPlxuICAgICAgPCEtLSBQUk9EVUNUIENUQSAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fY3RhIG1pYW0tZHMtYnV0dG9uIHNtYWxsIHByaW1hcnlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtPy5pZCA9PT0gaXRlbVdpdGhQcmljZS5pdGVtLmlkICYmICFpZ25vcmVTZWxlY3RlZCAmJiBpID09PSAwXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0SXRlbShpdGVtV2l0aFByaWNlLml0ZW0pXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWRzLWxvYWRlclwiXG4gICAgICAgICAgICAgKm5nSWY9XCJyZXBsYWNlSXRlbUxvYWRpbmcgJiYgcmVwbGFjZUl0ZW1Mb2FkaW5nID09PSBpdGVtV2l0aFByaWNlLml0ZW07IGVsc2UgZGVmYXVsdFNlbGVjdEJ1dHRvblwiPjwvZGl2PlxuICAgICAgICA8IS0tIE5PIFNVUFBMSUVSIENUQSBMQUJFTCAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VsZWN0QnV0dG9uPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udGV4dFNlcnZpY2Uubm9TdXBwbGllcjsgZWxzZSB3aXRoU3VwcGxpZXJcIj5cbiAgICAgICAgICAgIEFqb3V0ZXJcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPCEtLSBXSVRIIFNVUFBMSUVSIENUQSBMQUJFTCAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3dpdGhTdXBwbGllcj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0gJiYgIWlnbm9yZVNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaSA9PT0gMCAmJiBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uaWQgPT09IGl0ZW1XaXRoUHJpY2UuaXRlbS5pZFwiIGkxOG4+U8OpbGVjdGlvbm7DqTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpICE9PSAwIHx8IGJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5pZCAhPT0gaXRlbVdpdGhQcmljZS5pdGVtLmlkXCIgaTE4bj5Tw6lsZWN0aW9ubmVyPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBpMThuICpuZ0lmPVwiIWJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbSB8fCBpZ25vcmVTZWxlY3RlZFwiPkFqb3V0ZXIgYXUgcGFuaWVyPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gSVNTVUVTIC0tPlxuICA8IS0tIE5PIFNVQlNUSVRVVElPTiBQUk9EVUNUIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBpdGVtc1dpdGhQcmljZXNMaXN0Lmxlbmd0aCA9PT0gMSAmJiAhc2VhcmNoU3RyaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19lcnJvclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19lcnJvci1pbWFnZS1jb250YWluZXIgc21hbGwtaW1nXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fZXJyb3ItaW1hZ2VcIiBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9wcm9kdWN0LWlzc3VlLnBuZ1wiIGFsdD1cImlzc3VlIHdpdGggcHJvZHVjdFwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2lzc3VlLWVudHJ5LW5hbWVcIj5cInt7IGJhc2tldEVudHJ5Lm5hbWUgfX1cIjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2lzc3VlLXRpdGxlIG1pYW0tcmVwbGFjZS1pdGVtX19pc3N1ZS10aXRsZV9fbm8tc3Vic3RpdHV0aW9uXCI+PHNwYW4gaTE4bj5BdWN1biBwcm9kdWl0IGRlIHN1YnN0aXR1dGlvbiB0cm91dsOpPC9zcGFuPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBOTyBQUk9EVUNUUyBGT1VORCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhZGRQcm9kdWN0TW9kZSAmJiAhaXNMb2FkaW5nICYmIGl0ZW1zV2l0aFByaWNlc0xpc3QubGVuZ3RoID09PSAwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19lcnJvclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19lcnJvci1pbWFnZS1jb250YWluZXJcIj5cbiAgICAgICAgPGltZyBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19lcnJvci1pbWFnZVwiIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaW1hZ2VzL3Byb2R1Y3QtaXNzdWUucG5nXCIgYWx0PVwiaXNzdWUgd2l0aCBwcm9kdWN0XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9faXNzdWUtc2VhcmNoLXN0cmluZ1wiPlwie3sgc2VhcmNoU3RyaW5nIH19XCI8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19pc3N1ZS10aXRsZSBtaWFtLXJlcGxhY2UtaXRlbV9faXNzdWUtdGl0bGVfX25vdC1mb3VuZFwiPjxzcGFuIGkxOG4+QXVjdW4gcHJvZHVpdCB0cm91dsOpIHBvdXIgY2V0dGUgcmVjaGVyY2hlPC9zcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2lzc3VlLWRlc2NyaXB0aW9uIG1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsXCI+PHNwYW4gaTE4bj5Fc3NheWV6IGF2ZWMgdW4gYXV0cmUgbW90LWNsw6k8L3NwYW4+PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEFERCBQUk9EVUNUIERFRkFVTFQgVklFVyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkZFByb2R1Y3RNb2RlICYmICFpc0xvYWRpbmcgJiYgaXRlbXNXaXRoUHJpY2VzTGlzdC5sZW5ndGggPT09IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2FkZC1wcm9kdWN0LWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fYWRkLXByb2R1Y3QtaW1hZ2UtY29udGFpbmVyXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fYWRkLXByb2R1Y3QtaW1hZ2VcIiBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL1NlYXJjaC5zdmdcIiBhbHQ9XCJzZWFyY2ggaWNvblwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGkxOG4gY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fYWRkLXByb2R1Y3QtdGl0bGVcIj5Ucm91dmVyIHVuZSBsaXN0ZSBkZSBwcm9kdWl0IGVuIGVmZmVjdHVhbnQgdm90cmUgcmVjaGVyY2hlPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
688
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9fd2ViLWNvbXBvbmVudHMvYmFza2V0LXByZXZpZXcvcmVwbGFjZS1pdGVtL3JlcGxhY2UtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL2Jhc2tldC1wcmV2aWV3L3JlcGxhY2UtaXRlbS9yZXBsYWNlLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBUSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFB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QUFFLCtCQUErQjtnQkFDNUMsU0FBUyxFQUFFLENBQUMsK0JBQStCLENBQUM7Z0JBQzVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyxPQUFPLEVBQUU7d0JBQ2YsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzt3QkFDbEQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO3dCQUN0RCxVQUFVLENBQUMsUUFBUSxFQUFFOzRCQUNuQixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs0QkFDeEMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO3lCQUM3QixDQUFDO3dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7NEJBQ25CLE9BQU8sQ0FBQyxtQkFBbUIsRUFDekIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQzt5QkFDN0MsQ0FBQztxQkFDSCxDQUFDO2lCQUNIO2FBQ0Y7a1pBRVUsV0FBVztrQkFBbkIsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDSSxRQUFRO2tCQUFqQixNQUFNO1lBQ0csbUJBQW1CO2tCQUE1QixNQUFNO1lBQ2dCLEtBQUs7a0JBQTNCLFdBQVc7bUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG1lcmdlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2tldEVudHJ5LCBJbmdyZWRpZW50LCBJdGVtLCBSZWNpcGUgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IEFkZEluZ3JlZGllbnRBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2FkZC1pbmdyZWRpZW50LWFjdGlvbic7XG5pbXBvcnQgeyBBZGRJbmdyZWRpZW50RnJvbVJlcGxhY2VBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2FkZC1pbmdyZWRpZW50LWZyb20tcmVwbGFjZS1hY3Rpb24nO1xuaW1wb3J0IHsgUmVtb3ZlSW5ncmVkaWVudEZyb21SZXBsYWNlQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9iYXNrZXQtYWN0aW9ucy9yZW1vdmUtaW5ncmVkaWVudC1mcm9tLXJlcGxhY2UtYWN0aW9uJztcbmltcG9ydCB7XG4gIEFuYWx5dGljc1NlcnZpY2UsXG4gIEJhc2tldEVudHJpZXNTZXJ2aWNlLFxuICBCYXNrZXRzU2VydmljZSxcbiAgQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UsXG4gIENvbnRleHRTZXJ2aWNlLFxuICBJdGVtc1NlcnZpY2UsXG4gIFByaWNlU2VydmljZSxcbiAgUHJvZHVjdFByaWNlLFxuICBQcm9kdWN0UmVwbGFjZW1lbnRTZXJ2aWNlLFxuICBSZWNpcGVEZXRhaWxzU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgSWdub3JlZEluZ3JlZGllbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9pZ25vcmVkLWluZ3JlZGllbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyc2VkTWV0aG9kIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL3BlbmRpbmctYmFza2V0LW1ldGhvZHMuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBkZWVwQ2xvbmVXaXRoQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi9fdXRpbHMvbWV0aG9kcy9kZWVwQ2xvbmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlcGxhY2UtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBsYWNlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXBsYWNlLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZScsIFtcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpLFxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScgfSkpLFxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLFxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbi1vdXQnLFxuICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKSAnIH0pKVxuICAgICAgXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlcGxhY2VJdGVtQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgYmFza2V0RW50cnk6IEJhc2tldEVudHJ5ID0gbmV3IEJhc2tldEVudHJ5KCk7XG4gIEBJbnB1dCgpIHJlY2lwZTogUmVjaXBlO1xuICBASW5wdXQoKSBpZ25vcmVTZWxlY3RlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbmdyZWRpZW50OiBJbmdyZWRpZW50O1xuICBASW5wdXQoKSBsb2FkT25TZWxlY3QgPSBmYWxzZTtcbiAgQElucHV0KCkgYWRkUHJvZHVjdE1vZGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzZWFyY2hTdHJpbmdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBIb3N0QmluZGluZygnQHNsaWRlJykgc3RhdGUgPSAnb3V0JztcblxuICBpY29uID0gSWNvbjtcbiAgc2VhcmNoU3RyaW5nID0gJyc7XG4gIHByaXZhdGUgcHJldmlvdXNJdGVtOiBJdGVtO1xuICBwcml2YXRlIHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIGl0ZW1zV2l0aFByaWNlc0xpc3Q6IHsgaXRlbTogSXRlbTsgcHJpY2U6IFByb2R1Y3RQcmljZSB9W10gPSBbXTtcbiAgcmVwbGFjZUl0ZW1Mb2FkaW5nOiBJdGVtO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG1vZGlmaWVkSW5nUXR5OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRFbnRyaWVzU2VydmljZTogQmFza2V0RW50cmllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtc1NlcnZpY2U6IEl0ZW1zU2VydmljZSxcbiAgICBwcml2YXRlIGlnbm9yZWRCYXNrZXRzU2VydmljZTogSWdub3JlZEluZ3JlZGllbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZURldGFpbHNTZXJ2aWNlOiBSZWNpcGVEZXRhaWxzU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldFN5bmNocm9TZXJ2aWNlOiBCYXNrZXRzU3luY2hyb25pemVyU2VydmljZSxcbiAgICBwcml2YXRlIHByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2U6IFByb2R1Y3RSZXBsYWNlbWVudFNlcnZpY2UsXG4gICAgcHVibGljIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwdWJsaWMgcHJpY2VTZXJ2aWNlOiBQcmljZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2luJztcbiAgICBpZiAodGhpcy5yZWNpcGUpIHtcbiAgICAgIHRoaXMubW9kaWZpZWRJbmdRdHkgPSArdGhpcy5yZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5maW5kKGkgPT4gaS5uYW1lID09PSB0aGlzLmluZ3JlZGllbnQuYXR0cmlidXRlcy5uYW1lKT8ucXR5LnRvRml4ZWQoMik7XG4gICAgfVxuICAgIHRoaXMucGFnZXZpZXcoKTtcbiAgICB0aGlzLnNldHVwU2VhcmNoT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvdXQnO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZmV0Y2ggaXRlbXMgd2hlbiB3ZSBhcmUgaW4gYWRkUHJvZHVjdE1vZGUgb3Igd2hlbiB0aGUgb3JpZ2luVHJhY2UgY2hhbmdlZCBhZnRlciBmaXJzdENoYW5nZVxuICAgIGlmICghdGhpcy5hZGRQcm9kdWN0TW9kZSAmJiBjaGFuZ2VzPy5vcmlnaW5UcmFjZT8uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuZmV0Y2hJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWRkUHJvZHVjdE1vZGUpIHtcbiAgICAgIHRoaXMucHJvZHVjdFJlcGxhY2VtZW50U2VydmljZS5jaGFuZ2VBZGRpdGlvbk1vZGFsU3RhdGUoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoKTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2l0ZW0tc2VsZWN0b3InO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNlYXJjaE9ic2VydmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3QucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgIGZpbHRlcihzZWFyY2ggPT4gc2VhcmNoLmxlbmd0aCA+PSAzKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKHNlYXJjaCA9PlxuICAgICAgICAgIHRoaXMuaXRlbXNTZXJ2aWNlLnNlYXJjaEZvckluZ3JlZGllbnQoXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgICB0aGlzLmluZ3JlZGllbnQ/LmlkLCArdGhpcy5yZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zU2VydmljZS5uZXdDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgICAgIGl0ZW1zLmZpbGwocmVzcG9uc2UpO1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbXMuZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSB0aGlzLmJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbT8uaWQpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwcmljZU9ic2VydmFibGVzID0gaXRlbXMubWFwKGl0ZW0gPT5cbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zU2VydmljZS5nZXRQcmljZUZvckl0ZW0oaXRlbS5pZCkucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcChwcmljZSA9PiAoeyBpdGVtLCBwcmljZSB9KSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiBwcmljZU9ic2VydmFibGVzLmxlbmd0aCA9PT0gMCA/IG9mKFtdKSA6IGZvcmtKb2luKHByaWNlT2JzZXJ2YWJsZXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICkuc3Vic2NyaWJlKChpdGVtc1dpdGhQcmljZXM6IHsgaXRlbTogSXRlbTsgcHJpY2U6IFByb2R1Y3RQcmljZSB9W10pID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zV2l0aFByaWNlc0xpc3QgPSBpdGVtc1dpdGhQcmljZXM7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgb25TZWFyY2hJbnB1dENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFN1YmplY3QubmV4dCh0aGlzLnNlYXJjaFN0cmluZyk7XG4gIH1cblxuICBvblNlbGVjdEl0ZW0oaXRlbTogSXRlbSk6IHZvaWQge1xuICAgIHRoaXMucmVwbGFjZUl0ZW1Mb2FkaW5nID0gaXRlbTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgaWYgKHRoaXMuYWRkUHJvZHVjdE1vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1BZGRpdGlvbihpdGVtKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaWdub3JlU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuaWdub3JlZEJhc2tldHNTZXJ2aWNlLnJlbW92ZUluZ3JlZGllbnRGcm9tSWdub3JlZCh0aGlzLmluZ3JlZGllbnQuaWQpO1xuICAgIH1cbiAgICB0aGlzLnByZXZpb3VzSXRlbSA9IHRoaXMuYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtO1xuICAgIGlmICh0aGlzLmJhc2tldEVudHJ5LnN0YXR1cyA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXBsYWNlUmVsYXRpb25zaGlwKHRoaXMuYmFza2V0RW50cnksIGl0ZW0pO1xuICAgICAgdGhpcy5hZGRUb0Jhc2tldChpdGVtKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEl0ZW0oaXRlbTogSXRlbSk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UudXBkYXRlSW5ncmVkaWVudEZyb21CYXNrZXRMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBjb25zdCBkZWxldGVkQmFza2V0RW50cnk6IEJhc2tldEVudHJ5ID0gZGVlcENsb25lV2l0aENsYXNzKHRoaXMuYmFza2V0RW50cnkpO1xuICAgIGRlbGV0ZWRCYXNrZXRFbnRyeS5xdWFudGl0eSA9IDA7XG4gICAgZGVsZXRlZEJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5leHRJZCA9IHRoaXMucHJldmlvdXNJdGVtLmV4dElkO1xuICAgIGNvbnN0IHJlbW92ZUluZ3JlZGllbnQgPSBuZXcgUmVtb3ZlSW5ncmVkaWVudEZyb21SZXBsYWNlQWN0aW9uKFxuICAgICAgZGVsZXRlZEJhc2tldEVudHJ5LFxuICAgICAge30sXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlXG4gICAgKTtcbiAgICBtZXJnZShyZW1vdmVJbmdyZWRpZW50Lm9uVGltZW91dCwgcmVtb3ZlSW5ncmVkaWVudC5vbkVycm9yKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJvbGxiYWNrUmVwbGFjZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuYmFza2V0U3luY2hyb1NlcnZpY2UuYWRkVG9BY3Rpb25MaXN0KFtyZW1vdmVJbmdyZWRpZW50XSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAodGhpcy5pbmdyZWRpZW50ICYmIHRoaXMucmVjaXBlID8gdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRFbnRyeUZyb21JbmdyZWRpZW50KHRoaXMuaW5ncmVkaWVudC5pZCwgK3RoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLCB0cnVlLCBpdGVtLmlkKSA6IG9mKHRoaXMuYmFza2V0RW50cnkpKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKG5ld0VudHJ5OiBCYXNrZXRFbnRyeSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0Jhc2tldEVudHJ5OiBCYXNrZXRFbnRyeSA9IGRlZXBDbG9uZVdpdGhDbGFzcyh0aGlzLmJhc2tldEVudHJ5KTtcbiAgICAgICAgICBuZXdCYXNrZXRFbnRyeS5xdWFudGl0eVRvQWRkID0gbmV3RW50cnkucXVhbnRpdHlUb0FkZDtcbiAgICAgICAgICB0aGlzLnJlcGxhY2VSZWxhdGlvbnNoaXAobmV3QmFza2V0RW50cnksIGl0ZW0pO1xuICAgICAgICAgIGNvbnN0IGFkZEluZ3JlZGllbnRGcm9tUmVwbGFjZSA9IG5ldyBBZGRJbmdyZWRpZW50RnJvbVJlcGxhY2VBY3Rpb24oXG4gICAgICAgICAgICBuZXdCYXNrZXRFbnRyeSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UsXG4gICAgICAgICAgICB0aGlzLmJhc2tldEVudHJpZXNTZXJ2aWNlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBtZXJnZShhZGRJbmdyZWRpZW50RnJvbVJlcGxhY2Uub25UaW1lb3V0LCBhZGRJbmdyZWRpZW50RnJvbVJlcGxhY2Uub25FcnJvcikucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb2xsYmFja1JlcGxhY2UoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhZGRJbmdyZWRpZW50RnJvbVJlcGxhY2Uub25TdWNjZXNzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UudXBkYXRlSW5ncmVkaWVudEZyb21CYXNrZXRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlY2lwZURldGFpbHNTZXJ2aWNlLmhhc1JlcGxhY2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZW1pdFdoZW5SZXF1ZXN0c0VuZGVkKCk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5iYXNrZXRTeW5jaHJvU2VydmljZS5hZGRUb0FjdGlvbkxpc3QoW2FkZEluZ3JlZGllbnRGcm9tUmVwbGFjZV0pO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2VuZFJlcGxhY2VFdmVudCgpKVxuICAgICk7XG4gIH1cblxuICByZXBsYWNlUmVsYXRpb25zaGlwKGJhc2tldEVudHJ5OiBCYXNrZXRFbnRyeSwgaXRlbTogSXRlbSk6IHZvaWQge1xuICAgIGlmIChiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIGJhc2tldEVudHJ5LnJlbW92ZVJlbGF0aW9uc2hpcCgnc2VsZWN0ZWQtaXRlbScsIGJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5pZCk7XG4gICAgfVxuICAgIGJhc2tldEVudHJ5LmFkZFJlbGF0aW9uc2hpcChpdGVtLCAnc2VsZWN0ZWQtaXRlbScpO1xuICB9XG5cbiAgYWRkVG9CYXNrZXQoaXRlbTogSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5jYW5BZGRQcm9kdWN0VG9CYXNrZXQoXG4gICAgICAgIHRoaXMuZ2V0QWRkSW5ncmVkaWVudE1ldGhvZCgpLFxuICAgICAgICB0aGlzLmV2ZW50VHJhY2VcbiAgICAgICkucGlwZShcbiAgICAgICAgZmlsdGVyKHBhc3NlZCA9PiBwYXNzZWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldEVudHJ5RnJvbUluZ3JlZGllbnQodGhpcy5pbmdyZWRpZW50LmlkLCArdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMsIHRydWUsIGl0ZW0uaWQpKVxuICAgICAgKS5zdWJzY3JpYmUoXG4gICAgICAgIChuZXdFbnRyeTogQmFza2V0RW50cnkpID0+IHRoaXMuaGFuZGxlQWRkVG9CYXNrZXRSZXNwb25zZShuZXdFbnRyeSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzUHJvZHVjdERpc2FibGVkKGlkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKCghdGhpcy5pZ25vcmVTZWxlY3RlZCAmJiB0aGlzLmJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbT8uaWQgPT09IGlkKVxuICAgICAgICB8fCB0aGlzLmJhc2tldEVudHJ5LnN0YXR1cyA9PT0gJ291dF9vZl9zdG9jaycpXG4gICAgICAmJiBpbmRleCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWRkSW5ncmVkaWVudE1ldGhvZCgpOiBQYXJzZWRNZXRob2Qge1xuICAgIHJldHVybiB7XG4gICAgICBtZXRob2Q6ICdhZGRJbmdyZWRpZW50VG9CYXNrZXQnLFxuICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgIHJlY2lwZUlkOiB0aGlzLnJlY2lwZS5pZCxcbiAgICAgICAgaW5ncmVkaWVudElkOiB0aGlzLmluZ3JlZGllbnQuaWQsXG4gICAgICAgIGVudHJ5OiB0aGlzLmJhc2tldEVudHJ5LFxuICAgICAgICBldmVudFRyYWNlOiB0aGlzLmV2ZW50VHJhY2UsXG4gICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmdcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBZGRUb0Jhc2tldFJlc3BvbnNlKG5ld0VudHJ5OiBCYXNrZXRFbnRyeSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTG9hZGluZ1N0YXRlcygpO1xuICAgIGNvbnN0IG5ld0Jhc2tldEVudHJ5OiBCYXNrZXRFbnRyeSA9IGRlZXBDbG9uZVdpdGhDbGFzcyh0aGlzLmJhc2tldEVudHJ5KTtcbiAgICBuZXdCYXNrZXRFbnRyeS5xdWFudGl0eVRvQWRkID0gbmV3RW50cnkucXVhbnRpdHlUb0FkZDtcbiAgICBjb25zdCBhZGRJbmdyZWRpZW50ID0gbmV3IEFkZEluZ3JlZGllbnRBY3Rpb24oXG4gICAgICBuZXdCYXNrZXRFbnRyeSxcbiAgICAgIHtcbiAgICAgICAgZXZlbnRUcmFjZTogdGhpcy5ldmVudFRyYWNlLFxuICAgICAgICByZWNpcGVJZDogdGhpcy5yZWNpcGUuaWQsXG4gICAgICAgIGluZ3JlZGllbnRJZDogdGhpcy5pbmdyZWRpZW50LmlkLFxuICAgICAgICBwcmV2aW91c0l0ZW06IHRoaXMucHJldmlvdXNJdGVtLFxuICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoU3RyaW5nXG4gICAgICB9LFxuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZVxuICAgICk7XG4gICAgdGhpcy5oYW5kbGVBZGRJbmdyZWRpZW50QWN0aW9uKGFkZEluZ3JlZGllbnQpO1xuICAgIHRoaXMuYmFza2V0U3luY2hyb1NlcnZpY2UuYWRkVG9BY3Rpb25MaXN0KFthZGRJbmdyZWRpZW50XSk7XG4gICAgLy8gTm8gbmVlZCB0byBzZW5kIGVudHJ5LmFkZGVkIGV2ZW50LCBiZWNhdXNlIGl0IGlzIGRvbmUgaW4gdGhlIGFjdGlvblxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBZGRJbmdyZWRpZW50QWN0aW9uKGFkZEluZ3JlZGllbnQ6IEFkZEluZ3JlZGllbnRBY3Rpb24pOiB2b2lkIHtcbiAgICBtZXJnZShhZGRJbmdyZWRpZW50Lm9uRXJyb3IsIGFkZEluZ3JlZGllbnQub25UaW1lb3V0KS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJvbGxiYWNrUmVwbGFjZSgpO1xuICAgIH0pO1xuICAgIGFkZEluZ3JlZGllbnQub25TdWNjZXNzLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UuaGFzUmVwbGFjZWQgPSB0cnVlO1xuICAgICAgdGhpcy5lbWl0V2hlblJlcXVlc3RzRW5kZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTG9hZGluZ1N0YXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2lwZURldGFpbHNTZXJ2aWNlLmluZ3JlZGllbnRUb0Jhc2tldExvYWRpbmcgPSB0aGlzLmJhc2tldEVudHJ5LnN0YXR1cyA9PT0gJ2luaXRpYWwnO1xuICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2UudXBkYXRlSW5ncmVkaWVudEZyb21CYXNrZXRMb2FkaW5nID0gdGhpcy5iYXNrZXRFbnRyeS5zdGF0dXMgIT09ICdpbml0aWFsJztcbiAgfVxuXG4gIHByaXZhdGUgaXRlbUFkZGl0aW9uKGl0ZW06IEl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmFkZEl0ZW1Ub0Jhc2tldChpdGVtLCB0aGlzLmV2ZW50VHJhY2UpO1xuICAgIHRoaXMuZW1pdFdoZW5SZXF1ZXN0c0VuZGVkKGl0ZW0uaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0V2hlblJlcXVlc3RzRW5kZWQoaXRlbUlkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9hZE9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5iYXNrZXRFbnRyeS5pZCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFkZFByb2R1Y3RNb2RlKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmJhc2tldHNTZXJ2aWNlLml0ZW1XaWxsQmVBZGRlZChpdGVtSWQpLnN1YnNjcmliZShhZGRJdGVtID0+IHtcbiAgICAgICAgaWYgKCFhZGRJdGVtICYmIHRoaXMucmVwbGFjZUl0ZW1Mb2FkaW5nKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGl0ZW1JZCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5iYXNrZXRzU2VydmljZS5pbmdyZWRpZW50V2lsbEJlQWRkZWQodGhpcy5pbmdyZWRpZW50LmlkKS5zdWJzY3JpYmUoYWRkSW5ncmVkaWVudCA9PiB7XG4gICAgICAgIGlmICghYWRkSW5ncmVkaWVudCAmJiB0aGlzLnJlcGxhY2VJdGVtTG9hZGluZykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLmJhc2tldEVudHJ5LmlkKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VuZFJlcGxhY2VFdmVudCgpOiB2b2lkIHtcbiAgICAvLyBUT0RPIGFuYWx5dGljczogZW50cnkuZGVsZXRlZCBhbmQgZW50cnkuYWRkIGV2ZW50cyBzaG91bGQgbm90IGJlIHNlbnQgYWZ0ZXIgZW50cnkucmVwbGFjZWRcbiAgICBjb25zdCBldmVudERhdGEgPSB7XG4gICAgICBlbnRyeV9uYW1lOiB0aGlzLmJhc2tldEVudHJ5Lm5hbWUsXG4gICAgICBuZXdfaXRlbV9pZDogdGhpcy5iYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uaWQsXG4gICAgICBuZXdfaXRlbV9leHRfaWQ6IHRoaXMuYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXNbJ2V4dC1pZCddLFxuICAgICAgbmV3X2l0ZW1fZWFuOiB0aGlzLmJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5lYW4sXG4gICAgICBwcm9kdWN0X3F1YW50aXR5OiB0aGlzLmJhc2tldEVudHJ5LnF1YW50aXR5LnRvU3RyaW5nKCksXG4gICAgICBzZWFyY2hfdGVybTogdGhpcy5zZWFyY2hTdHJpbmcsXG4gICAgICBvbGRfaXRlbV9pZDogdGhpcy5wcmV2aW91c0l0ZW0uaWQsXG4gICAgICBvbGRfaXRlbV9leHRfaWQ6IHRoaXMucHJldmlvdXNJdGVtLmF0dHJpYnV0ZXNbJ2V4dC1pZCddLFxuICAgICAgb2xkX2l0ZW1fZWFuOiB0aGlzLnByZXZpb3VzSXRlbS5lYW5cbiAgICB9O1xuXG4gICAgLy8gT25seSBhZGQgcmVjaXBlX2lkIGlmIGl0IGV4aXN0c1xuICAgIGlmICh0aGlzLnJlY2lwZSAmJiB0aGlzLnJlY2lwZS5pZCkge1xuICAgICAgZXZlbnREYXRhWydyZWNpcGVfaWQnXSA9IHRoaXMucmVjaXBlLmlkO1xuICAgIH1cblxuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoXG4gICAgICAnZW50cnkucmVwbGFjZWQnLFxuICAgICAgdGhpcy5wYXRoLFxuICAgICAgZXZlbnREYXRhXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLml0ZW1zU2VydmljZS5zZWFyY2hGb3JJbmdyZWRpZW50KFxuICAgICAgICB0aGlzLmluZ3JlZGllbnQ/LmlkID8gbnVsbCA6IHRoaXMuYmFza2V0RW50cnkubmFtZSwgdGhpcy5pbmdyZWRpZW50Py5pZCwgK3RoaXMucmVjaXBlPy5tb2RpZmllZEd1ZXN0cykucGlwZShcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXNTZXJ2aWNlLm5ld0NvbGxlY3Rpb24oKTtcbiAgICAgICAgICBpdGVtcy5maWxsKHJlc3BvbnNlKTtcbiAgICAgICAgICByZXR1cm4gaXRlbXMuZGF0YTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcChpdGVtcyA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtICYmIGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRoaXMuYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtPy5pZCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh0aGlzLmJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHByaWNlT2JzZXJ2YWJsZXMgPSBpdGVtcy5tYXAoaXRlbSA9PlxuICAgICAgICAgICAgdGhpcy5pdGVtc1NlcnZpY2UuZ2V0UHJpY2VGb3JJdGVtKGl0ZW0uaWQpLnBpcGUoXG4gICAgICAgICAgICAgIG1hcChwcmljZSA9PiAoeyBpdGVtLCBwcmljZSB9KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBwcmljZU9ic2VydmFibGVzLmxlbmd0aCA9PT0gMCA/IG9mKFtdKSA6IGZvcmtKb2luKHByaWNlT2JzZXJ2YWJsZXMpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKGl0ZW1zV2l0aFByaWNlczogeyBpdGVtOiBJdGVtOyBwcmljZTogUHJvZHVjdFByaWNlIH1bXSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXNXaXRoUHJpY2VzTGlzdCA9IHRoaXMubW92ZVNlbGVjdGVkSXRlbVRvRnJvbnQoaXRlbXNXaXRoUHJpY2VzKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVTZWxlY3RlZEl0ZW1Ub0Zyb250KGl0ZW1zV2l0aFByaWNlczogeyBpdGVtOiBJdGVtOyBwcmljZTogUHJvZHVjdFByaWNlIH1bXSk6IHsgaXRlbTogSXRlbTsgcHJpY2U6IFByb2R1Y3RQcmljZSB9W10ge1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbUlkID0gdGhpcy5iYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0/LmlkO1xuXG4gICAgcmV0dXJuIGl0ZW1zV2l0aFByaWNlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoYS5pdGVtLmlkID09PSBzZWxlY3RlZEl0ZW1JZCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICBpZiAoYi5pdGVtLmlkID09PSBzZWxlY3RlZEl0ZW1JZCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByb2xsYmFja1JlcGxhY2UoKSB7XG4gICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS5pbmdyZWRpZW50VG9CYXNrZXRMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5yZWNpcGVEZXRhaWxzU2VydmljZS51cGRhdGVJbmdyZWRpZW50RnJvbUJhc2tldExvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnJlcGxhY2VJdGVtTG9hZGluZyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmJhc2tldEVudHJ5LnJlbGF0aW9uc2hpcHNbJ3NlbGVjdGVkLWl0ZW0nXS5kYXRhID0gdGhpcy5wcmV2aW91c0l0ZW07XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMub25DbG9zZSgpO1xuICB9XG59XG4iLCI8IS0tIEhFQURFUiAtLT5cbjxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9faGVhZGVyIG1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsXCI+XG4gIDxidXR0b24gY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBnaG9zdCBzcXVhcmVcIiAoY2xpY2spPVwib25DbG9zZSgpXCIgYXJpYS1sYWJlbD1cIkZlcm1lclwiPlxuICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgcHJpbWFyeUNvbG9yPVwidmFyKC0tbWlhbS1kcy1jb2xvci1wcmltYXJ5LTUwMClcIj48L25nLW1pYW0taWNvbj5cbiAgPC9idXR0b24+XG4gIDxzcGFuICpuZ0lmPVwiYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtICYmICFpZ25vcmVTZWxlY3RlZCAmJiAhYWRkUHJvZHVjdE1vZGUgZWxzZSBhZGRQcm9kdWN0XCIgaTE4bj5SZW1wbGFjZXIgdW4gcHJvZHVpdDwvc3Bhbj5cbiAgPG5nLXRlbXBsYXRlICNhZGRQcm9kdWN0PlxuICAgIDxzcGFuIGkxOG4+QWpvdXRlciB1biBwcm9kdWl0PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX3RvcC1jb250YWluZXJcIj5cbiAgPCEtLSBTRUFSQ0ggLS0+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fc2VhcmNoYmFyXCI+XG4gICAgPG5nLW1pYW0taWNvblxuICAgICAgW2ljb25OYW1lXT1cImljb24uU2VhcmNoXCJcbiAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgPC9uZy1taWFtLWljb24+XG4gICAgPGlucHV0XG4gICAgICAqbmdJZj1cIiFhZGRQcm9kdWN0TW9kZVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBpMThuLXBsYWNlaG9sZGVyXG4gICAgICBwbGFjZWhvbGRlcj1cIlJlY2hlcmNoZXIgdW4gcHJvZHVpdCBkZSBzdWJzdGl0dXRpb25cIlxuICAgICAgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fc2VhcmNoYmFyX19pbnB1dCBtaWFtLWRzLXRleHQgc2l6ZS1tIHdlaWdodC1sXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoU3RyaW5nXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoSW5wdXRDaGFuZ2UoKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiUmVjaGVyY2hlciB1biBwcm9kdWl0IGRlIHN1YnN0aXR1dGlvblwiXG4gICAgPlxuICAgIDxpbnB1dFxuICAgICAgKm5nSWY9XCJhZGRQcm9kdWN0TW9kZVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBpMThuLXBsYWNlaG9sZGVyXG4gICAgICBwbGFjZWhvbGRlcj1cIkplIGNoZXJjaGUgdW4gcHJvZHVpdFwiXG4gICAgICBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19zZWFyY2hiYXJfX2lucHV0IG1pYW0tZHMtdGV4dCBzaXplLW0gd2VpZ2h0LWxcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hTdHJpbmdcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hJbnB1dENoYW5nZSgpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJKZSBjaGVyY2hlIHVuIHByb2R1aXRcIlxuICAgID5cbiAgICA8ZGl2IFtjbGFzcy5oaWRkZW5dPVwiIWlzTG9hZGluZ1wiIGNsYXNzPVwibWlhbS1kcy1sb2FkZXJcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gUFJPRFVDVCBORUVERUQgQkFOTkVSIC0tPlxuICA8ZGl2ICpuZ0lmPVwiIWFkZFByb2R1Y3RNb2RlXCIgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1iYW5uZXJcIj5cbiAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fYmFubmVyLXByb2R1Y3QtbmFtZSBtaWFtLWRzLXRleHQgc2l6ZS1zXCI+XG4gICAgPHNwYW4+e3sgYmFza2V0RW50cnkubmFtZSB8IGNhcGl0YWxpemVGaXJzdExldHRlciB9fSA6PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Jhbm5lci1xdWFudGl0eSBtaWFtLWRzLXRleHQgd2VpZ2h0LXh4bFwiPlxuICAgICAge3sgbW9kaWZpZWRJbmdRdHkgfHwgaW5ncmVkaWVudD8ucXVhbnRpdHkgfX0ge3sgaW5ncmVkaWVudD8uYXR0cmlidXRlcy51bml0IH19XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIFBST0RVQ1QgTElTVCBHUklEIC0tPlxuPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LWxpc3RcIiBbY2xhc3MuZnVsbC13aWR0aF09XCJpdGVtc1dpdGhQcmljZXNMaXN0Lmxlbmd0aCA8IDJcIj5cbiAgPCEtLSBQUk9EVUNUIENBUkQgLS0+XG4gIDxkaXZcbiAgICAqbmdGb3I9XCJsZXQgaXRlbVdpdGhQcmljZSBvZiBpdGVtc1dpdGhQcmljZXNMaXN0LCBsZXQgaSA9IGluZGV4XCJcbiAgICBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LWl0ZW1cIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdzZWxlY3RlZCc6IGlzUHJvZHVjdERpc2FibGVkKGl0ZW1XaXRoUHJpY2UuaXRlbS5pZCwgaSlcbiAgICB9XCJcbiAgPlxuICAgIDxuZy1taWFtLXByb21vdGlvbi1iYWRnZSBbcHJpY2VEYXRhXT1cIml0ZW1XaXRoUHJpY2UucHJpY2VcIiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9tb3Rpb25zXCI+PC9uZy1taWFtLXByb21vdGlvbi1iYWRnZT5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2NhcmQtdXBwZXItc2VjdGlvblwiPlxuICAgICAgPCEtLSBQUk9EVUNUIElNQUdFIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LWltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW2FsdF09XCJpdGVtV2l0aFByaWNlLml0ZW0uYXR0cmlidXRlcy5uYW1lIHx8ICdJbWFnZSBkdSBwcm9kdWl0J1wiXG4gICAgICAgICAgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1pbWFnZVwiXG4gICAgICAgICAgW3NyY109XCJpdGVtV2l0aFByaWNlLml0ZW0uYXR0cmlidXRlcy5pbWFnZVwiXG4gICAgICAgICAgKGVycm9yKT1cIiRldmVudC50YXJnZXRbJ3NyYyddID0gY29udGV4dFNlcnZpY2UuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlXCJcbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFBST0RVQ1QgSU5GTyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1pbmZvXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1icmFuZCBtaWFtLWRzLXRleHQgc2l6ZS14cyB3ZWlnaHQteGxcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19wcm9kdWN0LWJyYW5kLXRleHRcIj57eyBpdGVtV2l0aFByaWNlLml0ZW0uYXR0cmlidXRlcy5icmFuZCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1uYW1lIG1pYW0tZHMtdGV4dCBzaXplLXhzXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1uYW1lLXRleHRcIj57eyBpdGVtV2l0aFByaWNlLml0ZW0uYXR0cmlidXRlcy5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLW1pYW0tcHJvZHVjdC1iYWRnZXNcbiAgICAgICAgICBbaXNTcG9uc29yZWRdPVwiaXRlbVdpdGhQcmljZS5pdGVtLmF0dHJpYnV0ZXMuc3BvbnNvcmVkXCJcbiAgICAgICAgICBbaXRlbV09XCJpdGVtV2l0aFByaWNlLml0ZW1cIlxuICAgICAgICAgIFtwcmljZV09XCJpdGVtV2l0aFByaWNlLnByaWNlXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLW1pYW0tcHJvZHVjdC1iYWRnZXM+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2NhcmQtbG93ZXItc2VjdGlvblwiPlxuICAgICAgPCEtLSBQUk9EVUNUIFBSSUNFIC0tPlxuICAgICAgPG5nLW1pYW0tcHJpY2VcbiAgICAgICAgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fcHJvZHVjdC1wcmljZSBtaWFtLWRzLXRleHQgc2l6ZS1tIHdlaWdodC14eGxcIlxuICAgICAgICBbb2xkUHJpY2VdPVwicHJpY2VTZXJ2aWNlLmdldE9sZFByaWNlKGl0ZW1XaXRoUHJpY2UucHJpY2UpIHwgY3VycmVuY3k6IGl0ZW1XaXRoUHJpY2UuaXRlbS5hdHRyaWJ1dGVzLmN1cnJlbmN5XCJcbiAgICAgICAgW3ByaWNlXT1cInByaWNlU2VydmljZS5nZXRDdXJyZW50UHJpY2UoaXRlbVdpdGhQcmljZS5wcmljZSkgfCBjdXJyZW5jeTogaXRlbVdpdGhQcmljZS5pdGVtLmF0dHJpYnV0ZXMuY3VycmVuY3lcIj5cbiAgICAgIDwvbmctbWlhbS1wcmljZT5cbiAgICAgIDwhLS0gUFJPRFVDVCBDVEEgLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2N0YSBtaWFtLWRzLWJ1dHRvbiBzbWFsbCBwcmltYXJ5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzUHJvZHVjdERpc2FibGVkKGl0ZW1XaXRoUHJpY2UuaXRlbS5pZCwgaSlcIlxuICAgICAgICAoY2xpY2spPVwib25TZWxlY3RJdGVtKGl0ZW1XaXRoUHJpY2UuaXRlbSlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tZHMtbG9hZGVyXCJcbiAgICAgICAgICAgICAqbmdJZj1cInJlcGxhY2VJdGVtTG9hZGluZyAmJiByZXBsYWNlSXRlbUxvYWRpbmcgPT09IGl0ZW1XaXRoUHJpY2UuaXRlbTsgZWxzZSBkZWZhdWx0U2VsZWN0QnV0dG9uXCI+PC9kaXY+XG4gICAgICAgIDwhLS0gTk8gU1VQUExJRVIgQ1RBIExBQkVMIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTZWxlY3RCdXR0b24+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0U2VydmljZS5ub1N1cHBsaWVyOyBlbHNlIHdpdGhTdXBwbGllclwiPlxuICAgICAgICAgICAgQWpvdXRlclxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8IS0tIFdJVEggU1VQUExJRVIgQ1RBIExBQkVMIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2l0aFN1cHBsaWVyPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbSAmJiAhaWdub3JlU2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpID09PSAwICYmIGJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbS5pZCA9PT0gaXRlbVdpdGhQcmljZS5pdGVtLmlkXCIgaTE4bj5Tw6lsZWN0aW9ubsOpPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImkgIT09IDAgfHwgYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmlkICE9PSBpdGVtV2l0aFByaWNlLml0ZW0uaWRcIiBpMThuPlPDqWxlY3Rpb25uZXI8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4gKm5nSWY9XCIhYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtIHx8IGlnbm9yZVNlbGVjdGVkXCI+QWpvdXRlciBhdSBwYW5pZXI8L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBJU1NVRVMgLS0+XG4gIDwhLS0gTk8gU1VCU1RJVFVUSU9OIFBST0RVQ1QgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nICYmIGl0ZW1zV2l0aFByaWNlc0xpc3QubGVuZ3RoID09PSAxICYmICFzZWFyY2hTdHJpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Vycm9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2Vycm9yLWltYWdlLWNvbnRhaW5lciBzbWFsbC1pbWdcIj5cbiAgICAgICAgPGltZyBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19lcnJvci1pbWFnZVwiIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaW1hZ2VzL3Byb2R1Y3QtaXNzdWUucG5nXCIgYWx0PVwiUHJvYmzDqG1lIGRlIHByb2R1aXRcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19pc3N1ZS1lbnRyeS1uYW1lXCI+XCJ7eyBiYXNrZXRFbnRyeS5uYW1lIH19XCI8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19pc3N1ZS10aXRsZSBtaWFtLXJlcGxhY2UtaXRlbV9faXNzdWUtdGl0bGVfX25vLXN1YnN0aXR1dGlvblwiPjxzcGFuIGkxOG4+QXVjdW4gcHJvZHVpdCBkZSBzdWJzdGl0dXRpb24gdHJvdXbDqTwvc3Bhbj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gTk8gUFJPRFVDVFMgRk9VTkQgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWRkUHJvZHVjdE1vZGUgJiYgIWlzTG9hZGluZyAmJiBpdGVtc1dpdGhQcmljZXNMaXN0Lmxlbmd0aCA9PT0gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fZXJyb3JcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fZXJyb3ItaW1hZ2UtY29udGFpbmVyXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fZXJyb3ItaW1hZ2VcIiBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9wcm9kdWN0LWlzc3VlLnBuZ1wiIGFsdD1cIlByb2Jsw6htZSBkZSBwcm9kdWl0XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9faXNzdWUtc2VhcmNoLXN0cmluZ1wiPlwie3sgc2VhcmNoU3RyaW5nIH19XCI8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVwbGFjZS1pdGVtX19pc3N1ZS10aXRsZSBtaWFtLXJlcGxhY2UtaXRlbV9faXNzdWUtdGl0bGVfX25vdC1mb3VuZFwiPjxzcGFuIGkxOG4+QXVjdW4gcHJvZHVpdCB0cm91dsOpIHBvdXIgY2V0dGUgcmVjaGVyY2hlPC9zcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2lzc3VlLWRlc2NyaXB0aW9uIG1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsXCI+PHNwYW4gaTE4bj5Fc3NheWV6IGF2ZWMgdW4gYXV0cmUgbW90LWNsw6k8L3NwYW4+PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEFERCBQUk9EVUNUIERFRkFVTFQgVklFVyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkZFByb2R1Y3RNb2RlICYmICFpc0xvYWRpbmcgJiYgaXRlbXNXaXRoUHJpY2VzTGlzdC5sZW5ndGggPT09IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2FkZC1wcm9kdWN0LWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fYWRkLXByb2R1Y3QtaW1hZ2UtY29udGFpbmVyXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlcGxhY2UtaXRlbV9fYWRkLXByb2R1Y3QtaW1hZ2VcIiBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL1NlYXJjaC5zdmdcIiBhbHQ9XCJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBpMThuIGNsYXNzPVwibWlhbS1yZXBsYWNlLWl0ZW1fX2FkZC1wcm9kdWN0LXRpdGxlXCI+VHJvdXZlciB1bmUgbGlzdGUgZGUgcHJvZHVpdCBlbiBlZmZlY3R1YW50IHZvdHJlIHJlY2hlcmNoZTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==