myrta-ui 1.1.26 → 1.1.27

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.
@@ -77,13 +77,14 @@ export class FormulaEditorComponent {
77
77
  }
78
78
  writeValue(outsideValue) {
79
79
  if (outsideValue !== null) {
80
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(outsideValue));
80
81
  this.value = outsideValue;
81
- this.visibleValue = this._transformValue(this._modifiedValue(outsideValue)).visibleValue;
82
+ this.visibleValue = visibleValue;
82
83
  this._detector.detectChanges();
83
84
  }
84
85
  }
85
86
  onInput(event) {
86
- const { value, searchText } = this._transformValue(this._inputValue, false);
87
+ const { value, searchText } = this._transformValue(this._modifiedValue(this._inputValue), false);
87
88
  this.updateValue(value);
88
89
  this.searchText = searchText;
89
90
  this._storeCursorPosition();
@@ -98,9 +99,9 @@ export class FormulaEditorComponent {
98
99
  }
99
100
  insertTag(whiteListItem) {
100
101
  this._restoreCursorPosition(this.inputElement.nativeElement);
101
- this._insertPositionText(whiteListItem.label);
102
+ this._insertPositionText(`{${whiteListItem.sysName}}`);
102
103
  setTimeout(() => {
103
- const { value, visibleValue } = this._transformValue(this._inputValue, false);
104
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), false);
104
105
  this.updateValue(value);
105
106
  this.updateVisibleValue(visibleValue);
106
107
  });
@@ -120,21 +121,20 @@ export class FormulaEditorComponent {
120
121
  this.onTouched();
121
122
  }
122
123
  _modifiedValue(value) {
123
- const clearedValue = value.trim().split(' ').filter(e => e !== '');
124
- return clearedValue.map(v => {
125
- const findItem = this.items.find(w => `{${w.sysName}}` === v);
126
- return findItem ? findItem.label : v;
127
- }).join(' ');
124
+ const labelsMap = Object.fromEntries(this.items.map(obj => [obj.label, obj.sysName]));
125
+ const str = this.items.map(s => s.label);
126
+ const reg = new RegExp(str.join('|'), 'g');
127
+ return value.replace(reg, match => `{${labelsMap[match]}}`);
128
128
  }
