vcomply-workflow-engine 3.1.12 → 3.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2020/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +6 -4
  2. package/esm2020/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +3 -3
  3. package/esm2020/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.mjs +2 -2
  4. package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +4 -3
  5. package/esm2020/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +34 -13
  6. package/esm2020/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +3 -3
  7. package/esm2020/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +47 -28
  8. package/esm2020/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +22 -4
  9. package/esm2020/lib/workflow/shared/components/text-field/text-field.component.mjs +12 -6
  10. package/esm2020/lib/workflow/shared/components/text-field-icon/text-field-icon.component.mjs +3 -3
  11. package/esm2020/lib/workflow/shared/constants/cdn-link.constant.mjs +2 -1
  12. package/esm2020/lib/workflow/shared/services/grc.service.mjs +3 -294
  13. package/esm2020/lib/workflow-engine-container/workflow-engine-container.component.mjs +5 -4
  14. package/fesm2015/vcomply-workflow-engine.mjs +162 -385
  15. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  16. package/fesm2020/vcomply-workflow-engine.mjs +152 -378
  17. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  18. package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +3 -1
  19. package/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.d.ts +1 -0
  20. package/lib/workflow/shared/components/attributes/attributes.component.d.ts +3 -1
  21. package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +10 -3
  22. package/lib/workflow/shared/components/grc-object-list/grc-object-list.component.d.ts +1 -0
  23. package/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.d.ts +8 -3
  24. package/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.d.ts +5 -0
  25. package/lib/workflow/shared/components/text-field/text-field.component.d.ts +3 -1
  26. package/lib/workflow/shared/constants/cdn-link.constant.d.ts +1 -0
  27. package/lib/workflow/shared/services/grc.service.d.ts +0 -1
  28. package/package.json +1 -1
@@ -35,11 +35,13 @@ export class RiskCategoryRiskListingComponent {
35
35
  this.riskCurrentPage = 1;
36
36
  this.selectedCatAndRisk = [];
37
37
  this.preSelectedCatAndRisk = [];
38
+ this.selectedCategoryIds = [];
38
39
  this.closeUsersList = new EventEmitter();
39
40
  }
40
41
  set selectedCatAndRiskData(value) {
41
42
  this.selectedCatAndRisk = value;
42
43
  this.preSelectedCatAndRisk = JSON.parse(JSON.stringify(value));
44
+ this.getSelectedCategoriesId(this.selectedCatAndRisk);
43
45
  }
44
46
  ngOnInit() {
45
47
  this.animation = true;
@@ -51,6 +53,7 @@ export class RiskCategoryRiskListingComponent {
51
53
  }
52
54
  setSelectedTab(event) {
53
55
  this.selectedTab = event?.type;
56
+ this.categoryCurrentPage = 1;
54
57
  this.getCategoriesList();
55
58
  }
56
59
  getCategoriesList() {
@@ -125,7 +128,7 @@ export class RiskCategoryRiskListingComponent {
125
128
  entrustedBy: {
126
129
  name: risk?.MemberName,
127
130
  email: risk?.MemberEmail,
128
- profilePic: risk?.MemberProfilePic,
131
+ profilePic: risk?.MemberProfilePic ?? '',
129
132
  shortName: risk?.MemberSortName,
130
133
  },
131
134
  entrustedTo: {},
@@ -157,6 +160,7 @@ export class RiskCategoryRiskListingComponent {
157
160
  this.categoryCurrentPage = 1;
158
161
  this.searchString = event;
159
162
  this.getCategoriesList();
163
+ this.getCategoriesCount();
160
164
  }
161
165
  }
162
166
  close() {
@@ -165,9 +169,23 @@ export class RiskCategoryRiskListingComponent {
165
169
  save() {
166
170
  this.closeUsersList.emit(this.selectedCatAndRisk);
167
171
  }
172
+ onCategoryPageChange(event) {
173
+ this.categoryCurrentPage = event?.pageNo;
174
+ this.getCategoriesList();
175
+ }
176
+ changeSelectedCatAndRisk(event) {
177
+ this.selectedCatAndRisk = event;
178
+ this.getSelectedCategoriesId(this.selectedCatAndRisk);
179
+ }
180
+ getSelectedCategoriesId(selectedData) {
181
+ this.selectedCategoryIds = [];
182
+ selectedData?.forEach((selected) => {
183
+ this.selectedCategoryIds?.push(selected?.category?._id);
184
+ });
185
+ }
168
186
  }
169
187
  RiskCategoryRiskListingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RiskCategoryRiskListingComponent, deps: [{ token: i1.GrcService }], target: i0.ɵɵFactoryTarget.Component });
170
- RiskCategoryRiskListingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RiskCategoryRiskListingComponent, isStandalone: true, selector: "app-risk-category-risk-listing", inputs: { selectedTab: "selectedTab", selectedCatAndRiskData: ["selectedCatAndRisk", "selectedCatAndRiskData"] }, outputs: { closeUsersList: "closeUsersList" }, ngImport: i0, template: "<div class=\"risk-category-risk-listing\" [class.animate]=\"animation\">\r\n <div class=\"risk-category-risk-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <h3 class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Risk Categories & Risks</h3></div>\r\n <div class=\"risk-category-risk-listing-body\">\r\n <app-table-card class=\"vx-w-100\" [tableCard]=\"tableCard\" [singleSelectedText]=\"'Category Selected'\" [multipleSelectedText]=\"'Categories Selected'\" (setSelectedTab)=\"setSelectedTab($event)\" [selectedTab]=\"1\"></app-table-card>\r\n <div class=\"search-block vx-mb-2\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" #searchRiskCategory (keyup.enter)=\"handleSearch($event.target.value)\" placeholder=\"Search Risk Categories\" />\r\n </div>\r\n <div class=\"risk-category-risk-listing-body-inner vx-mb-2 vx-d-flex\" [class.with-noData]=\"(!isCategoryLoader && !categoriesList?.length)\">\r\n <ng-container *ngIf=\"isCategoryLoader || categoriesList?.length\">\r\n <div class=\"inner-item-left vx-pr-2\">\r\n <app-grc-category-listing *ngIf=\"!isCategoryLoader\" [headerText]=\"'Risk Categories'\" [categories]=\"categoriesList\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [tableCard]=\"tableCard\" (activeSelectedCategory)=\"activeSelectedCategory($event)\"></app-grc-category-listing>\r\n <app-list-loader *ngIf=\"isCategoryLoader\"></app-list-loader>\r\n </div>\r\n <div class=\"inner-item-right\">\r\n <app-grc-responsibility-listing *ngIf=\"!isRiskLoader && !isCategoryLoader && risksList?.length\" [headerText]=\"'Risk Name'\" [dataList]=\"risksList\" [activeCategory]=\"activeCategory\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [currentPage]=\"riskCurrentPage\" [perPageLimit]=\"activeCategory?.categoryRiskLimit\" [totalListData]=\"activeCategory?.categoryRiskCount\" [totalPages]=\"getTotalRiskPage()\" (getUpdatedDataList)=\"getUpdatedDataList($event)\" ></app-grc-responsibility-listing>\r\n <app-list-loader *ngIf=\"isRiskLoader || isCategoryLoader\"></app-list-loader>\r\n <app-no-data *ngIf=\"risksList?.length === 0 && !(isRiskLoader || isCategoryLoader)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n </ng-container>\r\n <app-no-data *ngIf=\"(!isCategoryLoader && !categoriesList?.length)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n <app-floating-bar (closeList)=\"close()\" (closeEvent)=\"save()\" ></app-floating-bar>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .risk-category-risk-listing{position:fixed;inset:0 30px 0 0}::ng-deep .risk-category-risk-listing:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .risk-category-risk-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .risk-category-risk-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .risk-category-risk-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .risk-category-risk-listing-body .search-block{position:relative}::ng-deep .risk-category-risk-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .risk-category-risk-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .risk-category-risk-listing-body .search-block input::placeholder{color:#747576}::ng-deep .risk-category-risk-listing-body .search-block i{position:absolute;left:1rem;font-size:12px;font-weight:400;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .risk-category-risk-listing-body-inner{height:calc(100vh - 17.5rem)}::ng-deep .risk-category-risk-listing-body-inner.with-noData{align-items:center;justify-content:center}::ng-deep .risk-category-risk-listing-body-inner .inner-item-left{width:25%}::ng-deep .risk-category-risk-listing-body-inner .inner-item-right{width:75%}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: FormgroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FloatingBarModule }, { kind: "component", type: i3.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: TableCardComponent, selector: "app-table-card", inputs: ["tableCard", "singleSelectedText", "multipleSelectedText", "selectedTab"], outputs: ["setSelectedTab"] }, { kind: "component", type: GrcCategoryListingComponent, selector: "app-grc-category-listing", inputs: ["tableCard", "headerText", "selectedCatAndRisk", "categories"], outputs: ["activeSelectedCategory"] }, { kind: "component", type: GrcResponsibilityListingComponent, selector: "app-grc-responsibility-listing", inputs: ["tableCard", "activeCategory", "headerText", "currentPage", "perPageLimit", "totalListData", "totalPages", "selectedListData", "selectedListDataIds", "selectedCatAndRisk", "dataList"], outputs: ["getUpdatedDataList"] }, { kind: "ngmodule", type: ListLoaderModule }, { kind: "component", type: i4.ListLoaderComponent, selector: "app-list-loader" }, { kind: "ngmodule", type: NoDataModule }, { kind: "component", type: i5.NoDataComponent, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }] });
188
+ RiskCategoryRiskListingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RiskCategoryRiskListingComponent, isStandalone: true, selector: "app-risk-category-risk-listing", inputs: { selectedTab: "selectedTab", selectedCatAndRiskData: ["selectedCatAndRisk", "selectedCatAndRiskData"] }, outputs: { closeUsersList: "closeUsersList" }, ngImport: i0, template: "<div class=\"risk-category-risk-listing\" [class.animate]=\"animation\">\r\n <div class=\"risk-category-risk-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <h3 class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Risks</h3></div>\r\n <div class=\"risk-category-risk-listing-body\">\r\n <app-table-card class=\"vx-w-100\" [tableCard]=\"tableCard\" [singleSelectedText]=\"'Category Selected'\" [multipleSelectedText]=\"'Categories Selected'\" (setSelectedTab)=\"setSelectedTab($event)\" [selectedTab]=\"1\"></app-table-card>\r\n <div class=\"search-block vx-mb-2\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" #searchRiskCategory (keyup.enter)=\"handleSearch($event.target.value)\" placeholder=\"Search Risk Categories\" />\r\n </div>\r\n <div class=\"risk-category-risk-listing-body-inner vx-mb-2 vx-d-flex\" [class.with-noData]=\"(!isCategoryLoader && !categoriesList?.length)\">\r\n <ng-container *ngIf=\"isCategoryLoader || categoriesList?.length\">\r\n <div class=\"inner-item-left vx-pr-2\">\r\n <app-grc-category-listing *ngIf=\"!isCategoryLoader\" [headerText]=\"'Risk Categories'\" [categories]=\"categoriesList\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [tableCard]=\"tableCard\" [currentPage]=\"categoryCurrentPage\" [selectedTabIndex]=\"selectedTab\" [selectedCategoryIds]=\"selectedCategoryIds\" (activeSelectedCategory)=\"activeSelectedCategory($event)\" (onCategoryPageChange)=\"onCategoryPageChange($event)\"></app-grc-category-listing>\r\n <app-list-loader *ngIf=\"isCategoryLoader\"></app-list-loader>\r\n </div>\r\n <div class=\"inner-item-right\">\r\n <app-grc-responsibility-listing *ngIf=\"!isRiskLoader && !isCategoryLoader && risksList?.length\" [headerText]=\"'Risk Name'\" [dataList]=\"risksList\" [activeCategory]=\"activeCategory\" [selectedCatAndRisk]=\"selectedCatAndRisk\" (changeSelectedCatAndRisk)=\"changeSelectedCatAndRisk($event)\" [currentPage]=\"riskCurrentPage\" [perPageLimit]=\"activeCategory?.categoryRiskLimit\" [totalListData]=\"activeCategory?.categoryRiskCount\" [totalPages]=\"getTotalRiskPage()\" (getUpdatedDataList)=\"getUpdatedDataList($event)\" ></app-grc-responsibility-listing>\r\n <app-list-loader *ngIf=\"isRiskLoader || isCategoryLoader\"></app-list-loader>\r\n <app-no-data *ngIf=\"risksList?.length === 0 && !(isRiskLoader || isCategoryLoader)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n </ng-container>\r\n <app-no-data *ngIf=\"(!isCategoryLoader && !categoriesList?.length)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n <app-floating-bar (closeList)=\"close()\" (closeEvent)=\"save()\" ></app-floating-bar>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .risk-category-risk-listing{position:fixed;inset:0 30px 0 0}::ng-deep .risk-category-risk-listing:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .risk-category-risk-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .risk-category-risk-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .risk-category-risk-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .risk-category-risk-listing-body .search-block{position:relative}::ng-deep .risk-category-risk-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .risk-category-risk-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .risk-category-risk-listing-body .search-block input::placeholder{color:#747576}::ng-deep .risk-category-risk-listing-body .search-block i{position:absolute;left:1rem;font-size:12px;font-weight:400;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .risk-category-risk-listing-body-inner{height:calc(100vh - 17.5rem)}::ng-deep .risk-category-risk-listing-body-inner.with-noData{align-items:center;justify-content:center}::ng-deep .risk-category-risk-listing-body-inner .inner-item-left{width:25%}::ng-deep .risk-category-risk-listing-body-inner .inner-item-right{width:75%}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: FormgroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FloatingBarModule }, { kind: "component", type: i3.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: TableCardComponent, selector: "app-table-card", inputs: ["tableCard", "singleSelectedText", "multipleSelectedText", "selectedTab"], outputs: ["setSelectedTab"] }, { kind: "component", type: GrcCategoryListingComponent, selector: "app-grc-category-listing", inputs: ["tableCard", "headerText", "currentPage", "selectedTabIndex", "selectedCatAndRisk", "categories", "selectedCategoryIds"], outputs: ["activeSelectedCategory", "onCategoryPageChange"] }, { kind: "component", type: GrcResponsibilityListingComponent, selector: "app-grc-responsibility-listing", inputs: ["tableCard", "activeCategory", "headerText", "currentPage", "perPageLimit", "totalListData", "totalPages", "selectedListData", "selectedListDataIds", "selectedCatAndRisk", "dataList"], outputs: ["getUpdatedDataList", "changeSelectedCatAndRisk"] }, { kind: "ngmodule", type: ListLoaderModule }, { kind: "component", type: i4.ListLoaderComponent, selector: "app-list-loader" }, { kind: "ngmodule", type: NoDataModule }, { kind: "component", type: i5.NoDataComponent, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }] });
171
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RiskCategoryRiskListingComponent, decorators: [{
172
190
  type: Component,
173
191
  args: [{ selector: 'app-risk-category-risk-listing', standalone: true, imports: [
@@ -182,9 +200,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
182
200
  GrcResponsibilityListingComponent,
183
201
  ListLoaderModule,
184
202
  NoDataModule,
185
- ], inputs: ['selectedTab'], outputs: ['closeUsersList'], template: "<div class=\"risk-category-risk-listing\" [class.animate]=\"animation\">\r\n <div class=\"risk-category-risk-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <h3 class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Risk Categories & Risks</h3></div>\r\n <div class=\"risk-category-risk-listing-body\">\r\n <app-table-card class=\"vx-w-100\" [tableCard]=\"tableCard\" [singleSelectedText]=\"'Category Selected'\" [multipleSelectedText]=\"'Categories Selected'\" (setSelectedTab)=\"setSelectedTab($event)\" [selectedTab]=\"1\"></app-table-card>\r\n <div class=\"search-block vx-mb-2\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" #searchRiskCategory (keyup.enter)=\"handleSearch($event.target.value)\" placeholder=\"Search Risk Categories\" />\r\n </div>\r\n <div class=\"risk-category-risk-listing-body-inner vx-mb-2 vx-d-flex\" [class.with-noData]=\"(!isCategoryLoader && !categoriesList?.length)\">\r\n <ng-container *ngIf=\"isCategoryLoader || categoriesList?.length\">\r\n <div class=\"inner-item-left vx-pr-2\">\r\n <app-grc-category-listing *ngIf=\"!isCategoryLoader\" [headerText]=\"'Risk Categories'\" [categories]=\"categoriesList\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [tableCard]=\"tableCard\" (activeSelectedCategory)=\"activeSelectedCategory($event)\"></app-grc-category-listing>\r\n <app-list-loader *ngIf=\"isCategoryLoader\"></app-list-loader>\r\n </div>\r\n <div class=\"inner-item-right\">\r\n <app-grc-responsibility-listing *ngIf=\"!isRiskLoader && !isCategoryLoader && risksList?.length\" [headerText]=\"'Risk Name'\" [dataList]=\"risksList\" [activeCategory]=\"activeCategory\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [currentPage]=\"riskCurrentPage\" [perPageLimit]=\"activeCategory?.categoryRiskLimit\" [totalListData]=\"activeCategory?.categoryRiskCount\" [totalPages]=\"getTotalRiskPage()\" (getUpdatedDataList)=\"getUpdatedDataList($event)\" ></app-grc-responsibility-listing>\r\n <app-list-loader *ngIf=\"isRiskLoader || isCategoryLoader\"></app-list-loader>\r\n <app-no-data *ngIf=\"risksList?.length === 0 && !(isRiskLoader || isCategoryLoader)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n </ng-container>\r\n <app-no-data *ngIf=\"(!isCategoryLoader && !categoriesList?.length)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n <app-floating-bar (closeList)=\"close()\" (closeEvent)=\"save()\" ></app-floating-bar>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .risk-category-risk-listing{position:fixed;inset:0 30px 0 0}::ng-deep .risk-category-risk-listing:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .risk-category-risk-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .risk-category-risk-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .risk-category-risk-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .risk-category-risk-listing-body .search-block{position:relative}::ng-deep .risk-category-risk-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .risk-category-risk-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .risk-category-risk-listing-body .search-block input::placeholder{color:#747576}::ng-deep .risk-category-risk-listing-body .search-block i{position:absolute;left:1rem;font-size:12px;font-weight:400;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .risk-category-risk-listing-body-inner{height:calc(100vh - 17.5rem)}::ng-deep .risk-category-risk-listing-body-inner.with-noData{align-items:center;justify-content:center}::ng-deep .risk-category-risk-listing-body-inner .inner-item-left{width:25%}::ng-deep .risk-category-risk-listing-body-inner .inner-item-right{width:75%}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
203
+ ], inputs: ['selectedTab'], outputs: ['closeUsersList'], template: "<div class=\"risk-category-risk-listing\" [class.animate]=\"animation\">\r\n <div class=\"risk-category-risk-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <h3 class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Risks</h3></div>\r\n <div class=\"risk-category-risk-listing-body\">\r\n <app-table-card class=\"vx-w-100\" [tableCard]=\"tableCard\" [singleSelectedText]=\"'Category Selected'\" [multipleSelectedText]=\"'Categories Selected'\" (setSelectedTab)=\"setSelectedTab($event)\" [selectedTab]=\"1\"></app-table-card>\r\n <div class=\"search-block vx-mb-2\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" #searchRiskCategory (keyup.enter)=\"handleSearch($event.target.value)\" placeholder=\"Search Risk Categories\" />\r\n </div>\r\n <div class=\"risk-category-risk-listing-body-inner vx-mb-2 vx-d-flex\" [class.with-noData]=\"(!isCategoryLoader && !categoriesList?.length)\">\r\n <ng-container *ngIf=\"isCategoryLoader || categoriesList?.length\">\r\n <div class=\"inner-item-left vx-pr-2\">\r\n <app-grc-category-listing *ngIf=\"!isCategoryLoader\" [headerText]=\"'Risk Categories'\" [categories]=\"categoriesList\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [tableCard]=\"tableCard\" [currentPage]=\"categoryCurrentPage\" [selectedTabIndex]=\"selectedTab\" [selectedCategoryIds]=\"selectedCategoryIds\" (activeSelectedCategory)=\"activeSelectedCategory($event)\" (onCategoryPageChange)=\"onCategoryPageChange($event)\"></app-grc-category-listing>\r\n <app-list-loader *ngIf=\"isCategoryLoader\"></app-list-loader>\r\n </div>\r\n <div class=\"inner-item-right\">\r\n <app-grc-responsibility-listing *ngIf=\"!isRiskLoader && !isCategoryLoader && risksList?.length\" [headerText]=\"'Risk Name'\" [dataList]=\"risksList\" [activeCategory]=\"activeCategory\" [selectedCatAndRisk]=\"selectedCatAndRisk\" (changeSelectedCatAndRisk)=\"changeSelectedCatAndRisk($event)\" [currentPage]=\"riskCurrentPage\" [perPageLimit]=\"activeCategory?.categoryRiskLimit\" [totalListData]=\"activeCategory?.categoryRiskCount\" [totalPages]=\"getTotalRiskPage()\" (getUpdatedDataList)=\"getUpdatedDataList($event)\" ></app-grc-responsibility-listing>\r\n <app-list-loader *ngIf=\"isRiskLoader || isCategoryLoader\"></app-list-loader>\r\n <app-no-data *ngIf=\"risksList?.length === 0 && !(isRiskLoader || isCategoryLoader)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n </ng-container>\r\n <app-no-data *ngIf=\"(!isCategoryLoader && !categoriesList?.length)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\r\n </div>\r\n <app-floating-bar (closeList)=\"close()\" (closeEvent)=\"save()\" ></app-floating-bar>\r\n </div>\r\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .risk-category-risk-listing{position:fixed;inset:0 30px 0 0}::ng-deep .risk-category-risk-listing:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .risk-category-risk-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .risk-category-risk-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .risk-category-risk-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .risk-category-risk-listing-body .search-block{position:relative}::ng-deep .risk-category-risk-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .risk-category-risk-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .risk-category-risk-listing-body .search-block input::placeholder{color:#747576}::ng-deep .risk-category-risk-listing-body .search-block i{position:absolute;left:1rem;font-size:12px;font-weight:400;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .risk-category-risk-listing-body-inner{height:calc(100vh - 17.5rem)}::ng-deep .risk-category-risk-listing-body-inner.with-noData{align-items:center;justify-content:center}::ng-deep .risk-category-risk-listing-body-inner .inner-item-left{width:25%}::ng-deep .risk-category-risk-listing-body-inner .inner-item-right{width:75%}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
186
204
  }], ctorParameters: function () { return [{ type: i1.GrcService }]; }, propDecorators: { selectedCatAndRiskData: [{
187
205
  type: Input,
188
206
  args: ['selectedCatAndRisk']
189
207
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3Rpbmcvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3Rpbmcvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUV2SCxPQUFPLEVBQUUs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Q0FBQztJQUNwRCxDQUFDOzs2SEE5S1UsZ0NBQWdDO2lIQUFoQyxnQ0FBZ0MsMlBDdEM3QyxvdkZBeUJNLDB3RERKRixZQUFZLGtJQUNaLGFBQWEsOEJBQ2IsZUFBZSw4QkFDZixhQUFhLDhCQUNiLGlCQUFpQix5akJBQ2pCLGdCQUFnQiwrQkFDaEIsa0JBQWtCLDRLQUNsQiwyQkFBMkIsbUxBQzNCLGlDQUFpQyw2U0FDakMsZ0JBQWdCLGdIQUNoQixZQUFZOzJGQU9ILGdDQUFnQztrQkFyQjVDLFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IsaUNBQWlDO3dCQUNqQyxnQkFBZ0I7d0JBQ2hCLFlBQVk7cUJBQ2IsVUFHTyxDQUFDLGFBQWEsQ0FBQyxXQUNkLENBQUMsZ0JBQWdCLENBQUM7aUdBdUJNLHNCQUFzQjtzQkFBdEQsS0FBSzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmxvYXRpbmdCYXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2Zsb2F0aW5nLWJhci9mbG9hdGluZy1iYXIubW9kdWxlJztcclxuaW1wb3J0IHsgRm9ybWdyb3VwTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L2Zvcm1ncm91cC9mb3JtZ3JvdXAubW9kdWxlJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlJztcclxuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC90b29sdGlwL3Rvb2x0aXAubW9kdWxlJztcclxuaW1wb3J0IHsgVGFibGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtY2FyZC90YWJsZS1jYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1jYXRlZ29yeS1saXN0aW5nL2dyYy1jYXRlZ29yeS1saXN0aW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyY1Jlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nL2dyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncmMuc2VydmljZSc7XHJcbmltcG9ydCB7IFRBQkxFX0NBUkQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ3JjT2JqZWN0LmNvbnN0YW50JztcclxuaW1wb3J0IHsgTm9EYXRhTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L25vLWRhdGEvbm8tZGF0YS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jZG4tbGluay5jb25zdGFudCc7XHJcbmltcG9ydCB7IExpc3RMb2FkZXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2xpc3QtbG9hZGVyL2xpc3QtbG9hZGVyLm1vZHVsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1yaXNrLWNhdGVnb3J5LXJpc2stbGlzdGluZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBQb3BvdmVyTW9kdWxlLFxyXG4gICAgRm9ybWdyb3VwTW9kdWxlLFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIEZsb2F0aW5nQmFyTW9kdWxlLFxyXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcclxuICAgIFRhYmxlQ2FyZENvbXBvbmVudCxcclxuICAgIEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIEdyY1Jlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIExpc3RMb2FkZXJNb2R1bGUsXHJcbiAgICBOb0RhdGFNb2R1bGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgaW5wdXRzOiBbJ3NlbGVjdGVkVGFiJ10sXHJcbiAgb3V0cHV0czogWydjbG9zZVVzZXJzTGlzdCddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmlza0NhdGVnb3J5Umlza0xpc3RpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHRhYmxlQ2FyZCA9IFRBQkxFX0NBUkQ7XHJcbiAgQ0ROX0xJTksgPSBMSU5LUztcclxuXHJcbiAgY2F0ZWdvcnlTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgcmlza1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgaXNDYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xyXG4gIGlzUmlza0xvYWRlciA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZFRhYjogbnVtYmVyID0gMTtcclxuICBjYXRlZ29yeUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xyXG4gIHNlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XHJcbiAgY2F0ZWdvcmllc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHJpc2tzTGlzdDogYW55ID0gW107XHJcbiAgYWN0aXZlQ2F0ZWdvcnk6IGFueSA9IHt9O1xyXG4gIHJpc2tDdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuICBzZWxlY3RlZENhdEFuZFJpc2s6IGFueSA9IFtdO1xyXG4gIHByZVNlbGVjdGVkQ2F0QW5kUmlzazogYW55ID0gW107XHJcblxyXG4gIEBJbnB1dCgnc2VsZWN0ZWRDYXRBbmRSaXNrJykgc2V0IHNlbGVjdGVkQ2F0QW5kUmlza0RhdGEodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENhdEFuZFJpc2sgPSB2YWx1ZTtcclxuICAgIHRoaXMucHJlU2VsZWN0ZWRDYXRBbmRSaXNrID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VVc2Vyc0xpc3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgICB9LCAzMDApO1xyXG4gICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRDYXRlZ29yaWVzQ291bnQoKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkVGFiKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSBldmVudD8udHlwZTtcclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3JpZXNMaXN0KCkge1xyXG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5jYXRlZ29yeVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgbGV0IHF1ZXJ5UGFyYW0gPSB7XHJcbiAgICAgIHBhZ2VObzogdGhpcy5jYXRlZ29yeUN1cnJlbnRQYWdlID8/IDEsXHJcbiAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgPz8gJycsXHJcbiAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRUYWIgPz8gMSxcclxuICAgIH07XHJcbiAgICB0aGlzLmlzQ2F0ZWdvcnlMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5jYXRlZ29yeVN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JjU2VydmljZVxyXG4gICAgICAuZ2V0Umlza0NhdGVnb3JpZXMocXVlcnlQYXJhbSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3QgPSByZXM/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIC4uLmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgIG5hbWU6IGNhdGVnb3J5Py5jYXRlZ29yeV9uYW1lLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnJpc2tDdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yaWVzTGlzdD8ubGVuZ3RoXHJcbiAgICAgICAgICAgID8gdGhpcy5jYXRlZ29yaWVzTGlzdFswXVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgdGhpcy5nZXRSaXNrTGlzdCgpO1xyXG4gICAgICAgICAgdGhpcy5pc0NhdGVnb3J5TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNDYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3JpZXNDb3VudCgpIHtcclxuICAgIGxldCBxdWVyeVBhcmFtID0ge1xyXG4gICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoU3RyaW5nID8/ICcnLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRSaXNrQ2F0ZWdvcmllc0NvdW50KHF1ZXJ5UGFyYW0pLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJsZUNhcmQgPSByZXMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5jYXRlZ29yeVR5cGVOYW1lLFxyXG4gICAgICAgICAgICBjb3VudDogaXRlbT8uY2F0ZWdvcnlDb3VudCxcclxuICAgICAgICAgICAgdHlwZTogaXRlbT8uY2F0ZWdvcnlUeXBlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgKGVycjogYW55KSA9PiB7fVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFJpc2tMaXN0KGNsaWNrZWRUeXBlPzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5yaXNrU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucmlza1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIHA6IHRoaXMucmlza0N1cnJlbnRQYWdlID8/IDEsXHJcbiAgICAgIHE6IHRoaXMuc2VhcmNoU3RyaW5nID8/ICcnLFxyXG4gICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkVGFiID8/IDEsXHJcbiAgICAgIHNvdXJjZTogJ3Jpc2tfY2F0ZWdvcnknLFxyXG4gICAgICBjYXRlZ29yeV9pZDogdGhpcy5hY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlfaWQgPz8gW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5yaXNrU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlLmdldFJpc2tzKHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yaXNrc0xpc3QgPSB0aGlzLnNldERhdGFMaXN0U3RydWN0dXJlKHJlcyk7XHJcbiAgICAgICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldERhdGFMaXN0U3RydWN0dXJlKHJlczogYW55KSB7XHJcbiAgICBjb25zdCBkYXRhID0gcmVzPy5tYXAoKHJpc2s6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnJpc2ssXHJcbiAgICAgICAgbmFtZTogcmlzaz8uUmlza05hbWUsXHJcbiAgICAgICAgY29udHJvbElkOiByaXNrPy5SaXNrQ29udHJvbElkLFxyXG4gICAgICAgIF9pZDogcmlzaz8uRW5jcnlwdGVkUmlza0lkLFxyXG4gICAgICAgIGVudHJ1c3RlZEJ5OiB7XHJcbiAgICAgICAgICBuYW1lOiByaXNrPy5NZW1iZXJOYW1lLFxyXG4gICAgICAgICAgZW1haWw6IHJpc2s/Lk1lbWJlckVtYWlsLFxyXG4gICAgICAgICAgcHJvZmlsZVBpYzogcmlzaz8uTWVtYmVyUHJvZmlsZVBpYyxcclxuICAgICAgICAgIHNob3J0TmFtZTogcmlzaz8uTWVtYmVyU29ydE5hbWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnRydXN0ZWRUbzoge30sXHJcbiAgICAgICAgd2l0aGluRGF0YTogcmlzaz8uRW50aXR5Py5tYXAoKHdpdGhpbjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuYW1lOiB3aXRoaW4/LnJjX25hbWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZVNlbGVjdGVkQ2F0ZWdvcnkoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVDYXRlZ29yeSA9IGV2ZW50Py5jYXRlZ29yeTtcclxuICAgIHRoaXMucmlza0N1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuZ2V0Umlza0xpc3QoZXZlbnQ/LmNsaWNrZWRUeXBlKTtcclxuICB9XHJcblxyXG4gIGdldFVwZGF0ZWREYXRhTGlzdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJpc2tDdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm87XHJcbiAgICB0aGlzLmdldFJpc2tMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRUb3RhbFJpc2tQYWdlKCkge1xyXG4gICAgY29uc3QgdG90YWxQYWdlID1cclxuICAgICAgdGhpcy5hY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrQ291bnQgL1xyXG4gICAgICB0aGlzLmFjdGl2ZUNhdGVnb3J5Py5jYXRlZ29yeVJpc2tMaW1pdDtcclxuICAgIHJldHVybiBNYXRoLmNlaWwoTWF0aC5hYnModG90YWxQYWdlKSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTZWFyY2goZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQ7XHJcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5jbG9zZVVzZXJzTGlzdC5lbWl0KHRoaXMucHJlU2VsZWN0ZWRDYXRBbmRSaXNrKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLmNsb3NlVXNlcnNMaXN0LmVtaXQodGhpcy5zZWxlY3RlZENhdEFuZFJpc2spO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmdcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaXNrLWNhdGVnb3J5LXJpc2stbGlzdGluZy1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5TZWxlY3QgUmlzayBDYXRlZ29yaWVzICYgUmlza3M8L2gzPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLWJvZHlcIj5cclxuICAgICAgICA8YXBwLXRhYmxlLWNhcmQgY2xhc3M9XCJ2eC13LTEwMFwiIFt0YWJsZUNhcmRdPVwidGFibGVDYXJkXCIgW3NpbmdsZVNlbGVjdGVkVGV4dF09XCInQ2F0ZWdvcnkgU2VsZWN0ZWQnXCIgW211bHRpcGxlU2VsZWN0ZWRUZXh0XT1cIidDYXRlZ29yaWVzIFNlbGVjdGVkJ1wiIChzZXRTZWxlY3RlZFRhYik9XCJzZXRTZWxlY3RlZFRhYigkZXZlbnQpXCIgW3NlbGVjdGVkVGFiXT1cIjFcIj48L2FwcC10YWJsZS1jYXJkPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2sgdngtbWItMlwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgICNzZWFyY2hSaXNrQ2F0ZWdvcnkgKGtleXVwLmVudGVyKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFJpc2sgQ2F0ZWdvcmllc1wiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLWJvZHktaW5uZXIgdngtbWItMiB2eC1kLWZsZXhcIiBbY2xhc3Mud2l0aC1ub0RhdGFdPVwiKCFpc0NhdGVnb3J5TG9hZGVyICYmICFjYXRlZ29yaWVzTGlzdD8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDYXRlZ29yeUxvYWRlciB8fCBjYXRlZ29yaWVzTGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItaXRlbS1sZWZ0IHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWdyYy1jYXRlZ29yeS1saXN0aW5nICpuZ0lmPVwiIWlzQ2F0ZWdvcnlMb2FkZXJcIiBbaGVhZGVyVGV4dF09XCInUmlzayBDYXRlZ29yaWVzJ1wiIFtjYXRlZ29yaWVzXT1cImNhdGVnb3JpZXNMaXN0XCIgIFtzZWxlY3RlZENhdEFuZFJpc2tdPVwic2VsZWN0ZWRDYXRBbmRSaXNrXCIgW3RhYmxlQ2FyZF09XCJ0YWJsZUNhcmRcIiAoYWN0aXZlU2VsZWN0ZWRDYXRlZ29yeSk9XCJhY3RpdmVTZWxlY3RlZENhdGVnb3J5KCRldmVudClcIj48L2FwcC1ncmMtY2F0ZWdvcnktbGlzdGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxpc3QtbG9hZGVyICpuZ0lmPVwiaXNDYXRlZ29yeUxvYWRlclwiPjwvYXBwLWxpc3QtbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItaXRlbS1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3RpbmcgKm5nSWY9XCIhaXNSaXNrTG9hZGVyICYmICFpc0NhdGVnb3J5TG9hZGVyICYmIHJpc2tzTGlzdD8ubGVuZ3RoXCIgW2hlYWRlclRleHRdPVwiJ1Jpc2sgTmFtZSdcIiBbZGF0YUxpc3RdPVwicmlza3NMaXN0XCIgW2FjdGl2ZUNhdGVnb3J5XT1cImFjdGl2ZUNhdGVnb3J5XCIgW3NlbGVjdGVkQ2F0QW5kUmlza109XCJzZWxlY3RlZENhdEFuZFJpc2tcIiBbY3VycmVudFBhZ2VdPVwicmlza0N1cnJlbnRQYWdlXCIgW3BlclBhZ2VMaW1pdF09XCJhY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrTGltaXRcIiBbdG90YWxMaXN0RGF0YV09XCJhY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrQ291bnRcIiBbdG90YWxQYWdlc109XCJnZXRUb3RhbFJpc2tQYWdlKClcIiAoZ2V0VXBkYXRlZERhdGFMaXN0KT1cImdldFVwZGF0ZWREYXRhTGlzdCgkZXZlbnQpXCIgPjwvYXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJpc1Jpc2tMb2FkZXIgfHwgaXNDYXRlZ29yeUxvYWRlclwiPjwvYXBwLWxpc3QtbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbm8tZGF0YSAqbmdJZj1cInJpc2tzTGlzdD8ubGVuZ3RoID09PSAwICYmICEoaXNSaXNrTG9hZGVyIHx8IGlzQ2F0ZWdvcnlMb2FkZXIpXCIgW25vRGF0YUltYWdlXT1cIkNETl9MSU5LPy5ub0RhdGFcIiBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiPjwvYXBwLW5vLWRhdGE+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxhcHAtbm8tZGF0YSAqbmdJZj1cIighaXNDYXRlZ29yeUxvYWRlciAmJiAhY2F0ZWdvcmllc0xpc3Q/Lmxlbmd0aClcIiBbbm9EYXRhSW1hZ2VdPVwiQ0ROX0xJTks/Lm5vRGF0YVwiIFtub0RhdGFUZXh0XT1cIidObyBkYXRhIHRvIGRpc3BsYXknXCI+PC9hcHAtbm8tZGF0YT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YXBwLWZsb2F0aW5nLWJhciAgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCIgKGNsb3NlRXZlbnQpPVwic2F2ZSgpXCIgPjwvYXBwLWZsb2F0aW5nLWJhcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3Rpbmcvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3Rpbmcvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUV2SCxPQUFPLEVBQUUs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ZUFBZTt3QkFDZixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IsaUNBQWlDO3dCQUNqQyxnQkFBZ0I7d0JBQ2hCLFlBQVk7cUJBQ2IsVUFHTyxDQUFDLGFBQWEsQ0FBQyxXQUNkLENBQUMsZ0JBQWdCLENBQUM7aUdBd0JNLHNCQUFzQjtzQkFBdEQsS0FBSzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmxvYXRpbmdCYXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2Zsb2F0aW5nLWJhci9mbG9hdGluZy1iYXIubW9kdWxlJztcclxuaW1wb3J0IHsgRm9ybWdyb3VwTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L2Zvcm1ncm91cC9mb3JtZ3JvdXAubW9kdWxlJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlJztcclxuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC90b29sdGlwL3Rvb2x0aXAubW9kdWxlJztcclxuaW1wb3J0IHsgVGFibGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtY2FyZC90YWJsZS1jYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1jYXRlZ29yeS1saXN0aW5nL2dyYy1jYXRlZ29yeS1saXN0aW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyY1Jlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nL2dyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncmMuc2VydmljZSc7XHJcbmltcG9ydCB7IFRBQkxFX0NBUkQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ3JjT2JqZWN0LmNvbnN0YW50JztcclxuaW1wb3J0IHsgTm9EYXRhTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L25vLWRhdGEvbm8tZGF0YS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jZG4tbGluay5jb25zdGFudCc7XHJcbmltcG9ydCB7IExpc3RMb2FkZXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2xpc3QtbG9hZGVyL2xpc3QtbG9hZGVyLm1vZHVsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1yaXNrLWNhdGVnb3J5LXJpc2stbGlzdGluZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBQb3BvdmVyTW9kdWxlLFxyXG4gICAgRm9ybWdyb3VwTW9kdWxlLFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIEZsb2F0aW5nQmFyTW9kdWxlLFxyXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcclxuICAgIFRhYmxlQ2FyZENvbXBvbmVudCxcclxuICAgIEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIEdyY1Jlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCxcclxuICAgIExpc3RMb2FkZXJNb2R1bGUsXHJcbiAgICBOb0RhdGFNb2R1bGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgaW5wdXRzOiBbJ3NlbGVjdGVkVGFiJ10sXHJcbiAgb3V0cHV0czogWydjbG9zZVVzZXJzTGlzdCddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmlza0NhdGVnb3J5Umlza0xpc3RpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHRhYmxlQ2FyZCA9IFRBQkxFX0NBUkQ7XHJcbiAgQ0ROX0xJTksgPSBMSU5LUztcclxuXHJcbiAgY2F0ZWdvcnlTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgcmlza1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgaXNDYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xyXG4gIGlzUmlza0xvYWRlciA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZFRhYjogbnVtYmVyID0gMTtcclxuICBjYXRlZ29yeUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xyXG4gIHNlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XHJcbiAgY2F0ZWdvcmllc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHJpc2tzTGlzdDogYW55ID0gW107XHJcbiAgYWN0aXZlQ2F0ZWdvcnk6IGFueSA9IHt9O1xyXG4gIHJpc2tDdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuICBzZWxlY3RlZENhdEFuZFJpc2s6IGFueSA9IFtdO1xyXG4gIHByZVNlbGVjdGVkQ2F0QW5kUmlzazogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRDYXRlZ29yeUlkczogYW55ID0gW107XHJcblxyXG4gIEBJbnB1dCgnc2VsZWN0ZWRDYXRBbmRSaXNrJykgc2V0IHNlbGVjdGVkQ2F0QW5kUmlza0RhdGEodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENhdEFuZFJpc2sgPSB2YWx1ZTtcclxuICAgIHRoaXMucHJlU2VsZWN0ZWRDYXRBbmRSaXNrID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gICAgdGhpcy5nZXRTZWxlY3RlZENhdGVnb3JpZXNJZCh0aGlzLnNlbGVjdGVkQ2F0QW5kUmlzayk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVVzZXJzTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcclxuICAgIH0sIDMwMCk7XHJcbiAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XHJcbiAgICB0aGlzLmdldENhdGVnb3JpZXNDb3VudCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRUYWIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRhYiA9IGV2ZW50Py50eXBlO1xyXG4gICAgdGhpcy5jYXRlZ29yeUN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3JpZXNMaXN0KCkge1xyXG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5jYXRlZ29yeVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgbGV0IHF1ZXJ5UGFyYW0gPSB7XHJcbiAgICAgIHBhZ2VObzogdGhpcy5jYXRlZ29yeUN1cnJlbnRQYWdlID8/IDEsXHJcbiAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgPz8gJycsXHJcbiAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRUYWIgPz8gMSxcclxuICAgIH07XHJcbiAgICB0aGlzLmlzQ2F0ZWdvcnlMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5jYXRlZ29yeVN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JjU2VydmljZVxyXG4gICAgICAuZ2V0Umlza0NhdGVnb3JpZXMocXVlcnlQYXJhbSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3QgPSByZXM/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIC4uLmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgIG5hbWU6IGNhdGVnb3J5Py5jYXRlZ29yeV9uYW1lLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnJpc2tDdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yaWVzTGlzdD8ubGVuZ3RoXHJcbiAgICAgICAgICAgID8gdGhpcy5jYXRlZ29yaWVzTGlzdFswXVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgdGhpcy5nZXRSaXNrTGlzdCgpO1xyXG4gICAgICAgICAgdGhpcy5pc0NhdGVnb3J5TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNDYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3JpZXNDb3VudCgpIHtcclxuICAgIGxldCBxdWVyeVBhcmFtID0ge1xyXG4gICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuc2VhcmNoU3RyaW5nID8/ICcnLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JjU2VydmljZS5nZXRSaXNrQ2F0ZWdvcmllc0NvdW50KHF1ZXJ5UGFyYW0pLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJsZUNhcmQgPSByZXMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5jYXRlZ29yeVR5cGVOYW1lLFxyXG4gICAgICAgICAgICBjb3VudDogaXRlbT8uY2F0ZWdvcnlDb3VudCxcclxuICAgICAgICAgICAgdHlwZTogaXRlbT8uY2F0ZWdvcnlUeXBlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgKGVycjogYW55KSA9PiB7fVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFJpc2tMaXN0KGNsaWNrZWRUeXBlPzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5yaXNrU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucmlza1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIHA6IHRoaXMucmlza0N1cnJlbnRQYWdlID8/IDEsXHJcbiAgICAgIHE6IHRoaXMuc2VhcmNoU3RyaW5nID8/ICcnLFxyXG4gICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkVGFiID8/IDEsXHJcbiAgICAgIHNvdXJjZTogJ3Jpc2tfY2F0ZWdvcnknLFxyXG4gICAgICBjYXRlZ29yeV9pZDogdGhpcy5hY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlfaWQgPz8gW10sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5yaXNrU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlLmdldFJpc2tzKHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yaXNrc0xpc3QgPSB0aGlzLnNldERhdGFMaXN0U3RydWN0dXJlKHJlcyk7XHJcbiAgICAgICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldERhdGFMaXN0U3RydWN0dXJlKHJlczogYW55KSB7XHJcbiAgICBjb25zdCBkYXRhID0gcmVzPy5tYXAoKHJpc2s6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnJpc2ssXHJcbiAgICAgICAgbmFtZTogcmlzaz8uUmlza05hbWUsXHJcbiAgICAgICAgY29udHJvbElkOiByaXNrPy5SaXNrQ29udHJvbElkLFxyXG4gICAgICAgIF9pZDogcmlzaz8uRW5jcnlwdGVkUmlza0lkLFxyXG4gICAgICAgIGVudHJ1c3RlZEJ5OiB7XHJcbiAgICAgICAgICBuYW1lOiByaXNrPy5NZW1iZXJOYW1lLFxyXG4gICAgICAgICAgZW1haWw6IHJpc2s/Lk1lbWJlckVtYWlsLFxyXG4gICAgICAgICAgcHJvZmlsZVBpYzogcmlzaz8uTWVtYmVyUHJvZmlsZVBpYyA/PyAnJyxcclxuICAgICAgICAgIHNob3J0TmFtZTogcmlzaz8uTWVtYmVyU29ydE5hbWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnRydXN0ZWRUbzoge30sXHJcbiAgICAgICAgd2l0aGluRGF0YTogcmlzaz8uRW50aXR5Py5tYXAoKHdpdGhpbjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBuYW1lOiB3aXRoaW4/LnJjX25hbWUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZVNlbGVjdGVkQ2F0ZWdvcnkoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVDYXRlZ29yeSA9IGV2ZW50Py5jYXRlZ29yeTtcclxuICAgIHRoaXMucmlza0N1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuZ2V0Umlza0xpc3QoZXZlbnQ/LmNsaWNrZWRUeXBlKTtcclxuICB9XHJcblxyXG4gIGdldFVwZGF0ZWREYXRhTGlzdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJpc2tDdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm87XHJcbiAgICB0aGlzLmdldFJpc2tMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRUb3RhbFJpc2tQYWdlKCkge1xyXG4gICAgY29uc3QgdG90YWxQYWdlID1cclxuICAgICAgdGhpcy5hY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrQ291bnQgL1xyXG4gICAgICB0aGlzLmFjdGl2ZUNhdGVnb3J5Py5jYXRlZ29yeVJpc2tMaW1pdDtcclxuICAgIHJldHVybiBNYXRoLmNlaWwoTWF0aC5hYnModG90YWxQYWdlKSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTZWFyY2goZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQ7XHJcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzQ291bnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5jbG9zZVVzZXJzTGlzdC5lbWl0KHRoaXMucHJlU2VsZWN0ZWRDYXRBbmRSaXNrKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLmNsb3NlVXNlcnNMaXN0LmVtaXQodGhpcy5zZWxlY3RlZENhdEFuZFJpc2spO1xyXG4gIH1cclxuXHJcbiAgb25DYXRlZ29yeVBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jYXRlZ29yeUN1cnJlbnRQYWdlID0gZXZlbnQ/LnBhZ2VObztcclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNlbGVjdGVkQ2F0QW5kUmlzayhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2F0QW5kUmlzayA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRTZWxlY3RlZENhdGVnb3JpZXNJZCh0aGlzLnNlbGVjdGVkQ2F0QW5kUmlzayk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZENhdGVnb3JpZXNJZChzZWxlY3RlZERhdGE6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWRzID0gW107XHJcbiAgICBzZWxlY3RlZERhdGE/LmZvckVhY2goKHNlbGVjdGVkOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWRzPy5wdXNoKHNlbGVjdGVkPy5jYXRlZ29yeT8uX2lkKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmdcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaXNrLWNhdGVnb3J5LXJpc2stbGlzdGluZy1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5TZWxlY3QgUmlza3M8L2gzPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLWJvZHlcIj5cclxuICAgICAgICA8YXBwLXRhYmxlLWNhcmQgY2xhc3M9XCJ2eC13LTEwMFwiIFt0YWJsZUNhcmRdPVwidGFibGVDYXJkXCIgW3NpbmdsZVNlbGVjdGVkVGV4dF09XCInQ2F0ZWdvcnkgU2VsZWN0ZWQnXCIgW211bHRpcGxlU2VsZWN0ZWRUZXh0XT1cIidDYXRlZ29yaWVzIFNlbGVjdGVkJ1wiIChzZXRTZWxlY3RlZFRhYik9XCJzZXRTZWxlY3RlZFRhYigkZXZlbnQpXCIgW3NlbGVjdGVkVGFiXT1cIjFcIj48L2FwcC10YWJsZS1jYXJkPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2sgdngtbWItMlwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgICNzZWFyY2hSaXNrQ2F0ZWdvcnkgKGtleXVwLmVudGVyKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFJpc2sgQ2F0ZWdvcmllc1wiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLWJvZHktaW5uZXIgdngtbWItMiB2eC1kLWZsZXhcIiBbY2xhc3Mud2l0aC1ub0RhdGFdPVwiKCFpc0NhdGVnb3J5TG9hZGVyICYmICFjYXRlZ29yaWVzTGlzdD8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDYXRlZ29yeUxvYWRlciB8fCBjYXRlZ29yaWVzTGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItaXRlbS1sZWZ0IHZ4LXByLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWdyYy1jYXRlZ29yeS1saXN0aW5nICpuZ0lmPVwiIWlzQ2F0ZWdvcnlMb2FkZXJcIiBbaGVhZGVyVGV4dF09XCInUmlzayBDYXRlZ29yaWVzJ1wiIFtjYXRlZ29yaWVzXT1cImNhdGVnb3JpZXNMaXN0XCIgIFtzZWxlY3RlZENhdEFuZFJpc2tdPVwic2VsZWN0ZWRDYXRBbmRSaXNrXCIgW3RhYmxlQ2FyZF09XCJ0YWJsZUNhcmRcIiBbY3VycmVudFBhZ2VdPVwiY2F0ZWdvcnlDdXJyZW50UGFnZVwiIFtzZWxlY3RlZFRhYkluZGV4XT1cInNlbGVjdGVkVGFiXCIgW3NlbGVjdGVkQ2F0ZWdvcnlJZHNdPVwic2VsZWN0ZWRDYXRlZ29yeUlkc1wiIChhY3RpdmVTZWxlY3RlZENhdGVnb3J5KT1cImFjdGl2ZVNlbGVjdGVkQ2F0ZWdvcnkoJGV2ZW50KVwiIChvbkNhdGVnb3J5UGFnZUNoYW5nZSk9XCJvbkNhdGVnb3J5UGFnZUNoYW5nZSgkZXZlbnQpXCI+PC9hcHAtZ3JjLWNhdGVnb3J5LWxpc3Rpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1saXN0LWxvYWRlciAqbmdJZj1cImlzQ2F0ZWdvcnlMb2FkZXJcIj48L2FwcC1saXN0LWxvYWRlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlubmVyLWl0ZW0tcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWdyYy1yZXNwb25zaWJpbGl0eS1saXN0aW5nICpuZ0lmPVwiIWlzUmlza0xvYWRlciAmJiAhaXNDYXRlZ29yeUxvYWRlciAmJiByaXNrc0xpc3Q/Lmxlbmd0aFwiIFtoZWFkZXJUZXh0XT1cIidSaXNrIE5hbWUnXCIgW2RhdGFMaXN0XT1cInJpc2tzTGlzdFwiIFthY3RpdmVDYXRlZ29yeV09XCJhY3RpdmVDYXRlZ29yeVwiIFtzZWxlY3RlZENhdEFuZFJpc2tdPVwic2VsZWN0ZWRDYXRBbmRSaXNrXCIgKGNoYW5nZVNlbGVjdGVkQ2F0QW5kUmlzayk9XCJjaGFuZ2VTZWxlY3RlZENhdEFuZFJpc2soJGV2ZW50KVwiIFtjdXJyZW50UGFnZV09XCJyaXNrQ3VycmVudFBhZ2VcIiBbcGVyUGFnZUxpbWl0XT1cImFjdGl2ZUNhdGVnb3J5Py5jYXRlZ29yeVJpc2tMaW1pdFwiIFt0b3RhbExpc3REYXRhXT1cImFjdGl2ZUNhdGVnb3J5Py5jYXRlZ29yeVJpc2tDb3VudFwiIFt0b3RhbFBhZ2VzXT1cImdldFRvdGFsUmlza1BhZ2UoKVwiIChnZXRVcGRhdGVkRGF0YUxpc3QpPVwiZ2V0VXBkYXRlZERhdGFMaXN0KCRldmVudClcIiA+PC9hcHAtZ3JjLXJlc3BvbnNpYmlsaXR5LWxpc3Rpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1saXN0LWxvYWRlciAqbmdJZj1cImlzUmlza0xvYWRlciB8fCBpc0NhdGVnb3J5TG9hZGVyXCI+PC9hcHAtbGlzdC1sb2FkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1uby1kYXRhICpuZ0lmPVwicmlza3NMaXN0Py5sZW5ndGggPT09IDAgJiYgIShpc1Jpc2tMb2FkZXIgfHwgaXNDYXRlZ29yeUxvYWRlcilcIiBbbm9EYXRhSW1hZ2VdPVwiQ0ROX0xJTks/Lm5vRGF0YVwiIFtub0RhdGFUZXh0XT1cIidObyBkYXRhIHRvIGRpc3BsYXknXCI+PC9hcHAtbm8tZGF0YT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGFwcC1uby1kYXRhICpuZ0lmPVwiKCFpc0NhdGVnb3J5TG9hZGVyICYmICFjYXRlZ29yaWVzTGlzdD8ubGVuZ3RoKVwiIFtub0RhdGFJbWFnZV09XCJDRE5fTElOSz8ubm9EYXRhXCIgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIj48L2FwcC1uby1kYXRhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtZmxvYXRpbmctYmFyICAoY2xvc2VMaXN0KT1cImNsb3NlKClcIiAoY2xvc2VFdmVudCk9XCJzYXZlKClcIiA+PC9hcHAtZmxvYXRpbmctYmFyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==