@pepperi-addons/ngx-composite-lib 0.4.2-beta.86 → 0.4.2-beta.87

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.
@@ -102,36 +102,85 @@ export class SectionComponent extends BaseDestroyerDirective {
102
102
  setIfHideForCurrentScreenType() {
103
103
  this.hideForCurrentScreenType = this.layoutBuilderInternalService.getIsHidden(this.hideIn, this.screenType);
104
104
  }
105
- getCssSplitString() {
105
+ // private getCssSplitString() {
106
+ // switch (this.split) {
107
+ // case '1/2 1/2':
108
+ // return '1fr 1fr';
109
+ // case '1/2 1/4 1/4':
110
+ // return '2fr 1fr 1fr';
111
+ // case '1/3 1/3 1/3':
112
+ // return '1fr 1fr 1fr';
113
+ // case '1/3 2/3':
114
+ // return '1fr 2fr';
115
+ // case '1/4 1/2 1/4':
116
+ // return '1fr 2fr 1fr';
117
+ // case '1/4 1/4 1/2':
118
+ // return '1fr 1fr 2fr';
119
+ // case '1/4 1/4 1/4 1/4':
120
+ // return '1fr 1fr 1fr 1fr';
121
+ // case '1/4 3/4':
122
+ // return '1fr 3fr';
123
+ // case '2/3 1/3':
124
+ // return '2fr 1fr';
125
+ // case '3/4 1/4':
126
+ // return '3fr 1fr';
127
+ // default: // For one column.
128
+ // return '1fr';
129
+ // }
130
+ // }
131
+ getCssGridColumn(columnIndex) {
132
+ let res = '1/13';
133
+ let gridColumnValueArr = ['1/13'];
106
134
  switch (this.split) {
107
135
  case '1/2 1/2':
108
- return '1fr 1fr';
136
+ gridColumnValueArr = ['1/7', '7/13'];
137
+ break;
109
138
  case '1/2 1/4 1/4':
110
- return '2fr 1fr 1fr';
139
+ gridColumnValueArr = ['1/7', '7/10', '10/13'];
140
+ break;
111
141
  case '1/3 1/3 1/3':
112
- return '1fr 1fr 1fr';
142
+ gridColumnValueArr = ['1/5', '5/9', '9/13'];
143
+ break;
113
144
  case '1/3 2/3':
114
- return '1fr 2fr';
145
+ gridColumnValueArr = ['1/5', '5/13'];
146
+ break;
115
147
  case '1/4 1/2 1/4':
116
- return '1fr 2fr 1fr';
148
+ gridColumnValueArr = ['1/4', '4/10', '10/13'];
149
+ break;
117
150
  case '1/4 1/4 1/2':
118
- return '1fr 1fr 2fr';
151
+ gridColumnValueArr = ['1/4', '4/7', '7/13'];
152
+ break;
119
153
  case '1/4 1/4 1/4 1/4':
120
- return '1fr 1fr 1fr 1fr';
154
+ gridColumnValueArr = ['1/4', '4/7', '7/10', '10/13'];
155
+ break;
121
156
  case '1/4 3/4':
122
- return '1fr 3fr';
157
+ gridColumnValueArr = ['1/4', '4/13'];
158
+ break;
123
159
  case '2/3 1/3':
124
- return '2fr 1fr';
160
+ gridColumnValueArr = ['1/9', '9/13'];
161
+ break;
125
162
  case '3/4 1/4':
126
- return '3fr 1fr';
127
- default: // For one column.
128
- return '1fr';
163
+ gridColumnValueArr = ['1/10', '10/13'];
164
+ break;
165
+ }
166
+ if (gridColumnValueArr.length > columnIndex) {
167
+ res = gridColumnValueArr[columnIndex];
168
+ }
169
+ return res;
170
+ }
171
+ setSectionColumnStyle(sectionColumn, columnIndex, isHorizontalView) {
172
+ if (isHorizontalView) {
173
+ const gridColumnValue = this.getCssGridColumn(columnIndex);
174
+ this.renderer.setStyle(sectionColumn.nativeElement, 'grid-column', gridColumnValue);
175
+ }
176
+ else {
177
+ this.renderer.setStyle(sectionColumn.nativeElement, 'grid-column', 'unset');
129
178
  }
130
179
  }
131
180
  refreshSplit() {
132
181
  setTimeout(() => {
133
182
  if (this.sectionContainerRef) {
134
- const cssSplitString = this.getCssSplitString();
183
+ // const cssSplitString = this.getCssSplitString();
135
184
  // Go for all the columns in the columnsWrapper
136
185
  this.columnsElementRef.toArray().map((section, sectionIndex) => {
137
186
  // Horizontal (true) for large screens, false for small screens.
@@ -139,25 +188,30 @@ export class SectionComponent extends BaseDestroyerDirective {
139
188
  if (isHorizontalView) {
140
189
  this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'column');
141
190
  this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');
142
- this.renderer.setStyle(section.nativeElement, 'grid-template-columns', cssSplitString);
191
+ // this.renderer.setStyle(section.nativeElement, 'grid-template-columns', cssSplitString);
143
192
  }
144
193
  else {
145
194
  this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'row');
146
195
  this.renderer.setStyle(section.nativeElement, 'grid-template-columns', 'unset');
147
- this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');
196
+ // this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');
148
197
  // In runtime (or preview mode).
149
198
  if (!this.editable) {
150
- const cssSplitArray = cssSplitString.split(' ');
151
- // If there are some hidden columns change the column width to 0 (for cut the spacing in the grid-template-rows).
152
- this.columns.forEach((column, index) => {
153
- if (!column.BlockContainer) {
154
- cssSplitArray[index] = '0';
155
- }
156
- });
157
- this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'auto');
199
+ // const cssSplitArray = cssSplitString.split(' ');
200
+ // // If there are some hidden columns change the column width to 0 (for cut the spacing in the grid-template-rows).
201
+ // this.columns.forEach((column, index) => {
202
+ // if (!column.BlockContainer) {
203
+ // cssSplitArray[index] = '0';
204
+ // }
205
+ // });
158
206
  //this.renderer.setStyle(section.nativeElement, 'grid-template-rows', cssSplitArray.join(' '));
207
+ this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'auto');
159
208
  }
160
209
  }
210
+ // Go for all the columns in the section and set there style.
211
+ const sectionColumns = section.nativeElement.querySelectorAll('.section-column');
212
+ for (var columnIndex = 0; columnIndex < sectionColumns.length; columnIndex++) {
213
+ this.setSectionColumnStyle(sectionColumns[columnIndex], columnIndex, isHorizontalView);
214
+ }
161
215
  });
162
216
  }
163
217
  }, 0);
@@ -292,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
292
346
  type: HostBinding,
293
347
  args: ['style.height']
294
348
  }] } });
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9sYXlvdXQtYnVpbGRlci9zZWN0aW9uL3NlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvbGF5b3V0LWJ1aWxkZXIvc2VjdGlvbi9zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsV0FBVyxFQUFnQixLQUFLLEVBQXVFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEwsT0FBTyxFQUFFLHNCQUFzQixFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFTdEcsTUFBTSxPQUFPLGdCQUFpQixTQUFRLHNCQUFzQjtJQXlHeEQsWUFDWSxRQUFtQixFQUNuQiw0QkFBMEQ7UUFHbEUsS0FBSyxFQUFFLENBQUM7UUFKQSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFyRzdELFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRVgsV0FBTSxHQUEwQixTQUFTLENBQUM7UUFVMUMsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFVeEMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBVzFCLGFBQVEsR0FBbUMsRUFBRSxDQUFDO1FBUzlDLFlBQU8sR0FBeUIsRUFBRSxDQUFDO1FBYTNDLG1CQUFjLEdBQUcsT0FBTyxDQUFDO1FBR3pCLGdCQUFXLEdBQUcsT0FBTyxDQUFDO1FBRVosNEJBQXVCLEdBQWEsRUFBRSxDQUFDO1FBcUJqRCx5Q0FBeUM7UUFDL0IsMkJBQXNCLEdBQUcsRUFBRSxDQUFDO1FBRTVCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLGtDQUE2QixHQUFHLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUVyRCw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDakMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBUTdCLENBQUM7SUFyR0QsSUFDSSxLQUFLLENBQUMsS0FBNEI7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUdELElBQ0ksTUFBTSxDQUFDLEtBQXlCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxJQUNJLGdCQUFnQixDQUFDLEtBQWM7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUN6RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFHRCxJQUNJLE9BQU8sQ0FBQyxLQUFxQztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFDSSxNQUFNLENBQUMsS0FBMkI7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUNELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBWUQsNkJBQTZCO0lBQzdCLDJDQUEyQztJQUMzQyw4QkFBOEI7SUFDOUIsMkJBQTJCO0lBQzNCLElBQUk7SUFDSixJQUFjLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsYUFBYSxDQUFDO0lBQzNELENBQUM7SUFHRCxJQUFjLFVBQVUsQ0FBQyxLQUF3QjtRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFjLFVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUEyQk8sZ0NBQWdDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN0RDtJQUNMLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyw2QkFBNkI7UUFDakMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDaEIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssYUFBYTtnQkFDZCxPQUFPLGFBQWEsQ0FBQztZQUN6QixLQUFLLGFBQWE7Z0JBQ2QsT0FBTyxhQUFhLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssYUFBYTtnQkFDZCxPQUFPLGFBQWEsQ0FBQztZQUN6QixLQUFLLGFBQWE7Z0JBQ2QsT0FBTyxhQUFhLENBQUM7WUFDekIsS0FBSyxpQkFBaUI7Z0JBQ2xCLE9BQU8saUJBQWlCLENBQUM7WUFDN0IsS0FBSyxTQUFTO2dCQUNWLE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssU0FBUztnQkFDVixPQUFPLFNBQVMsQ0FBQztZQUNyQixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxTQUFTLENBQUM7WUFDckIsU0FBUyxrQkFBa0I7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVPLFlBQVk7UUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUMxQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFFaEQsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFO29CQUMzRCxnRUFBZ0U7b0JBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUM7b0JBRTlFLElBQUksZ0JBQWdCLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQzFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQzdFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxDQUFDLENBQUM7cUJBQzFGO3lCQUFNO3dCQUNILElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBRTdFLGdDQUFnQzt3QkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7NEJBQ2hCLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBRWhELGlIQUFpSDs0QkFDakgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0NBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO29DQUN4QixhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO2lDQUM5Qjs0QkFDTCxDQUFDLENBQUMsQ0FBQzs0QkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxDQUFDOzRCQUM1RSwrRkFBK0Y7eUJBQ2xHO3FCQUNKO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO1NBQy9EO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBd0MsRUFBRSxpQkFBcUM7UUFDdkYsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLDRCQUE0QixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbkcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4RixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUVILG9GQUFvRjtRQUNwRiw4QkFBOEI7UUFDOUIsTUFBTTtRQUVOLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDbEcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsNEJBQTRCLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLHVCQUE0QixFQUFFLEVBQUU7Z0JBQ2xJLElBQUksQ0FBQyx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUNoRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0UsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGdCQUFxQixFQUFFLEVBQUU7Z0JBQzdHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztnQkFFekMsSUFBSSxnQkFBZ0IsS0FBSyxFQUFFLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO2lCQUMzQztxQkFBTTtvQkFDSCwrRkFBK0Y7b0JBQy9GLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztvQkFDakYsSUFBSSxZQUFZLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxRQUFRLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7d0JBQ3BHLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7cUJBQ3RDO2lCQUNKO1lBRUwsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsNEJBQTRCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGtCQUF1QixFQUFFLEVBQUU7Z0JBQ2pILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQTRCO1FBQzVDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBcUQ7UUFDaEUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxXQUFtQjtRQUNoQyxPQUFPLENBQUMsSUFBYSxFQUFFLElBQWlCLEVBQUUsRUFBRTtZQUN4QyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzdGLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFtQjtRQUMzQixJQUFJLENBQUMsNEJBQTRCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQWtCO1FBQ3ZDLEVBQUU7SUFDTixDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBbUI7UUFDekMsRUFBRTtJQUNOLENBQUM7OzZHQXRUUSxnQkFBZ0I7aUdBQWhCLGdCQUFnQiwra0JDWjdCLDR2SEE0Q0E7MkZEaENhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDSSxTQUFTOzJJQUtZLG1CQUFtQjtzQkFBakQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ0csaUJBQWlCO3NCQUFoRCxZQUFZO3VCQUFDLGdCQUFnQjtnQkFFckIsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUlGLEtBQUs7c0JBRFIsS0FBSztnQkFXRixNQUFNO3NCQURULEtBQUs7Z0JBV0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVlGLE9BQU87c0JBRFYsS0FBSztnQkFVRixNQUFNO3NCQURULEtBQUs7Z0JBU0csVUFBVTtzQkFBbEIsS0FBSztnQkFHTixjQUFjO3NCQURiLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUkvQixXQUFXO3NCQURWLFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBRdWVyeUxpc3QsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJhZ0VuZCwgQ2RrRHJhZ0VudGVyLCBDZGtEcmFnRXhpdCwgQ2RrRHJhZ1N0YXJ0LCBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRGF0YVZpZXdTY3JlZW5TaXplLCBTcGxpdFR5cGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsnO1xuaW1wb3J0IHsgQmFzZURlc3Ryb3llckRpcmVjdGl2ZSwgUGVwTGF5b3V0U2VydmljZSwgUGVwU2NyZWVuU2l6ZVR5cGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBMYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlIH0gZnJvbSAnLi4vbGF5b3V0LWJ1aWxkZXItaW50ZXJuYWwuc2VydmljZSc7XG5pbXBvcnQgeyBJUGVwTGF5b3V0U2VjdGlvbkNvbHVtbiwgUGVwTGF5b3V0U2l6ZVR5cGUgfSBmcm9tICcuLi9sYXlvdXQtYnVpbGRlci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlY3Rpb24uY29tcG9uZW50LnNjc3MnLCAnLi9zZWN0aW9uLmNvbXBvbmVudC50aGVtZS5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VEZXN0cm95ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ3NlY3Rpb25Db250YWluZXInKSBzZWN0aW9uQ29udGFpbmVyUmVmITogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkcmVuKCdjb2x1bW5zV3JhcHBlcicpIGNvbHVtbnNFbGVtZW50UmVmITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQElucHV0KCkgYmxvY2tUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGtleSA9ICcnO1xuICAgIEBJbnB1dCgpIG5hbWUgPSAnJztcblxuICAgIHByaXZhdGUgX3NwbGl0OiBTcGxpdFR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgQElucHV0KClcbiAgICBzZXQgc3BsaXQodmFsdWU6IFNwbGl0VHlwZSB8IHVuZGVmaW5lZCApIHtcbiAgICAgICAgdGhpcy5fc3BsaXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoU3BsaXQoKTtcbiAgICB9XG4gICAgZ2V0IHNwbGl0KCk6IFNwbGl0VHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zcGxpdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKVxuICAgIHNldCBoZWlnaHQodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9oZWlnaHQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRTdHlsZUhlaWdodCgpO1xuICAgIH1cbiAgICBnZXQgaGVpZ2h0KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sbGFwc2VPblRhYmxldCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbGxhcHNlT25UYWJsZXQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fY29sbGFwc2VPblRhYmxldCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnBlcFNjcmVlblNpemVUb0ZsaXBUb1ZlcnRpY2FsID0gdmFsdWUgPyBQZXBTY3JlZW5TaXplVHlwZS5NRCA6IFBlcFNjcmVlblNpemVUeXBlLlhTO1xuICAgICAgICB0aGlzLnJlZnJlc2hTcGxpdCgpO1xuICAgIH1cbiAgICBnZXQgY29sbGFwc2VPblRhYmxldCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbGxhcHNlT25UYWJsZXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sdW1uczogQXJyYXk8SVBlcExheW91dFNlY3Rpb25Db2x1bW4+ID0gW107XG4gICAgQElucHV0KClcbiAgICBzZXQgY29sdW1ucyh2YWx1ZTogQXJyYXk8SVBlcExheW91dFNlY3Rpb25Db2x1bW4+KSB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB9XG4gICAgZ2V0IGNvbHVtbnMoKTogQXJyYXk8SVBlcExheW91dFNlY3Rpb25Db2x1bW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgX2hpZGVJbjogRGF0YVZpZXdTY3JlZW5TaXplW10gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBoaWRlSW4odmFsdWU6IERhdGFWaWV3U2NyZWVuU2l6ZVtdKSB7XG4gICAgICAgIHRoaXMuX2hpZGVJbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldElmSGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlKCk7XG4gICAgfVxuICAgIGdldCBoaWRlSW4oKTogRGF0YVZpZXdTY3JlZW5TaXplW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUluO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGNvbHVtbnNHYXAhOiBQZXBMYXlvdXRTaXplVHlwZTtcbiAgICAgICAgXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtaGVpZ2h0JylcbiAgICBzdHlsZU1heEhlaWdodCA9ICd1bnNldCc7XG4gICAgXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKVxuICAgIHN0eWxlSGVpZ2h0ID0gJ3Vuc2V0JztcbiAgICBcbiAgICBwcm90ZWN0ZWQgc2VjdGlvbnNDb2x1bW5zRHJvcExpc3Q6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBwcml2YXRlIF9lZGl0YWJsZSA9IGZhbHNlO1xuICAgIC8vIHByb3RlY3RlZCBzZXQgZWRpdGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAvLyAgICAgdGhpcy5fZWRpdGFibGUgPSB2YWx1ZTtcbiAgICAvLyAgICAgdGhpcy5yZWZyZXNoU3BsaXQoKTtcbiAgICAvLyB9XG4gICAgcHJvdGVjdGVkIGdldCBlZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5lZGl0YWJsZVN0YXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NjcmVlblNpemUhOiBQZXBTY3JlZW5TaXplVHlwZTtcbiAgICBwcm90ZWN0ZWQgc2V0IHNjcmVlblNpemUodmFsdWU6IFBlcFNjcmVlblNpemVUeXBlKSB7XG4gICAgICAgIHRoaXMuX3NjcmVlblNpemUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoU3BsaXQoKTtcbiAgICAgICAgdGhpcy5zZXRTY3JlZW5UeXBlKCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBnZXQgc2NyZWVuU2l6ZSgpOiBQZXBTY3JlZW5TaXplVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JlZW5TaXplO1xuICAgIH1cblxuICAgIC8vIFBlcFNjcmVlblNpemVUeXBlID0gUGVwU2NyZWVuU2l6ZVR5cGU7XG4gICAgcHJvdGVjdGVkIHNlY3Rpb25Db2x1bW5LZXlQcmVmaXggPSAnJztcbiAgICBcbiAgICBwcm90ZWN0ZWQgaXNNYWluRWRpdG9yU3RhdGUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkU2VjdGlvbktleSA9ICcnO1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZEJsb2NrS2V5ID0gJyc7XG4gICAgXG4gICAgcHJvdGVjdGVkIGNvbnRhaW5zQmxvY2tzID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHNob3VsZFNldERlZmF1bHRIZWlnaHQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgcGVwU2NyZWVuU2l6ZVRvRmxpcFRvVmVydGljYWwgPSBQZXBTY3JlZW5TaXplVHlwZS5TTTtcbiAgICBwcm90ZWN0ZWQgc2NyZWVuVHlwZSE6IERhdGFWaWV3U2NyZWVuU2l6ZTtcbiAgICBwcm90ZWN0ZWQgaGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIGRyYWdnaW5nQmxvY2tLZXkgPSAnJztcbiAgICBwcm90ZWN0ZWQgZHJhZ2dpbmdTZWN0aW9uS2V5ID0gJyc7XG4gICAgcHJvdGVjdGVkIGhvdmVyU3RhdGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgbGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZTogTGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZSxcbiAgICAgICAgLy8gcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgICkgeyBcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUlmU2VjdGlvbkNvbnRhaW5zQmxvY2tzKCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5zQmxvY2tzID0gdGhpcy5jb2x1bW5zLnNvbWUoY29sdW1uID0+IGNvbHVtbi5CbG9ja0NvbnRhaW5lcik7XG5cbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdWxkU2V0RGVmYXVsdEhlaWdodCA9ICF0aGlzLmNvbnRhaW5zQmxvY2tzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTY3JlZW5UeXBlKCkge1xuICAgICAgICB0aGlzLnNjcmVlblR5cGUgPSB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UuZ2V0U2NyZWVuVHlwZSh0aGlzLnNjcmVlblNpemUpO1xuICAgICAgICB0aGlzLnNldElmSGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlKCk7XG4gICAgICAgIHRoaXMuc2V0U3R5bGVIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldElmSGlkZUZvckN1cnJlbnRTY3JlZW5UeXBlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhpZGVGb3JDdXJyZW50U2NyZWVuVHlwZSA9IHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5nZXRJc0hpZGRlbih0aGlzLmhpZGVJbiwgdGhpcy5zY3JlZW5UeXBlKTtcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBnZXRDc3NTcGxpdFN0cmluZygpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNwbGl0KSB7XG4gICAgICAgICAgICBjYXNlICcxLzIgMS8yJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzFmciAxZnInO1xuICAgICAgICAgICAgY2FzZSAnMS8yIDEvNCAxLzQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnMmZyIDFmciAxZnInO1xuICAgICAgICAgICAgY2FzZSAnMS8zIDEvMyAxLzMnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnMWZyIDFmciAxZnInO1xuICAgICAgICAgICAgY2FzZSAnMS8zIDIvMyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxZnIgMmZyJztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAxLzIgMS80JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzFmciAyZnIgMWZyJztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAxLzQgMS8yJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzFmciAxZnIgMmZyJztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAxLzQgMS80IDEvNCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxZnIgMWZyIDFmciAxZnInO1xuICAgICAgICAgICAgY2FzZSAnMS80IDMvNCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxZnIgM2ZyJztcbiAgICAgICAgICAgIGNhc2UgJzIvMyAxLzMnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnMmZyIDFmcic7XG4gICAgICAgICAgICBjYXNlICczLzQgMS80JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzNmciAxZnInO1xuICAgICAgICAgICAgZGVmYXVsdDogLy8gRm9yIG9uZSBjb2x1bW4uXG4gICAgICAgICAgICAgICAgcmV0dXJuICcxZnInO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoU3BsaXQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VjdGlvbkNvbnRhaW5lclJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNzc1NwbGl0U3RyaW5nID0gdGhpcy5nZXRDc3NTcGxpdFN0cmluZygpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIEdvIGZvciBhbGwgdGhlIGNvbHVtbnMgaW4gdGhlIGNvbHVtbnNXcmFwcGVyXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zRWxlbWVudFJlZi50b0FycmF5KCkubWFwKChzZWN0aW9uLCBzZWN0aW9uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSG9yaXpvbnRhbCAodHJ1ZSkgZm9yIGxhcmdlIHNjcmVlbnMsIGZhbHNlIGZvciBzbWFsbCBzY3JlZW5zLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWxWaWV3ID0gdGhpcy5zY3JlZW5TaXplIDwgdGhpcy5wZXBTY3JlZW5TaXplVG9GbGlwVG9WZXJ0aWNhbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsVmlldykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLWF1dG8tZmxvdycsICdjb2x1bW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VjdGlvbi5uYXRpdmVFbGVtZW50LCAnZ3JpZC10ZW1wbGF0ZS1yb3dzJywgJ3Vuc2V0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNlY3Rpb24ubmF0aXZlRWxlbWVudCwgJ2dyaWQtdGVtcGxhdGUtY29sdW1ucycsIGNzc1NwbGl0U3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VjdGlvbi5uYXRpdmVFbGVtZW50LCAnZ3JpZC1hdXRvLWZsb3cnLCAncm93Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNlY3Rpb24ubmF0aXZlRWxlbWVudCwgJ2dyaWQtdGVtcGxhdGUtY29sdW1ucycsICd1bnNldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLXRlbXBsYXRlLXJvd3MnLCAndW5zZXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gcnVudGltZSAob3IgcHJldmlldyBtb2RlKS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzc1NwbGl0QXJyYXkgPSBjc3NTcGxpdFN0cmluZy5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBzb21lIGhpZGRlbiBjb2x1bW5zIGNoYW5nZSB0aGUgY29sdW1uIHdpZHRoIHRvIDAgKGZvciBjdXQgdGhlIHNwYWNpbmcgaW4gdGhlIGdyaWQtdGVtcGxhdGUtcm93cykuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2x1bW4uQmxvY2tDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc1NwbGl0QXJyYXlbaW5kZXhdID0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLXRlbXBsYXRlLXJvd3MnLCAnYXV0bycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLXRlbXBsYXRlLXJvd3MnLCBjc3NTcGxpdEFycmF5LmpvaW4oJyAnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdHlsZUhlaWdodCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMuaGVpZ2h0ID4gMCAmJiB0aGlzLnNjcmVlblR5cGUgIT09ICdQaGFibGV0Jykge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUhlaWdodCA9IHRoaXMuc3R5bGVNYXhIZWlnaHQgPSBgJHt0aGlzLmhlaWdodH1weGA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlSGVpZ2h0ID0gdGhpcy5zdHlsZU1heEhlaWdodCA9ICd1bnNldCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJc0RyYWdnaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kcmFnZ2luZ0Jsb2NrS2V5Lmxlbmd0aCA+IDAgJiYgdGhpcy5kcmFnZ2luZ1NlY3Rpb25LZXkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXRJc0hpZGRlbihoaWRlSW46IERhdGFWaWV3U2NyZWVuU2l6ZVtdIHwgdW5kZWZpbmVkLCBjdXJyZW50U2NyZWVuVHlwZTogRGF0YVZpZXdTY3JlZW5TaXplKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UuZ2V0SXNIaWRkZW4oaGlkZUluLCBjdXJyZW50U2NyZWVuVHlwZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5wcmV2aWV3TW9kZUNoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUocHJldmlld01vZGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoU3BsaXQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSnVzdCB0byBjYWxjdWxhdGUgaWYgc2VjdGlvbnMgY29udGFpbnMgYmxvY2tzXG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5zZWN0aW9uc0NoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSWZTZWN0aW9uQ29udGFpbnNCbG9ja3MoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gdGhpcy5sYXlvdXRTZXJ2aWNlLm9uUmVzaXplJC5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoc2l6ZTogYW55KSA9PiB7XG4gICAgICAgIC8vICAgICB0aGlzLnNjcmVlblNpemUgPSBzaXplO1xuICAgICAgICAvLyB9KTtcblxuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2Uuc2NyZWVuU2l6ZUNoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKHNpemU6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY3JlZW5TaXplID0gc2l6ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5zZWN0aW9uc0NvbHVtbnNEcm9wTGlzdENoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKHNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0ID0gc2VjdGlvbnNDb2x1bW5zRHJvcExpc3Q7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmVkaXRvckNoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKGVkaXRvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01haW5FZGl0b3JTdGF0ZSA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ2xheW91dC1idWlsZGVyJztcbiAgICAgICAgICAgICAgICB0aGlzLmlzRWRpdGluZyA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ3NlY3Rpb24nICYmIGVkaXRvci5pZCA9PT0gdGhpcy5rZXk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlY3Rpb25LZXkgPSBlZGl0b3IgJiYgZWRpdG9yLnR5cGUgPT09ICdzZWN0aW9uJyA/IGVkaXRvci5pZCA6ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCbG9ja0tleSA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ2Jsb2NrJyA/IGVkaXRvci5pZCA6ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5kcmFnZ2luZ0Jsb2NrS2V5LnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChkcmFnZ2luZ0Jsb2NrS2V5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nQmxvY2tLZXkgPSBkcmFnZ2luZ0Jsb2NrS2V5O1xuXG4gICAgICAgICAgICAgICAgaWYgKGRyYWdnaW5nQmxvY2tLZXkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSWZTZWN0aW9uQ29udGFpbnNCbG9ja3MoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBvbmx5IG9uZSBibG9jayBpbiB0aGUgc2VjdGlvbiBhbmQgbm93IGl0J3MgdGhpcyBibG9jayB0aGF0IHRoZSB1c2VyIGlzIGRyYWdnaW5nLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja3NMZW5ndGggPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uQmxvY2tDb250YWluZXIpLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2Nrc0xlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbHVtbnMuZmluZChjID0+IGMuQmxvY2tDb250YWluZXI/LkJsb2NrS2V5ID09PSB0aGlzLmRyYWdnaW5nQmxvY2tLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3VsZFNldERlZmF1bHRIZWlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmRyYWdnaW5nU2VjdGlvbktleS5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoZHJhZ2dpbmdTZWN0aW9uS2V5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nU2VjdGlvbktleSA9IGRyYWdnaW5nU2VjdGlvbktleTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWN0aW9uQ29sdW1uS2V5UHJlZml4ID0gdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmdldFNlY3Rpb25Db2x1bW5LZXkodGhpcy5rZXkpO1xuICAgIH1cblxuICAgIG9uRWRpdFNlY3Rpb25DbGljaygpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLm5hdmlnYXRlVG9FZGl0b3IoJ3NlY3Rpb24nLCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVTZWN0aW9uQ2xpY2soKSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5yZW1vdmVTZWN0aW9uKHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICBvbkhpZGVTZWN0aW9uQ2hhbmdlKGhpZGVJbjogRGF0YVZpZXdTY3JlZW5TaXplW10pIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmhpZGVTZWN0aW9uKHRoaXMua2V5LCBoaWRlSW4pO1xuICAgIH1cblxuICAgIG9uSGlkZUluTWVudU9wZW5lZCgpIHtcbiAgICAgICAgdGhpcy5ob3ZlclN0YXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkhpZGVJbk1lbnVDbG9zZWQoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJTdGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uQmxvY2tEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDxJUGVwTGF5b3V0U2VjdGlvbkNvbHVtbiwgYW55LCBhbnk+KSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5vbkJsb2NrRHJvcHBlZChldmVudCwgdGhpcy5rZXkpO1xuICAgIH1cblxuICAgIGNhbkRyb3BQcmVkaWNhdGUoY29sdW1uSW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gKGRyYWc6IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSAhdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmRvZXNDb2x1bW5Db250YWluQmxvY2sodGhpcy5rZXksIGNvbHVtbkluZGV4KTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25EcmFnU3RhcnQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2Uub25TZWN0aW9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLm9uU2VjdGlvbkRyYWdFbmQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uU2VjdGlvbkJsb2NrRHJhZ0V4aXRlZChldmVudDogQ2RrRHJhZ0V4aXQpIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBvblNlY3Rpb25CbG9ja0RyYWdFbnRlcmVkKGV2ZW50OiBDZGtEcmFnRW50ZXIpIHtcbiAgICAgICAgLy9cbiAgICB9XG59XG4iLCI8ZGl2ICNzZWN0aW9uQ29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGUgfHwgKGNvbnRhaW5zQmxvY2tzICYmICFoaWRlRm9yQ3VycmVudFNjcmVlblR5cGUpXCIgY2xhc3M9XCJzZWN0aW9uLWNvbnRhaW5lciBcIlxuICAgIFtuZ0NsYXNzXT1cInsgXG4gICAgICAgICdtb2JpbGUnOiBzY3JlZW5UeXBlID09PSAnUGhhYmxldCcsXG4gICAgICAgICdlZGl0YWJsZS1zdGF0ZSc6IGVkaXRhYmxlLCAnbWFpbi1lZGl0b3Itc3RhdGUnOiBpc01haW5FZGl0b3JTdGF0ZSwgJ2RlZmF1bHQtaGVpZ2h0Jzogc2hvdWxkU2V0RGVmYXVsdEhlaWdodCwgJ2FjdGl2ZS1zZWN0aW9uJzogaXNFZGl0aW5nLFxuICAgICAgICAnc2VjdGlvbi1oaWRkZW4tc3RhdGUnOiBoaWRlRm9yQ3VycmVudFNjcmVlblR5cGUsICdzZWN0aW9uLWlzLWRyYWdnaW5nJzogZHJhZ2dpbmdTZWN0aW9uS2V5ICE9PSAnJywgJ3Nob3ctaG92ZXItc3RhdGUnOiBob3ZlclN0YXRlIH1cIiBcbiAgICAgICAgY2RrRHJhZ0JvdW5kYXJ5PVwiLmxheW91dC1idWlsZGVyLXdyYXBwZXJcIiBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJrZXlcIiBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFlZGl0YWJsZSB8fCBzZWxlY3RlZFNlY3Rpb25LZXkubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEJsb2NrS2V5Lmxlbmd0aCA+IDBcIiAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kKCRldmVudClcIiBcbiAgICA+XG4gICAgPHBlcC1kcmFnZ2FibGUtaXRlbSAqbmdJZj1cImVkaXRhYmxlICYmIGlzTWFpbkVkaXRvclN0YXRlICYmIGRyYWdnaW5nU2VjdGlvbktleSA9PT0gJydcIiBjZGtEcmFnSGFuZGxlIHN0eWxlPVwiY3Vyc29yOiBncmFiO1wiXG4gICAgICAgIGNsYXNzPVwic2VjdGlvbi10b29sYmFyXCIgW25nQ2xhc3NdPVwieyAnaGlkZS10b29sYmFyJzogIWhvdmVyU3RhdGUgfVwiIFt0aXRsZV09XCJuYW1lXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgcGVwLWFjdGlvbnM+XG4gICAgICAgICAgICA8cGVwLWJ1dHRvbiBjbGFzc05hbWVzPVwiY2F1dGlvblwiIHNpemVUeXBlPVwieHNcIiBpY29uTmFtZT1cInN5c3RlbV9iaW5cIiAoYnV0dG9uQ2xpY2spPVwib25SZW1vdmVTZWN0aW9uQ2xpY2soKTtcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICA8aGlkZS1pbiBbaGlkZUluXT1cImhpZGVJblwiIChoaWRlSW5DaGFuZ2UpPVwib25IaWRlU2VjdGlvbkNoYW5nZSgkZXZlbnQpXCIgKG1lbnVDbG9zZWQpPVwib25IaWRlSW5NZW51Q2xvc2VkKClcIiAobWVudU9wZW5lZCk9XCJvbkhpZGVJbk1lbnVPcGVuZWQoKVwiPjwvaGlkZS1pbj5cbiAgICAgICAgICAgIDxwZXAtYnV0dG9uIHNpemVUeXBlPVwieHNcIiBpY29uTmFtZT1cInN5c3RlbV9lZGl0XCIgKGJ1dHRvbkNsaWNrKT1cIm9uRWRpdFNlY3Rpb25DbGljaygpO1wiPjwvcGVwLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9wZXAtZHJhZ2dhYmxlLWl0ZW0+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiZWRpdGFibGVcIiBjbGFzcz1cInNlY3Rpb24tYmFja2dyb3VuZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFjay10ZW1wbGF0ZVwiICpuZ0Zvcj1cImxldCBudW1iZXIgb2YgWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTFdXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAjY29sdW1uc1dyYXBwZXIgY2xhc3M9XCJjb2x1bW5zLXdyYXBwZXIgZ2FwLXt7IGNvbHVtbnNHYXAgfX1cIiBcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnbW9iaWxlJzogc2NyZWVuVHlwZSA9PT0gJ1BoYWJsZXQnLCAnaXMtZHJhZ2dpbmcnOiBlZGl0YWJsZSAmJiBnZXRJc0RyYWdnaW5nIH1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCBpPWluZGV4O1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRhYmxlIHx8IChjb2x1bW4uQmxvY2tDb250YWluZXIgJiYgY29sdW1uLkJsb2NrQ29udGFpbmVyLkJsb2NrS2V5ICYmIGNvbHVtbi5CbG9ja0NvbnRhaW5lci5CbG9ja0tleS5sZW5ndGggPiAwICYmICFnZXRJc0hpZGRlbihjb2x1bW4/LkJsb2NrQ29udGFpbmVyPy5IaWRlLCBzY3JlZW5UeXBlKSlcIiBcbiAgICAgICAgICAgICAgICBbaWRdPVwic2VjdGlvbkNvbHVtbktleVByZWZpeCArIGlcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlY3Rpb24tY29sdW1uIHt7c2NyZWVuU2l6ZSA8PSBwZXBTY3JlZW5TaXplVG9GbGlwVG9WZXJ0aWNhbCA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCd9fVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlLWNvbHVtbic6IHNlbGVjdGVkQmxvY2tLZXkgPT09IGNvbHVtbi5CbG9ja0NvbnRhaW5lcj8uQmxvY2tLZXksIFxuICAgICAgICAgICAgICAgICAgICAnaXMtaGlkZGVuJzogZ2V0SXNIaWRkZW4oY29sdW1uPy5CbG9ja0NvbnRhaW5lcj8uSGlkZSwgc2NyZWVuVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICdhbHJlYWR5LWNvbnRhaW5zLWJsb2NrJzogZWRpdGFibGUgJiYgY29sdW1uLkJsb2NrQ29udGFpbmVyICYmIGNvbHVtbi5CbG9ja0NvbnRhaW5lci5CbG9ja0tleSAmJiBjb2x1bW4uQmxvY2tDb250YWluZXIuQmxvY2tLZXkubGVuZ3RoID4gMCAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnaW5nQmxvY2tLZXkgJiYgZHJhZ2dpbmdCbG9ja0tleS5sZW5ndGggPiAwICYmIGNvbHVtbi5CbG9ja0NvbnRhaW5lci5CbG9ja0tleSAhPT0gZHJhZ2dpbmdCbG9ja0tleSB9XCJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3RPcmllbnRhdGlvbl09XCJzY3JlZW5TaXplIDw9IHBlcFNjcmVlblNpemVUb0ZsaXBUb1ZlcnRpY2FsID8gJ2hvcml6b250YWwnIDogJ3ZlcnRpY2FsJ1wiIFxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cInNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0XCJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uQmxvY2tEcm9wcGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImNhbkRyb3BQcmVkaWNhdGUoaSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzZWN0aW9uLWJsb2NrICpuZ0lmPVwiY29sdW1uLkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleVwiIGNsYXNzPVwic2VjdGlvbi1ibG9ja1wiIFtzZWN0aW9uS2V5XT1cImtleVwiIFtibG9ja1RlbXBsYXRlXT1cImJsb2NrVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbYmxvY2tDb250YWluZXJdPVwiY29sdW1uLkJsb2NrQ29udGFpbmVyXCIgW2VkaXRhYmxlXT1cImVkaXRhYmxlXCIgW2lzTWFpbkVkaXRvclN0YXRlXT1cImlzTWFpbkVkaXRvclN0YXRlXCIgW3NlY3Rpb25IZWlnaHRdPVwic3R5bGVIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInNlbGVjdGVkQmxvY2tLZXkgPT09IGNvbHVtbi5CbG9ja0NvbnRhaW5lcj8uQmxvY2tLZXlcIiBbc2NyZWVuVHlwZV09XCJzY3JlZW5UeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdFeGl0ZWQpPVwib25TZWN0aW9uQmxvY2tEcmFnRXhpdGVkKCRldmVudClcIiAoZHJhZ0VudGVyZWQpPVwib25TZWN0aW9uQmxvY2tEcmFnRW50ZXJlZCgkZXZlbnQpXCI+PC9zZWN0aW9uLWJsb2NrPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9sYXlvdXQtYnVpbGRlci9zZWN0aW9uL3NlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvbGF5b3V0LWJ1aWxkZXIvc2VjdGlvbi9zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsV0FBVyxFQUFnQixLQUFLLEVBQXVFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEwsT0FBTyxFQUFFLHNCQUFzQixFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFTdEcsTUFBTSxPQUFPLGdCQUFpQixTQUFRLHNCQUFzQjtJQXlHeEQsWUFDWSxRQUFtQixFQUNuQiw0QkFBMEQ7UUFHbEUsS0FBSyxFQUFFLENBQUM7UUFKQSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFyRzdELFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRVgsV0FBTSxHQUEwQixTQUFTLENBQUM7UUFVMUMsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFVeEMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBVzFCLGFBQVEsR0FBbUMsRUFBRSxDQUFDO1FBUzlDLFlBQU8sR0FBeUIsRUFBRSxDQUFDO1FBYTNDLG1CQUFjLEdBQUcsT0FBTyxDQUFDO1FBR3pCLGdCQUFXLEdBQUcsT0FBTyxDQUFDO1FBRVosNEJBQXVCLEdBQWEsRUFBRSxDQUFDO1FBcUJqRCx5Q0FBeUM7UUFDL0IsMkJBQXNCLEdBQUcsRUFBRSxDQUFDO1FBRTVCLHNCQUFpQixHQUFHLEtBQUssQ0FB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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbmQsIENka0RyYWdFbnRlciwgQ2RrRHJhZ0V4aXQsIENka0RyYWdTdGFydCwgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IERhdGFWaWV3U2NyZWVuU2l6ZSwgU3BsaXRUeXBlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL3BhcGktc2RrJztcbmltcG9ydCB7IEJhc2VEZXN0cm95ZXJEaXJlY3RpdmUsIFBlcExheW91dFNlcnZpY2UsIFBlcFNjcmVlblNpemVUeXBlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgTGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZSB9IGZyb20gJy4uL2xheW91dC1idWlsZGVyLWludGVybmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgSVBlcExheW91dFNlY3Rpb25Db2x1bW4sIFBlcExheW91dFNpemVUeXBlIH0gZnJvbSAnLi4vbGF5b3V0LWJ1aWxkZXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NlY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWN0aW9uLmNvbXBvbmVudC5zY3NzJywgJy4vc2VjdGlvbi5jb21wb25lbnQudGhlbWUuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlY3Rpb25Db21wb25lbnQgZXh0ZW5kcyBCYXNlRGVzdHJveWVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdzZWN0aW9uQ29udGFpbmVyJykgc2VjdGlvbkNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZHJlbignY29sdW1uc1dyYXBwZXInKSBjb2x1bW5zRWxlbWVudFJlZiE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpIGJsb2NrVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBrZXkgPSAnJztcbiAgICBASW5wdXQoKSBuYW1lID0gJyc7XG5cbiAgICBwcml2YXRlIF9zcGxpdDogU3BsaXRUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNwbGl0KHZhbHVlOiBTcGxpdFR5cGUgfCB1bmRlZmluZWQgKSB7XG4gICAgICAgIHRoaXMuX3NwbGl0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMucmVmcmVzaFNwbGl0KCk7XG4gICAgfVxuICAgIGdldCBzcGxpdCgpOiBTcGxpdFR5cGUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3BsaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgQElucHV0KClcbiAgICBzZXQgaGVpZ2h0KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0U3R5bGVIZWlnaHQoKTtcbiAgICB9XG4gICAgZ2V0IGhlaWdodCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbGxhcHNlT25UYWJsZXQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBjb2xsYXBzZU9uVGFibGV0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NvbGxhcHNlT25UYWJsZXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5wZXBTY3JlZW5TaXplVG9GbGlwVG9WZXJ0aWNhbCA9IHZhbHVlID8gUGVwU2NyZWVuU2l6ZVR5cGUuTUQgOiBQZXBTY3JlZW5TaXplVHlwZS5YUztcbiAgICAgICAgdGhpcy5yZWZyZXNoU3BsaXQoKTtcbiAgICB9XG4gICAgZ2V0IGNvbGxhcHNlT25UYWJsZXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xsYXBzZU9uVGFibGV0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbHVtbnM6IEFycmF5PElQZXBMYXlvdXRTZWN0aW9uQ29sdW1uPiA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbHVtbnModmFsdWU6IEFycmF5PElQZXBMYXlvdXRTZWN0aW9uQ29sdW1uPikge1xuICAgICAgICB0aGlzLl9jb2x1bW5zID0gdmFsdWUgfHwgW107XG4gICAgfVxuICAgIGdldCBjb2x1bW5zKCk6IEFycmF5PElQZXBMYXlvdXRTZWN0aW9uQ29sdW1uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIF9oaWRlSW46IERhdGFWaWV3U2NyZWVuU2l6ZVtdID0gW107XG4gICAgQElucHV0KClcbiAgICBzZXQgaGlkZUluKHZhbHVlOiBEYXRhVmlld1NjcmVlblNpemVbXSkge1xuICAgICAgICB0aGlzLl9oaWRlSW4gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRJZkhpZGVGb3JDdXJyZW50U2NyZWVuVHlwZSgpO1xuICAgIH1cbiAgICBnZXQgaGlkZUluKCk6IERhdGFWaWV3U2NyZWVuU2l6ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVJbjtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBjb2x1bW5zR2FwITogUGVwTGF5b3V0U2l6ZVR5cGU7XG4gICAgICAgIFxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LWhlaWdodCcpXG4gICAgc3R5bGVNYXhIZWlnaHQgPSAndW5zZXQnO1xuICAgIFxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JylcbiAgICBzdHlsZUhlaWdodCA9ICd1bnNldCc7XG4gICAgXG4gICAgcHJvdGVjdGVkIHNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gcHJpdmF0ZSBfZWRpdGFibGUgPSBmYWxzZTtcbiAgICAvLyBwcm90ZWN0ZWQgc2V0IGVkaXRhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgLy8gICAgIHRoaXMuX2VkaXRhYmxlID0gdmFsdWU7XG4gICAgLy8gICAgIHRoaXMucmVmcmVzaFNwbGl0KCk7XG4gICAgLy8gfVxuICAgIHByb3RlY3RlZCBnZXQgZWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UuZWRpdGFibGVTdGF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zY3JlZW5TaXplITogUGVwU2NyZWVuU2l6ZVR5cGU7XG4gICAgcHJvdGVjdGVkIHNldCBzY3JlZW5TaXplKHZhbHVlOiBQZXBTY3JlZW5TaXplVHlwZSkge1xuICAgICAgICB0aGlzLl9zY3JlZW5TaXplID0gdmFsdWU7XG4gICAgICAgIHRoaXMucmVmcmVzaFNwbGl0KCk7XG4gICAgICAgIHRoaXMuc2V0U2NyZWVuVHlwZSgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0IHNjcmVlblNpemUoKTogUGVwU2NyZWVuU2l6ZVR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2NyZWVuU2l6ZTtcbiAgICB9XG5cbiAgICAvLyBQZXBTY3JlZW5TaXplVHlwZSA9IFBlcFNjcmVlblNpemVUeXBlO1xuICAgIHByb3RlY3RlZCBzZWN0aW9uQ29sdW1uS2V5UHJlZml4ID0gJyc7XG4gICAgXG4gICAgcHJvdGVjdGVkIGlzTWFpbkVkaXRvclN0YXRlID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIGlzRWRpdGluZyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBzZWxlY3RlZFNlY3Rpb25LZXkgPSAnJztcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRCbG9ja0tleSA9ICcnO1xuICAgIFxuICAgIHByb3RlY3RlZCBjb250YWluc0Jsb2NrcyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBzaG91bGRTZXREZWZhdWx0SGVpZ2h0ID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHBlcFNjcmVlblNpemVUb0ZsaXBUb1ZlcnRpY2FsID0gUGVwU2NyZWVuU2l6ZVR5cGUuU007XG4gICAgcHJvdGVjdGVkIHNjcmVlblR5cGUhOiBEYXRhVmlld1NjcmVlblNpemU7XG4gICAgcHJvdGVjdGVkIGhpZGVGb3JDdXJyZW50U2NyZWVuVHlwZSA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBkcmFnZ2luZ0Jsb2NrS2V5ID0gJyc7XG4gICAgcHJvdGVjdGVkIGRyYWdnaW5nU2VjdGlvbktleSA9ICcnO1xuICAgIHByb3RlY3RlZCBob3ZlclN0YXRlID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2U6IExheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UsXG4gICAgICAgIC8vIHByaXZhdGUgbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSxcbiAgICApIHsgXG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVJZlNlY3Rpb25Db250YWluc0Jsb2NrcygpIHtcbiAgICAgICAgdGhpcy5jb250YWluc0Jsb2NrcyA9IHRoaXMuY29sdW1ucy5zb21lKGNvbHVtbiA9PiBjb2x1bW4uQmxvY2tDb250YWluZXIpO1xuXG4gICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNob3VsZFNldERlZmF1bHRIZWlnaHQgPSAhdGhpcy5jb250YWluc0Jsb2NrcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2NyZWVuVHlwZSgpIHtcbiAgICAgICAgdGhpcy5zY3JlZW5UeXBlID0gdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmdldFNjcmVlblR5cGUodGhpcy5zY3JlZW5TaXplKTtcbiAgICAgICAgdGhpcy5zZXRJZkhpZGVGb3JDdXJyZW50U2NyZWVuVHlwZSgpO1xuICAgICAgICB0aGlzLnNldFN0eWxlSGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJZkhpZGVGb3JDdXJyZW50U2NyZWVuVHlwZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRlRm9yQ3VycmVudFNjcmVlblR5cGUgPSB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UuZ2V0SXNIaWRkZW4odGhpcy5oaWRlSW4sIHRoaXMuc2NyZWVuVHlwZSk7XG4gICAgfVxuICAgIFxuICAgIC8vIHByaXZhdGUgZ2V0Q3NzU3BsaXRTdHJpbmcoKSB7XG4gICAgLy8gICAgIHN3aXRjaCAodGhpcy5zcGxpdCkge1xuICAgIC8vICAgICAgICAgY2FzZSAnMS8yIDEvMic6XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuICcxZnIgMWZyJztcbiAgICAvLyAgICAgICAgIGNhc2UgJzEvMiAxLzQgMS80JzpcbiAgICAvLyAgICAgICAgICAgICByZXR1cm4gJzJmciAxZnIgMWZyJztcbiAgICAvLyAgICAgICAgIGNhc2UgJzEvMyAxLzMgMS8zJzpcbiAgICAvLyAgICAgICAgICAgICByZXR1cm4gJzFmciAxZnIgMWZyJztcbiAgICAvLyAgICAgICAgIGNhc2UgJzEvMyAyLzMnOlxuICAgIC8vICAgICAgICAgICAgIHJldHVybiAnMWZyIDJmcic7XG4gICAgLy8gICAgICAgICBjYXNlICcxLzQgMS8yIDEvNCc6XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuICcxZnIgMmZyIDFmcic7XG4gICAgLy8gICAgICAgICBjYXNlICcxLzQgMS80IDEvMic6XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuICcxZnIgMWZyIDJmcic7XG4gICAgLy8gICAgICAgICBjYXNlICcxLzQgMS80IDEvNCAxLzQnOlxuICAgIC8vICAgICAgICAgICAgIHJldHVybiAnMWZyIDFmciAxZnIgMWZyJztcbiAgICAvLyAgICAgICAgIGNhc2UgJzEvNCAzLzQnOlxuICAgIC8vICAgICAgICAgICAgIHJldHVybiAnMWZyIDNmcic7XG4gICAgLy8gICAgICAgICBjYXNlICcyLzMgMS8zJzpcbiAgICAvLyAgICAgICAgICAgICByZXR1cm4gJzJmciAxZnInO1xuICAgIC8vICAgICAgICAgY2FzZSAnMy80IDEvNCc6XG4gICAgLy8gICAgICAgICAgICAgcmV0dXJuICczZnIgMWZyJztcbiAgICAvLyAgICAgICAgIGRlZmF1bHQ6IC8vIEZvciBvbmUgY29sdW1uLlxuICAgIC8vICAgICAgICAgICAgIHJldHVybiAnMWZyJztcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIHByaXZhdGUgZ2V0Q3NzR3JpZENvbHVtbihjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGxldCByZXMgPSAnMS8xMyc7XG4gICAgICAgIGxldCBncmlkQ29sdW1uVmFsdWVBcnIgPSBbJzEvMTMnXTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuc3BsaXQpIHtcbiAgICAgICAgICAgIGNhc2UgJzEvMiAxLzInOlxuICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5WYWx1ZUFyciA9IFsnMS83JywgJzcvMTMnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEvMiAxLzQgMS80JzpcbiAgICAgICAgICAgICAgICBncmlkQ29sdW1uVmFsdWVBcnIgPSBbJzEvNycsICc3LzEwJywgJzEwLzEzJ107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcxLzMgMS8zIDEvMyc6XG4gICAgICAgICAgICAgICAgZ3JpZENvbHVtblZhbHVlQXJyID0gWycxLzUnLCAnNS85JywgJzkvMTMnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEvMyAyLzMnOlxuICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5WYWx1ZUFyciA9IFsnMS81JywgJzUvMTMnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAxLzIgMS80JzpcbiAgICAgICAgICAgICAgICBncmlkQ29sdW1uVmFsdWVBcnIgPSBbJzEvNCcsICc0LzEwJywgJzEwLzEzJ107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcxLzQgMS80IDEvMic6XG4gICAgICAgICAgICAgICAgZ3JpZENvbHVtblZhbHVlQXJyID0gWycxLzQnLCAnNC83JywgJzcvMTMnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAxLzQgMS80IDEvNCc6XG4gICAgICAgICAgICAgICAgZ3JpZENvbHVtblZhbHVlQXJyID0gWycxLzQnLCAnNC83JywgJzcvMTAnLCAnMTAvMTMnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEvNCAzLzQnOlxuICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5WYWx1ZUFyciA9IFsnMS80JywgJzQvMTMnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzIvMyAxLzMnOlxuICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5WYWx1ZUFyciA9IFsnMS85JywgJzkvMTMnXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzMvNCAxLzQnOlxuICAgICAgICAgICAgICAgIGdyaWRDb2x1bW5WYWx1ZUFyciA9IFsnMS8xMCcsICcxMC8xMyddO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdyaWRDb2x1bW5WYWx1ZUFyci5sZW5ndGggPiBjb2x1bW5JbmRleCkge1xuICAgICAgICAgICAgcmVzID0gZ3JpZENvbHVtblZhbHVlQXJyW2NvbHVtbkluZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWN0aW9uQ29sdW1uU3R5bGUoc2VjdGlvbkNvbHVtbjogRWxlbWVudFJlZiwgY29sdW1uSW5kZXg6IG51bWJlciwgaXNIb3Jpem9udGFsVmlldzogYm9vbGVhbikge1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWxWaWV3KSB7XG4gICAgICAgICAgICBjb25zdCBncmlkQ29sdW1uVmFsdWUgPSB0aGlzLmdldENzc0dyaWRDb2x1bW4oY29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uQ29sdW1uLm5hdGl2ZUVsZW1lbnQsICdncmlkLWNvbHVtbicsIGdyaWRDb2x1bW5WYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNlY3Rpb25Db2x1bW4ubmF0aXZlRWxlbWVudCwgJ2dyaWQtY29sdW1uJywgJ3Vuc2V0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hTcGxpdCgpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWN0aW9uQ29udGFpbmVyUmVmKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgY3NzU3BsaXRTdHJpbmcgPSB0aGlzLmdldENzc1NwbGl0U3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gR28gZm9yIGFsbCB0aGUgY29sdW1ucyBpbiB0aGUgY29sdW1uc1dyYXBwZXJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFbGVtZW50UmVmLnRvQXJyYXkoKS5tYXAoKHNlY3Rpb24sIHNlY3Rpb25JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBIb3Jpem9udGFsICh0cnVlKSBmb3IgbGFyZ2Ugc2NyZWVucywgZmFsc2UgZm9yIHNtYWxsIHNjcmVlbnMuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbFZpZXcgPSB0aGlzLnNjcmVlblNpemUgPCB0aGlzLnBlcFNjcmVlblNpemVUb0ZsaXBUb1ZlcnRpY2FsO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWxWaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNlY3Rpb24ubmF0aXZlRWxlbWVudCwgJ2dyaWQtYXV0by1mbG93JywgJ2NvbHVtbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLXRlbXBsYXRlLXJvd3MnLCAndW5zZXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VjdGlvbi5uYXRpdmVFbGVtZW50LCAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJywgY3NzU3BsaXRTdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzZWN0aW9uLm5hdGl2ZUVsZW1lbnQsICdncmlkLWF1dG8tZmxvdycsICdyb3cnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VjdGlvbi5uYXRpdmVFbGVtZW50LCAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJywgJ3Vuc2V0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNlY3Rpb24ubmF0aXZlRWxlbWVudCwgJ2dyaWQtdGVtcGxhdGUtcm93cycsICd1bnNldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiBydW50aW1lIChvciBwcmV2aWV3IG1vZGUpLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVkaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgY3NzU3BsaXRBcnJheSA9IGNzc1NwbGl0U3RyaW5nLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLy8gSWYgdGhlcmUgYXJlIHNvbWUgaGlkZGVuIGNvbHVtbnMgY2hhbmdlIHRoZSBjb2x1bW4gd2lkdGggdG8gMCAoZm9yIGN1dCB0aGUgc3BhY2luZyBpbiB0aGUgZ3JpZC10ZW1wbGF0ZS1yb3dzKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBpZiAoIWNvbHVtbi5CbG9ja0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgY3NzU3BsaXRBcnJheVtpbmRleF0gPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VjdGlvbi5uYXRpdmVFbGVtZW50LCAnZ3JpZC10ZW1wbGF0ZS1yb3dzJywgY3NzU3BsaXRBcnJheS5qb2luKCcgJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2VjdGlvbi5uYXRpdmVFbGVtZW50LCAnZ3JpZC10ZW1wbGF0ZS1yb3dzJywgJ2F1dG8nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEdvIGZvciBhbGwgdGhlIGNvbHVtbnMgaW4gdGhlIHNlY3Rpb24gYW5kIHNldCB0aGVyZSBzdHlsZS5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbkNvbHVtbnMgPSBzZWN0aW9uLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlY3Rpb24tY29sdW1uJyk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjb2x1bW5JbmRleCA9IDA7IGNvbHVtbkluZGV4IDwgc2VjdGlvbkNvbHVtbnMubGVuZ3RoOyBjb2x1bW5JbmRleCsrKSB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWN0aW9uQ29sdW1uU3R5bGUoc2VjdGlvbkNvbHVtbnNbY29sdW1uSW5kZXhdLCBjb2x1bW5JbmRleCwgaXNIb3Jpem9udGFsVmlldyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdHlsZUhlaWdodCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMuaGVpZ2h0ID4gMCAmJiB0aGlzLnNjcmVlblR5cGUgIT09ICdQaGFibGV0Jykge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUhlaWdodCA9IHRoaXMuc3R5bGVNYXhIZWlnaHQgPSBgJHt0aGlzLmhlaWdodH1weGA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlSGVpZ2h0ID0gdGhpcy5zdHlsZU1heEhlaWdodCA9ICd1bnNldCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJc0RyYWdnaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kcmFnZ2luZ0Jsb2NrS2V5Lmxlbmd0aCA+IDAgJiYgdGhpcy5kcmFnZ2luZ1NlY3Rpb25LZXkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXRJc0hpZGRlbihoaWRlSW46IERhdGFWaWV3U2NyZWVuU2l6ZVtdIHwgdW5kZWZpbmVkLCBjdXJyZW50U2NyZWVuVHlwZTogRGF0YVZpZXdTY3JlZW5TaXplKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2UuZ2V0SXNIaWRkZW4oaGlkZUluLCBjdXJyZW50U2NyZWVuVHlwZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5wcmV2aWV3TW9kZUNoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUocHJldmlld01vZGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoU3BsaXQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSnVzdCB0byBjYWxjdWxhdGUgaWYgc2VjdGlvbnMgY29udGFpbnMgYmxvY2tzXG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5zZWN0aW9uc0NoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSWZTZWN0aW9uQ29udGFpbnNCbG9ja3MoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gdGhpcy5sYXlvdXRTZXJ2aWNlLm9uUmVzaXplJC5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoc2l6ZTogYW55KSA9PiB7XG4gICAgICAgIC8vICAgICB0aGlzLnNjcmVlblNpemUgPSBzaXplO1xuICAgICAgICAvLyB9KTtcblxuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2Uuc2NyZWVuU2l6ZUNoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKHNpemU6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY3JlZW5TaXplID0gc2l6ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5zZWN0aW9uc0NvbHVtbnNEcm9wTGlzdENoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKHNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0ID0gc2VjdGlvbnNDb2x1bW5zRHJvcExpc3Q7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmVkaXRvckNoYW5nZSQucGlwZSh0aGlzLmdldERlc3Ryb3llcigpKS5zdWJzY3JpYmUoKGVkaXRvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01haW5FZGl0b3JTdGF0ZSA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ2xheW91dC1idWlsZGVyJztcbiAgICAgICAgICAgICAgICB0aGlzLmlzRWRpdGluZyA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ3NlY3Rpb24nICYmIGVkaXRvci5pZCA9PT0gdGhpcy5rZXk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlY3Rpb25LZXkgPSBlZGl0b3IgJiYgZWRpdG9yLnR5cGUgPT09ICdzZWN0aW9uJyA/IGVkaXRvci5pZCA6ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRCbG9ja0tleSA9IGVkaXRvciAmJiBlZGl0b3IudHlwZSA9PT0gJ2Jsb2NrJyA/IGVkaXRvci5pZCA6ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5kcmFnZ2luZ0Jsb2NrS2V5LnBpcGUodGhpcy5nZXREZXN0cm95ZXIoKSkuc3Vic2NyaWJlKChkcmFnZ2luZ0Jsb2NrS2V5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nQmxvY2tLZXkgPSBkcmFnZ2luZ0Jsb2NrS2V5O1xuXG4gICAgICAgICAgICAgICAgaWYgKGRyYWdnaW5nQmxvY2tLZXkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlSWZTZWN0aW9uQ29udGFpbnNCbG9ja3MoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBvbmx5IG9uZSBibG9jayBpbiB0aGUgc2VjdGlvbiBhbmQgbm93IGl0J3MgdGhpcyBibG9jayB0aGF0IHRoZSB1c2VyIGlzIGRyYWdnaW5nLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja3NMZW5ndGggPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uQmxvY2tDb250YWluZXIpLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2Nrc0xlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbHVtbnMuZmluZChjID0+IGMuQmxvY2tDb250YWluZXI/LkJsb2NrS2V5ID09PSB0aGlzLmRyYWdnaW5nQmxvY2tLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3VsZFNldERlZmF1bHRIZWlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmRyYWdnaW5nU2VjdGlvbktleS5waXBlKHRoaXMuZ2V0RGVzdHJveWVyKCkpLnN1YnNjcmliZSgoZHJhZ2dpbmdTZWN0aW9uS2V5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nU2VjdGlvbktleSA9IGRyYWdnaW5nU2VjdGlvbktleTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWN0aW9uQ29sdW1uS2V5UHJlZml4ID0gdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmdldFNlY3Rpb25Db2x1bW5LZXkodGhpcy5rZXkpO1xuICAgIH1cblxuICAgIG9uRWRpdFNlY3Rpb25DbGljaygpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLm5hdmlnYXRlVG9FZGl0b3IoJ3NlY3Rpb24nLCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVTZWN0aW9uQ2xpY2soKSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5yZW1vdmVTZWN0aW9uKHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICBvbkhpZGVTZWN0aW9uQ2hhbmdlKGhpZGVJbjogRGF0YVZpZXdTY3JlZW5TaXplW10pIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmhpZGVTZWN0aW9uKHRoaXMua2V5LCBoaWRlSW4pO1xuICAgIH1cblxuICAgIG9uSGlkZUluTWVudU9wZW5lZCgpIHtcbiAgICAgICAgdGhpcy5ob3ZlclN0YXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkhpZGVJbk1lbnVDbG9zZWQoKSB7XG4gICAgICAgIHRoaXMuaG92ZXJTdGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uQmxvY2tEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDxJUGVwTGF5b3V0U2VjdGlvbkNvbHVtbiwgYW55LCBhbnk+KSB7XG4gICAgICAgIHRoaXMubGF5b3V0QnVpbGRlckludGVybmFsU2VydmljZS5vbkJsb2NrRHJvcHBlZChldmVudCwgdGhpcy5rZXkpO1xuICAgIH1cblxuICAgIGNhbkRyb3BQcmVkaWNhdGUoY29sdW1uSW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gKGRyYWc6IENka0RyYWcsIGRyb3A6IENka0Ryb3BMaXN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSAhdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLmRvZXNDb2x1bW5Db250YWluQmxvY2sodGhpcy5rZXksIGNvbHVtbkluZGV4KTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25EcmFnU3RhcnQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xuICAgICAgICB0aGlzLmxheW91dEJ1aWxkZXJJbnRlcm5hbFNlcnZpY2Uub25TZWN0aW9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRCdWlsZGVySW50ZXJuYWxTZXJ2aWNlLm9uU2VjdGlvbkRyYWdFbmQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uU2VjdGlvbkJsb2NrRHJhZ0V4aXRlZChldmVudDogQ2RrRHJhZ0V4aXQpIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBvblNlY3Rpb25CbG9ja0RyYWdFbnRlcmVkKGV2ZW50OiBDZGtEcmFnRW50ZXIpIHtcbiAgICAgICAgLy9cbiAgICB9XG59XG4iLCI8ZGl2ICNzZWN0aW9uQ29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGUgfHwgKGNvbnRhaW5zQmxvY2tzICYmICFoaWRlRm9yQ3VycmVudFNjcmVlblR5cGUpXCIgY2xhc3M9XCJzZWN0aW9uLWNvbnRhaW5lciBcIlxuICAgIFtuZ0NsYXNzXT1cInsgXG4gICAgICAgICdtb2JpbGUnOiBzY3JlZW5UeXBlID09PSAnUGhhYmxldCcsXG4gICAgICAgICdlZGl0YWJsZS1zdGF0ZSc6IGVkaXRhYmxlLCAnbWFpbi1lZGl0b3Itc3RhdGUnOiBpc01haW5FZGl0b3JTdGF0ZSwgJ2RlZmF1bHQtaGVpZ2h0Jzogc2hvdWxkU2V0RGVmYXVsdEhlaWdodCwgJ2FjdGl2ZS1zZWN0aW9uJzogaXNFZGl0aW5nLFxuICAgICAgICAnc2VjdGlvbi1oaWRkZW4tc3RhdGUnOiBoaWRlRm9yQ3VycmVudFNjcmVlblR5cGUsICdzZWN0aW9uLWlzLWRyYWdnaW5nJzogZHJhZ2dpbmdTZWN0aW9uS2V5ICE9PSAnJywgJ3Nob3ctaG92ZXItc3RhdGUnOiBob3ZlclN0YXRlIH1cIiBcbiAgICAgICAgY2RrRHJhZ0JvdW5kYXJ5PVwiLmxheW91dC1idWlsZGVyLXdyYXBwZXJcIiBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJrZXlcIiBbY2RrRHJhZ0Rpc2FibGVkXT1cIiFlZGl0YWJsZSB8fCBzZWxlY3RlZFNlY3Rpb25LZXkubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEJsb2NrS2V5Lmxlbmd0aCA+IDBcIiAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kKCRldmVudClcIiBcbiAgICA+XG4gICAgPHBlcC1kcmFnZ2FibGUtaXRlbSAqbmdJZj1cImVkaXRhYmxlICYmIGlzTWFpbkVkaXRvclN0YXRlICYmIGRyYWdnaW5nU2VjdGlvbktleSA9PT0gJydcIiBjZGtEcmFnSGFuZGxlIHN0eWxlPVwiY3Vyc29yOiBncmFiO1wiXG4gICAgICAgIGNsYXNzPVwic2VjdGlvbi10b29sYmFyXCIgW25nQ2xhc3NdPVwieyAnaGlkZS10b29sYmFyJzogIWhvdmVyU3RhdGUgfVwiIFt0aXRsZV09XCJuYW1lXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgcGVwLWFjdGlvbnM+XG4gICAgICAgICAgICA8cGVwLWJ1dHRvbiBjbGFzc05hbWVzPVwiY2F1dGlvblwiIHNpemVUeXBlPVwieHNcIiBpY29uTmFtZT1cInN5c3RlbV9iaW5cIiAoYnV0dG9uQ2xpY2spPVwib25SZW1vdmVTZWN0aW9uQ2xpY2soKTtcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICA8aGlkZS1pbiBbaGlkZUluXT1cImhpZGVJblwiIChoaWRlSW5DaGFuZ2UpPVwib25IaWRlU2VjdGlvbkNoYW5nZSgkZXZlbnQpXCIgKG1lbnVDbG9zZWQpPVwib25IaWRlSW5NZW51Q2xvc2VkKClcIiAobWVudU9wZW5lZCk9XCJvbkhpZGVJbk1lbnVPcGVuZWQoKVwiPjwvaGlkZS1pbj5cbiAgICAgICAgICAgIDxwZXAtYnV0dG9uIHNpemVUeXBlPVwieHNcIiBpY29uTmFtZT1cInN5c3RlbV9lZGl0XCIgKGJ1dHRvbkNsaWNrKT1cIm9uRWRpdFNlY3Rpb25DbGljaygpO1wiPjwvcGVwLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9wZXAtZHJhZ2dhYmxlLWl0ZW0+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiZWRpdGFibGVcIiBjbGFzcz1cInNlY3Rpb24tYmFja2dyb3VuZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFjay10ZW1wbGF0ZVwiICpuZ0Zvcj1cImxldCBudW1iZXIgb2YgWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTFdXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAjY29sdW1uc1dyYXBwZXIgY2xhc3M9XCJjb2x1bW5zLXdyYXBwZXIgZ2FwLXt7IGNvbHVtbnNHYXAgfX1cIiBcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnbW9iaWxlJzogc2NyZWVuVHlwZSA9PT0gJ1BoYWJsZXQnLCAnaXMtZHJhZ2dpbmcnOiBlZGl0YWJsZSAmJiBnZXRJc0RyYWdnaW5nIH1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCBpPWluZGV4O1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRhYmxlIHx8IChjb2x1bW4uQmxvY2tDb250YWluZXIgJiYgY29sdW1uLkJsb2NrQ29udGFpbmVyLkJsb2NrS2V5ICYmIGNvbHVtbi5CbG9ja0NvbnRhaW5lci5CbG9ja0tleS5sZW5ndGggPiAwICYmICFnZXRJc0hpZGRlbihjb2x1bW4/LkJsb2NrQ29udGFpbmVyPy5IaWRlLCBzY3JlZW5UeXBlKSlcIiBcbiAgICAgICAgICAgICAgICBbaWRdPVwic2VjdGlvbkNvbHVtbktleVByZWZpeCArIGlcIiBcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlY3Rpb24tY29sdW1uIHt7c2NyZWVuU2l6ZSA8PSBwZXBTY3JlZW5TaXplVG9GbGlwVG9WZXJ0aWNhbCA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCd9fVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlLWNvbHVtbic6IHNlbGVjdGVkQmxvY2tLZXkgPT09IGNvbHVtbi5CbG9ja0NvbnRhaW5lcj8uQmxvY2tLZXksIFxuICAgICAgICAgICAgICAgICAgICAnaXMtaGlkZGVuJzogZ2V0SXNIaWRkZW4oY29sdW1uPy5CbG9ja0NvbnRhaW5lcj8uSGlkZSwgc2NyZWVuVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICdhbHJlYWR5LWNvbnRhaW5zLWJsb2NrJzogZWRpdGFibGUgJiYgY29sdW1uLkJsb2NrQ29udGFpbmVyICYmIGNvbHVtbi5CbG9ja0NvbnRhaW5lci5CbG9ja0tleSAmJiBjb2x1bW4uQmxvY2tDb250YWluZXIuQmxvY2tLZXkubGVuZ3RoID4gMCAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnaW5nQmxvY2tLZXkgJiYgZHJhZ2dpbmdCbG9ja0tleS5sZW5ndGggPiAwICYmIGNvbHVtbi5CbG9ja0NvbnRhaW5lci5CbG9ja0tleSAhPT0gZHJhZ2dpbmdCbG9ja0tleSB9XCJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3RPcmllbnRhdGlvbl09XCJzY3JlZW5TaXplIDw9IHBlcFNjcmVlblNpemVUb0ZsaXBUb1ZlcnRpY2FsID8gJ2hvcml6b250YWwnIDogJ3ZlcnRpY2FsJ1wiIFxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cInNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0XCJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uQmxvY2tEcm9wcGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImNhbkRyb3BQcmVkaWNhdGUoaSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzZWN0aW9uLWJsb2NrICpuZ0lmPVwiY29sdW1uLkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleVwiIGNsYXNzPVwic2VjdGlvbi1ibG9ja1wiIFtzZWN0aW9uS2V5XT1cImtleVwiIFtibG9ja1RlbXBsYXRlXT1cImJsb2NrVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbYmxvY2tDb250YWluZXJdPVwiY29sdW1uLkJsb2NrQ29udGFpbmVyXCIgW2VkaXRhYmxlXT1cImVkaXRhYmxlXCIgW2lzTWFpbkVkaXRvclN0YXRlXT1cImlzTWFpbkVkaXRvclN0YXRlXCIgW3NlY3Rpb25IZWlnaHRdPVwic3R5bGVIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInNlbGVjdGVkQmxvY2tLZXkgPT09IGNvbHVtbi5CbG9ja0NvbnRhaW5lcj8uQmxvY2tLZXlcIiBbc2NyZWVuVHlwZV09XCJzY3JlZW5UeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdFeGl0ZWQpPVwib25TZWN0aW9uQmxvY2tEcmFnRXhpdGVkKCRldmVudClcIiAoZHJhZ0VudGVyZWQpPVwib25TZWN0aW9uQmxvY2tEcmFnRW50ZXJlZCgkZXZlbnQpXCI+PC9zZWN0aW9uLWJsb2NrPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -995,36 +995,85 @@ class SectionComponent extends BaseDestroyerDirective {
995
995
  setIfHideForCurrentScreenType() {
996
996
  this.hideForCurrentScreenType = this.layoutBuilderInternalService.getIsHidden(this.hideIn, this.screenType);
997
997
  }
998
- getCssSplitString() {
998
+ // private getCssSplitString() {
999
+ // switch (this.split) {
1000
+ // case '1/2 1/2':
1001
+ // return '1fr 1fr';
1002
+ // case '1/2 1/4 1/4':
1003
+ // return '2fr 1fr 1fr';
1004
+ // case '1/3 1/3 1/3':
1005
+ // return '1fr 1fr 1fr';
1006
+ // case '1/3 2/3':
1007
+ // return '1fr 2fr';
1008
+ // case '1/4 1/2 1/4':
1009
+ // return '1fr 2fr 1fr';
1010
+ // case '1/4 1/4 1/2':
1011
+ // return '1fr 1fr 2fr';
1012
+ // case '1/4 1/4 1/4 1/4':
1013
+ // return '1fr 1fr 1fr 1fr';
1014
+ // case '1/4 3/4':
1015
+ // return '1fr 3fr';
1016
+ // case '2/3 1/3':
1017
+ // return '2fr 1fr';
1018
+ // case '3/4 1/4':
1019
+ // return '3fr 1fr';
1020
+ // default: // For one column.
1021
+ // return '1fr';
1022
+ // }
1023
+ // }
1024
+ getCssGridColumn(columnIndex) {
1025
+ let res = '1/13';
1026
+ let gridColumnValueArr = ['1/13'];
999
1027
  switch (this.split) {
1000
1028
  case '1/2 1/2':
1001
- return '1fr 1fr';
1029
+ gridColumnValueArr = ['1/7', '7/13'];
1030
+ break;
1002
1031
  case '1/2 1/4 1/4':
1003
- return '2fr 1fr 1fr';
1032
+ gridColumnValueArr = ['1/7', '7/10', '10/13'];
1033
+ break;
1004
1034
  case '1/3 1/3 1/3':
1005
- return '1fr 1fr 1fr';
1035
+ gridColumnValueArr = ['1/5', '5/9', '9/13'];
1036
+ break;
1006
1037
  case '1/3 2/3':
1007
- return '1fr 2fr';
1038
+ gridColumnValueArr = ['1/5', '5/13'];
1039
+ break;
1008
1040
  case '1/4 1/2 1/4':
1009
- return '1fr 2fr 1fr';
1041
+ gridColumnValueArr = ['1/4', '4/10', '10/13'];
1042
+ break;
1010
1043
  case '1/4 1/4 1/2':
1011
- return '1fr 1fr 2fr';
1044
+ gridColumnValueArr = ['1/4', '4/7', '7/13'];
1045
+ break;
1012
1046
  case '1/4 1/4 1/4 1/4':
1013
- return '1fr 1fr 1fr 1fr';
1047
+ gridColumnValueArr = ['1/4', '4/7', '7/10', '10/13'];
1048
+ break;
1014
1049
  case '1/4 3/4':
1015
- return '1fr 3fr';
1050
+ gridColumnValueArr = ['1/4', '4/13'];
1051
+ break;
1016
1052
  case '2/3 1/3':
1017
- return '2fr 1fr';
1053
+ gridColumnValueArr = ['1/9', '9/13'];
1054
+ break;
1018
1055
  case '3/4 1/4':
1019
- return '3fr 1fr';
1020
- default: // For one column.
1021
- return '1fr';
1056
+ gridColumnValueArr = ['1/10', '10/13'];
1057
+ break;
1058
+ }
1059
+ if (gridColumnValueArr.length > columnIndex) {
1060
+ res = gridColumnValueArr[columnIndex];
1061
+ }
1062
+ return res;
1063
+ }
1064
+ setSectionColumnStyle(sectionColumn, columnIndex, isHorizontalView) {
1065
+ if (isHorizontalView) {
1066
+ const gridColumnValue = this.getCssGridColumn(columnIndex);
1067
+ this.renderer.setStyle(sectionColumn.nativeElement, 'grid-column', gridColumnValue);
1068
+ }
1069
+ else {
1070
+ this.renderer.setStyle(sectionColumn.nativeElement, 'grid-column', 'unset');
1022
1071
  }
1023
1072
  }
1024
1073
  refreshSplit() {
1025
1074
  setTimeout(() => {
1026
1075
  if (this.sectionContainerRef) {
1027
- const cssSplitString = this.getCssSplitString();
1076
+ // const cssSplitString = this.getCssSplitString();
1028
1077
  // Go for all the columns in the columnsWrapper
1029
1078
  this.columnsElementRef.toArray().map((section, sectionIndex) => {
1030
1079
  // Horizontal (true) for large screens, false for small screens.
@@ -1032,25 +1081,30 @@ class SectionComponent extends BaseDestroyerDirective {
1032
1081
  if (isHorizontalView) {
1033
1082
  this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'column');
1034
1083
  this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');
1035
- this.renderer.setStyle(section.nativeElement, 'grid-template-columns', cssSplitString);
1084
+ // this.renderer.setStyle(section.nativeElement, 'grid-template-columns', cssSplitString);
1036
1085
  }
1037
1086
  else {
1038
1087
  this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'row');
1039
1088
  this.renderer.setStyle(section.nativeElement, 'grid-template-columns', 'unset');
1040
- this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');
1089
+ // this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');
1041
1090
  // In runtime (or preview mode).
1042
1091
  if (!this.editable) {
1043
- const cssSplitArray = cssSplitString.split(' ');
1044
- // If there are some hidden columns change the column width to 0 (for cut the spacing in the grid-template-rows).
1045
- this.columns.forEach((column, index) => {
1046
- if (!column.BlockContainer) {
1047
- cssSplitArray[index] = '0';
1048
- }
1049
- });
1050
- this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'auto');
1092
+ // const cssSplitArray = cssSplitString.split(' ');
1093
+ // // If there are some hidden columns change the column width to 0 (for cut the spacing in the grid-template-rows).
1094
+ // this.columns.forEach((column, index) => {
1095
+ // if (!column.BlockContainer) {
1096
+ // cssSplitArray[index] = '0';
1097
+ // }
1098
+ // });
1051
1099
  //this.renderer.setStyle(section.nativeElement, 'grid-template-rows', cssSplitArray.join(' '));
1100
+ this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'auto');
1052
1101
  }
1053
1102
  }
1103
+ // Go for all the columns in the section and set there style.
1104
+ const sectionColumns = section.nativeElement.querySelectorAll('.section-column');
1105
+ for (var columnIndex = 0; columnIndex < sectionColumns.length; columnIndex++) {
1106
+ this.setSectionColumnStyle(sectionColumns[columnIndex], columnIndex, isHorizontalView);
1107
+ }
1054
1108
  });
1055
1109
  }
1056
1110
  }, 0);