buildingproduct-library 0.2.74 → 0.2.76
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.
- package/assets/images/newtab.svg +11 -0
- package/{buildingproduct-library-0.2.74.tgz → buildingproduct-library-0.2.76.tgz} +0 -0
- package/bundles/buildingproduct-library.umd.js +527 -411
- package/bundles/buildingproduct-library.umd.js.map +1 -1
- package/esm2015/lib/account-dropdown/account-dropdown.component.js +16 -16
- package/esm2015/lib/account-dropdown/account-dropdown.module.js +6 -2
- package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +2 -2
- package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +1 -1
- package/esm2015/lib/checkout/order-review/order-review.component.js +1 -1
- package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +1 -1
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +57 -13
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +1 -1
- package/esm2015/lib/custom-navigation/custom-navigation.module.js +1 -11
- package/esm2015/lib/custom-order-details/custom-order-details.component.js +8 -6
- package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +2 -2
- package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +2 -2
- package/esm2015/lib/custom-order-history/custom-order-history.component.js +20 -19
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +28 -17
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +2 -2
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +2 -2
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.js +28 -10
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +4 -4
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +3 -3
- package/esm2015/lib/custom-search/custom-search.component.js +1 -1
- package/esm2015/lib/custom-user-account/custom-user-account.component.js +2 -2
- package/esm2015/lib/find-store/find-store.component.js +1 -1
- package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +6 -7
- package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +26 -25
- package/esm2015/lib/my-account/my-account.component.js +11 -1
- package/esm2015/lib/my-team/my-team.component.js +29 -10
- package/esm2015/lib/my-team/team-member.service.js +8 -36
- package/esm2015/lib/services/order.review.js +1 -1
- package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +6 -4
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +48 -22
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +66 -37
- package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +2 -4
- package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +2 -2
- package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +9 -9
- package/fesm2015/buildingproduct-library.js +405 -288
- package/fesm2015/buildingproduct-library.js.map +1 -1
- package/lib/account-dropdown/account-dropdown.component.d.ts +2 -0
- package/lib/account-dropdown/account-dropdown.module.d.ts +2 -1
- package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +13 -4
- package/lib/custom-order-history/custom-order-history.component.d.ts +1 -1
- package/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.d.ts +1 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.d.ts +5 -1
- package/lib/my-account/account-dashboard/account-dashboard.component.d.ts +1 -1
- package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +2 -4
- package/lib/my-team/my-team.component.d.ts +6 -1
- package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +9 -10
- package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +9 -18
- package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +1 -2
- package/lib/shared/shared-download-order/shared-download-order.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -49,7 +49,6 @@ export class CustomOrderHistoryComponent {
|
|
|
49
49
|
this.selectedDateKey = 'orderDate';
|
|
50
50
|
this.isClearAll = false;
|
|
51
51
|
this.isInputValue = false;
|
|
52
|
-
this.isSearchBtnClicked = false;
|
|
53
52
|
this.selectedOrderNumber = '';
|
|
54
53
|
this.sesstionStorageCalled = false;
|
|
55
54
|
this.items = [];
|
|
@@ -272,7 +271,6 @@ export class CustomOrderHistoryComponent {
|
|
|
272
271
|
});
|
|
273
272
|
}
|
|
274
273
|
getOrderList() {
|
|
275
|
-
this.showWaitCursor.next(true);
|
|
276
274
|
const reqObj = {
|
|
277
275
|
searchParams: this.selectedOrderState,
|
|
278
276
|
};
|
|
@@ -342,12 +340,12 @@ export class CustomOrderHistoryComponent {
|
|
|
342
340
|
this.searchText = '';
|
|
343
341
|
this.selectedOrderType = 'orderNumber';
|
|
344
342
|
this.selectedOrderState = [];
|
|
345
|
-
this.
|
|
343
|
+
this.orderHistoryLists = [];
|
|
344
|
+
this.noSearchResults = true;
|
|
346
345
|
this.isClearAll = true;
|
|
347
346
|
this.isInputValue = false;
|
|
348
|
-
this.
|
|
349
|
-
this.
|
|
350
|
-
this.getOrderList();
|
|
347
|
+
// this.getLastMonthDateRange();
|
|
348
|
+
// this.getOrderList();
|
|
351
349
|
sessionStorage.removeItem('selectedOrderFilters');
|
|
352
350
|
}
|
|
353
351
|
getSearchDropdownData() {
|
|
@@ -401,10 +399,17 @@ export class CustomOrderHistoryComponent {
|
|
|
401
399
|
}
|
|
402
400
|
}
|
|
403
401
|
removeChips(data) {
|
|
402
|
+
var _a;
|
|
404
403
|
const ind = this.selectedOrderState.findIndex((element) => element.value == data.value);
|
|
405
404
|
this.selectedOrderState.splice(ind, 1);
|
|
406
405
|
this.orderHistoryLists = [];
|
|
407
|
-
this.
|
|
406
|
+
if (((_a = this.selectedOrderState) === null || _a === void 0 ? void 0 : _a.length) == 0) {
|
|
407
|
+
this.noSearchResults = true;
|
|
408
|
+
this.orderHistoryLists = [];
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
this.getSearchResults();
|
|
412
|
+
}
|
|
408
413
|
}
|
|
409
414
|
onChange(e) {
|
|
410
415
|
this.selectedOrderType = e.target.value;
|
|
@@ -465,7 +470,6 @@ export class CustomOrderHistoryComponent {
|
|
|
465
470
|
});
|
|
466
471
|
}
|
|
467
472
|
getSearchResults() {
|
|
468
|
-
this.isSearchBtnClicked = true;
|
|
469
473
|
this.selectedFilters = JSON.parse(JSON.stringify(this.selectedOrderState));
|
|
470
474
|
const obj = {
|
|
471
475
|
key: this.selectedOrderType,
|
|
@@ -474,8 +478,8 @@ export class CustomOrderHistoryComponent {
|
|
|
474
478
|
if (this.searchText != '' &&
|
|
475
479
|
(this.selectedOrderType == 'orderNumber' ||
|
|
476
480
|
this.selectedOrderType == 'poNumber')) {
|
|
477
|
-
this.selectedOrderState = [];
|
|
478
|
-
this.selectedFilters = [];
|
|
481
|
+
// this.selectedOrderState = [];
|
|
482
|
+
// this.selectedFilters = [];
|
|
479
483
|
this.selectedFilters.push(obj);
|
|
480
484
|
}
|
|
481
485
|
else {
|
|
@@ -566,16 +570,13 @@ export class CustomOrderHistoryComponent {
|
|
|
566
570
|
this.isInputValue = true;
|
|
567
571
|
}
|
|
568
572
|
}
|
|
573
|
+
search() {
|
|
574
|
+
this.currentPage = 0;
|
|
575
|
+
this.getSearchResults();
|
|
576
|
+
}
|
|
569
577
|
loadMoreRecord() {
|
|
570
578
|
this.loaderImage.next(true);
|
|
571
579
|
this.currentPage += 1;
|
|
572
|
-
if (this.isSearchBtnClicked) {
|
|
573
|
-
console.log('called inside load more');
|
|
574
|
-
this.getSearchResults();
|
|
575
|
-
}
|
|
576
|
-
else {
|
|
577
|
-
this.getOrderList();
|
|
578
|
-
}
|
|
579
580
|
}
|
|
580
581
|
orderNumberClicked(orderNumber, newWindowFlag) {
|
|
581
582
|
sessionStorage.removeItem('selectedOrderFilters');
|
|
@@ -637,7 +638,7 @@ export class CustomOrderHistoryComponent {
|
|
|
637
638
|
}
|
|
638
639
|
}
|
|
639
640
|
CustomOrderHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomOrderHistoryComponent, deps: [{ token: i1.CmsService }, { token: i2.OrderHistoryService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
640
|
-
CustomOrderHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomOrderHistoryComponent, selector: "app-custom-order-history", viewQueries: [{ propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true, static: true }], ngImport: i0, template: "<app-custom-breadcrum [customCrumbData]=\"breadcrumbData\"></app-custom-breadcrum>\r\n<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading…</div>\r\n\r\n<div\r\n class=\"container\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"0\"\r\n [infiniteScrollThrottle]=\"1000\"\r\n (scrolled)=\"onScroll()\"\r\n (window:resize)=\"onResize($event)\"\r\n>\r\n <ng-container *ngIf=\"dataAvailale == 'hasData'\">\r\n <ng-template ngIf=\"orderHistoryHeading\">\r\n <h1 class=\"pageTitle my-4 py-2\">{{ pageTitle }}</h1>\r\n <div\r\n class=\"text-left pageParaText mb-5\"\r\n [innerHTML]=\"orderHistoryHeading\"\r\n ></div>\r\n </ng-template>\r\n <span class=\"d-flex justify-content-end\">\r\n <a href=\"javascript:void(0)\" (click)=\"clearAll()\"><u>Clear all</u></a>\r\n </span>\r\n <div class=\"order-search-block\">\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <select name=\"\" id=\"\" (change)=\"onChange($event)\">\r\n <option\r\n value=\"orderNumber\"\r\n [selected]=\"selectedOrderType == 'orderNumber'\"\r\n >\r\n Order #\r\n </option>\r\n <option\r\n value=\"poNumber\"\r\n [selected]=\"selectedOrderType == 'poNumber'\"\r\n >\r\n PO #\r\n </option>\r\n <option\r\n value=\"jobReference\"\r\n [selected]=\"selectedOrderType == 'jobReference'\"\r\n >\r\n Job Ref\r\n </option>\r\n <option\r\n value=\"productCode\"\r\n [selected]=\"selectedOrderType == 'productCode'\"\r\n >\r\n SKU / Item #\r\n </option>\r\n </select>\r\n </div>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchText\"\r\n (input)=\"onSearchChange($event)\"\r\n class=\"form-control\"\r\n aria-label=\"Text input with dropdown button\"\r\n />\r\n <div class=\"input-group-append\">\r\n <button\r\n type=\"button\"\r\n class=\"btn search-btn\"\r\n [disabled]=\"!isInputValue\"\r\n (click)=\"getSearchResults()\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-ionic-ios-search.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-block\">\r\n <div class=\"custom-date-input\">\r\n <app-date-range-picker\r\n class=\"d-flex-mobile\"\r\n [selectedDateRange]=\"selectedDateFilterValue\"\r\n (selectedDate)=\"getSelectedDate($event)\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n ></app-date-range-picker>\r\n <!-- <img src=\"../../../../assets/images/ic_calender.svg\" alt=\"calender\" class=\"date-icon\"> -->\r\n </div>\r\n <ng-container *ngIf=\"isDesktop; else filterMobile\">\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderState\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Order State\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderState\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of orderStates\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'orderState',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"deliveryType\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Delivery Type\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"deliveryType\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of deliveryTypes\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'deliveryType',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderStatus\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Order Status\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of orderStatuses\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'orderStatuses',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"chips-block\" *ngIf=\"selectedOrderState.length > 0\">\r\n <ng-container\r\n *ngIf=\"selectedOrderState && selectedOrderState.length > 0\"\r\n >\r\n <div class=\"chips\" *ngFor=\"let data of selectedOrderState\">\r\n <p class=\"chip-title\">\r\n {{\r\n data.key == \"orderStatuses\"\r\n ? \"Order Status\"\r\n : data.key == \"orderState\"\r\n ? \"Order State\"\r\n : data.key == \"orderDate\"\r\n ? \"Order\"\r\n : data.key == \"deliveryDate\"\r\n ? \"Delivery\"\r\n : \"Delivery Type\"\r\n }}\r\n :\r\n </p>\r\n <span class=\"chip-content ml-1\">{{ data.name }}</span>\r\n <i\r\n class=\"fas fa-times-circle ml-3 close-icon\"\r\n (click)=\"removeChips(data)\"\r\n ></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterMobile>\r\n <button\r\n type=\"button\"\r\n class=\"btn dimond-secondary-btn filter-btn\"\r\n data-toggle=\"modal\"\r\n data-target=\"#filterModal\"\r\n >\r\n More Filters\r\n </button>\r\n </ng-template>\r\n </div>\r\n\r\n <hr />\r\n <!-- Filter Modal-->\r\n <div\r\n class=\"modal fade modal-right\"\r\n id=\"filterModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"inviteMemberLabel\"\r\n aria-hidden=\"true\"\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 <h5 class=\"modal-title\"></h5>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n (click)=\"clearAll()\"\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\">\r\n <div class=\"d-flex justify-content-between main-view\">\r\n <div class=\"filter-head\">\r\n <h3>Filters</h3>\r\n </div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"clearAll()\"\r\n class=\"clearAll\"\r\n >\r\n <u>Clear all</u></a\r\n >\r\n </div>\r\n <div id=\"main\">\r\n <div class=\"container\">\r\n <div class=\"accordion\" id=\"faq\">\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead1\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq1\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq1\"\r\n >Order State</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq1\"\r\n class=\"collapse show\"\r\n aria-labelledby=\"faqhead1\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of orderStates\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'orderState',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead2\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq2\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq2\"\r\n >Delivery Type</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq2\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead2\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of deliveryTypes\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'deliveryType',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead3\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq3\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq3\"\r\n >Order Status</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq3\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead3\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of orderStatuses\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'orderStatuses',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"d-lg-flex d-sm-block justify-content-end d-block fixed-bottom\"\r\n >\r\n <button\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"clearAll()\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n type=\"submit\"\r\n data-dismiss=\"modal\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n (click)=\"onSubmit()\"\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- NO SEARCH RESULTS -->\r\n <ng-container *ngIf=\"noSearchResults\">\r\n <div class=\"noResults text-center\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-12 col-12\">\r\n <div\r\n class=\"text-center\"\r\n [innerHTML]=\"\r\n noSearchResultContent\r\n ? noSearchResultContent\r\n : 'No Results Found !'\r\n \"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"order-history-table\" *ngIf=\"orderHistoryLists.length > 0\">\r\n <span class=\"total-order\">{{ totalResults }} orders found</span>\r\n <div class=\"d-flex justify-content-between py-3\">\r\n <div>\r\n <div class=\"btn-group\">\r\n <select name=\"\" id=\"\" class=\"mr-3\" (change)=\"sortBy($event)\">\r\n <option\r\n value=\"{{ option.code }}\"\r\n *ngFor=\"let option of orderSortLists\"\r\n >\r\n {{ option.value }}\r\n </option>\r\n </select>\r\n </div>\r\n <!-- <div class=\"btn-group\">\r\n <button class=\"btn history-table-dropdown position-relative\" type=\"button\" id=\"orderStatus\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n Optional column\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of optionalColumns\">\r\n <input type=\"checkbox\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n [value]=\"data.value\" />\r\n {{data.name}}\r\n </label>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div>\r\n <div class=\"main-view\" *ngIf=\"isDesktop\">\r\n <button\r\n [ngClass]=\"{ active: listview === false }\"\r\n class=\"btn btn-sm\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === false\"\r\n src=\"../../../assets/images/Grid-light.svg\"\r\n alt=\"gridviewlight\"\r\n />\r\n <img\r\n *ngIf=\"listview === true\"\r\n src=\"../../../assets/images/Grid-dark.svg\"\r\n alt=\"gridviewdark\"\r\n />\r\n Grid\r\n </button>\r\n <button\r\n [ngClass]=\"{ active: listview === true }\"\r\n class=\"btn btn-sm active\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === true\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-light.svg\"\r\n alt=\"listview\"\r\n />\r\n <img\r\n *ngIf=\"listview === false\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-dark.svg\"\r\n alt=\"listview\"\r\n />\r\n List\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- ORDER HISTORY LIST -->\r\n <div\r\n class=\"list-view table-responsive\"\r\n *ngIf=\"listview && isDesktop && orderHistoryLists.length > 0\"\r\n >\r\n <table class=\"table order-list-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">\r\n Order #\r\n <span\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"{{ orderTooltipContent }}\"\r\n placement=\"bottom\"\r\n ></span>\r\n </th>\r\n <th scope=\"col\">\r\n Po #\r\n <span\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"{{ poTooltipContent }}\"\r\n placement=\"bottom\"\r\n ></span>\r\n </th>\r\n <th scope=\"col\">\r\n Order Date\r\n <span\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"{{ orderDateTooltipContent }}\"\r\n placement=\"bottom\"\r\n ></span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Type\r\n <span\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"{{ deliveryTypeTooltipContent }}\"\r\n placement=\"bottom\"\r\n ></span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Dates\r\n <span\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"{{ deliveryDateTooltipContent }}\"\r\n placement=\"bottom\"\r\n ></span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Address\r\n <span\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"{{ deliveryAddressTooltipContent }}\"\r\n placement=\"bottom\"\r\n ></span>\r\n </th>\r\n <th scope=\"col\">\r\n Total Price<span class=\"gst-text\">excl GST</span>\r\n <span\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"{{ totalPriceTooltipContent }}\"\r\n placement=\"bottom\"\r\n ></span>\r\n </th>\r\n <th scope=\"col\">\r\n Status\r\n <span\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"{{ statusTooltipContent }}\"\r\n placement=\"bottom\"\r\n ></span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let orders of orderHistoryLists\">\r\n <td\r\n (contextmenu)=\"onRightClick($event, orders.code)\"\r\n style=\"padding-bottom: 20px\"\r\n [id]=\"'id-' + orders.code\"\r\n >\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"orderNumberClicked(orders.code, false)\"\r\n >{{ orders?.code }}</a\r\n >\r\n </td>\r\n <td>{{ orders?.purchaseOrderNumber }}</td>\r\n <td>{{ orders?.placed | date : \"dd/MM/yyyy\" }}</td>\r\n <td>{{ orders?.deliveryMode?.name }}</td>\r\n <td>\r\n <ng-container *ngIf=\"orders?.isSameDate; else notMatch\">\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-template #notMatch>\r\n {{ orders?.minDeliveryDate | date : \"dd/MM/yyyy\" }} -\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-template>\r\n </td>\r\n <td class=\"ellipsis\">\r\n {{ orders?.deliveryAddress?.formattedAddress }}\r\n </td>\r\n <td class=\"price-bold\">{{ orders?.total?.formattedValue }}</td>\r\n <td>\r\n <app-slider-progress [sliderData]=\"orders\"></app-slider-progress>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!-- ORDER HISTORY GRID -->\r\n <div\r\n class=\"row grid-view\"\r\n *ngIf=\"(!listview || !isDesktop) && orderHistoryLists.length > 0\"\r\n >\r\n <div\r\n class=\"col-lg-3 col-md-6 col-sm-12 col-12\"\r\n *ngFor=\"let orders of orderHistoryLists\"\r\n >\r\n <div class=\"grid-tile\">\r\n <div class=\"grid-top\">\r\n <table>\r\n <tr>\r\n <th>Order #:</th>\r\n <td\r\n (contextmenu)=\"onRightClick($event, orders.code)\"\r\n [id]=\"'id-' + orders.code\"\r\n >\r\n <a (click)=\"orderNumberClicked(orders.code, false)\">{{\r\n orders?.code\r\n }}</a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>PO #:</th>\r\n <td>{{ orders?.purchaseOrderNumber }}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-middle\">\r\n <table>\r\n <tr>\r\n <th>Delivery Type:</th>\r\n <td>{{ orders?.deliveryMode?.name }}</td>\r\n </tr>\r\n <tr>\r\n <th>Delivery Dates:</th>\r\n <td>\r\n <ng-container *ngIf=\"orders?.isSameDate; else notMatch\">\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-template #notMatch>\r\n {{ orders?.minDeliveryDate | date : \"dd/MM/yyyy\" }} -\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-template>\r\n <span *ngIf=\"!isMobile\"\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"Status Information\"\r\n placement=\"bottom\"\r\n ></span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Order Date:</th>\r\n <td>{{ orders?.placed | customDatePipe : \"dd/MM/yy\" }}</td>\r\n </tr>\r\n <tr>\r\n <th>Address:</th>\r\n <td>{{ orders?.deliveryAddress?.formattedAddress }}</td>\r\n </tr>\r\n <tr>\r\n <th>Total Price:</th>\r\n <td class=\"price-bold\">\r\n {{ orders?.total?.formattedValue\r\n }}<span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-bottom\">\r\n <p>\r\n Status:\r\n <span *ngIf=\"!isMobile\"\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"Status Information\"\r\n placement=\"bottom\"\r\n ></span>\r\n </p>\r\n <div class=\"pb-3 mb-3\" [ngClass]=\"{'pt-4 mt-4' : orders?.maxLineStatus}\" >\r\n <app-slider-progress [sliderData]=\"orders\"></app-slider-progress>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left.px]=\"menuTopLeftPosition.x\"\r\n [style.top.px]=\"menuTopLeftPosition.y\"\r\n [matMenuTriggerFor]=\"rightMenu\"\r\n ></div>\r\n\r\n <mat-menu #rightMenu=\"matMenu\">\r\n <div matMenuContent *ngFor=\"let item of items\">\r\n <button (click)=\"orderNumberClicked(item, true)\" mat-menu-item>\r\n Open Order in new tab\r\n </button>\r\n </div>\r\n </mat-menu>\r\n <ng-container *ngIf=\"loaderImage | async\">\r\n <div class=\"col-sm-12 mx-auto text-center mb-4\">\r\n <span class=\"product-loader\">\r\n <i class=\"loader-icon fas fa-spinner fa-pulse\"></i>\r\n <span class=\"loader-text\">loading\u2026.</span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- NO ORDER HISTORY -->\r\n <ng-container *ngIf=\"dataAvailale == 'noData'\">\r\n <div class=\"row empty-orderpage-container\">\r\n <div class=\"col-sm-12 col-md-10 col-lg-10 m-auto\">\r\n <div class=\"text-center\" [innerHTML]=\"noOrderHistoryData\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\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}}*{scroll-margin-top:144px}::ng-deep cx-page-layout.AccountPageTemplate cx-page-slot{max-width:100%!important;padding:0}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block{background-color:#fff;border:1px solid #E0E0E0;padding:35px 30px}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .drop-down-btn{background-color:#f6f6f6;border:1px solid #E0E0E0;border-radius:0;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .search-btn{background-color:#000;color:#fff;border-radius:0}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .input-group-prepend select{border:1px solid #E0E0E0;border-right:10px solid #F6F6F6;background-color:#f6f6f6;cursor:pointer;padding:0 10px;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block{padding:20px 30px;border:1px solid #E0E0E0;margin-bottom:2.375rem;position:relative}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input{display:inline-block}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-inner-circle{background-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-outer-circle{border-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action{height:40px;border:1px solid #E0E0E0;vertical-align:middle;margin-right:30px;padding:12px;color:#161616;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action::placeholder{color:#1d1d1b}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .date-icon{position:absolute;left:180px;top:42px;height:auto;cursor:pointer;border:none}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;height:40px;width:240px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block{margin-top:40px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips{background-color:#e8e8e8;display:inline-block;margin-bottom:10px;padding:8px 12px;border-radius:20px;margin-right:24px;font-size:var(--fontsize14)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .chip-title{display:inline;font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .chip-content{font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .close-icon{cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem{padding:10px 0 10px 50px;margin-bottom:0}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem input[type=checkbox]{margin-top:.1rem}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table{margin-top:1.25rem}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table select{height:40px;border:1px solid #E0E0E0;padding:0 12px;cursor:pointer;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .total-order{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .history-table-dropdown{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;width:240px;height:40px}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .history-table-dropdown .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile{border:1px solid #E0E0E0;margin-bottom:30px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-top{padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle{background-color:#fff;padding:15px;border-top:1px solid #E0E0E0;border-bottom:1px solid #E0E0E0}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-bottom{background-color:#fff;padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-bottom p{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;margin-bottom:20px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table{width:100%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr{vertical-align:baseline;line-height:2rem}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr th{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;width:50%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr td{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .price-bold{font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .gst-text{font-size:var(--fontsize14);font-family:\"Arial Regular\",sans-serif;display:block;line-height:10px}::ng-deep cx-page-layout.AccountPageTemplate .list-view{overflow-x:hidden}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table thead{background-color:#646363;height:60px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table thead th{border-bottom:none;vertical-align:middle;text-align:left;color:#fff;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr{background-color:#fff}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr.selectedOrder{background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr:hover{background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody td a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody td:last-child{min-width:220px;padding:40px 20px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody .price-bold{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table .gst-text{font-size:var(--fontsize12);display:block;text-transform:none}.status-text{font-size:var(--fontsize12);font-family:\"Arial Bold\",sans-serif}.noResults{margin:5rem auto}.noResults h3{margin-top:1.5rem;font-size:var(--fontsize28);font-family:\"Arial Regular\",sans-serif}.empty-orderpage-container{margin:10rem auto}.info-icon{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E%0D %3Cpath id%3D%22Icon_metro-info%22 data-name%3D%22Icon metro-info%22 d%3D%22M9.571%2C6.678a.752.752%2C0%2C0%2C1%2C.75-.75h.5a.752.752%2C0%2C0%2C1%2C.75.75v.5a.752.752%2C0%2C0%2C1-.75.75h-.5a.752.752%2C0%2C0%2C1-.75-.75Zm3%2C7.25h-4v-1h1v-3h-1v-1h3v4h1Zm-2-12a8%2C8%2C0%2C1%2C0%2C8%2C8%2C8%2C8%2C0%2C0%2C0-8-8Zm0%2C14.5a6.5%2C6.5%2C0%2C1%2C1%2C6.5-6.5A6.5%2C6.5%2C0%2C0%2C1%2C10.571%2C16.428Z%22 transform%3D%22translate(-2.571 -1.928)%22 fill%3D%22%23c6c6c6%22%2F%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:16px;height:16px;display:inline-block;top:3px}::ng-deep .ngx-slider{margin:0!important;pointer-events:none;height:30px!important}::ng-deep .ngx-slider .ngx-slider-bar{height:7px;background:#A6A6A5!important}::ng-deep .ngx-slider .ngx-slider-tick{width:5px;height:5px;top:3px}::ng-deep .ngx-slider .ngx-slider-selected{background-color:#646363!important}::ng-deep .ngx-slider .ngx-slider-pointer{position:relative;width:30px;height:30px}::ng-deep .ngx-slider .ngx-slider-pointer:after{display:none}::ng-deep .ngx-slider .ngx-slider-inner-tooltip{display:none}::ng-deep .ngx-slider .ngx-slider-tick-legend{display:none!important;white-space:nowrap!important}#filterModal .modal-body .btn-group{display:block}#filterModal .modal-body .btn-group .custom-dropdown-btn{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid #E0E0E0}#filterModal .modal-body .filter-head h3{font-family:\"Arial Bold\",sans-serif}#filterModal .modal-body .fixed-bottom{position:absolute;right:20px;left:20px}#filterModal .modal-body .mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-body .mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-content{height:100vh}#main{margin:50px 0}#main #faq .card{margin-bottom:30px;border:0}#main #faq .card .card-header{padding:0;border-bottom:1px solid #E0E0E0;background-color:#fff}#main #faq .card .card-header .btn-header-link{display:block;text-align:left;color:#161616;font-family:\"Arial Bold\",sans-serif}#main #faq .card .card-header .btn-header-link:after{content:\"\\f107\";font-family:\"Font Awesome 5 Free\";font-weight:900;float:right}#main #faq .card .card-header .btn-header-link.collapsed:after{content:\"\\f106\"}#main #faq .card .collapse{border:0}@media screen and (max-width: 991px){.order-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .fx-date-range-container{display:inline!important}::ng-deep .filter-block .dimond-secondary-btn{margin-bottom:0!important}::ng-deep .filter-block .custom-date-input .date-icon{top:18px!important}}@media screen and (min-width: 767px){#filterModal .modal-dialog{position:fixed;width:100%;max-width:500px!important;min-width:500px!important;margin-top:0;right:0px;padding-bottom:2rem}}@media screen and (max-width: 768px){.order-search-block{background-color:transparent!important;border:none!important;padding:10px 0!important}.order-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .d-flex-mobile{display:flex;align-items:center}::ng-deep .filter-block .ngx-daterangepicker-action{margin-right:0!important}::ng-deep .filter-block .custom-date-input .date-icon{position:absolute!important;left:150px!important;top:-2px!important}::ng-deep .filter-block .btn-group .custom-dropdown-btn{width:auto}::ng-deep .filter-block .filter-btn{border:1px solid #E0E0E0!important;float:right;text-transform:none}.input-group-prepend select{height:48px}.order-history-table .history-table-dropdown{width:160px}::ng-deep .fx-date-range-container .md-drppicker.shown{width:100%!important;left:0px!important}::ng-deep .fx-date-range-container .md-drppicker.shown .calendar{max-width:100%}::ng-deep .fx-date-range-container .md-drppicker.shown .btn{width:calc(100% - 15px)!important}::ng-deep .fx-date-range-container .md-drppicker.shown .btn-default{width:calc(100% - 15px)!important;border:1px solid #1D1D1B;margin-right:0!important}#main{margin:.75rem 0}#main .container{padding:0}#main #faq .card{margin-bottom:0}#main #faq .card .btn-header-link{padding-left:0}.grid-bottom p{text-align:center}}@media screen and (max-width: 440px){#filterModal .modal-body{padding:20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}@media only screen and (min-width: 360px) and (max-width: 440px){::ng-deep .filter-block .custom-date-input .ngx-daterangepicker-action{width:140px}::ng-deep .filter-block .custom-date-input .date-icon{width:auto;left:100px!important}::ng-deep .filter-block .custom-date-input .md-drppicker.double{width:100%}#filterModal .modal-body{padding:15px 20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}\n"], components: [{ type: i3.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i4.DateRangePickerComponent, selector: "app-date-range-picker", inputs: ["selectedDateRange"], outputs: ["selectedDate"] }, { type: i5.SliderProgressComponent, selector: "app-slider-progress", inputs: ["sliderData"] }, { type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { type: i9.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i9.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "async": i7.AsyncPipe, "date": i7.DatePipe, "customDatePipe": i11.CustomDatePipe } });
|
|
641
|
+
CustomOrderHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomOrderHistoryComponent, selector: "app-custom-order-history", viewQueries: [{ propertyName: "matMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true, static: true }], ngImport: i0, template: "<app-custom-breadcrum [customCrumbData]=\"breadcrumbData\"></app-custom-breadcrum>\r\n<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading…</div>\r\n\r\n<div\r\n class=\"container\"\r\n infiniteScroll\r\n [infiniteScrollDistance]=\"0\"\r\n [infiniteScrollThrottle]=\"1000\"\r\n (scrolled)=\"onScroll()\"\r\n (window:resize)=\"onResize($event)\"\r\n>\r\n <ng-container *ngIf=\"dataAvailale == 'hasData'\">\r\n <ng-template ngIf=\"orderHistoryHeading\">\r\n <h1 class=\"pageTitle my-4 py-2\">{{ pageTitle }}</h1>\r\n <div\r\n class=\"text-left pageParaText mb-5\"\r\n [innerHTML]=\"orderHistoryHeading\"\r\n ></div>\r\n </ng-template>\r\n <span class=\"d-flex justify-content-end\">\r\n <a href=\"javascript:void(0)\" (click)=\"clearAll()\"><u>Clear all</u></a>\r\n </span>\r\n <div class=\"order-search-block\">\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <select name=\"\" id=\"\" (change)=\"onChange($event)\">\r\n <option\r\n value=\"orderNumber\"\r\n [selected]=\"selectedOrderType == 'orderNumber'\"\r\n >\r\n Order #\r\n </option>\r\n <option\r\n value=\"poNumber\"\r\n [selected]=\"selectedOrderType == 'poNumber'\"\r\n >\r\n PO #\r\n </option>\r\n <option\r\n value=\"jobReference\"\r\n [selected]=\"selectedOrderType == 'jobReference'\"\r\n >\r\n Job Ref\r\n </option>\r\n <option\r\n value=\"productCode\"\r\n [selected]=\"selectedOrderType == 'productCode'\"\r\n >\r\n SKU / Item #\r\n </option>\r\n </select>\r\n </div>\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"searchText\"\r\n (input)=\"onSearchChange($event)\"\r\n class=\"form-control\"\r\n aria-label=\"Text input with dropdown button\"\r\n />\r\n <div class=\"input-group-append\">\r\n <button\r\n type=\"button\"\r\n class=\"btn search-btn\"\r\n [disabled]=\"!isInputValue\"\r\n (click)=\"search()\"\r\n >\r\n <img\r\n src=\"../../../assets/images/icon-ionic-ios-search.svg\"\r\n alt=\"\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-block\">\r\n <div class=\"custom-date-input\">\r\n <app-date-range-picker\r\n class=\"d-flex-mobile\"\r\n [selectedDateRange]=\"selectedDateFilterValue\"\r\n (selectedDate)=\"getSelectedDate($event)\"\r\n [(ngModel)]=\"selectedDateRange\"\r\n ></app-date-range-picker>\r\n <!-- <img src=\"../../../../assets/images/ic_calender.svg\" alt=\"calender\" class=\"date-icon\"> -->\r\n </div>\r\n <ng-container *ngIf=\"isDesktop; else filterMobile\">\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderState\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Order State\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderState\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of orderStates\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'orderState',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"deliveryType\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Delivery Type\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"deliveryType\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of deliveryTypes\">\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'deliveryType',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button\r\n class=\"btn custom-dropdown-btn position-relative\"\r\n type=\"button\"\r\n id=\"orderStatus\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n Order Status\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of orderStatuses\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkOrderStatus($event, {\r\n key: 'orderStatuses',\r\n value: data.key,\r\n name: data.value\r\n })\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"chips-block\" *ngIf=\"selectedOrderState.length > 0\">\r\n <ng-container\r\n *ngIf=\"selectedOrderState && selectedOrderState.length > 0\"\r\n >\r\n <div class=\"chips\" *ngFor=\"let data of selectedOrderState\">\r\n <p class=\"chip-title\">\r\n {{\r\n data.key == \"orderStatuses\"\r\n ? \"Order Status\"\r\n : data.key == \"orderState\"\r\n ? \"Order State\"\r\n : data.key == \"orderDate\"\r\n ? \"Order\"\r\n : data.key == \"deliveryDate\"\r\n ? \"Delivery\"\r\n : \"Delivery Type\"\r\n }}\r\n :\r\n </p>\r\n <span class=\"chip-content ml-1\">{{ data.name }}</span>\r\n <i\r\n class=\"fas fa-times-circle ml-3 close-icon\"\r\n (click)=\"removeChips(data)\"\r\n ></i>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-template #filterMobile>\r\n <button\r\n type=\"button\"\r\n class=\"btn dimond-secondary-btn filter-btn\"\r\n data-toggle=\"modal\"\r\n data-target=\"#filterModal\"\r\n >\r\n More Filters\r\n </button>\r\n </ng-template>\r\n </div>\r\n\r\n <hr />\r\n <!-- Filter Modal-->\r\n <div\r\n class=\"modal fade modal-right\"\r\n id=\"filterModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"inviteMemberLabel\"\r\n aria-hidden=\"true\"\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 <h5 class=\"modal-title\"></h5>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n (click)=\"clearAll()\"\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\">\r\n <div class=\"d-flex justify-content-between main-view\">\r\n <div class=\"filter-head\">\r\n <h3>Filters</h3>\r\n </div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"clearAll()\"\r\n class=\"clearAll\"\r\n >\r\n <u>Clear all</u></a\r\n >\r\n </div>\r\n <div id=\"main\">\r\n <div class=\"container\">\r\n <div class=\"accordion\" id=\"faq\">\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead1\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq1\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq1\"\r\n >Order State</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq1\"\r\n class=\"collapse show\"\r\n aria-labelledby=\"faqhead1\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of orderStates\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStateLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'orderState',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead2\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq2\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq2\"\r\n >Delivery Type</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq2\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead2\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of deliveryTypes\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"deliveryTypeLabel\"\r\n [value]=\"data.value\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'deliveryType',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card\">\r\n <div class=\"card-header\" id=\"faqhead3\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-header-link collapsed\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#faq3\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"faq3\"\r\n >Order Status</a\r\n >\r\n </div>\r\n\r\n <div\r\n id=\"faq3\"\r\n class=\"collapse\"\r\n aria-labelledby=\"faqhead3\"\r\n data-parent=\"#faq\"\r\n >\r\n <div class=\"card-body\">\r\n <label\r\n class=\"dropdownItem\"\r\n *ngFor=\"let data of orderStatuses\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"getCheckedOrderStatuses(data)\"\r\n name=\"dropdown-group\"\r\n class=\"rounded-0\"\r\n id=\"orderStatusLabel\"\r\n [value]=\"data.value\"\r\n (change)=\"\r\n checkOrderStatus(\r\n $event,\r\n {\r\n key: 'orderStatuses',\r\n value: data.key,\r\n name: data.value\r\n },\r\n 'mobile'\r\n )\r\n \"\r\n />\r\n {{ data.name }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"d-lg-flex d-sm-block justify-content-end d-block fixed-bottom\"\r\n >\r\n <button\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"clearAll()\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n type=\"submit\"\r\n data-dismiss=\"modal\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n (click)=\"onSubmit()\"\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- NO SEARCH RESULTS -->\r\n <ng-container *ngIf=\"noSearchResults\">\r\n <div class=\"noResults text-center\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-12 col-12\">\r\n <div\r\n class=\"text-center\"\r\n [innerHTML]=\"\r\n noSearchResultContent\r\n ? noSearchResultContent\r\n : 'No Results Found !'\r\n \"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"order-history-table\" *ngIf=\"orderHistoryLists.length > 0\">\r\n <span class=\"total-order\">{{ totalResults }} orders found</span>\r\n <div class=\"d-flex justify-content-between py-3\">\r\n <div>\r\n <div class=\"btn-group\">\r\n <select name=\"\" id=\"\" class=\"mr-3\" (change)=\"sortBy($event)\">\r\n <option\r\n value=\"{{ option.code }}\"\r\n *ngFor=\"let option of orderSortLists\"\r\n >\r\n {{ option.value }}\r\n </option>\r\n </select>\r\n </div>\r\n <!-- <div class=\"btn-group\">\r\n <button class=\"btn history-table-dropdown position-relative\" type=\"button\" id=\"orderStatus\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n Optional column\r\n <i class=\"fas fa-chevron-down custom-arrow-down\"></i>\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"orderStatus\">\r\n <label class=\"dropdownItem\" *ngFor=\"let data of optionalColumns\">\r\n <input type=\"checkbox\"\r\n name=\"dropdown-group\" class=\"rounded-0\"\r\n [value]=\"data.value\" />\r\n {{data.name}}\r\n </label>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div>\r\n <div class=\"main-view\" *ngIf=\"isDesktop\">\r\n <button\r\n [ngClass]=\"{ active: listview === false }\"\r\n class=\"btn btn-sm\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === false\"\r\n src=\"../../../assets/images/Grid-light.svg\"\r\n alt=\"gridviewlight\"\r\n />\r\n <img\r\n *ngIf=\"listview === true\"\r\n src=\"../../../assets/images/Grid-dark.svg\"\r\n alt=\"gridviewdark\"\r\n />\r\n Grid\r\n </button>\r\n <button\r\n [ngClass]=\"{ active: listview === true }\"\r\n class=\"btn btn-sm active\"\r\n (click)=\"toggleGridOrListView($event)\"\r\n >\r\n <img\r\n *ngIf=\"listview === true\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-light.svg\"\r\n alt=\"listview\"\r\n />\r\n <img\r\n *ngIf=\"listview === false\"\r\n class=\"list-img\"\r\n src=\"../../../assets/images/List-dark.svg\"\r\n alt=\"listview\"\r\n />\r\n List\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- ORDER HISTORY LIST -->\r\n <div\r\n class=\"list-view table-responsive\"\r\n *ngIf=\"listview && isDesktop && orderHistoryLists.length > 0\"\r\n >\r\n <table class=\"table order-list-table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">\r\n Order #\r\n <span class=\"d-inline-block ml-1\" ngbTooltip=\"{{ orderTooltipContent }}\" placement=\"bottom\">\r\n <img src=\"../../../assets/images/icon-metro-info.svg\" alt=\"info-icon\">\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Po #\r\n <span class=\"d-inline-block ml-1\" ngbTooltip=\"{{ poTooltipContent }}\" placement=\"bottom\">\r\n <img src=\"../../../assets/images/icon-metro-info.svg\" alt=\"info-icon\">\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Order Date\r\n <span class=\"d-inline-block ml-1\" ngbTooltip=\"{{ orderDateTooltipContent }}\" placement=\"bottom\">\r\n <img src=\"../../../assets/images/icon-metro-info.svg\" alt=\"info-icon\">\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Type\r\n <span class=\"d-inline-block ml-1\" ngbTooltip=\"{{ deliveryTypeTooltipContent }}\" placement=\"bottom\">\r\n <img src=\"../../../assets/images/icon-metro-info.svg\" alt=\"info-icon\">\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Dates\r\n <span class=\"d-inline-block ml-1\" ngbTooltip=\"{{ deliveryDateTooltipContent }}\" placement=\"bottom\">\r\n <img src=\"../../../assets/images/icon-metro-info.svg\" alt=\"info-icon\">\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Delivery Address\r\n <span class=\"d-inline-block ml-1\" ngbTooltip=\"{{ deliveryAddressTooltipContent }}\" placement=\"bottom\">\r\n <img src=\"../../../assets/images/icon-metro-info.svg\" alt=\"info-icon\">\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Total Price<br>\r\n <span class=\"gst-text\">excl GST</span>\r\n <span class=\"d-inline-block ml-1\" ngbTooltip=\"{{ totalPriceTooltipContent }}\" placement=\"bottom\">\r\n <img src=\"../../../assets/images/icon-metro-info.svg\" alt=\"info-icon\">\r\n </span>\r\n </th>\r\n <th scope=\"col\">\r\n Status\r\n <span class=\"d-inline-block ml-1\" ngbTooltip=\"{{ statusTooltipContent }}\" placement=\"bottom\">\r\n <img src=\"../../../assets/images/icon-metro-info.svg\" alt=\"info-icon\">\r\n </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let orders of orderHistoryLists\">\r\n <td\r\n (contextmenu)=\"onRightClick($event, orders.code)\"\r\n style=\"padding-bottom: 20px\"\r\n [id]=\"'id-' + orders.code\"\r\n >\r\n <a\r\n href=\"javascript:void(0)\"\r\n (click)=\"orderNumberClicked(orders.code, false)\"\r\n >{{ orders?.code }}</a\r\n >\r\n </td>\r\n <td>{{ orders?.purchaseOrderNumber }}</td>\r\n <td>{{ orders?.placed | date : \"dd/MM/yyyy\" }}</td>\r\n <td>{{ orders?.deliveryMode?.name }}</td>\r\n <td>\r\n <ng-container *ngIf=\"orders?.isSameDate; else notMatch\">\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-template #notMatch>\r\n {{ orders?.minDeliveryDate | date : \"dd/MM/yyyy\" }} -\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-template>\r\n </td>\r\n <td class=\"ellipsis\">\r\n {{ orders?.deliveryAddress?.formattedAddress }}\r\n </td>\r\n <td class=\"price-bold\">{{ orders?.total?.formattedValue }}</td>\r\n <td>\r\n <app-slider-progress [sliderData]=\"orders\"></app-slider-progress>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!-- ORDER HISTORY GRID -->\r\n <div\r\n class=\"row grid-view\"\r\n *ngIf=\"(!listview || !isDesktop) && orderHistoryLists.length > 0\"\r\n >\r\n <div\r\n class=\"col-lg-3 col-md-6 col-sm-12 col-12\"\r\n *ngFor=\"let orders of orderHistoryLists\"\r\n >\r\n <div class=\"grid-tile\">\r\n <div class=\"grid-top\">\r\n <table>\r\n <tr>\r\n <th>Order #:</th>\r\n <td\r\n (contextmenu)=\"onRightClick($event, orders.code)\"\r\n [id]=\"'id-' + orders.code\"\r\n >\r\n <a (click)=\"orderNumberClicked(orders.code, false)\">{{\r\n orders?.code\r\n }}</a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>PO #:</th>\r\n <td>{{ orders?.purchaseOrderNumber }}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-middle\">\r\n <table>\r\n <tr>\r\n <th>Delivery Type:</th>\r\n <td>{{ orders?.deliveryMode?.name }}</td>\r\n </tr>\r\n <tr>\r\n <th>Delivery Dates:</th>\r\n <td>\r\n <ng-container *ngIf=\"orders?.isSameDate; else notMatch\">\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-container>\r\n <ng-template #notMatch>\r\n {{ orders?.minDeliveryDate | date : \"dd/MM/yyyy\" }} -\r\n {{ orders?.maxDeliveryDate | date : \"dd/MM/yyyy\" }}\r\n </ng-template>\r\n <span *ngIf=\"!isMobile\"\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"Status Information\"\r\n placement=\"bottom\"\r\n ></span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <th>Order Date:</th>\r\n <td>{{ orders?.placed | customDatePipe : \"dd/MM/yy\" }}</td>\r\n </tr>\r\n <tr>\r\n <th>Address:</th>\r\n <td>{{ orders?.deliveryAddress?.formattedAddress }}</td>\r\n </tr>\r\n <tr>\r\n <th>Total Price:</th>\r\n <td class=\"price-bold\">\r\n {{ orders?.total?.formattedValue\r\n }}<span class=\"gst-text\">excl GST</span>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"grid-bottom\">\r\n <p>\r\n Status:\r\n <span *ngIf=\"!isMobile\"\r\n class=\"info-icon d-inline-block ml-1\"\r\n ngbTooltip=\"Status Information\"\r\n placement=\"bottom\"\r\n ></span>\r\n </p>\r\n <div class=\"pb-3 mb-3\" [ngClass]=\"{'pt-4 mt-4' : orders?.maxLineStatus}\" >\r\n <app-slider-progress [sliderData]=\"orders\"></app-slider-progress>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left.px]=\"menuTopLeftPosition.x\"\r\n [style.top.px]=\"menuTopLeftPosition.y\"\r\n [matMenuTriggerFor]=\"rightMenu\"\r\n ></div>\r\n\r\n <mat-menu #rightMenu=\"matMenu\">\r\n <div matMenuContent *ngFor=\"let item of items\">\r\n <button (click)=\"orderNumberClicked(item, true)\" mat-menu-item>\r\n Open Order in new tab\r\n </button>\r\n </div>\r\n </mat-menu>\r\n <ng-container *ngIf=\"loaderImage | async\">\r\n <div class=\"col-sm-12 mx-auto text-center mb-4\">\r\n <span class=\"product-loader\">\r\n <i class=\"loader-icon fas fa-spinner fa-pulse\"></i>\r\n <span class=\"loader-text\">loading\u2026.</span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- NO ORDER HISTORY -->\r\n <ng-container *ngIf=\"dataAvailale == 'noData'\">\r\n <div class=\"row empty-orderpage-container\">\r\n <div class=\"col-sm-12 col-md-10 col-lg-10 m-auto\">\r\n <div class=\"text-center\" [innerHTML]=\"noOrderHistoryData\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\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}}*{scroll-margin-top:144px}::ng-deep cx-page-layout.AccountPageTemplate cx-page-slot{max-width:100%!important;padding:0}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block{background-color:#fff;border:1px solid #E0E0E0;padding:35px 30px}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .drop-down-btn{background-color:#f6f6f6;border:1px solid #E0E0E0;border-radius:0;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .search-btn{background-color:#000;color:#fff;border-radius:0}::ng-deep cx-page-layout.AccountPageTemplate .order-search-block .input-group-prepend select{border:1px solid #E0E0E0;border-right:10px solid #F6F6F6;background-color:#f6f6f6;cursor:pointer;padding:0 10px;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block{padding:20px 30px;border:1px solid #E0E0E0;margin-bottom:2.375rem;position:relative}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input{display:inline-block}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-inner-circle{background-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .mat-radio-outer-circle{border-color:#b61828}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action{height:40px;border:1px solid #E0E0E0;vertical-align:middle;margin-right:30px;padding:12px;color:#161616;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .ngx-daterangepicker-action::placeholder{color:#1d1d1b}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .custom-date-input .date-icon{position:absolute;left:180px;top:42px;height:auto;cursor:pointer;border:none}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;height:40px;width:240px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .btn-group .custom-dropdown-btn .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block{margin-top:40px}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips{background-color:#e8e8e8;display:inline-block;margin-bottom:10px;padding:8px 12px;border-radius:20px;margin-right:24px;font-size:var(--fontsize14)}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .chip-title{display:inline;font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .chip-content{font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .filter-block .chips-block .chips .close-icon{cursor:pointer}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem{padding:10px 0 10px 50px;margin-bottom:0}::ng-deep cx-page-layout.AccountPageTemplate .dropdownItem input[type=checkbox]{margin-top:.1rem}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table{margin-top:1.25rem}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table select{height:40px;border:1px solid #E0E0E0;padding:0 12px;cursor:pointer;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .dropdown-menu{margin-top:0!important;width:calc(100% - 30px)}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .total-order{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .history-table-dropdown{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-align:left;background-color:#fff;border:1px solid #E0E0E0;border-radius:0;margin-right:30px;width:240px;height:40px}::ng-deep cx-page-layout.AccountPageTemplate .order-history-table .history-table-dropdown .custom-arrow-down{float:right}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile{border:1px solid #E0E0E0;margin-bottom:30px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-top{padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-middle{background-color:#fff;padding:15px;border-top:1px solid #E0E0E0;border-bottom:1px solid #E0E0E0}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-bottom{background-color:#fff;padding:15px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile .grid-bottom p{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;margin-bottom:20px}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table{width:100%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr{vertical-align:baseline;line-height:2rem}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr th{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif;width:50%}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table tr td{font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .price-bold{font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .grid-view .grid-tile table .gst-text{font-size:var(--fontsize14);font-family:\"Arial Regular\",sans-serif;display:block;line-height:10px}::ng-deep cx-page-layout.AccountPageTemplate .list-view{overflow-x:hidden}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table thead{background-color:#646363;height:60px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table thead th{border-bottom:none;vertical-align:middle;text-align:left;color:#fff;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr{background-color:#fff}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr.selectedOrder{background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody tr:hover{background-color:#f6f6f6}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody td a{color:#b61828;text-decoration:underline}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody td:last-child{min-width:220px;padding:40px 20px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;width:200px}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table tbody .price-bold{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}::ng-deep cx-page-layout.AccountPageTemplate .order-list-table .gst-text{font-size:var(--fontsize12);text-transform:none}.status-text{font-size:var(--fontsize12);font-family:\"Arial Bold\",sans-serif}.noResults{margin:5rem auto}.noResults h3{margin-top:1.5rem;font-size:var(--fontsize28);font-family:\"Arial Regular\",sans-serif}.empty-orderpage-container{margin:10rem auto}::ng-deep .ngx-slider{margin:0!important;pointer-events:none;height:30px!important}::ng-deep .ngx-slider .ngx-slider-bar{height:7px;background:#A6A6A5!important}::ng-deep .ngx-slider .ngx-slider-tick{width:5px;height:5px;top:3px}::ng-deep .ngx-slider .ngx-slider-selected{background-color:#646363!important}::ng-deep .ngx-slider .ngx-slider-pointer{position:relative;width:30px;height:30px}::ng-deep .ngx-slider .ngx-slider-pointer:after{display:none}::ng-deep .ngx-slider .ngx-slider-inner-tooltip{display:none}::ng-deep .ngx-slider .ngx-slider-tick-legend{display:none!important;white-space:nowrap!important}#filterModal .modal-body .btn-group{display:block}#filterModal .modal-body .btn-group .custom-dropdown-btn{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid #E0E0E0}#filterModal .modal-body .filter-head h3{font-family:\"Arial Bold\",sans-serif}#filterModal .modal-body .fixed-bottom{position:absolute;right:20px;left:20px}#filterModal .modal-body .mobile-cancel-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-body .mobile-save-btn{display:block;width:100%;max-width:100%;margin-bottom:1.5rem}#filterModal .modal-content{height:100vh}#main{margin:50px 0}#main #faq .card{margin-bottom:30px;border:0}#main #faq .card .card-header{padding:0;border-bottom:1px solid #E0E0E0;background-color:#fff}#main #faq .card .card-header .btn-header-link{display:block;text-align:left;color:#161616;font-family:\"Arial Bold\",sans-serif}#main #faq .card .card-header .btn-header-link:after{content:\"\\f107\";font-family:\"Font Awesome 5 Free\";font-weight:900;float:right}#main #faq .card .card-header .btn-header-link.collapsed:after{content:\"\\f106\"}#main #faq .card .collapse{border:0}@media screen and (max-width: 991px){.order-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .fx-date-range-container{display:inline!important}::ng-deep .filter-block .dimond-secondary-btn{margin-bottom:0!important}::ng-deep .filter-block .custom-date-input .date-icon{top:18px!important}}@media screen and (min-width: 767px){#filterModal .modal-dialog{position:fixed;width:100%;max-width:500px!important;min-width:500px!important;margin-top:0;right:0px;padding-bottom:2rem}}@media screen and (max-width: 768px){.order-search-block{background-color:transparent!important;border:none!important;padding:10px 0!important}.order-search-block .input-group-prepend select{height:48px}::ng-deep .filter-block{padding:0!important;border:none!important;margin-top:1.875rem}::ng-deep .filter-block .d-flex-mobile{display:flex;align-items:center}::ng-deep .filter-block .ngx-daterangepicker-action{margin-right:0!important}::ng-deep .filter-block .custom-date-input .date-icon{position:absolute!important;left:150px!important;top:-2px!important}::ng-deep .filter-block .btn-group .custom-dropdown-btn{width:auto}::ng-deep .filter-block .filter-btn{border:1px solid #E0E0E0!important;float:right;text-transform:none}.input-group-prepend select{height:48px}.order-history-table .history-table-dropdown{width:160px}::ng-deep .fx-date-range-container .md-drppicker.shown{width:100%!important;left:0px!important}::ng-deep .fx-date-range-container .md-drppicker.shown .calendar{max-width:100%}::ng-deep .fx-date-range-container .md-drppicker.shown .btn{width:calc(100% - 15px)!important}::ng-deep .fx-date-range-container .md-drppicker.shown .btn-default{width:calc(100% - 15px)!important;border:1px solid #1D1D1B;margin-right:0!important}#main{margin:.75rem 0}#main .container{padding:0}#main #faq .card{margin-bottom:0}#main #faq .card .btn-header-link{padding-left:0}.grid-bottom p{text-align:center}}@media screen and (max-width: 440px){#filterModal .modal-body{padding:20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}@media only screen and (min-width: 360px) and (max-width: 440px){::ng-deep .filter-block .custom-date-input .ngx-daterangepicker-action{width:140px}::ng-deep .filter-block .custom-date-input .date-icon{width:auto;left:100px!important}::ng-deep .filter-block .custom-date-input .md-drppicker.double{width:100%}#filterModal .modal-body{padding:15px 20px}#filterModal #main{margin:10px 0}#filterModal #main .card{margin-bottom:15px}#filterModal #main .card-body{padding:10px 0 0}#filterModal #main .card-body .dropdownItem{padding:10px 0 10px 36px}}\n"], components: [{ type: i3.CustomBreadcrumComponent, selector: "app-custom-breadcrum", inputs: ["customCrumbData"] }, { type: i4.DateRangePickerComponent, selector: "app-date-range-picker", inputs: ["selectedDateRange"], outputs: ["selectedDate"] }, { type: i5.SliderProgressComponent, selector: "app-slider-progress", inputs: ["sliderData"] }, { type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { type: i9.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i9.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "async": i7.AsyncPipe, "date": i7.DatePipe, "customDatePipe": i11.CustomDatePipe } });
|
|
641
642
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomOrderHistoryComponent, decorators: [{
|
|
642
643
|
type: Component,
|
|
643
644
|
args: [{
|
|
@@ -649,4 +650,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
649
650
|
type: ViewChild,
|
|
650
651
|
args: [MatMenuTrigger, { static: true }]
|
|
651
652
|
}] } });
|
|
652
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW9yZGVyLWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9jdXN0b20tb3JkZXItaGlzdG9yeS9jdXN0b20tb3JkZXItaGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL2N1c3RvbS1vcmRlci1oaXN0b3J5L2N1c3RvbS1vcmRlci1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU94RCxNQUFNLE9BQU8sMkJBQTJCO0lBeUR0QyxZQUNTLFVBQXNCLEVBQ3JCLG1CQUF3QyxFQUN6QyxFQUFxQjtRQUZyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3JCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDekMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUF2RDlCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGtCQUFhLEdBQVEsRUFBRSxDQUFD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LENBQUM7aUJBQ3JEO21LQXdEOEMsY0FBYztzQkFBMUQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25VdGlscyB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgT3JkZXJIaXN0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29yZGVyLWhpc3Rvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tb3JkZXItaGlzdG9yeScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1vcmRlci1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tb3JkZXItaGlzdG9yeS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21PcmRlckhpc3RvcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcGFnZVRpdGxlOiBhbnk7XHJcbiAgb3JkZXJIaXN0b3J5SGVhZGluZzogYW55O1xyXG4gIG5vT3JkZXJIaXN0b3J5RGF0YTogYW55O1xyXG4gIG5vU2VhcmNoUmVzdWx0Q29udGVudDogYW55O1xyXG4gIGxpc3R2aWV3OiBib29sZWFuID0gdHJ1ZTtcclxuICBub1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkYXRhQXZhaWxhbGU/OiBzdHJpbmc7XHJcbiAgb3JkZXJIaXN0b3J5TGlzdHM6IGFueSA9IFtdO1xyXG4gIG9yZGVyU29ydExpc3RzOiBhbnkgPSBbXTtcclxuICBvcmRlclN0YXR1c2VzOiBhbnkgPSBbXTtcclxuICBvcmRlclN0YXRlczogYW55ID0gW107XHJcbiAgZGVsaXZlcnlUeXBlczogYW55ID0gW107XHJcbiAgaXNEZXNrdG9wID0gdHJ1ZTtcclxuICBpc01vYmlsZSA9IGZhbHNlO1xyXG4gIGlzVGFibGV0ID0gZmFsc2U7XHJcbiAgYnJlYWRjcnVtYkRhdGE6IGFueSA9IFtdO1xyXG4gIHNob3dXYWl0Q3Vyc29yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgb3B0aW9uYWxDb2x1bW5zID0gW1xyXG4gICAgeyBuYW1lOiAnT3JkZXInLCB2YWx1ZTogJ29yZGVyJyB9LFxyXG4gICAgeyBuYW1lOiAnUE8nLCB2YWx1ZTogJ3BvJyB9LFxyXG4gICAgeyBuYW1lOiAnT3JkZXIgRGF0ZScsIHZhbHVlOiAnb3JkZXJEYXRlJyB9LFxyXG4gICAgeyBuYW1lOiAnRGVsaXZlcnkgVHlwZScsIHZhbHVlOiAnZGVsaXZlcnlUeXBlJyB9LFxyXG4gIF07XHJcbiAgc2VsZWN0ZWRPcmRlclN0YXRlOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZE9yZGVyVHlwZTogYW55ID0gJ29yZGVyTnVtYmVyJztcclxuICBsb2dUZXh0OiBhbnk7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgZW52aXJvbm1lbnQ6IGFueSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VudicpO1xyXG4gIGVudiA6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnZpcm9ubWVudCk7XHJcbiAgc3RvcmVGcm9udFVybCA9IHRoaXMuZW52LlVJc2l0ZVVSbDtcclxuICBzb3J0QnlWYWx1ZTogYW55O1xyXG4gIGxvYWRlckltYWdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgY3VycmVudFBhZ2UgPSAwO1xyXG4gIHRvdGFsUmVzdWx0czogYW55O1xyXG4gIHNlbGVjdGVkRGF0ZVJhbmdlOiBhbnk7XHJcbiAgc2VsZWN0ZWREYXRlS2V5OiBzdHJpbmcgPSAnb3JkZXJEYXRlJztcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueTtcclxuICBpc0NsZWFyQWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbnB1dFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcclxuICBvcmRlclRvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgcG9Ub29sdGlwQ29udGVudDogYW55O1xyXG4gIG9yZGVyRGF0ZVRvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgZGVsaXZlcnlUeXBlVG9vbHRpcENvbnRlbnQ6IGFueTtcclxuICBkZWxpdmVyeURhdGVUb29sdGlwQ29udGVudDogYW55O1xyXG4gIGRlbGl2ZXJ5QWRkcmVzc1Rvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgdG90YWxQcmljZVRvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgc3RhdHVzVG9vbHRpcENvbnRlbnQ6IGFueTtcclxuICBpc1NlYXJjaEJ0bkNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZE9yZGVyTnVtYmVyOiBzdHJpbmcgPSAnJztcclxuICBzZXNzdGlvblN0b3JhZ2VDYWxsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZERhdGVGaWx0ZXJWYWx1ZTogYW55O1xyXG4gIGl0ZW1zOiBhbnkgPSBbXTtcclxuICBtZW51VG9wTGVmdFBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XHJcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlciwgeyBzdGF0aWM6IHRydWUgfSkgbWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmRlckhpc3RvcnlTZXJ2aWNlOiBPcmRlckhpc3RvcnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5icmVhZGNydW1iRGF0YS5wdXNoKHsgdXJsOiAnLycsIG5hbWU6ICdIb21lJyB9LCB7IHVybDogJy9teS1hY2NvdW50L29yZGVycycsIG5hbWU6ICdNeSBPcmRlcnMnIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlLmdldEN1cnJlbnRQYWdlKCkuc3Vic2NyaWJlKChwYWdhZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZVRpdGxlID0gcGFnYWRhdGEudGl0bGU7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnRW1wdHlPcmRlckxpc3RDb21wb25lbnQnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5ub09yZGVySGlzdG9yeURhdGEgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnT3JkZXJIaXN0b3J5UGFyYWdyYXBoQ29tcG9uZW50JylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5SGVhZGluZyA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdFbXB0eVNlYXJjaE9yZGVyTGlzdENvbXBvbmVudCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0Q29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdvcmRlcnNfb3JkZXJIaXN0b3J5X2NvZGUnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5vcmRlclRvb2x0aXBDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3RvcnlfcHVyY2hhc2VPcmRlck51bWJlcicpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLnBvVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnb3JkZXJzX29yZGVySGlzdG9yeV9wbGFjZWQnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5vcmRlckRhdGVUb29sdGlwQ29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdvcmRlcnNfb3JkZXJIaXN0b3J5X2RlbGl2ZXJ5TW9kZScpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGl2ZXJ5VHlwZVRvb2x0aXBDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3RvcnlfZGVsaXZlcnlEYXRlJylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuZGVsaXZlcnlEYXRlVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnb3JkZXJzX29yZGVySGlzdG9yeV9kZWxpdmVyeUFkZHJlc3MnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NUb29sdGlwQ29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdvcmRlcnNfb3JkZXJIaXN0b3J5X3RvdGFsJylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMudG90YWxQcmljZVRvb2x0aXBDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3Rvcnlfc3RhdHVzJylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclR5cGUgPSAnb3JkZXJOdW1iZXInO1xyXG4gICAgdGhpcy5nZXRMYXN0TW9udGhEYXRlUmFuZ2UoKTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoRHJvcGRvd25EYXRhKCk7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJzOiBhbnkgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdzZWxlY3RlZE9yZGVyRmlsdGVycycpO1xyXG4gICAgaWYgKHRoaXMuaXNOdWxsT3JFbXB0eShzZWxlY3RlZEZpbHRlcnM/LnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgIHRoaXMuZ2V0T3JkZXJMaXN0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBvcmRlckRhdGE6IGFueSA9IEpTT04ucGFyc2Uoc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgICAgaWYgKG9yZGVyRGF0YS5zZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9IG9yZGVyRGF0YS5zZWxlY3RlZE9yZGVyVHlwZTtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBvcmRlckRhdGEuc2VhcmNoVGV4dDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gb3JkZXJEYXRhLmN1cnJlbnRQYWdlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3JkZXJEYXRhLnNlbGVjdGVkRmlsdGVycykpO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUgJiYgdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBzZWxlY3RlZERhdGUgPSB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5maW5kKChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQua2V5ID09ICdvcmRlckRhdGUnKTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgICAgICBzZWxlY3RlZERhdGUgPSBzZWxlY3RlZERhdGU/LnZhbHVlPy5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gc2VsZWN0ZWREYXRlWzBdLnNwbGl0KCcvJylbMV0gKyAnLycgKyBzZWxlY3RlZERhdGVbMF0uc3BsaXQoJy8nKVswXSArICcvJyArIHNlbGVjdGVkRGF0ZVswXS5zcGxpdCgnLycpWzJdO1xyXG4gICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IHNlbGVjdGVkRGF0ZVsxXS5zcGxpdCgnLycpWzFdICsgJy8nICsgc2VsZWN0ZWREYXRlWzFdLnNwbGl0KCcvJylbMF0gKyAnLycgKyBzZWxlY3RlZERhdGVbMV0uc3BsaXQoJy8nKVsyXTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRmlsdGVyVmFsdWUgPSB7IHN0YXJ0RGF0ZTogbW9tZW50KG5ldyBEYXRlKHN0YXJ0RGF0ZSkpLCBlbmREYXRlOiBtb21lbnQobmV3IERhdGUoZW5kRGF0ZSkpIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlck51bWJlciA9IG9yZGVyRGF0YS5vcmRlck51bWJlcjtcclxuICAgICAgdGhpcy5zZXNzdGlvblN0b3JhZ2VDYWxsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICAgIH1cclxuICAgIHRoaXMub25QYWdlUmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93V2FpdEN1cnNvci5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgaWYgKGRhdGEgPT0gZmFsc2UpIHtcclxuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmdldFN0YXR1c1VwZGF0ZSgpO1xyXG4gICAgICAgIC8vIH0sIDMwMDApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaXNOdWxsT3JFbXB0eSh2YWx1ZVRvQ2hlY2s6IHN0cmluZykge1xyXG4gICAgcmV0dXJuICh2YWx1ZVRvQ2hlY2sgPT0gbnVsbCB8fCB2YWx1ZVRvQ2hlY2sgPT0gJycpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IFttb21lbnQoKS5zdWJ0cmFjdCgyOSwgJ2RheXMnKSwgbW9tZW50KCldO1xyXG4gICAgY29uc3QgZGF0ZVZhbHVlID1cclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXREYXRlKCkgK1xyXG4gICAgICAnLycgK1xyXG4gICAgICAodGhpcy5zZWxlY3RlZERhdGVSYW5nZVswXS5fZC5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAnLycgK1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAnLCcgK1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldERhdGUoKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzFdLl9kLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0RnVsbFllYXIoKTtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZERhdGVLZXksXHJcbiAgICAgIHZhbHVlOiBkYXRlVmFsdWUsXHJcbiAgICAgIG5hbWU6IGRhdGVWYWx1ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5wdXNoKG9iaik7XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0dXNVcGRhdGUoKSB7XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gMDtcclxuICAgICAgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdDUkVBVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAxO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdBUFBST1ZFRCcpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gMjtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnUFJPQ0VTU0lORycpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gMztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnUkVBRFknKSB7XHJcbiAgICAgICAgZWxlbWVudC5zdGF0dXNWYWx1ZSA9IDQ7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0RFTElWRVJJTkcnKSB7XHJcbiAgICAgICAgZWxlbWVudC5zdGF0dXNWYWx1ZSA9IDU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0NPTVBMRVRFRCcpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvYWRlckltYWdlLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBlbGVtZW50Lm1pblZhbHVlID0gMDtcclxuICAgICAgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnQ1JFQVRFRCcpIHtcclxuICAgICAgICBlbGVtZW50Lm1pblZhbHVlID0gMTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm1pbkxpbmVTdGF0dXMgPT0gJ0FQUFJPVkVEJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSAyO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnUFJPQ0VTU0lORycpIHtcclxuICAgICAgICBlbGVtZW50Lm1pblZhbHVlID0gMztcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm1pbkxpbmVTdGF0dXMgPT0gJ1JFQURZJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSA0O1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnREVMSVZFUklORycpIHtcclxuICAgICAgICBlbGVtZW50Lm1pblZhbHVlID0gNTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm1pbkxpbmVTdGF0dXMgPT0gJ0NPTVBMRVRFRCcpIHtcclxuICAgICAgICBlbGVtZW50Lm1pblZhbHVlID0gNjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvYWRlckltYWdlLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdDUkVBVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQubWF4VmFsdWUgPSAxO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWF4TGluZVN0YXR1cyA9PSAnQVBQUk9WRUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDI7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdQUk9DRVNTSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQubWF4VmFsdWUgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWF4TGluZVN0YXR1cyA9PSAnUkVBRFknKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDQ7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdERUxJVkVSSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQubWF4VmFsdWUgPSA1O1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWF4TGluZVN0YXR1cyA9PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQubWF4VmFsdWUgPSA2O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVySW1hZ2UubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE9yZGVyTGlzdCgpIHtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIGNvbnN0IHJlcU9iajogYW55ID0ge1xyXG4gICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLFxyXG4gICAgfTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZS5nZXRPcmRlckhpc3RvcnlMaXN0KHJlcU9iaiwgdGhpcy5jdXJyZW50UGFnZSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAvLyB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gdGhpcy5vcmRlckhpc3RvcnlMaXN0cy5sZW5ndGggPT0gMCA/IGRhdGEub3JkZXJzIDogIFsuLi50aGlzLm9yZGVySGlzdG9yeUxpc3RzLCBkYXRhPy5vcmRlcnNdO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXNDbGVhckFsbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5pc0NsZWFyQWxsID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgICBkYXRlLmdldE1vbnRoKCk7XHJcbiAgICAgICAgICBkYXRlLmdldERheSgpO1xyXG4gICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuY29uY2F0KGRhdGEub3JkZXJzKTtcclxuICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZSAmJiBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZSkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlID0gbmV3IERhdGUoZWxlbWVudC5taW5EZWxpdmVyeURhdGUpO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlID0gbmV3IERhdGUoZWxlbWVudC5tYXhEZWxpdmVyeURhdGUpO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuaXNTYW1lRGF0ZSA9XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZS5nZXRGdWxsWWVhcigpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5tYXhEZWxpdmVyeURhdGUuZ2V0TW9udGgoKSA9PVxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZS5nZXRNb250aCgpICYmXHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlLmdldERheSgpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldERheSgpXHJcbiAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub3JkZXJTb3J0TGlzdHMgPSBkYXRhPy5zb3J0cztcclxuICAgICAgICAgIHRoaXMudG90YWxSZXN1bHRzID0gZGF0YT8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgdGhpcy5nZXRTdGF0dXNVcGRhdGUoKTtcclxuICAgICAgICAgIHRoaXMub3JkZXJTb3J0TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGF0ZURlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdOZXdlc3QgT3JkZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGF0ZUFzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBPcmRlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0Rlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdIaWdoZXN0IFBPIG51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0FzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ0xvd2VzdCBQTyBudW1iZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGVsaXZlcnlEZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTmV3ZXN0IERlbGl2ZXJ5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieURlbGl2ZXJ5QXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnT2xkZXN0IERlbGl2ZXJ5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcmRlckhpc3RvcnlMaXN0cyAmJiB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhQXZhaWxhbGUgPSAnaGFzRGF0YSc7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFBdmFpbGFsZSA9ICdub0RhdGEnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbCgpIHtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9ICdvcmRlck51bWJlcic7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZSA9IFtdO1xyXG4gICAgdGhpcy5ub1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNDbGVhckFsbCA9IHRydWU7XHJcbiAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1NlYXJjaEJ0bkNsaWNrZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZ2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCk7XHJcbiAgICB0aGlzLmdldE9yZGVyTGlzdCgpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc2VsZWN0ZWRPcmRlckZpbHRlcnMnKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaERyb3Bkb3duRGF0YSgpIHtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZVxyXG4gICAgICAuZ2V0T3JkZXJIaXN0b3J5U2VhcmNoU3RhdHVzZXMoKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5vcmRlclN0YXR1c2VzID0gZGF0YS5zdGF0dXNlcztcclxuICAgICAgICAgIHRoaXMub3JkZXJTdGF0dXNlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5uYW1lID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kZWxpdmVyeVR5cGVzID0gZGF0YS50eXBlcztcclxuICAgICAgICAgIHRoaXMub3JkZXJTdGF0ZXMgPSBkYXRhLnN0YXRlcztcclxuICAgICAgICAgIHRoaXMuZGVsaXZlcnlUeXBlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5uYW1lID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5vcmRlclN0YXRlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5uYW1lID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVHcmlkT3JMaXN0VmlldyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5saXN0dmlldyA9ICF0aGlzLmxpc3R2aWV3O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubmFtZSA9PSBkYXRhLnZhbHVlXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGluZCA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IFtdO1xyXG4gICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja09yZGVyU3RhdHVzKGV2ZW50OiBhbnksIGRhdGE6IGFueSwgbW9iaWxlRGF0YT86IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcbiAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLnB1c2goZGF0YSk7XHJcbiAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgICAgaWYgKCFtb2JpbGVEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLmZpbmRJbmRleChcclxuICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LnZhbHVlID09IGRhdGEudmFsdWVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuc3BsaWNlKGluZCwgMSk7XHJcbiAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgICAgaWYgKCFtb2JpbGVEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaXBzKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LnZhbHVlID09IGRhdGEudmFsdWVcclxuICAgICk7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5zcGxpY2UoaW5kLCAxKTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWREYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyczogYW55ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnc2VsZWN0ZWRPcmRlckZpbHRlcnMnKTtcclxuICAgIGlmICh0aGlzLmlzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGaWx0ZXJzPy50b1N0cmluZygpKSkge1xyXG4gICAgICBldmVudC5uYW1lID0gZXZlbnQudmFsdWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSBldmVudDtcclxuICAgICAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBlbGVtZW50LmtleSA9PSAnb3JkZXJEYXRlJyB8fCBlbGVtZW50LmtleSA9PSAnZGVsaXZlcnlEYXRlJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kID4gLTEpIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLnNwbGljZShpbmQsIDEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5wdXNoKGV2ZW50KTtcclxuICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzVmFsdWUoKSB7XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0NSRUFURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5zdGF0dXNWYWx1ZSA9IDE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0FQUFJPVkVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAyO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdQUk9DRVNTSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdSRUFEWScpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnREVMSVZFUklORycpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSA2O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNvcnRCeShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc29ydEJ5VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIGNvbnN0IHJlcU9iajogYW55ID0ge1xyXG4gICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLFxyXG4gICAgfTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZVxyXG4gICAgICAuc29ydE9yZGVySGlzdG9yeSh0aGlzLnNvcnRCeVZhbHVlLCByZXFPYmopXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gcmVzPy5vcmRlcnM7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgdGhpcy5nZXRTdGF0dXNWYWx1ZSgpO1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hSZXN1bHRzKCkge1xyXG4gICAgdGhpcy5pc1NlYXJjaEJ0bkNsaWNrZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlKSk7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSxcclxuICAgICAgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCxcclxuICAgIH07XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCAhPSAnJyAmJlxyXG4gICAgICAodGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9PSAnb3JkZXJOdW1iZXInIHx8XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9PSAncG9OdW1iZXInKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnB1c2gob2JqKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnB1c2gob2JqKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlcU9iajogYW55ID0ge1xyXG4gICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZS5nZXRPcmRlckhpc3RvcnlTZWFyY2hSZXN1bHRzKHJlcU9iaiwgdGhpcy5jdXJyZW50UGFnZSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ub3JkZXJzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuY29uY2F0KHJlcz8ub3JkZXJzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSByZXM/Lm9yZGVycztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZSAmJiBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZSkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlID0gbmV3IERhdGUoZWxlbWVudC5taW5EZWxpdmVyeURhdGUpO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlID0gbmV3IERhdGUoZWxlbWVudC5tYXhEZWxpdmVyeURhdGUpO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuaXNTYW1lRGF0ZSA9XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZS5nZXRGdWxsWWVhcigpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5tYXhEZWxpdmVyeURhdGUuZ2V0TW9udGgoKSA9PVxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZS5nZXRNb250aCgpICYmXHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlLmdldERheSgpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldERheSgpXHJcbiAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICh0aGlzLm9yZGVySGlzdG9yeUxpc3RzICYmIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFBdmFpbGFsZSA9ICdoYXNEYXRhJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YUF2YWlsYWxlID0gJ25vRGF0YSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG5cclxuICAgICAgICAgIHRoaXMub3JkZXJTb3J0TGlzdHMgPSByZXM/LnNvcnRzO1xyXG4gICAgICAgICAgdGhpcy5ub1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub3JkZXJTb3J0TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGF0ZURlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdOZXdlc3QgT3JkZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGF0ZUFzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBPcmRlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0Rlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdIaWdoZXN0IFBPIG51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0FzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ0xvd2VzdCBQTyBudW1iZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGVsaXZlcnlEZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTmV3ZXN0IERlbGl2ZXJ5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieURlbGl2ZXJ5QXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnT2xkZXN0IERlbGl2ZXJ5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmdldFN0YXR1c1ZhbHVlKCk7XHJcbiAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3JkZXJOdW1iZXIgIT0gJycgJiYgdGhpcy5zZXNzdGlvblN0b3JhZ2VDYWxsZWQpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXNzdGlvblN0b3JhZ2VDYWxsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWQtJyArIHRoaXMuc2VsZWN0ZWRPcmRlck51bWJlcik7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiAxNTAgfSk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gW107XHJcbiAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UoZTogYW55KSB7XHJcbiAgICBpZiAoZS50YXJnZXQudmFsdWUgPT0gJycgfHwgZS50YXJnZXQudmFsdWUuaW5kZXhPZignICcpID49IDApIHtcclxuICAgICAgdGhpcy5pc0lucHV0VmFsdWUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRNb3JlUmVjb3JkKCkge1xyXG4gICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSArPSAxO1xyXG4gICAgaWYgKHRoaXMuaXNTZWFyY2hCdG5DbGlja2VkKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdjYWxsZWQgaW5zaWRlIGxvYWQgbW9yZScpO1xyXG4gICAgICB0aGlzLmdldFNlYXJjaFJlc3VsdHMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0T3JkZXJMaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBvcmRlck51bWJlckNsaWNrZWQob3JkZXJOdW1iZXI6IGFueSwgbmV3V2luZG93RmxhZzogYm9vbGVhbikge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc2VsZWN0ZWRPcmRlckZpbHRlcnMnKTtcclxuICAgIGNvbnN0IG9iajogYW55ID0ge1xyXG4gICAgICBzZWxlY3RlZEZpbHRlcnM6IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLmxlbmd0aCA9PSAwICYmIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkRmlsdGVycyA6IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLFxyXG4gICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgb3JkZXJOdW1iZXI6IG9yZGVyTnVtYmVyLFxyXG4gICAgICBzZWxlY3RlZE9yZGVyVHlwZTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoVGV4dCAhPSAnJykge1xyXG4gICAgICBvYmouc2VhcmNoVGV4dCA9IHRoaXMuc2VhcmNoVGV4dDtcclxuICAgIH1cclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3NlbGVjdGVkT3JkZXJGaWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcbiAgICBpZiAobmV3V2luZG93RmxhZykge1xyXG4gICAgICB3aW5kb3cub3Blbih0aGlzLnN0b3JlRnJvbnRVcmwgKyAnL215LWFjY291bnQvb3JkZXIvJyArIG9yZGVyTnVtYmVyLCAnX2JsYW5rJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuc3RvcmVGcm9udFVybCArICcvbXktYWNjb3VudC9vcmRlci8nICsgb3JkZXJOdW1iZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG4gICAgLy8gcHJldmVudERlZmF1bHQgYXZvaWRzIHRvIHNob3cgdGhlIHZpc3VhbGl6YXRpb24gb2YgdGhlIHJpZ2h0LWNsaWNrIG1lbnUgb2YgdGhlIGJyb3dzZXJcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgLy8gd2UgcmVjb3JkIHRoZSBtb3VzZSBwb3NpdGlvbiBpbiBvdXIgb2JqZWN0XHJcbiAgICB0aGlzLm1lbnVUb3BMZWZ0UG9zaXRpb24ueCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICB0aGlzLm1lbnVUb3BMZWZ0UG9zaXRpb24ueSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAvLyB3ZSBvcGVuIHRoZSBtZW51XHJcbiAgICAvLyB3ZSBwYXNzIHRvIHRoZSBtZW51IHRoZSBpbmZvcm1hdGlvbiBhYm91dCBvdXIgb2JqZWN0XHJcbiAgICB0aGlzLm1hdE1lbnVUcmlnZ2VyLm1lbnVEYXRhID0geyBpdGVtOiBpdGVtIH1cclxuICAgIHRoaXMubWF0TWVudVRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICAvLyB3ZSBvcGVuIHRoZSBtZW51XHJcbiAgICB0aGlzLm1hdE1lbnVUcmlnZ2VyLm9wZW5NZW51KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25TY3JvbGwoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLm5vU2VhcmNoUmVzdWx0cyAmJlxyXG4gICAgICB0aGlzLnRvdGFsUmVzdWx0cyA+IHRoaXMub3JkZXJIaXN0b3J5TGlzdHMubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5sb2FkTW9yZVJlY29yZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZXNpemUoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGggPCA5OTIpIHtcclxuICAgICAgdGhpcy5pc01vYmlsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNEZXNrdG9wID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRGVza3RvcCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblBhZ2VSZWZyZXNoKCkge1xyXG4gICAgdGhpcy5pc01vYmlsZSA9IENvbW1vblV0aWxzLmlzTW9iaWxlKCk7XHJcbiAgICB0aGlzLmlzVGFibGV0ID0gQ29tbW9uVXRpbHMuaXNUYWJsZXQoKTtcclxuICAgIHRoaXMuaXNEZXNrdG9wID0gQ29tbW9uVXRpbHMuaXNEZXNrdG9wKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc2VsZWN0ZWRPcmRlckZpbHRlcnMnKTtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1jdXN0b20tYnJlYWRjcnVtIFtjdXN0b21DcnVtYkRhdGFdPVwiYnJlYWRjcnVtYkRhdGFcIj48L2FwcC1jdXN0b20tYnJlYWRjcnVtPlxyXG48ZGl2IGNsYXNzPVwibG9hZGluZ1wiICpuZ0lmPVwic2hvd1dhaXRDdXJzb3IgfCBhc3luY1wiPkxvYWRpbmcmIzgyMzA7PC9kaXY+XHJcblxyXG48ZGl2XHJcbiAgY2xhc3M9XCJjb250YWluZXJcIlxyXG4gIGluZmluaXRlU2Nyb2xsXHJcbiAgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMFwiXHJcbiAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiMTAwMFwiXHJcbiAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxyXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxyXG4+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFBdmFpbGFsZSA9PSAnaGFzRGF0YSdcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ0lmPVwib3JkZXJIaXN0b3J5SGVhZGluZ1wiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJwYWdlVGl0bGUgbXktNCBweS0yXCI+e3sgcGFnZVRpdGxlIH19PC9oMT5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1sZWZ0IHBhZ2VQYXJhVGV4dCBtYi01XCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cIm9yZGVySGlzdG9yeUhlYWRpbmdcIlxyXG4gICAgICA+PC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj48dT5DbGVhciBhbGw8L3U+PC9hPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cIm9yZGVyLXNlYXJjaC1ibG9ja1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtcHJlcGVuZFwiPlxyXG4gICAgICAgICAgPHNlbGVjdCBuYW1lPVwiXCIgaWQ9XCJcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgIHZhbHVlPVwib3JkZXJOdW1iZXJcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZE9yZGVyVHlwZSA9PSAnb3JkZXJOdW1iZXInXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIE9yZGVyICNcclxuICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICB2YWx1ZT1cInBvTnVtYmVyXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ3BvTnVtYmVyJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBQTyAjXHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJqb2JSZWZlcmVuY2VcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZE9yZGVyVHlwZSA9PSAnam9iUmVmZXJlbmNlJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBKb2IgUmVmXHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJwcm9kdWN0Q29kZVwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdwcm9kdWN0Q29kZSdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgU0tVIC8gSXRlbSAjXHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRleHQgaW5wdXQgd2l0aCBkcm9wZG93biBidXR0b25cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gc2VhcmNoLWJ0blwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNJbnB1dFZhbHVlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImdldFNlYXJjaFJlc3VsdHMoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2ljb24taW9uaWMtaW9zLXNlYXJjaC5zdmdcIlxyXG4gICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItYmxvY2tcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kYXRlLWlucHV0XCI+XHJcbiAgICAgICAgPGFwcC1kYXRlLXJhbmdlLXBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgtbW9iaWxlXCJcclxuICAgICAgICAgIFtzZWxlY3RlZERhdGVSYW5nZV09XCJzZWxlY3RlZERhdGVGaWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgICAoc2VsZWN0ZWREYXRlKT1cImdldFNlbGVjdGVkRGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgID48L2FwcC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgICAgICA8IS0tIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY19jYWxlbmRlci5zdmdcIiBhbHQ9XCJjYWxlbmRlclwiIGNsYXNzPVwiZGF0ZS1pY29uXCI+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGVza3RvcDsgZWxzZSBmaWx0ZXJNb2JpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgT3JkZXIgU3RhdGVcclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGN1c3RvbS1hcnJvdy1kb3duXCI+PC9pPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cIm9yZGVyU3RhdGVcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygb3JkZXJTdGF0ZXNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tPcmRlclN0YXR1cygkZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdvcmRlclN0YXRlJyxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBjdXN0b20tZHJvcGRvd24tYnRuIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGlkPVwiZGVsaXZlcnlUeXBlXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgRGVsaXZlcnkgVHlwZVxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZGVsaXZlcnlUeXBlXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRlbGl2ZXJ5VHlwZXNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJkZWxpdmVyeVR5cGVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkT3JkZXJTdGF0dXNlcyhkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICBjaGVja09yZGVyU3RhdHVzKCRldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2RlbGl2ZXJ5VHlwZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEudmFsdWVcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB7eyBkYXRhLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gY3VzdG9tLWRyb3Bkb3duLWJ0biBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBpZD1cIm9yZGVyU3RhdHVzXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgT3JkZXIgU3RhdHVzXHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBjdXN0b20tYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJvcmRlclN0YXR1c1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBvcmRlclN0YXR1c2VzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICBjaGVja09yZGVyU3RhdHVzKCRldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ29yZGVyU3RhdHVzZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLmtleSxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjaGlwcy1ibG9ja1wiICpuZ0lmPVwic2VsZWN0ZWRPcmRlclN0YXRlLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkT3JkZXJTdGF0ZSAmJiBzZWxlY3RlZE9yZGVyU3RhdGUubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBzXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsZWN0ZWRPcmRlclN0YXRlXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hpcC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmtleSA9PSBcIm9yZGVyU3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICA/IFwiT3JkZXIgU3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgOiBkYXRhLmtleSA9PSBcIm9yZGVyU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICA/IFwiT3JkZXIgU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICA6IGRhdGEua2V5ID09IFwib3JkZXJEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgPyBcIk9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgOiBkYXRhLmtleSA9PSBcImRlbGl2ZXJ5RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJEZWxpdmVyeVwiXHJcbiAgICAgICAgICAgICAgICAgIDogXCJEZWxpdmVyeSBUeXBlXCJcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXAtY29udGVudCBtbC0xXCI+e3sgZGF0YS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLXRpbWVzLWNpcmNsZSBtbC0zIGNsb3NlLWljb25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDaGlwcyhkYXRhKVwiXHJcbiAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsdGVyTW9iaWxlPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gZGltb25kLXNlY29uZGFyeS1idG4gZmlsdGVyLWJ0blwiXHJcbiAgICAgICAgICBkYXRhLXRvZ2dsZT1cIm1vZGFsXCJcclxuICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ZpbHRlck1vZGFsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBNb3JlIEZpbHRlcnNcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxociAvPlxyXG4gICAgPCEtLSBGaWx0ZXIgTW9kYWwtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJtb2RhbCBmYWRlIG1vZGFsLXJpZ2h0XCJcclxuICAgICAgaWQ9XCJmaWx0ZXJNb2RhbFwiXHJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxyXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJpbnZpdGVNZW1iZXJMYWJlbFwiXHJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPjwvaDU+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgICAgICAgICAgICAjY2xvc2VJbnZpdGVNb2RhbFxyXG4gICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1haW4tdmlld1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgPGgzPkZpbHRlcnM8L2gzPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXJBbGxcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDx1PkNsZWFyIGFsbDwvdT48L2FcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwibWFpblwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2NvcmRpb25cIiBpZD1cImZhcVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ZhcTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXExXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPk9yZGVyIFN0YXRlPC9hXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlIHNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZmFxaGVhZDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJlbnQ9XCIjZmFxXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBvcmRlclN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tPcmRlclN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnb3JkZXJTdGF0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9iaWxlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmsgY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ZhcTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPkRlbGl2ZXJ5IFR5cGU8L2FcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZmFxaGVhZDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJlbnQ9XCIjZmFxXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkZWxpdmVyeVR5cGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRPcmRlclN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrT3JkZXJTdGF0dXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ2RlbGl2ZXJ5VHlwZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9iaWxlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmsgY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ZhcTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPk9yZGVyIFN0YXR1czwvYVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImZhcTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJmYXFoZWFkM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXBhcmVudD1cIiNmYXFcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIG9yZGVyU3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja09yZGVyU3RhdHVzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdvcmRlclN0YXR1c2VzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLmtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEudmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2JpbGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWxnLWZsZXggZC1zbS1ibG9jayBqdXN0aWZ5LWNvbnRlbnQtZW5kIGQtYmxvY2sgZml4ZWQtYm90dG9tXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gbW9iaWxlLWNhbmNlbC1idG4gZGltb25kLXNlY29uZGFyeS1idG4gbXItbGctNVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gTk8gU0VBUkNIIFJFU1VMVFMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9TZWFyY2hSZXN1bHRzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJub1Jlc3VsdHMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICBub1NlYXJjaFJlc3VsdENvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgPyBub1NlYXJjaFJlc3VsdENvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgOiAnTm8gUmVzdWx0cyBGb3VuZCAhJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cIm9yZGVyLWhpc3RvcnktdGFibGVcIiAqbmdJZj1cIm9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1vcmRlclwiPnt7IHRvdGFsUmVzdWx0cyB9fSBvcmRlcnMgZm91bmQ8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHktM1wiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgY2xhc3M9XCJtci0zXCIgKGNoYW5nZSk9XCJzb3J0QnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgb3B0aW9uLmNvZGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcmRlclNvcnRMaXN0c1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBoaXN0b3J5LXRhYmxlLWRyb3Bkb3duIHBvc2l0aW9uLXJlbGF0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwib3JkZXJTdGF0dXNcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsIGNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGN1c3RvbS1hcnJvdy1kb3duXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJvcmRlclN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygb3B0aW9uYWxDb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmlld1wiICpuZ0lmPVwiaXNEZXNrdG9wXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogbGlzdHZpZXcgPT09IGZhbHNlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyaWRPckxpc3RWaWV3KCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJsaXN0dmlldyA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9HcmlkLWxpZ2h0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2xpZ2h0XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9HcmlkLWRhcmsuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cImdyaWR2aWV3ZGFya1wiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICBHcmlkXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGxpc3R2aWV3ID09PSB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBhY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVHcmlkT3JMaXN0VmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWltZ1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0xpc3QtbGlnaHQuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9MaXN0LWRhcmsuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIExpc3RcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gT1JERVIgSElTVE9SWSBMSVNUIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxpc3QtdmlldyB0YWJsZS1yZXNwb25zaXZlXCJcclxuICAgICAgKm5nSWY9XCJsaXN0dmlldyAmJiBpc0Rlc2t0b3AgJiYgb3JkZXJIaXN0b3J5TGlzdHMubGVuZ3RoID4gMFwiXHJcbiAgICA+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG9yZGVyLWxpc3QtdGFibGVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIE9yZGVyICNcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWljb24gZC1pbmxpbmUtYmxvY2sgbWwtMVwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgb3JkZXJUb29sdGlwQ29udGVudCB9fVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIFBvICNcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWljb24gZC1pbmxpbmUtYmxvY2sgbWwtMVwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgcG9Ub29sdGlwQ29udGVudCB9fVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIE9yZGVyIERhdGVcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWljb24gZC1pbmxpbmUtYmxvY2sgbWwtMVwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgb3JkZXJEYXRlVG9vbHRpcENvbnRlbnQgfX1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICBEZWxpdmVyeSBUeXBlXHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5mby1pY29uIGQtaW5saW5lLWJsb2NrIG1sLTFcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IGRlbGl2ZXJ5VHlwZVRvb2x0aXBDb250ZW50IH19XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgRGVsaXZlcnkgRGF0ZXNcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWljb24gZC1pbmxpbmUtYmxvY2sgbWwtMVwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgZGVsaXZlcnlEYXRlVG9vbHRpcENvbnRlbnQgfX1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICBEZWxpdmVyeSBBZGRyZXNzXHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5mby1pY29uIGQtaW5saW5lLWJsb2NrIG1sLTFcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IGRlbGl2ZXJ5QWRkcmVzc1Rvb2x0aXBDb250ZW50IH19XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgVG90YWwgUHJpY2U8c3BhbiBjbGFzcz1cImdzdC10ZXh0XCI+ZXhjbCBHU1Q8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5mby1pY29uIGQtaW5saW5lLWJsb2NrIG1sLTFcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7IHRvdGFsUHJpY2VUb29sdGlwQ29udGVudCB9fVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIFN0YXR1c1xyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8taWNvbiBkLWlubGluZS1ibG9jayBtbC0xXCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBzdGF0dXNUb29sdGlwQ29udGVudCB9fVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcmRlcnMgb2Ygb3JkZXJIaXN0b3J5TGlzdHNcIj5cclxuICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQsIG9yZGVycy5jb2RlKVwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMjBweFwiXHJcbiAgICAgICAgICAgICAgW2lkXT1cIidpZC0nICsgb3JkZXJzLmNvZGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9yZGVyTnVtYmVyQ2xpY2tlZChvcmRlcnMuY29kZSwgZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgID57eyBvcmRlcnM/LmNvZGUgfX08L2FcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD57eyBvcmRlcnM/LnB1cmNoYXNlT3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgb3JkZXJzPy5wbGFjZWQgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgb3JkZXJzPy5kZWxpdmVyeU1vZGU/Lm5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9yZGVycz8uaXNTYW1lRGF0ZTsgZWxzZSBub3RNYXRjaFwiPlxyXG4gICAgICAgICAgICAgICAge3sgb3JkZXJzPy5tYXhEZWxpdmVyeURhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdE1hdGNoPlxyXG4gICAgICAgICAgICAgICAge3sgb3JkZXJzPy5taW5EZWxpdmVyeURhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX0gLVxyXG4gICAgICAgICAgICAgICAge3sgb3JkZXJzPy5tYXhEZWxpdmVyeURhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX1cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJlbGxpcHNpc1wiPlxyXG4gICAgICAgICAgICAgIHt7IG9yZGVycz8uZGVsaXZlcnlBZGRyZXNzPy5mb3JtYXR0ZWRBZGRyZXNzIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInByaWNlLWJvbGRcIj57eyBvcmRlcnM/LnRvdGFsPy5mb3JtYXR0ZWRWYWx1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8YXBwLXNsaWRlci1wcm9ncmVzcyBbc2xpZGVyRGF0YV09XCJvcmRlcnNcIj48L2FwcC1zbGlkZXItcHJvZ3Jlc3M+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gT1JERVIgSElTVE9SWSBHUklEIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInJvdyBncmlkLXZpZXdcIlxyXG4gICAgICAqbmdJZj1cIighbGlzdHZpZXcgfHwgIWlzRGVza3RvcCkgJiYgb3JkZXJIaXN0b3J5TGlzdHMubGVuZ3RoID4gMFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC02IGNvbC1zbS0xMiBjb2wtMTJcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcmRlcnMgb2Ygb3JkZXJIaXN0b3J5TGlzdHNcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtdGlsZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtdG9wXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGg+T3JkZXIgIzo8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCBvcmRlcnMuY29kZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ2lkLScgKyBvcmRlcnMuY29kZVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJvcmRlck51bWJlckNsaWNrZWQob3JkZXJzLmNvZGUsIGZhbHNlKVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJzPy5jb2RlXHJcbiAgICAgICAgICAgICAgICAgIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aD5QTyAjOjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3sgb3JkZXJzPy5wdXJjaGFzZU9yZGVyTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1taWRkbGVcIj5cclxuICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aD5EZWxpdmVyeSBUeXBlOjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3sgb3JkZXJzPy5kZWxpdmVyeU1vZGU/Lm5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoPkRlbGl2ZXJ5IERhdGVzOjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcmRlcnM/LmlzU2FtZURhdGU7IGVsc2Ugbm90TWF0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcmRlcnM/Lm1heERlbGl2ZXJ5RGF0ZSB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RNYXRjaD5cclxuICAgICAgICAgICAgICAgICAgICB7eyBvcmRlcnM/Lm1pbkRlbGl2ZXJ5RGF0ZSB8IGRhdGUgOiBcImRkL01NL3l5eXlcIiB9fSAtXHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3JkZXJzPy5tYXhEZWxpdmVyeURhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX1cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNNb2JpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5mby1pY29uIGQtaW5saW5lLWJsb2NrIG1sLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJTdGF0dXMgSW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoPk9yZGVyIERhdGU6PC90aD5cclxuICAgICAgICAgICAgICAgIDx0ZD57eyBvcmRlcnM/LnBsYWNlZCB8IGN1c3RvbURhdGVQaXBlIDogXCJkZC9NTS95eVwiIH19PC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aD5BZGRyZXNzOjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3sgb3JkZXJzPy5kZWxpdmVyeUFkZHJlc3M/LmZvcm1hdHRlZEFkZHJlc3MgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoPlRvdGFsIFByaWNlOjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwcmljZS1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG9yZGVycz8udG90YWw/LmZvcm1hdHRlZFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XCJnc3QtdGV4dFwiPmV4Y2wgR1NUPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1ib3R0b21cIj5cclxuICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgU3RhdHVzOlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTW9iaWxlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5mby1pY29uIGQtaW5saW5lLWJsb2NrIG1sLTFcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlN0YXR1cyBJbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBiLTMgbWItM1wiIFtuZ0NsYXNzXT1cInsncHQtNCBtdC00JyA6IG9yZGVycz8ubWF4TGluZVN0YXR1c31cIiA+XHJcbiAgICAgICAgICAgICAgPGFwcC1zbGlkZXItcHJvZ3Jlc3MgW3NsaWRlckRhdGFdPVwib3JkZXJzXCI+PC9hcHAtc2xpZGVyLXByb2dyZXNzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXZcclxuICAgIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogZml4ZWRcIlxyXG4gICAgW3N0eWxlLmxlZnQucHhdPVwibWVudVRvcExlZnRQb3NpdGlvbi54XCJcclxuICAgIFtzdHlsZS50b3AucHhdPVwibWVudVRvcExlZnRQb3NpdGlvbi55XCJcclxuICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJyaWdodE1lbnVcIlxyXG4gID48L2Rpdj5cclxuXHJcbiAgPG1hdC1tZW51ICNyaWdodE1lbnU9XCJtYXRNZW51XCI+XHJcbiAgICA8ZGl2IG1hdE1lbnVDb250ZW50ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9yZGVyTnVtYmVyQ2xpY2tlZChpdGVtLCB0cnVlKVwiIG1hdC1tZW51LWl0ZW0+XHJcbiAgICAgICAgT3BlbiBPcmRlciBpbiBuZXcgdGFiXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtbWVudT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVySW1hZ2UgfCBhc3luY1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBteC1hdXRvIHRleHQtY2VudGVyIG1iLTRcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJwcm9kdWN0LWxvYWRlclwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwibG9hZGVyLWljb24gZmFzIGZhLXNwaW5uZXIgZmEtcHVsc2VcIj48L2k+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2FkZXItdGV4dFwiPmxvYWRpbmfigKYuPC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8IS0tIE5PIE9SREVSIEhJU1RPUlkgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFBdmFpbGFsZSA9PSAnbm9EYXRhJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBlbXB0eS1vcmRlcnBhZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTEwIGNvbC1sZy0xMCBtLWF1dG9cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiBbaW5uZXJIVE1MXT1cIm5vT3JkZXJIaXN0b3J5RGF0YVwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
|
|
653
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW9yZGVyLWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVpbGRpbmdwcm9kdWN0X2xpYnJhcnkvc3JjL2xpYi9jdXN0b20tb3JkZXItaGlzdG9yeS9jdXN0b20tb3JkZXItaGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL2N1c3RvbS1vcmRlci1oaXN0b3J5L2N1c3RvbS1vcmRlci1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU94RCxNQUFNLE9BQU8sMkJBQTJCO0lBd0R0QyxZQUNTLFVBQXNCLEVBQ3JCLG1CQUF3QyxFQUN6QyxFQUFxQjtRQUZyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3JCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDekMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUF0RDlCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGtCQUFhLEdBQVEsRUFBRSxDQUFD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ZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENtc1NlcnZpY2UgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IENvbW1vblV0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBPcmRlckhpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvb3JkZXItaGlzdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS1vcmRlci1oaXN0b3J5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLW9yZGVyLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1vcmRlci1oaXN0b3J5LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbU9yZGVySGlzdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwYWdlVGl0bGU6IGFueTtcclxuICBvcmRlckhpc3RvcnlIZWFkaW5nOiBhbnk7XHJcbiAgbm9PcmRlckhpc3RvcnlEYXRhOiBhbnk7XHJcbiAgbm9TZWFyY2hSZXN1bHRDb250ZW50OiBhbnk7XHJcbiAgbGlzdHZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vU2VhcmNoUmVzdWx0czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRhdGFBdmFpbGFsZT86IHN0cmluZztcclxuICBvcmRlckhpc3RvcnlMaXN0czogYW55ID0gW107XHJcbiAgb3JkZXJTb3J0TGlzdHM6IGFueSA9IFtdO1xyXG4gIG9yZGVyU3RhdHVzZXM6IGFueSA9IFtdO1xyXG4gIG9yZGVyU3RhdGVzOiBhbnkgPSBbXTtcclxuICBkZWxpdmVyeVR5cGVzOiBhbnkgPSBbXTtcclxuICBpc0Rlc2t0b3AgPSB0cnVlO1xyXG4gIGlzTW9iaWxlID0gZmFsc2U7XHJcbiAgaXNUYWJsZXQgPSBmYWxzZTtcclxuICBicmVhZGNydW1iRGF0YTogYW55ID0gW107XHJcbiAgc2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBvcHRpb25hbENvbHVtbnMgPSBbXHJcbiAgICB7IG5hbWU6ICdPcmRlcicsIHZhbHVlOiAnb3JkZXInIH0sXHJcbiAgICB7IG5hbWU6ICdQTycsIHZhbHVlOiAncG8nIH0sXHJcbiAgICB7IG5hbWU6ICdPcmRlciBEYXRlJywgdmFsdWU6ICdvcmRlckRhdGUnIH0sXHJcbiAgICB7IG5hbWU6ICdEZWxpdmVyeSBUeXBlJywgdmFsdWU6ICdkZWxpdmVyeVR5cGUnIH0sXHJcbiAgXTtcclxuICBzZWxlY3RlZE9yZGVyU3RhdGU6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkT3JkZXJUeXBlOiBhbnkgPSAnb3JkZXJOdW1iZXInO1xyXG4gIGxvZ1RleHQ6IGFueTtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuICBlbnZpcm9ubWVudDogYW55ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZW52Jyk7XHJcbiAgZW52IDogYW55ID0gSlNPTi5wYXJzZSh0aGlzLmVudmlyb25tZW50KTtcclxuICBzdG9yZUZyb250VXJsID0gdGhpcy5lbnYuVUlzaXRlVVJsO1xyXG4gIHNvcnRCeVZhbHVlOiBhbnk7XHJcbiAgbG9hZGVySW1hZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBjdXJyZW50UGFnZSA9IDA7XHJcbiAgdG90YWxSZXN1bHRzOiBhbnk7XHJcbiAgc2VsZWN0ZWREYXRlUmFuZ2U6IGFueTtcclxuICBzZWxlY3RlZERhdGVLZXk6IHN0cmluZyA9ICdvcmRlckRhdGUnO1xyXG4gIHNlbGVjdGVkRmlsdGVyczogYW55O1xyXG4gIGlzQ2xlYXJBbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0lucHV0VmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZE9wdGlvbjogYW55O1xyXG4gIG9yZGVyVG9vbHRpcENvbnRlbnQ6IGFueTtcclxuICBwb1Rvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgb3JkZXJEYXRlVG9vbHRpcENvbnRlbnQ6IGFueTtcclxuICBkZWxpdmVyeVR5cGVUb29sdGlwQ29udGVudDogYW55O1xyXG4gIGRlbGl2ZXJ5RGF0ZVRvb2x0aXBDb250ZW50OiBhbnk7XHJcbiAgZGVsaXZlcnlBZGRyZXNzVG9vbHRpcENvbnRlbnQ6IGFueTtcclxuICB0b3RhbFByaWNlVG9vbHRpcENvbnRlbnQ6IGFueTtcclxuICBzdGF0dXNUb29sdGlwQ29udGVudDogYW55O1xyXG4gIHNlbGVjdGVkT3JkZXJOdW1iZXI6IHN0cmluZyA9ICcnO1xyXG4gIHNlc3N0aW9uU3RvcmFnZUNhbGxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRGF0ZUZpbHRlclZhbHVlOiBhbnk7XHJcbiAgaXRlbXM6IGFueSA9IFtdO1xyXG4gIG1lbnVUb3BMZWZ0UG9zaXRpb24gPSB7IHg6IDAsIHk6IDAgfTtcclxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyLCB7IHN0YXRpYzogdHJ1ZSB9KSBtYXRNZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNtc1NlcnZpY2U6IENtc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZGVySGlzdG9yeVNlcnZpY2U6IE9yZGVySGlzdG9yeVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmJyZWFkY3J1bWJEYXRhLnB1c2goeyB1cmw6ICcvJywgbmFtZTogJ0hvbWUnIH0sIHsgdXJsOiAnL215LWFjY291bnQvb3JkZXJzJywgbmFtZTogJ015IE9yZGVycycgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2UuZ2V0Q3VycmVudFBhZ2UoKS5zdWJzY3JpYmUoKHBhZ2FkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5wYWdlVGl0bGUgPSBwYWdhZGF0YS50aXRsZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdFbXB0eU9yZGVyTGlzdENvbXBvbmVudCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm5vT3JkZXJIaXN0b3J5RGF0YSA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdPcmRlckhpc3RvcnlQYXJhZ3JhcGhDb21wb25lbnQnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlIZWFkaW5nID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ0VtcHR5U2VhcmNoT3JkZXJMaXN0Q29tcG9uZW50JylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMubm9TZWFyY2hSZXN1bHRDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3RvcnlfY29kZScpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm9yZGVyVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnb3JkZXJzX29yZGVySGlzdG9yeV9wdXJjaGFzZU9yZGVyTnVtYmVyJylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMucG9Ub29sdGlwQ29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdvcmRlcnNfb3JkZXJIaXN0b3J5X3BsYWNlZCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm9yZGVyRGF0ZVRvb2x0aXBDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3RvcnlfZGVsaXZlcnlNb2RlJylcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuZGVsaXZlcnlUeXBlVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnb3JkZXJzX29yZGVySGlzdG9yeV9kZWxpdmVyeURhdGUnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5kZWxpdmVyeURhdGVUb29sdGlwQ29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDb21wb25lbnREYXRhKCdvcmRlcnNfb3JkZXJIaXN0b3J5X2RlbGl2ZXJ5QWRkcmVzcycpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc1Rvb2x0aXBDb250ZW50ID0gZGF0YS5jb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNtc1NlcnZpY2VcclxuICAgICAgLmdldENvbXBvbmVudERhdGEoJ29yZGVyc19vcmRlckhpc3RvcnlfdG90YWwnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy50b3RhbFByaWNlVG9vbHRpcENvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuY21zU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcG9uZW50RGF0YSgnb3JkZXJzX29yZGVySGlzdG9yeV9zdGF0dXMnKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5zdGF0dXNUb29sdGlwQ29udGVudCA9IGRhdGEuY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9ICdvcmRlck51bWJlcic7XHJcbiAgICB0aGlzLmdldExhc3RNb250aERhdGVSYW5nZSgpO1xyXG4gICAgdGhpcy5nZXRTZWFyY2hEcm9wZG93bkRhdGEoKTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkT3JkZXJGaWx0ZXJzJyk7XHJcbiAgICBpZiAodGhpcy5pc051bGxPckVtcHR5KHNlbGVjdGVkRmlsdGVycz8udG9TdHJpbmcoKSkpIHtcclxuICAgICAgdGhpcy5nZXRPcmRlckxpc3QoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IG9yZGVyRGF0YTogYW55ID0gSlNPTi5wYXJzZShzZWxlY3RlZEZpbHRlcnMpO1xyXG4gICAgICBpZiAob3JkZXJEYXRhLnNlYXJjaFRleHQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gb3JkZXJEYXRhLnNlbGVjdGVkT3JkZXJUeXBlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IG9yZGVyRGF0YS5zZWFyY2hUZXh0O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBvcmRlckRhdGEuY3VycmVudFBhZ2U7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcmRlckRhdGEuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZSAmJiB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZSA9IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5rZXkgPT0gJ29yZGVyRGF0ZScpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZERhdGUpIHtcclxuICAgICAgICAgIHNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkRGF0ZT8udmFsdWU/LnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSBzZWxlY3RlZERhdGVbMF0uc3BsaXQoJy8nKVsxXSArICcvJyArIHNlbGVjdGVkRGF0ZVswXS5zcGxpdCgnLycpWzBdICsgJy8nICsgc2VsZWN0ZWREYXRlWzBdLnNwbGl0KCcvJylbMl07XHJcbiAgICAgICAgICBjb25zdCBlbmREYXRlID0gc2VsZWN0ZWREYXRlWzFdLnNwbGl0KCcvJylbMV0gKyAnLycgKyBzZWxlY3RlZERhdGVbMV0uc3BsaXQoJy8nKVswXSArICcvJyArIHNlbGVjdGVkRGF0ZVsxXS5zcGxpdCgnLycpWzJdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGaWx0ZXJWYWx1ZSA9IHsgc3RhcnREYXRlOiBtb21lbnQobmV3IERhdGUoc3RhcnREYXRlKSksIGVuZERhdGU6IG1vbWVudChuZXcgRGF0ZShlbmREYXRlKSkgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyTnVtYmVyID0gb3JkZXJEYXRhLm9yZGVyTnVtYmVyO1xyXG4gICAgICB0aGlzLnNlc3N0aW9uU3RvcmFnZUNhbGxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vblBhZ2VSZWZyZXNoKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSA9PSBmYWxzZSkge1xyXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0U3RhdHVzVXBkYXRlKCk7XHJcbiAgICAgICAgLy8gfSwgMzAwMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBpc051bGxPckVtcHR5KHZhbHVlVG9DaGVjazogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gKHZhbHVlVG9DaGVjayA9PSBudWxsIHx8IHZhbHVlVG9DaGVjayA9PSAnJykgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRMYXN0TW9udGhEYXRlUmFuZ2UoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gW21vbWVudCgpLnN1YnRyYWN0KDI5LCAnZGF5cycpLCBtb21lbnQoKV07XHJcbiAgICBjb25zdCBkYXRlVmFsdWUgPVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldERhdGUoKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlWzBdLl9kLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICcvJyArXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMF0uX2QuZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICcsJyArXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0RGF0ZSgpICtcclxuICAgICAgJy8nICtcclxuICAgICAgKHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VbMV0uX2QuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgJy8nICtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVsxXS5fZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAga2V5OiB0aGlzLnNlbGVjdGVkRGF0ZUtleSxcclxuICAgICAgdmFsdWU6IGRhdGVWYWx1ZSxcclxuICAgICAgbmFtZTogZGF0ZVZhbHVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLnB1c2gob2JqKTtcclxuICB9XHJcblxyXG4gIGdldFN0YXR1c1VwZGF0ZSgpIHtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAwO1xyXG4gICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0NSRUFURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5zdGF0dXNWYWx1ZSA9IDE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0FQUFJPVkVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAyO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdQUk9DRVNTSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdSRUFEWScpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnREVMSVZFUklORycpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSA2O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVySW1hZ2UubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQubWluVmFsdWUgPSAwO1xyXG4gICAgICBpZiAoZWxlbWVudC5taW5MaW5lU3RhdHVzID09ICdDUkVBVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSAxO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnQVBQUk9WRUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5taW5WYWx1ZSA9IDI7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5taW5MaW5lU3RhdHVzID09ICdQUk9DRVNTSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnUkVBRFknKSB7XHJcbiAgICAgICAgZWxlbWVudC5taW5WYWx1ZSA9IDQ7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5taW5MaW5lU3RhdHVzID09ICdERUxJVkVSSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSA1O1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubWluTGluZVN0YXR1cyA9PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQubWluVmFsdWUgPSA2O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGVySW1hZ2UubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50Lm1heExpbmVTdGF0dXMgPT0gJ0NSRUFURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdBUFBST1ZFRCcpIHtcclxuICAgICAgICBlbGVtZW50Lm1heFZhbHVlID0gMjtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm1heExpbmVTdGF0dXMgPT0gJ1BST0NFU1NJTkcnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDM7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdSRUFEWScpIHtcclxuICAgICAgICBlbGVtZW50Lm1heFZhbHVlID0gNDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lm1heExpbmVTdGF0dXMgPT0gJ0RFTElWRVJJTkcnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5tYXhMaW5lU3RhdHVzID09ICdDT01QTEVURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5tYXhWYWx1ZSA9IDY7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2FkZXJJbWFnZS5uZXh0KGZhbHNlKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JkZXJMaXN0KCkge1xyXG4gICAgY29uc3QgcmVxT2JqOiBhbnkgPSB7XHJcbiAgICAgIHNlYXJjaFBhcmFtczogdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vcmRlckhpc3RvcnlTZXJ2aWNlLmdldE9yZGVySGlzdG9yeUxpc3QocmVxT2JqLCB0aGlzLmN1cnJlbnRQYWdlKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aCA9PSAwID8gZGF0YS5vcmRlcnMgOiAgWy4uLnRoaXMub3JkZXJIaXN0b3J5TGlzdHMsIGRhdGE/Lm9yZGVyc107XHJcbiAgICAgICAgICBpZiAodGhpcy5pc0NsZWFyQWxsID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2xlYXJBbGwgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgIGRhdGUuZ2V0TW9udGgoKTtcclxuICAgICAgICAgIGRhdGUuZ2V0RGF5KCk7XHJcbiAgICAgICAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gdGhpcy5vcmRlckhpc3RvcnlMaXN0cy5jb25jYXQoZGF0YS5vcmRlcnMpO1xyXG4gICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQubWluRGVsaXZlcnlEYXRlICYmIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5taW5EZWxpdmVyeURhdGUgPSBuZXcgRGF0ZShlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZSk7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5tYXhEZWxpdmVyeURhdGUgPSBuZXcgRGF0ZShlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZSk7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5pc1NhbWVEYXRlID1cclxuICAgICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlLmdldEZ1bGxZZWFyKCkgPT1cclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5taW5EZWxpdmVyeURhdGUuZ2V0RnVsbFllYXIoKSAmJlxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZS5nZXRNb250aCgpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldE1vbnRoKCkgJiZcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5tYXhEZWxpdmVyeURhdGUuZ2V0RGF5KCkgPT1cclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5taW5EZWxpdmVyeURhdGUuZ2V0RGF5KClcclxuICAgICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5vcmRlclNvcnRMaXN0cyA9IGRhdGE/LnNvcnRzO1xyXG4gICAgICAgICAgdGhpcy50b3RhbFJlc3VsdHMgPSBkYXRhPy5wYWdpbmF0aW9uPy50b3RhbFJlc3VsdHM7XHJcbiAgICAgICAgICB0aGlzLmdldFN0YXR1c1VwZGF0ZSgpO1xyXG4gICAgICAgICAgdGhpcy5vcmRlclNvcnRMaXN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEYXRlRGVzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ05ld2VzdCBPcmRlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEYXRlQXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnT2xkZXN0IE9yZGVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPRGVzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ0hpZ2hlc3QgUE8gbnVtYmVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieVBPQXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTG93ZXN0IFBPIG51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlEZWxpdmVyeURlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdOZXdlc3QgRGVsaXZlcnknO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGVsaXZlcnlBc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdPbGRlc3QgRGVsaXZlcnknO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICh0aGlzLm9yZGVySGlzdG9yeUxpc3RzICYmIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFBdmFpbGFsZSA9ICdoYXNEYXRhJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YUF2YWlsYWxlID0gJ25vRGF0YSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gJ29yZGVyTnVtYmVyJztcclxuICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlID0gW107XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gW107XHJcbiAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICB0aGlzLmlzQ2xlYXJBbGwgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0lucHV0VmFsdWUgPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuZ2V0TGFzdE1vbnRoRGF0ZVJhbmdlKCk7XHJcbiAgICAvLyB0aGlzLmdldE9yZGVyTGlzdCgpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc2VsZWN0ZWRPcmRlckZpbHRlcnMnKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaERyb3Bkb3duRGF0YSgpIHtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZVxyXG4gICAgICAuZ2V0T3JkZXJIaXN0b3J5U2VhcmNoU3RhdHVzZXMoKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5vcmRlclN0YXR1c2VzID0gZGF0YS5zdGF0dXNlcztcclxuICAgICAgICAgIHRoaXMub3JkZXJTdGF0dXNlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5uYW1lID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kZWxpdmVyeVR5cGVzID0gZGF0YS50eXBlcztcclxuICAgICAgICAgIHRoaXMub3JkZXJTdGF0ZXMgPSBkYXRhLnN0YXRlcztcclxuICAgICAgICAgIHRoaXMuZGVsaXZlcnlUeXBlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5uYW1lID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5vcmRlclN0YXRlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5uYW1lID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVHcmlkT3JMaXN0VmlldyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5saXN0dmlldyA9ICF0aGlzLmxpc3R2aWV3O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBpbmQgPSB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubmFtZSA9PSBkYXRhLnZhbHVlXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGluZCA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IFtdO1xyXG4gICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja09yZGVyU3RhdHVzKGV2ZW50OiBhbnksIGRhdGE6IGFueSwgbW9iaWxlRGF0YT86IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDA7XHJcbiAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLnB1c2goZGF0YSk7XHJcbiAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgICAgaWYgKCFtb2JpbGVEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZCA9IHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLmZpbmRJbmRleChcclxuICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LnZhbHVlID09IGRhdGEudmFsdWVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuc3BsaWNlKGluZCwgMSk7XHJcbiAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgICAgaWYgKCFtb2JpbGVEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaXBzKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LnZhbHVlID09IGRhdGEudmFsdWVcclxuICAgICk7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5zcGxpY2UoaW5kLCAxKTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgIGlmKHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlPy5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJUeXBlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZ2V0U2VhcmNoUmVzdWx0cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWREYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyczogYW55ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnc2VsZWN0ZWRPcmRlckZpbHRlcnMnKTtcclxuICAgIGlmICh0aGlzLmlzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGaWx0ZXJzPy50b1N0cmluZygpKSkge1xyXG4gICAgICBldmVudC5uYW1lID0gZXZlbnQudmFsdWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSBldmVudDtcclxuICAgICAgY29uc3QgaW5kID0gdGhpcy5zZWxlY3RlZE9yZGVyU3RhdGUuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBlbGVtZW50LmtleSA9PSAnb3JkZXJEYXRlJyB8fCBlbGVtZW50LmtleSA9PSAnZGVsaXZlcnlEYXRlJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kID4gLTEpIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlLnNwbGljZShpbmQsIDEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5wdXNoKGV2ZW50KTtcclxuICAgICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzVmFsdWUoKSB7XHJcbiAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0NSRUFURUQnKSB7XHJcbiAgICAgICAgZWxlbWVudC5zdGF0dXNWYWx1ZSA9IDE7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5zdGF0dXMgPT0gJ0FQUFJPVkVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAyO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdQUk9DRVNTSU5HJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzID09ICdSRUFEWScpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNDtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnREVMSVZFUklORycpIHtcclxuICAgICAgICBlbGVtZW50LnN0YXR1c1ZhbHVlID0gNTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnN0YXR1cyA9PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgIGVsZW1lbnQuc3RhdHVzVmFsdWUgPSA2O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNvcnRCeShlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuc29ydEJ5VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIGNvbnN0IHJlcU9iajogYW55ID0ge1xyXG4gICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLFxyXG4gICAgfTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZVxyXG4gICAgICAuc29ydE9yZGVySGlzdG9yeSh0aGlzLnNvcnRCeVZhbHVlLCByZXFPYmopXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gcmVzPy5vcmRlcnM7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG4gICAgICAgICAgdGhpcy5nZXRTdGF0dXNWYWx1ZSgpO1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hSZXN1bHRzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlKSk7XHJcbiAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgIGtleTogdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSxcclxuICAgICAgdmFsdWU6IHRoaXMuc2VhcmNoVGV4dCxcclxuICAgIH07XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCAhPSAnJyAmJlxyXG4gICAgICAodGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9PSAnb3JkZXJOdW1iZXInIHx8XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9yZGVyVHlwZSA9PSAncG9OdW1iZXInKVxyXG4gICAgKSB7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRPcmRlclN0YXRlID0gW107XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnB1c2gob2JqKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLnB1c2gob2JqKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlcU9iajogYW55ID0ge1xyXG4gICAgICBzZWFyY2hQYXJhbXM6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dCh0cnVlKTtcclxuICAgIHRoaXMub3JkZXJIaXN0b3J5U2VydmljZS5nZXRPcmRlckhpc3RvcnlTZWFyY2hSZXN1bHRzKHJlcU9iaiwgdGhpcy5jdXJyZW50UGFnZSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ub3JkZXJzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5vcmRlckhpc3RvcnlMaXN0cyA9IHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuY29uY2F0KHJlcz8ub3JkZXJzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMgPSByZXM/Lm9yZGVycztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZSAmJiBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZSkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlID0gbmV3IERhdGUoZWxlbWVudC5taW5EZWxpdmVyeURhdGUpO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlID0gbmV3IERhdGUoZWxlbWVudC5tYXhEZWxpdmVyeURhdGUpO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuaXNTYW1lRGF0ZSA9XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Lm1heERlbGl2ZXJ5RGF0ZS5nZXRGdWxsWWVhcigpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldEZ1bGxZZWFyKCkgJiZcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudC5tYXhEZWxpdmVyeURhdGUuZ2V0TW9udGgoKSA9PVxyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1pbkRlbGl2ZXJ5RGF0ZS5nZXRNb250aCgpICYmXHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWF4RGVsaXZlcnlEYXRlLmdldERheSgpID09XHJcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluRGVsaXZlcnlEYXRlLmdldERheSgpXHJcbiAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICh0aGlzLm9yZGVySGlzdG9yeUxpc3RzICYmIHRoaXMub3JkZXJIaXN0b3J5TGlzdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFBdmFpbGFsZSA9ICdoYXNEYXRhJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YUF2YWlsYWxlID0gJ25vRGF0YSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVzdWx0cyA9IHJlcz8ucGFnaW5hdGlvbj8udG90YWxSZXN1bHRzO1xyXG5cclxuICAgICAgICAgIHRoaXMub3JkZXJTb3J0TGlzdHMgPSByZXM/LnNvcnRzO1xyXG4gICAgICAgICAgdGhpcy5ub1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub3JkZXJTb3J0TGlzdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGF0ZURlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdOZXdlc3QgT3JkZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGF0ZUFzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ09sZGVzdCBPcmRlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0Rlc2MnKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9ICdIaWdoZXN0IFBPIG51bWJlcic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PSAnYnlQT0FzYycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gJ0xvd2VzdCBQTyBudW1iZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT0gJ2J5RGVsaXZlcnlEZXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnTmV3ZXN0IERlbGl2ZXJ5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jb2RlID09ICdieURlbGl2ZXJ5QXNjJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSAnT2xkZXN0IERlbGl2ZXJ5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmdldFN0YXR1c1ZhbHVlKCk7XHJcbiAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3JkZXJOdW1iZXIgIT0gJycgJiYgdGhpcy5zZXNzdGlvblN0b3JhZ2VDYWxsZWQpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXNzdGlvblN0b3JhZ2VDYWxsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWQtJyArIHRoaXMuc2VsZWN0ZWRPcmRlck51bWJlcik7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgdG9wOiAxNTAgfSk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLm9yZGVySGlzdG9yeUxpc3RzID0gW107XHJcbiAgICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UoZTogYW55KSB7XHJcbiAgICBpZiAoZS50YXJnZXQudmFsdWUgPT0gJycgfHwgZS50YXJnZXQudmFsdWUuaW5kZXhPZignICcpID49IDApIHtcclxuICAgICAgdGhpcy5pc0lucHV0VmFsdWUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlYXJjaCgpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAwO1xyXG4gICAgdGhpcy5nZXRTZWFyY2hSZXN1bHRzKCk7XHJcbiAgfVxyXG5cclxuICBsb2FkTW9yZVJlY29yZCgpIHtcclxuICAgIHRoaXMubG9hZGVySW1hZ2UubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgKz0gMTtcclxuICB9XHJcbiAgb3JkZXJOdW1iZXJDbGlja2VkKG9yZGVyTnVtYmVyOiBhbnksIG5ld1dpbmRvd0ZsYWc6IGJvb2xlYW4pIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbGVjdGVkT3JkZXJGaWx0ZXJzJyk7XHJcbiAgICBjb25zdCBvYmo6IGFueSA9IHtcclxuICAgICAgc2VsZWN0ZWRGaWx0ZXJzOiB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZS5sZW5ndGggPT0gMCAmJiB0aGlzLnNlbGVjdGVkRmlsdGVycy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZEZpbHRlcnMgOiB0aGlzLnNlbGVjdGVkT3JkZXJTdGF0ZSxcclxuICAgICAgY3VycmVudFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsXHJcbiAgICAgIG9yZGVyTnVtYmVyOiBvcmRlck51bWJlcixcclxuICAgICAgc2VsZWN0ZWRPcmRlclR5cGU6IHRoaXMuc2VsZWN0ZWRPcmRlclR5cGVcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaFRleHQgIT0gJycpIHtcclxuICAgICAgb2JqLnNlYXJjaFRleHQgPSB0aGlzLnNlYXJjaFRleHQ7XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdzZWxlY3RlZE9yZGVyRmlsdGVycycsIEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgaWYgKG5ld1dpbmRvd0ZsYWcpIHtcclxuICAgICAgd2luZG93Lm9wZW4odGhpcy5zdG9yZUZyb250VXJsICsgJy9teS1hY2NvdW50L29yZGVyLycgKyBvcmRlck51bWJlciwgJ19ibGFuaycpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLnN0b3JlRnJvbnRVcmwgKyAnL215LWFjY291bnQvb3JkZXIvJyArIG9yZGVyTnVtYmVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SaWdodENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgIC8vIHByZXZlbnREZWZhdWx0IGF2b2lkcyB0byBzaG93IHRoZSB2aXN1YWxpemF0aW9uIG9mIHRoZSByaWdodC1jbGljayBtZW51IG9mIHRoZSBicm93c2VyXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIC8vIHdlIHJlY29yZCB0aGUgbW91c2UgcG9zaXRpb24gaW4gb3VyIG9iamVjdFxyXG4gICAgdGhpcy5tZW51VG9wTGVmdFBvc2l0aW9uLnggPSBldmVudC5jbGllbnRYO1xyXG4gICAgdGhpcy5tZW51VG9wTGVmdFBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5pdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgLy8gd2Ugb3BlbiB0aGUgbWVudVxyXG4gICAgLy8gd2UgcGFzcyB0byB0aGUgbWVudSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgb3VyIG9iamVjdFxyXG4gICAgdGhpcy5tYXRNZW51VHJpZ2dlci5tZW51RGF0YSA9IHsgaXRlbTogaXRlbSB9XHJcbiAgICB0aGlzLm1hdE1lbnVUcmlnZ2VyLmNsb3NlTWVudSgpO1xyXG4gICAgLy8gd2Ugb3BlbiB0aGUgbWVudVxyXG4gICAgdGhpcy5tYXRNZW51VHJpZ2dlci5vcGVuTWVudSgpO1xyXG5cclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5ub1NlYXJjaFJlc3VsdHMgJiZcclxuICAgICAgdGhpcy50b3RhbFJlc3VsdHMgPiB0aGlzLm9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9hZE1vcmVSZWNvcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoIDwgOTkyKSB7XHJcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzRGVza3RvcCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0Rlc2t0b3AgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlUmVmcmVzaCgpIHtcclxuICAgIHRoaXMuaXNNb2JpbGUgPSBDb21tb25VdGlscy5pc01vYmlsZSgpO1xyXG4gICAgdGhpcy5pc1RhYmxldCA9IENvbW1vblV0aWxzLmlzVGFibGV0KCk7XHJcbiAgICB0aGlzLmlzRGVza3RvcCA9IENvbW1vblV0aWxzLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbGVjdGVkT3JkZXJGaWx0ZXJzJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtY3VzdG9tLWJyZWFkY3J1bSBbY3VzdG9tQ3J1bWJEYXRhXT1cImJyZWFkY3J1bWJEYXRhXCI+PC9hcHAtY3VzdG9tLWJyZWFkY3J1bT5cclxuPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cInNob3dXYWl0Q3Vyc29yIHwgYXN5bmNcIj5Mb2FkaW5nJiM4MjMwOzwvZGl2PlxyXG5cclxuPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICBpbmZpbml0ZVNjcm9sbFxyXG4gIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjBcIlxyXG4gIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjEwMDBcIlxyXG4gIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCJcclxuICAod2luZG93OnJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhQXZhaWxhbGUgPT0gJ2hhc0RhdGEnXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgbmdJZj1cIm9yZGVySGlzdG9yeUhlYWRpbmdcIj5cclxuICAgICAgPGgxIGNsYXNzPVwicGFnZVRpdGxlIG15LTQgcHktMlwiPnt7IHBhZ2VUaXRsZSB9fTwvaDE+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRleHQtbGVmdCBwYWdlUGFyYVRleHQgbWItNVwiXHJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcmRlckhpc3RvcnlIZWFkaW5nXCJcclxuICAgICAgPjwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJjbGVhckFsbCgpXCI+PHU+Q2xlYXIgYWxsPC91PjwvYT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJvcmRlci1zZWFyY2gtYmxvY2tcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXByZXBlbmRcIj5cclxuICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yZGVyTnVtYmVyXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ29yZGVyTnVtYmVyJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBPcmRlciAjXHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJwb051bWJlclwiXHJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkT3JkZXJUeXBlID09ICdwb051bWJlcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgUE8gI1xyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgIHZhbHVlPVwiam9iUmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRPcmRlclR5cGUgPT0gJ2pvYlJlZmVyZW5jZSdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgSm9iIFJlZlxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgIHZhbHVlPVwicHJvZHVjdENvZGVcIlxyXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZE9yZGVyVHlwZSA9PSAncHJvZHVjdENvZGUnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIFNLVSAvIEl0ZW0gI1xyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUZXh0IGlucHV0IHdpdGggZHJvcGRvd24gYnV0dG9uXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIHNlYXJjaC1idG5cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzSW5wdXRWYWx1ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2ljb24taW9uaWMtaW9zLXNlYXJjaC5zdmdcIlxyXG4gICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItYmxvY2tcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1kYXRlLWlucHV0XCI+XHJcbiAgICAgICAgPGFwcC1kYXRlLXJhbmdlLXBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgtbW9iaWxlXCJcclxuICAgICAgICAgIFtzZWxlY3RlZERhdGVSYW5nZV09XCJzZWxlY3RlZERhdGVGaWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgICAoc2VsZWN0ZWREYXRlKT1cImdldFNlbGVjdGVkRGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgID48L2FwcC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgICAgICA8IS0tIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY19jYWxlbmRlci5zdmdcIiBhbHQ9XCJjYWxlbmRlclwiIGNsYXNzPVwiZGF0ZS1pY29uXCI+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGVza3RvcDsgZWxzZSBmaWx0ZXJNb2JpbGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGN1c3RvbS1kcm9wZG93bi1idG4gcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgT3JkZXIgU3RhdGVcclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGN1c3RvbS1hcnJvdy1kb3duXCI+PC9pPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cIm9yZGVyU3RhdGVcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygb3JkZXJTdGF0ZXNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgY2hlY2tPcmRlclN0YXR1cygkZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBrZXk6ICdvcmRlclN0YXRlJyxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBjdXN0b20tZHJvcGRvd24tYnRuIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGlkPVwiZGVsaXZlcnlUeXBlXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgRGVsaXZlcnkgVHlwZVxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gY3VzdG9tLWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZGVsaXZlcnlUeXBlXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImRyb3Bkb3duSXRlbVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRlbGl2ZXJ5VHlwZXNcIj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJkZWxpdmVyeVR5cGVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRDaGVja2VkT3JkZXJTdGF0dXNlcyhkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICBjaGVja09yZGVyU3RhdHVzKCRldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ2RlbGl2ZXJ5VHlwZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGEua2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEudmFsdWVcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB7eyBkYXRhLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gY3VzdG9tLWRyb3Bkb3duLWJ0biBwb3NpdGlvbi1yZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBpZD1cIm9yZGVyU3RhdHVzXCJcclxuICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXHJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgT3JkZXIgU3RhdHVzXHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBjdXN0b20tYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJvcmRlclN0YXR1c1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBvcmRlclN0YXR1c2VzXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICBjaGVja09yZGVyU3RhdHVzKCRldmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGtleTogJ29yZGVyU3RhdHVzZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLmtleSxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjaGlwcy1ibG9ja1wiICpuZ0lmPVwic2VsZWN0ZWRPcmRlclN0YXRlLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkT3JkZXJTdGF0ZSAmJiBzZWxlY3RlZE9yZGVyU3RhdGUubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBzXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsZWN0ZWRPcmRlclN0YXRlXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hpcC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmtleSA9PSBcIm9yZGVyU3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICA/IFwiT3JkZXIgU3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgOiBkYXRhLmtleSA9PSBcIm9yZGVyU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICA/IFwiT3JkZXIgU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICA6IGRhdGEua2V5ID09IFwib3JkZXJEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgPyBcIk9yZGVyXCJcclxuICAgICAgICAgICAgICAgICAgOiBkYXRhLmtleSA9PSBcImRlbGl2ZXJ5RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgID8gXCJEZWxpdmVyeVwiXHJcbiAgICAgICAgICAgICAgICAgIDogXCJEZWxpdmVyeSBUeXBlXCJcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXAtY29udGVudCBtbC0xXCI+e3sgZGF0YS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLXRpbWVzLWNpcmNsZSBtbC0zIGNsb3NlLWljb25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDaGlwcyhkYXRhKVwiXHJcbiAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsdGVyTW9iaWxlPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gZGltb25kLXNlY29uZGFyeS1idG4gZmlsdGVyLWJ0blwiXHJcbiAgICAgICAgICBkYXRhLXRvZ2dsZT1cIm1vZGFsXCJcclxuICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ZpbHRlck1vZGFsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBNb3JlIEZpbHRlcnNcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxociAvPlxyXG4gICAgPCEtLSBGaWx0ZXIgTW9kYWwtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJtb2RhbCBmYWRlIG1vZGFsLXJpZ2h0XCJcclxuICAgICAgaWQ9XCJmaWx0ZXJNb2RhbFwiXHJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxyXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJpbnZpdGVNZW1iZXJMYWJlbFwiXHJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPjwvaDU+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgICAgICAgICAgICAjY2xvc2VJbnZpdGVNb2RhbFxyXG4gICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1haW4tdmlld1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgPGgzPkZpbHRlcnM8L2gzPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXJBbGxcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDx1PkNsZWFyIGFsbDwvdT48L2FcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwibWFpblwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2NvcmRpb25cIiBpZD1cImZhcVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiIGlkPVwiZmFxaGVhZDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWhlYWRlci1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ZhcTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXExXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPk9yZGVyIFN0YXRlPC9hXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZmFxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbGxhcHNlIHNob3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZmFxaGVhZDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJlbnQ9XCIjZmFxXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBvcmRlclN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZHJvcGRvd24tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJvcmRlclN0YXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tPcmRlclN0YXR1cyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnb3JkZXJTdGF0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9iaWxlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmsgY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ZhcTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPkRlbGl2ZXJ5IFR5cGU8L2FcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmYXEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZmFxaGVhZDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1wYXJlbnQ9XCIjZmFxXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25JdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkZWxpdmVyeVR5cGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRlbGl2ZXJ5VHlwZUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldENoZWNrZWRPcmRlclN0YXR1c2VzKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrT3JkZXJTdGF0dXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogJ2RlbGl2ZXJ5VHlwZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0YS5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9iaWxlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgaWQ9XCJmYXFoZWFkM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taGVhZGVyLWxpbmsgY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2ZhcTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPk9yZGVyIFN0YXR1czwvYVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImZhcTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJmYXFoZWFkM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXBhcmVudD1cIiNmYXFcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bkl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIG9yZGVyU3RhdHVzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0Q2hlY2tlZE9yZGVyU3RhdHVzZXMoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRyb3Bkb3duLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwib3JkZXJTdGF0dXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja09yZGVyU3RhdHVzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdvcmRlclN0YXR1c2VzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhLmtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEudmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2JpbGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWxnLWZsZXggZC1zbS1ibG9jayBqdXN0aWZ5LWNvbnRlbnQtZW5kIGQtYmxvY2sgZml4ZWQtYm90dG9tXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gbW9iaWxlLWNhbmNlbC1idG4gZGltb25kLXNlY29uZGFyeS1idG4gbXItbGctNVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gbW9iaWxlLXNhdmUtYnRuIGRpbW9uZC1wcmltYXJ5LWJ0biBmbG9hdC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gTk8gU0VBUkNIIFJFU1VMVFMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9TZWFyY2hSZXN1bHRzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJub1Jlc3VsdHMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICBub1NlYXJjaFJlc3VsdENvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgPyBub1NlYXJjaFJlc3VsdENvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgOiAnTm8gUmVzdWx0cyBGb3VuZCAhJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cIm9yZGVyLWhpc3RvcnktdGFibGVcIiAqbmdJZj1cIm9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0b3RhbC1vcmRlclwiPnt7IHRvdGFsUmVzdWx0cyB9fSBvcmRlcnMgZm91bmQ8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHktM1wiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cIlwiIGlkPVwiXCIgY2xhc3M9XCJtci0zXCIgKGNoYW5nZSk9XCJzb3J0QnkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgb3B0aW9uLmNvZGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcmRlclNvcnRMaXN0c1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBoaXN0b3J5LXRhYmxlLWRyb3Bkb3duIHBvc2l0aW9uLXJlbGF0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwib3JkZXJTdGF0dXNcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsIGNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGN1c3RvbS1hcnJvdy1kb3duXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJvcmRlclN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZHJvcGRvd25JdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygb3B0aW9uYWxDb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkcm9wZG93bi1ncm91cFwiIGNsYXNzPVwicm91bmRlZC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEudmFsdWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tdmlld1wiICpuZ0lmPVwiaXNEZXNrdG9wXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogbGlzdHZpZXcgPT09IGZhbHNlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyaWRPckxpc3RWaWV3KCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJsaXN0dmlldyA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9HcmlkLWxpZ2h0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJncmlkdmlld2xpZ2h0XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9HcmlkLWRhcmsuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cImdyaWR2aWV3ZGFya1wiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICBHcmlkXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGxpc3R2aWV3ID09PSB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBhY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVHcmlkT3JMaXN0VmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWltZ1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL0xpc3QtbGlnaHQuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibGlzdHZpZXcgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9MaXN0LWRhcmsuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cImxpc3R2aWV3XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIExpc3RcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gT1JERVIgSElTVE9SWSBMSVNUIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxpc3QtdmlldyB0YWJsZS1yZXNwb25zaXZlXCJcclxuICAgICAgKm5nSWY9XCJsaXN0dmlldyAmJiBpc0Rlc2t0b3AgJiYgb3JkZXJIaXN0b3J5TGlzdHMubGVuZ3RoID4gMFwiXHJcbiAgICA+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG9yZGVyLWxpc3QtdGFibGVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIE9yZGVyICNcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTFcIiBuZ2JUb29sdGlwPVwie3sgb3JkZXJUb29sdGlwQ29udGVudCB9fVwiIHBsYWNlbWVudD1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2ljb24tbWV0cm8taW5mby5zdmdcIiBhbHQ9XCJpbmZvLWljb25cIj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIFBvICNcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTFcIiBuZ2JUb29sdGlwPVwie3sgcG9Ub29sdGlwQ29udGVudCB9fVwiIHBsYWNlbWVudD1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2ljb24tbWV0cm8taW5mby5zdmdcIiBhbHQ9XCJpbmZvLWljb25cIj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxyXG4gICAgICAgICAgICAgIE9yZGVyIERhdGVcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTFcIiBuZ2JUb29sdGlwPVwie3sgb3JkZXJEYXRlVG9vbHRpcENvbnRlbnQgfX1cIiBwbGFjZW1lbnQ9XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLW1ldHJvLWluZm8uc3ZnXCIgYWx0PVwiaW5mby1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICBEZWxpdmVyeSBUeXBlXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWlubGluZS1ibG9jayBtbC0xXCIgbmdiVG9vbHRpcD1cInt7IGRlbGl2ZXJ5VHlwZVRvb2x0aXBDb250ZW50IH19XCIgcGxhY2VtZW50PVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNvbi1tZXRyby1pbmZvLnN2Z1wiIGFsdD1cImluZm8taWNvblwiPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgRGVsaXZlcnkgRGF0ZXNcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTFcIiBuZ2JUb29sdGlwPVwie3sgZGVsaXZlcnlEYXRlVG9vbHRpcENvbnRlbnQgfX1cIiBwbGFjZW1lbnQ9XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLW1ldHJvLWluZm8uc3ZnXCIgYWx0PVwiaW5mby1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICBEZWxpdmVyeSBBZGRyZXNzXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWlubGluZS1ibG9jayBtbC0xXCIgbmdiVG9vbHRpcD1cInt7IGRlbGl2ZXJ5QWRkcmVzc1Rvb2x0aXBDb250ZW50IH19XCIgcGxhY2VtZW50PVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvaWNvbi1tZXRyby1pbmZvLnN2Z1wiIGFsdD1cImluZm8taWNvblwiPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgVG90YWwgUHJpY2U8YnI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnc3QtdGV4dFwiPmV4Y2wgR1NUPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWwtMVwiIG5nYlRvb2x0aXA9XCJ7eyB0b3RhbFByaWNlVG9vbHRpcENvbnRlbnQgfX1cIiBwbGFjZW1lbnQ9XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLW1ldHJvLWluZm8uc3ZnXCIgYWx0PVwiaW5mby1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cclxuICAgICAgICAgICAgICBTdGF0dXNcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1sLTFcIiBuZ2JUb29sdGlwPVwie3sgc3RhdHVzVG9vbHRpcENvbnRlbnQgfX1cIiBwbGFjZW1lbnQ9XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pY29uLW1ldHJvLWluZm8uc3ZnXCIgYWx0PVwiaW5mby1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3JkZXJzIG9mIG9yZGVySGlzdG9yeUxpc3RzXCI+XHJcbiAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCBvcmRlcnMuY29kZSlcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDIwcHhcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCInaWQtJyArIG9yZGVycy5jb2RlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcmRlck51bWJlckNsaWNrZWQob3JkZXJzLmNvZGUsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgb3JkZXJzPy5jb2RlIH19PC9hXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgb3JkZXJzPy5wdXJjaGFzZU9yZGVyTnVtYmVyIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IG9yZGVycz8ucGxhY2VkIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IG9yZGVycz8uZGVsaXZlcnlNb2RlPy5uYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcmRlcnM/LmlzU2FtZURhdGU7IGVsc2Ugbm90TWF0Y2hcIj5cclxuICAgICAgICAgICAgICAgIHt7IG9yZGVycz8ubWF4RGVsaXZlcnlEYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RNYXRjaD5cclxuICAgICAgICAgICAgICAgIHt7IG9yZGVycz8ubWluRGVsaXZlcnlEYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19IC1cclxuICAgICAgICAgICAgICAgIHt7IG9yZGVycz8ubWF4RGVsaXZlcnlEYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZWxsaXBzaXNcIj5cclxuICAgICAgICAgICAgICB7eyBvcmRlcnM/LmRlbGl2ZXJ5QWRkcmVzcz8uZm9ybWF0dGVkQWRkcmVzcyB9fVxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwcmljZS1ib2xkXCI+e3sgb3JkZXJzPy50b3RhbD8uZm9ybWF0dGVkVmFsdWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGFwcC1zbGlkZXItcHJvZ3Jlc3MgW3NsaWRlckRhdGFdPVwib3JkZXJzXCI+PC9hcHAtc2xpZGVyLXByb2dyZXNzPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIE9SREVSIEhJU1RPUlkgR1JJRCAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJyb3cgZ3JpZC12aWV3XCJcclxuICAgICAgKm5nSWY9XCIoIWxpc3R2aWV3IHx8ICFpc0Rlc2t0b3ApICYmIG9yZGVySGlzdG9yeUxpc3RzLmxlbmd0aCA+IDBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb2wtbWQtNiBjb2wtc20tMTIgY29sLTEyXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgb3JkZXJzIG9mIG9yZGVySGlzdG9yeUxpc3RzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXRpbGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXRvcFwiPlxyXG4gICAgICAgICAgICA8dGFibGU+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoPk9yZGVyICM6PC90aD5cclxuICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAoY29udGV4dG1lbnUpPVwib25SaWdodENsaWNrKCRldmVudCwgb3JkZXJzLmNvZGUpXCJcclxuICAgICAgICAgICAgICAgICAgW2lkXT1cIidpZC0nICsgb3JkZXJzLmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwib3JkZXJOdW1iZXJDbGlja2VkKG9yZGVycy5jb2RlLCBmYWxzZSlcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgIG9yZGVycz8uY29kZVxyXG4gICAgICAgICAgICAgICAgICB9fTwvYT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGg+UE8gIzo8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IG9yZGVycz8ucHVyY2hhc2VPcmRlck51bWJlciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtbWlkZGxlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGg+RGVsaXZlcnkgVHlwZTo8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IG9yZGVycz8uZGVsaXZlcnlNb2RlPy5uYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aD5EZWxpdmVyeSBEYXRlczo8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3JkZXJzPy5pc1NhbWVEYXRlOyBlbHNlIG5vdE1hdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3JkZXJzPy5tYXhEZWxpdmVyeURhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX1cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TWF0Y2g+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgb3JkZXJzPy5taW5EZWxpdmVyeURhdGUgfCBkYXRlIDogXCJkZC9NTS95eXl5XCIgfX0gLVxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9yZGVycz8ubWF4RGVsaXZlcnlEYXRlIHwgZGF0ZSA6IFwiZGQvTU0veXl5eVwiIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTW9iaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8taWNvbiBkLWlubGluZS1ibG9jayBtbC0xXCJcclxuICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiU3RhdHVzIEluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aD5PcmRlciBEYXRlOjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3sgb3JkZXJzPy5wbGFjZWQgfCBjdXN0b21EYXRlUGlwZSA6IFwiZGQvTU0veXlcIiB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGg+QWRkcmVzczo8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IG9yZGVycz8uZGVsaXZlcnlBZGRyZXNzPy5mb3JtYXR0ZWRBZGRyZXNzIH19PC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aD5Ub3RhbCBQcmljZTo8L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHJpY2UtYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBvcmRlcnM/LnRvdGFsPy5mb3JtYXR0ZWRWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQtYm90dG9tXCI+XHJcbiAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgIFN0YXR1czpcclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc01vYmlsZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8taWNvbiBkLWlubGluZS1ibG9jayBtbC0xXCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJTdGF0dXMgSW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYi0zIG1iLTNcIiBbbmdDbGFzc109XCJ7J3B0LTQgbXQtNCcgOiBvcmRlcnM/Lm1heExpbmVTdGF0dXN9XCIgPlxyXG4gICAgICAgICAgICAgIDxhcHAtc2xpZGVyLXByb2dyZXNzIFtzbGlkZXJEYXRhXT1cIm9yZGVyc1wiPjwvYXBwLXNsaWRlci1wcm9ncmVzcz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2XHJcbiAgICBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGZpeGVkXCJcclxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cIm1lbnVUb3BMZWZ0UG9zaXRpb24ueFwiXHJcbiAgICBbc3R5bGUudG9wLnB4XT1cIm1lbnVUb3BMZWZ0UG9zaXRpb24ueVwiXHJcbiAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwicmlnaHRNZW51XCJcclxuICA+PC9kaXY+XHJcblxyXG4gIDxtYXQtbWVudSAjcmlnaHRNZW51PVwibWF0TWVudVwiPlxyXG4gICAgPGRpdiBtYXRNZW51Q29udGVudCAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxyXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcmRlck51bWJlckNsaWNrZWQoaXRlbSwgdHJ1ZSlcIiBtYXQtbWVudS1pdGVtPlxyXG4gICAgICAgIE9wZW4gT3JkZXIgaW4gbmV3IHRhYlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LW1lbnU+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlckltYWdlIHwgYXN5bmNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgbXgtYXV0byB0ZXh0LWNlbnRlciBtYi00XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicHJvZHVjdC1sb2FkZXJcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImxvYWRlci1pY29uIGZhcyBmYS1zcGlubmVyIGZhLXB1bHNlXCI+PC9pPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGVyLXRleHRcIj5sb2FkaW5n4oCmLjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPCEtLSBOTyBPUkRFUiBISVNUT1JZIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhQXZhaWxhbGUgPT0gJ25vRGF0YSdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZW1wdHktb3JkZXJwYWdlLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0xMCBjb2wtbGctMTAgbS1hdXRvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgW2lubmVySFRNTF09XCJub09yZGVySGlzdG9yeURhdGFcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
|