129
129
  _transformValue(content, analise = false) {
130
- const valueArray = content.split(/[\s\u00A0]+/).filter(e => e !== '');
130
+ const valueArray = content.split(/[\s\u00A0]+/).filter(Boolean);
131
131
  const visibleValueArray = [];
132
132
  const originalValueArray = [];
133
133
  let isInterpretationError = false;
134
134
  let searchText = '';
135
135
  valueArray.forEach((item) => {
136
136
  const clearedItem = item.trim();
137
- const findItem = this.items.find(v => clearedItem.includes(v.label));
137
+ const findItem = this.items.find(v => clearedItem.includes(v.sysName));
138
138
  if (findItem) {
139
139
  visibleValueArray.push(createTag(findItem.label));
140
140
  originalValueArray.push(createTagOutside(findItem.sysName));
@@ -161,6 +161,8 @@ export class FormulaEditorComponent {
161
161
  if (analise) {
162
162
  this._checkErrors(originalValueArray, isInterpretationError);
163
163
  }
164
+ console.log(visibleValueArray);
165
+ console.log(originalValueArray);
164
166
  return {
165
167
  value: originalValueArray.join(' '),
166
168
  visibleValue: visibleValueArray.join(' '),
@@ -220,9 +222,9 @@ export class FormulaEditorComponent {
220
222
  }
221
223
  this._selection = document.getSelection();
222
224
  if (this._selection) {
223
- this._selection.removeAllRanges();
224
- this._selection.addRange(this._range);
225
- element.focus();
225
+ // this._selection.removeAllRanges();
226
+ // this._selection.addRange(this._range);
227
+ // element.focus();
226
228
  }
227
229
  }
228
230
  _placeCaretAtEnd() {
@@ -239,13 +241,27 @@ export class FormulaEditorComponent {
239
241
  });
240
242
  }
241
243
  clickOut(event) {
244
+ // console.dir(event);
245
+ // console.log(this._modifiedValue(this._inputValue));
242
246
  if (!this.eRef.nativeElement.contains(event.target)) {
243
- const { value, visibleValue } = this._transformValue(this._inputValue, true);
244
- this.updateValue(value);
247
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), true);
248
+ //
249
+ // this.updateValue(value);
245
250
  this.updateVisibleValue(visibleValue);
251
+ //
246
252
  this.isFocused = false;
247
253
  this._detector.detectChanges();
248
254
  }
255
+ // if (!this.eRef.nativeElement.contains(event.target)) {
256
+ // console.log(this._inputValue);
257
+ // const {value, visibleValue} = this._transformValue(this._inputValue, true);
258
+ //
259
+ // this.updateValue(value);
260
+ // this.updateVisibleValue(visibleValue);
261
+ //
262
+ // this.isFocused = false;
263
+ // this._detector.detectChanges();
264
+ // }
249
265
  }
250
266
  registerOnChange(fn) {
251
267
  this.onChange = fn;
@@ -301,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
301
317
  type: HostListener,
302
318
  args: ['document:click', ['$event']]
303
319
  }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQWMsWUFBWSxFQUNuQyxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQ3ZDLE1BQU0sRUFBRSxTQUFTLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4SCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFekQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNwQixNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFnQnZDLE1BQU0sT0FBTyxzQkFBc0I7SUFxRGpDLFlBQzRCLFFBQWtC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LEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQzswREF3RG9DLFFBQVE7MEJBQTNDLE1BQU07MkJBQUMsUUFBUTtxR0F0QkYsTUFBTTtzQkFBckIsS0FBSztnQkFHVSxLQUFLO3NCQUFwQixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRXFDLFlBQVk7c0JBQXRELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFeEIsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxPQUFPO3NCQUF2QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBNk9QLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCxcclxuICBPdXRwdXQsIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc0VudW0sIEVycm9yVHlwZUVudW0gfSBmcm9tICcuL2VudW1zL2Vycm9yLW1lc3NhZ2VzLmVudW0nO1xyXG5pbXBvcnQgeyBjcmVhdGVCcmFja2V0LCBjcmVhdGVOdW1iZXIsIGNyZWF0ZU9wZXJhdG9yLCBjcmVhdGVUYWcsIGNyZWF0ZVRhZ091dHNpZGUgfSBmcm9tICcuL2hlbHBlcnMvY3JlYXRlLXRhZ3MuaGVscGVyJztcclxuaW1wb3J0IHsgaXNBbiB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvaXMtbnVtYmVyLmhlbHBlcic7XHJcbmltcG9ydCB7IFdoaXRlTGlzdEl0ZW1Nb2RlbCB9IGZyb20gJy4vbW9kZWxzL3doaXRlLWxpc3QtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgY2hlY2tCcmFja2V0RXJyb3JzLFxyXG4gIGNoZWNrRGl2aWRlckVycm9ycyxcclxuICBjaGVja0ludGVycHJldGF0aW9uRXJyb3JzLFxyXG4gIGNoZWNrU2VxdWVuY2VFcnJvcnNcclxufSBmcm9tICcuL2hlbHBlcnMvY2hlY2stZXJyb3JzLmhlbHBlcic7XHJcbmltcG9ydCB7IENoZWNrRXJyb3JSZXN1bHRNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2NoZWNrLWVycm9yLXJlc3VsdC5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzLCBGb3JtdWxhRWRpdG9yVmFsdWVXaXRoSWQgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IElucHV0VGV4dFNpemVzRW51bSB9IGZyb20gJy4uL2lucHV0LXRleHQvaW5wdXQtdGV4dC5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWZvcm11bGEtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm11bGEtZWRpdG9yLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtdWxhRWRpdG9yQ29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm11bGFFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBfcmFuZ2U6IGFueTtcclxuICBwcml2YXRlIF9zZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2N1cnNvclBvc2l0aW9uOiB7XHJcbiAgICBzdGFydENvbnRhaW5lcjogTm9kZSB8IG51bGwsXHJcbiAgICBlbmRDb250YWluZXI6IE5vZGUgfCBudWxsLFxyXG4gICAgc3RhcnRPZmZzZXQ6IG51bWJlcixcclxuICAgIGVuZE9mZnNldDogbnVtYmVyXHJcbiAgfSA9IHtcclxuICAgIHN0YXJ0Q29udGFpbmVyOiBudWxsLFxyXG4gICAgZW5kQ29udGFpbmVyOiBudWxsLFxyXG4gICAgc3RhcnRPZmZzZXQ6IDAsXHJcbiAgICBlbmRPZmZzZXQ6IDBcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcml2YXRlIG9wZXJhdG9yTGlzdDogc3RyaW5nW10gPSBbJysnLCAnLScsICcqJywgJy8nXTtcclxuICBwcml2YXRlIGJyYWNrZXRMaXN0OiBzdHJpbmdbXSA9IFsnKCcsICcpJ107XHJcblxyXG4gIHB1YmxpYyB2YWx1ZSA9ICcnO1xyXG4gIHB1YmxpYyB2aXNpYmxlVmFsdWUgPSAnJztcclxuXHJcbiAgcHVibGljIGlzRm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZXJyb3JNb2RlbDogQ2hlY2tFcnJvclJlc3VsdE1vZGVsID0ge1xyXG4gICAgaXNFcnJvcjogZmFsc2UsXHJcbiAgICBlcnJvclR5cGU6IEVycm9yVHlwZUVudW0uRGVmYXVsdFxyXG4gIH07XHJcblxyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICAvLyBUT0RPIGl0ZW1zXHJcbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBXaGl0ZUxpc3RJdGVtTW9kZWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG5cclxuICAvLyBWQUxJREFURVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnLCB7c3RhdGljOiB0cnVlfSkgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Rm9ybXVsYUVkaXRvclZhbHVlVHlwZXM+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVUeXBlcz4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIGJsdXJyZWQ6IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVXaXRoSWQ+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICAgIHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZVJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgRXJyb3JNZXNzYWdlc0VudW1bdGhpcy5lcnJvck1vZGVsLmVycm9yVHlwZV07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpbHRlcmVkTGlzdCgpOiBXaGl0ZUxpc3RJdGVtTW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmxhYmVsLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dCkpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lcnJvck1vZGVsLmlzRXJyb3IgfHwgdGhpcy5pbnZhbGlkXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5ID8gJ21yeC1pbnB1dF9fcmVhZG9ubHknIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID8gJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDogdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJydcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3RoaXMuY3VzdG9tQ2xhc3Nlc30gJHt0aGlzLnJlYWRvbmx5Q2xhc3N9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgX2lucHV0VmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvdXRzaWRlVmFsdWU6IEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzKTogdm9pZCB7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBvdXRzaWRlVmFsdWU7XHJcbiAgICAgIHRoaXMudmlzaWJsZVZhbHVlID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5fbW9kaWZpZWRWYWx1ZShvdXRzaWRlVmFsdWUpKS52aXNpYmxlVmFsdWU7XHJcblxyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB7dmFsdWUsIHNlYXJjaFRleHR9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5faW5wdXRWYWx1ZSwgZmFsc2UpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dFxyXG5cclxuICAgIHRoaXMuX3N0b3JlQ3Vyc29yUG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuX3N0b3JlQ3Vyc29yUG9zaXRpb24oKTtcclxuICAgIHRoaXMuYmx1cnJlZC5lbWl0KHt2YWx1ZTogdGhpcy52YWx1ZSwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBpbnNlcnRUYWcod2hpdGVMaXN0SXRlbTogV2hpdGVMaXN0SXRlbU1vZGVsKSB7XHJcbiAgICB0aGlzLl9yZXN0b3JlQ3Vyc29yUG9zaXRpb24odGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLl9pbnNlcnRQb3NpdGlvblRleHQod2hpdGVMaXN0SXRlbS5sYWJlbCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHt2YWx1ZSwgdmlzaWJsZVZhbHVlfSA9IHRoaXMuX3RyYW5zZm9ybVZhbHVlKHRoaXMuX2lucHV0VmFsdWUsIGZhbHNlKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSh2aXNpYmxlVmFsdWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fcGxhY2VDYXJldEF0RW5kKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJ1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmlzaWJsZVZhbHVlKGluc2lkZVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmlzaWJsZVZhbHVlID0gaW5zaWRlVmFsdWU7XHJcblxyXG4gICAgdGhpcy5fc3RvcmVDdXJzb3JQb3NpdGlvbigpO1xyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KTtcclxuICAgIHRoaXMub25DaGFuZ2UoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21vZGlmaWVkVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjbGVhcmVkVmFsdWU6IHN0cmluZ1tdID0gdmFsdWUudHJpbSgpLnNwbGl0KCcgJykuZmlsdGVyKGUgPT4gZSAhPT0gJycpO1xyXG5cclxuICAgIHJldHVybiBjbGVhcmVkVmFsdWUubWFwKHYgPT4ge1xyXG4gICAgICBjb25zdCBmaW5kSXRlbSA9IHRoaXMuaXRlbXMuZmluZCh3ID0+IGB7JHt3LnN5c05hbWV9fWAgPT09IHYpO1xyXG4gICAgICByZXR1cm4gZmluZEl0ZW0gPyBmaW5kSXRlbS5sYWJlbCA6IHY7XHJcbiAgICB9KS5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1WYWx1ZShjb250ZW50OiBzdHJpbmcsIGFuYWxpc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdmFsdWVBcnJheSA9IGNvbnRlbnQuc3BsaXQoL1tcXHNcXHUwMEEwXSsvKS5maWx0ZXIoZSA9PiBlICE9PSAnJyk7XHJcbiAgICBjb25zdCB2aXNpYmxlVmFsdWVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBsZXQgaXNJbnRlcnByZXRhdGlvbkVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHNlYXJjaFRleHQgPSAnJ1xyXG5cclxuICAgIHZhbHVlQXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCBjbGVhcmVkSXRlbSA9IGl0ZW0udHJpbSgpO1xyXG4gICAgICBjb25zdCBmaW5kSXRlbSA9IHRoaXMuaXRlbXMuZmluZCh2ID0+IGNsZWFyZWRJdGVtLmluY2x1ZGVzKHYubGFiZWwpICk7XHJcblxyXG4gICAgICBpZiAoZmluZEl0ZW0pIHtcclxuICAgICAgICB2aXNpYmxlVmFsdWVBcnJheS5wdXNoKGNyZWF0ZVRhZyhmaW5kSXRlbS5sYWJlbCkpO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNyZWF0ZVRhZ091dHNpZGUoZmluZEl0ZW0uc3lzTmFtZSkpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYnJhY2tldExpc3QuZmluZCh2ID0+IHYgPT09IGNsZWFyZWRJdGVtKSkge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY3JlYXRlQnJhY2tldChjbGVhcmVkSXRlbSkpO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNsZWFyZWRJdGVtKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wZXJhdG9yTGlzdC5maW5kKHYgPT4gdiA9PT0gY2xlYXJlZEl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVPcGVyYXRvcihjbGVhcmVkSXRlbSkpO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNsZWFyZWRJdGVtKTtcclxuICAgICAgfSBlbHNlIGlmIChpc0FuKGNsZWFyZWRJdGVtKSkge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY3JlYXRlTnVtYmVyKGNsZWFyZWRJdGVtKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNsZWFyZWRJdGVtKTtcclxuICAgICAgICBzZWFyY2hUZXh0ID0gY2xlYXJlZEl0ZW1cclxuXHJcbiAgICAgICAgaXNJbnRlcnByZXRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGFuYWxpc2UpIHtcclxuICAgICAgdGhpcy5fY2hlY2tFcnJvcnMob3JpZ2luYWxWYWx1ZUFycmF5LCBpc0ludGVycHJldGF0aW9uRXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHZhbHVlOiBvcmlnaW5hbFZhbHVlQXJyYXkuam9pbignICcpLFxyXG4gICAgICB2aXNpYmxlVmFsdWU6IHZpc2libGVWYWx1ZUFycmF5LmpvaW4oJyAnKSxcclxuICAgICAgc2VhcmNoVGV4dDogc2VhcmNoVGV4dFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NoZWNrRXJyb3JzKHZhbHVlQXJyYXk6IHN0cmluZ1tdLCBpc0ludGVycHJldGF0aW9uRXJyb3I6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVFcnJvcigpO1xyXG5cclxuICAgIHRoaXMuX3RvZ2dsZUVycm9yKGNoZWNrQnJhY2tldEVycm9ycyh2YWx1ZUFycmF5KSk7XHJcbiAgICB0aGlzLl90b2dnbGVFcnJvcihjaGVja0RpdmlkZXJFcnJvcnModmFsdWVBcnJheSwgdGhpcy5pdGVtcykpO1xyXG4gICAgdGhpcy5fdG9nZ2xlRXJyb3IoY2hlY2tTZXF1ZW5jZUVycm9ycyh2YWx1ZUFycmF5LCB0aGlzLm9wZXJhdG9yTGlzdCwgdGhpcy5icmFja2V0TGlzdCkpO1xyXG4gICAgdGhpcy5fdG9nZ2xlRXJyb3IoY2hlY2tJbnRlcnByZXRhdGlvbkVycm9ycyhpc0ludGVycHJldGF0aW9uRXJyb3IpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RvZ2dsZUVycm9yKGVycm9yTW9kZWw6IENoZWNrRXJyb3JSZXN1bHRNb2RlbCkge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yTW9kZWwuaXNFcnJvcikge1xyXG4gICAgICB0aGlzLmVycm9yTW9kZWwgPSBlcnJvck1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Rpc2FibGVFcnJvcigpIHtcclxuICAgIHRoaXMuZXJyb3JNb2RlbCA9IHtcclxuICAgICAgaXNFcnJvcjogZmFsc2UsXHJcbiAgICAgIGVycm9yVHlwZTogRXJyb3JUeXBlRW51bS5EZWZhdWx0XHJcbiAgICB9O1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5zZXJ0UG9zaXRpb25UZXh0KGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbnRlbnQpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLl9yYW5nZSkge1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UuaW5zZXJ0Tm9kZShub2RlKTtcclxuICAgICAgICB0aGlzLl9yYW5nZSA9IHRoaXMuX3JhbmdlLmNsb25lUmFuZ2UoKTtcclxuICAgICAgICB0aGlzLl9yYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UuY29sbGFwc2UoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zdG9yZUN1cnNvclBvc2l0aW9uKCkge1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb24gJiYgdGhpcy5fc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XHJcbiAgICAgIHRoaXMuX3JhbmdlID0gdGhpcy5fc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcblxyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydENvbnRhaW5lciA9IHRoaXMuX3JhbmdlLnN0YXJ0Q29udGFpbmVyO1xyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRDb250YWluZXIgPSB0aGlzLl9yYW5nZS5lbmRDb250YWluZXI7XHJcbiAgICAgIHRoaXMuX2N1cnNvclBvc2l0aW9uLnN0YXJ0T2Zmc2V0ID0gdGhpcy5fcmFuZ2Uuc3RhcnRPZmZzZXQ7XHJcbiAgICAgIHRoaXMuX2N1cnNvclBvc2l0aW9uLmVuZE9mZnNldCA9IHRoaXMuX3JhbmdlLmVuZE9mZnNldDtcclxuICAgIH1cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc3RvcmVDdXJzb3JQb3NpdGlvbihlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLl9yYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX2N1cnNvclBvc2l0aW9uLnN0YXJ0Q29udGFpbmVyICYmIHRoaXMuX2N1cnNvclBvc2l0aW9uLmVuZENvbnRhaW5lcikge1xyXG4gICAgICB0aGlzLl9yYW5nZS5zZXRTdGFydCh0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydENvbnRhaW5lciwgdGhpcy5fY3Vyc29yUG9zaXRpb24uc3RhcnRPZmZzZXQpO1xyXG4gICAgICB0aGlzLl9yYW5nZS5zZXRFbmQodGhpcy5fY3Vyc29yUG9zaXRpb24uZW5kQ29udGFpbmVyLCB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRPZmZzZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NlbGVjdGlvbiA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5fc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xyXG4gICAgICB0aGlzLl9zZWxlY3Rpb24uYWRkUmFuZ2UodGhpcy5fcmFuZ2UpO1xyXG4gICAgICBlbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wbGFjZUNhcmV0QXRFbmQoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xyXG4gICAgICB0aGlzLl9zZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9zZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLl9yYW5nZS5zZWxlY3ROb2RlQ29udGVudHModGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UuY29sbGFwc2UoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpb24uYWRkUmFuZ2UodGhpcy5fcmFuZ2UpO1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgY2xpY2tPdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5faW5wdXRWYWx1ZSwgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlVmFsdWUodmlzaWJsZVZhbHVlKTtcclxuXHJcbiAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImdldEludmFsaWRcIlxyXG4gIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy4tcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3dyYXBwZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgW2lubmVySFRNTF09XCJ2aXNpYmxlVmFsdWUudHJpbSgpIHwgc2FmZVwiXHJcbiAgICAgICNpbnB1dEVsZW1lbnRcclxuICAgICAgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX2JveFwiXHJcbiAgICAgIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIlxyXG4gICAgICBbYXR0ci5kYXRhLXBoXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICA+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXBcIiAqbmdJZj1cImlzRm9jdXNlZFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JNb2RlbC5pc0Vycm9yICYmIGlzRm9jdXNlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3BvcHVwLS1lcnJvclwiPlxyXG4gICAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRMaXN0Lmxlbmd0aDsgZWxzZSBlbXB0eUxpc3RcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXAtLXJvd1wiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZExpc3RcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluc2VydFRhZyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5TGlzdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yX19wb3B1cC0tcm93XCI+XHJcbiAgICAgICAgICDQndC10YIg0YDQtdC30YPQu9GM0YLQsNGC0L7QslxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gICAgPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgICAgICpuZ0lmPVwiZ2V0SW52YWxpZCAmJiBnZXRFcnJvck1lc3NhZ2UgJiYgIWlzRm9jdXNlZFwiXHJcbiAgICAgIFtpbnZhbGlkTWVzc2FnZV09XCJnZXRFcnJvck1lc3NhZ2VcIlxyXG4gICAgPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG4gICAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQWMsWUFBWSxFQUNuQyxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQ3ZDLE1BQU0sRUFBRSxTQUFTLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4SCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFekQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNwQixNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFnQnZDLE1BQU0sT0FBTyxzQkFBc0I7SUFxRGpDLFlBQzRCLFFBQWtC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O21IQXJVVSxzQkFBc0Isa0JBc0R2QixRQUFRO3VHQXREUCxzQkFBc0IsdWFBTnRCLENBQUM7WUFDVixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7WUFDckQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLHNKQ2pDSix5cURBaURBOzJGRGRhLHNCQUFzQjtrQkFYbEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDOzBEQXdEb0MsUUFBUTswQkFBM0MsTUFBTTsyQkFBQyxRQUFRO3FHQXRCRixNQUFNO3NCQUFyQixLQUFLO2dCQUdVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFHVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFcUMsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUV4QixPQUFPO3NCQUF2QixNQUFNO2dCQUNVLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkFrUFAsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LFxyXG4gIE91dHB1dCwgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VzRW51bSwgRXJyb3JUeXBlRW51bSB9IGZyb20gJy4vZW51bXMvZXJyb3ItbWVzc2FnZXMuZW51bSc7XHJcbmltcG9ydCB7IGNyZWF0ZUJyYWNrZXQsIGNyZWF0ZU51bWJlciwgY3JlYXRlT3BlcmF0b3IsIGNyZWF0ZVRhZywgY3JlYXRlVGFnT3V0c2lkZSB9IGZyb20gJy4vaGVscGVycy9jcmVhdGUtdGFncy5oZWxwZXInO1xyXG5pbXBvcnQgeyBpc0FuIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9pcy1udW1iZXIuaGVscGVyJztcclxuaW1wb3J0IHsgV2hpdGVMaXN0SXRlbU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvd2hpdGUtbGlzdC1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBjaGVja0JyYWNrZXRFcnJvcnMsXHJcbiAgY2hlY2tEaXZpZGVyRXJyb3JzLFxyXG4gIGNoZWNrSW50ZXJwcmV0YXRpb25FcnJvcnMsXHJcbiAgY2hlY2tTZXF1ZW5jZUVycm9yc1xyXG59IGZyb20gJy4vaGVscGVycy9jaGVjay1lcnJvcnMuaGVscGVyJztcclxuaW1wb3J0IHsgQ2hlY2tFcnJvclJlc3VsdE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvY2hlY2stZXJyb3ItcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybXVsYUVkaXRvclZhbHVlVHlwZXMsIEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZCB9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0U2l6ZXNFbnVtIH0gZnJvbSAnLi4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtZm9ybXVsYS1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtdWxhLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm11bGFFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybXVsYUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBwcml2YXRlIF9yYW5nZTogYW55O1xyXG4gIHByaXZhdGUgX3NlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3Vyc29yUG9zaXRpb246IHtcclxuICAgIHN0YXJ0Q29udGFpbmVyOiBOb2RlIHwgbnVsbCxcclxuICAgIGVuZENvbnRhaW5lcjogTm9kZSB8IG51bGwsXHJcbiAgICBzdGFydE9mZnNldDogbnVtYmVyLFxyXG4gICAgZW5kT2Zmc2V0OiBudW1iZXJcclxuICB9ID0ge1xyXG4gICAgc3RhcnRDb250YWluZXI6IG51bGwsXHJcbiAgICBlbmRDb250YWluZXI6IG51bGwsXHJcbiAgICBzdGFydE9mZnNldDogMCxcclxuICAgIGVuZE9mZnNldDogMFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByaXZhdGUgb3BlcmF0b3JMaXN0OiBzdHJpbmdbXSA9IFsnKycsICctJywgJyonLCAnLyddO1xyXG4gIHByaXZhdGUgYnJhY2tldExpc3Q6IHN0cmluZ1tdID0gWycoJywgJyknXTtcclxuXHJcbiAgcHVibGljIHZhbHVlID0gJyc7XHJcbiAgcHVibGljIHZpc2libGVWYWx1ZSA9ICcnO1xyXG5cclxuICBwdWJsaWMgaXNGb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBlcnJvck1vZGVsOiBDaGVja0Vycm9yUmVzdWx0TW9kZWwgPSB7XHJcbiAgICBpc0Vycm9yOiBmYWxzZSxcclxuICAgIGVycm9yVHlwZTogRXJyb3JUeXBlRW51bS5EZWZhdWx0XHJcbiAgfTtcclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKTtcclxuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XHJcblxyXG4gIC8vIFRPRE8gaXRlbXNcclxuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IFdoaXRlTGlzdEl0ZW1Nb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzc2VzID0gJyc7XHJcblxyXG4gIC8vIFZBTElEQVRFXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHtzdGF0aWM6IHRydWV9KSBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVUeXBlcz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgYmx1cnJlZDogRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Rm9ybXVsYUVkaXRvclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybXVsYUVkaXRvclZhbHVlV2l0aElkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkTWVzc2FnZSB8fCBFcnJvck1lc3NhZ2VzRW51bVt0aGlzLmVycm9yTW9kZWwuZXJyb3JUeXBlXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZmlsdGVyZWRMaXN0KCk6IFdoaXRlTGlzdEl0ZW1Nb2RlbFtdIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ubGFiZWwuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0KSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0SW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmVycm9yTW9kZWwuaXNFcnJvciB8fCB0aGlzLmludmFsaWRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcmVhZG9ubHlDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgPyAnbXJ4LWlucHV0X19yZWFkb25seScgOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgPyAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJ1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMucmVhZG9ubHlDbGFzc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBfaW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQgfHwgJyc7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogRm9ybXVsYUVkaXRvclZhbHVlVHlwZXMpOiB2b2lkIHtcclxuICAgIGlmIChvdXRzaWRlVmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5fbW9kaWZpZWRWYWx1ZShvdXRzaWRlVmFsdWUpKTtcclxuXHJcbiAgICAgIHRoaXMudmFsdWUgPSBvdXRzaWRlVmFsdWU7XHJcbiAgICAgIHRoaXMudmlzaWJsZVZhbHVlID0gdmlzaWJsZVZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3Qge3ZhbHVlLCBzZWFyY2hUZXh0fSA9IHRoaXMuX3RyYW5zZm9ybVZhbHVlKHRoaXMuX21vZGlmaWVkVmFsdWUodGhpcy5faW5wdXRWYWx1ZSksIGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHRcclxuXHJcbiAgICB0aGlzLl9zdG9yZUN1cnNvclBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLl9zdG9yZUN1cnNvclBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLmJsdXJyZWQuZW1pdCh7dmFsdWU6IHRoaXMudmFsdWUsIGlkOiB0aGlzLnV1aWR9KVxyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0VGFnKHdoaXRlTGlzdEl0ZW06IFdoaXRlTGlzdEl0ZW1Nb2RlbCkge1xyXG4gICAgdGhpcy5fcmVzdG9yZUN1cnNvclBvc2l0aW9uKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5faW5zZXJ0UG9zaXRpb25UZXh0KGB7JHt3aGl0ZUxpc3RJdGVtLnN5c05hbWV9fWApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB7dmFsdWUsIHZpc2libGVWYWx1ZX0gPSB0aGlzLl90cmFuc2Zvcm1WYWx1ZSh0aGlzLl9tb2RpZmllZFZhbHVlKHRoaXMuX2lucHV0VmFsdWUpLCBmYWxzZSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlVmFsdWUodmlzaWJsZVZhbHVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3BsYWNlQ2FyZXRBdEVuZCgpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJydcclxuICB9XHJcblxyXG4gIHVwZGF0ZVZpc2libGVWYWx1ZShpbnNpZGVWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZpc2libGVWYWx1ZSA9IGluc2lkZVZhbHVlO1xyXG5cclxuICAgIHRoaXMuX3N0b3JlQ3Vyc29yUG9zaXRpb24oKTtcclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICB9XHJcblxyXG4gIHVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmFsdWUgPSBpbnNpZGVWYWx1ZTtcclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KGluc2lkZVZhbHVlKTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IGluc2lkZVZhbHVlLCBpZDogdGhpcy51dWlkfSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGluc2lkZVZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tb2RpZmllZFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbGFiZWxzTWFwID0gT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuaXRlbXMubWFwKG9iaiA9PiBbb2JqLmxhYmVsLCBvYmouc3lzTmFtZV0pKTtcclxuICAgIGNvbnN0IHN0ciA9IHRoaXMuaXRlbXMubWFwKHMgPT4gcy5sYWJlbClcclxuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoc3RyLmpvaW4oJ3wnKSwgJ2cnKVxyXG5cclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHJlZywgbWF0Y2ggPT4gYHske2xhYmVsc01hcFttYXRjaF19fWApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1WYWx1ZShjb250ZW50OiBzdHJpbmcsIGFuYWxpc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdmFsdWVBcnJheSA9IGNvbnRlbnQuc3BsaXQoL1tcXHNcXHUwMEEwXSsvKS5maWx0ZXIoQm9vbGVhbilcclxuXHJcbiAgICBjb25zdCB2aXNpYmxlVmFsdWVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBsZXQgaXNJbnRlcnByZXRhdGlvbkVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHNlYXJjaFRleHQgPSAnJ1xyXG5cclxuICAgIHZhbHVlQXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCBjbGVhcmVkSXRlbSA9IGl0ZW0udHJpbSgpO1xyXG4gICAgICBjb25zdCBmaW5kSXRlbSA9IHRoaXMuaXRlbXMuZmluZCh2ID0+IGNsZWFyZWRJdGVtLmluY2x1ZGVzKHYuc3lzTmFtZSkgKTtcclxuXHJcbiAgICAgIGlmIChmaW5kSXRlbSkge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY3JlYXRlVGFnKGZpbmRJdGVtLmxhYmVsKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY3JlYXRlVGFnT3V0c2lkZShmaW5kSXRlbS5zeXNOYW1lKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5icmFja2V0TGlzdC5maW5kKHYgPT4gdiA9PT0gY2xlYXJlZEl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVCcmFja2V0KGNsZWFyZWRJdGVtKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0b3JMaXN0LmZpbmQodiA9PiB2ID09PSBjbGVhcmVkSXRlbSkpIHtcclxuICAgICAgICB2aXNpYmxlVmFsdWVBcnJheS5wdXNoKGNyZWF0ZU9wZXJhdG9yKGNsZWFyZWRJdGVtKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzQW4oY2xlYXJlZEl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVOdW1iZXIoY2xlYXJlZEl0ZW0pKTtcclxuICAgICAgICBvcmlnaW5hbFZhbHVlQXJyYXkucHVzaChjbGVhcmVkSXRlbSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjbGVhcmVkSXRlbSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICAgIHNlYXJjaFRleHQgPSBjbGVhcmVkSXRlbVxyXG5cclxuICAgICAgICBpc0ludGVycHJldGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoYW5hbGlzZSkge1xyXG4gICAgICB0aGlzLl9jaGVja0Vycm9ycyhvcmlnaW5hbFZhbHVlQXJyYXksIGlzSW50ZXJwcmV0YXRpb25FcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS5sb2codmlzaWJsZVZhbHVlQXJyYXkpO1xyXG4gICAgY29uc29sZS5sb2cob3JpZ2luYWxWYWx1ZUFycmF5KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB2YWx1ZTogb3JpZ2luYWxWYWx1ZUFycmF5LmpvaW4oJyAnKSxcclxuICAgICAgdmlzaWJsZVZhbHVlOiB2aXNpYmxlVmFsdWVBcnJheS5qb2luKCcgJyksXHJcbiAgICAgIHNlYXJjaFRleHQ6IHNlYXJjaFRleHRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0Vycm9ycyh2YWx1ZUFycmF5OiBzdHJpbmdbXSwgaXNJbnRlcnByZXRhdGlvbkVycm9yOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlRXJyb3IoKTtcclxuXHJcbiAgICB0aGlzLl90b2dnbGVFcnJvcihjaGVja0JyYWNrZXRFcnJvcnModmFsdWVBcnJheSkpO1xyXG4gICAgdGhpcy5fdG9nZ2xlRXJyb3IoY2hlY2tEaXZpZGVyRXJyb3JzKHZhbHVlQXJyYXksIHRoaXMuaXRlbXMpKTtcclxuICAgIHRoaXMuX3RvZ2dsZUVycm9yKGNoZWNrU2VxdWVuY2VFcnJvcnModmFsdWVBcnJheSwgdGhpcy5vcGVyYXRvckxpc3QsIHRoaXMuYnJhY2tldExpc3QpKTtcclxuICAgIHRoaXMuX3RvZ2dsZUVycm9yKGNoZWNrSW50ZXJwcmV0YXRpb25FcnJvcnMoaXNJbnRlcnByZXRhdGlvbkVycm9yKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90b2dnbGVFcnJvcihlcnJvck1vZGVsOiBDaGVja0Vycm9yUmVzdWx0TW9kZWwpIHtcclxuICAgIGlmICghdGhpcy5lcnJvck1vZGVsLmlzRXJyb3IpIHtcclxuICAgICAgdGhpcy5lcnJvck1vZGVsID0gZXJyb3JNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNhYmxlRXJyb3IoKSB7XHJcbiAgICB0aGlzLmVycm9yTW9kZWwgPSB7XHJcbiAgICAgIGlzRXJyb3I6IGZhbHNlLFxyXG4gICAgICBlcnJvclR5cGU6IEVycm9yVHlwZUVudW0uRGVmYXVsdFxyXG4gICAgfTtcclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luc2VydFBvc2l0aW9uVGV4dChjb250ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UpIHtcclxuICAgICAgICB0aGlzLl9yYW5nZS5kZWxldGVDb250ZW50cygpO1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmluc2VydE5vZGUobm9kZSk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UgPSB0aGlzLl9yYW5nZS5jbG9uZVJhbmdlKCk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmNvbGxhcHNlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RvcmVDdXJzb3JQb3NpdGlvbigpIHtcclxuICAgIHRoaXMuX3NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uICYmIHRoaXMuX3NlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHRoaXMuX3NlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG5cclxuICAgICAgdGhpcy5fY3Vyc29yUG9zaXRpb24uc3RhcnRDb250YWluZXIgPSB0aGlzLl9yYW5nZS5zdGFydENvbnRhaW5lcjtcclxuICAgICAgdGhpcy5fY3Vyc29yUG9zaXRpb24uZW5kQ29udGFpbmVyID0gdGhpcy5fcmFuZ2UuZW5kQ29udGFpbmVyO1xyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydE9mZnNldCA9IHRoaXMuX3JhbmdlLnN0YXJ0T2Zmc2V0O1xyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRPZmZzZXQgPSB0aGlzLl9yYW5nZS5lbmRPZmZzZXQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXN0b3JlQ3Vyc29yUG9zaXRpb24oZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydENvbnRhaW5lciAmJiB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRDb250YWluZXIpIHtcclxuICAgICAgdGhpcy5fcmFuZ2Uuc2V0U3RhcnQodGhpcy5fY3Vyc29yUG9zaXRpb24uc3RhcnRDb250YWluZXIsIHRoaXMuX2N1cnNvclBvc2l0aW9uLnN0YXJ0T2Zmc2V0KTtcclxuICAgICAgdGhpcy5fcmFuZ2Uuc2V0RW5kKHRoaXMuX2N1cnNvclBvc2l0aW9uLmVuZENvbnRhaW5lciwgdGhpcy5fY3Vyc29yUG9zaXRpb24uZW5kT2Zmc2V0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uKSB7XHJcbiAgICAgIC8vIHRoaXMuX3NlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgLy8gdGhpcy5fc2VsZWN0aW9uLmFkZFJhbmdlKHRoaXMuX3JhbmdlKTtcclxuICAgICAgLy8gZWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcGxhY2VDYXJldEF0RW5kKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcclxuICAgICAgdGhpcy5fc2VsZWN0aW9uID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5fc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmNvbGxhcHNlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uLmFkZFJhbmdlKHRoaXMuX3JhbmdlKTtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGNsaWNrT3V0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gY29uc29sZS5kaXIoZXZlbnQpO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5fbW9kaWZpZWRWYWx1ZSh0aGlzLl9pbnB1dFZhbHVlKSk7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5fbW9kaWZpZWRWYWx1ZSh0aGlzLl9pbnB1dFZhbHVlKSwgdHJ1ZSk7XHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSh2aXNpYmxlVmFsdWUpO1xyXG4gICAgICAvL1xyXG4gICAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyh0aGlzLl9pbnB1dFZhbHVlKTtcclxuICAgIC8vICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5faW5wdXRWYWx1ZSwgdHJ1ZSk7XHJcbiAgICAvL1xyXG4gICAgLy8gICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgIC8vICAgdGhpcy51cGRhdGVWaXNpYmxlVmFsdWUodmlzaWJsZVZhbHVlKTtcclxuICAgIC8vXHJcbiAgICAvLyAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICAvLyAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImdldEludmFsaWRcIlxyXG4gIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy4tcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3dyYXBwZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgW2lubmVySFRNTF09XCJ2aXNpYmxlVmFsdWUudHJpbSgpIHwgc2FmZVwiXHJcbiAgICAgICNpbnB1dEVsZW1lbnRcclxuICAgICAgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX2JveFwiXHJcbiAgICAgIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIlxyXG4gICAgICBbYXR0ci5kYXRhLXBoXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICA+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXBcIiAqbmdJZj1cImlzRm9jdXNlZFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JNb2RlbC5pc0Vycm9yICYmIGlzRm9jdXNlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3BvcHVwLS1lcnJvclwiPlxyXG4gICAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRMaXN0Lmxlbmd0aDsgZWxzZSBlbXB0eUxpc3RcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXAtLXJvd1wiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZExpc3RcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluc2VydFRhZyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5TGlzdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yX19wb3B1cC0tcm93XCI+XHJcbiAgICAgICAgICDQndC10YIg0YDQtdC30YPQu9GM0YLQsNGC0L7QslxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gICAgPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgICAgICpuZ0lmPVwiZ2V0SW52YWxpZCAmJiBnZXRFcnJvck1lc3NhZ2UgJiYgIWlzRm9jdXNlZFwiXHJcbiAgICAgIFtpbnZhbGlkTWVzc2FnZV09XCJnZXRFcnJvck1lc3NhZ2VcIlxyXG4gICAgPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG4gICAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
@@ -1,7 +1,10 @@
1
1
  import { getErrorMessageHelper } from '../helpers/get-error-message.helper';
2
2
  export const requiredValidation = (value, validations, key, invalidMessages) => {
3
3
  const result = { isValid: true, message: null };
4
- if (Array.isArray(value) && validations.type !== 'single') {
4
+ console.log(validations);
5
+ console.log(key);
6
+ console.log();
7
+ if (Array.isArray(value) && validations.type !== 'single' && validations[key]) {
5
8
  value.forEach((field, idx) => {
6
9
  if ((field === '' || field === null || field === undefined)) {
7
10
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
@@ -9,14 +12,14 @@ export const requiredValidation = (value, validations, key, invalidMessages) =>
9
12
  }
10
13
  });
11
14
  }
12
- else if (Array.isArray(value) && validations.type === 'single' && value.length === 0) {
15
+ else if (Array.isArray(value) && validations.type === 'single' && value.length === 0 && validations[key]) {
13
16
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
14
17
  result.isValid = false;
15
18
  }
16
- else if (String(value) === '' || String(value) === 'false' || value === null || value === undefined || String(value) === '<p><br></p>') {
19
+ else if ((String(value) === '' || String(value) === 'false' || value === null || value === undefined || String(value) === '<p><br></p>') && validations[key]) {
17
20
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
18
21
  result.isValid = false;
19
22
  }
20
23
  return result;
21
24
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbXJ4LWZvcm0tdmFsaWRhdG9yL3ZhbGlkYXRpb25zL3JlcXVpcmVkLnZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsS0FBd0IsRUFDeEIsV0FBNEIsRUFDNUIsR0FBd0IsRUFDeEIsZUFBMEIsRUFDb0IsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBaUQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUU1RixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7UUFFekQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsRUFBRTtnQkFDM0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztLQUVKO1NBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBRXRGLE1BQU0sQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FFeEI7U0FBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLE9BQU8sSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLGFBQWEsRUFBRTtRQUV4SSxNQUFNLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0tBRXhCO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1lc3NhZ2VzLCBWYWxpZGF0aW9uc1R5cGUgfSBmcm9tICcuLi9tb2RlbHMvdmFsaWRhdGlvbnMtb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25UeXBlc0VudW0gfSBmcm9tICcuLi9tb2RlbHMvdmFsaWRhdGlvbnMtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2VIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2dldC1lcnJvci1tZXNzYWdlLmhlbHBlcic7XHJcblxyXG5leHBvcnQgY29uc3QgcmVxdWlyZWRWYWxpZGF0aW9uID0gKFxyXG4gIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcclxuICB2YWxpZGF0aW9uczogVmFsaWRhdGlvbnNUeXBlLFxyXG4gIGtleTogVmFsaWRhdGlvblR5cGVzRW51bSxcclxuICBpbnZhbGlkTWVzc2FnZXM6IElNZXNzYWdlc1xyXG4pOiB7IGlzVmFsaWQ6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgfSA9PiB7XHJcblxyXG4gIGNvbnN0IHJlc3VsdDogeyBpc1ZhbGlkOiBib29sZWFuLCBtZXNzYWdlOiBzdHJpbmcgfCBudWxsIH0gPSB7aXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogbnVsbH07XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWxpZGF0aW9ucy50eXBlICE9PSAnc2luZ2xlJykge1xyXG5cclxuICAgIHZhbHVlLmZvckVhY2goKGZpZWxkLCBpZHgpID0+IHtcclxuICAgICAgaWYgKChmaWVsZCA9PT0gJycgfHwgZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICByZXN1bHQubWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUhlbHBlcihrZXksIGludmFsaWRNZXNzYWdlcywgdmFsaWRhdGlvbnMubWVzc2FnZXMpO1xyXG4gICAgICAgIHJlc3VsdC5pc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbGlkYXRpb25zLnR5cGUgPT09ICdzaW5nbGUnICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG5cclxuICAgIHJlc3VsdC5tZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlSGVscGVyKGtleSwgaW52YWxpZE1lc3NhZ2VzLCB2YWxpZGF0aW9ucy5tZXNzYWdlcyk7XHJcbiAgICByZXN1bHQuaXNWYWxpZCA9IGZhbHNlO1xyXG5cclxuICB9IGVsc2UgaWYgKFN0cmluZyh2YWx1ZSkgPT09ICcnIHx8IFN0cmluZyh2YWx1ZSkgPT09ICdmYWxzZScgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCBTdHJpbmcodmFsdWUpID09PSAnPHA+PGJyPjwvcD4nKSB7XHJcblxyXG4gICAgcmVzdWx0Lm1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2VIZWxwZXIoa2V5LCBpbnZhbGlkTWVzc2FnZXMsIHZhbGlkYXRpb25zLm1lc3NhZ2VzKTtcclxuICAgIHJlc3VsdC5pc1ZhbGlkID0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbXJ4LWZvcm0tdmFsaWRhdG9yL3ZhbGlkYXRpb25zL3JlcXVpcmVkLnZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsS0FBd0IsRUFDeEIsV0FBNEIsRUFDNUIsR0FBd0IsRUFDeEIsZUFBMEIsRUFDb0IsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBaUQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUM1RixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUU3RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxFQUFFO2dCQUMzRCxNQUFNLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRixNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0tBRUo7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBRTFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FFeEI7U0FBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBRTlKLE1BQU0sQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FFeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTWVzc2FnZXMsIFZhbGlkYXRpb25zVHlwZSB9IGZyb20gJy4uL21vZGVscy92YWxpZGF0aW9ucy1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblR5cGVzRW51bSB9IGZyb20gJy4uL21vZGVscy92YWxpZGF0aW9ucy10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IGdldEVycm9yTWVzc2FnZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0LWVycm9yLW1lc3NhZ2UuaGVscGVyJztcclxuXHJcbmV4cG9ydCBjb25zdCByZXF1aXJlZFZhbGlkYXRpb24gPSAoXHJcbiAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uc1R5cGUsXHJcbiAga2V5OiBWYWxpZGF0aW9uVHlwZXNFbnVtLFxyXG4gIGludmFsaWRNZXNzYWdlczogSU1lc3NhZ2VzXHJcbik6IHsgaXNWYWxpZDogYm9vbGVhbiwgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCB9ID0+IHtcclxuXHJcbiAgY29uc3QgcmVzdWx0OiB7IGlzVmFsaWQ6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgfSA9IHtpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiBudWxsfTtcclxuICBjb25zb2xlLmxvZyh2YWxpZGF0aW9ucyk7XHJcbiAgY29uc29sZS5sb2coa2V5KTtcclxuICBjb25zb2xlLmxvZygpO1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWxpZGF0aW9ucy50eXBlICE9PSAnc2luZ2xlJyAmJiB2YWxpZGF0aW9uc1trZXldKSB7XHJcblxyXG4gICAgdmFsdWUuZm9yRWFjaCgoZmllbGQsIGlkeCkgPT4ge1xyXG4gICAgICBpZiAoKGZpZWxkID09PSAnJyB8fCBmaWVsZCA9PT0gbnVsbCB8fCBmaWVsZCA9PT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICAgIHJlc3VsdC5tZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlSGVscGVyKGtleSwgaW52YWxpZE1lc3NhZ2VzLCB2YWxpZGF0aW9ucy5tZXNzYWdlcyk7XHJcbiAgICAgICAgcmVzdWx0LmlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsaWRhdGlvbnMudHlwZSA9PT0gJ3NpbmdsZScgJiYgdmFsdWUubGVuZ3RoID09PSAwICYmIHZhbGlkYXRpb25zW2tleV0pIHtcclxuXHJcbiAgICByZXN1bHQubWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUhlbHBlcihrZXksIGludmFsaWRNZXNzYWdlcywgdmFsaWRhdGlvbnMubWVzc2FnZXMpO1xyXG4gICAgcmVzdWx0LmlzVmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgfSBlbHNlIGlmICgoU3RyaW5nKHZhbHVlKSA9PT0gJycgfHwgU3RyaW5nKHZhbHVlKSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IFN0cmluZyh2YWx1ZSkgPT09ICc8cD48YnI+PC9wPicpICYmIHZhbGlkYXRpb25zW2tleV0pIHtcclxuXHJcbiAgICByZXN1bHQubWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUhlbHBlcihrZXksIGludmFsaWRNZXNzYWdlcywgdmFsaWRhdGlvbnMubWVzc2FnZXMpO1xyXG4gICAgcmVzdWx0LmlzVmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG4iXX0=
@@ -4265,7 +4265,10 @@ const getErrorMessageHelper = (key, invalidMessages, messages, params) => {
4265
4265
 
4266
4266
  const requiredValidation = (value, validations, key, invalidMessages) => {
4267
4267
  const result = { isValid: true, message: null };
4268
- if (Array.isArray(value) && validations.type !== 'single') {
4268
+ console.log(validations);
4269
+ console.log(key);
4270
+ console.log();
4271
+ if (Array.isArray(value) && validations.type !== 'single' && validations[key]) {
4269
4272
  value.forEach((field, idx) => {
4270
4273
  if ((field === '' || field === null || field === undefined)) {
4271
4274
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
@@ -4273,11 +4276,11 @@ const requiredValidation = (value, validations, key, invalidMessages) => {
4273
4276
  }
4274
4277
  });
4275
4278
  }
4276
- else if (Array.isArray(value) && validations.type === 'single' && value.length === 0) {
4279
+ else if (Array.isArray(value) && validations.type === 'single' && value.length === 0 && validations[key]) {
4277
4280
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
4278
4281
  result.isValid = false;
4279
4282
  }
4280
- else if (String(value) === '' || String(value) === 'false' || value === null || value === undefined || String(value) === '<p><br></p>') {
4283
+ else if ((String(value) === '' || String(value) === 'false' || value === null || value === undefined || String(value) === '<p><br></p>') && validations[key]) {
4281
4284
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
4282
4285
  result.isValid = false;
4283
4286
  }
@@ -17440,13 +17443,14 @@ class FormulaEditorComponent {
17440
17443
  }
17441
17444
  writeValue(outsideValue) {
17442
17445
  if (outsideValue !== null) {
17446
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(outsideValue));
17443
17447
  this.value = outsideValue;
17444
- this.visibleValue = this._transformValue(this._modifiedValue(outsideValue)).visibleValue;
17448
+ this.visibleValue = visibleValue;
17445
17449
  this._detector.detectChanges();
17446
17450
  }
17447
17451
  }
17448
17452
  onInput(event) {
17449
- const { value, searchText } = this._transformValue(this._inputValue, false);
17453
+ const { value, searchText } = this._transformValue(this._modifiedValue(this._inputValue), false);
17450
17454
  this.updateValue(value);
17451
17455
  this.searchText = searchText;
17452
17456
  this._storeCursorPosition();
@@ -17461,9 +17465,9 @@ class FormulaEditorComponent {
17461
17465
  }
17462
17466
  insertTag(whiteListItem) {
17463
17467
  this._restoreCursorPosition(this.inputElement.nativeElement);
17464
- this._insertPositionText(whiteListItem.label);
17468
+ this._insertPositionText(`{${whiteListItem.sysName}}`);
17465
17469
  setTimeout(() => {
17466
- const { value, visibleValue } = this._transformValue(this._inputValue, false);
17470
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), false);
17467
17471
  this.updateValue(value);
17468
17472
  this.updateVisibleValue(visibleValue);
17469
17473
  });
@@ -17483,21 +17487,20 @@ class FormulaEditorComponent {
17483
17487
  this.onTouched();
17484
17488
  }
17485
17489
  _modifiedValue(value) {
17486
- const clearedValue = value.trim().split(' ').filter(e => e !== '');
17487
- return clearedValue.map(v => {
17488
- const findItem = this.items.find(w => `{${w.sysName}}` === v);
17489
- return findItem ? findItem.label : v;
17490
- }).join(' ');
17490
+ const labelsMap = Object.fromEntries(this.items.map(obj => [obj.label, obj.sysName]));
17491
+ const str = this.items.map(s => s.label);
17492
+ const reg = new RegExp(str.join('|'), 'g');
17493
+ return value.replace(reg, match => `{${labelsMap[match]}}`);
17491
17494
  }
17492
17495
  _transformValue(content, analise = false) {
17493
- const valueArray = content.split(/[\s\u00A0]+/).filter(e => e !== '');
17496
+ const valueArray = content.split(/[\s\u00A0]+/).filter(Boolean);
17494
17497
  const visibleValueArray = [];
17495
17498
  const originalValueArray = [];
17496
17499
  let isInterpretationError = false;
17497
17500
  let searchText = '';
17498
17501
  valueArray.forEach((item) => {
17499
17502
  const clearedItem = item.trim();
17500
- const findItem = this.items.find(v => clearedItem.includes(v.label));
17503
+ const findItem = this.items.find(v => clearedItem.includes(v.sysName));
17501
17504
  if (findItem) {
17502
17505
  visibleValueArray.push(createTag(findItem.label));
17503
17506
  originalValueArray.push(createTagOutside(findItem.sysName));
@@ -17524,6 +17527,8 @@ class FormulaEditorComponent {
17524
17527
  if (analise) {
17525
17528
  this._checkErrors(originalValueArray, isInterpretationError);
17526
17529
  }
17530
+ console.log(visibleValueArray);
17531
+ console.log(originalValueArray);
17527
17532
  return {
17528
17533
  value: originalValueArray.join(' '),
17529
17534
  visibleValue: visibleValueArray.join(' '),
@@ -17583,9 +17588,9 @@ class FormulaEditorComponent {
17583
17588
  }
17584
17589
  this._selection = document.getSelection();
17585
17590
  if (this._selection) {
17586
- this._selection.removeAllRanges();
17587
- this._selection.addRange(this._range);
17588
- element.focus();
17591
+ // this._selection.removeAllRanges();
17592
+ // this._selection.addRange(this._range);
17593
+ // element.focus();
17589
17594
  }
17590
17595
  }
17591
17596
  _placeCaretAtEnd() {
@@ -17602,13 +17607,27 @@ class FormulaEditorComponent {
17602
17607
  });
17603
17608
  }
17604
17609
  clickOut(event) {
17610
+ // console.dir(event);
17611
+ // console.log(this._modifiedValue(this._inputValue));
17605
17612
  if (!this.eRef.nativeElement.contains(event.target)) {
17606
- const { value, visibleValue } = this._transformValue(this._inputValue, true);
17607
- this.updateValue(value);
17613
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), true);
17614
+ //
17615
+ // this.updateValue(value);
17608
17616
  this.updateVisibleValue(visibleValue);
17617
+ //
17609
17618
  this.isFocused = false;
17610
17619
  this._detector.detectChanges();
17611
17620
  }
17621
+ // if (!this.eRef.nativeElement.contains(event.target)) {
17622
+ // console.log(this._inputValue);
17623
+ // const {value, visibleValue} = this._transformValue(this._inputValue, true);
17624
+ //
17625
+ // this.updateValue(value);
17626
+ // this.updateVisibleValue(visibleValue);
17627
+ //
17628
+ // this.isFocused = false;
17629
+ // this._detector.detectChanges();
17630
+ // }
17612
17631
  }
17613
17632
  registerOnChange(fn) {
17614
17633
  this.onChange = fn;