@dignite-ng/expand.cms 0.0.22 → 0.0.24

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 (162) hide show
  1. package/esm2022/config/cms-config.module.mjs +6 -7
  2. package/esm2022/config/dignite-ng-expand.cms-config.mjs +1 -1
  3. package/esm2022/config/enums/index.mjs +1 -1
  4. package/esm2022/config/enums/route-names.mjs +1 -1
  5. package/esm2022/config/providers/index.mjs +1 -1
  6. package/esm2022/config/providers/route.provider.mjs +1 -1
  7. package/esm2022/config/public-api.mjs +1 -1
  8. package/esm2022/dignite-ng-expand.cms.mjs +1 -1
  9. package/esm2022/lib/cms-routing.module.mjs +6 -8
  10. package/esm2022/lib/cms.module.mjs +19 -52
  11. package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +40 -48
  12. package/esm2022/lib/components/admin/entries/create-or-update-entry-input-base.mjs +20 -20
  13. package/esm2022/lib/components/admin/entries/create.component.mjs +22 -27
  14. package/esm2022/lib/components/admin/entries/edit.component.mjs +28 -36
  15. package/esm2022/lib/components/admin/entries/entries.component.mjs +42 -48
  16. package/esm2022/lib/components/admin/entries/index.mjs +1 -1
  17. package/esm2022/lib/components/admin/fields/create-field.component.mjs +16 -21
  18. package/esm2022/lib/components/admin/fields/create-or-edit-field.component.mjs +12 -22
  19. package/esm2022/lib/components/admin/fields/create-or-update-field-input-base.mjs +13 -13
  20. package/esm2022/lib/components/admin/fields/edit-field.component.mjs +19 -27
  21. package/esm2022/lib/components/admin/fields/field-group.component.mjs +23 -30
  22. package/esm2022/lib/components/admin/fields/fields.component.mjs +23 -27
  23. package/esm2022/lib/components/admin/fields/index.mjs +1 -1
  24. package/esm2022/lib/components/admin/index.mjs +1 -1
  25. package/esm2022/lib/components/admin/sections/create-or-update-sections-input-base.mjs +15 -15
  26. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.mjs +26 -26
  27. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +42 -71
  28. package/esm2022/lib/components/admin/sections/entry-types/index.mjs +1 -1
  29. package/esm2022/lib/components/admin/sections/index.mjs +1 -1
  30. package/esm2022/lib/components/admin/sections/sections.component.mjs +33 -46
  31. package/esm2022/lib/components/admin/sites/create-or-update-sites-input-base.mjs +6 -11
  32. package/esm2022/lib/components/admin/sites/index.mjs +1 -1
  33. package/esm2022/lib/components/admin/sites/sites.component.mjs +26 -47
  34. package/esm2022/lib/components/dynamic-form/entry/entry-config.component.mjs +17 -28
  35. package/esm2022/lib/components/dynamic-form/entry/entry-config.mjs +7 -7
  36. package/esm2022/lib/components/dynamic-form/entry/entry-control.component.mjs +13 -24
  37. package/esm2022/lib/components/dynamic-form/entry/index.mjs +1 -1
  38. package/esm2022/lib/components/dynamic-form/form-control-group.mjs +1 -4
  39. package/esm2022/lib/components/dynamic-form/index.mjs +1 -1
  40. package/esm2022/lib/components/dynamic-form/matrix/index.mjs +1 -1
  41. package/esm2022/lib/components/dynamic-form/matrix/matrix-config.component.mjs +19 -37
  42. package/esm2022/lib/components/dynamic-form/matrix/matrix-config.mjs +16 -16
  43. package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +12 -28
  44. package/esm2022/lib/components/dynamic-form/table/index.mjs +1 -1
  45. package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +14 -36
  46. package/esm2022/lib/components/dynamic-form/table/table-config.mjs +15 -15
  47. package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +11 -25
  48. package/esm2022/lib/components/index.mjs +1 -1
  49. package/esm2022/lib/constants/styles.mjs +4 -29
  50. package/esm2022/lib/enums/ecms-component.mjs +1 -1
  51. package/esm2022/lib/enums/index.mjs +1 -1
  52. package/esm2022/lib/proxy/admin/dynamic-forms/form-admin.service.mjs +12 -13
  53. package/esm2022/lib/proxy/admin/dynamic-forms/index.mjs +1 -1
  54. package/esm2022/lib/proxy/admin/dynamic-forms/models.mjs +1 -1
  55. package/esm2022/lib/proxy/admin/entries/entry-admin.service.mjs +55 -56
  56. package/esm2022/lib/proxy/admin/entries/index.mjs +1 -1
  57. package/esm2022/lib/proxy/admin/entries/models.mjs +1 -1
  58. package/esm2022/lib/proxy/admin/fields/field-admin.service.mjs +35 -36
  59. package/esm2022/lib/proxy/admin/fields/field-group-admin.service.mjs +31 -32
  60. package/esm2022/lib/proxy/admin/fields/index.mjs +1 -1
  61. package/esm2022/lib/proxy/admin/fields/models.mjs +1 -1
  62. package/esm2022/lib/proxy/admin/sections/entry-type-admin.service.mjs +31 -32
  63. package/esm2022/lib/proxy/admin/sections/index.mjs +1 -1
  64. package/esm2022/lib/proxy/admin/sections/models.mjs +1 -1
  65. package/esm2022/lib/proxy/admin/sections/section-admin.service.mjs +41 -42
  66. package/esm2022/lib/proxy/admin/sites/index.mjs +1 -1
  67. package/esm2022/lib/proxy/admin/sites/models.mjs +1 -1
  68. package/esm2022/lib/proxy/admin/sites/site-admin.service.mjs +39 -40
  69. package/esm2022/lib/proxy/dignite/abp/data/index.mjs +1 -1
  70. package/esm2022/lib/proxy/dignite/abp/data/models.mjs +1 -1
  71. package/esm2022/lib/proxy/entries/entry-status.enum.mjs +1 -1
  72. package/esm2022/lib/proxy/entries/index.mjs +1 -1
  73. package/esm2022/lib/proxy/fields/models.mjs +1 -1
  74. package/esm2022/lib/proxy/sections/index.mjs +1 -1
  75. package/esm2022/lib/proxy/sections/models.mjs +1 -1
  76. package/esm2022/lib/proxy/sections/section-type.enum.mjs +1 -1
  77. package/esm2022/lib/proxy/sites/models.mjs +1 -1
  78. package/esm2022/lib/proxy/volo/cms-kit/users/models.mjs +1 -1
  79. package/esm2022/lib/services/appent-content.mjs +1 -1
  80. package/esm2022/lib/services/cms-api.service.mjs +7 -8
  81. package/esm2022/lib/services/cms.service.mjs +8 -9
  82. package/esm2022/lib/services/field-abstracts.service.mjs +12 -13
  83. package/esm2022/lib/services/index.mjs +1 -1
  84. package/esm2022/lib/services/simple-reuse-strategy.mjs +4 -2
  85. package/esm2022/lib/services/update-list.service.mjs +9 -9
  86. package/esm2022/lib/toolbar/index.mjs +1 -1
  87. package/esm2022/lib/toolbar/toolbar-btn-default-action.mjs +1 -1
  88. package/esm2022/lib/toolbar/toolbar-config.mjs +1 -2
  89. package/esm2022/public-api.mjs +5 -8
  90. package/fesm2022/dignite-ng-expand.cms-config.mjs +4 -4
  91. package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -1
  92. package/fesm2022/dignite-ng-expand.cms.mjs +701 -1286
  93. package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
  94. package/lib/cms.module.d.ts +6 -11
  95. package/lib/components/admin/entries/edit.component.d.ts +1 -3
  96. package/lib/components/admin/fields/create-or-edit-field.component.d.ts +0 -1
  97. package/lib/components/admin/sites/create-or-update-sites-input-base.d.ts +0 -4
  98. package/lib/constants/styles.d.ts +1 -1
  99. package/package.json +2 -4
  100. package/public-api.d.ts +2 -7
  101. package/esm2022/lib/constants/index.mjs +0 -2
  102. package/esm2022/lib/proxy/admin/index.mjs +0 -7
  103. package/esm2022/lib/proxy/dignite/abp/index.mjs +0 -3
  104. package/esm2022/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.mjs +0 -48
  105. package/esm2022/lib/proxy/dignite/file-explorer/directories/index.mjs +0 -3
  106. package/esm2022/lib/proxy/dignite/file-explorer/directories/models.mjs +0 -2
  107. package/esm2022/lib/proxy/dignite/file-explorer/files/file-descriptor.service.mjs +0 -60
  108. package/esm2022/lib/proxy/dignite/file-explorer/files/index.mjs +0 -3
  109. package/esm2022/lib/proxy/dignite/file-explorer/files/models.mjs +0 -2
  110. package/esm2022/lib/proxy/dignite/file-explorer/index.mjs +0 -4
  111. package/esm2022/lib/proxy/dignite/index.mjs +0 -4
  112. package/esm2022/lib/proxy/fields/index.mjs +0 -2
  113. package/esm2022/lib/proxy/index.mjs +0 -10
  114. package/esm2022/lib/proxy/microsoft/asp-net-core/index.mjs +0 -3
  115. package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/index.mjs +0 -2
  116. package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/models.mjs +0 -2
  117. package/esm2022/lib/proxy/microsoft/extensions/index.mjs +0 -3
  118. package/esm2022/lib/proxy/microsoft/extensions/primitives/index.mjs +0 -2
  119. package/esm2022/lib/proxy/microsoft/extensions/primitives/models.mjs +0 -2
  120. package/esm2022/lib/proxy/microsoft/index.mjs +0 -5
  121. package/esm2022/lib/proxy/microsoft/net/http/headers/index.mjs +0 -2
  122. package/esm2022/lib/proxy/microsoft/net/http/headers/models.mjs +0 -2
  123. package/esm2022/lib/proxy/microsoft/net/http/index.mjs +0 -3
  124. package/esm2022/lib/proxy/microsoft/net/index.mjs +0 -3
  125. package/esm2022/lib/proxy/sites/index.mjs +0 -2
  126. package/esm2022/lib/proxy/volo/abp/content/index.mjs +0 -2
  127. package/esm2022/lib/proxy/volo/abp/content/models.mjs +0 -2
  128. package/esm2022/lib/proxy/volo/abp/index.mjs +0 -3
  129. package/esm2022/lib/proxy/volo/cms-kit/index.mjs +0 -3
  130. package/esm2022/lib/proxy/volo/cms-kit/users/index.mjs +0 -2
  131. package/esm2022/lib/proxy/volo/index.mjs +0 -4
  132. package/lib/constants/index.d.ts +0 -1
  133. package/lib/proxy/admin/index.d.ts +0 -6
  134. package/lib/proxy/dignite/abp/index.d.ts +0 -2
  135. package/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.d.ts +0 -17
  136. package/lib/proxy/dignite/file-explorer/directories/index.d.ts +0 -2
  137. package/lib/proxy/dignite/file-explorer/directories/models.d.ts +0 -29
  138. package/lib/proxy/dignite/file-explorer/files/file-descriptor.service.d.ts +0 -20
  139. package/lib/proxy/dignite/file-explorer/files/index.d.ts +0 -2
  140. package/lib/proxy/dignite/file-explorer/files/models.d.ts +0 -50
  141. package/lib/proxy/dignite/file-explorer/index.d.ts +0 -3
  142. package/lib/proxy/dignite/index.d.ts +0 -3
  143. package/lib/proxy/fields/index.d.ts +0 -1
  144. package/lib/proxy/index.d.ts +0 -9
  145. package/lib/proxy/microsoft/asp-net-core/index.d.ts +0 -2
  146. package/lib/proxy/microsoft/asp-net-core/mvc/index.d.ts +0 -1
  147. package/lib/proxy/microsoft/asp-net-core/mvc/models.d.ts +0 -10
  148. package/lib/proxy/microsoft/extensions/index.d.ts +0 -2
  149. package/lib/proxy/microsoft/extensions/primitives/index.d.ts +0 -1
  150. package/lib/proxy/microsoft/extensions/primitives/models.d.ts +0 -8
  151. package/lib/proxy/microsoft/index.d.ts +0 -4
  152. package/lib/proxy/microsoft/net/http/headers/index.d.ts +0 -1
  153. package/lib/proxy/microsoft/net/http/headers/models.d.ts +0 -6
  154. package/lib/proxy/microsoft/net/http/index.d.ts +0 -2
  155. package/lib/proxy/microsoft/net/index.d.ts +0 -2
  156. package/lib/proxy/sites/index.d.ts +0 -1
  157. package/lib/proxy/volo/abp/content/index.d.ts +0 -1
  158. package/lib/proxy/volo/abp/content/models.d.ts +0 -5
  159. package/lib/proxy/volo/abp/index.d.ts +0 -2
  160. package/lib/proxy/volo/cms-kit/index.d.ts +0 -2
  161. package/lib/proxy/volo/cms-kit/users/index.d.ts +0 -1
  162. package/lib/proxy/volo/index.d.ts +0 -3
