buildingproduct-library 0.2.76 → 0.2.78

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 (116) hide show
  1. package/assets/images/pdf-icon.svg +45 -0
  2. package/{buildingproduct-library-0.2.76.tgz → buildingproduct-library-0.2.78.tgz} +0 -0
  3. package/bundles/buildingproduct-library.umd.js +3471 -2489
  4. package/bundles/buildingproduct-library.umd.js.map +1 -1
  5. package/esm2015/lib/account-dropdown/account-dropdown.component.js +38 -4
  6. package/esm2015/lib/account-dropdown/account-dropdown.service.js +3 -3
  7. package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +22 -13
  8. package/esm2015/lib/checkout/checkout.module.js +10 -2
  9. package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +7 -28
  10. package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +2 -3
  11. package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +1 -1
  12. package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +86 -16
  13. package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +72 -15
  14. package/esm2015/lib/checkout/order-review/order-review.component.js +3 -27
  15. package/esm2015/lib/contact-us/contact-us.component.js +1 -1
  16. package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +2 -2
  17. package/esm2015/lib/custom-cart/custom-cart.component.js +3 -27
  18. package/esm2015/lib/custom-cart/custom-cart.module.js +3 -3
  19. package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +110 -52
  20. package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +2 -2
  21. package/esm2015/lib/custom-navigation/custom-navigation.component.js +122 -0
  22. package/esm2015/lib/custom-navigation/custom-navigation.module.js +3 -3
  23. package/esm2015/lib/custom-order-details/custom-order-details.component.js +26 -21
  24. package/esm2015/lib/custom-order-details/custom-order-details.module.js +15 -7
  25. package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +1 -1
  26. package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +105 -22
  27. package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +89 -23
  28. package/esm2015/lib/custom-order-history/custom-order-history.component.js +49 -22
  29. package/esm2015/lib/custom-order-history/custom-order-history.module.js +10 -2
  30. package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +1 -1
  31. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +2 -2
  32. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.js +2 -2
  33. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +4 -28
  34. package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +1 -1
  35. package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +6 -4
  36. package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +2 -2
  37. package/esm2015/lib/custom-saved-cart/saved-cart.service.js +11 -2
  38. package/esm2015/lib/custom-search/custom-search.component.js +3 -3
  39. package/esm2015/lib/custom-user-account/custom-user-account.component.js +2 -2
  40. package/esm2015/lib/directives/custom-directives.module.js +1 -1
  41. package/esm2015/lib/directives/custom-paginatior.directive.js +101 -31
  42. package/esm2015/lib/find-store/find-store.component.js +2 -2
  43. package/esm2015/lib/help-support/help-support.component.js +1 -1
  44. package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +2 -2
  45. package/esm2015/lib/my-account/account-statements/account-statements.component.js +2 -2
  46. package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +51 -17
  47. package/esm2015/lib/my-account/my-account.component.js +2 -2
  48. package/esm2015/lib/my-account/my-account.module.js +11 -3
  49. package/esm2015/lib/my-team/my-team.component.js +25 -17
  50. package/esm2015/lib/my-team/my-team.module.js +11 -7
  51. package/esm2015/lib/services/endPointURL.js +6 -1
  52. package/esm2015/lib/services/user-account-detail-service.service.js +172 -4
  53. package/esm2015/lib/shared/CustomProduct.js +5 -4
  54. package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +20 -11
  55. package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +17 -7
  56. package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +1 -1
  57. package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +198 -102
  58. package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +64 -22
  59. package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +129 -80
  60. package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +59 -9
  61. package/esm2015/lib/shared/regEx.validator.js +3 -1
  62. package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +1 -1
  63. package/esm2015/lib/shared/shared-components.module.js +21 -10
  64. package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +116 -31
  65. package/esm2015/lib/spa-custom-header.module.js +14 -13
  66. package/esm2015/public-api.js +2 -2
  67. package/fesm2015/buildingproduct-library.js +1996 -1081
  68. package/fesm2015/buildingproduct-library.js.map +1 -1
  69. package/lib/checkout/add-new-address/add-new-address.component.d.ts +1 -0
  70. package/lib/checkout/checkout.module.d.ts +12 -10
  71. package/lib/checkout/custom-checkout/custom-checkout.component.d.ts +2 -5
  72. package/lib/checkout/order-review/order-review-grid/order-review-grid.component.d.ts +8 -2
  73. package/lib/checkout/order-review/order-review-list/order-review-list.component.d.ts +5 -2
  74. package/lib/checkout/order-review/order-review.component.d.ts +1 -4
  75. package/lib/custom-cart/custom-cart.component.d.ts +1 -4
  76. package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +11 -3
  77. package/lib/custom-navigation/{custom-navigation/custom-navigation.component.d.ts → custom-navigation.component.d.ts} +1 -1
  78. package/lib/custom-navigation/custom-navigation.module.d.ts +1 -1
  79. package/lib/custom-order-details/custom-order-details.component.d.ts +5 -2
  80. package/lib/custom-order-details/custom-order-details.module.d.ts +6 -4
  81. package/lib/custom-order-details/order-detail-grid/order-detail-grid.component.d.ts +14 -4
  82. package/lib/custom-order-details/order-detail-list/order-detail-list.component.d.ts +10 -3
  83. package/lib/custom-order-history/custom-order-history.component.d.ts +3 -0
  84. package/lib/custom-order-history/custom-order-history.module.d.ts +8 -6
  85. package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.d.ts +1 -4
  86. package/lib/custom-saved-cart/custom-saved-cart.component.d.ts +1 -0
  87. package/lib/custom-saved-cart/saved-cart.service.d.ts +1 -0
  88. package/lib/custom-search/custom-search.component.d.ts +1 -1
  89. package/lib/directives/custom-paginatior.directive.d.ts +6 -1
  90. package/lib/find-store/find-store.component.d.ts +1 -1
  91. package/lib/my-account/account-statements/account-statements.component.d.ts +1 -1
  92. package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +8 -2
  93. package/lib/my-account/my-account.component.d.ts +1 -1
  94. package/lib/my-account/my-account.module.d.ts +7 -5
  95. package/lib/my-team/my-team.component.d.ts +2 -0
  96. package/lib/my-team/my-team.module.d.ts +7 -6
  97. package/lib/services/endPointURL.d.ts +3 -0
  98. package/lib/services/user-account-detail-service.service.d.ts +27 -1
  99. package/lib/shared/CustomProduct.d.ts +1 -0
  100. package/lib/shared/active-saved-cart/active-saved-cart.component.d.ts +3 -1
  101. package/lib/shared/custom-breadcrum/custom-breadcrum.component.d.ts +3 -1
  102. package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +17 -9
  103. package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +8 -6
  104. package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +11 -3
  105. package/lib/shared/date-range-picker/date-range-picker.component.d.ts +11 -3
  106. package/lib/shared/regEx.validator.d.ts +2 -0
  107. package/lib/shared/shared-components.module.d.ts +10 -8
  108. package/lib/shared/shared-download-order/shared-download-order.component.d.ts +6 -4
  109. package/lib/spa-custom-header.module.d.ts +7 -6
  110. package/package.json +3 -1
  111. package/public-api.d.ts +1 -1
  112. package/esm2015/lib/custom-navigation/custom-navigation/custom-navigation.component.js +0 -121
  113. package/esm2015/lib/preference/preference.component.js +0 -19
  114. package/esm2015/lib/preference/preference.module.js +0 -45
  115. package/lib/preference/preference.component.d.ts +0 -8
  116. package/lib/preference/preference.module.d.ts +0 -10
@@ -12,9 +12,8 @@ export class OrderReviewListComponent {
12
12
  this.showDetails = [];
13
13
  this.hasBundle = false;
14
14
  this.updateCartEntry = new EventEmitter();
15
- this.environment = sessionStorage.getItem('env');
16
- this.env = JSON.parse(this.environment);
17
- this.productInfos = [];
15
+ this.env = sessionStorage.getItem('env');
16
+ this.environment = JSON.parse(this.env);
18
17
  this.isProductInfoAvilable = false;
19
18
  }
20
19
  ngOnInit() {
@@ -34,31 +33,61 @@ export class OrderReviewListComponent {
34
33
  showHide(ind) {
35
34
  this.showDetails[ind] = !this.showDetails[ind];
36
35
  }
36
+ // Check if any value is empty or undefined
37
+ isNullOrEmpty(value) {
38
+ return value == null || value == undefined || value == "";
39
+ }
37
40
  // Get the Image Details based on Products
38
41
  getImageDetails(cartDetails, thumbnail = true) {
39
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
42
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
40
43
  let imageUrl = (_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.images;
41
44
  if (this.isCardData) {
42
- imageUrl = (_c = (_b = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _b === void 0 ? void 0 : _b.images) === null || _c === void 0 ? void 0 : _c.find((img) => img.format == "cartIcon");
45
+ //imageUrl = cartDetails?.product?.images?.find((img: any) => img.format == "cartIcon");
46
+ const colorCode = (cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.configurationInfos) || (cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.configurationInfos[0])
47
+ ? (_c = (_b = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.configurationInfos[0]) === null || _b === void 0 ? void 0 : _b.configurationValue) === null || _c === void 0 ? void 0 : _c.split("|")[0]
48
+ : "";
49
+ imageUrl = (_e = (_d = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _d === void 0 ? void 0 : _d.images) === null || _e === void 0 ? void 0 : _e.filter((img) => {
50
+ var _a, _b;
51
+ return ((img === null || img === void 0 ? void 0 : img.format) == "cartIcon" && (img === null || img === void 0 ? void 0 : img.colorCode) == colorCode) ||
52
+ ((img === null || img === void 0 ? void 0 : img.format) == "cartIcon" &&
53
+ this.isNullOrEmpty(colorCode) &&
54
+ ((_b = (_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.images) === null || _b === void 0 ? void 0 : _b.length) <= 4);
55
+ });
43
56
  }
44
57
  else {
45
- imageUrl = (_f = (_e = (_d = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _d === void 0 ? void 0 : _d.images) === null || _e === void 0 ? void 0 : _e.GALLERY) === null || _f === void 0 ? void 0 : _f.cartIcon;
58
+ imageUrl = (_h = (_g = (_f = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _f === void 0 ? void 0 : _f.images) === null || _g === void 0 ? void 0 : _g.GALLERY) === null || _h === void 0 ? void 0 : _h.cartIcon;
46
59
  }
47
60
  let srcUrl;
48
61
  if ((cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) &&
49
- ((_g = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) === null || _g === void 0 ? void 0 : _g.length) &&
50
- ((_h = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _h === void 0 ? void 0 : _h.flashingProduct)) {
62
+ ((_j = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) === null || _j === void 0 ? void 0 : _j.length) &&
63
+ ((_k = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _k === void 0 ? void 0 : _k.flashingProduct)) {
51
64
  srcUrl =
52
- thumbnail && ((_j = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) === null || _j === void 0 ? void 0 : _j.length) > 1
53
- ? (_k = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments[1]) === null || _k === void 0 ? void 0 : _k.downloadURL
54
- : (_l = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments[0]) === null || _l === void 0 ? void 0 : _l.downloadURL;
65
+ thumbnail && ((_l = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments) === null || _l === void 0 ? void 0 : _l.length) > 1
66
+ ? (_m = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments[1]) === null || _m === void 0 ? void 0 : _m.downloadURL
67
+ : (_o = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.attachments[0]) === null || _o === void 0 ? void 0 : _o.downloadURL;
55
68
  imageUrl = {
56
- url: (_m = (this.env.occBaseUrl.slice(0, this.env.occBaseUrl.length - 1) +
57
- srcUrl)) === null || _m === void 0 ? void 0 : _m.replace('&attachment=true', ''),
69
+ url: (_q = (((_p = this.environment.occBaseUrl) === null || _p === void 0 ? void 0 : _p.slice(0, this.environment.occBaseUrl.length - 1)) +
70
+ srcUrl)) === null || _q === void 0 ? void 0 : _q.replace("&attachment=true", ""),
58
71
  };
59
72
  }
60
73
  return imageUrl;
61
74
  }
75
+ getColourDetails(configInfo, type) {
76
+ var _a, _b, _c, _d;
77
+ let name;
78
+ let background;
79
+ if (configInfo && (configInfo === null || configInfo === void 0 ? void 0 : configInfo.length) > 0) {
80
+ const colour = configInfo === null || configInfo === void 0 ? void 0 : configInfo.filter((col) => {
81
+ var _a;
82
+ return ((_a = col === null || col === void 0 ? void 0 : col.configurationLabel) === null || _a === void 0 ? void 0 : _a.toLowerCase()) == "color";
83
+ });
84
+ if (colour && (colour === null || colour === void 0 ? void 0 : colour.length)) {
85
+ name = (_b = (_a = colour[0]) === null || _a === void 0 ? void 0 : _a.configurationValue) === null || _b === void 0 ? void 0 : _b.split('|')[1];
86
+ background = (_d = (_c = colour[0]) === null || _c === void 0 ? void 0 : _c.configurationValue) === null || _d === void 0 ? void 0 : _d.split('|')[2];
87
+ }
88
+ }
89
+ return (type == "background") ? background : name;
90
+ }
62
91
  viewImage(event, cartDetails) {
63
92
  var _a;
64
93
  event.preventDefault();
@@ -74,9 +103,37 @@ export class OrderReviewListComponent {
74
103
  const mimeArray = ["image/png", "image/jpg", "image/jpeg"];
75
104
  return mimeArray.includes(mimeType);
76
105
  }
106
+ hasColour(cartDetails) {
107
+ var _a, _b, _c, _d, _e, _f, _g, _h;
108
+ if ((_a = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _a === void 0 ? void 0 : _a.finishedProduct) {
109
+ const code = (_b = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _b === void 0 ? void 0 : _b.code;
110
+ const colour = (_d = (_c = cartDetails === null || cartDetails === void 0 ? void 0 : cartDetails.product) === null || _c === void 0 ? void 0 : _c.variantOptions) === null || _d === void 0 ? void 0 : _d.filter((item) => item.code == code);
111
+ if (colour && ((_e = colour[0]) === null || _e === void 0 ? void 0 : _e.colours) && ((_g = (_f = colour[0]) === null || _f === void 0 ? void 0 : _f.colours) === null || _g === void 0 ? void 0 : _g.length) > 0) {
112
+ cartDetails.colour = (_h = colour[0]) === null || _h === void 0 ? void 0 : _h.colours[0];
113
+ return true;
114
+ }
115
+ }
116
+ return false;
117
+ }
118
+ // Get Summary Heading
119
+ getClassifications(data) {
120
+ let featureArray = [];
121
+ data === null || data === void 0 ? void 0 : data.forEach((element) => {
122
+ element === null || element === void 0 ? void 0 : element.features.forEach((feature) => {
123
+ var _a, _b, _c;
124
+ if (feature === null || feature === void 0 ? void 0 : feature.featureUnit) {
125
+ featureArray.push(((_a = feature === null || feature === void 0 ? void 0 : feature.featureValues[0]) === null || _a === void 0 ? void 0 : _a.value) + ' ' + ((_b = feature === null || feature === void 0 ? void 0 : feature.featureUnit) === null || _b === void 0 ? void 0 : _b.symbol));
126
+ }
127
+ else {
128
+ featureArray.push((_c = feature === null || feature === void 0 ? void 0 : feature.featureValues[0]) === null || _c === void 0 ? void 0 : _c.value);
129
+ }
130
+ });
131
+ });
132
+ return featureArray === null || featureArray === void 0 ? void 0 : featureArray.join(" | ");
133
+ }
77
134
  }
78
135
  OrderReviewListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: OrderReviewListComponent, deps: [{ token: i1.CartService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
79
- OrderReviewListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: OrderReviewListComponent, selector: "app-order-review-list", inputs: { cartDetails: "cartDetails", isCardData: "isCardData" }, outputs: { updateCartEntry: "updateCartEntry" }, ngImport: i0, template: "<div class=\"loading \" *ngIf=\"showWaitCursor | async \">Loading&#8230;</div>\r\n<div class=\"revieworder-table-container\">\r\n <div class=\"row revieworder-header-container\">\r\n <div class=\"col-sm-4 py-2\">ITEM</div>\r\n <div class=\"col-sm-2 py-2\">JOB REFERENCE</div>\r\n <div class=\"col-sm-2 py-2\">TOTAL QTY</div>\r\n <div class=\"col-sm-2 py-2\">UNIT PRICE</div>\r\n <div class=\"col-sm-2 py-2\">TOTAL PRICE</div>\r\n </div>\r\n <div *ngFor=\"let cart of cartDetails;let i = index\">\r\n <div class=\"row revieworder-body-container\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"row py-3 product-image-container\">\r\n <div class=\"col-sm-4 p-md-0 col-lg-2\">\r\n <!-- <cx-media [container]=\"cart?.product?.images\" format=\"cartIcon\" role=\"presentation\"></cx-media> -->\r\n <div class=\"product-img\">\r\n <ng-container\r\n *ngIf=\"\r\n cartDetails[i]?.product?.flashingProduct;\r\n else normalImage\r\n \"\r\n >\r\n <a data-toggle=\"modal\" class=\"flashing-expand\" (click)=\"viewImage($event,cartDetails[i])\" [attr.data-target]=\"'#imageModal'\" *ngIf=\"hasImage(cartDetails[i]);else hasPdf\">\r\n <cx-media\r\n [container]=\"getImageDetails(cartDetails[i])\"\r\n format=\"cartIcon\"\r\n role=\"presentation\"\r\n ></cx-media>\r\n </a>\r\n <ng-template #hasPdf>\r\n <a class=\"flashing-expand flashing-open\" [href]=\"getPdfLink(cartDetails[i])\" target=\"_blank\">\r\n <img class=\"pdf-icon\" src=\"../../../../../assets/images/pdf-icon.svg\" alt=\"Click to open PDF\" title=\"Click to open PDF\" />\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #normalImage>\r\n <cx-media\r\n [container]=\"getImageDetails(cartDetails[i])\"\r\n format=\"cartIcon\"\r\n role=\"presentation\"\r\n ></cx-media>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8 col-lg-10\">\r\n <p class=\" reviewproduct-name mb-2\">{{cart?.product?.name}}</p>\r\n <p class=\"sku-text m-0\">SKU: {{cart?.product?.code }}</p>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"cart?.product?.classifications\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 pl-md-0 mb-2\">\r\n <span *ngFor=\"let attributes of cart?.product && cart?.product?.classifications && cart?.product?.classifications[0] && cart?.product?.classifications[0]?.features;last as isLast\">\r\n {{attributes?.featureValues[0]?.value }} <span *ngIf=\"!isLast\"> | </span>\r\n </span>\r\n mm\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{cart?.jobReference || '-'}}\r\n </div>\r\n <div class=\"col-sm-2 py-3\">{{cart.quantityDouble}} {{cart?.basePrice?.unitType}}</div>\r\n <div class=\"col-sm-2 py-3\">{{cart?.basePrice?.formattedValue}}/{{cart?.basePrice?.unitType}}</div>\r\n <div class=\"col-sm-2 py-3\">{{cart?.totalPrice?.formattedValue}} <span class=\"d-block\">excl GST</span></div>\r\n <div class=\"col-sm-12 pl-md-0\">\r\n <ng-container *ngIf=\"cart?.configurationInfos.length\">\r\n <p class=\"colors-paragraph mb-0\">\r\n <span class=\"revieworder-color mr-3\"\r\n [ngStyle]=\"{ background: cart?.configurationInfos[0]?.configurationValue.split('|') | slice:2}\"></span>\r\n {{cart?.configurationInfos[0]?.configurationValue.split('|') | slice:1:2}}\r\n </p>\r\n </ng-container>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos.length>0\">\r\n <p class=\"m-0\">\r\n <!-- TODO: data-target,aria-controls and id should should come as dynamic -->\r\n <a href=\"javascript:void(0)\" (click)=\"showHide(i)\" class=\"see-more-link\">\r\n {{showDetails[i] == true ? 'Hide' : 'See'}} more details\r\n </a>\r\n </p>\r\n <div class=\"revieworder-collapse\" *ngIf=\"showDetails[i]\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6 bundle-details\">\r\n <div class=\"row bundle-details-header\">\r\n <div class=\"col-3\">Quantity</div>\r\n <div class=\"col-3\">Length (LM)</div>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos[i]?.bundleName\">\r\n <div class=\"col-3\">Bundle</div>\r\n <div class=\"col-3\">Reference</div>\r\n </ng-container>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let subLine of cart?.subLineConfigInfos\">\r\n <div class=\"col-3\">{{subLine?.quantity}}</div>\r\n <div class=\"col-3\">{{subLine?.length | number:'0.3-3'}}</div>\r\n <ng-container *ngIf=\"subLine?.bundleName\">\r\n <div class=\"col-3\">{{subLine?.bundleName}}</div>\r\n <div class=\"col-3\">{{subLine?.reference}}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"cartDetails[i]?.product?.flashingProduct && cartDetails[i]?.productConfiguredInfos && cartDetails[i]?.productConfiguredInfos?.length>0\">\r\n <div class=\"flashing-block \" *ngFor=\"let data of cartDetails[i]?.productConfiguredInfos\">\r\n <div class=\"row\" >\r\n <div class=\"col-sm-3\">\r\n <h3 class=\"flash-title\">{{ data?.product?.name }}</h3>\r\n <h6 class=\"skuId\">SKU: {{ data?.product?.code }}</h6>\r\n <span *ngIf=\"data?.girth\">Grith: +{{data.girth}}mm </span>\r\n </div>\r\n <div class=\"offset-sm-3 col-sm-2\">\r\n {{data?.quantityDouble}}{{data?.unitType}}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{data?.basePrice?.formattedValue}}/{{data?.unitType}}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{data?.totalPrice?.formattedValue}}\r\n <span class=\"gst-text\">excl GST</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"modal fade\"\r\n id=\"imageModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"imageModal\"\r\n aria-hidden=\"true\"\r\n #imageModal\r\n>\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n #closeInviteModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body m-4\">\r\n <img [src]=\"imageModalSrc\" alt=\"alert\" />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative;z-index:10}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.revieworder-table-container{padding-bottom:15rem}.revieworder-table-container .revieworder-header-container{background:#646363;color:#fff;font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .revieworder-body-container{border-bottom:1px solid #E0E0E0;padding-bottom:1rem}.revieworder-table-container .revieworder-body-container .product-image-container{display:flex}.revieworder-table-container .revieworder-body-container .product-image-container .reviewproduct-image{width:71px;height:71px}.revieworder-table-container .revieworder-body-container .product-image-container .reviewproduct-name{font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .revieworder-body-container .product-image-container .sku-text{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;color:#6f6f6f}.revieworder-table-container .revieworder-body-container .see-more-link{text-decoration:underline}.revieworder-table-container .revieworder-body-container .see-more-link:hover{color:#d51317}.revieworder-table-container .revieworder-body-container .seemoredetails-link{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif;text-decoration:underline;cursor:pointer}.revieworder-table-container .revieworder-body-container .seemoredetails-link:hover{color:#b61828}.revieworder-table-container .revieworder-body-container .revieworder-collapse .bundle-details{background:#F6F6F6;border:1px solid #E0E0E0;margin-left:15px;padding:1rem;line-height:2.5rem}.revieworder-table-container .revieworder-body-container .revieworder-collapse .bundle-details .bundle-details-header{font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .colors-paragraph{display:flex;align-items:center}.revieworder-table-container .colors-paragraph .revieworder-color{width:20px;height:20px;border:1px solid #000000;display:inline-flex}\n"], components: [{ type: i2.MediaComponent, selector: "cx-media", inputs: ["container", "format", "alt", "role", "loading"], outputs: ["loaded"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "async": i3.AsyncPipe, "slice": i3.SlicePipe, "number": i3.DecimalPipe } });
136
+ OrderReviewListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: OrderReviewListComponent, selector: "app-order-review-list", inputs: { cartDetails: "cartDetails", isCardData: "isCardData" }, outputs: { updateCartEntry: "updateCartEntry" }, ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading&#8230;</div>\r\n<div class=\"revieworder-table-container\">\r\n <div class=\"row revieworder-header-container\">\r\n <div class=\"col-sm-4 py-2\">ITEM</div>\r\n <div class=\"col-sm-2 py-2\">JOB REFERENCE</div>\r\n <div class=\"col-sm-2 py-2\">TOTAL QTY</div>\r\n <div class=\"col-sm-2 py-2\">UNIT PRICE</div>\r\n <div class=\"col-sm-2 py-2\">TOTAL PRICE</div>\r\n </div>\r\n <div *ngFor=\"let cart of cartDetails; let i = index\">\r\n <div class=\"row revieworder-body-container\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"row py-3 product-image-container\">\r\n <div class=\"col-sm-4 p-md-0 col-lg-2\">\r\n <!-- <cx-media [container]=\"cart?.product?.images\" format=\"cartIcon\" role=\"presentation\"></cx-media> -->\r\n <div class=\"product-img\">\r\n <ng-container\r\n *ngIf=\"\r\n cartDetails[i]?.product?.flashingProduct;\r\n else normalImage\r\n \"\r\n >\r\n <a\r\n data-toggle=\"modal\"\r\n class=\"flashing-expand\"\r\n (click)=\"viewImage($event, cartDetails[i])\"\r\n [attr.data-target]=\"'#imageModal'\"\r\n *ngIf=\"hasImage(cartDetails[i]); else hasPdf\"\r\n >\r\n <cx-media\r\n [container]=\"getImageDetails(cartDetails[i])\"\r\n format=\"cartIcon\"\r\n role=\"presentation\"\r\n ></cx-media>\r\n </a>\r\n <ng-template #hasPdf>\r\n <a\r\n class=\"flashing-expand flashing-open\"\r\n [href]=\"getPdfLink(cartDetails[i])\"\r\n target=\"_blank\"\r\n >\r\n <img\r\n class=\"pdf-icon\"\r\n src=\"../../../../../assets/images/pdf-icon.svg\"\r\n alt=\"Click to open PDF\"\r\n title=\"Click to open PDF\"\r\n />\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #normalImage>\r\n <cx-media\r\n [container]=\"getImageDetails(cartDetails[i])\"\r\n format=\"cartIcon\"\r\n role=\"presentation\"\r\n ></cx-media>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8 col-lg-10\">\r\n <p class=\"reviewproduct-name mb-2\">{{ cart?.product?.name }}</p>\r\n <p class=\"sku-text m-0\">SKU: {{ cart?.product?.code }}</p>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"cart?.product?.classifications\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 pl-md-0 mb-2\">\r\n <span\r\n *ngIf=\"\r\n cart?.product &&\r\n cart?.product?.classifications &&\r\n cart?.product?.classifications[0] &&\r\n cart?.product?.classifications[0]?.features;\r\n \"\r\n >\r\n {{ getClassifications(cartDetails[i]?.product?.classifications) }}\r\n \r\n </span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{ cart?.jobReference }}\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{ cart.quantityDouble }} {{ cart?.basePrice?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{ cart?.basePrice?.formattedValue }}/{{ cart?.basePrice?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2 py-3\">\r\n {{ cart?.totalPrice?.formattedValue }}\r\n <span class=\"d-block\">excl GST</span>\r\n </div>\r\n <div class=\"col-sm-12 pl-md-0\">\r\n <ng-container\r\n *ngIf=\"cart?.configurationInfos?.length; else accessoriesColor\"\r\n >\r\n <p class=\"colors-paragraph mb-0\" *ngIf=\"!cart?.product?.flashingProduct; else flashingColour\">\r\n <span\r\n class=\"revieworder-color mr-3\"\r\n [ngStyle]=\"{\r\n background:\r\n cart?.configurationInfos[0]?.configurationValue.split('|')\r\n | slice : 2\r\n }\"\r\n ></span>\r\n {{\r\n cart?.configurationInfos[0]?.configurationValue.split(\"|\")\r\n | slice : 1 : 2\r\n }}\r\n </p>\r\n <ng-template #flashingColour>\r\n <p class=\"colors-paragraph mb-0\">\r\n <span\r\n class=\"revieworder-color mr-3\"\r\n [ngStyle]=\"{\r\n background:\r\n getColourDetails(cartDetails[i]?.configurationInfos, 'background')\r\n }\"\r\n ></span>\r\n {{\r\n getColourDetails(cartDetails[i]?.configurationInfos, 'name')\r\n }}\r\n </p>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #accessoriesColor>\r\n <p class=\"colors-paragraph mb-0\" *ngIf=\"hasColour(cart)\">\r\n <span\r\n class=\"revieworder-color mr-3\"\r\n [ngStyle]=\"{ background: cart?.colour?.hexadecimalCode }\"\r\n ></span>\r\n {{ cart?.colour?.name }}\r\n </p>\r\n </ng-template>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos.length > 0\">\r\n <p class=\"m-0\">\r\n <!-- TODO: data-target,aria-controls and id should should come as dynamic -->\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"showHide(i)\"\r\n class=\"see-more-link\"\r\n >\r\n {{ showDetails[i] == true ? \"Hide\" : \"See\" }} more details\r\n </a>\r\n </p>\r\n <div class=\"revieworder-collapse\" *ngIf=\"showDetails[i]\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6 bundle-details\">\r\n <div class=\"row bundle-details-header\">\r\n <div class=\"col-3\">Quantity</div>\r\n <div class=\"col-3\">Length (LM)</div>\r\n <ng-container *ngIf=\"cart?.subLineConfigInfos[i]?.bundleName\">\r\n <div class=\"col-3\">Bundle</div>\r\n <div class=\"col-3\">Reference</div>\r\n </ng-container>\r\n </div>\r\n <div\r\n class=\"row\"\r\n *ngFor=\"let subLine of cart?.subLineConfigInfos\"\r\n >\r\n <div class=\"col-3\">{{ subLine?.quantity }}</div>\r\n <div class=\"col-3\">\r\n {{ subLine?.length | number : \"0.3-3\" }}\r\n </div>\r\n <ng-container *ngIf=\"subLine?.bundleName\">\r\n <div class=\"col-3\">{{ subLine?.bundleName }}</div>\r\n <div class=\"col-3\">{{ subLine?.reference }}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n cartDetails[i]?.product?.flashingProduct &&\r\n cartDetails[i]?.productConfiguredInfos &&\r\n cartDetails[i]?.productConfiguredInfos?.length > 0\r\n \"\r\n >\r\n <div\r\n class=\"flashing-block\"\r\n *ngFor=\"let data of cartDetails[i]?.productConfiguredInfos\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-sm-3\">\r\n <h3 class=\"flash-title\">{{ data?.product?.name }}</h3>\r\n <h6 class=\"skuId\">SKU: {{ data?.product?.code }}</h6>\r\n <span *ngIf=\"data?.girth\">Grith: +{{ data.girth }}mm </span>\r\n </div>\r\n <div class=\"offset-sm-3 col-sm-2\">\r\n {{ data?.quantityDouble }}{{ data?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{ data?.basePrice?.formattedValue }}/{{ data?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{ data?.totalPrice?.formattedValue }}\r\n <span class=\"gst-text\">excl GST</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"modal fade\"\r\n id=\"imageModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"imageModal\"\r\n aria-hidden=\"true\"\r\n #imageModal\r\n>\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n #closeInviteModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body m-4\">\r\n <img [src]=\"imageModalSrc\" alt=\"alert\" />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.revieworder-table-container{padding-bottom:13rem}.revieworder-table-container .revieworder-header-container{background:#646363;color:#fff;font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .revieworder-body-container{border-bottom:1px solid #E0E0E0;padding-bottom:1rem}.revieworder-table-container .revieworder-body-container .product-image-container{display:flex}.revieworder-table-container .revieworder-body-container .product-image-container .reviewproduct-image{width:71px;height:71px}.revieworder-table-container .revieworder-body-container .product-image-container .reviewproduct-name{font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .revieworder-body-container .product-image-container .sku-text{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;color:#6f6f6f}.revieworder-table-container .revieworder-body-container .see-more-link{text-decoration:underline}.revieworder-table-container .revieworder-body-container .see-more-link:hover{color:#d51317}.revieworder-table-container .revieworder-body-container .seemoredetails-link{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif;text-decoration:underline;cursor:pointer}.revieworder-table-container .revieworder-body-container .seemoredetails-link:hover{color:#b61828}.revieworder-table-container .revieworder-body-container .revieworder-collapse .bundle-details{background:#F6F6F6;border:1px solid #E0E0E0;margin-left:15px;padding:1rem;line-height:2.5rem}.revieworder-table-container .revieworder-body-container .revieworder-collapse .bundle-details .bundle-details-header{font-family:\"Arial Bold\",sans-serif}.revieworder-table-container .colors-paragraph{display:flex;align-items:center}.revieworder-table-container .colors-paragraph .revieworder-color{width:20px;height:20px;border:1px solid #000000;display:inline-flex}.flashing-block{background-color:#e8e8e8;padding:12px;border-bottom:1px solid #C6C6C6;margin-right:-15px;margin-left:-15px}.flashing-block .flash-title{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}.flashing-block .skuId{color:#707070;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}.flashing-block .gst-text{display:block;font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}\n"], components: [{ type: i2.MediaComponent, selector: "cx-media", inputs: ["container", "format", "alt", "role", "loading"], outputs: ["loaded"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "async": i3.AsyncPipe, "slice": i3.SlicePipe, "number": i3.DecimalPipe } });
80
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: OrderReviewListComponent, decorators: [{
81
138
  type: Component,
82
139
  args: [{
@@ -91,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
91
148
  }], isCardData: [{
92
149
  type: Input
93
150
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItcmV2aWV3LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9jaGVja291dC9vcmRlci1yZXZpZXcvb3JkZXItcmV2aWV3LWxpc3Qvb3JkZXItcmV2aWV3LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9jaGVja291dC9vcmRlci1yZXZpZXcvb3JkZXItcmV2aWV3LWxpc3Qvb3JkZXItcmV2aWV3LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRdkMsTUFBTSxPQUFPLHdCQUF3QjtJQWNuQyxZQUFvQixXQUF3QixFQUN4QixHQUFzQjtRQUR0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWQxQyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3BELGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGNBQVMsR0FBUyxLQUFLLENBQUM7UUFFZCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFcEQsZ0JBQVcsR0FBUSxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELFFBQUcsR0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUd6QyxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QiwwQkFBcUIsR0FBWSxLQUFLLENB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QVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQVUsRUFBRSxXQUFnQjs7UUFDcEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBZ0I7O1FBQ3pCLE9BQU8sTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRLENBQUMsV0FBZ0I7O1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsMENBQUUsSUFBSSxDQUFDO1FBQ25ELE1BQU0sU0FBUyxHQUFHLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7c0hBM0VZLHdCQUF3QjswR0FBeEIsd0JBQXdCLGdMQ1RyQyxnOVFBMEpBOzRGRGpKYSx3QkFBd0I7a0JBTHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEO2tJQUtVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLW9yZGVyLXJldmlldy1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb3JkZXItcmV2aWV3LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29yZGVyLXJldmlldy1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZGVyUmV2aWV3TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNob3dEZXRhaWxzOiBhbnkgPSBbXTtcclxuICBoYXNCdW5kbGU6Ym9vbGVhbj1mYWxzZTtcclxuICBASW5wdXQoKSBjYXJ0RGV0YWlsczogYW55O1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVDYXJ0RW50cnkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKSBpc0NhcmREYXRhOiBhbnk7XHJcbiAgZW52aXJvbm1lbnQ6IGFueSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VudicpO1xyXG4gIGVudiA6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnZpcm9ubWVudCk7XHJcblxyXG4gIGltYWdlTW9kYWxTcmM6IGFueTtcclxuICBwcm9kdWN0SW5mb3M6IGFueSA9IFtdO1xyXG4gIGlzUHJvZHVjdEluZm9BdmlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICBpZih0aGlzLmNhcnREZXRhaWxzLmxlbmd0aCl7XHJcbiAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2FydERldGFpbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5zaG93RGV0YWlscy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2FydFNlcnZpY2UuZXhwYW5kQWxsLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2FydERldGFpbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLnNob3dEZXRhaWxzW2ldID0gZGF0YTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93SGlkZShpbmQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5zaG93RGV0YWlsc1tpbmRdID0gIXRoaXMuc2hvd0RldGFpbHNbaW5kXTtcclxuICB9XHJcbi8vIEdldCB0aGUgSW1hZ2UgRGV0YWlscyBiYXNlZCBvbiBQcm9kdWN0c1xyXG5nZXRJbWFnZURldGFpbHMoY2FydERldGFpbHM6IGFueSwgdGh1bWJuYWlsOiBhbnkgPSB0cnVlKTogYW55IHtcclxuICBsZXQgaW1hZ2VVcmw6IGFueSA9IGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM7XHJcbiAgaWYgKHRoaXMuaXNDYXJkRGF0YSkge1xyXG4gICAgaW1hZ2VVcmwgPSBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uaW1hZ2VzPy5maW5kKChpbWc6IGFueSkgPT4gaW1nLmZvcm1hdCA9PSBcImNhcnRJY29uXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpbWFnZVVybCA9IGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM/LkdBTExFUlk/LmNhcnRJY29uO1xyXG4gIH1cclxuICBsZXQgc3JjVXJsOiBhbnk7XHJcbiAgaWYgKFxyXG4gICAgY2FydERldGFpbHM/LmF0dGFjaG1lbnRzICYmXHJcbiAgICBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aCAmJlxyXG4gICAgY2FydERldGFpbHM/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFxyXG4gICkge1xyXG4gICAgc3JjVXJsID1cclxuICAgICAgdGh1bWJuYWlsICYmIGNhcnREZXRhaWxzPy5hdHRhY2htZW50cz8ubGVuZ3RoID4gMVxyXG4gICAgICAgID8gY2FydERldGFpbHM/LmF0dGFjaG1lbnRzWzFdPy5kb3dubG9hZFVSTFxyXG4gICAgICAgIDogY2FydERldGFpbHM/LmF0dGFjaG1lbnRzWzBdPy5kb3dubG9hZFVSTDtcclxuICAgIGltYWdlVXJsID0ge1xyXG4gICAgICB1cmw6IChcclxuICAgICAgICB0aGlzLmVudi5vY2NCYXNlVXJsLnNsaWNlKDAsIHRoaXMuZW52Lm9jY0Jhc2VVcmwubGVuZ3RoIC0gMSkgK1xyXG4gICAgICAgIHNyY1VybFxyXG4gICAgICApPy5yZXBsYWNlKCcmYXR0YWNobWVudD10cnVlJywgJycpLFxyXG4gICAgfTtcclxuICB9XHJcbiAgcmV0dXJuIGltYWdlVXJsO1xyXG59XHJcbnZpZXdJbWFnZShldmVudDogYW55LCBjYXJ0RGV0YWlsczogYW55KTogdm9pZCB7XHJcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB0aGlzLmltYWdlTW9kYWxTcmMgPSB0aGlzLmdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlscywgZmFsc2UpPy51cmw7XHJcbn1cclxuXHJcbmdldFBkZkxpbmsoY2FydERldGFpbHM6IGFueSk6IHZvaWQge1xyXG4gIHJldHVybiB0aGlzLmdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlscywgZmFsc2UpPy51cmw7XHJcbn1cclxuXHJcbmhhc0ltYWdlKGNhcnREZXRhaWxzOiBhbnkpOiBib29sZWFuIHtcclxuICBjb25zdCBtaW1lVHlwZSA9IGNhcnREZXRhaWxzPy5hdHRhY2htZW50c1swXT8ubWltZTtcclxuICBjb25zdCBtaW1lQXJyYXkgPSBbXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9qcGdcIiwgXCJpbWFnZS9qcGVnXCJdO1xyXG4gIHJldHVybiBtaW1lQXJyYXkuaW5jbHVkZXMobWltZVR5cGUpO1xyXG59XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxvYWRpbmcgXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jIFwiPkxvYWRpbmcmIzgyMzA7PC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyZXZpZXdvcmRlci10YWJsZS1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcmV2aWV3b3JkZXItaGVhZGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNCBweS0yXCI+SVRFTTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0yXCI+Sk9CIFJFRkVSRU5DRTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0yXCI+VE9UQUwgUVRZPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTJcIj5VTklUIFBSSUNFPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTJcIj5UT1RBTCBQUklDRTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjYXJ0IG9mIGNhcnREZXRhaWxzO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJldmlld29yZGVyLWJvZHktY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweS0zIHByb2R1Y3QtaW1hZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00IHAtbWQtMCBjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxjeC1tZWRpYSBbY29udGFpbmVyXT1cImNhcnQ/LnByb2R1Y3Q/LmltYWdlc1wiIGZvcm1hdD1cImNhcnRJY29uXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvY3gtbWVkaWE+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugbm9ybWFsSW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGNsYXNzPVwiZmxhc2hpbmctZXhwYW5kXCIgKGNsaWNrKT1cInZpZXdJbWFnZSgkZXZlbnQsY2FydERldGFpbHNbaV0pXCIgW2F0dHIuZGF0YS10YXJnZXRdPVwiJyNpbWFnZU1vZGFsJ1wiICpuZ0lmPVwiaGFzSW1hZ2UoY2FydERldGFpbHNbaV0pO2Vsc2UgaGFzUGRmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGN4LW1lZGlhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cImdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlsc1tpXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PVwiY2FydEljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY3gtbWVkaWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNoYXNQZGY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmbGFzaGluZy1leHBhbmQgZmxhc2hpbmctb3BlblwiIFtocmVmXT1cImdldFBkZkxpbmsoY2FydERldGFpbHNbaV0pXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwicGRmLWljb25cIiBzcmM9XCIuLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3BkZi1pY29uLnN2Z1wiIGFsdD1cIkNsaWNrIHRvIG9wZW4gUERGXCIgdGl0bGU9XCJDbGljayB0byBvcGVuIFBERlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbEltYWdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y3gtbWVkaWFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cImdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlsc1tpXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1cImNhcnRJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY3gtbWVkaWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOCBjb2wtbGctMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCIgcmV2aWV3cHJvZHVjdC1uYW1lIG1iLTJcIj57e2NhcnQ/LnByb2R1Y3Q/Lm5hbWV9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJza3UtdGV4dCBtLTBcIj5TS1U6IHt7Y2FydD8ucHJvZHVjdD8uY29kZSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnQ/LnByb2R1Y3Q/LmNsYXNzaWZpY2F0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBwbC1tZC0wIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGVzIG9mIGNhcnQ/LnByb2R1Y3QgJiYgIGNhcnQ/LnByb2R1Y3Q/LmNsYXNzaWZpY2F0aW9ucyAmJiAgY2FydD8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zWzBdICYmICBjYXJ0Py5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnNbMF0/LmZlYXR1cmVzO2xhc3QgYXMgaXNMYXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3thdHRyaWJ1dGVzPy5mZWF0dXJlVmFsdWVzWzBdPy52YWx1ZSB9fSA8c3BhbiAqbmdJZj1cIiFpc0xhc3RcIj4gfCA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgIHt7Y2FydD8uam9iUmVmZXJlbmNlIHx8ICctJ319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgcHktM1wiPnt7Y2FydC5xdWFudGl0eURvdWJsZX19IHt7Y2FydD8uYmFzZVByaWNlPy51bml0VHlwZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0zXCI+e3tjYXJ0Py5iYXNlUHJpY2U/LmZvcm1hdHRlZFZhbHVlfX0ve3tjYXJ0Py5iYXNlUHJpY2U/LnVuaXRUeXBlfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTNcIj57e2NhcnQ/LnRvdGFsUHJpY2U/LmZvcm1hdHRlZFZhbHVlfX0gPHNwYW4gY2xhc3M9XCJkLWJsb2NrXCI+ZXhjbCBHU1Q8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgcGwtbWQtMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnQ/LmNvbmZpZ3VyYXRpb25JbmZvcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNvbG9ycy1wYXJhZ3JhcGggbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlld29yZGVyLWNvbG9yIG1yLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGNhcnQ/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlLnNwbGl0KCd8JykgfCBzbGljZToyfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjYXJ0Py5jb25maWd1cmF0aW9uSW5mb3NbMF0/LmNvbmZpZ3VyYXRpb25WYWx1ZS5zcGxpdCgnfCcpIHwgc2xpY2U6MToyfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0Py5zdWJMaW5lQ29uZmlnSW5mb3MubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRPRE86IGRhdGEtdGFyZ2V0LGFyaWEtY29udHJvbHMgYW5kICBpZCBzaG91bGQgc2hvdWxkIGNvbWUgYXMgZHluYW1pYyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJzaG93SGlkZShpKVwiIGNsYXNzPVwic2VlLW1vcmUtbGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzaG93RGV0YWlsc1tpXSA9PSB0cnVlID8gJ0hpZGUnIDogJ1NlZSd9fSBtb3JlIGRldGFpbHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3b3JkZXItY29sbGFwc2VcIiAqbmdJZj1cInNob3dEZXRhaWxzW2ldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBidW5kbGUtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYnVuZGxlLWRldGFpbHMtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlF1YW50aXR5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkxlbmd0aCAoTE0pPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJ0Py5zdWJMaW5lQ29uZmlnSW5mb3NbaV0/LmJ1bmRsZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5CdW5kbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5SZWZlcmVuY2U8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgc3ViTGluZSBvZiBjYXJ0Py5zdWJMaW5lQ29uZmlnSW5mb3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+e3tzdWJMaW5lPy5xdWFudGl0eX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7c3ViTGluZT8ubGVuZ3RoIHwgbnVtYmVyOicwLjMtMyd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ViTGluZT8uYnVuZGxlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7c3ViTGluZT8uYnVuZGxlTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+e3tzdWJMaW5lPy5yZWZlcmVuY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3QgJiYgY2FydERldGFpbHNbaV0/LnByb2R1Y3RDb25maWd1cmVkSW5mb3MgJiYgY2FydERldGFpbHNbaV0/LnByb2R1Y3RDb25maWd1cmVkSW5mb3M/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxhc2hpbmctYmxvY2sgXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgY2FydERldGFpbHNbaV0/LnByb2R1Y3RDb25maWd1cmVkSW5mb3NcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZsYXNoLXRpdGxlXCI+e3sgZGF0YT8ucHJvZHVjdD8ubmFtZSB9fTwvaDM+XHJcbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJza3VJZFwiPlNLVToge3sgZGF0YT8ucHJvZHVjdD8uY29kZSB9fTwvaDY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGE/LmdpcnRoXCI+R3JpdGg6ICt7e2RhdGEuZ2lydGh9fW1tIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2Zmc2V0LXNtLTMgY29sLXNtLTJcIj5cclxuICAgICAgICAgICAgICAgIHt7ZGF0YT8ucXVhbnRpdHlEb3VibGV9fXt7ZGF0YT8udW5pdFR5cGV9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxyXG4gICAgICAgICAgICAgICAge3tkYXRhPy5iYXNlUHJpY2U/LmZvcm1hdHRlZFZhbHVlfX0ve3tkYXRhPy51bml0VHlwZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICB7e2RhdGE/LnRvdGFsUHJpY2U/LmZvcm1hdHRlZFZhbHVlfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICBjbGFzcz1cIm1vZGFsIGZhZGVcIlxyXG4gIGlkPVwiaW1hZ2VNb2RhbFwiXHJcbiAgcm9sZT1cImRpYWxvZ1wiXHJcbiAgYXJpYS1sYWJlbGxlZGJ5PVwiaW1hZ2VNb2RhbFwiXHJcbiAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAjaW1hZ2VNb2RhbFxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxpXHJcbiAgICAgICAgICBjbGFzcz1cImljb24tY2xvc2UgaW52aXRlLXBvcC1jbG9zZVwiXHJcbiAgICAgICAgICAjY2xvc2VJbnZpdGVNb2RhbFxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICA+PC9pPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbS00XCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImltYWdlTW9kYWxTcmNcIiBhbHQ9XCJhbGVydFwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItcmV2aWV3LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9jaGVja291dC9vcmRlci1yZXZpZXcvb3JkZXItcmV2aWV3LWxpc3Qvb3JkZXItcmV2aWV3LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9jaGVja291dC9vcmRlci1yZXZpZXcvb3JkZXItcmV2aWV3LWxpc3Qvb3JkZXItcmV2aWV3LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRdkMsTUFBTSxPQUFPLHdCQUF3QjtJQWFuQyxZQUNVLFdBQXdCLEVBQ3hCLEdBQXNCO1FBRHRCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZGhDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDcEQsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFDdEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUVqQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFcEQsUUFBRyxHQUFRLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsZ0JBQVcsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUd4QywwQkFBcUIsR0FBWSxLQUFLLENBQUM7SUFLbkMsQ0FBQztJQUVMLFFBQVE7UUFD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T0FBTyxDQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTs7Z0JBQ3pDLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsRUFBRTtvQkFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsMENBQUUsS0FBSyxJQUFHLEdBQUcsSUFBRyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXLDBDQUFFLE1BQU0sQ0FBQSxDQUFDLENBQUE7aUJBQ3pGO3FCQUFNO29CQUNMLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxLQUFLLENBQUMsQ0FBQTtpQkFDcEQ7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsSUFBSSxDQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7O3NIQTdJVSx3QkFBd0I7MEdBQXhCLHdCQUF3QixnTENUckMsbXJTQTJPQTs0RkRsT2Esd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSxvQ0FBb0M7b0JBQ2pELFNBQVMsRUFBRSxDQUFDLG9DQUFvQyxDQUFDO2lCQUNsRDtrSUFLVSxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1vcmRlci1yZXZpZXctbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL29yZGVyLXJldmlldy1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vcmRlci1yZXZpZXctbGlzdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlclJldmlld0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHNob3dXYWl0Q3Vyc29yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBzaG93RGV0YWlsczogYW55ID0gW107XHJcbiAgaGFzQnVuZGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2FydERldGFpbHM6IGFueTtcclxuICBAT3V0cHV0KCkgdXBkYXRlQ2FydEVudHJ5ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQElucHV0KCkgaXNDYXJkRGF0YTogYW55O1xyXG4gIGVudjogYW55ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZW52Jyk7XHJcbiAgZW52aXJvbm1lbnQ6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnYpO1xyXG5cclxuICBpbWFnZU1vZGFsU3JjOiBhbnk7XHJcbiAgaXNQcm9kdWN0SW5mb0F2aWxhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIGlmICh0aGlzLmNhcnREZXRhaWxzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNhcnREZXRhaWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuc2hvd0RldGFpbHMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmV4cGFuZEFsbC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNhcnREZXRhaWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5zaG93RGV0YWlsc1tpXSA9IGRhdGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd0hpZGUoaW5kOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2hvd0RldGFpbHNbaW5kXSA9ICF0aGlzLnNob3dEZXRhaWxzW2luZF07XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiBhbnkgdmFsdWUgaXMgZW1wdHkgb3IgdW5kZWZpbmVkXHJcbiAgaXNOdWxsT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gXCJcIjtcclxuICB9XHJcblxyXG4gIC8vIEdldCB0aGUgSW1hZ2UgRGV0YWlscyBiYXNlZCBvbiBQcm9kdWN0c1xyXG4gIGdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlsczogYW55LCB0aHVtYm5haWw6IGFueSA9IHRydWUpOiBhbnkge1xyXG4gICAgbGV0IGltYWdlVXJsOiBhbnkgPSBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uaW1hZ2VzO1xyXG4gICAgaWYgKHRoaXMuaXNDYXJkRGF0YSkge1xyXG4gICAgICAvL2ltYWdlVXJsID0gY2FydERldGFpbHM/LnByb2R1Y3Q/LmltYWdlcz8uZmluZCgoaW1nOiBhbnkpID0+IGltZy5mb3JtYXQgPT0gXCJjYXJ0SWNvblwiKTtcclxuICAgICAgY29uc3QgY29sb3JDb2RlID1cclxuICAgICAgICBjYXJ0RGV0YWlscz8uY29uZmlndXJhdGlvbkluZm9zIHx8IGNhcnREZXRhaWxzPy5jb25maWd1cmF0aW9uSW5mb3NbMF1cclxuICAgICAgICAgID8gY2FydERldGFpbHM/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlPy5zcGxpdChcclxuICAgICAgICAgICAgXCJ8XCJcclxuICAgICAgICAgIClbMF1cclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgaW1hZ2VVcmwgPSBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uaW1hZ2VzPy5maWx0ZXIoXHJcbiAgICAgICAgKGltZzogYW55KSA9PlxyXG4gICAgICAgICAgKGltZz8uZm9ybWF0ID09IFwiY2FydEljb25cIiAmJiBpbWc/LmNvbG9yQ29kZSA9PSBjb2xvckNvZGUpIHx8XHJcbiAgICAgICAgICAoaW1nPy5mb3JtYXQgPT0gXCJjYXJ0SWNvblwiICYmXHJcbiAgICAgICAgICAgIHRoaXMuaXNOdWxsT3JFbXB0eShjb2xvckNvZGUpICYmXHJcbiAgICAgICAgICAgIGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM/Lmxlbmd0aCA8PSA0KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW1hZ2VVcmwgPSBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uaW1hZ2VzPy5HQUxMRVJZPy5jYXJ0SWNvbjtcclxuICAgIH1cclxuICAgIGxldCBzcmNVcmw6IGFueTtcclxuICAgIGlmIChcclxuICAgICAgY2FydERldGFpbHM/LmF0dGFjaG1lbnRzICYmXHJcbiAgICAgIGNhcnREZXRhaWxzPy5hdHRhY2htZW50cz8ubGVuZ3RoICYmXHJcbiAgICAgIGNhcnREZXRhaWxzPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcclxuICAgICkge1xyXG4gICAgICBzcmNVcmwgPVxyXG4gICAgICAgIHRodW1ibmFpbCAmJiBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHM/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgID8gY2FydERldGFpbHM/LmF0dGFjaG1lbnRzWzFdPy5kb3dubG9hZFVSTFxyXG4gICAgICAgICAgOiBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHNbMF0/LmRvd25sb2FkVVJMO1xyXG4gICAgICBpbWFnZVVybCA9IHtcclxuICAgICAgICB1cmw6IChcclxuICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnQub2NjQmFzZVVybD8uc2xpY2UoMCwgdGhpcy5lbnZpcm9ubWVudC5vY2NCYXNlVXJsLmxlbmd0aCAtIDEpICtcclxuICAgICAgICAgIHNyY1VybFxyXG4gICAgICAgICk/LnJlcGxhY2UoXCImYXR0YWNobWVudD10cnVlXCIsIFwiXCIpLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGltYWdlVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sb3VyRGV0YWlscyhjb25maWdJbmZvOiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgbGV0IG5hbWU6IGFueTtcclxuICAgIGxldCBiYWNrZ3JvdW5kOiBhbnk7XHJcbiAgICBpZiAoY29uZmlnSW5mbyAmJiBjb25maWdJbmZvPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGNvbG91ciA9IGNvbmZpZ0luZm8/LmZpbHRlcigoY29sOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gY29sPy5jb25maWd1cmF0aW9uTGFiZWw/LnRvTG93ZXJDYXNlKCkgPT0gXCJjb2xvclwiXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoY29sb3VyICYmIGNvbG91cj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgbmFtZSA9IGNvbG91clswXT8uY29uZmlndXJhdGlvblZhbHVlPy5zcGxpdCgnfCcpWzFdO1xyXG4gICAgICAgIGJhY2tncm91bmQgPSBjb2xvdXJbMF0/LmNvbmZpZ3VyYXRpb25WYWx1ZT8uc3BsaXQoJ3wnKVsyXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICh0eXBlID09IFwiYmFja2dyb3VuZFwiKSA/IGJhY2tncm91bmQgOiBuYW1lO1xyXG4gIH1cclxuXHJcbiAgdmlld0ltYWdlKGV2ZW50OiBhbnksIGNhcnREZXRhaWxzOiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmltYWdlTW9kYWxTcmMgPSB0aGlzLmdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlscywgZmFsc2UpPy51cmw7XHJcbiAgfVxyXG5cclxuICBnZXRQZGZMaW5rKGNhcnREZXRhaWxzOiBhbnkpOiB2b2lkIHtcclxuICAgIHJldHVybiB0aGlzLmdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlscywgZmFsc2UpPy51cmw7XHJcbiAgfVxyXG5cclxuICBoYXNJbWFnZShjYXJ0RGV0YWlsczogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBtaW1lVHlwZSA9IGNhcnREZXRhaWxzPy5hdHRhY2htZW50c1swXT8ubWltZTtcclxuICAgIGNvbnN0IG1pbWVBcnJheSA9IFtcImltYWdlL3BuZ1wiLCBcImltYWdlL2pwZ1wiLCBcImltYWdlL2pwZWdcIl07XHJcbiAgICByZXR1cm4gbWltZUFycmF5LmluY2x1ZGVzKG1pbWVUeXBlKTtcclxuICB9XHJcblxyXG4gIGhhc0NvbG91cihjYXJ0RGV0YWlsczogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY2FydERldGFpbHM/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdCkge1xyXG4gICAgICBjb25zdCBjb2RlID0gY2FydERldGFpbHM/LnByb2R1Y3Q/LmNvZGU7XHJcbiAgICAgIGNvbnN0IGNvbG91ciA9IGNhcnREZXRhaWxzPy5wcm9kdWN0Py52YXJpYW50T3B0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uY29kZSA9PSBjb2RlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChjb2xvdXIgJiYgY29sb3VyWzBdPy5jb2xvdXJzICYmIGNvbG91clswXT8uY29sb3Vycz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNhcnREZXRhaWxzLmNvbG91ciA9IGNvbG91clswXT8uY29sb3Vyc1swXTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIEdldCBTdW1tYXJ5IEhlYWRpbmdcclxuICBnZXRDbGFzc2lmaWNhdGlvbnMoZGF0YTogYW55KTogYW55IHtcclxuICAgIGxldCBmZWF0dXJlQXJyYXk6IGFueSA9IFtdO1xyXG4gICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQ/LmZlYXR1cmVzLmZvckVhY2goKGZlYXR1cmU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChmZWF0dXJlPy5mZWF0dXJlVW5pdCkge1xyXG4gICAgICAgICAgZmVhdHVyZUFycmF5LnB1c2goZmVhdHVyZT8uZmVhdHVyZVZhbHVlc1swXT8udmFsdWUgKyAnICcgKyBmZWF0dXJlPy5mZWF0dXJlVW5pdD8uc3ltYm9sKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmZWF0dXJlQXJyYXkucHVzaChmZWF0dXJlPy5mZWF0dXJlVmFsdWVzWzBdPy52YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmVhdHVyZUFycmF5Py5qb2luKCBcIiB8IFwiKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cInNob3dXYWl0Q3Vyc29yIHwgYXN5bmNcIj5Mb2FkaW5nJiM4MjMwOzwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicmV2aWV3b3JkZXItdGFibGUtY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyByZXZpZXdvcmRlci1oZWFkZXItY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgcHktMlwiPklURU08L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0yXCI+Sk9CIFJFRkVSRU5DRTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTJcIj5UT1RBTCBRVFk8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0yXCI+VU5JVCBQUklDRTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTJcIj5UT1RBTCBQUklDRTwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGNhcnQgb2YgY2FydERldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcmV2aWV3b3JkZXItYm9keS1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweS0zIHByb2R1Y3QtaW1hZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTQgcC1tZC0wIGNvbC1sZy0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGN4LW1lZGlhIFtjb250YWluZXJdPVwiY2FydD8ucHJvZHVjdD8uaW1hZ2VzXCIgZm9ybWF0PVwiY2FydEljb25cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9jeC1tZWRpYT4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWltZ1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3Q7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Ugbm9ybWFsSW1hZ2VcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxhc2hpbmctZXhwYW5kXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdJbWFnZSgkZXZlbnQsIGNhcnREZXRhaWxzW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjaW1hZ2VNb2RhbCdcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0ltYWdlKGNhcnREZXRhaWxzW2ldKTsgZWxzZSBoYXNQZGZcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8Y3gtbWVkaWFcclxuICAgICAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cImdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlsc1tpXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdD1cImNhcnRJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgPjwvY3gtbWVkaWE+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hhc1BkZj5cclxuICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsYXNoaW5nLWV4cGFuZCBmbGFzaGluZy1vcGVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJnZXRQZGZMaW5rKGNhcnREZXRhaWxzW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGRmLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9wZGYtaWNvbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiQ2xpY2sgdG8gb3BlbiBQREZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJDbGljayB0byBvcGVuIFBERlwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbEltYWdlPlxyXG4gICAgICAgICAgICAgICAgPGN4LW1lZGlhXHJcbiAgICAgICAgICAgICAgICAgIFtjb250YWluZXJdPVwiZ2V0SW1hZ2VEZXRhaWxzKGNhcnREZXRhaWxzW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1hdD1cImNhcnRJY29uXCJcclxuICAgICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXHJcbiAgICAgICAgICAgICAgICA+PC9jeC1tZWRpYT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS04IGNvbC1sZy0xMFwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInJldmlld3Byb2R1Y3QtbmFtZSBtYi0yXCI+e3sgY2FydD8ucHJvZHVjdD8ubmFtZSB9fTwvcD5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJza3UtdGV4dCBtLTBcIj5TS1U6IHt7IGNhcnQ/LnByb2R1Y3Q/LmNvZGUgfX08L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydD8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgcGwtbWQtMCBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICBjYXJ0Py5wcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydD8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydD8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zWzBdICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydD8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zWzBdPy5mZWF0dXJlcztcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGdldENsYXNzaWZpY2F0aW9ucyhjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zKSB9fVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTNcIj5cclxuICAgICAgICB7eyBjYXJ0Py5qb2JSZWZlcmVuY2UgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBweS0zXCI+XHJcbiAgICAgICAge3sgY2FydC5xdWFudGl0eURvdWJsZSB9fSB7eyBjYXJ0Py5iYXNlUHJpY2U/LnVuaXRUeXBlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgcHktM1wiPlxyXG4gICAgICAgIHt7IGNhcnQ/LmJhc2VQcmljZT8uZm9ybWF0dGVkVmFsdWUgfX0ve3sgY2FydD8uYmFzZVByaWNlPy51bml0VHlwZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIHB5LTNcIj5cclxuICAgICAgICB7eyBjYXJ0Py50b3RhbFByaWNlPy5mb3JtYXR0ZWRWYWx1ZSB9fVxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9ja1wiPmV4Y2wgR1NUPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBwbC1tZC0wXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJjYXJ0Py5jb25maWd1cmF0aW9uSW5mb3M/Lmxlbmd0aDsgZWxzZSBhY2Nlc3Nvcmllc0NvbG9yXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImNvbG9ycy1wYXJhZ3JhcGggbWItMFwiICpuZ0lmPVwiIWNhcnQ/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdDsgZWxzZSBmbGFzaGluZ0NvbG91clwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmV2aWV3b3JkZXItY29sb3IgbXItM1wiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDpcclxuICAgICAgICAgICAgICAgICAgY2FydD8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWUuc3BsaXQoJ3wnKVxyXG4gICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMlxyXG4gICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgIGNhcnQ/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlLnNwbGl0KFwifFwiKVxyXG4gICAgICAgICAgICAgICAgfCBzbGljZSA6IDEgOiAyXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXNoaW5nQ29sb3VyPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNvbG9ycy1wYXJhZ3JhcGggbWItMFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJldmlld29yZGVyLWNvbG9yIG1yLTNcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgICAgICBnZXRDb2xvdXJEZXRhaWxzKGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3MsICdiYWNrZ3JvdW5kJylcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgIGdldENvbG91ckRldGFpbHMoY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcywgJ25hbWUnKVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNhY2Nlc3Nvcmllc0NvbG9yPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJjb2xvcnMtcGFyYWdyYXBoIG1iLTBcIiAqbmdJZj1cImhhc0NvbG91cihjYXJ0KVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmV2aWV3b3JkZXItY29sb3IgbXItM1wiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBjYXJ0Py5jb2xvdXI/LmhleGFkZWNpbWFsQ29kZSB9XCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAge3sgY2FydD8uY29sb3VyPy5uYW1lIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FydD8uc3ViTGluZUNvbmZpZ0luZm9zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwibS0wXCI+XHJcbiAgICAgICAgICAgIDwhLS0gVE9ETzogZGF0YS10YXJnZXQsYXJpYS1jb250cm9scyBhbmQgIGlkIHNob3VsZCBzaG91bGQgY29tZSBhcyBkeW5hbWljIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93SGlkZShpKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWUtbW9yZS1saW5rXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHNob3dEZXRhaWxzW2ldID09IHRydWUgPyBcIkhpZGVcIiA6IFwiU2VlXCIgfX0gbW9yZSBkZXRhaWxzXHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXdvcmRlci1jb2xsYXBzZVwiICpuZ0lmPVwic2hvd0RldGFpbHNbaV1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBidW5kbGUtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBidW5kbGUtZGV0YWlscy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+UXVhbnRpdHk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+TGVuZ3RoIChMTSk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnQ/LnN1YkxpbmVDb25maWdJbmZvc1tpXT8uYnVuZGxlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPkJ1bmRsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlJlZmVyZW5jZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJMaW5lIG9mIGNhcnQ/LnN1YkxpbmVDb25maWdJbmZvc1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPnt7IHN1YkxpbmU/LnF1YW50aXR5IH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHN1YkxpbmU/Lmxlbmd0aCB8IG51bWJlciA6IFwiMC4zLTNcIiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1YkxpbmU/LmJ1bmRsZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj57eyBzdWJMaW5lPy5idW5kbGVOYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+e3sgc3ViTGluZT8ucmVmZXJlbmNlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdCAmJlxyXG4gICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Q29uZmlndXJlZEluZm9zICYmXHJcbiAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3RDb25maWd1cmVkSW5mb3M/Lmxlbmd0aCA+IDBcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxhc2hpbmctYmxvY2tcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Q29uZmlndXJlZEluZm9zXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJmbGFzaC10aXRsZVwiPnt7IGRhdGE/LnByb2R1Y3Q/Lm5hbWUgfX08L2gzPlxyXG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJza3VJZFwiPlNLVToge3sgZGF0YT8ucHJvZHVjdD8uY29kZSB9fTwvaDY+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YT8uZ2lydGhcIj5Hcml0aDogK3t7IGRhdGEuZ2lydGggfX1tbSA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvZmZzZXQtc20tMyBjb2wtc20tMlwiPlxyXG4gICAgICAgICAgICB7eyBkYXRhPy5xdWFudGl0eURvdWJsZSB9fXt7IGRhdGE/LnVuaXRUeXBlIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxyXG4gICAgICAgICAgICB7eyBkYXRhPy5iYXNlUHJpY2U/LmZvcm1hdHRlZFZhbHVlIH19L3t7IGRhdGE/LnVuaXRUeXBlIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxyXG4gICAgICAgICAgICB7eyBkYXRhPy50b3RhbFByaWNlPy5mb3JtYXR0ZWRWYWx1ZSB9fVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2XHJcbiAgY2xhc3M9XCJtb2RhbCBmYWRlXCJcclxuICBpZD1cImltYWdlTW9kYWxcIlxyXG4gIHJvbGU9XCJkaWFsb2dcIlxyXG4gIGFyaWEtbGFiZWxsZWRieT1cImltYWdlTW9kYWxcIlxyXG4gIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgI2ltYWdlTW9kYWxcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIlxyXG4gICAgICAgICAgI2Nsb3NlSW52aXRlTW9kYWxcclxuICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IG0tNFwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJpbWFnZU1vZGFsU3JjXCIgYWx0PVwiYWxlcnRcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19