@@ -1,6 +1,7 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
1
+ import { Component, ElementRef, Input, ViewChild, } from '@angular/core';
2
+ import { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
3
3
  import { MatrixConfig, MatrixItemConfig } from './matrix-config';
4
+ import { CmsApiService, FieldAbstractsService } from '../../../services';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/forms";
6
7
  import * as i2 from "../../../services";
@@ -10,40 +11,36 @@ import * as i5 from "@ngx-validate/core";
10
11
  import * as i6 from "@abp/ng.theme.shared";
11
12
  import * as i7 from "@ng-bootstrap/ng-bootstrap";
12
13
  import * as i8 from "@dignite-ng/expand.dynamic-form";
13
- // import { CreateDynamicComponentsService, DfApiService, } from '../../../services';
14
- // import { getExcludeAssignControl } from '../form-control-group';
15
- class MatrixConfigComponent {
16
- fb;
17
- _CmsApiService;
18
- _FieldAbstractsService;
14
+ export class MatrixConfigComponent {
19
15
  constructor(fb, _CmsApiService, _FieldAbstractsService) {
20
16
  this.fb = fb;
21
17
  this._CmsApiService = _CmsApiService;
22
18
  this._FieldAbstractsService = _FieldAbstractsService;
19
+ /**模态框-状态 */
20
+ this.matrixModalOpen = false;
21
+ /**模态框-是否正在编辑 */
22
+ this.isMatrixModalEdit = false;
23
+ /**模态框-用于确定模态的繁忙状态是否为真 */
24
+ this.modalBusy = false;
25
+ /**矩阵块-选择的下标 */
26
+ this.selectMatrixBlockIndex = 0;
27
+ /**矩阵块-选择的矩阵下字段的下标 */
28
+ this.selectMatrixFieldIndex = 0;
23
29
  }
24
- /**表单控件组 */
25
- _FieldControlGroup;
26
- /**表单控件类型 */
27
- _type;
28
30
  set type(v) {
29
31
  this._type = v;
30
32
  this.dataLoaded();
31
33
  }
32
- /**表单实体 */
33
- _Entity;
34
34
  set Entity(v) {
35
35
  this._Entity = v;
36
36
  this.dataLoaded();
37
37
  }
38
- /**选择的表单信息 */
39
- _selected;
40
38
  set selected(v) {
41
39
  if (v) {
42
40
  this._selected = v;
43
41
  this.dataLoaded();
44
42
  }
45
43
  }
46
- submitclick;
47
44
  async dataLoaded() {
48
45
  if (this._Entity && this._type) {
49
46
  await this.AfterInit();
@@ -80,20 +77,6 @@ class MatrixConfigComponent {
80
77
  get MatrixBlockTypes() {
81
78
  return this.formConfiguration.controls['MatrixBlockTypes'];
82
79
  }
83
- /**模态框-状态 */
84
- matrixModalOpen = false;
85
- /**模态框-是否正在编辑 */
86
- isMatrixModalEdit = false;
87
- /**模态框-用于确定模态的繁忙状态是否为真 */
88
- modalBusy = false;
89
- /**模态框-表单 */
90
- matrixModalForm;
91
- /**表单控件模板-用于在form外提交submit */
92
- matrixModalModalSubmit;
93
- /**矩阵块-选择的下标 */
94
- selectMatrixBlockIndex = 0;
95
- /**矩阵块-选择的矩阵下字段的下标 */
96
- selectMatrixFieldIndex = 0;
97
80
  /**模态框-状态改变 */
98
81
  matrixModalVisibleChange(event) {
99
82
  if (!event) {
@@ -206,14 +189,13 @@ class MatrixConfigComponent {
206
189
  return;
207
190
  FieldnameInput.patchValue(pinyin);
208
191
  }
209
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixConfigComponent, deps: [{ token: i1.FormBuilder }, { token: i2.CmsApiService }, { token: i2.FieldAbstractsService }], target: i0.ɵɵFactoryTarget.Component });
210
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MatrixConfigComponent, selector: "df-matrix-config", inputs: { type: "type", Entity: "Entity", selected: "selected" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "matrixModalModalSubmit", first: true, predicate: ["matrixModalModalSubmit"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let itemf of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\" (change)=\"setConfigComponent()\">\n <ng-container *ngFor=\"let itemC of _FieldControlGroup;let i =index\">\n <option [value]=\"itemC.name\">{{itemC.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <ng-container *ngIf=\"itemf.value.formControlName&&item\">\n <df-dynamic [type]=\"itemf.value.formControlName\" [entity]=\"item\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i4.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i5.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i6.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i8.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "entity", "culture", "parentFiledName", "fields"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] });
192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: MatrixConfigComponent, deps: [{ token: i1.FormBuilder }, { token: i2.CmsApiService }, { token: i2.FieldAbstractsService }], target: i0.ɵɵFactoryTarget.Component }); }
193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: MatrixConfigComponent, selector: "df-matrix-config", inputs: { type: "type", Entity: "Entity", selected: "selected" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "matrixModalModalSubmit", first: true, predicate: ["matrixModalModalSubmit"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let itemf of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\" (change)=\"setConfigComponent()\">\n <ng-container *ngFor=\"let itemC of _FieldControlGroup;let i =index\">\n <option [value]=\"itemC.name\">{{itemC.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <ng-container *ngIf=\"itemf.value.formControlName&&item\">\n <df-dynamic [type]=\"itemf.value.formControlName\" [entity]=\"item\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i4.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i5.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i6.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i6.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i6.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i7.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "component", type: i8.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "entity", "culture", "parentFiledName", "fields"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] }); }
211
194
  }
212
- export { MatrixConfigComponent };
213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatrixConfigComponent, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: MatrixConfigComponent, decorators: [{
214
196
  type: Component,
215
197
  args: [{ selector: 'df-matrix-config', template: "<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::::FormControl:Matrix' | abpLocalization}}</label>\n <div class=\"row\">\n <div class=\"col-md-3\">\n <div class=\"list-group\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::MatrixBlockType' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixBlockType()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixBlockChange(i)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"i===selectMatrixBlockIndex\">\n <div>\n <div>{{item.value.displayName}}</div>\n <div>{{item.value.name}}</div>\n </div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-light btn-sm\" id=\"dropdownBasic1\"\n style=\"z-index: 8;\" ngbDropdownToggle></button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\" style=\"z-index: 9;\">\n <button ngbDropdownItem\n (click.stop)=\"EditMatrixBlock(item.value)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"DeleteMatrixBlock(i)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </button>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"list-group\" *ngIf=\"MatrixBlockTypes?.controls.length>0\">\n <li class=\"list-group-item d-flex align-items-center justify-content-between\"\n aria-current=\"true\">\n {{'Cms::Fields' | abpLocalization}}\n <button class=\"btn btn-light btn-sm p-0\" (click.stop)=\"addMatrixField()\">\n <i class=\"fas fa-plus-circle p-1\"></i>\n </button>\n </li>\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <ng-container *ngIf=\"i === selectMatrixBlockIndex\">\n <ng-container *ngFor=\"let el of item.controls['fields'].controls;let fi =index\">\n <button type=\"button\" (click.stop)=\"selectMatrixFieldChange(i,fi)\"\n class=\"list-group-item d-flex align-items-center justify-content-between list-group-item-action \"\n [class.active]=\"fi===selectMatrixFieldIndex\">\n <div>\n <div>{{el.value.displayName}}</div>\n <div>{{el.value.name}}</div>\n </div>\n <button type=\"button\"\n (click.stop)=\"deleteMatrixField(item.controls['fields'],fi)\"\n class=\"btn btn-sm btn-li\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-6\" formArrayName=\"MatrixBlockTypes\">\n <ng-container *ngFor=\"let item of MatrixBlockTypes.controls;let i =index\">\n <div [formGroupName]=\"i\" [hidden]=\"i !== selectMatrixBlockIndex\">\n <div formArrayName=\"fields\">\n <ng-container *ngFor=\"let itemf of item.controls['fields'].controls;let fi =index\">\n <div [formGroupName]=\"fi\" [hidden]=\"fi !== selectMatrixFieldIndex\">\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"MatrixFieldDisplayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"name\">{{'DigniteAbpForms::FieldName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n <div class=\"form-text\">\n {{'DigniteAbpForms::FieldNameHelpText' | abpLocalization}}</div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"description\">{{'Cms::Description' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"description\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\"\n for=\"formControlName\">{{'Cms::FieldType' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"formControlName\" (change)=\"setConfigComponent()\">\n <ng-container *ngFor=\"let itemC of _FieldControlGroup;let i =index\">\n <option [value]=\"itemC.name\">{{itemC.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <ng-container *ngIf=\"itemf.value.formControlName&&item\">\n <df-dynamic [type]=\"itemf.value.formControlName\" [entity]=\"item\"\n [selected]=\"_selected?_selected['formConfiguration']['MatrixBlockTypes'][i]['fields'][fi]:''\"></df-dynamic>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n\n </div>\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>\n\n\n\n<abp-modal [(visible)]=\"matrixModalOpen\" [busy]=\"modalBusy\" (visibleChange)=\"matrixModalVisibleChange($event)\" >\n <ng-template #abpHeader>\n <h3>{{isMatrixEdit?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"matrixModalForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"matrixModalForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #matrixModalModalSubmit style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"displayName\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"displayNameInputBlur($event)\">\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"name\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"matrixModalModalSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>" }]
216
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.CmsApiService }, { type: i2.FieldAbstractsService }]; }, propDecorators: { type: [{
198
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.CmsApiService }, { type: i2.FieldAbstractsService }], propDecorators: { type: [{
217
199
  type: Input
218
200
  }], Entity: [{
219
201
  type: Input
@@ -226,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
226
208
  type: ViewChild,
227
209
  args: ['matrixModalModalSubmit', { static: false }]
228
210
  }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9tYXRyaXgvbWF0cml4LWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9tYXRyaXgvbWF0cml4LWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFzQixLQUFLLEVBQWEsU0FBUyxFQUEwQyxNQUFNLGVBQWUsQ0FBQztBQUNuSSxPQUFPLEVBQUUsU0FBUyxFQUFlLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBRWpFLHFGQUFxRjtBQUNyRixtRUFBbUU7QUFFbkUsTUFLYSxxQkFBcUI7SUFHdEI7SUFDQTtJQUNBO0lBSFYsWUFDVSxFQUFlLEVBQ2YsY0FBNkIsRUFDN0Isc0JBQTZDO1FBRjdDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO0lBQ25ELENBQUM7SUFFTCxXQUFXO0lBQ1gsa0JBQWtCLENBQU87SUFDekIsWUFBWTtJQUNaLEtBQUssQ0FBSztJQUNWLElBQ1csSUFBSSxDQUFDLENBQU07UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUNELFVBQVU7SUFDVixPQUFPLENBQXVCO0lBQzlCLElBQ1csTUFBTSxDQUFD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QUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEwRGMsc0JBQXNCO3NCQUE3RSxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0cml4Q29uZmlnLCBNYXRyaXhJdGVtQ29uZmlnIH0gZnJvbSAnLi9tYXRyaXgtY29uZmlnJztcbmltcG9ydCB7IENtc0FwaVNlcnZpY2UsIEZpZWxkQWJzdHJhY3RzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbi8vIGltcG9ydCB7IENyZWF0ZUR5bmFtaWNDb21wb25lbnRzU2VydmljZSwgRGZBcGlTZXJ2aWNlLCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbi8vIGltcG9ydCB7IGdldEV4Y2x1ZGVBc3NpZ25Db250cm9sIH0gZnJvbSAnLi4vZm9ybS1jb250cm9sLWdyb3VwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGYtbWF0cml4LWNvbmZpZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRyaXgtY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0cml4LWNvbmZpZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1hdHJpeENvbmZpZ0NvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfQ21zQXBpU2VydmljZTogQ21zQXBpU2VydmljZSxcbiAgICBwcml2YXRlIF9GaWVsZEFic3RyYWN0c1NlcnZpY2U6IEZpZWxkQWJzdHJhY3RzU2VydmljZSxcbiAgKSB7IH1cblxuICAvKirooajljZXmjqfku7bnu4QgKi9cbiAgX0ZpZWxkQ29udHJvbEdyb3VwOiBhbnlbXVxuICAvKirooajljZXmjqfku7bnsbvlnosgKi9cbiAgX3R5cGU6IGFueVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHR5cGUodjogYW55KSB7XG4gICAgdGhpcy5fdHlwZSA9IHZcbiAgICB0aGlzLmRhdGFMb2FkZWQoKVxuICB9XG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBfRW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWRcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBFbnRpdHkodjogRm9ybUdyb3VwKSB7XG4gICAgdGhpcy5fRW50aXR5ID0gdjtcbiAgICB0aGlzLmRhdGFMb2FkZWQoKVxuICB9XG5cblxuICAvKirpgInmi6nnmoTooajljZXkv6Hmga8gKi9cbiAgX3NlbGVjdGVkOiBhbnlcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZCh2OiBhbnkpIHtcblxuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHZcbiAgICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gICAgfVxuICB9XG5cblxuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuXG4gIGFzeW5jIGRhdGFMb2FkZWQoKSB7XG4gICAgaWYgKHRoaXMuX0VudGl0eSAmJiB0aGlzLl90eXBlKSB7XG4gICAgICBhd2FpdCB0aGlzLkFmdGVySW5pdCgpXG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9GaWVsZENvbnRyb2xHcm91cCA9IHRoaXMuX0ZpZWxkQWJzdHJhY3RzU2VydmljZS5nZXRFeGNsdWRlQXNzaWduQ29udHJvbCh0aGlzLl90eXBlKVxuICAgICAgdGhpcy5fRW50aXR5LnNldENvbnRyb2woJ2Zvcm1Db25maWd1cmF0aW9uJywgdGhpcy5mYi5ncm91cChuZXcgTWF0cml4Q29uZmlnKCkpKVxuICAgICAgYXdhaXQgdGhpcy5zZXRTZWxlY3RWYWx1ZSgpXG4gICAgICB0aGlzLmZvcm1Db25maWd1cmF0aW9uLnBhdGNoVmFsdWUodGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb24pXG4gICAgICByZXNvbHZlKHRydWUpXG4gICAgfSlcbiAgfVxuXG5cbiAgc2V0U2VsZWN0VmFsdWUoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWQgJiYgdGhpcy5fc2VsZWN0ZWQuZm9ybUNvbnRyb2xOYW1lID09IHRoaXMuX3R5cGUpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb25bJ01hdHJpeEJsb2NrVHlwZXMnXS5mb3JFYWNoKCgoZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRNYXRyaXhCbG9ja1R5cGVJdGVtKGVsKVxuICAgICAgICAgIGVsLmZpZWxkcy5mb3JFYWNoKChlbGYsIGluZGV4ZikgPT4ge1xuICAgICAgICAgICAgdGhpcy5hZGRNYXRyaXhGaWVsZEl0ZW0oZWxmLCBpbmRleClcbiAgICAgICAgICB9KVxuICAgICAgICB9KSlcbiAgICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgICAgfVxuICAgICAgXG4gICAgfSlcbiAgfVxuXG4gIC8qKuiOt+WPluihqOWNlemFjee9riAqL1xuICBnZXQgZm9ybUNvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX0VudGl0eS5nZXQoJ2Zvcm1Db25maWd1cmF0aW9uJykgYXMgRm9ybUdyb3VwXG4gIH1cblxuICAvKirojrflj5booajljZXphY3nva7kuIvnmoTnn6npmLXlnZfooajljZXmlbDnu4QgKi9cbiAgZ2V0IE1hdHJpeEJsb2NrVHlwZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24uY29udHJvbHNbJ01hdHJpeEJsb2NrVHlwZXMnXSBhcyBGb3JtQXJyYXlcbiAgfVxuXG5cbiAgLyoq5qih5oCB5qGGLeeKtuaAgSAqL1xuICBtYXRyaXhNb2RhbE9wZW46IGJvb2xlYW4gPSBmYWxzZVxuICAvKirmqKHmgIHmoYYt5piv5ZCm5q2j5Zyo57yW6L6RICovXG4gIGlzTWF0cml4TW9kYWxFZGl0OiBhbnkgPSBmYWxzZVxuXG4gIC8qKuaooeaAgeahhi3nlKjkuo7noa7lrprmqKHmgIHnmoTnuYHlv5nnirbmgIHmmK/lkKbkuLrnnJ8gKi9cbiAgbW9kYWxCdXN5OiBib29sZWFuID0gZmFsc2VcblxuICAvKirmqKHmgIHmoYYt6KGo5Y2VICovXG4gIG1hdHJpeE1vZGFsRm9ybTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuXG4gIC8qKuihqOWNleaOp+S7tuaooeadvy3nlKjkuo7lnKhmb3Jt5aSW5o+Q5Lqkc3VibWl0ICovXG4gIEBWaWV3Q2hpbGQoJ21hdHJpeE1vZGFsTW9kYWxTdWJtaXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgbWF0cml4TW9kYWxNb2RhbFN1Ym1pdDogRWxlbWVudFJlZjtcblxuICAvKirnn6npmLXlnZct6YCJ5oup55qE5LiL5qCHICovXG4gIHNlbGVjdE1hdHJpeEJsb2NrSW5kZXg6IGFueSA9IDBcblxuICAvKirnn6npmLXlnZct6YCJ5oup55qE55+p6Zi15LiL5a2X5q6155qE5LiL5qCHICovXG4gIHNlbGVjdE1hdHJpeEZpZWxkSW5kZXg6IGFueSA9IDBcblxuICAvKirmqKHmgIHmoYYt54q25oCB5pS55Y+YICovXG4gIG1hdHJpeE1vZGFsVmlzaWJsZUNoYW5nZShldmVudCkge1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHRoaXMuaXNNYXRyaXhNb2RhbEVkaXQgPSBmYWxzZVxuICAgICAgdGhpcy5tYXRyaXhNb2RhbEZvcm0gPSB1bmRlZmluZWRcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG5cbiAgLyoq55+p6Zi15Z2XLS3mlrDlop4t5omT5byA5qih5oCB5qGGICovXG4gIGFkZE1hdHJpeEJsb2NrVHlwZSgpIHtcbiAgICB0aGlzLm1hdHJpeE1vZGFsRm9ybSA9IHRoaXMuZmIuZ3JvdXAobmV3IE1hdHJpeEl0ZW1Db25maWcoKSlcbiAgICB0aGlzLm1hdHJpeE1vZGFsT3BlbiA9IHRydWVcbiAgfVxuXG5cblxuICAvKirmqKHmgIHmoYYtLeefqemYteihqOWNleS/neWtmOaPkOS6pCAqL1xuICBjcmVhdGVPckVkaXRTYXZlKCkge1xuICAgIGxldCBpbnB1dCA9IHRoaXMubWF0cml4TW9kYWxGb3JtLnZhbHVlXG4gICAgaWYgKCF0aGlzLm1hdHJpeE1vZGFsRm9ybS52YWxpZCkgcmV0dXJuXG4gICAgaWYgKHRoaXMuaXNNYXRyaXhNb2RhbEVkaXQpIHtcbiAgICAgIGxldCBNYXRyaXhCbG9ja1R5cGVzSXRlbSA9IHRoaXMuTWF0cml4QmxvY2tUeXBlcy5hdCh0aGlzLnNlbGVjdE1hdHJpeEJsb2NrSW5kZXgpIGFzIEZvcm1Hcm91cFxuICAgICAgTWF0cml4QmxvY2tUeXBlc0l0ZW0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIC4uLmlucHV0XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZE1hdHJpeEJsb2NrVHlwZUl0ZW0oaW5wdXQpXG4gICAgfVxuICAgIHRoaXMubWF0cml4TW9kYWxPcGVuID0gZmFsc2VcbiAgfVxuICAvKirmlrDlop7nn6npmLXlnZct5ZCR5pWw57uE6KGo5Y2V5Lit5aKe5Yqg6aG5ICovXG4gIGFkZE1hdHJpeEJsb2NrVHlwZUl0ZW0oaW5wdXQpIHtcbiAgICB0aGlzLk1hdHJpeEJsb2NrVHlwZXMucHVzaChuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGRpc3BsYXlOYW1lOiBuZXcgRm9ybUNvbnRyb2woaW5wdXQuZGlzcGxheU5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKGlucHV0Lm5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgZmllbGRzOiBuZXcgRm9ybUFycmF5KFtdKVxuICAgIH0pKVxuICB9XG4gIC8qKue8lui+keefqemYteWdlyAqL1xuICBFZGl0TWF0cml4QmxvY2soaW5wdXQpIHtcbiAgICB0aGlzLm1hdHJpeE1vZGFsRm9ybSA9IHRoaXMuZmIuZ3JvdXAobmV3IE1hdHJpeEl0ZW1Db25maWcoKSlcbiAgICB0aGlzLm1hdHJpeE1vZGFsRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIC4uLmlucHV0XG4gICAgfSlcbiAgICB0aGlzLm1hdHJpeE1vZGFsT3BlbiA9IHRydWVcbiAgICB0aGlzLmlzTWF0cml4TW9kYWxFZGl0ID0gdHJ1ZVxuICB9XG5cbiAgLyoq5Yig6Zmk55+p6Zi15Z2XICovXG4gIERlbGV0ZU1hdHJpeEJsb2NrKGluZGV4KSB7XG4gICAgdGhpcy5NYXRyaXhCbG9ja1R5cGVzLnJlbW92ZUF0KGluZGV4KVxuICB9XG5cbiAgLyoq55+p6Zi15Z2XLemAieaLqSAqL1xuICBzZWxlY3RNYXRyaXhCbG9ja0NoYW5nZShpbmRleCkge1xuICAgIHRoaXMuc2VsZWN0TWF0cml4QmxvY2tJbmRleCA9IGluZGV4XG4gIH1cblxuICAvKirnn6npmLXlrZfmrrUt5paw5aKeICovXG4gIGFkZE1hdHJpeEZpZWxkKCkge1xuICAgIHRoaXMuYWRkTWF0cml4RmllbGRJdGVtKCcnLCB0aGlzLnNlbGVjdE1hdHJpeEJsb2NrSW5kZXgpXG4gIFxuICB9XG4gIC8qKuefqemYteWtl+autS3mlrDlop7nn6npmLXlrZfmrrXpobkgKi9cbiAgYWRkTWF0cml4RmllbGRJdGVtKGlucHV0OiBhbnkgPSAnJywgc2VsZWN0TWF0cml4QmxvY2tJbmRleCkge1xuICAgIC8qKuefqemYteS4i+agh+eahOefqemYtemhuUZvcm0gKi9cbiAgICBsZXQgTWF0cml4QmxvY2tUeXBlc0l0ZW1Gb3JtID0gdGhpcy5NYXRyaXhCbG9ja1R5cGVzLmF0KHNlbGVjdE1hdHJpeEJsb2NrSW5kZXgpIGFzIEZvcm1Hcm91cFxuICAgIGxldCBNYXRyaXhGaWVsZEl0ZW1Gb3JtID0gTWF0cml4QmxvY2tUeXBlc0l0ZW1Gb3JtLmdldCgnZmllbGRzJykgYXMgRm9ybUFycmF5XG4gICAgTWF0cml4RmllbGRJdGVtRm9ybS5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgLyoq5a2X5q615ZCN56ewIERpc3BsYXkgbmFtZSBvZiB0aGlzIGZpZWxkICovXG4gICAgICBkaXNwbGF5TmFtZTogW2lucHV0LmRpc3BsYXlOYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLyoq5a2X5q615ZSv5LiA5ZCN56ewIFVuaXF1ZSBOYW1lKi9cbiAgICAgIG5hbWU6IFtpbnB1dC5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLyoq5o+P6L+wIOivtOaYjiAqL1xuICAgICAgZGVzY3JpcHRpb246IFtpbnB1dC5kZXNjcmlwdGlvbiwgW11dLFxuICAgICAgLyoqRmllbGRUeXBl5a2X5q6157G75Z6LIOihqOWNleaOp+S7tuWQjeensCAqL1xuICAgICAgZm9ybUNvbnRyb2xOYW1lOiBbaW5wdXQuZm9ybUNvbnRyb2xOYW1lIHx8ICdUZXh0RWRpdCcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvL+WKqOaAgeihqOWNlemFjee9rlxuICAgICAgZm9ybUNvbmZpZ3VyYXRpb246IG5ldyBGb3JtR3JvdXAoe30pLFxuICAgIH0pKVxuICAgIC8vXG4gIH1cblxuICAvKirliKDpmaTnn6npmLXlrZfmrrXpobkgKi9cbiAgZGVsZXRlTWF0cml4RmllbGQoTWF0cml4RmllbGRGb3JtLCBpbmRleCkge1xuICAgIE1hdHJpeEZpZWxkRm9ybS5yZW1vdmVBdChpbmRleClcbiAgICB0aGlzLnNlbGVjdE1hdHJpeEZpZWxkSW5kZXggPSAwXG4gIH1cblxuICAvKirnn6npmLXlrZfmrrUt6YCJ5oupICovXG4gIHNlbGVjdE1hdHJpeEZpZWxkQ2hhbmdlKE1hdHJpeEJsb2NrSW5kZXgsIE1hdHJpeEZpZWxkSW5kZXgpIHtcbiAgICB0aGlzLnNlbGVjdE1hdHJpeEZpZWxkSW5kZXggPSBNYXRyaXhGaWVsZEluZGV4XG4gIH1cblxuICBnZXQgbmFtZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLm1hdHJpeE1vZGFsRm9ybT8uZ2V0KCduYW1lJylcbiAgfVxuICBnZXQgRmllbGRuYW1lSW5wdXQoKSB7XG4gICAgbGV0IE1hdHJpeEJsb2NrVHlwZXNJdGVtRm9ybSA9IHRoaXMuTWF0cml4QmxvY2tUeXBlcy5hdCh0aGlzLnNlbGVjdE1hdHJpeEJsb2NrSW5kZXgpIGFzIEZvcm1Hcm91cFxuICAgIGxldCBNYXRyaXhGaWVsZEl0ZW1Gb3JtID0gTWF0cml4QmxvY2tUeXBlc0l0ZW1Gb3JtLmdldCgnZmllbGRzJykgYXMgRm9ybUFycmF5XG4gICAgcmV0dXJuIE1hdHJpeEZpZWxkSXRlbUZvcm0uYXQodGhpcy5zZWxlY3RNYXRyaXhGaWVsZEluZGV4KS5nZXQoJ25hbWUnKVxuICB9XG5cbiAgLyoq55+p6Zi1ZGlzcGxheU5hbWVJbnB1dOWtl+auteWkseWOu+eEpueCuSAqL1xuICBkaXNwbGF5TmFtZUlucHV0Qmx1cihldmVudCkge1xuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgIGxldCBwaW55aW4gPSB0aGlzLl9DbXNBcGlTZXJ2aWNlLmNoaW5lc2VUb1Bpbnlpbih2YWx1ZSlcbiAgICBsZXQgbmFtZUlucHV0ID0gdGhpcy5uYW1lSW5wdXRcbiAgICBpZiAobmFtZUlucHV0LnZhbHVlKSByZXR1cm5cbiAgICBuYW1lSW5wdXQucGF0Y2hWYWx1ZShwaW55aW4pXG4gIH1cbiAgLyoq55+p6Zi1ZGlzcGxheU5hbWVJbnB1dOWtl+auteWkseWOu+eEpueCuSAqL1xuICBNYXRyaXhGaWVsZERpc3BsYXlOYW1lSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgbGV0IHBpbnlpbiA9IHRoaXMuX0Ntc0FwaVNlcnZpY2UuY2hpbmVzZVRvUGlueWluKHZhbHVlKVxuICAgIGxldCBGaWVsZG5hbWVJbnB1dCA9IHRoaXMuRmllbGRuYW1lSW5wdXRcbiAgICBpZiAoRmllbGRuYW1lSW5wdXQudmFsdWUpIHJldHVyblxuICAgIEZpZWxkbmFtZUlucHV0LnBhdGNoVmFsdWUocGlueWluKVxuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIl9FbnRpdHlcIj5cbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJmb3JtQ29uZmlndXJhdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6OjpGb3JtQ29udHJvbDpNYXRyaXgnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY3VycmVudD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydDbXM6Ok1hdHJpeEJsb2NrVHlwZScgfCBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBwLTBcIiAoY2xpY2suc3RvcCk9XCJhZGRNYXRyaXhCbG9ja1R5cGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzLWNpcmNsZSBwLTFcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBNYXRyaXhCbG9ja1R5cGVzLmNvbnRyb2xzO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljay5zdG9wKT1cInNlbGVjdE1hdHJpeEJsb2NrQ2hhbmdlKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaT09PXNlbGVjdE1hdHJpeEJsb2NrSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLnZhbHVlLmRpc3BsYXlOYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLnZhbHVlLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtXCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ6LWluZGV4OiA4O1wiIG5nYkRyb3Bkb3duVG9nZ2xlPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIiBzdHlsZT1cInotaW5kZXg6IDk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiRWRpdE1hdHJpeEJsb2NrKGl0ZW0udmFsdWUpXCI+e3snQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJEZWxldGVNYXRyaXhCbG9jayhpKVwiPnt7J0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXBcIiAqbmdJZj1cIk1hdHJpeEJsb2NrVHlwZXM/LmNvbnRyb2xzLmxlbmd0aD4wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0Ntczo6RmllbGRzJyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIHAtMFwiIChjbGljay5zdG9wKT1cImFkZE1hdHJpeEZpZWxkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cy1jaXJjbGUgcC0xXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgTWF0cml4QmxvY2tUeXBlcy5jb250cm9scztsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSA9PT0gc2VsZWN0TWF0cml4QmxvY2tJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbCBvZiBpdGVtLmNvbnRyb2xzWydmaWVsZHMnXS5jb250cm9scztsZXQgZmkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2suc3RvcCk9XCJzZWxlY3RNYXRyaXhGaWVsZENoYW5nZShpLGZpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJmaT09PXNlbGVjdE1hdHJpeEZpZWxkSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7ZWwudmFsdWUuZGlzcGxheU5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7ZWwudmFsdWUubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiZGVsZXRlTWF0cml4RmllbGQoaXRlbS5jb250cm9sc1snZmllbGRzJ10sZmkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saVwiPnt7J0FicFVpOjpEZWxldGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiBmb3JtQXJyYXlOYW1lPVwiTWF0cml4QmxvY2tUeXBlc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIE1hdHJpeEJsb2NrVHlwZXMuY29udHJvbHM7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBOYW1lXT1cImlcIiBbaGlkZGVuXT1cImkgIT09IHNlbGVjdE1hdHJpeEJsb2NrSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9XCJmaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbWYgb2YgaXRlbS5jb250cm9sc1snZmllbGRzJ10uY29udHJvbHM7bGV0IGZpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwTmFtZV09XCJmaVwiIFtoaWRkZW5dPVwiZmkgIT09IHNlbGVjdE1hdHJpeEZpZWxkSW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImRpc3BsYXlOYW1lXCI+e3snQ21zOjpEaXNwbGF5TmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiTWF0cml4RmllbGREaXNwbGF5TmFtZUlucHV0Qmx1cigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJuYW1lXCI+e3snRGlnbml0ZUFicEZvcm1zOjpGaWVsZE5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snRGlnbml0ZUFicEZvcm1zOjpGaWVsZE5hbWVIZWxwVGV4dCcgfCBhYnBMb2NhbGl6YXRpb259fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZGVzY3JpcHRpb25cIj57eydDbXM6OkRlc2NyaXB0aW9uJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZm9ybUNvbnRyb2xOYW1lXCI+e3snQ21zOjpGaWVsZFR5cGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJmb3JtQ29udHJvbE5hbWVcIiAoY2hhbmdlKT1cInNldENvbmZpZ0NvbXBvbmVudCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtQyBvZiBfRmllbGRDb250cm9sR3JvdXA7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbUMubmFtZVwiPnt7aXRlbUMuZGlzcGxheU5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtZi52YWx1ZS5mb3JtQ29udHJvbE5hbWUmJml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRmLWR5bmFtaWMgW3R5cGVdPVwiaXRlbWYudmFsdWUuZm9ybUNvbnRyb2xOYW1lXCIgW2VudGl0eV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJfc2VsZWN0ZWQ/X3NlbGVjdGVkWydmb3JtQ29uZmlndXJhdGlvbiddWydNYXRyaXhCbG9ja1R5cGVzJ11baV1bJ2ZpZWxkcyddW2ZpXTonJ1wiPjwvZGYtZHluYW1pYz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoYWJwSW5pdCk9XCJzdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxuICAgICAgICAgICAgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuXG5cblxuPGFicC1tb2RhbCBbKHZpc2libGUpXT1cIm1hdHJpeE1vZGFsT3BlblwiIFtidXN5XT1cIm1vZGFsQnVzeVwiICh2aXNpYmxlQ2hhbmdlKT1cIm1hdHJpeE1vZGFsVmlzaWJsZUNoYW5nZSgkZXZlbnQpXCIgPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxuICAgICAgICA8aDM+e3tpc01hdHJpeEVkaXQ/KCdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24pOignQ21zOjpOZXcnIHwgYWJwTG9jYWxpemF0aW9uKX19PC9oMz5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXJSZWY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXRyaXhNb2RhbEZvcm07IGVsc2UgbG9hZGVyUmVmXCI+XG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiAjbXlGb3JtPVwibmdGb3JtXCIgW2Zvcm1Hcm91cF09XCJtYXRyaXhNb2RhbEZvcm1cIlxuICAgICAgICAgICAgICAgIChuZ1N1Ym1pdCk9XCJjcmVhdGVPckVkaXRTYXZlKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAjbWF0cml4TW9kYWxNb2RhbFN1Ym1pdCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiZGlzcGxheU5hbWVcIj57eydDbXM6OkRpc3BsYXlOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJkaXNwbGF5TmFtZUlucHV0Qmx1cigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIm5hbWVcIj57eydDbXM6Ok5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPnt7J0FicFVpOjpDbG9zZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuICAgICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiXG4gICAgICAgICAgICAoY2xpY2spPVwibWF0cml4TW9kYWxNb2RhbFN1Ym1pdC5uYXRpdmVFbGVtZW50LmNsaWNrKClcIj57eydBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYWJwLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9hYnAtbW9kYWw+Il19
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9tYXRyaXgvbWF0cml4LWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9tYXRyaXgvbWF0cml4LWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRyxLQUFLLEVBQUUsU0FBUyxHQUFJLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7OztBQU96RSxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ1UsRUFBZSxFQUNmLGNBQTZCLEVBQzdCLHNCQUE2QztRQUY3QyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQStFdkQsWUFBWTtRQUNaLG9CQUFlLEdBQVksS0FBSyxDQUFBO1FBQ2hDLGdCQUFnQjtRQUNoQixzQkFBaUIsR0FBUSxLQUFLLENBQUE7UUFFOUIseUJBQXlCO1FBQ3pCLGNBQVMsR0FBWSxLQUFLLENBQUE7UUFRMUIsZUFBZTtRQUNmLDJCQUFzQixHQUFRLENBQUMsQ0FBQTtRQUUvQixxQkFBcUI7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bnB1dCwgVmlld0NoaWxkLCAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRyaXhDb25maWcsIE1hdHJpeEl0ZW1Db25maWcgfSBmcm9tICcuL21hdHJpeC1jb25maWcnO1xuaW1wb3J0IHsgQ21zQXBpU2VydmljZSwgRmllbGRBYnN0cmFjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZi1tYXRyaXgtY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdHJpeC1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXRyaXgtY29uZmlnLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWF0cml4Q29uZmlnQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIF9DbXNBcGlTZXJ2aWNlOiBDbXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgX0ZpZWxkQWJzdHJhY3RzU2VydmljZTogRmllbGRBYnN0cmFjdHNTZXJ2aWNlLFxuICApIHsgfVxuXG4gIC8qKuihqOWNleaOp+S7tue7hCAqL1xuICBfRmllbGRDb250cm9sR3JvdXA6IGFueVtdXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xuICBfdHlwZTogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBhbnkpIHtcbiAgICB0aGlzLl90eXBlID0gdlxuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIF9FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IEVudGl0eSh2OiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9FbnRpdHkgPSB2O1xuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cblxuXG4gIC8qKumAieaLqeeahOihqOWNleS/oeaBryAqL1xuICBfc2VsZWN0ZWQ6IGFueVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xuXG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkID0gdlxuICAgICAgdGhpcy5kYXRhTG9hZGVkKClcbiAgICB9XG4gIH1cblxuXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgYXN5bmMgZGF0YUxvYWRlZCgpIHtcbiAgICBpZiAodGhpcy5fRW50aXR5ICYmIHRoaXMuX3R5cGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuQWZ0ZXJJbml0KClcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2submF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIEFmdGVySW5pdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0ZpZWxkQ29udHJvbEdyb3VwID0gdGhpcy5fRmllbGRBYnN0cmFjdHNTZXJ2aWNlLmdldEV4Y2x1ZGVBc3NpZ25Db250cm9sKHRoaXMuX3R5cGUpXG4gICAgICB0aGlzLl9FbnRpdHkuc2V0Q29udHJvbCgnZm9ybUNvbmZpZ3VyYXRpb24nLCB0aGlzLmZiLmdyb3VwKG5ldyBNYXRyaXhDb25maWcoKSkpXG4gICAgICBhd2FpdCB0aGlzLnNldFNlbGVjdFZhbHVlKClcbiAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24ucGF0Y2hWYWx1ZSh0aGlzLl9zZWxlY3RlZC5mb3JtQ29uZmlndXJhdGlvbilcbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9KVxuICB9XG5cblxuICBzZXRTZWxlY3RWYWx1ZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLl9zZWxlY3RlZC5mb3JtQ29udHJvbE5hbWUgPT0gdGhpcy5fdHlwZSkge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZC5mb3JtQ29uZmlndXJhdGlvblsnTWF0cml4QmxvY2tUeXBlcyddLmZvckVhY2goKChlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZE1hdHJpeEJsb2NrVHlwZUl0ZW0oZWwpXG4gICAgICAgICAgZWwuZmllbGRzLmZvckVhY2goKGVsZiwgaW5kZXhmKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFkZE1hdHJpeEZpZWxkSXRlbShlbGYsIGluZGV4KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pKVxuICAgICAgICByZXNvbHZlKHRydWUpXG4gICAgICB9XG4gICAgICBcbiAgICB9KVxuICB9XG5cbiAgLyoq6I635Y+W6KGo5Y2V6YWN572uICovXG4gIGdldCBmb3JtQ29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fRW50aXR5LmdldCgnZm9ybUNvbmZpZ3VyYXRpb24nKSBhcyBGb3JtR3JvdXBcbiAgfVxuXG4gIC8qKuiOt+WPluihqOWNlemFjee9ruS4i+eahOefqemYteWdl+ihqOWNleaVsOe7hCAqL1xuICBnZXQgTWF0cml4QmxvY2tUeXBlcygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5jb250cm9sc1snTWF0cml4QmxvY2tUeXBlcyddIGFzIEZvcm1BcnJheVxuICB9XG5cblxuICAvKirmqKHmgIHmoYYt54q25oCBICovXG4gIG1hdHJpeE1vZGFsT3BlbjogYm9vbGVhbiA9IGZhbHNlXG4gIC8qKuaooeaAgeahhi3mmK/lkKbmraPlnKjnvJbovpEgKi9cbiAgaXNNYXRyaXhNb2RhbEVkaXQ6IGFueSA9IGZhbHNlXG5cbiAgLyoq5qih5oCB5qGGLeeUqOS6juehruWumuaooeaAgeeahOe5geW/meeKtuaAgeaYr+WQpuS4uuecnyAqL1xuICBtb2RhbEJ1c3k6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIC8qKuaooeaAgeahhi3ooajljZUgKi9cbiAgbWF0cml4TW9kYWxGb3JtOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG5cbiAgLyoq6KGo5Y2V5o6n5Lu25qih5p2/LeeUqOS6juWcqGZvcm3lpJbmj5DkuqRzdWJtaXQgKi9cbiAgQFZpZXdDaGlsZCgnbWF0cml4TW9kYWxNb2RhbFN1Ym1pdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBtYXRyaXhNb2RhbE1vZGFsU3VibWl0OiBFbGVtZW50UmVmO1xuXG4gIC8qKuefqemYteWdly3pgInmi6nnmoTkuIvmoIcgKi9cbiAgc2VsZWN0TWF0cml4QmxvY2tJbmRleDogYW55ID0gMFxuXG4gIC8qKuefqemYteWdly3pgInmi6nnmoTnn6npmLXkuIvlrZfmrrXnmoTkuIvmoIcgKi9cbiAgc2VsZWN0TWF0cml4RmllbGRJbmRleDogYW55ID0gMFxuXG4gIC8qKuaooeaAgeahhi3nirbmgIHmlLnlj5ggKi9cbiAgbWF0cml4TW9kYWxWaXNpYmxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgdGhpcy5pc01hdHJpeE1vZGFsRWRpdCA9IGZhbHNlXG4gICAgICB0aGlzLm1hdHJpeE1vZGFsRm9ybSA9IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cblxuICAvKirnn6npmLXlnZctLeaWsOWini3miZPlvIDmqKHmgIHmoYYgKi9cbiAgYWRkTWF0cml4QmxvY2tUeXBlKCkge1xuICAgIHRoaXMubWF0cml4TW9kYWxGb3JtID0gdGhpcy5mYi5ncm91cChuZXcgTWF0cml4SXRlbUNvbmZpZygpKVxuICAgIHRoaXMubWF0cml4TW9kYWxPcGVuID0gdHJ1ZVxuICB9XG5cblxuXG4gIC8qKuaooeaAgeahhi0t55+p6Zi16KGo5Y2V5L+d5a2Y5o+Q5LqkICovXG4gIGNyZWF0ZU9yRWRpdFNhdmUoKSB7XG4gICAgbGV0IGlucHV0ID0gdGhpcy5tYXRyaXhNb2RhbEZvcm0udmFsdWVcbiAgICBpZiAoIXRoaXMubWF0cml4TW9kYWxGb3JtLnZhbGlkKSByZXR1cm5cbiAgICBpZiAodGhpcy5pc01hdHJpeE1vZGFsRWRpdCkge1xuICAgICAgbGV0IE1hdHJpeEJsb2NrVHlwZXNJdGVtID0gdGhpcy5NYXRyaXhCbG9ja1R5cGVzLmF0KHRoaXMuc2VsZWN0TWF0cml4QmxvY2tJbmRleCkgYXMgRm9ybUdyb3VwXG4gICAgICBNYXRyaXhCbG9ja1R5cGVzSXRlbS5wYXRjaFZhbHVlKHtcbiAgICAgICAgLi4uaW5wdXRcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkTWF0cml4QmxvY2tUeXBlSXRlbShpbnB1dClcbiAgICB9XG4gICAgdGhpcy5tYXRyaXhNb2RhbE9wZW4gPSBmYWxzZVxuICB9XG4gIC8qKuaWsOWinuefqemYteWdly3lkJHmlbDnu4TooajljZXkuK3lop7liqDpobkgKi9cbiAgYWRkTWF0cml4QmxvY2tUeXBlSXRlbShpbnB1dCkge1xuICAgIHRoaXMuTWF0cml4QmxvY2tUeXBlcy5wdXNoKG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZGlzcGxheU5hbWU6IG5ldyBGb3JtQ29udHJvbChpbnB1dC5kaXNwbGF5TmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woaW5wdXQubmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBmaWVsZHM6IG5ldyBGb3JtQXJyYXkoW10pXG4gICAgfSkpXG4gIH1cbiAgLyoq57yW6L6R55+p6Zi15Z2XICovXG4gIEVkaXRNYXRyaXhCbG9jayhpbnB1dCkge1xuICAgIHRoaXMubWF0cml4TW9kYWxGb3JtID0gdGhpcy5mYi5ncm91cChuZXcgTWF0cml4SXRlbUNvbmZpZygpKVxuICAgIHRoaXMubWF0cml4TW9kYWxGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgLi4uaW5wdXRcbiAgICB9KVxuICAgIHRoaXMubWF0cml4TW9kYWxPcGVuID0gdHJ1ZVxuICAgIHRoaXMuaXNNYXRyaXhNb2RhbEVkaXQgPSB0cnVlXG4gIH1cblxuICAvKirliKDpmaTnn6npmLXlnZcgKi9cbiAgRGVsZXRlTWF0cml4QmxvY2soaW5kZXgpIHtcbiAgICB0aGlzLk1hdHJpeEJsb2NrVHlwZXMucmVtb3ZlQXQoaW5kZXgpXG4gIH1cblxuICAvKirnn6npmLXlnZct6YCJ5oupICovXG4gIHNlbGVjdE1hdHJpeEJsb2NrQ2hhbmdlKGluZGV4KSB7XG4gICAgdGhpcy5zZWxlY3RNYXRyaXhCbG9ja0luZGV4ID0gaW5kZXhcbiAgfVxuXG4gIC8qKuefqemYteWtl+autS3mlrDlop4gKi9cbiAgYWRkTWF0cml4RmllbGQoKSB7XG4gICAgdGhpcy5hZGRNYXRyaXhGaWVsZEl0ZW0oJycsIHRoaXMuc2VsZWN0TWF0cml4QmxvY2tJbmRleClcbiAgXG4gIH1cbiAgLyoq55+p6Zi15a2X5q61LeaWsOWinuefqemYteWtl+autemhuSAqL1xuICBhZGRNYXRyaXhGaWVsZEl0ZW0oaW5wdXQ6IGFueSA9ICcnLCBzZWxlY3RNYXRyaXhCbG9ja0luZGV4KSB7XG4gICAgLyoq55+p6Zi15LiL5qCH55qE55+p6Zi16aG5Rm9ybSAqL1xuICAgIGxldCBNYXRyaXhCbG9ja1R5cGVzSXRlbUZvcm0gPSB0aGlzLk1hdHJpeEJsb2NrVHlwZXMuYXQoc2VsZWN0TWF0cml4QmxvY2tJbmRleCkgYXMgRm9ybUdyb3VwXG4gICAgbGV0IE1hdHJpeEZpZWxkSXRlbUZvcm0gPSBNYXRyaXhCbG9ja1R5cGVzSXRlbUZvcm0uZ2V0KCdmaWVsZHMnKSBhcyBGb3JtQXJyYXlcbiAgICBNYXRyaXhGaWVsZEl0ZW1Gb3JtLnB1c2godGhpcy5mYi5ncm91cCh7XG4gICAgICAvKirlrZfmrrXlkI3np7AgRGlzcGxheSBuYW1lIG9mIHRoaXMgZmllbGQgKi9cbiAgICAgIGRpc3BsYXlOYW1lOiBbaW5wdXQuZGlzcGxheU5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvKirlrZfmrrXllK/kuIDlkI3np7AgVW5pcXVlIE5hbWUqL1xuICAgICAgbmFtZTogW2lucHV0Lm5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvKirmj4/ov7Ag6K+05piOICovXG4gICAgICBkZXNjcmlwdGlvbjogW2lucHV0LmRlc2NyaXB0aW9uLCBbXV0sXG4gICAgICAvKipGaWVsZFR5cGXlrZfmrrXnsbvlnosg6KGo5Y2V5o6n5Lu25ZCN56ewICovXG4gICAgICBmb3JtQ29udHJvbE5hbWU6IFtpbnB1dC5mb3JtQ29udHJvbE5hbWUgfHwgJ1RleHRFZGl0JywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8v5Yqo5oCB6KGo5Y2V6YWN572uXG4gICAgICBmb3JtQ29uZmlndXJhdGlvbjogbmV3IEZvcm1Hcm91cCh7fSksXG4gICAgfSkpXG4gICAgLy9cbiAgfVxuXG4gIC8qKuWIoOmZpOefqemYteWtl+autemhuSAqL1xuICBkZWxldGVNYXRyaXhGaWVsZChNYXRyaXhGaWVsZEZvcm0sIGluZGV4KSB7XG4gICAgTWF0cml4RmllbGRGb3JtLnJlbW92ZUF0KGluZGV4KVxuICAgIHRoaXMuc2VsZWN0TWF0cml4RmllbGRJbmRleCA9IDBcbiAgfVxuXG4gIC8qKuefqemYteWtl+autS3pgInmi6kgKi9cbiAgc2VsZWN0TWF0cml4RmllbGRDaGFuZ2UoTWF0cml4QmxvY2tJbmRleCwgTWF0cml4RmllbGRJbmRleCkge1xuICAgIHRoaXMuc2VsZWN0TWF0cml4RmllbGRJbmRleCA9IE1hdHJpeEZpZWxkSW5kZXhcbiAgfVxuXG4gIGdldCBuYW1lSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4TW9kYWxGb3JtPy5nZXQoJ25hbWUnKVxuICB9XG4gIGdldCBGaWVsZG5hbWVJbnB1dCgpIHtcbiAgICBsZXQgTWF0cml4QmxvY2tUeXBlc0l0ZW1Gb3JtID0gdGhpcy5NYXRyaXhCbG9ja1R5cGVzLmF0KHRoaXMuc2VsZWN0TWF0cml4QmxvY2tJbmRleCkgYXMgRm9ybUdyb3VwXG4gICAgbGV0IE1hdHJpeEZpZWxkSXRlbUZvcm0gPSBNYXRyaXhCbG9ja1R5cGVzSXRlbUZvcm0uZ2V0KCdmaWVsZHMnKSBhcyBGb3JtQXJyYXlcbiAgICByZXR1cm4gTWF0cml4RmllbGRJdGVtRm9ybS5hdCh0aGlzLnNlbGVjdE1hdHJpeEZpZWxkSW5kZXgpLmdldCgnbmFtZScpXG4gIH1cblxuICAvKirnn6npmLVkaXNwbGF5TmFtZUlucHV05a2X5q615aSx5Y6754Sm54K5ICovXG4gIGRpc3BsYXlOYW1lSW5wdXRCbHVyKGV2ZW50KSB7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgbGV0IHBpbnlpbiA9IHRoaXMuX0Ntc0FwaVNlcnZpY2UuY2hpbmVzZVRvUGlueWluKHZhbHVlKVxuICAgIGxldCBuYW1lSW5wdXQgPSB0aGlzLm5hbWVJbnB1dFxuICAgIGlmIChuYW1lSW5wdXQudmFsdWUpIHJldHVyblxuICAgIG5hbWVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbilcbiAgfVxuICAvKirnn6npmLVkaXNwbGF5TmFtZUlucHV05a2X5q615aSx5Y6754Sm54K5ICovXG4gIE1hdHJpeEZpZWxkRGlzcGxheU5hbWVJbnB1dEJsdXIoZXZlbnQpIHtcbiAgICBsZXQgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcbiAgICBsZXQgcGlueWluID0gdGhpcy5fQ21zQXBpU2VydmljZS5jaGluZXNlVG9QaW55aW4odmFsdWUpXG4gICAgbGV0IEZpZWxkbmFtZUlucHV0ID0gdGhpcy5GaWVsZG5hbWVJbnB1dFxuICAgIGlmIChGaWVsZG5hbWVJbnB1dC52YWx1ZSkgcmV0dXJuXG4gICAgRmllbGRuYW1lSW5wdXQucGF0Y2hWYWx1ZShwaW55aW4pXG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiX0VudGl0eVwiPlxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImZvcm1Db25maWd1cmF0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjo6OkZvcm1Db250cm9sOk1hdHJpeCcgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0Ntczo6TWF0cml4QmxvY2tUeXBlJyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIHAtMFwiIChjbGljay5zdG9wKT1cImFkZE1hdHJpeEJsb2NrVHlwZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMtY2lyY2xlIHAtMVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIE1hdHJpeEJsb2NrVHlwZXMuY29udHJvbHM7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrLnN0b3ApPVwic2VsZWN0TWF0cml4QmxvY2tDaGFuZ2UoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpPT09c2VsZWN0TWF0cml4QmxvY2tJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e2l0ZW0udmFsdWUuZGlzcGxheU5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e2l0ZW0udmFsdWUubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc21cIiBpZD1cImRyb3Bkb3duQmFzaWMxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInotaW5kZXg6IDg7XCIgbmdiRHJvcGRvd25Ub2dnbGU+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkJhc2ljMVwiIHN0eWxlPVwiei1pbmRleDogOTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJFZGl0TWF0cml4QmxvY2soaXRlbS52YWx1ZSlcIj57eydBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljay5zdG9wKT1cIkRlbGV0ZU1hdHJpeEJsb2NrKGkpXCI+e3snQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cFwiICpuZ0lmPVwiTWF0cml4QmxvY2tUeXBlcz8uY29udHJvbHMubGVuZ3RoPjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWN1cnJlbnQ9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQ21zOjpGaWVsZHMnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gcC0wXCIgKGNsaWNrLnN0b3ApPVwiYWRkTWF0cml4RmllbGQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzLWNpcmNsZSBwLTFcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBNYXRyaXhCbG9ja1R5cGVzLmNvbnRyb2xzO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpID09PSBzZWxlY3RNYXRyaXhCbG9ja0luZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsIG9mIGl0ZW0uY29udHJvbHNbJ2ZpZWxkcyddLmNvbnRyb2xzO2xldCBmaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljay5zdG9wKT1cInNlbGVjdE1hdHJpeEZpZWxkQ2hhbmdlKGksZmkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImZpPT09c2VsZWN0TWF0cml4RmllbGRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tlbC52YWx1ZS5kaXNwbGF5TmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tlbC52YWx1ZS5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJkZWxldGVNYXRyaXhGaWVsZChpdGVtLmNvbnRyb2xzWydmaWVsZHMnXSxmaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpXCI+e3snQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiIGZvcm1BcnJheU5hbWU9XCJNYXRyaXhCbG9ja1R5cGVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgTWF0cml4QmxvY2tUeXBlcy5jb250cm9scztsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiIFtoaWRkZW5dPVwiaSAhPT0gc2VsZWN0TWF0cml4QmxvY2tJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZm9ybUFycmF5TmFtZT1cImZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtZiBvZiBpdGVtLmNvbnRyb2xzWydmaWVsZHMnXS5jb250cm9scztsZXQgZmkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBOYW1lXT1cImZpXCIgW2hpZGRlbl09XCJmaSAhPT0gc2VsZWN0TWF0cml4RmllbGRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZGlzcGxheU5hbWVcIj57eydDbXM6OkRpc3BsYXlOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJNYXRyaXhGaWVsZERpc3BsYXlOYW1lSW5wdXRCbHVyKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cIm5hbWVcIj57eydEaWduaXRlQWJwRm9ybXM6OkZpZWxkTmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydEaWduaXRlQWJwRm9ybXM6OkZpZWxkTmFtZUhlbHBUZXh0JyB8IGFicExvY2FsaXphdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJkZXNjcmlwdGlvblwiPnt7J0Ntczo6RGVzY3JpcHRpb24nIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmb3JtQ29udHJvbE5hbWVcIj57eydDbXM6OkZpZWxkVHlwZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImZvcm1Db250cm9sTmFtZVwiIChjaGFuZ2UpPVwic2V0Q29uZmlnQ29tcG9uZW50KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW1DIG9mIF9GaWVsZENvbnRyb2xHcm91cDtsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtQy5uYW1lXCI+e3tpdGVtQy5kaXNwbGF5TmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1mLnZhbHVlLmZvcm1Db250cm9sTmFtZSYmaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYyBbdHlwZV09XCJpdGVtZi52YWx1ZS5mb3JtQ29udHJvbE5hbWVcIiBbZW50aXR5XT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIl9zZWxlY3RlZD9fc2VsZWN0ZWRbJ2Zvcm1Db25maWd1cmF0aW9uJ11bJ01hdHJpeEJsb2NrVHlwZXMnXVtpXVsnZmllbGRzJ11bZmldOicnXCI+PC9kZi1keW5hbWljPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIChhYnBJbml0KT1cInN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiXG4gICAgICAgICAgICAjc3VibWl0Y2xpY2s+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG5cblxuXG48YWJwLW1vZGFsIFsodmlzaWJsZSldPVwibWF0cml4TW9kYWxPcGVuXCIgW2J1c3ldPVwibW9kYWxCdXN5XCIgKHZpc2libGVDaGFuZ2UpPVwibWF0cml4TW9kYWxWaXNpYmxlQ2hhbmdlKCRldmVudClcIiA+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XG4gICAgICAgIDxoMz57e2lzTWF0cml4RWRpdD8oJ0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbik6KCdDbXM6Ok5ldycgfCBhYnBMb2NhbGl6YXRpb24pfX08L2gzPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRlclJlZj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxpIGNsYXNzPVwiZmEgZmEtcHVsc2UgZmEtc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hdHJpeE1vZGFsRm9ybTsgZWxzZSBsb2FkZXJSZWZcIj5cbiAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwic2l0ZXMtbW9kYWwtZm9ybVwiICNteUZvcm09XCJuZ0Zvcm1cIiBbZm9ybUdyb3VwXT1cIm1hdHJpeE1vZGFsRm9ybVwiXG4gICAgICAgICAgICAgICAgKG5nU3VibWl0KT1cImNyZWF0ZU9yRWRpdFNhdmUoKVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICNtYXRyaXhNb2RhbE1vZGFsU3VibWl0IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJkaXNwbGF5TmFtZVwiPnt7J0Ntczo6RGlzcGxheU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cImRpc3BsYXlOYW1lSW5wdXRCbHVyKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwibmFtZVwiPnt7J0Ntczo6TmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+e3snQWJwVWk6OkNsb3NlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcbiAgICAgICAgICAgIChjbGljayk9XCJtYXRyaXhNb2RhbE1vZGFsU3VibWl0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKVwiPnt7J0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbn19PC9hYnAtYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2FicC1tb2RhbD4iXX0=
@@ -1,8 +1,8 @@
1
1
  import { FormArray, FormGroup, Validators } from "@angular/forms";
2
2
  export class MatrixConfig {
3
- // 矩阵类型
4
- 'MatrixBlockTypes' = new FormArray([]);
5
3
  constructor(data) {
4
+ // 矩阵类型
5
+ this['MatrixBlockTypes'] = new FormArray([]);
6
6
  if (data) {
7
7
  for (const key in data) {
8
8
  if (data.hasOwnProperty(key)) {
@@ -13,10 +13,10 @@ export class MatrixConfig {
13
13
  }
14
14
  }
15
15
  export class MatrixItemConfig {
16
- displayName = ['', [Validators.required]];
17
- /**字段名字 */
18
- name = ['', [Validators.required]];
19
16
  constructor(data) {
17
+ this.displayName = ['', [Validators.required]];
18
+ /**字段名字 */
19
+ this.name = ['', [Validators.required]];
20
20
  if (data) {
21
21
  for (const key in data) {
22
22
  if (data.hasOwnProperty(key)) {
@@ -27,17 +27,17 @@ export class MatrixItemConfig {
27
27
  }
28
28
  }
29
29
  export class matrixFieldInputBase {
30
- /**字段名称 Display name of this field */
31
- displayName = ['', [Validators.required]];
32
- /**字段唯一名称 Unique Name*/
33
- name = ['', [Validators.required]];
34
- /**描述 说明 */
35
- description = ['', []];
36
- /**FieldType字段类型 表单控件名称 */
37
- formControlName = ['TextEdit', [Validators.required]];
38
- /**动态表单配置 */
39
- formConfiguration = new FormGroup({});
40
30
  constructor(data) {
31
+ /**字段名称 Display name of this field */
32
+ this.displayName = ['', [Validators.required]];
33
+ /**字段唯一名称 Unique Name*/
34
+ this.name = ['', [Validators.required]];
35
+ /**描述 说明 */
36
+ this.description = ['', []];
37
+ /**FieldType字段类型 表单控件名称 */
38
+ this.formControlName = ['TextEdit', [Validators.required]];
39
+ /**动态表单配置 */
40
+ this.formConfiguration = new FormGroup({});
41
41
  if (data) {
42
42
  for (const key in data) {
43
43
  if (data.hasOwnProperty(key)) {
@@ -47,4 +47,4 @@ export class matrixFieldInputBase {
47
47
  }
48
48
  }
49
49
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL21hdHJpeC9tYXRyaXgtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLE9BQU87SUFDUCxrQkFBa0IsR0FBUSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUzQyxZQUFZLElBQW1CO1FBQzNCLElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDekI7YUFDSjtTQUNKO0lBQ0wsQ0FBQztDQUNKO0FBQ0QsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QixXQUFXLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvQyxVQUFVO0lBQ1YsSUFBSSxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFeEMsWUFBWSxJQUFtQjtRQUMzQixJQUFJLElBQUksRUFBRTtZQUNOLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0o7U0FDSjtJQUdMLENBQUM7Q0FDSjtBQUlELE1BQU0sT0FBTyxvQkFBb0I7SUFHN0IscUNBQXFDO0lBQ3JDLFdBQVcsR0FBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQy9DLHVCQUF1QjtJQUN2QixJQUFJLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4QyxXQUFXO0lBQ1gsV0FBVyxHQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLDBCQUEwQjtJQUMxQixlQUFlLEdBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxZQUFZO0lBQ1gsaUJBQWlCLEdBQTBCLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRzVELFlBQVksSUFBMkI7UUFDbkMsSUFBSSxJQUFJLEVBQUU7WUFDTixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6QjthQUNKO1NBQ0o7SUFFTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXRyaXhDb25maWcge1xyXG4gICAgLy8g55+p6Zi157G75Z6LXHJcbiAgICAnTWF0cml4QmxvY2tUeXBlcyc6IGFueSA9IG5ldyBGb3JtQXJyYXkoW10pXHJcblxyXG4gICAgY29uc3RydWN0b3IoZGF0YT86IE1hdHJpeENvbmZpZykge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIE1hdHJpeEl0ZW1Db25maWcge1xyXG4gIFxyXG4gICAgZGlzcGxheU5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuICAgIC8qKuWtl+auteWQjeWtlyAqL1xyXG4gICAgbmFtZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBNYXRyaXhDb25maWcpIHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trZXldID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIG1hdHJpeEZpZWxkSW5wdXRCYXNlIHtcclxuXHJcblxyXG4gICAgLyoq5a2X5q615ZCN56ewIERpc3BsYXkgbmFtZSBvZiB0aGlzIGZpZWxkICovXHJcbiAgICBkaXNwbGF5TmFtZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAgLyoq5a2X5q615ZSv5LiA5ZCN56ewIFVuaXF1ZSBOYW1lKi9cclxuICAgIG5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuICAgIC8qKuaPj+i/sCDor7TmmI4gKi9cclxuICAgIGRlc2NyaXB0aW9uOiBhbnkgPSBbJycsIFtdXTtcclxuICAgIC8qKkZpZWxkVHlwZeWtl+auteexu+WeiyDooajljZXmjqfku7blkI3np7AgKi9cclxuICAgIGZvcm1Db250cm9sTmFtZTogYW55ID0gWydUZXh0RWRpdCcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgIC8qKuWKqOaAgeihqOWNlemFjee9riAqL1xyXG4gICAgZm9ybUNvbmZpZ3VyYXRpb246IEZvcm1Hcm91cCB8IHVuZGVmaW5lZCA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBtYXRyaXhGaWVsZElucHV0QmFzZSkge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG59Il19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL21hdHJpeC9tYXRyaXgtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE1BQU0sT0FBTyxZQUFZO0lBSXJCLFlBQVksSUFBbUI7UUFIL0IsT0FBTztRQUNQLHdCQUFrQixHQUFRLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBR3ZDLElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDekI7YUFDSjtTQUNKO0lBQ0wsQ0FBQztDQUNKO0FBQ0QsTUFBTSxPQUFPLGdCQUFnQjtJQU16QixZQUFZLElBQW1CO1FBSi9CLGdCQUFXLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvQyxVQUFVO1FBQ1YsU0FBSSxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFHcEMsSUFBSSxJQUFJLEVBQUU7WUFDTixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6QjthQUNKO1NBQ0o7SUFHTCxDQUFDO0NBQ0o7QUFJRCxNQUFNLE9BQU8sb0JBQW9CO0lBZTdCLFlBQVksSUFBMkI7UUFadkMscUNBQXFDO1FBQ3JDLGdCQUFXLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvQyx1QkFBdUI7UUFDdkIsU0FBSSxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDeEMsV0FBVztRQUNYLGdCQUFXLEdBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUIsMEJBQTBCO1FBQzFCLG9CQUFlLEdBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RCxZQUFZO1FBQ1gsc0JBQWlCLEdBQTBCLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBSXhELElBQUksSUFBSSxFQUFFO1lBQ04sS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDekI7YUFDSjtTQUNKO0lBRUwsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTWF0cml4Q29uZmlnIHtcclxuICAgIC8vIOefqemYteexu+Wei1xyXG4gICAgJ01hdHJpeEJsb2NrVHlwZXMnOiBhbnkgPSBuZXcgRm9ybUFycmF5KFtdKVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBNYXRyaXhDb25maWcpIHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trZXldID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBNYXRyaXhJdGVtQ29uZmlnIHtcclxuICBcclxuICAgIGRpc3BsYXlOYW1lOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirlrZfmrrXlkI3lrZcgKi9cclxuICAgIG5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogTWF0cml4Q29uZmlnKSB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXNba2V5XSA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBtYXRyaXhGaWVsZElucHV0QmFzZSB7XHJcblxyXG5cclxuICAgIC8qKuWtl+auteWQjeensCBEaXNwbGF5IG5hbWUgb2YgdGhpcyBmaWVsZCAqL1xyXG4gICAgZGlzcGxheU5hbWU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXTtcclxuICAgIC8qKuWtl+auteWUr+S4gOWQjeensCBVbmlxdWUgTmFtZSovXHJcbiAgICBuYW1lOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV07XHJcbiAgICAvKirmj4/ov7Ag6K+05piOICovXHJcbiAgICBkZXNjcmlwdGlvbjogYW55ID0gWycnLCBbXV07XHJcbiAgICAvKipGaWVsZFR5cGXlrZfmrrXnsbvlnosg6KGo5Y2V5o6n5Lu25ZCN56ewICovXHJcbiAgICBmb3JtQ29udHJvbE5hbWU6IGFueSA9IFsnVGV4dEVkaXQnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAvKirliqjmgIHooajljZXphY3nva4gKi9cclxuICAgIGZvcm1Db25maWd1cmF0aW9uOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQgPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogbWF0cml4RmllbGRJbnB1dEJhc2UpIHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trZXldID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSJdfQ==