fx-form-builder-wrapper 2.0.70 → 2.0.71

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.
@@ -389,32 +389,31 @@ export class UploaderComponent extends FxBaseComponent {
389
389
  }
390
390
  ngAfterViewInit() {
391
391
  const key = this.fxComponent?.fxData?.name;
392
- if (key && this.uploadedFilesMap?.[key]) {
393
- const files = this.uploadedFilesMap[key];
392
+ console.log('Uploader Key:', key);
393
+ console.log('Uploaded Files Map:', this.uploadedFilesMap);
394
+ const files = this.uploadedFilesMap?.[key];
395
+ // Strong check — ensures patching happens only when files actually exist
396
+ if (key && Array.isArray(files) && files.length > 0) {
394
397
  const formatted = files
395
398
  .filter((fileObj) => !!fileObj)
396
399
  .map((fileObj) => {
397
400
  const originalUrlObj = fileObj.originalUrl;
398
401
  const fileName = originalUrlObj?.fileName || '';
399
- const fileUrl = originalUrlObj?.fileUrl || '';
400
402
  const previewUrl = originalUrlObj?.previewUrl;
401
403
  const type = fileObj?.type;
402
- // detect type based on file extension
403
- // const fileType = this.detectFileTypeFromUrl(fileName || fileUrl);
404
404
  return {
405
405
  id: uuidv4(),
406
- file: null, // nothing local
407
- originalUrl: originalUrlObj, // keep whole object
408
- result: type === 'image'
409
- ? (previewUrl) // prefer previewUrl, fallback to fileUrl
410
- : previewUrl,
406
+ file: null,
407
+ originalUrl: originalUrlObj,
408
+ result: previewUrl,
411
409
  name: fileName,
412
410
  title: fileObj?.title || '',
413
411
  notes: fileObj?.notes || '',
414
412
  categoryId: fileObj?.categoryId || '',
415
- type: type, // computed type
413
+ type: type,
416
414
  };
417
415
  });
416
+ console.log('Formatted Files for Patching:', formatted);
418
417
  if (formatted.length > 0) {
419
418
  this.uploadedFiles = [...this.uploadedFiles, ...formatted];
420
419
  this.formattedData.uploadedFiles = this.uploadedFiles;
@@ -693,4 +692,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
693
692
  type: ViewChild,
694
693
  args: ['fxComponent']
695
694
  }] } });
696
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFvQyxTQUFTLEVBQWMsTUFBTSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsSixPQUFPLEVBQTZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZ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Z0JJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRnhCYXNlQ29tcG9uZW50LCBGeENvbXBvbmVudCwgRnhTZWxlY3RTZXR0aW5nLCBGeFNldHRpbmcsIEZ4U3RyaW5nU2V0dGluZywgRnhWYWxpZGF0aW9uLCBGeFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2Z4JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSwgVXBsb2FkRXZlbnQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgVGhyZWVWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuLi90aHJlZS12aWV3ZXIvdGhyZWUtdmlld2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvY29yZSdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZngtdXBsb2FkZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRnhDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGaWxlVXBsb2FkTW9kdWxlLCBUb2FzdE1vZHVsZSwgQ29uZmlybURpYWxvZ01vZHVsZSwgRGlhbG9nTW9kdWxlLCBUaHJlZVZpZXdlckNvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3VwbG9hZGVyLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRlckNvbXBvbmVudCBleHRlbmRzIEZ4QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdHtcclxuICAvLyBwdWJsaWMgdXBsb2FkRmlsZUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIHVwbG9hZEZpbGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIHVwbG9hZGVkRmlsZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBwdWJsaWMgZm9ybWF0dGVkRGF0YTogYW55ID0ge1xyXG4gICAgdXBsb2FkZWRGaWxlczogW10sXHJcbiAgICBkZWxldGVkRmlsZXM6IFtdXHJcbiAgfTtcclxuICBjYXRlZ29yaWVzID0gW1xyXG4gICAgeyBsYWJlbDogJ09yYWwgSW1hZ2VzJywgdmFsdWU6IDE2IH0sXHJcbiAgICB7IGxhYmVsOiAnUGFzdCBEb2NzJywgdmFsdWU6IDE3IH0sXHJcbiAgICB7IGxhYmVsOiAnWC1SYXlzJywgdmFsdWU6IDE0IH0sXHJcbiAgICB7IGxhYmVsOiAnUHJvZmlsZScsIHZhbHVlOiAxOCB9LFxyXG4gIF07XHJcblxyXG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmaWxlVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVJbWFnZVVybDogc3RyaW5nID0gJyc7XHJcbiAgZmlsZVVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbCA9IG51bGw7XHJcbiAgZmlsZVR5cGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGZpbGVOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Qm9vbGVhbj4oKTtcclxuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSwgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLCBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBmeEFwaVNlcnZpY2U6IEFwaVNlcnZpY2VSZWdpc3RyeVxyXG4gICkge1xyXG4gICAgc3VwZXIoY2RyKVxyXG4gICAgdGhpcy5vbkluaXQuc3Vic2NyaWJlKChmeERhdGEpID0+IHtcclxuICAgICAgdGhpcy5fcmVnaXN0ZXIodGhpcy51cGxvYWRGaWxlQ29udHJvbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3RsRmlsZVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGxGaWxlVXBsb2FkOiBhbnkgPSBudWxsO1xyXG5cclxuICB1cGxvYWRlZEltYWdlczogeyBba2V5OiBzdHJpbmddOiB7IHJlc3VsdDogc3RyaW5nLCBmaWxlOiBGaWxlIHwgbnVsbCB9W10gfSA9IHt9O1xyXG4gIGRlbGV0ZWRGaWxlczogYW55W10gPSBbXTtcclxuICB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuICBAVmlld0NoaWxkKCdmeENvbXBvbmVudCcpIGZ4Q29tcG9uZW50ITogRnhDb21wb25lbnQ7XHJcbiAgLy8gcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gIC8vICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gIC8vICAgICAgICAgICB1cGxvYWRlZEZpbGVzW2tleV0gPSB2YWx1ZTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHN0cmluZz5bXSA9IFtdO1xyXG5cclxuICAvLyAgICAgICAgIHVybHMuZm9yRWFjaCgodXJsOiBzdHJpbmcpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYgKHVybCkge1xyXG4gIC8vICAgICAgICAgICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbiAgLy8gICAgICAgICAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikpXHJcbiAgLy8gICAgICAgICAgICAgKTtcclxuICAvLyAgICAgICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgLy8gICAgICAgICBpZiAoaW1hZ2VGZXRjaGVzLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgICBmb3JrSm9pbihpbWFnZUZldGNoZXMpLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgICAgICAgICAgbmV4dDogKGltYWdlVXJsczogc3RyaW5nW10pID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbdXBsb2FkZXJLZXldID0gaW1hZ2VVcmxzLm1hcChyZXN1bHQgPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0LFxyXG4gIC8vICAgICAgICAgICAgICAgICBmaWxlOiBudWxsXHJcbiAgLy8gICAgICAgICAgICAgICB9KSk7XHJcbiAgLy8gICAgICAgICAgICAgICAvLyB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEltYWdlc11cclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IE9iamVjdC52YWx1ZXModGhpcy51cGxvYWRlZEltYWdlcykuZmxhdCgpO1xyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXMpKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZywgb3JpZ2luYWxVcmw6IHN0cmluZyB9PltdID0gW107XHJcblxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBqdXN0IGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiB1cmxcclxuICAvLyAgICAgICAgICAgICAgIH0pKVxyXG4gIC8vICAgICAgICAgICAgICk7XHJcbiAgLy8gICAgICAgICAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGgpIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZURhdGEpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGltYWdlRGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBpdGVtLm9yaWdpbmFsVXJsLFxyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IGl0ZW0ucmVzdWx0XHJcbiAgLy8gICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy51cGxvYWRlZEZpbGVzKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgLy8gICAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuXHJcbiAgLy8gICAgICAgICAvLyBFeHRyYWN0IHVwbG9hZGVyIGtleXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgVVJMIGFycmF5c1xyXG4gIC8vICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gIC8vICAgICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgICAgdXBsb2FkZWRGaWxlc01hcFtrZXldID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlc01hcCkpIHtcclxuICAvLyAgICAgICAgICAgLy8gY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBhbnk7IHRpdGxlOnN0cmluZyA7IG5vdGVzOnN0cmluZyB9PltdID0gW107XHJcblxyXG4gIC8vICAgICAgICAgICAvLyB1cmxzLmZvckVhY2goKG9yaWdpbmFsVXJsOmFueSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAvLyAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4gIC8vICAgICAgICAgICAvLyAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldChvcmlnaW5hbFVybD8ub3JpZ2luYWxVcmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgLy8gICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAvLyAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8gZm9yIHByZXZpZXdcclxuICAvLyAgICAgICAgICAgLy8gICAgICAgICBvcmlnaW5hbFVybDogb3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsICAgICAgICAgIC8vIHByZXNlcnZlIG9yaWdpbmFsXHJcbiAgLy8gICAgICAgICAgIC8vICAgICAgIH0pKVxyXG4gIC8vICAgICAgICAgICAvLyAgICAgKTtcclxuICAvLyAgICAgICAgICAgLy8gICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIC8vICAgfVxyXG4gIC8vICAgICAgICAgICAvLyB9KTtcclxuXHJcbiAgLy8gICAgICAgICAgIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTx7IHJlc3VsdDogc3RyaW5nOyBvcmlnaW5hbFVybDogYW55OyB0aXRsZTogc3RyaW5nOyBub3Rlczogc3RyaW5nIH0+W10gPSBbXTtcclxuXHJcbiAgLy8gdXJscy5mb3JFYWNoKChvcmlnaW5hbFVybDogYW55KSA9PiB7XHJcbiAgLy8gICBpZiAob3JpZ2luYWxVcmwpIHtcclxuICAvLyAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldChvcmlnaW5hbFVybD8ub3JpZ2luYWxVcmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbiAgLy8gICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGZvciBwcmV2aWV3XHJcbiAgLy8gICAgICAgICBvcmlnaW5hbFVybDogb3JpZ2luYWxVcmw/Lm9yaWdpbmFsVXJsLCAvLyBwcmVzZXJ2ZSBvcmlnaW5hbFxyXG4gIC8vICAgICAgICAgdGl0bGU6IG9yaWdpbmFsVXJsPy50aXRsZSB8fCAnJywgLy8gZGVmYXVsdCBlbXB0eSBpZiBub3QgcHJlc2VudFxyXG4gIC8vICAgICAgICAgbm90ZXM6IG9yaWdpbmFsVXJsPy5ub3RlcyB8fCAnJ1xyXG4gIC8vICAgICAgIH0pKVxyXG4gIC8vICAgICApO1xyXG4gIC8vICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0pO1xyXG5cclxuXHJcbiAgLy8gICAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoID4gMCkge1xyXG4gIC8vICAgICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICAgIG5leHQ6IChpbWFnZURhdGEpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gaW1hZ2VEYXRhLm1hcChpdGVtID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGl0ZW0ub3JpZ2luYWxVcmwsXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdCxcclxuICAvLyAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcclxuICAvLyAgICAgICAgICAgICAgICAgICBub3RlczogJydcclxuICAvLyAgICAgICAgICAgICAgICAgfSkpO1xyXG5cclxuICAvLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfSk7XHJcbiAgLy8gICB9XHJcblxyXG4gIC8vIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAvLyAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IHsgb3JpZ2luYWxVcmw6IHN0cmluZyB9W10gfSA9IHZhcmlhYmxlcy51cGxvYWRlZEZpbGVzO1xyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlc01hcCkpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTx7IHJlc3VsdDogc3RyaW5nOyBvcmlnaW5hbFVybDogc3RyaW5nIH0+W10gPSBbXTtcclxuXHJcbiAgLy8gICAgICAgICB1cmxzLmZvckVhY2goKGZpbGVPYmo6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgICAgICBjb25zdCBvcmlnaW5hbFVybCA9IGZpbGVPYmo/Lm9yaWdpbmFsVXJsO1xyXG4gIC8vICAgICAgICAgICBpZiAob3JpZ2luYWxVcmwpIHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KG9yaWdpbmFsVXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbiAgLy8gICAgICAgICAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8gZm9yIHByZXZpZXdcclxuICAvLyAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmxcclxuICAvLyAgICAgICAgICAgICAgIH0pKVxyXG4gIC8vICAgICAgICAgICAgICk7XHJcbiAgLy8gICAgICAgICAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VEYXRhKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBpdGVtLnJlc3VsdFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpO1xyXG5cclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgICAgICAgICAgICB9LFxyXG4gIC8vICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2VzIGZvciAke3VwbG9hZGVyS2V5fTpgLCBlcnIpO1xyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG5cclxuICAvLyBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIC8vICAgaWYgKGlucHV0LmZpbGVzKSB7XHJcbiAgLy8gICAgIGZvcihsZXQgaSA9IDA7IGkgPCBpbnB1dD8uZmlsZXM/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzW2ldO1xyXG4gIC8vICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgLy8gICAgICAgcmVhZGVyLm9ubG9hZCA9IGUgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2goe1xyXG4gIC8vICAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gIC8vICAgICAgICAgICByZXN1bHQ6IGUudGFyZ2V0Py5yZXN1bHQsXHJcbiAgLy8gICAgICAgICAgIG5hbWU6IGZpbGU/Lm5hbWUsXHJcbiAgLy8gICAgICAgICAgIGlkOiB1dWlkdjQoKVxyXG4gIC8vICAgICAgICAgfSlcclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy51cGxvYWRlZEZpbGVzKTtcclxuICAvLyAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudXBsb2FkRmlsZUNvbnRyb2wpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIC8vICAgaWYgKGlucHV0LmZpbGVzKSB7XHJcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbaV07XHJcbiAgLy8gICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgLy8gICAgICAgcmVhZGVyLm9ubG9hZCA9IGUgPT4ge1xyXG4gIC8vICAgICAgICAgY29uc3QgbmV3RmlsZSA9IHtcclxuICAvLyAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gIC8vICAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gIC8vICAgICAgICAgICBvcmlnaW5hbFVybDogbnVsbCxcclxuICAvLyAgICAgICAgICAgcmVzdWx0OiBlLnRhcmdldD8ucmVzdWx0LFxyXG4gIC8vICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgLy8gICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAvLyAgICAgICAgICAgbm90ZXM6ICcnLFxyXG4gIC8vICAgICAgICAgICBjYXRlZ29yeTogJycsXHJcbiAgLy8gICAgICAgICAgIHR5cGU6IHRoaXMuZGV0ZWN0RmlsZVR5cGUoZmlsZSksXHJcbiAgLy8gICAgICAgICB9O1xyXG5cclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gIC8vICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgLy8gICAgICAgfTtcclxuXHJcbiAgLy8gICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogYW55W10gfSA9IHt9O1xyXG5cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gIC8vICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gIC8vICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gdXJsc1xyXG4gIC8vICAgICAgICAgICAuZmlsdGVyKChmaWxlT2JqOiBhbnkpID0+ICEhZmlsZU9iaikgXHJcbiAgLy8gICAgICAgICAgIC5tYXAoKGZpbGVPYmo6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgIC8vIGNvbnN0IGZpbGVUeXBlID0gdGhpcy5kZXRlY3RGaWxlVHlwZUZyb21VcmwoZmlsZU9iaj8ub3JpZ2luYWxVcmwgfHwgZmlsZU9iaj8ubmFtZSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgLy8gICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICBmaWxlOiBudWxsLCAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAvLyAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBmaWxlT2JqLm9yaWdpbmFsVXJsLCAgICBcclxuICAvLyAgICAgICAgICAgICAgIHJlc3VsdDogZmlsZU9iaj8udHlwZSA9PT0gJ2ltYWdlJyA/IGZpbGVPYmoub3JpZ2luYWxVcmwucHJldmlld1VybCA6IG51bGwsXHJcbiAgLy8gICAgICAgICAgICAgICBuYW1lOiBmaWxlT2JqPy5uYW1lIHx8ICcnLFxyXG4gIC8vICAgICAgICAgICAgICAgdGl0bGU6IGZpbGVPYmo/LnRpdGxlIHx8ICcnLFxyXG4gIC8vICAgICAgICAgICAgICAgbm90ZXM6IGZpbGVPYmo/Lm5vdGVzIHx8ICcnLFxyXG4gIC8vICAgICAgICAgICAgICAgY2F0ZWdvcnk6IGZpbGVPYmo/LmNhdGVnb3J5IHx8ICcnLFxyXG4gIC8vICAgICAgICAgICAgICAgdHlwZTogZmlsZU9iaj8udHlwZSwgICAgICAgICAgICAgICAgXHJcbiAgLy8gICAgICAgICAgICAgfTtcclxuICAvLyAgICAgICAgICAgfSk7XHJcblxyXG4gIC8vICAgICAgICAgaWYgKGZvcm1hdHRlZC5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbiAgLy8gICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFyaWFibGVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBjb25zdCB1cGxvYWRlZEZpbGVzTWFwOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcclxuXHJcblxyXG4gICAgICAgIC8vIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAgICAgICAvLyAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgKHZhbHVlIGFzIGFueSk/LnVwbG9hZGVkRmlsZXMpIHtcclxuICAgICAgICAvLyAgICAgdXBsb2FkZWRGaWxlc01hcFtrZXldID0gKHZhbHVlIGFzIGFueSkudXBsb2FkZWRGaWxlcztcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykgYXMgW3N0cmluZywgYW55XVtdKSB7XHJcbiAgaWYgKFxyXG4gICAgdmFsdWUgJiZcclxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcclxuICAgICd1cGxvYWRlZEZpbGVzJyBpbiB2YWx1ZVxyXG4gICkge1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGVzTWFwW2tleV0gPSAodmFsdWUgYXMgYW55KS51cGxvYWRlZEZpbGVzO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiAgICAgICAgLy8gZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIGZpbGVzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbiAgICAgICAgLy8gICBjb25zdCBmb3JtYXR0ZWQgPSBmaWxlc1xyXG4gICAgICAgIC8vICAgICAuZmlsdGVyKChmaWxlT2JqOiBhbnkpID0+ICEhZmlsZU9iailcclxuICAgICAgICAvLyAgICAgLm1hcCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgY29uc3Qgb3JpZ2luYWxVcmxPYmogPSBmaWxlT2JqLm9yaWdpbmFsVXJsO1xyXG4gICAgICAgIC8vICAgICAgIGNvbnN0IGZpbGVOYW1lID0gb3JpZ2luYWxVcmxPYmo/LmZpbGVOYW1lIHx8ICcnO1xyXG4gICAgICAgIC8vICAgICAgIGNvbnN0IGZpbGVVcmwgPSBvcmlnaW5hbFVybE9iaj8uZmlsZVVybCB8fCAnJztcclxuICAgICAgICAvLyAgICAgICBjb25zdCBwcmV2aWV3VXJsID0gb3JpZ2luYWxVcmxPYmo/LnByZXZpZXdVcmw7XHJcbiAgICAgICAgLy8gICAgICAgY29uc3QgdHlwZSA9IGZpbGVPYmo/LnR5cGU7XHJcblxyXG4gICAgICAgIC8vICAgICAgIC8vIGRldGVjdCB0eXBlIGJhc2VkIG9uIGZpbGUgZXh0ZW5zaW9uXHJcbiAgICAgICAgLy8gICAgICAgLy8gY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlRnJvbVVybChmaWxlTmFtZSB8fCBmaWxlVXJsKTtcclxuXHJcbiAgICAgICAgLy8gICAgICAgcmV0dXJuIHtcclxuICAgICAgICAvLyAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAgICAgICAvLyAgICAgICAgIGZpbGU6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90aGluZyBsb2NhbFxyXG4gICAgICAgIC8vICAgICAgICAgb3JpZ2luYWxVcmw6IG9yaWdpbmFsVXJsT2JqLCAgICAgICAvLyBrZWVwIHdob2xlIG9iamVjdFxyXG4gICAgICAgIC8vICAgICAgICAgcmVzdWx0OiB0eXBlID09PSAnaW1hZ2UnXHJcbiAgICAgICAgLy8gICAgICAgICAgID8gKHByZXZpZXdVcmwpICAgICAgICAvLyBwcmVmZXIgcHJldmlld1VybCwgZmFsbGJhY2sgdG8gZmlsZVVybFxyXG4gICAgICAgIC8vICAgICAgICAgICA6IHByZXZpZXdVcmwsXHJcbiAgICAgICAgLy8gICAgICAgICBuYW1lOiBmaWxlTmFtZSxcclxuICAgICAgICAvLyAgICAgICAgIHRpdGxlOiBmaWxlT2JqPy50aXRsZSB8fCAnJyxcclxuICAgICAgICAvLyAgICAgICAgIG5vdGVzOiBmaWxlT2JqPy5ub3RlcyB8fCAnJyxcclxuICAgICAgICAvLyAgICAgICAgIGNhdGVnb3J5SWQ6IGZpbGVPYmo/LmNhdGVnb3J5SWQgfHwgJycsXHJcbiAgICAgICAgLy8gICAgICAgICB0eXBlOiB0eXBlLCAgICAgICAgICAgICAgICAgICAgLy8gY29tcHV0ZWQgdHlwZVxyXG4gICAgICAgIC8vICAgICAgIH07XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG5cclxuICAgICAgICAvLyAgIGlmIChmb3JtYXR0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gICAgICAgIC8vICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgICAgICAvLyAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/Lm5hbWU7XHJcbiAgXHJcbiAgICBpZiAoa2V5ICYmIHRoaXMudXBsb2FkZWRGaWxlc01hcD8uW2tleV0pIHtcclxuXHJcbiAgICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlc01hcFtrZXldO1xyXG5cclxuICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZpbGVzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGZpbGVPYmo6IGFueSkgPT4gISFmaWxlT2JqKVxyXG4gICAgICAgICAgICAubWFwKChmaWxlT2JqOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFVybE9iaiA9IGZpbGVPYmoub3JpZ2luYWxVcmw7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBvcmlnaW5hbFVybE9iaj8uZmlsZU5hbWUgfHwgJyc7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IG9yaWdpbmFsVXJsT2JqPy5maWxlVXJsIHx8ICcnO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByZXZpZXdVcmwgPSBvcmlnaW5hbFVybE9iaj8ucHJldmlld1VybDtcclxuICAgICAgICAgICAgICBjb25zdCB0eXBlID0gZmlsZU9iaj8udHlwZTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gZGV0ZWN0IHR5cGUgYmFzZWQgb24gZmlsZSBleHRlbnNpb25cclxuICAgICAgICAgICAgICAvLyBjb25zdCBmaWxlVHlwZSA9IHRoaXMuZGV0ZWN0RmlsZVR5cGVGcm9tVXJsKGZpbGVOYW1lIHx8IGZpbGVVcmwpO1xyXG5cclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgICAgICAgZmlsZTogbnVsbCwgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3RoaW5nIGxvY2FsXHJcbiAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogb3JpZ2luYWxVcmxPYmosICAgICAgIC8vIGtlZXAgd2hvbGUgb2JqZWN0XHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6IHR5cGUgPT09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgICAgPyAocHJldmlld1VybCkgICAgICAgIC8vIHByZWZlciBwcmV2aWV3VXJsLCBmYWxsYmFjayB0byBmaWxlVXJsXHJcbiAgICAgICAgICAgICAgICAgIDogcHJldmlld1VybCxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGZpbGVPYmo/LnRpdGxlIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgbm90ZXM6IGZpbGVPYmo/Lm5vdGVzIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlJZDogZmlsZU9iaj8uY2F0ZWdvcnlJZCB8fCAnJyxcclxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlZCB0eXBlXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKGZvcm1hdHRlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLmZvcm1hdHRlZF07XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKCFpbnB1dC5maWxlcykgcmV0dXJuO1xyXG4gICAgY29uc3QgbWF4RmlsZVNpemUgPSB0aGlzLnNldHRpbmcoJ21heEZpbGVTaXplJyk7XHJcblxyXG4gICAgQXJyYXkuZnJvbShpbnB1dC5maWxlcykuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpO1xyXG5cclxuICAgICAgY29uc3QgZmlsZVNpemVJbk1CID0gZmlsZS5zaXplIC8gKDEwMjQgKiAxMDI0KTtcclxuXHJcbiAgICAgIGlmIChmaWxlU2l6ZUluTUIgPiBtYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogJ0ZpbGUgVG9vIExhcmdlJyxcclxuICAgICAgICAgICAgZGV0YWlsOiBgVGhlIGZpbGUgXCIke2ZpbGUubmFtZX1cIiBleGNlZWRzIHRoZSBtYXhpbXVtIHNpemUgbGltaXQgb2YgJHttYXhGaWxlU2l6ZX0gTUIuYCxcclxuICAgICAgICAgICAgbGlmZTogNDAwMCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdGaWxlOiBhbnkgPSB7XHJcbiAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgb3JpZ2luYWxVcmw6IG51bGwsXHJcbiAgICAgICAgcmVzdWx0OiBudWxsLFxyXG4gICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgbm90ZXM6ICcnLFxyXG4gICAgICAgIGNhdGVnb3J5SWQ6ICcnLFxyXG4gICAgICAgIHR5cGU6IGZpbGVUeXBlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKGZpbGVUeXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgICAgICAgICBuZXdGaWxlLnJlc3VsdCA9IGUudGFyZ2V0Py5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuZXdGaWxlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZE1ldGE6IHRydWUgfSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7IC8vIG9ubHkgaW1hZ2VzIG5lZWQgcHJldmlld1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIG5vbi1pbWFnZSDihpIgcHVzaCBkaXJlY3RseVxyXG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkTWV0YTogdHJ1ZSB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gb25NZXRhQ2hhbmdlKCkge1xyXG4gIC8vICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgLy8gfVxyXG5cclxuICBvbk1ldGFDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuXHJcbiAgICAvLyDinYwgSW52YWxpZCBpZiBhbnkgZmlsZSBpcyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkc1xyXG4gICAgY29uc3QgYWxsVmFsaWQgPSB0aGlzLnVwbG9hZGVkRmlsZXMuZXZlcnkoXHJcbiAgICAgIGYgPT4gZi50aXRsZT8udHJpbSgpICYmIGYubm90ZXM/LnRyaW0oKSAmJiBmLmNhdGVnb3J5SWQ/LnRvU3RyaW5nKCkudHJpbSgpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghYWxsVmFsaWQpIHtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZE1ldGE6IHRydWUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gcHVibGljIGRlbGV0ZUZpbGUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGU/LmlkICE9PSBpZCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkZWxldGVGaWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IFtkZWxldGVkRmlsZV0gPSB0aGlzLnVwbG9hZGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgLy8gICBpZiAoZGVsZXRlZEZpbGUpIHtcclxuICAvLyAgICAgdGhpcy5kZWxldGVkRmlsZXMucHVzaChkZWxldGVkRmlsZSk7XHJcbiAgLy8gICAgIHRoaXMuZm9ybWF0dGVkRGF0YSA9IHtcclxuICAvLyAgICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgLy8gICAgICAgdXBsb2FkZWRGaWxlczogWy4uLnRoaXMudXBsb2FkZWRGaWxlc10sXHJcbiAgLy8gICAgICAgZGVsZXRlZEZpbGVzOiBbLi4udGhpcy5kZWxldGVkRmlsZXNdXHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXM/LltpbmRleF07XHJcbiAgICBpZiAoIWRlbGV0ZWRGaWxlKSByZXR1cm47XHJcblxyXG4gICAgLy8gRW5zdXJlIGZvcm1hdHRlZERhdGEgZXhpc3RzIGFuZCBpbml0aWFsaXplIGlmIHVuZGVmaW5lZFxyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRhID0gdGhpcy5mb3JtYXR0ZWREYXRhIHx8IHsgdXBsb2FkZWRGaWxlczogW10sIGRlbGV0ZWRGaWxlczogW10gfTtcclxuXHJcbiAgICAvLyBBZGQgdGhlIGRlbGV0ZWQgZmlsZSB0byB0aGUgZGVsZXRlZEZpbGVzIGFycmF5XHJcbiAgICB0aGlzLmRlbGV0ZWRGaWxlcyA9IFsuLi50aGlzLmRlbGV0ZWRGaWxlcywgZGVsZXRlZEZpbGVdO1xyXG5cclxuICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHVwbG9hZGVkRmlsZXMgdXNpbmcgZmlsdGVyIGZvciBpbW11dGFiaWxpdHlcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcclxuXHJcbiAgICAvLyBVcGRhdGUgZm9ybWF0dGVkRGF0YVxyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRhID0ge1xyXG4gICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgICAgIHVwbG9hZGVkRmlsZXM6IHRoaXMudXBsb2FkZWRGaWxlcyxcclxuICAgICAgZGVsZXRlZEZpbGVzOiB0aGlzLmRlbGV0ZWRGaWxlc1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSB1cGxvYWRGaWxlQ29udHJvbFxyXG4gICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3VwbG9hZC10ZXh0JywgJHRpdGxlOiAnVXBsb2FkIFRleHQnLCB2YWx1ZTogJ1VwbG9hZCBGaWxlJyB9KSxcclxuICAgICAgbmV3IEZ4U2VsZWN0U2V0dGluZyh7IGtleTogJ211bHRpcGxlLXVwbG9hZCcsICR0aXRsZTogJ011bHRpcGxlIFVwbG9hZHMnLCB2YWx1ZTogZmFsc2UgfSwgW3sgb3B0aW9uOiAnRW5hYmxlJywgdmFsdWU6IHRydWUgfSwgeyBvcHRpb246ICdEaXNhYmxlJywgdmFsdWU6IGZhbHNlIH1dKSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVObycsICR0aXRsZTogJ01heGltdW0gRmlsZSBVcGxvYWQgQWxsb3dlZCcsIHZhbHVlOiA4IH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbWF4RmlsZVNpemUnLCAkdGl0bGU6ICdNYXhpbXVtIEZpbGUgU2l6ZSBBbGxvd2VkJywgdmFsdWU6IDEwIH0pLFxyXG4gICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVTaXplJywgJHRpdGxlOiAnTWF4aW11bSBGaWxlIFNpemUgQWxsb3dlZCcsIHZhbHVlOiAxMCB9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtGeFZhbGlkYXRvclNlcnZpY2UucmVxdWlyZWRdO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0RmlsZVR5cGUoZmlsZTogRmlsZSk6ICdpbWFnZScgfCAnY3N2JyB8ICd0ZXh0JyB8ICdwZGYnIHwgJ2V4Y2VsJyB8ICd3b3JkJyB8ICdzdGwnIHwgJ290aGVyJyB7XHJcbiAgICBjb25zdCBtaW1lID0gKGZpbGUudHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IG5hbWUgPSAoZmlsZS5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIC8vIEltYWdlc1xyXG4gICAgaWYgKG1pbWUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChuYW1lKSkge1xyXG4gICAgICByZXR1cm4gJ2ltYWdlJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDU1ZcclxuICAgIGlmIChtaW1lID09PSAndGV4dC9jc3YnIHx8IG5hbWUuZW5kc1dpdGgoJy5jc3YnKSkge1xyXG4gICAgICByZXR1cm4gJ2Nzdic7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGV4dCBmaWxlc1xyXG4gICAgaWYgKG1pbWUgPT09ICd0ZXh0L3BsYWluJyB8fCBuYW1lLmVuZHNXaXRoKCcudHh0JykpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIH1cclxuXHJcbiAgICAvLyBQREZcclxuICAgIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBuYW1lLmVuZHNXaXRoKCcucGRmJykpIHtcclxuICAgICAgcmV0dXJuICdwZGYnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEV4Y2VsXHJcbiAgICBpZiAoXHJcbiAgICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnIHx8XHJcbiAgICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfHxcclxuICAgICAgL1xcLih4bHN8eGxzeCkkL2kudGVzdChuYW1lKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiAnZXhjZWwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdvcmRcclxuICAgIGlmIChcclxuICAgICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL21zd29yZCcgfHxcclxuICAgICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyB8fFxyXG4gICAgICAvXFwuKGRvY3xkb2N4KSQvaS50ZXN0KG5hbWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICd3b3JkJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBTVEwgKDNEIE1vZGVsKVxyXG4gICAgaWYgKFxyXG4gICAgICBtaW1lID09PSAnbW9kZWwvc3RsJyB8fFxyXG4gICAgICBtaW1lID09PSAnYXBwbGljYXRpb24vc2xhJyB8fCAvLyBTb21lIGJyb3dzZXJzIHVzZSB0aGlzIGZvciBTVExcclxuICAgICAgL1xcLnN0bCQvaS50ZXN0KG5hbWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICdzdGwnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnb3RoZXInO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIG9wZW5GaWxlRGlhbG9nKGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gIC8vICAgLy8gcmVzZXQgdGhlIHZhbHVlIHNvIGNoYW5nZSBhbHdheXMgdHJpZ2dlcnNcclxuICAvLyAgIGZpbGVJbnB1dC52YWx1ZSA9ICcnO1xyXG4gIC8vICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbiAgLy8gfVxyXG5cclxuICBvcGVuRmlsZURpYWxvZygpIHtcclxuICAgIC8vIGlmICh0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gdGhpcy5zZXR0aW5nKCdtYXhGaWxlTm8nKSkge1xyXG4gICAgLy8gICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgIC8vICAgICAvLyAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAvLyAgICAgLy8gICBzdW1tYXJ5OiAnU3VjY2VzcycsXHJcbiAgICAvLyAgICAgLy8gICBkZXRhaWw6IGBNYXhpbXVtXCIke3RoaXMuc2V0dGluZygnbWF4RmlsZU5vJyl9XCIgY2FuIGJlIHVwbG9hZGVkYCxcclxuICAgIC8vICAgICAvLyAgIGxpZmU6IDMwMDBcclxuICAgIC8vICAgICAvLyB9KTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb25CYXNpY1VwbG9hZEF1dG8oZXZlbnQ6IFVwbG9hZEV2ZW50KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlSW1hZ2VVcmwgPSAnJztcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VTZWxlY3QodXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ZUltYWdlVXJsID0gdXJsO1xyXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uRmlsZUNsaWNrKGZpbGU6IGFueSwgbmFtZTogYW55KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCFmaWxlKSByZXR1cm47XHJcblxyXG4gICAgLy8gdGhpcy5maWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgIGxldCBsb2NhbFVybCA9ICcnO1xyXG5cclxuICAgIGlmIChmaWxlPy5maWxlKSB7XHJcbiAgICAgIGxvY2FsVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlLmZpbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9jYWxVcmwgPSBmaWxlPy5yZXN1bHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zdCBsb2NhbFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcblxyXG5cclxuICAgIHRoaXMubG9hZEZpbGUobG9jYWxVcmwsIG5hbWUpO1xyXG4gICAgdGhpcy5maWxlVmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5TVExGaWxlKGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFmaWxlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgZmlsZSBzdHJ1Y3R1cmU6JywgZmlsZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY3R1YWxGaWxlID0gZmlsZS5maWxlO1xyXG4gICAgaWYoYWN0dWFsRmlsZSkge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2FjdHVhbEZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG4gICAgICB0aGlzLnN0bEZpbGVWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdGxGaWxlVXBsb2FkID0gYmxvYjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmV0Y2hBbmRMb2FkTW9kZWwoZmlsZS5vcmlnaW5hbFVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoQW5kTG9hZE1vZGVsKG9yaWdpbmFsVXJsOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHJlZ2lvbjogb3JpZ2luYWxVcmwucmVnaW9uLFxyXG4gICAgICBidWNrZXROYW1lOiBvcmlnaW5hbFVybC5idWNrZXROYW1lLFxyXG4gICAgICBmaWxlVXJsOiBvcmlnaW5hbFVybC5maWxlVXJsLFxyXG4gICAgICBvYmplY3RLZXk6IG9yaWdpbmFsVXJsLm9iamVjdEtleSxcclxuICAgIH07XHJcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gYCR7dGhpcy5meEFwaVNlcnZpY2UuZ2V0U2VydmljZVVybCgnd29ya2Zsb3dfc2VydmljZScpfS93b3JrZmxvdy9maWxlcy9kb3dubG9hZGA7XHJcbiAgICB0aGlzLmh0dHAucG9zdChcclxuICAgICAgc2VydmljZVVybCxcclxuICAgICAgcGF5bG9hZCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfVxyXG4gICAgKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcclxuICAgICAgdGhpcy5zdGxGaWxlVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RsRmlsZVVwbG9hZCA9IGJsb2I7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEZpbGUodXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVOYW1lLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gZXh0ZW5zaW9uO1xyXG5cclxuICAgIGlmIChleHRlbnNpb24gPT09ICdwZGYnKSB7XHJcbiAgICAgIC8vIE5hdGl2ZSBQREYgcmVuZGVyaW5nXHJcbiAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoWydkb2MnLCAnZG9jeCcsICd4bHMnLCAneGxzeCcsICdwcHQnLCAncHB0eCcsICdjc3YnLCAnLnN0bCddLmluY2x1ZGVzKGV4dGVuc2lvbikpIHtcclxuICAgICAgLy8gTWljcm9zb2Z0IE9mZmljZSBWaWV3ZXIgZm9yIE9mZmljZSBmaWxlc1xyXG4gICAgICAvLyBjb25zdCBvZmZpY2VWaWV3ZXIgPSBgaHR0cHM6Ly92aWV3Lm9mZmljZWFwcHMubGl2ZS5jb20vb3AvZW1iZWQuYXNweD9zcmM9JHtlbmNvZGVVUklDb21wb25lbnQodXJsKX1gO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhvZmZpY2VWaWV3ZXIpO1xyXG4gICAgICBjb25zdCBnb29nbGVWaWV3ZXJVcmwgPSAnaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZ3ZpZXc/dXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQodXJsKSArICcmZW1iZWRkZWQ9dHJ1ZSc7XHJcbiAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChnb29nbGVWaWV3ZXJVcmwpO1xyXG5cclxuICAgICAgLy8gdGhpcy5maWxlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKG9mZmljZVZpZXdlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gVW5zdXBwb3J0ZWQgdHlwZVxyXG4gICAgICB0aGlzLmZpbGVVcmwgPSBudWxsO1xyXG4gICAgICB0aGlzLmZpbGVUeXBlID0gJ3Vuc3VwcG9ydGVkJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlRmlsZURpYWxvZygpIHtcclxuICAgIHRoaXMuZmlsZVZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVVybCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gbnVsbDtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTdGxEaWFsb2coKSB7XHJcbiAgICB0aGlzLnN0bEZpbGVWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnN0bEZpbGVVcGxvYWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tdXBsb2FkIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgcC0wIHJvdW5kZWQtc21cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC04IGl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDwhLS0gPHAgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPlBhdGllbnQgSW1hZ2VzPC9wPiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xIHVwbG9hZCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgKm5nSWY9XCJ1cGxvYWRlZEZpbGVzLmxlbmd0aCA8IHNldHRpbmcoJ21heEZpbGVObycpXCIgKGNsaWNrKT1cIm9wZW5GaWxlRGlhbG9nKClcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgdmlld0JveD1cIjAgMCAyOSAyOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICBkPVwiTTE0LjAwMSAzLjAwMTk1QzExLjUzMjIgMy4wMDE5NSA5LjE2NzIyIDMuODY5NTYgNy4yMzY0MSA1LjM4NDE0TDcuMjM1OTggNC41OTY5NUM3LjIzNTk4IDQuNTI0NzMgNy4yMjE3NSA0LjQ1MzIxIDcuMTk0MTEgNC4zODY0OEM3LjE2NjQ3IDQuMzE5NzUgNy4xMjU5NiA0LjI1OTEyIDcuMDc0ODkgNC4yMDgwNEM3LjAyMzgxIDQuMTU2OTcgNi45NjMxOCA0LjExNjQ2IDYuODk2NDUgNC4wODg4MkM2LjgyOTcyIDQuMDYxMTggNi43NTgyIDQuMDQ2OTUgNi42ODU5OCA0LjA0Njk1QzYuNjEzNzUgNC4wNDY5NSA2LjU0MjIzIDQuMDYxMTggNi40NzU1IDQuMDg4ODJDNi40MDg3NyA0LjExNjQ2IDYuMzQ4MTQgNC4xNTY5NyA2LjI5NzA3IDQuMjA4MDRDNi4yNDU5OSA0LjI1OTEyIDYuMjA1NDggNC4zMTk3NSA2LjE3Nzg0IDQuMzg2NDhDNi4xNTAyIDQuNDUzMjEgNi4xMzU5OCA0LjUyNDczIDYuMTM1OTggNC41OTY5NUw2LjEzNjQyIDYuNjg2NTJDNi4xMzY0MyA2LjgzMjM5IDYuMTk0MzggNi45NzIyOCA2LjI5NzUyIDcuMDc1NDJDNi40MDA2NyA3LjE3ODU2IDYuNTQwNTUgNy4yMzY1MSA2LjY4NjQyIDcuMjM2NTJIOC43NzU5OEM4Ljg0ODIgNy4yMzY1MiA4LjkxOTcyIDcuMjIyMyA4Ljk4NjQ1IDcuMTk0NjZDOS4wNTMxOCA3LjE2NzAyIDkuMTEzODEgNy4xMjY1MSA5LjE2NDg5IDcuMDc1NDNDOS4yMTU5NiA3LjAyNDM2IDkuMjU2NDcgNi45NjM3MyA5LjI4NDExIDYuODk3QzkuMzExNzUgNi44MzAyNyA5LjMyNTk4IDYuNzU4NzUgOS4zMjU5OCA2LjY4NjUyQzkuMzI1OTggNi42MTQzIDkuMzExNzUgNi41NDI3OCA5LjI4NDExIDYuNDc2MDVDOS4yNTY0NyA2LjQwOTMyIDkuMjE1OTYgNi4zNDg2OSA5LjE2NDg5IDYuMjk3NjFDOS4xMTM4MSA2LjI0NjU0IDkuMDUzMTggNi4yMDYwMyA4Ljk4NjQ1IDYuMTc4MzlDOC45MTk3MiA2LjE1MDc1IDguODQ4MiA2LjEzNjUyIDguNzc1OTggNi4xMzY1Mkg4LjA1ODRDOS43NzAyIDQuODQzODcgMTEuODM5OSA0LjEwMTk1IDE0LjAwMSA0LjEwMTk1QzE5LjQ3NTEgNC4xMDE5NSAyMy45MDEgOC41Mjc4MiAyMy45MDEgMTQuMDAyQzIzLjkwMSAxOS40NzYxIDE5LjQ3NTEgMjMuOTAyIDE0LjAwMSAyMy45MDJDOC41MjY4NCAyMy45MDIgNC4xMDA5OCAxOS40NzYxIDQuMTAwOTggMTQuMDAyQzQuMTAwOTggMTIuNjM4MSA0LjM4MjYzIDExLjI4ODggNC45Mjg1NSAxMC4wMzg5QzQuOTg2OTEgOS45MDUzMiA0Ljk4OTgyIDkuNzUzOTkgNC45MzY2NSA5LjYxODIyQzQuODgzNDcgOS40ODI0NiA0Ljc3ODU1IDkuMzczMzYgNC42NDQ5NiA5LjMxNDkyQzQuNTc4NzcgOS4yODU5NiA0LjUwNzUzIDkuMjcwMzIgNC40MzUzIDkuMjY4OUM0LjM2MzA2IDkuMjY3NDcgNC4yOTEyNiA5LjI4MDMgNC4yMjM5OCA5LjMwNjYzQzQuMTU2NzEgOS4zMzI5NyA0LjA5NTI4IDkuMzcyMyA0LjA0MzIxIDkuNDIyMzhDMy45OTExNCA5LjQ3MjQ3IDMuOTQ5NDQgOS41MzIzMiAzLjkyMDUxIDkuNTk4NTJDMy4zMTM5MyAxMC45ODcyIDMuMDAwOTggMTIuNDg2NiAzLjAwMDk4IDE0LjAwMkMzLjAwMDk4IDIwLjA3MDYgNy45MzIzNiAyNS4wMDIgMTQuMDAxIDI1LjAwMkMyMC4wNjk2IDI1LjAwMiAyNS4wMDEgMjAuMDcwNiAyNS4wMDEgMTQuMDAyQzI1LjAwMSA3LjkzMzM0IDIwLjA2OTYgMy4wMDE5NSAxNC4wMDEgMy4wMDE5NVpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgIGQ9XCJNMTMuOTk4OCA2LjEzOTY1QzkuNjYxNiA2LjEzOTY1IDYuMTMzNzkgOS42Njc0NiA2LjEzMzc5IDE0LjAwNDZDNi4xMzM3OSAxOC4zNDE4IDkuNjYxNiAyMS44Njk2IDEzLjk5ODggMjEuODY5NkMxOC4zMzYgMjEuODY5NiAyMS44NjM4IDE4LjM0MTggMjEuODYzOCAxNC4wMDQ2QzIxLjg2MzggOS42Njc0NiAxOC4zMzYgNi4xMzk2NSAxMy45OTg4IDYuMTM5NjVaTTEzLjk5ODggOC4yMjk2NUMxNC4xNDQ3IDguMjI5NjUgMTQuMjg0NiA4LjI4NzU5IDE0LjM4NzcgOC4zOTA3NEMxNC40OTA4IDguNDkzODggMTQuNTQ4OCA4LjYzMzc4IDE0LjU0ODggOC43Nzk2NVYxMy43NzY5TDE3LjUyMjcgMTYuNzUwOEMxNy42MjU4IDE2Ljg1MzkgMTcuNjgzNyAxNi45OTM4IDE3LjY4MzcgMTcuMTM5NkMxNy42ODM3IDE3LjI4NTUgMTcuNjI1OCAxNy40MjU0IDE3LjUyMjcgMTcuNTI4NUMxNy40MTk1IDE3LjYzMTYgMTcuMjc5NiAxNy42ODk2IDE3LjEzMzggMTcuNjg5NkMxNi45ODc5IDE3LjY4OTYgMTYuODQ4MSAxNy42MzE2IDE2Ljc0NDkgMTcuNTI4NUwxMy42MDk5IDE0LjM5MzVDMTMuNTA2OCAxNC4yOTA0IDEzLjQ0ODggMTQuMTUwNSAxMy40NDg4IDE0LjAwNDZWOC43Nzk2NUMxMy40NDg4IDguNjMzNzggMTMuNTA2NyA4LjQ5Mzg4IDEzLjYwOTkgOC4zOTA3NEMxMy43MTMgOC4yODc1OSAxMy44NTI5IDguMjI5NjUgMTMuOTk4OCA4LjIyOTY1WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI4LjU2XCIgaGVpZ2h0PVwiMjhcIiByeD1cIjEuNTE0NzlcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xNS4wNjggMjIuNzM5MVYxNy42NzA4SDE4LjQ5NjhMMTQuMjEwOCAxMi42MDI1TDkuOTI0OCAxNy42NzA4SDEzLjM1MzZWMjIuNzM5MUg5LjA2NzU5VjIyLjY5NjlDOC45MjM1OCAyMi43MDUzIDguNzg2NDMgMjIuNzM5MSA4LjYzODk5IDIyLjczOTFDNi45MzM5MSAyMi43MzkxIDUuMjk4NjYgMjIuMDcxNyA0LjA5Mjk4IDIwLjg4MzVDMi44ODczIDE5LjY5NTQgMi4yMDk5NiAxOC4wODQgMi4yMDk5NiAxNi40MDM3QzIuMjA5OTYgMTMuMTUzMiA0LjcwNDQzIDEwLjUwNDIgNy45MDUyMyAxMC4xNDFDOC4xODU4NSA4LjY5NTMgOC45Njg5MiA3LjM5MTE4IDEwLjExOTcgNi40NTI5MkMxMS4yNzA2IDUuNTE0NjUgMTIuNzE3MiA1LjAwMDg5IDE0LjIxMDggNUMxNS43MDQ3IDUuMDAwODIgMTcuMTUxNSA1LjUxNDUyIDE4LjMwMjYgNi40NTI3N0MxOS40NTM3IDcuMzkxMDEgMjAuMjM3MSA4LjY5NTE2IDIwLjUxODEgMTAuMTQxQzIzLjcxODkgMTAuNTA0MiAyNi4yMSAxMy4xNTMyIDI2LjIxIDE2LjQwMzdDMjYuMjEgMTguMDg0IDI1LjUzMjYgMTkuNjk1NCAyNC4zMjY5IDIwLjg4MzVDMjMuMTIxMyAyMi4wNzE3IDIxLjQ4NiAyMi43MzkxIDE5Ljc4MDkgMjIuNzM5MUMxOS42MzY5IDIyLjczOTEgMTkuNDk4MSAyMi43MDUzIDE5LjM1MjMgMjIuNjk2OVYyMi43MzkxSDE1LjA2OFpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ1cGxvYWRfdGl0bGUgXCI+XHJcbiAgICAgICAgICB7eyBzZXR0aW5nKCd1cGxvYWQtdGV4dCcpIH19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIFttdWx0aXBsZV09XCJzZXR0aW5nKCdtdWx0aXBsZS11cGxvYWQnKVwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgIGFjY2VwdD1cIi5jc3YsLnBkZiwueGxzLC54bHN4LC5kb2MsLmRvY3gsLnR4dCxpbWFnZS8qLC5zdGxcIiBoaWRkZW4gLz5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1saXN0IGZsZXggaXRlbXMtY2VudGVyIGdhcC00IGZsZXgtd3JhcCB3LWZ1bGxcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVwbG9hZGVkRmlsZXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgdXBsb2FkZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIHAtMyBib3JkZXIgcm91bmRlZC1sZyBzaGFkb3ctc20gYmctd2hpdGUgdy1bNDUwcHhdIHVwbG9hZF9maWxlXCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBDbG9zZSBpY29uIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNsb3NlX2ljb24gY3Vyc29yLXBvaW50ZXIgYWJzb2x1dGUgdG9wLTIgcmlnaHQtMlwiIChjbGljayk9XCJkZWxldGVGaWxlKGkpXCI+XHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyMiAyMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTFcIiBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNNy4wODkxMSAxNS44ODg5TDYuMTExMzMgMTQuOTExMUwxMC4wMjI0IDExTDYuMTExMzMgNy4wODg4Nkw3LjA4OTExIDYuMTExMDhMMTEuMDAwMiAxMC4wMjIyTDE0LjkxMTMgNi4xMTEwOEwxNS44ODkxIDcuMDg4ODZMMTEuOTc4IDExTDE1Ljg4OTEgMTQuOTExMUwxNC45MTEzIDE1Ljg4ODlMMTEuMDAwMiAxMS45Nzc4TDcuMDg5MTEgMTUuODg4OVpcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsX3RpdGxlIGZsZXhcIj5cclxuICAgICAgICAgICAgPCEtLSBUaHVtYm5haWwgb24gbGVmdCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbCBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlLnR5cGUgPT09ICdpbWFnZSc7IGVsc2Ugbm9uSW1hZ2VUaHVtYlwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImZpbGUtdGh1bWJuYWlsXCIgW3NyY109XCJmaWxlPy5yZXN1bHRcIiBhbHQ9XCJwcmV2aWV3XCIgKGNsaWNrKT1cIm9uSW1hZ2VTZWxlY3QoZmlsZT8ucmVzdWx0KVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsZT8ucmVzdWx0XCIgLz5cclxuICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZmlsZT8ucmVzdWx0XCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNzAxMyAxM0gzLjMxMjdDMi41ODUwMSAxMyAyIDEyLjQwNDggMiAxMS42NjQ1VjQuMzM1NDhDMiAzLjU5NTE2IDIuNTg1MDEgMyAzLjMxMjcgM0gxMi42ODcxQzEzLjQxNDcgMyAxMy45OTk4IDMuNTk1MTYgMTMuOTk5OCA0LjMzNTQ4VjExLjY2NDVDMTQuMDE0IDEyLjQwNDggMTMuNDE0NyAxMyAxMi43MDEzIDEzWk05LjI0ODM2IDcuOTA0ODRMNy4zOTM0NyAxMC4wNjc3QzcuMjc5MzIgMTAuMjEyOSA3LjA1MTAyIDEwLjIxMjkgNi45MzY4OCAxMC4wODIzTDUuOTM4MDkgOC45OTM1NUM1LjgwOTY3IDguODYyOSA1LjYwOTkxIDguODYyOSA1LjQ4MTUgOC45OTM1NUwzLjc2OTI5IDEwLjg2NjFDMy41ODM4IDExLjA2OTQgMy43MjY0OCAxMS40MDMyIDMuOTk3NTggMTEuNDAzMkg2LjI2NjI2SDguMTM1NDNIMTIuMDE2NEMxMi4yODc1IDExLjQwMzIgMTIuNDMwMiAxMS4wODM5IDEyLjI0NDcgMTAuODgwNkw5LjcxOTIyIDcuOTA0ODRDOS41OTA4MSA3Ljc1OTY4IDkuMzc2NzggNy43NTk2OCA5LjI0ODM2IDcuOTA0ODRaTTYuNzM3MTIgNS45ODg3MUM2LjI1MTk5IDUuOTg4NzEgNS44NTI0OCA2LjM5NTE2IDUuODUyNDggNi44ODg3MUM1Ljg1MjQ4IDcuMzgyMjYgNi4yNTE5OSA3Ljc4ODcxIDYuNzM3MTIgNy43ODg3MUM3LjIyMjI1IDcuNzg4NzEgNy42MjE3NiA3LjM4MjI2IDcuNjIxNzYgNi44ODg3MUM3LjYyMTc2IDYuMzk1MTYgNy4yMjIyNSA1Ljk4ODcxIDYuNzM3MTIgNS45ODg3MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOTk5OTk5XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub25JbWFnZVRodW1iPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtdGh1bWJuYWlsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpbGUudHlwZVwiPlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidjc3YnXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGNEY0RjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMi43QzE1IDEyLjg2NTcgMTQuODY1NyAxMyAxNC43IDEzSDIuM0MyLjEzNDMxIDEzIDIgMTIuODY1NyAyIDEyLjdWOS4zQzIgOS4xMzQzMSAyLjEzNDMxIDkgMi4zIDlIMTQuN0MxNC44NjU3IDkgMTUgOS4xMzQzMSAxNSA5LjNWMTIuN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzIzQTc2MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi45NDA3NiAxMC4zNDMzQzYuODU5MzkgMTAuMzQzMyA2Ljc4NzE2IDEwLjM1ODggNi43MjQwOCAxMC4zODk5QzYuNjYxOTEgMTAuNDIgNi42MDkzNCAxMC40NjQgNi41NjYzNyAxMC41MjE2QzYuNTI0MzIgMTAuNTc5MyA2LjQ5MjMyIDEwLjY0ODkgNi40NzAzOCAxMC43MzA1QzYuNDQ4NDQgMTAuODEyMiA2LjQzNzQ3IDEwLjkwNCA2LjQzNzQ3IDExLjAwNkM2LjQzNzQ3IDExLjE0MzUgNi40NTQ4NCAxMS4yNjEgNi40ODk1OCAxMS4zNTg2QzYuNTI1MjMgMTEuNDU1MyA2LjU4MDA5IDExLjUyOTQgNi42NTQxNCAxMS41ODA4QzYuNzI4MiAxMS42MzE0IDYuODIzNzMgMTEuNjU2NyA2Ljk0MDc2IDExLjY1NjdDNy4wMjIxMiAxMS42NTY3IDcuMTAzNDkgMTEuNjQ3OCA3LjE4NDg2IDExLjYzMDFDNy4yNjcxNCAxMS42MTIzIDcuMzU2MjggMTEuNTg3IDcuNDUyMjggMTEuNTU0MlYxMS45MDAyQzcuMzYzNTkgMTEuOTM1NyA3LjI3NjI4IDExLjk2MSA3LjE5MDM1IDExLjk3NkM3LjEwNDQxIDExLjk5MiA3LjAwNzk1IDEyIDYuOTAwOTkgMTJDNi42OTQzNyAxMiA2LjUyNDMyIDExLjk1ODcgNi4zOTA4NCAxMS44NzYyQzYuMjU4MjcgMTEuNzkyOSA2LjE1OTk5IDExLjY3NjYgNi4wOTYgMTEuNTI3NkM2LjAzMiAxMS4zNzc3IDYgMTEuMjAyOSA2IDExLjAwMzNDNiAxMC44NTYxIDYuMDIwNTcgMTAuNzIxMiA2LjA2MTcxIDEwLjU5ODhDNi4xMDI4NSAxMC40NzY0IDYuMTYzMTkgMTAuMzcwNCA2LjI0MjczIDEwLjI4MDhDNi4zMjIyNyAxMC4xOTEyIDYuNDIwNTUgMTAuMTIyIDYuNTM3NTggMTAuMDczMkM2LjY1NDYgMTAuMDI0NCA2Ljc4ODk5IDEwIDYuOTQwNzYgMTBDNy4wNDA0MSAxMCA3LjE0MDA2IDEwLjAxMjQgNy4yMzk3MSAxMC4wMzczQzcuMzQwMjggMTAuMDYxMiA3LjQzNjI4IDEwLjA5NDUgNy41Mjc3IDEwLjEzNzFMNy4zOTA1NyAxMC40NzI0QzcuMzE1NiAxMC40Mzc4IDcuMjQwMTcgMTAuNDA3NiA3LjE2NDI5IDEwLjM4MTlDNy4wODg0MSAxMC4zNTYyIDcuMDEzOSAxMC4zNDMzIDYuOTQwNzYgMTAuMzQzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjA2MzYzIDExLjQzMzFDOS4wNjM2MyAxMS41NDg1IDkuMDM0ODMgMTEuNjQ4NyA4Ljk3NzI0IDExLjczMzlDOC45MTk2NCAxMS44MTkgOC44MzU1MyAxMS44ODQ3IDguNzI0OSAxMS45MzA4QzguNjE1MTkgMTEuOTc2OSA4LjQ4MTcyIDEyIDguMzI0NDcgMTJDOC4yNTQ5OCAxMiA4LjE4Njg3IDExLjk5NTYgOC4xMjAxMyAxMS45ODY3QzguMDU0MzEgMTEuOTc3OCA3Ljk5MDc3IDExLjk2NSA3LjkyOTUxIDExLjk0ODFDNy44NjkxNyAxMS45MzA0IDcuODExNTcgMTEuOTA4NiA3Ljc1NjcyIDExLjg4MjlWMTEuNDk5N0M3Ljg1MTggMTEuNTQwNSA3Ljk1MDU0IDExLjU3NzMgOC4wNTI5MyAxMS42MTAxQzguMTU1MzMgMTEuNjQyOSA4LjI1NjgxIDExLjY1OTMgOC4zNTczOCAxMS42NTkzQzguNDI2ODYgMTEuNjU5MyA4LjQ4MjYzIDExLjY1MDUgOC41MjQ2OCAxMS42MzI3QzguNTY3NjUgMTEuNjE1IDguNTk4NzQgMTEuNTkwNiA4LjYxNzk0IDExLjU1OTVDOC42MzcxNCAxMS41Mjg1IDguNjQ2NzQgMTEuNDkzIDguNjQ2NzQgMTEuNDUzMUM4LjY0Njc0IDExLjQwNDMgOC42Mjk4MiAxMS4zNjI2IDguNTk2IDExLjMyOEM4LjU2MjE3IDExLjI5MzQgOC41MTU1NCAxMS4yNjEgOC40NTYxMiAxMS4yMzA5QzguMzk3NiAxMS4yMDA3IDguMzMxMzIgMTEuMTY4MyA4LjI1NzI3IDExLjEzMzdDOC4yMTA2NCAxMS4xMTI0IDguMTU5OSAxMS4wODY3IDguMTA1MDUgMTEuMDU2NkM4LjA1MDE5IDExLjAyNTUgNy45OTgwOCAxMC45ODc4IDcuOTQ4NzEgMTAuOTQzNEM3Ljg5OTM0IDEwLjg5OTEgNy44NTg2NiAxMC44NDU0IDcuODI2NjYgMTAuNzgyNEM3Ljc5NTU4IDEwLjcxODYgNy43ODAwMyAxMC42NDIzIDcuNzgwMDMgMTAuNTUzNkM3Ljc4MDAzIDEwLjQzNzMgNy44MDc0NiAxMC4zMzggNy44NjIzMSAxMC4yNTU1QzcuOTE3MTcgMTAuMTczIDcuOTk1MzQgMTAuMTEgOC4wOTY4MiAxMC4wNjY1QzguMTk5MjEgMTAuMDIyMiA4LjMxOTg5IDEwIDguNDU4ODYgMTBDOC41NjMwOCAxMCA4LjY2MjI4IDEwLjAxMiA4Ljc1NjQ1IDEwLjAzNTlDOC44NTE1MyAxMC4wNTkgOC45NTA3MiAxMC4wOTI3IDkuMDU0MDMgMTAuMTM3MUw4LjkxNjkgMTAuNDU3OEM4LjgyNDU2IDEwLjQyMTQgOC43NDE4MiAxMC4zOTM0IDguNjY4NjggMTAuMzczOUM4LjU5NTU0IDEwLjM1MzUgOC41MjEwMyAxMC4zNDMzIDguNDQ1MTUgMTAuMzQzM0M4LjM5MjEyIDEwLjM0MzMgOC4zNDY4NiAxMC4zNTE3IDguMzA5MzggMTAuMzY4NkM4LjI3MTkgMTAuMzg0NiA4LjI0MzU1IDEwLjQwNzYgOC4yMjQzNiAxMC40Mzc4QzguMjA1MTYgMTAuNDY3MSA4LjE5NTU2IDEwLjUwMTIgOC4xOTU1NiAxMC41NDAzQzguMTk1NTYgMTAuNTg2NCA4LjIwOTI3IDEwLjYyNTQgOC4yMzY3IDEwLjY1NzRDOC4yNjUwNCAxMC42ODg0IDguMzA3MDkgMTAuNzE4NiA4LjM2Mjg2IDEwLjc0NzhDOC40MTk1NSAxMC43NzcxIDguNDg5OTQgMTAuODExMyA4LjU3NDA1IDEwLjg1MDNDOC42NzY0NSAxMC44OTczIDguNzYzNzYgMTAuOTQ2NiA4LjgzNTk4IDEwLjk5OEM4LjkwOTEyIDExLjA0ODYgOC45NjUzNSAxMS4xMDg0IDkuMDA0NjYgMTEuMTc3NkM5LjA0Mzk4IDExLjI0NiA5LjA2MzYzIDExLjMzMTEgOS4wNjM2MyAxMS40MzMxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDEwLjAyNzlMMTAuMzE4NCAxMS45NzM0SDkuODU0OTFMOS4xNzQ3MSAxMC4wMjc5SDkuNjAzOTVMOS45ODEwOCAxMS4xODU2QzkuOTg3NDggMTEuMjA1MSA5Ljk5Nzk5IDExLjI0MiAxMC4wMTI2IDExLjI5NjFDMTAuMDI3MiAxMS4zNDkzIDEwLjA0MTkgMTEuNDA2MSAxMC4wNTY1IDExLjQ2NjRDMTAuMDcyIDExLjUyNTggMTAuMDgyNiAxMS41NzUxIDEwLjA4OCAxMS42MTQxQzEwLjA5MzUgMTEuNTc1MSAxMC4xMDMxIDExLjUyNTggMTAuMTE2OCAxMS40NjY0QzEwLjEzMTUgMTEuNDA3IDEwLjE0NTYgMTEuMzUwNiAxMC4xNTk0IDExLjI5NzRDMTAuMTc0IDExLjI0MzMgMTAuMTg0NSAxMS4yMDYgMTAuMTkwOSAxMS4xODU2TDEwLjU3MDggMTAuMDI3OUgxMVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjVcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiOVwiIHk9XCI3XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjlcIiB5PVwiNVwiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiAoY2xpY2spPVwib25GaWxlQ2xpY2soZmlsZSxmaWxlPy5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xNzU3IDEuMTc1NzRDMTEuMDYzMiAxLjA2MzIxIDEwLjkxMDYgMSAxMC43NTE1IDFIMy42QzMuMjY4NjMgMSAzIDEuMjY4NjMgMyAxLjZWMTQuNEMzIDE0LjczMTQgMy4yNjg2MyAxNSAzLjYgMTVIMTMuNEMxMy43MzE0IDE1IDE0IDE0LjczMTQgMTQgMTQuNFY0LjI0ODUzQzE0IDQuMDg5NCAxMy45MzY4IDMuOTM2NzkgMTMuODI0MyAzLjgyNDI2TDExLjE3NTcgMS4xNzU3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0Y0RjRGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUY1RUJCXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjA0MzUzIDEySDYuNjExMDVWMTAuMzIwM0g2LjA1NzJWOS45NjAzOEg3LjU5NzM4VjEwLjMyMDNINy4wNDM1M1YxMlpNOS41NjAyNyAxMkg5LjA2NjQxTDguNTkyMDggMTEuMjI4NUw4LjExNzc1IDEySDcuNjU0NThMOC4zMzExOSAxMC45NDgxTDcuNjk3ODIgOS45NjAzOEg4LjE3NDk0TDguNjE0NCAxMC42OTQyTDkuMDQ1NDggOS45NjAzOEg5LjUxMTQ0TDguODcxMDkgMTAuOTcxOEw5LjU2MDI3IDEyWk0xMC42MDM4IDEySDEwLjE3MTNWMTAuMzIwM0g5LjYxNzQ3VjkuOTYwMzhIMTEuMTU3NlYxMC4zMjAzSDEwLjYwMzhWMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjVcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ3BkZidcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIChjbGljayk9XCJvbkZpbGVDbGljayhmaWxlLGZpbGU/Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNERDIwMjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNjA4NCA5Ljk2MDM4QzYuODcxNjEgOS45NjAzOCA3LjA2MzY2IDEwLjAxNzEgNy4xODQ1NyAxMC4xMzA2QzcuMzA1NDggMTAuMjQzMSA3LjM2NTkzIDEwLjM5ODQgNy4zNjU5MyAxMC41OTY1QzcuMzY1OTMgMTAuNjg1OCA3LjM1MjQ1IDEwLjc3MTQgNy4zMjU0NyAxMC44NTMyQzcuMjk4NSAxMC45MzQyIDcuMjU0MzIgMTEuMDA2MiA3LjE5Mjk0IDExLjA2OTVDNy4xMzI0OSAxMS4xMzI3IDcuMDUxNTcgMTEuMTgyOSA2Ljk1MDIgMTEuMjIwMUM2Ljg0ODgyIDExLjI1NjQgNi43MjM3MyAxMS4yNzQ2IDYuNTc0OTIgMTEuMjc0Nkg2LjM4OTM3VjEySDUuOTU2ODlWOS45NjAzOEg2LjYwODRaTTYuNTg2MDggMTAuMzE0N0g2LjM4OTM3VjEwLjkyMDJINi41MzE2N0M2LjYxMjU4IDEwLjkyMDIgNi42ODI4IDEwLjkwOTUgNi43NDIzMyAxMC44ODgxQzYuODAxODUgMTAuODY2NyA2Ljg0Nzg5IDEwLjgzMzIgNi44ODA0NCAxMC43ODc3QzYuOTEyOTkgMTAuNzQyMSA2LjkyOTI3IDEwLjY4MzUgNi45MjkyNyAxMC42MTE5QzYuOTI5MjcgMTAuNTExNCA2LjkwMTM3IDEwLjQzNyA2Ljg0NTU2IDEwLjM4ODdDNi43ODk3NiAxMC4zMzk0IDYuNzAzMjYgMTAuMzE0NyA2LjU4NjA4IDEwLjMxNDdaTTkuNDQzMjIgMTAuOTYwN0M5LjQ0MzIyIDExLjE5MDQgOS4zOTkwNCAxMS4zODI0IDkuMzEwNjkgMTEuNTM2OEM5LjIyMzI2IDExLjY5MDMgOS4wOTYzMSAxMS44MDYxIDguOTI5ODMgMTEuODg0MkM4Ljc2MzM1IDExLjk2MTQgOC41NjI5MiAxMiA4LjMyODU0IDEySDcuNzUwOThWOS45NjAzOEg4LjM5MTMyQzguNjA1MjQgOS45NjAzOCA4Ljc5MDc4IDkuOTk4NTEgOC45NDc5NiAxMC4wNzQ4QzkuMTA1MTQgMTAuMTUwMSA5LjIyNjk4IDEwLjI2MjIgOS4zMTM0OCAxMC40MTFDOS4zOTk5NyAxMC41NTg5IDkuNDQzMjIgMTAuNzQyMSA5LjQ0MzIyIDEwLjk2MDdaTTguOTk0IDEwLjk3MThDOC45OTQgMTAuODIxMSA4Ljk3MTY4IDEwLjY5NzUgOC45MjcwNCAxMC42MDA3QzguODgzMzIgMTAuNTAzMSA4LjgxODIyIDEwLjQzMSA4LjczMTcyIDEwLjM4NDVDOC42NDYxNiAxMC4zMzggOC41NDAxMyAxMC4zMTQ3IDguNDEzNjQgMTAuMzE0N0g4LjE4MzQ1VjExLjY0MjlIOC4zNjlDOC41ODAxMiAxMS42NDI5IDguNzM2ODQgMTEuNTg2NiA4LjgzOTE1IDExLjQ3NDFDOC45NDIzOCAxMS4zNjE1IDguOTk0IDExLjE5NDEgOC45OTQgMTAuOTcxOFpNMTAuMjkxNCAxMkg5Ljg2NTkzVjkuOTYwMzhIMTEuMDM1VjEwLjMxNDdIMTAuMjkxNFYxMC44NDA3SDEwLjk4MzRWMTEuMTkzNkgxMC4yOTE0VjEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNlwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidzdGwnXCIgKGNsaWNrKT1cIm9uT3BlblNUTEZpbGUoZmlsZSlcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGNEY0RjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMi43QzE1IDEyLjg2NTcgMTQuODY1NyAxMyAxNC43IDEzSDIuM0MyLjEzNDMxIDEzIDIgMTIuODY1NyAyIDEyLjdWOS4zQzIgOS4xMzQzMSAyLjEzNDMxIDkgMi4zIDlIMTQuN0MxNC44NjU3IDkgMTUgOS4xMzQzMSAxNSA5LjNWMTIuN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xNzg4MSAxMC41NjFDNy4xNjk1NCAxMC40NzgxIDcuMTMwNDggMTAuNDEzNSA3LjA2MTYyIDEwLjM2NzNDNi45OTM0MyAxMC4zMjEyIDYuOTA0NzEgMTAuMjk4MSA2Ljc5NTQ3IDEwLjI5ODFDNi43MTg2NyAxMC4yOTgxIDYuNjUyOCAxMC4zMDkxIDYuNTk3ODQgMTAuMzMxM0M2LjU0Mjg5IDEwLjM1MzQgNi41MDA4NSAxMC4zODM1IDYuNDcxNzIgMTAuNDIxNUM2LjQ0MjU5IDEwLjQ1OTQgNi40Mjc2OSAxMC41MDI4IDYuNDI3MDMgMTAuNTUxNUM2LjQyNzAzIDEwLjU5MiA2LjQzNjYzIDEwLjYyNzEgNi40NTU4MyAxMC42NTY5QzYuNDc1NjkgMTAuNjg2NiA2LjUwMjUxIDEwLjcxMTkgNi41MzYyNyAxMC43MzI4QzYuNTcwMDQgMTAuNzUzIDYuNjA3NDQgMTAuNzcwMSA2LjY0ODQ5IDEwLjc4NDFDNi42ODk1NCAxMC43OTggNi43MzA5MiAxMC44MDk3IDYuNzcyNjMgMTAuODE5Mkw2Ljk2MzMgMTAuODY0N0M3LjA0MDEgMTAuODgxOCA3LjExMzkyIDEwLjkwNDkgNy4xODQ3NyAxMC45MzRDNy4yNTYyNyAxMC45NjMxIDcuMzIwMTYgMTAuOTk5OCA3LjM3NjQzIDExLjA0NDFDNy40MzMzNyAxMS4wODg0IDcuNDc4MzkgMTEuMTQxOSA3LjUxMTUgMTEuMjA0NkM3LjU0NDYgMTEuMjY3MiA3LjU2MTE1IDExLjM0MDYgNy41NjExNSAxMS40MjQ4QzcuNTYxMTUgMTEuNTM4NyA3LjUzMDcgMTEuNjM5IDcuNDY5NzkgMTEuNzI1N0M3LjQwODg4IDExLjgxMTcgNy4zMjA4MiAxMS44NzkxIDcuMjA1NjIgMTEuOTI3OUM3LjA5MTA4IDExLjk3NiA2Ljk1MjM4IDEyIDYuNzg5NTEgMTJDNi42MzEyOCAxMiA2LjQ5MzkgMTEuOTc2NiA2LjM3NzM4IDExLjkyOThDNi4yNjE1MiAxMS44ODI5IDYuMTcwODEgMTEuODE0NiA2LjEwNTI3IDExLjcyNDdDNi4wNDAzOSAxMS42MzQ5IDYuMDA1MyAxMS41MjU0IDYgMTEuMzk2M0g2LjM2MjQ4QzYuMzY3NzggMTEuNDY0IDYuMzg5NjMgMTEuNTIwMyA2LjQyODAzIDExLjU2NTNDNi40NjY0MyAxMS42MTAyIDYuNTE2NDEgMTEuNjQzNyA2LjU3Nzk4IDExLjY2NTlDNi42NDAyMiAxMS42ODggNi43MDk3MyAxMS42OTkxIDYuNzg2NTMgMTEuNjk5MUM2Ljg2NjY0IDExLjY5OTEgNi45MzY4MiAxMS42ODc3IDYuOTk3MDcgMTEuNjY0OUM3LjA1Nzk4IDExLjY0MTUgNy4xMDU2NSAxMS42MDkyIDcuMTQwMDggMTEuNTY4MUM3LjE3NDUgMTEuNTI2MyA3LjE5MjA1IDExLjQ3NzYgNy4xOTI3MSAxMS40MjE5QzcuMTkyMDUgMTEuMzcxMyA3LjE3NjQ5IDExLjMyOTUgNy4xNDYwNCAxMS4yOTY2QzcuMTE1NTggMTEuMjYzMSA3LjA3Mjg4IDExLjIzNTIgNy4wMTc5MyAxMS4yMTMxQzYuOTYzNjQgMTEuMTkwMyA2LjkwMDA4IDExLjE3MDEgNi44MjcyNSAxMS4xNTIzTDYuNTk1ODYgMTEuMDk1NEM2LjQyODM2IDExLjA1NDMgNi4yOTU5NCAxMC45OTE5IDYuMTk4NjIgMTAuOTA4NEM2LjEwMTk2IDEwLjgyNDIgNi4wNTM2MyAxMC43MTI1IDYuMDUzNjMgMTAuNTczM0M2LjA1MzYzIDEwLjQ1ODggNi4wODYwNyAxMC4zNTg1IDYuMTUwOTUgMTAuMjcyNEM2LjIxNjUgMTAuMTg2NCA2LjMwNTU0IDEwLjExOTYgNi40MTgwOSAxMC4wNzIxQzYuNTMwNjUgMTAuMDI0IDYuNjU4MDkgMTAgNi44MDA0NCAxMEM2Ljk0NDc3IDEwIDcuMDcxMjIgMTAuMDI0IDcuMTc5OCAxMC4wNzIxQzcuMjg5MDQgMTAuMTE5NiA3LjM3NDc4IDEwLjE4NTcgNy40MzcwMSAxMC4yNzA1QzcuNDk5MjUgMTAuMzU0NyA3LjUzMTM2IDEwLjQ1MTUgNy41MzMzNCAxMC41NjFINy4xNzg4MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03LjgwMDI0IDEwLjMyMThWMTAuMDI2Nkg5LjQyMjk2VjEwLjMyMThIOC43OTQzM1YxMS45NzA2SDguNDI4ODdWMTAuMzIxOEg3LjgwMDI0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuNzM1NzkgMTEuOTcwNlYxMC4wMjY2SDEwLjEwNDJWMTEuNjc1NEgxMVYxMS45NzA2SDkuNzM1NzlaXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXNrIGlkPVwibWFzazBfODAxMV83NTA1XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCI2XCIgeT1cIjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI2XCIgeT1cIjNcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGcgbWFzaz1cInVybCgjbWFzazBfODAxMV83NTA1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4yMjIyMiA3LjM1NjI1VjUuNjQzNzVMNi41NTU1NiA0Ljc3NVY2LjQ4NzVMOC4yMjIyMiA3LjM1NjI1Wk04Ljc3Nzc4IDcuMzU2MjVMMTAuNDQ0NCA2LjQ4NzVWNC43NzVMOC43Nzc3OCA1LjY0Mzc1VjcuMzU2MjVaTTguNSA1LjIxMjVMMTAuMTQ1OCA0LjM1NjI1TDguNSAzLjVMNi44NTQxNyA0LjM1NjI1TDguNSA1LjIxMjVaTTYuMjc3NzggNi45MjVDNi4xODk4MSA2Ljg3OTE3IDYuMTIxNTMgNi44MTg3NSA2LjA3MjkyIDYuNzQzNzVDNi4wMjQzMSA2LjY2ODc1IDYgNi41ODU0MiA2IDYuNDkzNzVWNC41MDYyNUM2IDQuNDE0NTggNi4wMjQzMSA0LjMzMTI1IDYuMDcyOTIgNC4yNTYyNUM2LjEyMTUzIDQuMTgxMjUgNi4xODk4MSA0LjEyMDgzIDYuMjc3NzggNC4wNzVMOC4yMjIyMiAzLjA2ODc1QzguMzEwMTkgMy4wMjI5MiA4LjQwMjc4IDMgOC41IDNDOC41OTcyMiAzIDguNjg5ODEgMy4wMjI5MiA4Ljc3Nzc4IDMuMDY4NzVMMTAuNzIyMiA0LjA3NUMxMC44MTAyIDQuMTIwODMgMTAuODc4NSA0LjE4MTI1IDEwLjkyNzEgNC4yNTYyNUMxMC45NzU3IDQuMzMxMjUgMTEgNC40MTQ1OCAxMSA0LjUwNjI1VjYuNDkzNzVDMTEgNi41ODU0MiAxMC45NzU3IDYuNjY4NzUgMTAuOTI3MSA2Ljc0Mzc1QzEwLjg3ODUgNi44MTg3NSAxMC44MTAyIDYuODc5MTcgMTAuNzIyMiA2LjkyNUw4Ljc3Nzc4IDcuOTMxMjVDOC42ODk4MSA3Ljk3NzA4IDguNTk3MjIgOCA4LjUgOEM4LjQwMjc4IDggOC4zMTAxOSA3Ljk3NzA4IDguMjIyMjIgNy45MzEyNUw2LjI3Nzc4IDYuOTI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInd29yZCdcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIChjbGljayk9XCJvbkZpbGVDbGljayhmaWxlLGZpbGU/Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxRjVFQkJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMDQzNTMgMTJINi42MTEwNVYxMC4zMjAzSDYuMDU3MlY5Ljk2MDM4SDcuNTk3MzhWMTAuMzIwM0g3LjA0MzUzVjEyWk05LjU2MDI3IDEySDkuMDY2NDFMOC41OTIwOCAxMS4yMjg1TDguMTE3NzUgMTJINy42NTQ1OEw4LjMzMTE5IDEwLjk0ODFMNy42OTc4MiA5Ljk2MDM4SDguMTc0OTRMOC42MTQ0IDEwLjY5NDJMOS4wNDU0OCA5Ljk2MDM4SDkuNTExNDRMOC44NzEwOSAxMC45NzE4TDkuNTYwMjcgMTJaTTEwLjYwMzggMTJIMTAuMTcxM1YxMC4zMjAzSDkuNjE3NDdWOS45NjAzOEgxMS4xNTc2VjEwLjMyMDNIMTAuNjAzOFYxMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjZcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI3XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoRGVmYXVsdCB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbjxwYXRoIGQ9XCJNMTIuNzAxMyAxM0gzLjMxMjdDMi41ODUwMSAxMyAyIDEyLjQwNDggMiAxMS42NjQ1VjQuMzM1NDhDMiAzLjU5NTE2IDIuNTg1MDEgMyAzLjMxMjcgM0gxMi42ODcxQzEzLjQxNDcgMyAxMy45OTk4IDMuNTk1MTYgMTMuOTk5OCA0LjMzNTQ4VjExLjY2NDVDMTQuMDE0IDEyLjQwNDggMTMuNDE0NyAxMyAxMi43MDEzIDEzWk05LjI0ODM2IDcuOTA0ODRMNy4zOTM0NyAxMC4wNjc3QzcuMjc5MzIgMTAuMjEyOSA3LjA1MTAyIDEwLjIxMjkgNi45MzY4OCAxMC4wODIzTDUuOTM4MDkgOC45OTM1NUM1LjgwOTY3IDguODYyOSA1LjYwOTkxIDguODYyOSA1LjQ4MTUgOC45OTM1NUwzLjc2OTI5IDEwLjg2NjFDMy41ODM4IDExLjA2OTQgMy43MjY0OCAxMS40MDMyIDMuOTk3NTggMTEuNDAzMkg2LjI2NjI2SDguMTM1NDNIMTIuMDE2NEMxMi4yODc1IDExLjQwMzIgMTIuNDMwMiAxMS4wODM5IDEyLjI0NDcgMTAuODgwNkw5LjcxOTIyIDcuOTA0ODRDOS41OTA4MSA3Ljc1OTY4IDkuMzc2NzggNy43NTk2OCA5LjI0ODM2IDcuOTA0ODRaTTYuNzM3MTIgNS45ODg3MUM2LjI1MTk5IDUuOTg4NzEgNS44NTI0OCA2LjM5NTE2IDUuODUyNDggNi44ODg3MUM1Ljg1MjQ4IDcuMzgyMjYgNi4yNTE5OSA3Ljc4ODcxIDYuNzM3MTIgNy43ODg3MUM3LjIyMjI1IDcuNzg4NzEgNy42MjE3NiA3LjM4MjI2IDcuNjIxNzYgNi44ODg3MUM3LjYyMTc2IDYuMzk1MTYgNy4yMjIyNSA1Ljk4ODcxIDYuNzM3MTIgNS45ODg3MVpcIiBmaWxsPVwiIzk5OTk5OVwiLz5cclxuPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNZXRhZGF0YSBvbiByaWdodCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlX25vdGVzIG1sLTJcIj5cclxuICAgICAgICAgICAgICA8IS0tIFRpdGxlIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTAgLW10LTFcIj5UaXRsZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJmaWxlLnRpdGxlXCIgbmFtZT1cInRpdGxle3tpfX1cIiAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGl0bGVcIiBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0zIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICN0aXRsZUN0cmw9XCJuZ01vZGVsXCIgLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXRsZUN0cmwuaW52YWxpZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIHRleHQteHMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICBUaXRsZSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gTm90ZXMgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIGlucHV0LXRpdGxlIG0tMCAtbXQtMVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImZpbGUubm90ZXNcIiBuYW1lPVwibm90ZXN7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBub3Rlc1wiIGNsYXNzPVwiIHJvdW5kZWQgcHgtMyBweS0yIG1iLTAgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCIgcm93cz1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZCAjbm90ZXNDdHJsPVwibmdNb2RlbFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm90ZXNDdHJsLmludmFsaWRcIiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LXhzIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgTm90ZXMgYXJlIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5IG10LTJcIj5cclxuICAgICAgICAgICAgPCEtLSBDYXRlZ29yeSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTBcIj5DYXRlZ29yeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImZpbGUuY2F0ZWdvcnlJZCBcIiBuYW1lPVwiY2F0ZWdvcnl7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiIHJvdW5kZWQgcHgtMyBweS0yIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiIHJlcXVpcmVkICNjYXRlZ29yeUN0cmw9XCJuZ01vZGVsXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IENhdGVnb3J5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGNhdGVnb3JpZXNcIiBbbmdWYWx1ZV09XCJjLnZhbHVlXCI+e3sgYy5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhdGVnb3J5Q3RybC5pbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgdGV4dC14cyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgQ2F0ZWdvcnkgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBJbWFnZSBQcmV2aWV3IERpYWxvZyAtLT5cclxuICA8cC1kaWFsb2cgaGVhZGVyPVwiSW1hZ2UgUHJldmlld1wiIFttb2RhbF09XCJ0cnVlXCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFsodmlzaWJsZSldPVwidmlzaWJsZVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc3MHJlbSd9XCJcclxuICAgIGNsYXNzPVwiY3VzdG9tRGlhbG9nQ2xhc3NcIiAob25IaWRlKT1cImNsb3NlRGlhbG9nKClcIj5cclxuICAgIDxpbWcgW3NyY109XCJzZWxlY3RlSW1hZ2VVcmxcIiAvPlxyXG4gIDwvcC1kaWFsb2c+XHJcblxyXG4gICAgPCEtLSBEb2N1bWVudCBQcmV2aWV3IERpYWxvZyAtLT5cclxuICA8cC1kaWFsb2cgaGVhZGVyPVwiRG9jdW1lbnQgUHJldmlld1wiIFttb2RhbF09XCJ0cnVlXCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFsodmlzaWJsZSldPVwiZmlsZVZpc2libGVcIlxyXG4gICAgW3N0eWxlXT1cInt3aWR0aDogJzcwcmVtJ31cIiBjbGFzcz1cImN1c3RvbURpYWxvZ0NsYXNzXCIgKG9uSGlkZSk9XCJjbG9zZUZpbGVEaWFsb2coKVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImZpbGVVcmwgJiYgZmlsZVR5cGUgIT09ICd1bnN1cHBvcnRlZCc7IGVsc2UgdW5zdXBwb3J0ZWRNc2dcIiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHNoYWRvdy1zbVwiPlxyXG4gICAgICA8aWZyYW1lIFtzcmNdPVwiZmlsZVVybFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjYwMFwiIHN0eWxlPVwiYm9yZGVyOiBub25lO1wiIGFsbG93ZnVsbHNjcmVlbj5cclxuICAgICAgPC9pZnJhbWU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3Vuc3VwcG9ydGVkTXNnPlxyXG4gICAgICA8cCBjbGFzcz1cInRleHQtcmVkLTYwMCBtdC0zXCIgKm5nSWY9XCJmaWxlVHlwZSA9PT0gJ3Vuc3VwcG9ydGVkJ1wiPlxyXG4gICAgICAgIFVuc3VwcG9ydGVkIGZpbGUgdHlwZS4gUGxlYXNlIHVwbG9hZCBhIFBERiwgRE9DWCwgWExTWCwgb3IgUFBUWCBmaWxlLlxyXG4gICAgICA8L3A+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC1kaWFsb2c+XHJcblxyXG4gIDwhLS0gU1RMIEZpbGUgUHJldmlldyBEaWFsb2cgLS0+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGxGaWxlVXBsb2FkXCI+XHJcbiAgPHAtZGlhbG9nIGhlYWRlcj1cIlNUTCBGaWxlIFByZXZpZXdcIiBbbW9kYWxdPVwidHJ1ZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbKHZpc2libGUpXT1cInN0bEZpbGVWaXNpYmxlXCIgW3N0eWxlXT1cInt3aWR0aDogJzcwcmVtJ31cIlxyXG4gICAgY2xhc3M9XCJjdXN0b21EaWFsb2dDbGFzc1wiIChvbkhpZGUpPVwiY2xvc2VTdGxEaWFsb2coKVwiPlxyXG4gICAgPGFwcC10aHJlZS12aWV3ZXIgW21hbnVhbEZpbGVVcGxvYWRdPVwic3RsRmlsZVVwbG9hZFwiPjwvYXBwLXRocmVlLXZpZXdlcj5cclxuICA8L3AtZGlhbG9nPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICA8cC10b2FzdCBbcHJldmVudE9wZW5EdXBsaWNhdGVzXT1cInRydWVcIiBbYnJlYWtwb2ludHNdPVwieyAnNDI2cHgnOiB7IHdpZHRoOiAnOTAlJyB9IH1cIiBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIj48L3AtdG9hc3Q+XHJcblxyXG48L2Z4LWNvbXBvbmVudD4iXX0=
695
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZngtYnVpbGRlci13cmFwcGVyL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWRlci91cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL3VwbG9hZGVyL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFvQyxTQUFTLEVBQWMsTUFBTSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFhLGVBQWUsRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsSixPQUFPLEVBQTZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZ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dUJBQUMsV0FBVztnQkFnQkksV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGeEJhc2VDb21wb25lbnQsIEZ4Q29tcG9uZW50LCBGeFNlbGVjdFNldHRpbmcsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBGeEJ1aWxkZXJXcmFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Z4LWJ1aWxkZXItd3JhcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kdWxlLCBVcGxvYWRFdmVudCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBUaHJlZVZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL3RocmVlLXZpZXdlci90aHJlZS12aWV3ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQGluc3RhbnRzeXMtbGFicy9jb3JlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC11cGxvYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGeENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZpbGVVcGxvYWRNb2R1bGUsIFRvYXN0TW9kdWxlLCBDb25maXJtRGlhbG9nTW9kdWxlLCBEaWFsb2dNb2R1bGUsIFRocmVlVmlld2VyQ29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdXBsb2FkZXIuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgRnhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0e1xyXG4gIC8vIHB1YmxpYyB1cGxvYWRGaWxlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgdXBsb2FkRmlsZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgdXBsb2FkZWRGaWxlczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHB1YmxpYyBmb3JtYXR0ZWREYXRhOiBhbnkgPSB7XHJcbiAgICB1cGxvYWRlZEZpbGVzOiBbXSxcclxuICAgIGRlbGV0ZWRGaWxlczogW11cclxuICB9O1xyXG4gIGNhdGVnb3JpZXMgPSBbXHJcbiAgICB7IGxhYmVsOiAnT3JhbCBJbWFnZXMnLCB2YWx1ZTogMTYgfSxcclxuICAgIHsgbGFiZWw6ICdQYXN0IERvY3MnLCB2YWx1ZTogMTcgfSxcclxuICAgIHsgbGFiZWw6ICdYLVJheXMnLCB2YWx1ZTogMTQgfSxcclxuICAgIHsgbGFiZWw6ICdQcm9maWxlJywgdmFsdWU6IDE4IH0sXHJcbiAgXTtcclxuXHJcbiAgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZpbGVWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZUltYWdlVXJsOiBzdHJpbmcgPSAnJztcclxuICBmaWxlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcclxuICBmaWxlVHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZmlsZU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxCb29sZWFuPigpO1xyXG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBmeEJ1aWxkZXJXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGZ4QXBpU2VydmljZTogQXBpU2VydmljZVJlZ2lzdHJ5XHJcbiAgKSB7XHJcbiAgICBzdXBlcihjZHIpXHJcbiAgICB0aGlzLm9uSW5pdC5zdWJzY3JpYmUoKGZ4RGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLl9yZWdpc3Rlcih0aGlzLnVwbG9hZEZpbGVDb250cm9sKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGxGaWxlVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0bEZpbGVVcGxvYWQ6IGFueSA9IG51bGw7XHJcblxyXG4gIHVwbG9hZGVkSW1hZ2VzOiB7IFtrZXk6IHN0cmluZ106IHsgcmVzdWx0OiBzdHJpbmcsIGZpbGU6IEZpbGUgfCBudWxsIH1bXSB9ID0ge307XHJcbiAgZGVsZXRlZEZpbGVzOiBhbnlbXSA9IFtdO1xyXG4gIHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogYW55W10gfSA9IHt9O1xyXG4gIEBWaWV3Q2hpbGQoJ2Z4Q29tcG9uZW50JykgZnhDb21wb25lbnQhOiBGeENvbXBvbmVudDtcclxuICAvLyBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXMpKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8c3RyaW5nPltdID0gW107XHJcblxyXG4gIC8vICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgaW1hZ2UkID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSlcclxuICAvLyAgICAgICAgICAgICApO1xyXG4gIC8vICAgICAgICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH0pO1xyXG5cclxuICAvLyAgICAgICAgIGlmIChpbWFnZUZldGNoZXMubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgICAgICAgICBuZXh0OiAoaW1hZ2VVcmxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1t1cGxvYWRlcktleV0gPSBpbWFnZVVybHMubWFwKHJlc3VsdCA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGxcclxuICAvLyAgICAgICAgICAgICAgIH0pKTtcclxuICAvLyAgICAgICAgICAgICAgIC8vIHRoaXMudXBsb2FkZWRGaWxlcyA9IFsuLi50aGlzLnVwbG9hZGVkSW1hZ2VzXVxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnVwbG9hZGVkSW1hZ2VzKS5mbGF0KCk7XHJcbiAgLy8gICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIGltYWdlcyBmb3IgJHt1cGxvYWRlcktleX06YCwgZXJyKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgLy8gICAgICAgY29uc3QgdXBsb2FkZWRGaWxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAvLyAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgdXBsb2FkZWRGaWxlc1trZXldID0gdmFsdWU7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFt1cGxvYWRlcktleSwgdXJsc10gb2YgT2JqZWN0LmVudHJpZXModXBsb2FkZWRGaWxlcykpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTx7IHJlc3VsdDogc3RyaW5nLCBvcmlnaW5hbFVybDogc3RyaW5nIH0+W10gPSBbXTtcclxuXHJcbiAgLy8gICAgICAgICB1cmxzLmZvckVhY2goKHVybDogc3RyaW5nKSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmICh1cmwpIHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAgICAgbWFwKChibG9iOiBCbG9iKSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIC8vIGp1c3QgZm9yIHByZXZpZXdcclxuICAvLyAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IHVybFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpXHJcbiAgLy8gICAgICAgICAgICAgKTtcclxuICAvLyAgICAgICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgLy8gICAgICAgICBpZiAoaW1hZ2VGZXRjaGVzLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgICBmb3JrSm9pbihpbWFnZUZldGNoZXMpLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgICAgICAgICAgbmV4dDogKGltYWdlRGF0YSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gaW1hZ2VEYXRhLm1hcChpdGVtID0+ICh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAvLyAgICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGl0ZW0ub3JpZ2luYWxVcmwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIHJlc3VsdDogaXRlbS5yZXN1bHRcclxuICAvLyAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgLy8gICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnVwbG9hZGVkRmlsZXMpO1xyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkXHJcbiAgLy8gICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoIXZhcmlhYmxlcykgcmV0dXJuO1xyXG5cclxuICAvLyAgICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xyXG5cclxuICAvLyAgICAgICAgIC8vIEV4dHJhY3QgdXBsb2FkZXIga2V5cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBVUkwgYXJyYXlzXHJcbiAgLy8gICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ3VwbG9hZGVyJykgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAvLyAgICAgICAgICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSB2YWx1ZTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfVxyXG5cclxuICAvLyAgICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gIC8vICAgICAgICAgICAvLyBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8eyByZXN1bHQ6IHN0cmluZzsgb3JpZ2luYWxVcmw6IGFueTsgdGl0bGU6c3RyaW5nIDsgbm90ZXM6c3RyaW5nIH0+W10gPSBbXTtcclxuXHJcbiAgLy8gICAgICAgICAgIC8vIHVybHMuZm9yRWFjaCgob3JpZ2luYWxVcmw6YW55KSA9PiB7XHJcbiAgLy8gICAgICAgICAgIC8vICAgaWYgKG9yaWdpbmFsVXJsKSB7XHJcbiAgLy8gICAgICAgICAgIC8vICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgICAgICAvLyAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+ICh7XHJcbiAgLy8gICAgICAgICAgIC8vICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBmb3IgcHJldmlld1xyXG4gIC8vICAgICAgICAgICAvLyAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybD8ub3JpZ2luYWxVcmwgICAgICAgICAgLy8gcHJlc2VydmUgb3JpZ2luYWxcclxuICAvLyAgICAgICAgICAgLy8gICAgICAgfSkpXHJcbiAgLy8gICAgICAgICAgIC8vICAgICApO1xyXG4gIC8vICAgICAgICAgICAvLyAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAvLyAgICAgICAgICAgLy8gICB9XHJcbiAgLy8gICAgICAgICAgIC8vIH0pO1xyXG5cclxuICAvLyAgICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBhbnk7IHRpdGxlOiBzdHJpbmc7IG5vdGVzOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG5cclxuICAvLyB1cmxzLmZvckVhY2goKG9yaWdpbmFsVXJsOiBhbnkpID0+IHtcclxuICAvLyAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4gIC8vICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KG9yaWdpbmFsVXJsPy5vcmlnaW5hbFVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gIC8vICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgIHJlc3VsdDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgLy8gZm9yIHByZXZpZXdcclxuICAvLyAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybD8ub3JpZ2luYWxVcmwsIC8vIHByZXNlcnZlIG9yaWdpbmFsXHJcbiAgLy8gICAgICAgICB0aXRsZTogb3JpZ2luYWxVcmw/LnRpdGxlIHx8ICcnLCAvLyBkZWZhdWx0IGVtcHR5IGlmIG5vdCBwcmVzZW50XHJcbiAgLy8gICAgICAgICBub3Rlczogb3JpZ2luYWxVcmw/Lm5vdGVzIHx8ICcnXHJcbiAgLy8gICAgICAgfSkpXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfSk7XHJcblxyXG5cclxuICAvLyAgICAgICAgICAgaWYgKGltYWdlRmV0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgICAgbmV4dDogKGltYWdlRGF0YSkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBpbWFnZURhdGEubWFwKGl0ZW0gPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAvLyAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybDogaXRlbS5vcmlnaW5hbFVybCxcclxuICAvLyAgICAgICAgICAgICAgICAgICByZXN1bHQ6IGl0ZW0ucmVzdWx0LFxyXG4gIC8vICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxyXG4gIC8vICAgICAgICAgICAgICAgICAgIG5vdGVzOiAnJ1xyXG4gIC8vICAgICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gIC8vICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAvLyAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgICAgICAgICAgfSxcclxuICAvLyAgICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9KTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gIC8vICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogeyBvcmlnaW5hbFVybDogc3RyaW5nIH1bXSB9ID0gdmFyaWFibGVzLnVwbG9hZGVkRmlsZXM7XHJcblxyXG4gIC8vICAgICAgIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCB1cmxzXSBvZiBPYmplY3QuZW50cmllcyh1cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gIC8vICAgICAgICAgY29uc3QgaW1hZ2VGZXRjaGVzOiBPYnNlcnZhYmxlPHsgcmVzdWx0OiBzdHJpbmc7IG9yaWdpbmFsVXJsOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG5cclxuICAvLyAgICAgICAgIHVybHMuZm9yRWFjaCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gZmlsZU9iaj8ub3JpZ2luYWxVcmw7XHJcbiAgLy8gICAgICAgICAgIGlmIChvcmlnaW5hbFVybCkge1xyXG4gIC8vICAgICAgICAgICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQob3JpZ2luYWxVcmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkucGlwZShcclxuICAvLyAgICAgICAgICAgICAgIG1hcCgoYmxvYjogQmxvYikgPT4gKHtcclxuICAvLyAgICAgICAgICAgICAgICAgcmVzdWx0OiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCAvLyBmb3IgcHJldmlld1xyXG4gIC8vICAgICAgICAgICAgICAgICBvcmlnaW5hbFVybFxyXG4gIC8vICAgICAgICAgICAgICAgfSkpXHJcbiAgLy8gICAgICAgICAgICAgKTtcclxuICAvLyAgICAgICAgICAgICBpbWFnZUZldGNoZXMucHVzaChpbWFnZSQpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgLy8gICAgICAgICBpZiAoaW1hZ2VGZXRjaGVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgICAgZm9ya0pvaW4oaW1hZ2VGZXRjaGVzKS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICAgICAgICAgIG5leHQ6IChpbWFnZURhdGEpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGltYWdlRGF0YS5tYXAoaXRlbSA9PiAoe1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgLy8gICAgICAgICAgICAgICAgIG9yaWdpbmFsVXJsOiBpdGVtLm9yaWdpbmFsVXJsLFxyXG4gIC8vICAgICAgICAgICAgICAgICByZXN1bHQ6IGl0ZW0ucmVzdWx0XHJcbiAgLy8gICAgICAgICAgICAgICB9KSk7XHJcblxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIC8vICAgICAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBpbWFnZXMgZm9yICR7dXBsb2FkZXJLZXl9OmAsIGVycik7XHJcbiAgLy8gICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIC8vIHB1YmxpYyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcclxuICAvLyAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgLy8gICBpZiAoaW5wdXQuZmlsZXMpIHtcclxuICAvLyAgICAgZm9yKGxldCBpID0gMDsgaSA8IGlucHV0Py5maWxlcz8ubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbaV07XHJcbiAgLy8gICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAvLyAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaCh7XHJcbiAgLy8gICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgLy8gICAgICAgICAgIHJlc3VsdDogZS50YXJnZXQ/LnJlc3VsdCxcclxuICAvLyAgICAgICAgICAgbmFtZTogZmlsZT8ubmFtZSxcclxuICAvLyAgICAgICAgICAgaWQ6IHV1aWR2NCgpXHJcbiAgLy8gICAgICAgICB9KVxyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnVwbG9hZGVkRmlsZXMpO1xyXG4gIC8vICAgICAgICAgY29uc29sZS5sb2codGhpcy51cGxvYWRGaWxlQ29udHJvbCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcclxuICAvLyAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgLy8gICBpZiAoaW5wdXQuZmlsZXMpIHtcclxuICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1tpXTtcclxuICAvLyAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAvLyAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgLy8gICAgICAgICBjb25zdCBuZXdGaWxlID0ge1xyXG4gIC8vICAgICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgLy8gICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgLy8gICAgICAgICAgIG9yaWdpbmFsVXJsOiBudWxsLFxyXG4gIC8vICAgICAgICAgICByZXN1bHQ6IGUudGFyZ2V0Py5yZXN1bHQsXHJcbiAgLy8gICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAvLyAgICAgICAgICAgdGl0bGU6ICcnLFxyXG4gIC8vICAgICAgICAgICBub3RlczogJycsXHJcbiAgLy8gICAgICAgICAgIGNhdGVnb3J5OiAnJyxcclxuICAvLyAgICAgICAgICAgdHlwZTogdGhpcy5kZXRlY3RGaWxlVHlwZShmaWxlKSxcclxuICAvLyAgICAgICAgIH07XHJcblxyXG4gIC8vICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmV3RmlsZSk7XHJcbiAgLy8gICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAvLyAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgICAgICB9O1xyXG5cclxuICAvLyAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuZnhCdWlsZGVyV3JhcHBlclNlcnZpY2UudmFyaWFibGVzJFxyXG4gIC8vICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKCF2YXJpYWJsZXMpIHJldHVybjtcclxuXHJcbiAgLy8gICAgICAgY29uc3QgdXBsb2FkZWRGaWxlc01hcDogeyBba2V5OiBzdHJpbmddOiBhbnlbXSB9ID0ge307XHJcblxyXG5cclxuICAvLyAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpKSB7XHJcbiAgLy8gICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCd1cGxvYWRlcicpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgLy8gICAgICAgICAgIHVwbG9hZGVkRmlsZXNNYXBba2V5XSA9IHZhbHVlO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgZm9yIChjb25zdCBbdXBsb2FkZXJLZXksIHVybHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZGVkRmlsZXNNYXApKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSB1cmxzXHJcbiAgLy8gICAgICAgICAgIC5maWx0ZXIoKGZpbGVPYmo6IGFueSkgPT4gISFmaWxlT2JqKSBcclxuICAvLyAgICAgICAgICAgLm1hcCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgLy8gY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlRnJvbVVybChmaWxlT2JqPy5vcmlnaW5hbFVybCB8fCBmaWxlT2JqPy5uYW1lKTtcclxuXHJcbiAgLy8gICAgICAgICAgICAgcmV0dXJuIHtcclxuICAvLyAgICAgICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAvLyAgICAgICAgICAgICAgIGZpbGU6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gIC8vICAgICAgICAgICAgICAgb3JpZ2luYWxVcmw6IGZpbGVPYmoub3JpZ2luYWxVcmwsICAgIFxyXG4gIC8vICAgICAgICAgICAgICAgcmVzdWx0OiBmaWxlT2JqPy50eXBlID09PSAnaW1hZ2UnID8gZmlsZU9iai5vcmlnaW5hbFVybC5wcmV2aWV3VXJsIDogbnVsbCxcclxuICAvLyAgICAgICAgICAgICAgIG5hbWU6IGZpbGVPYmo/Lm5hbWUgfHwgJycsXHJcbiAgLy8gICAgICAgICAgICAgICB0aXRsZTogZmlsZU9iaj8udGl0bGUgfHwgJycsXHJcbiAgLy8gICAgICAgICAgICAgICBub3RlczogZmlsZU9iaj8ubm90ZXMgfHwgJycsXHJcbiAgLy8gICAgICAgICAgICAgICBjYXRlZ29yeTogZmlsZU9iaj8uY2F0ZWdvcnkgfHwgJycsXHJcbiAgLy8gICAgICAgICAgICAgICB0eXBlOiBmaWxlT2JqPy50eXBlLCAgICAgICAgICAgICAgICBcclxuICAvLyAgICAgICAgICAgICB9O1xyXG4gIC8vICAgICAgICAgICB9KTtcclxuXHJcbiAgLy8gICAgICAgICBpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAvLyAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghdmFyaWFibGVzKSByZXR1cm47XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IHVwbG9hZGVkRmlsZXNNYXA6IHsgW2tleTogc3RyaW5nXTogYW55W10gfSA9IHt9O1xyXG5cclxuXHJcbiAgICAgICAgLy8gZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gICAgICAgIC8vICAgaWYgKGtleS5pbmNsdWRlcygndXBsb2FkZXInKSAmJiAodmFsdWUgYXMgYW55KT8udXBsb2FkZWRGaWxlcykge1xyXG4gICAgICAgIC8vICAgICB1cGxvYWRlZEZpbGVzTWFwW2tleV0gPSAodmFsdWUgYXMgYW55KS51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gIGlmIChcclxuICAgIHZhbHVlICYmXHJcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXHJcbiAgICAndXBsb2FkZWRGaWxlcycgaW4gdmFsdWVcclxuICApIHtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlc01hcFtrZXldID0gKHZhbHVlIGFzIGFueSkudXBsb2FkZWRGaWxlcztcclxuICB9XHJcbn1cclxuXHJcblxyXG4gICAgICAgIC8vIGZvciAoY29uc3QgW3VwbG9hZGVyS2V5LCBmaWxlc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy51cGxvYWRlZEZpbGVzTWFwKSkge1xyXG4gICAgICAgIC8vICAgY29uc3QgZm9ybWF0dGVkID0gZmlsZXNcclxuICAgICAgICAvLyAgICAgLmZpbHRlcigoZmlsZU9iajogYW55KSA9PiAhIWZpbGVPYmopXHJcbiAgICAgICAgLy8gICAgIC5tYXAoKGZpbGVPYmo6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsT2JqID0gZmlsZU9iai5vcmlnaW5hbFVybDtcclxuICAgICAgICAvLyAgICAgICBjb25zdCBmaWxlTmFtZSA9IG9yaWdpbmFsVXJsT2JqPy5maWxlTmFtZSB8fCAnJztcclxuICAgICAgICAvLyAgICAgICBjb25zdCBmaWxlVXJsID0gb3JpZ2luYWxVcmxPYmo/LmZpbGVVcmwgfHwgJyc7XHJcbiAgICAgICAgLy8gICAgICAgY29uc3QgcHJldmlld1VybCA9IG9yaWdpbmFsVXJsT2JqPy5wcmV2aWV3VXJsO1xyXG4gICAgICAgIC8vICAgICAgIGNvbnN0IHR5cGUgPSBmaWxlT2JqPy50eXBlO1xyXG5cclxuICAgICAgICAvLyAgICAgICAvLyBkZXRlY3QgdHlwZSBiYXNlZCBvbiBmaWxlIGV4dGVuc2lvblxyXG4gICAgICAgIC8vICAgICAgIC8vIGNvbnN0IGZpbGVUeXBlID0gdGhpcy5kZXRlY3RGaWxlVHlwZUZyb21VcmwoZmlsZU5hbWUgfHwgZmlsZVVybCk7XHJcblxyXG4gICAgICAgIC8vICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLy8gICAgICAgICBpZDogdXVpZHY0KCksXHJcbiAgICAgICAgLy8gICAgICAgICBmaWxlOiBudWxsLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdGhpbmcgbG9jYWxcclxuICAgICAgICAvLyAgICAgICAgIG9yaWdpbmFsVXJsOiBvcmlnaW5hbFVybE9iaiwgICAgICAgLy8ga2VlcCB3aG9sZSBvYmplY3RcclxuICAgICAgICAvLyAgICAgICAgIHJlc3VsdDogdHlwZSA9PT0gJ2ltYWdlJ1xyXG4gICAgICAgIC8vICAgICAgICAgICA/IChwcmV2aWV3VXJsKSAgICAgICAgLy8gcHJlZmVyIHByZXZpZXdVcmwsIGZhbGxiYWNrIHRvIGZpbGVVcmxcclxuICAgICAgICAvLyAgICAgICAgICAgOiBwcmV2aWV3VXJsLFxyXG4gICAgICAgIC8vICAgICAgICAgbmFtZTogZmlsZU5hbWUsXHJcbiAgICAgICAgLy8gICAgICAgICB0aXRsZTogZmlsZU9iaj8udGl0bGUgfHwgJycsXHJcbiAgICAgICAgLy8gICAgICAgICBub3RlczogZmlsZU9iaj8ubm90ZXMgfHwgJycsXHJcbiAgICAgICAgLy8gICAgICAgICBjYXRlZ29yeUlkOiBmaWxlT2JqPy5jYXRlZ29yeUlkIHx8ICcnLFxyXG4gICAgICAgIC8vICAgICAgICAgdHlwZTogdHlwZSwgICAgICAgICAgICAgICAgICAgIC8vIGNvbXB1dGVkIHR5cGVcclxuICAgICAgICAvLyAgICAgICB9O1xyXG4gICAgICAgIC8vICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gICBpZiAoZm9ybWF0dGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4uZm9ybWF0dGVkXTtcclxuICAgICAgICAvLyAgICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICAgICAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbm5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICBjb25zdCBrZXkgPSB0aGlzLmZ4Q29tcG9uZW50Py5meERhdGE/Lm5hbWU7XHJcbiAgY29uc29sZS5sb2coJ1VwbG9hZGVyIEtleTonLCBrZXkpO1xyXG4gIGNvbnNvbGUubG9nKCdVcGxvYWRlZCBGaWxlcyBNYXA6JywgdGhpcy51cGxvYWRlZEZpbGVzTWFwKTtcclxuXHJcbiAgY29uc3QgZmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXNNYXA/LltrZXldO1xyXG5cclxuICAvLyBTdHJvbmcgY2hlY2sg4oCUIGVuc3VyZXMgcGF0Y2hpbmcgaGFwcGVucyBvbmx5IHdoZW4gZmlsZXMgYWN0dWFsbHkgZXhpc3RcclxuICBpZiAoa2V5ICYmIEFycmF5LmlzQXJyYXkoZmlsZXMpICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBmaWxlc1xyXG4gICAgICAuZmlsdGVyKChmaWxlT2JqOiBhbnkpID0+ICEhZmlsZU9iailcclxuICAgICAgLm1hcCgoZmlsZU9iajogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxVcmxPYmogPSBmaWxlT2JqLm9yaWdpbmFsVXJsO1xyXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gb3JpZ2luYWxVcmxPYmo/LmZpbGVOYW1lIHx8ICcnO1xyXG4gICAgICAgIGNvbnN0IHByZXZpZXdVcmwgPSBvcmlnaW5hbFVybE9iaj8ucHJldmlld1VybDtcclxuICAgICAgICBjb25zdCB0eXBlID0gZmlsZU9iaj8udHlwZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGlkOiB1dWlkdjQoKSxcclxuICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICBvcmlnaW5hbFVybDogb3JpZ2luYWxVcmxPYmosXHJcbiAgICAgICAgICByZXN1bHQ6IHByZXZpZXdVcmwsXHJcbiAgICAgICAgICBuYW1lOiBmaWxlTmFtZSxcclxuICAgICAgICAgIHRpdGxlOiBmaWxlT2JqPy50aXRsZSB8fCAnJyxcclxuICAgICAgICAgIG5vdGVzOiBmaWxlT2JqPy5ub3RlcyB8fCAnJyxcclxuICAgICAgICAgIGNhdGVnb3J5SWQ6IGZpbGVPYmo/LmNhdGVnb3J5SWQgfHwgJycsXHJcbiAgICAgICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coJ0Zvcm1hdHRlZCBGaWxlcyBmb3IgUGF0Y2hpbmc6JywgZm9ybWF0dGVkKTtcclxuICAgIGlmIChmb3JtYXR0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi5mb3JtYXR0ZWRdO1xyXG4gICAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKCFpbnB1dC5maWxlcykgcmV0dXJuO1xyXG4gICAgY29uc3QgbWF4RmlsZVNpemUgPSB0aGlzLnNldHRpbmcoJ21heEZpbGVTaXplJyk7XHJcblxyXG4gICAgQXJyYXkuZnJvbShpbnB1dC5maWxlcykuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmRldGVjdEZpbGVUeXBlKGZpbGUpO1xyXG5cclxuICAgICAgY29uc3QgZmlsZVNpemVJbk1CID0gZmlsZS5zaXplIC8gKDEwMjQgKiAxMDI0KTtcclxuXHJcbiAgICAgIGlmIChmaWxlU2l6ZUluTUIgPiBtYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgc3VtbWFyeTogJ0ZpbGUgVG9vIExhcmdlJyxcclxuICAgICAgICAgICAgZGV0YWlsOiBgVGhlIGZpbGUgXCIke2ZpbGUubmFtZX1cIiBleGNlZWRzIHRoZSBtYXhpbXVtIHNpemUgbGltaXQgb2YgJHttYXhGaWxlU2l6ZX0gTUIuYCxcclxuICAgICAgICAgICAgbGlmZTogNDAwMCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdGaWxlOiBhbnkgPSB7XHJcbiAgICAgICAgaWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgb3JpZ2luYWxVcmw6IG51bGwsXHJcbiAgICAgICAgcmVzdWx0OiBudWxsLFxyXG4gICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgbm90ZXM6ICcnLFxyXG4gICAgICAgIGNhdGVnb3J5SWQ6ICcnLFxyXG4gICAgICAgIHR5cGU6IGZpbGVUeXBlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKGZpbGVUeXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gZSA9PiB7XHJcbiAgICAgICAgICBuZXdGaWxlLnJlc3VsdCA9IGUudGFyZ2V0Py5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuZXdGaWxlKTtcclxuICAgICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZE1ldGE6IHRydWUgfSk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7IC8vIG9ubHkgaW1hZ2VzIG5lZWQgcHJldmlld1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIG5vbi1pbWFnZSDihpIgcHVzaCBkaXJlY3RseVxyXG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0dGVkRGF0YS51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkTWV0YTogdHJ1ZSB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnVwbG9hZEZpbGVDb250cm9sKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gb25NZXRhQ2hhbmdlKCkge1xyXG4gIC8vICAgdGhpcy5mb3JtYXR0ZWREYXRhLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgLy8gICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0dGVkRGF0YSk7XHJcbiAgLy8gfVxyXG5cclxuICBvbk1ldGFDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGEudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcztcclxuICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuXHJcbiAgICAvLyDinYwgSW52YWxpZCBpZiBhbnkgZmlsZSBpcyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkc1xyXG4gICAgY29uc3QgYWxsVmFsaWQgPSB0aGlzLnVwbG9hZGVkRmlsZXMuZXZlcnkoXHJcbiAgICAgIGYgPT4gZi50aXRsZT8udHJpbSgpICYmIGYubm90ZXM/LnRyaW0oKSAmJiBmLmNhdGVnb3J5SWQ/LnRvU3RyaW5nKCkudHJpbSgpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghYWxsVmFsaWQpIHtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZE1ldGE6IHRydWUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gcHVibGljIGRlbGV0ZUZpbGUoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGU/LmlkICE9PSBpZCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkZWxldGVGaWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IFtkZWxldGVkRmlsZV0gPSB0aGlzLnVwbG9hZGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgLy8gICBpZiAoZGVsZXRlZEZpbGUpIHtcclxuICAvLyAgICAgdGhpcy5kZWxldGVkRmlsZXMucHVzaChkZWxldGVkRmlsZSk7XHJcbiAgLy8gICAgIHRoaXMuZm9ybWF0dGVkRGF0YSA9IHtcclxuICAvLyAgICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgLy8gICAgICAgdXBsb2FkZWRGaWxlczogWy4uLnRoaXMudXBsb2FkZWRGaWxlc10sXHJcbiAgLy8gICAgICAgZGVsZXRlZEZpbGVzOiBbLi4udGhpcy5kZWxldGVkRmlsZXNdXHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHRoaXMudXBsb2FkRmlsZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXR0ZWREYXRhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXM/LltpbmRleF07XHJcbiAgICBpZiAoIWRlbGV0ZWRGaWxlKSByZXR1cm47XHJcblxyXG4gICAgLy8gRW5zdXJlIGZvcm1hdHRlZERhdGEgZXhpc3RzIGFuZCBpbml0aWFsaXplIGlmIHVuZGVmaW5lZFxyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRhID0gdGhpcy5mb3JtYXR0ZWREYXRhIHx8IHsgdXBsb2FkZWRGaWxlczogW10sIGRlbGV0ZWRGaWxlczogW10gfTtcclxuXHJcbiAgICAvLyBBZGQgdGhlIGRlbGV0ZWQgZmlsZSB0byB0aGUgZGVsZXRlZEZpbGVzIGFycmF5XHJcbiAgICB0aGlzLmRlbGV0ZWRGaWxlcyA9IFsuLi50aGlzLmRlbGV0ZWRGaWxlcywgZGVsZXRlZEZpbGVdO1xyXG5cclxuICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHVwbG9hZGVkRmlsZXMgdXNpbmcgZmlsdGVyIGZvciBpbW11dGFiaWxpdHlcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMudXBsb2FkZWRGaWxlcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTtcclxuXHJcbiAgICAvLyBVcGRhdGUgZm9ybWF0dGVkRGF0YVxyXG4gICAgdGhpcy5mb3JtYXR0ZWREYXRhID0ge1xyXG4gICAgICAuLi50aGlzLmZvcm1hdHRlZERhdGEsXHJcbiAgICAgIHVwbG9hZGVkRmlsZXM6IHRoaXMudXBsb2FkZWRGaWxlcyxcclxuICAgICAgZGVsZXRlZEZpbGVzOiB0aGlzLmRlbGV0ZWRGaWxlc1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSB1cGxvYWRGaWxlQ29udHJvbFxyXG4gICAgdGhpcy51cGxvYWRGaWxlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdHRlZERhdGEpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3VwbG9hZC10ZXh0JywgJHRpdGxlOiAnVXBsb2FkIFRleHQnLCB2YWx1ZTogJ1VwbG9hZCBGaWxlJyB9KSxcclxuICAgICAgbmV3IEZ4U2VsZWN0U2V0dGluZyh7IGtleTogJ211bHRpcGxlLXVwbG9hZCcsICR0aXRsZTogJ011bHRpcGxlIFVwbG9hZHMnLCB2YWx1ZTogZmFsc2UgfSwgW3sgb3B0aW9uOiAnRW5hYmxlJywgdmFsdWU6IHRydWUgfSwgeyBvcHRpb246ICdEaXNhYmxlJywgdmFsdWU6IGZhbHNlIH1dKSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVObycsICR0aXRsZTogJ01heGltdW0gRmlsZSBVcGxvYWQgQWxsb3dlZCcsIHZhbHVlOiA4IH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnbWF4RmlsZVNpemUnLCAkdGl0bGU6ICdNYXhpbXVtIEZpbGUgU2l6ZSBBbGxvd2VkJywgdmFsdWU6IDEwIH0pLFxyXG4gICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ21heEZpbGVTaXplJywgJHRpdGxlOiAnTWF4aW11bSBGaWxlIFNpemUgQWxsb3dlZCcsIHZhbHVlOiAxMCB9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtGeFZhbGlkYXRvclNlcnZpY2UucmVxdWlyZWRdO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0RmlsZVR5cGUoZmlsZTogRmlsZSk6ICdpbWFnZScgfCAnY3N2JyB8ICd0ZXh0JyB8ICdwZGYnIHwgJ2V4Y2VsJyB8ICd3b3JkJyB8ICdzdGwnIHwgJ290aGVyJyB7XHJcbiAgICBjb25zdCBtaW1lID0gKGZpbGUudHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IG5hbWUgPSAoZmlsZS5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIC8vIEltYWdlc1xyXG4gICAgaWYgKG1pbWUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChuYW1lKSkge1xyXG4gICAgICByZXR1cm4gJ2ltYWdlJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDU1ZcclxuICAgIGlmIChtaW1lID09PSAndGV4dC9jc3YnIHx8IG5hbWUuZW5kc1dpdGgoJy5jc3YnKSkge1xyXG4gICAgICByZXR1cm4gJ2Nzdic7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGV4dCBmaWxlc1xyXG4gICAgaWYgKG1pbWUgPT09ICd0ZXh0L3BsYWluJyB8fCBuYW1lLmVuZHNXaXRoKCcudHh0JykpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIH1cclxuXHJcbiAgICAvLyBQREZcclxuICAgIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBuYW1lLmVuZHNXaXRoKCcucGRmJykpIHtcclxuICAgICAgcmV0dXJuICdwZGYnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEV4Y2VsXHJcbiAgICBpZiAoXHJcbiAgICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnIHx8XHJcbiAgICAgIG1pbWUgPT09ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfHxcclxuICAgICAgL1xcLih4bHN8eGxzeCkkL2kudGVzdChuYW1lKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiAnZXhjZWwnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdvcmRcclxuICAgIGlmIChcclxuICAgICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL21zd29yZCcgfHxcclxuICAgICAgbWltZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyB8fFxyXG4gICAgICAvXFwuKGRvY3xkb2N4KSQvaS50ZXN0KG5hbWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICd3b3JkJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBTVEwgKDNEIE1vZGVsKVxyXG4gICAgaWYgKFxyXG4gICAgICBtaW1lID09PSAnbW9kZWwvc3RsJyB8fFxyXG4gICAgICBtaW1lID09PSAnYXBwbGljYXRpb24vc2xhJyB8fCAvLyBTb21lIGJyb3dzZXJzIHVzZSB0aGlzIGZvciBTVExcclxuICAgICAgL1xcLnN0bCQvaS50ZXN0KG5hbWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICdzdGwnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnb3RoZXInO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIG9wZW5GaWxlRGlhbG9nKGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gIC8vICAgLy8gcmVzZXQgdGhlIHZhbHVlIHNvIGNoYW5nZSBhbHdheXMgdHJpZ2dlcnNcclxuICAvLyAgIGZpbGVJbnB1dC52YWx1ZSA9ICcnO1xyXG4gIC8vICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbiAgLy8gfVxyXG5cclxuICBvcGVuRmlsZURpYWxvZygpIHtcclxuICAgIC8vIGlmICh0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gdGhpcy5zZXR0aW5nKCdtYXhGaWxlTm8nKSkge1xyXG4gICAgLy8gICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgIC8vICAgICAvLyAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAvLyAgICAgLy8gICBzdW1tYXJ5OiAnU3VjY2VzcycsXHJcbiAgICAvLyAgICAgLy8gICBkZXRhaWw6IGBNYXhpbXVtXCIke3RoaXMuc2V0dGluZygnbWF4RmlsZU5vJyl9XCIgY2FuIGJlIHVwbG9hZGVkYCxcclxuICAgIC8vICAgICAvLyAgIGxpZmU6IDMwMDBcclxuICAgIC8vICAgICAvLyB9KTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb25CYXNpY1VwbG9hZEF1dG8oZXZlbnQ6IFVwbG9hZEV2ZW50KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlSW1hZ2VVcmwgPSAnJztcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VTZWxlY3QodXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VsZWN0ZUltYWdlVXJsID0gdXJsO1xyXG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uRmlsZUNsaWNrKGZpbGU6IGFueSwgbmFtZTogYW55KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCFmaWxlKSByZXR1cm47XHJcblxyXG4gICAgLy8gdGhpcy5maWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgIGxldCBsb2NhbFVybCA9ICcnO1xyXG5cclxuICAgIGlmIChmaWxlPy5maWxlKSB7XHJcbiAgICAgIGxvY2FsVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlLmZpbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9jYWxVcmwgPSBmaWxlPy5yZXN1bHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zdCBsb2NhbFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcblxyXG5cclxuICAgIHRoaXMubG9hZEZpbGUobG9jYWxVcmwsIG5hbWUpO1xyXG4gICAgdGhpcy5maWxlVmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5TVExGaWxlKGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFmaWxlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgZmlsZSBzdHJ1Y3R1cmU6JywgZmlsZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY3R1YWxGaWxlID0gZmlsZS5maWxlO1xyXG4gICAgaWYoYWN0dWFsRmlsZSkge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2FjdHVhbEZpbGVdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG4gICAgICB0aGlzLnN0bEZpbGVWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdGxGaWxlVXBsb2FkID0gYmxvYjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmV0Y2hBbmRMb2FkTW9kZWwoZmlsZS5vcmlnaW5hbFVybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoQW5kTG9hZE1vZGVsKG9yaWdpbmFsVXJsOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHJlZ2lvbjogb3JpZ2luYWxVcmwucmVnaW9uLFxyXG4gICAgICBidWNrZXROYW1lOiBvcmlnaW5hbFVybC5idWNrZXROYW1lLFxyXG4gICAgICBmaWxlVXJsOiBvcmlnaW5hbFVybC5maWxlVXJsLFxyXG4gICAgICBvYmplY3RLZXk6IG9yaWdpbmFsVXJsLm9iamVjdEtleSxcclxuICAgIH07XHJcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gYCR7dGhpcy5meEFwaVNlcnZpY2UuZ2V0U2VydmljZVVybCgnd29ya2Zsb3dfc2VydmljZScpfS93b3JrZmxvdy9maWxlcy9kb3dubG9hZGA7XHJcbiAgICB0aGlzLmh0dHAucG9zdChcclxuICAgICAgc2VydmljZVVybCxcclxuICAgICAgcGF5bG9hZCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfVxyXG4gICAgKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcclxuICAgICAgdGhpcy5zdGxGaWxlVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RsRmlsZVVwbG9hZCA9IGJsb2I7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEZpbGUodXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVOYW1lLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gZXh0ZW5zaW9uO1xyXG5cclxuICAgIGlmIChleHRlbnNpb24gPT09ICdwZGYnKSB7XHJcbiAgICAgIC8vIE5hdGl2ZSBQREYgcmVuZGVyaW5nXHJcbiAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoWydkb2MnLCAnZG9jeCcsICd4bHMnLCAneGxzeCcsICdwcHQnLCAncHB0eCcsICdjc3YnLCAnLnN0bCddLmluY2x1ZGVzKGV4dGVuc2lvbikpIHtcclxuICAgICAgLy8gTWljcm9zb2Z0IE9mZmljZSBWaWV3ZXIgZm9yIE9mZmljZSBmaWxlc1xyXG4gICAgICAvLyBjb25zdCBvZmZpY2VWaWV3ZXIgPSBgaHR0cHM6Ly92aWV3Lm9mZmljZWFwcHMubGl2ZS5jb20vb3AvZW1iZWQuYXNweD9zcmM9JHtlbmNvZGVVUklDb21wb25lbnQodXJsKX1gO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhvZmZpY2VWaWV3ZXIpO1xyXG4gICAgICBjb25zdCBnb29nbGVWaWV3ZXJVcmwgPSAnaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZ3ZpZXc/dXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQodXJsKSArICcmZW1iZWRkZWQ9dHJ1ZSc7XHJcbiAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChnb29nbGVWaWV3ZXJVcmwpO1xyXG5cclxuICAgICAgLy8gdGhpcy5maWxlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKG9mZmljZVZpZXdlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gVW5zdXBwb3J0ZWQgdHlwZVxyXG4gICAgICB0aGlzLmZpbGVVcmwgPSBudWxsO1xyXG4gICAgICB0aGlzLmZpbGVUeXBlID0gJ3Vuc3VwcG9ydGVkJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlRmlsZURpYWxvZygpIHtcclxuICAgIHRoaXMuZmlsZVZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVVybCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gbnVsbDtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTdGxEaWFsb2coKSB7XHJcbiAgICB0aGlzLnN0bEZpbGVWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnN0bEZpbGVVcGxvYWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGZ4LWNvbXBvbmVudCBbZnhEYXRhXT1cImZ4RGF0YVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tdXBsb2FkIGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXIgcC0wIHJvdW5kZWQtc21cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC04IGl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDwhLS0gPHAgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPlBhdGllbnQgSW1hZ2VzPC9wPiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xIHVwbG9hZCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgKm5nSWY9XCJ1cGxvYWRlZEZpbGVzLmxlbmd0aCA8IHNldHRpbmcoJ21heEZpbGVObycpXCIgKGNsaWNrKT1cIm9wZW5GaWxlRGlhbG9nKClcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgdmlld0JveD1cIjAgMCAyOSAyOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICBkPVwiTTE0LjAwMSAzLjAwMTk1QzExLjUzMjIgMy4wMDE5NSA5LjE2NzIyIDMuODY5NTYgNy4yMzY0MSA1LjM4NDE0TDcuMjM1OTggNC41OTY5NUM3LjIzNTk4IDQuNTI0NzMgNy4yMjE3NSA0LjQ1MzIxIDcuMTk0MTEgNC4zODY0OEM3LjE2NjQ3IDQuMzE5NzUgNy4xMjU5NiA0LjI1OTEyIDcuMDc0ODkgNC4yMDgwNEM3LjAyMzgxIDQuMTU2OTcgNi45NjMxOCA0LjExNjQ2IDYuODk2NDUgNC4wODg4MkM2LjgyOTcyIDQuMDYxMTggNi43NTgyIDQuMDQ2OTUgNi42ODU5OCA0LjA0Njk1QzYuNjEzNzUgNC4wNDY5NSA2LjU0MjIzIDQuMDYxMTggNi40NzU1IDQuMDg4ODJDNi40MDg3NyA0LjExNjQ2IDYuMzQ4MTQgNC4xNTY5NyA2LjI5NzA3IDQuMjA4MDRDNi4yNDU5OSA0LjI1OTEyIDYuMjA1NDggNC4zMTk3NSA2LjE3Nzg0IDQuMzg2NDhDNi4xNTAyIDQuNDUzMjEgNi4xMzU5OCA0LjUyNDczIDYuMTM1OTggNC41OTY5NUw2LjEzNjQyIDYuNjg2NTJDNi4xMzY0MyA2LjgzMjM5IDYuMTk0MzggNi45NzIyOCA2LjI5NzUyIDcuMDc1NDJDNi40MDA2NyA3LjE3ODU2IDYuNTQwNTUgNy4yMzY1MSA2LjY4NjQyIDcuMjM2NTJIOC43NzU5OEM4Ljg0ODIgNy4yMzY1MiA4LjkxOTcyIDcuMjIyMyA4Ljk4NjQ1IDcuMTk0NjZDOS4wNTMxOCA3LjE2NzAyIDkuMTEzODEgNy4xMjY1MSA5LjE2NDg5IDcuMDc1NDNDOS4yMTU5NiA3LjAyNDM2IDkuMjU2NDcgNi45NjM3MyA5LjI4NDExIDYuODk3QzkuMzExNzUgNi44MzAyNyA5LjMyNTk4IDYuNzU4NzUgOS4zMjU5OCA2LjY4NjUyQzkuMzI1OTggNi42MTQzIDkuMzExNzUgNi41NDI3OCA5LjI4NDExIDYuNDc2MDVDOS4yNTY0NyA2LjQwOTMyIDkuMjE1OTYgNi4zNDg2OSA5LjE2NDg5IDYuMjk3NjFDOS4xMTM4MSA2LjI0NjU0IDkuMDUzMTggNi4yMDYwMyA4Ljk4NjQ1IDYuMTc4MzlDOC45MTk3MiA2LjE1MDc1IDguODQ4MiA2LjEzNjUyIDguNzc1OTggNi4xMzY1Mkg4LjA1ODRDOS43NzAyIDQuODQzODcgMTEuODM5OSA0LjEwMTk1IDE0LjAwMSA0LjEwMTk1QzE5LjQ3NTEgNC4xMDE5NSAyMy45MDEgOC41Mjc4MiAyMy45MDEgMTQuMDAyQzIzLjkwMSAxOS40NzYxIDE5LjQ3NTEgMjMuOTAyIDE0LjAwMSAyMy45MDJDOC41MjY4NCAyMy45MDIgNC4xMDA5OCAxOS40NzYxIDQuMTAwOTggMTQuMDAyQzQuMTAwOTggMTIuNjM4MSA0LjM4MjYzIDExLjI4ODggNC45Mjg1NSAxMC4wMzg5QzQuOTg2OTEgOS45MDUzMiA0Ljk4OTgyIDkuNzUzOTkgNC45MzY2NSA5LjYxODIyQzQuODgzNDcgOS40ODI0NiA0Ljc3ODU1IDkuMzczMzYgNC42NDQ5NiA5LjMxNDkyQzQuNTc4NzcgOS4yODU5NiA0LjUwNzUzIDkuMjcwMzIgNC40MzUzIDkuMjY4OUM0LjM2MzA2IDkuMjY3NDcgNC4yOTEyNiA5LjI4MDMgNC4yMjM5OCA5LjMwNjYzQzQuMTU2NzEgOS4zMzI5NyA0LjA5NTI4IDkuMzcyMyA0LjA0MzIxIDkuNDIyMzhDMy45OTExNCA5LjQ3MjQ3IDMuOTQ5NDQgOS41MzIzMiAzLjkyMDUxIDkuNTk4NTJDMy4zMTM5MyAxMC45ODcyIDMuMDAwOTggMTIuNDg2NiAzLjAwMDk4IDE0LjAwMkMzLjAwMDk4IDIwLjA3MDYgNy45MzIzNiAyNS4wMDIgMTQuMDAxIDI1LjAwMkMyMC4wNjk2IDI1LjAwMiAyNS4wMDEgMjAuMDcwNiAyNS4wMDEgMTQuMDAyQzI1LjAwMSA3LjkzMzM0IDIwLjA2OTYgMy4wMDE5NSAxNC4wMDEgMy4wMDE5NVpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgIGQ9XCJNMTMuOTk4OCA2LjEzOTY1QzkuNjYxNiA2LjEzOTY1IDYuMTMzNzkgOS42Njc0NiA2LjEzMzc5IDE0LjAwNDZDNi4xMzM3OSAxOC4zNDE4IDkuNjYxNiAyMS44Njk2IDEzLjk5ODggMjEuODY5NkMxOC4zMzYgMjEuODY5NiAyMS44NjM4IDE4LjM0MTggMjEuODYzOCAxNC4wMDQ2QzIxLjg2MzggOS42Njc0NiAxOC4zMzYgNi4xMzk2NSAxMy45OTg4IDYuMTM5NjVaTTEzLjk5ODggOC4yMjk2NUMxNC4xNDQ3IDguMjI5NjUgMTQuMjg0NiA4LjI4NzU5IDE0LjM4NzcgOC4zOTA3NEMxNC40OTA4IDguNDkzODggMTQuNTQ4OCA4LjYzMzc4IDE0LjU0ODggOC43Nzk2NVYxMy43NzY5TDE3LjUyMjcgMTYuNzUwOEMxNy42MjU4IDE2Ljg1MzkgMTcuNjgzNyAxNi45OTM4IDE3LjY4MzcgMTcuMTM5NkMxNy42ODM3IDE3LjI4NTUgMTcuNjI1OCAxNy40MjU0IDE3LjUyMjcgMTcuNTI4NUMxNy40MTk1IDE3LjYzMTYgMTcuMjc5NiAxNy42ODk2IDE3LjEzMzggMTcuNjg5NkMxNi45ODc5IDE3LjY4OTYgMTYuODQ4MSAxNy42MzE2IDE2Ljc0NDkgMTcuNTI4NUwxMy42MDk5IDE0LjM5MzVDMTMuNTA2OCAxNC4yOTA0IDEzLjQ0ODggMTQuMTUwNSAxMy40NDg4IDE0LjAwNDZWOC43Nzk2NUMxMy40NDg4IDguNjMzNzggMTMuNTA2NyA4LjQ5Mzg4IDEzLjYwOTkgOC4zOTA3NEMxMy43MTMgOC4yODc1OSAxMy44NTI5IDguMjI5NjUgMTMuOTk4OCA4LjIyOTY1WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI4LjU2XCIgaGVpZ2h0PVwiMjhcIiByeD1cIjEuNTE0NzlcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIk0xNS4wNjggMjIuNzM5MVYxNy42NzA4SDE4LjQ5NjhMMTQuMjEwOCAxMi42MDI1TDkuOTI0OCAxNy42NzA4SDEzLjM1MzZWMjIuNzM5MUg5LjA2NzU5VjIyLjY5NjlDOC45MjM1OCAyMi43MDUzIDguNzg2NDMgMjIuNzM5MSA4LjYzODk5IDIyLjczOTFDNi45MzM5MSAyMi43MzkxIDUuMjk4NjYgMjIuMDcxNyA0LjA5Mjk4IDIwLjg4MzVDMi44ODczIDE5LjY5NTQgMi4yMDk5NiAxOC4wODQgMi4yMDk5NiAxNi40MDM3QzIuMjA5OTYgMTMuMTUzMiA0LjcwNDQzIDEwLjUwNDIgNy45MDUyMyAxMC4xNDFDOC4xODU4NSA4LjY5NTMgOC45Njg5MiA3LjM5MTE4IDEwLjExOTcgNi40NTI5MkMxMS4yNzA2IDUuNTE0NjUgMTIuNzE3MiA1LjAwMDg5IDE0LjIxMDggNUMxNS43MDQ3IDUuMDAwODIgMTcuMTUxNSA1LjUxNDUyIDE4LjMwMjYgNi40NTI3N0MxOS40NTM3IDcuMzkxMDEgMjAuMjM3MSA4LjY5NTE2IDIwLjUxODEgMTAuMTQxQzIzLjcxODkgMTAuNTA0MiAyNi4yMSAxMy4xNTMyIDI2LjIxIDE2LjQwMzdDMjYuMjEgMTguMDg0IDI1LjUzMjYgMTkuNjk1NCAyNC4zMjY5IDIwLjg4MzVDMjMuMTIxMyAyMi4wNzE3IDIxLjQ4NiAyMi43MzkxIDE5Ljc4MDkgMjIuNzM5MUMxOS42MzY5IDIyLjczOTEgMTkuNDk4MSAyMi43MDUzIDE5LjM1MjMgMjIuNjk2OVYyMi43MzkxSDE1LjA2OFpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ1cGxvYWRfdGl0bGUgXCI+XHJcbiAgICAgICAgICB7eyBzZXR0aW5nKCd1cGxvYWQtdGV4dCcpIH19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIFttdWx0aXBsZV09XCJzZXR0aW5nKCdtdWx0aXBsZS11cGxvYWQnKVwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgIGFjY2VwdD1cIi5jc3YsLnBkZiwueGxzLC54bHN4LC5kb2MsLmRvY3gsLnR4dCxpbWFnZS8qLC5zdGxcIiBoaWRkZW4gLz5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1saXN0IGZsZXggaXRlbXMtY2VudGVyIGdhcC00IGZsZXgtd3JhcCB3LWZ1bGxcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVwbG9hZGVkRmlsZXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgdXBsb2FkZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIHAtMyBib3JkZXIgcm91bmRlZC1sZyBzaGFkb3ctc20gYmctd2hpdGUgdy1bNDUwcHhdIHVwbG9hZF9maWxlXCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBDbG9zZSBpY29uIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNsb3NlX2ljb24gY3Vyc29yLXBvaW50ZXIgYWJzb2x1dGUgdG9wLTIgcmlnaHQtMlwiIChjbGljayk9XCJkZWxldGVGaWxlKGkpXCI+XHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyMiAyMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHJ4PVwiMTFcIiBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNNy4wODkxMSAxNS44ODg5TDYuMTExMzMgMTQuOTExMUwxMC4wMjI0IDExTDYuMTExMzMgNy4wODg4Nkw3LjA4OTExIDYuMTExMDhMMTEuMDAwMiAxMC4wMjIyTDE0LjkxMTMgNi4xMTEwOEwxNS44ODkxIDcuMDg4ODZMMTEuOTc4IDExTDE1Ljg4OTEgMTQuOTExMUwxNC45MTEzIDE1Ljg4ODlMMTEuMDAwMiAxMS45Nzc4TDcuMDg5MTEgMTUuODg4OVpcIlxyXG4gICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsX3RpdGxlIGZsZXhcIj5cclxuICAgICAgICAgICAgPCEtLSBUaHVtYm5haWwgb24gbGVmdCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbCBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlLnR5cGUgPT09ICdpbWFnZSc7IGVsc2Ugbm9uSW1hZ2VUaHVtYlwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImZpbGUtdGh1bWJuYWlsXCIgW3NyY109XCJmaWxlPy5yZXN1bHRcIiBhbHQ9XCJwcmV2aWV3XCIgKGNsaWNrKT1cIm9uSW1hZ2VTZWxlY3QoZmlsZT8ucmVzdWx0KVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsZT8ucmVzdWx0XCIgLz5cclxuICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhZmlsZT8ucmVzdWx0XCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNzAxMyAxM0gzLjMxMjdDMi41ODUwMSAxMyAyIDEyLjQwNDggMiAxMS42NjQ1VjQuMzM1NDhDMiAzLjU5NTE2IDIuNTg1MDEgMyAzLjMxMjcgM0gxMi42ODcxQzEzLjQxNDcgMyAxMy45OTk4IDMuNTk1MTYgMTMuOTk5OCA0LjMzNTQ4VjExLjY2NDVDMTQuMDE0IDEyLjQwNDggMTMuNDE0NyAxMyAxMi43MDEzIDEzWk05LjI0ODM2IDcuOTA0ODRMNy4zOTM0NyAxMC4wNjc3QzcuMjc5MzIgMTAuMjEyOSA3LjA1MTAyIDEwLjIxMjkgNi45MzY4OCAxMC4wODIzTDUuOTM4MDkgOC45OTM1NUM1LjgwOTY3IDguODYyOSA1LjYwOTkxIDguODYyOSA1LjQ4MTUgOC45OTM1NUwzLjc2OTI5IDEwLjg2NjFDMy41ODM4IDExLjA2OTQgMy43MjY0OCAxMS40MDMyIDMuOTk3NTggMTEuNDAzMkg2LjI2NjI2SDguMTM1NDNIMTIuMDE2NEMxMi4yODc1IDExLjQwMzIgMTIuNDMwMiAxMS4wODM5IDEyLjI0NDcgMTAuODgwNkw5LjcxOTIyIDcuOTA0ODRDOS41OTA4MSA3Ljc1OTY4IDkuMzc2NzggNy43NTk2OCA5LjI0ODM2IDcuOTA0ODRaTTYuNzM3MTIgNS45ODg3MUM2LjI1MTk5IDUuOTg4NzEgNS44NTI0OCA2LjM5NTE2IDUuODUyNDggNi44ODg3MUM1Ljg1MjQ4IDcuMzgyMjYgNi4yNTE5OSA3Ljc4ODcxIDYuNzM3MTIgNy43ODg3MUM3LjIyMjI1IDcuNzg4NzEgNy42MjE3NiA3LjM4MjI2IDcuNjIxNzYgNi44ODg3MUM3LjYyMTc2IDYuMzk1MTYgNy4yMjIyNSA1Ljk4ODcxIDYuNzM3MTIgNS45ODg3MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOTk5OTk5XCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub25JbWFnZVRodW1iPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtdGh1bWJuYWlsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpbGUudHlwZVwiPlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidjc3YnXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGNEY0RjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMi43QzE1IDEyLjg2NTcgMTQuODY1NyAxMyAxNC43IDEzSDIuM0MyLjEzNDMxIDEzIDIgMTIuODY1NyAyIDEyLjdWOS4zQzIgOS4xMzQzMSAyLjEzNDMxIDkgMi4zIDlIMTQuN0MxNC44NjU3IDkgMTUgOS4xMzQzMSAxNSA5LjNWMTIuN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzIzQTc2MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi45NDA3NiAxMC4zNDMzQzYuODU5MzkgMTAuMzQzMyA2Ljc4NzE2IDEwLjM1ODggNi43MjQwOCAxMC4zODk5QzYuNjYxOTEgMTAuNDIgNi42MDkzNCAxMC40NjQgNi41NjYzNyAxMC41MjE2QzYuNTI0MzIgMTAuNTc5MyA2LjQ5MjMyIDEwLjY0ODkgNi40NzAzOCAxMC43MzA1QzYuNDQ4NDQgMTAuODEyMiA2LjQzNzQ3IDEwLjkwNCA2LjQzNzQ3IDExLjAwNkM2LjQzNzQ3IDExLjE0MzUgNi40NTQ4NCAxMS4yNjEgNi40ODk1OCAxMS4zNTg2QzYuNTI1MjMgMTEuNDU1MyA2LjU4MDA5IDExLjUyOTQgNi42NTQxNCAxMS41ODA4QzYuNzI4MiAxMS42MzE0IDYuODIzNzMgMTEuNjU2NyA2Ljk0MDc2IDExLjY1NjdDNy4wMjIxMiAxMS42NTY3IDcuMTAzNDkgMTEuNjQ3OCA3LjE4NDg2IDExLjYzMDFDNy4yNjcxNCAxMS42MTIzIDcuMzU2MjggMTEuNTg3IDcuNDUyMjggMTEuNTU0MlYxMS45MDAyQzcuMzYzNTkgMTEuOTM1NyA3LjI3NjI4IDExLjk2MSA3LjE5MDM1IDExLjk3NkM3LjEwNDQxIDExLjk5MiA3LjAwNzk1IDEyIDYuOTAwOTkgMTJDNi42OTQzNyAxMiA2LjUyNDMyIDExLjk1ODcgNi4zOTA4NCAxMS44NzYyQzYuMjU4MjcgMTEuNzkyOSA2LjE1OTk5IDExLjY3NjYgNi4wOTYgMTEuNTI3NkM2LjAzMiAxMS4zNzc3IDYgMTEuMjAyOSA2IDExLjAwMzNDNiAxMC44NTYxIDYuMDIwNTcgMTAuNzIxMiA2LjA2MTcxIDEwLjU5ODhDNi4xMDI4NSAxMC40NzY0IDYuMTYzMTkgMTAuMzcwNCA2LjI0MjczIDEwLjI4MDhDNi4zMjIyNyAxMC4xOTEyIDYuNDIwNTUgMTAuMTIyIDYuNTM3NTggMTAuMDczMkM2LjY1NDYgMTAuMDI0NCA2Ljc4ODk5IDEwIDYuOTQwNzYgMTBDNy4wNDA0MSAxMCA3LjE0MDA2IDEwLjAxMjQgNy4yMzk3MSAxMC4wMzczQzcuMzQwMjggMTAuMDYxMiA3LjQzNjI4IDEwLjA5NDUgNy41Mjc3IDEwLjEzNzFMNy4zOTA1NyAxMC40NzI0QzcuMzE1NiAxMC40Mzc4IDcuMjQwMTcgMTAuNDA3NiA3LjE2NDI5IDEwLjM4MTlDNy4wODg0MSAxMC4zNTYyIDcuMDEzOSAxMC4zNDMzIDYuOTQwNzYgMTAuMzQzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjA2MzYzIDExLjQzMzFDOS4wNjM2MyAxMS41NDg1IDkuMDM0ODMgMTEuNjQ4NyA4Ljk3NzI0IDExLjczMzlDOC45MTk2NCAxMS44MTkgOC44MzU1MyAxMS44ODQ3IDguNzI0OSAxMS45MzA4QzguNjE1MTkgMTEuOTc2OSA4LjQ4MTcyIDEyIDguMzI0NDcgMTJDOC4yNTQ5OCAxMiA4LjE4Njg3IDExLjk5NTYgOC4xMjAxMyAxMS45ODY3QzguMDU0MzEgMTEuOTc3OCA3Ljk5MDc3IDExLjk2NSA3LjkyOTUxIDExLjk0ODFDNy44NjkxNyAxMS45MzA0IDcuODExNTcgMTEuOTA4NiA3Ljc1NjcyIDExLjg4MjlWMTEuNDk5N0M3Ljg1MTggMTEuNTQwNSA3Ljk1MDU0IDExLjU3NzMgOC4wNTI5MyAxMS42MTAxQzguMTU1MzMgMTEuNjQyOSA4LjI1NjgxIDExLjY1OTMgOC4zNTczOCAxMS42NTkzQzguNDI2ODYgMTEuNjU5MyA4LjQ4MjYzIDExLjY1MDUgOC41MjQ2OCAxMS42MzI3QzguNTY3NjUgMTEuNjE1IDguNTk4NzQgMTEuNTkwNiA4LjYxNzk0IDExLjU1OTVDOC42MzcxNCAxMS41Mjg1IDguNjQ2NzQgMTEuNDkzIDguNjQ2NzQgMTEuNDUzMUM4LjY0Njc0IDExLjQwNDMgOC42Mjk4MiAxMS4zNjI2IDguNTk2IDExLjMyOEM4LjU2MjE3IDExLjI5MzQgOC41MTU1NCAxMS4yNjEgOC40NTYxMiAxMS4yMzA5QzguMzk3NiAxMS4yMDA3IDguMzMxMzIgMTEuMTY4MyA4LjI1NzI3IDExLjEzMzdDOC4yMTA2NCAxMS4xMTI0IDguMTU5OSAxMS4wODY3IDguMTA1MDUgMTEuMDU2NkM4LjA1MDE5IDExLjAyNTUgNy45OTgwOCAxMC45ODc4IDcuOTQ4NzEgMTAuOTQzNEM3Ljg5OTM0IDEwLjg5OTEgNy44NTg2NiAxMC44NDU0IDcuODI2NjYgMTAuNzgyNEM3Ljc5NTU4IDEwLjcxODYgNy43ODAwMyAxMC42NDIzIDcuNzgwMDMgMTAuNTUzNkM3Ljc4MDAzIDEwLjQzNzMgNy44MDc0NiAxMC4zMzggNy44NjIzMSAxMC4yNTU1QzcuOTE3MTcgMTAuMTczIDcuOTk1MzQgMTAuMTEgOC4wOTY4MiAxMC4wNjY1QzguMTk5MjEgMTAuMDIyMiA4LjMxOTg5IDEwIDguNDU4ODYgMTBDOC41NjMwOCAxMCA4LjY2MjI4IDEwLjAxMiA4Ljc1NjQ1IDEwLjAzNTlDOC44NTE1MyAxMC4wNTkgOC45NTA3MiAxMC4wOTI3IDkuMDU0MDMgMTAuMTM3MUw4LjkxNjkgMTAuNDU3OEM4LjgyNDU2IDEwLjQyMTQgOC43NDE4MiAxMC4zOTM0IDguNjY4NjggMTAuMzczOUM4LjU5NTU0IDEwLjM1MzUgOC41MjEwMyAxMC4zNDMzIDguNDQ1MTUgMTAuMzQzM0M4LjM5MjEyIDEwLjM0MzMgOC4zNDY4NiAxMC4zNTE3IDguMzA5MzggMTAuMzY4NkM4LjI3MTkgMTAuMzg0NiA4LjI0MzU1IDEwLjQwNzYgOC4yMjQzNiAxMC40Mzc4QzguMjA1MTYgMTAuNDY3MSA4LjE5NTU2IDEwLjUwMTIgOC4xOTU1NiAxMC41NDAzQzguMTk1NTYgMTAuNTg2NCA4LjIwOTI3IDEwLjYyNTQgOC4yMzY3IDEwLjY1NzRDOC4yNjUwNCAxMC42ODg0IDguMzA3MDkgMTAuNzE4NiA4LjM2Mjg2IDEwLjc0NzhDOC40MTk1NSAxMC43NzcxIDguNDg5OTQgMTAuODExMyA4LjU3NDA1IDEwLjg1MDNDOC42NzY0NSAxMC44OTczIDguNzYzNzYgMTAuOTQ2NiA4LjgzNTk4IDEwLjk5OEM4LjkwOTEyIDExLjA0ODYgOC45NjUzNSAxMS4xMDg0IDkuMDA0NjYgMTEuMTc3NkM5LjA0Mzk4IDExLjI0NiA5LjA2MzYzIDExLjMzMTEgOS4wNjM2MyAxMS40MzMxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDEwLjAyNzlMMTAuMzE4NCAxMS45NzM0SDkuODU0OTFMOS4xNzQ3MSAxMC4wMjc5SDkuNjAzOTVMOS45ODEwOCAxMS4xODU2QzkuOTg3NDggMTEuMjA1MSA5Ljk5Nzk5IDExLjI0MiAxMC4wMTI2IDExLjI5NjFDMTAuMDI3MiAxMS4zNDkzIDEwLjA0MTkgMTEuNDA2MSAxMC4wNTY1IDExLjQ2NjRDMTAuMDcyIDExLjUyNTggMTAuMDgyNiAxMS41NzUxIDEwLjA4OCAxMS42MTQxQzEwLjA5MzUgMTEuNTc1MSAxMC4xMDMxIDExLjUyNTggMTAuMTE2OCAxMS40NjY0QzEwLjEzMTUgMTEuNDA3IDEwLjE0NTYgMTEuMzUwNiAxMC4xNTk0IDExLjI5NzRDMTAuMTc0IDExLjI0MzMgMTAuMTg0NSAxMS4yMDYgMTAuMTkwOSAxMS4xODU2TDEwLjU3MDggMTAuMDI3OUgxMVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjVcIiB3aWR0aD1cIjNcIiBoZWlnaHQ9XCIxXCIgcng9XCIwLjJcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiOVwiIHk9XCI3XCIgd2lkdGg9XCIzXCIgaGVpZ2h0PVwiMVwiIHJ4PVwiMC4yXCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjlcIiB5PVwiNVwiIHdpZHRoPVwiM1wiIGhlaWdodD1cIjFcIiByeD1cIjAuMlwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCIgd2lkdGg9XCIxODBweFwiIGhlaWdodD1cIjE4MHB4XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiAoY2xpY2spPVwib25GaWxlQ2xpY2soZmlsZSxmaWxlPy5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS4xNzU3IDEuMTc1NzRDMTEuMDYzMiAxLjA2MzIxIDEwLjkxMDYgMSAxMC43NTE1IDFIMy42QzMuMjY4NjMgMSAzIDEuMjY4NjMgMyAxLjZWMTQuNEMzIDE0LjczMTQgMy4yNjg2MyAxNSAzLjYgMTVIMTMuNEMxMy43MzE0IDE1IDE0IDE0LjczMTQgMTQgMTQuNFY0LjI0ODUzQzE0IDQuMDg5NCAxMy45MzY4IDMuOTM2NzkgMTMuODI0MyAzLjgyNDI2TDExLjE3NTcgMS4xNzU3NFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0Y0RjRGNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1IDEyLjdDMTUgMTIuODY1NyAxNC44NjU3IDEzIDE0LjcgMTNIMi4zQzIuMTM0MzEgMTMgMiAxMi44NjU3IDIgMTIuN1Y5LjNDMiA5LjEzNDMxIDIuMTM0MzEgOSAyLjMgOUgxNC43QzE0Ljg2NTcgOSAxNSA5LjEzNDMxIDE1IDkuM1YxMi43WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUY1RUJCXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMUwxMi41IDIuNUwxNCA0SDExLjJDMTEuMDg5NSA0IDExIDMuOTEwNDYgMTEgMy44VjFaXCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjA0MzUzIDEySDYuNjExMDVWMTAuMzIwM0g2LjA1NzJWOS45NjAzOEg3LjU5NzM4VjEwLjMyMDNINy4wNDM1M1YxMlpNOS41NjAyNyAxMkg5LjA2NjQxTDguNTkyMDggMTEuMjI4NUw4LjExNzc1IDEySDcuNjU0NThMOC4zMzExOSAxMC45NDgxTDcuNjk3ODIgOS45NjAzOEg4LjE3NDk0TDguNjE0NCAxMC42OTQyTDkuMDQ1NDggOS45NjAzOEg5LjUxMTQ0TDguODcxMDkgMTAuOTcxOEw5LjU2MDI3IDEyWk0xMC42MDM4IDEySDEwLjE3MTNWMTAuMzIwM0g5LjYxNzQ3VjkuOTYwMzhIMTEuMTU3NlYxMC4zMjAzSDEwLjYwMzhWMTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjVcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI2XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiN1wiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ3BkZidcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIChjbGljayk9XCJvbkZpbGVDbGljayhmaWxlLGZpbGU/Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNERDIwMjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNjA4NCA5Ljk2MDM4QzYuODcxNjEgOS45NjAzOCA3LjA2MzY2IDEwLjAxNzEgNy4xODQ1NyAxMC4xMzA2QzcuMzA1NDggMTAuMjQzMSA3LjM2NTkzIDEwLjM5ODQgNy4zNjU5MyAxMC41OTY1QzcuMzY1OTMgMTAuNjg1OCA3LjM1MjQ1IDEwLjc3MTQgNy4zMjU0NyAxMC44NTMyQzcuMjk4NSAxMC45MzQyIDcuMjU0MzIgMTEuMDA2MiA3LjE5Mjk0IDExLjA2OTVDNy4xMzI0OSAxMS4xMzI3IDcuMDUxNTcgMTEuMTgyOSA2Ljk1MDIgMTEuMjIwMUM2Ljg0ODgyIDExLjI1NjQgNi43MjM3MyAxMS4yNzQ2IDYuNTc0OTIgMTEuMjc0Nkg2LjM4OTM3VjEySDUuOTU2ODlWOS45NjAzOEg2LjYwODRaTTYuNTg2MDggMTAuMzE0N0g2LjM4OTM3VjEwLjkyMDJINi41MzE2N0M2LjYxMjU4IDEwLjkyMDIgNi42ODI4IDEwLjkwOTUgNi43NDIzMyAxMC44ODgxQzYuODAxODUgMTAuODY2NyA2Ljg0Nzg5IDEwLjgzMzIgNi44ODA0NCAxMC43ODc3QzYuOTEyOTkgMTAuNzQyMSA2LjkyOTI3IDEwLjY4MzUgNi45MjkyNyAxMC42MTE5QzYuOTI5MjcgMTAuNTExNCA2LjkwMTM3IDEwLjQzNyA2Ljg0NTU2IDEwLjM4ODdDNi43ODk3NiAxMC4zMzk0IDYuNzAzMjYgMTAuMzE0NyA2LjU4NjA4IDEwLjMxNDdaTTkuNDQzMjIgMTAuOTYwN0M5LjQ0MzIyIDExLjE5MDQgOS4zOTkwNCAxMS4zODI0IDkuMzEwNjkgMTEuNTM2OEM5LjIyMzI2IDExLjY5MDMgOS4wOTYzMSAxMS44MDYxIDguOTI5ODMgMTEuODg0MkM4Ljc2MzM1IDExLjk2MTQgOC41NjI5MiAxMiA4LjMyODU0IDEySDcuNzUwOThWOS45NjAzOEg4LjM5MTMyQzguNjA1MjQgOS45NjAzOCA4Ljc5MDc4IDkuOTk4NTEgOC45NDc5NiAxMC4wNzQ4QzkuMTA1MTQgMTAuMTUwMSA5LjIyNjk4IDEwLjI2MjIgOS4zMTM0OCAxMC40MTFDOS4zOTk5NyAxMC41NTg5IDkuNDQzMjIgMTAuNzQyMSA5LjQ0MzIyIDEwLjk2MDdaTTguOTk0IDEwLjk3MThDOC45OTQgMTAuODIxMSA4Ljk3MTY4IDEwLjY5NzUgOC45MjcwNCAxMC42MDA3QzguODgzMzIgMTAuNTAzMSA4LjgxODIyIDEwLjQzMSA4LjczMTcyIDEwLjM4NDVDOC42NDYxNiAxMC4zMzggOC41NDAxMyAxMC4zMTQ3IDguNDEzNjQgMTAuMzE0N0g4LjE4MzQ1VjExLjY0MjlIOC4zNjlDOC41ODAxMiAxMS42NDI5IDguNzM2ODQgMTEuNTg2NiA4LjgzOTE1IDExLjQ3NDFDOC45NDIzOCAxMS4zNjE1IDguOTk0IDExLjE5NDEgOC45OTQgMTAuOTcxOFpNMTAuMjkxNCAxMkg5Ljg2NTkzVjkuOTYwMzhIMTEuMDM1VjEwLjMxNDdIMTAuMjkxNFYxMC44NDA3SDEwLjk4MzRWMTEuMTkzNkgxMC4yOTE0VjEyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI1XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNlwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjdcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidzdGwnXCIgKGNsaWNrKT1cIm9uT3BlblNUTEZpbGUoZmlsZSlcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuMTc1NyAxLjE3NTc0QzExLjA2MzIgMS4wNjMyMSAxMC45MTA2IDEgMTAuNzUxNSAxSDMuNkMzLjI2ODYzIDEgMyAxLjI2ODYzIDMgMS42VjE0LjRDMyAxNC43MzE0IDMuMjY4NjMgMTUgMy42IDE1SDEzLjRDMTMuNzMxNCAxNSAxNCAxNC43MzE0IDE0IDE0LjRWNC4yNDg1M0MxNCA0LjA4OTQgMTMuOTM2OCAzLjkzNjc5IDEzLjgyNDMgMy44MjQyNkwxMS4xNzU3IDEuMTc1NzRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGNEY0RjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxMi43QzE1IDEyLjg2NTcgMTQuODY1NyAxMyAxNC43IDEzSDIuM0MyLjEzNDMxIDEzIDIgMTIuODY1NyAyIDEyLjdWOS4zQzIgOS4xMzQzMSAyLjEzNDMxIDkgMi4zIDlIMTQuN0MxNC44NjU3IDkgMTUgOS4xMzQzMSAxNSA5LjNWMTIuN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDFMMTIuNSAyLjVMMTQgNEgxMS4yQzExLjA4OTUgNCAxMSAzLjkxMDQ2IDExIDMuOFYxWlwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xNzg4MSAxMC41NjFDNy4xNjk1NCAxMC40NzgxIDcuMTMwNDggMTAuNDEzNSA3LjA2MTYyIDEwLjM2NzNDNi45OTM0MyAxMC4zMjEyIDYuOTA0NzEgMTAuMjk4MSA2Ljc5NTQ3IDEwLjI5ODFDNi43MTg2NyAxMC4yOTgxIDYuNjUyOCAxMC4zMDkxIDYuNTk3ODQgMTAuMzMxM0M2LjU0Mjg5IDEwLjM1MzQgNi41MDA4NSAxMC4zODM1IDYuNDcxNzIgMTAuNDIxNUM2LjQ0MjU5IDEwLjQ1OTQgNi40Mjc2OSAxMC41MDI4IDYuNDI3MDMgMTAuNTUxNUM2LjQyNzAzIDEwLjU5MiA2LjQzNjYzIDEwLjYyNzEgNi40NTU4MyAxMC42NTY5QzYuNDc1NjkgMTAuNjg2NiA2LjUwMjUxIDEwLjcxMTkgNi41MzYyNyAxMC43MzI4QzYuNTcwMDQgMTAuNzUzIDYuNjA3NDQgMTAuNzcwMSA2LjY0ODQ5IDEwLjc4NDFDNi42ODk1NCAxMC43OTggNi43MzA5MiAxMC44MDk3IDYuNzcyNjMgMTAuODE5Mkw2Ljk2MzMgMTAuODY0N0M3LjA0MDEgMTAuODgxOCA3LjExMzkyIDEwLjkwNDkgNy4xODQ3NyAxMC45MzRDNy4yNTYyNyAxMC45NjMxIDcuMzIwMTYgMTAuOTk5OCA3LjM3NjQzIDExLjA0NDFDNy40MzMzNyAxMS4wODg0IDcuNDc4MzkgMTEuMTQxOSA3LjUxMTUgMTEuMjA0NkM3LjU0NDYgMTEuMjY3MiA3LjU2MTE1IDExLjM0MDYgNy41NjExNSAxMS40MjQ4QzcuNTYxMTUgMTEuNTM4NyA3LjUzMDcgMTEuNjM5IDcuNDY5NzkgMTEuNzI1N0M3LjQwODg4IDExLjgxMTcgNy4zMjA4MiAxMS44NzkxIDcuMjA1NjIgMTEuOTI3OUM3LjA5MTA4IDExLjk3NiA2Ljk1MjM4IDEyIDYuNzg5NTEgMTJDNi42MzEyOCAxMiA2LjQ5MzkgMTEuOTc2NiA2LjM3NzM4IDExLjkyOThDNi4yNjE1MiAxMS44ODI5IDYuMTcwODEgMTEuODE0NiA2LjEwNTI3IDExLjcyNDdDNi4wNDAzOSAxMS42MzQ5IDYuMDA1MyAxMS41MjU0IDYgMTEuMzk2M0g2LjM2MjQ4QzYuMzY3NzggMTEuNDY0IDYuMzg5NjMgMTEuNTIwMyA2LjQyODAzIDExLjU2NTNDNi40NjY0MyAxMS42MTAyIDYuNTE2NDEgMTEuNjQzNyA2LjU3Nzk4IDExLjY2NTlDNi42NDAyMiAxMS42ODggNi43MDk3MyAxMS42OTkxIDYuNzg2NTMgMTEuNjk5MUM2Ljg2NjY0IDExLjY5OTEgNi45MzY4MiAxMS42ODc3IDYuOTk3MDcgMTEuNjY0OUM3LjA1Nzk4IDExLjY0MTUgNy4xMDU2NSAxMS42MDkyIDcuMTQwMDggMTEuNTY4MUM3LjE3NDUgMTEuNTI2MyA3LjE5MjA1IDExLjQ3NzYgNy4xOTI3MSAxMS40MjE5QzcuMTkyMDUgMTEuMzcxMyA3LjE3NjQ5IDExLjMyOTUgNy4xNDYwNCAxMS4yOTY2QzcuMTE1NTggMTEuMjYzMSA3LjA3Mjg4IDExLjIzNTIgNy4wMTc5MyAxMS4yMTMxQzYuOTYzNjQgMTEuMTkwMyA2LjkwMDA4IDExLjE3MDEgNi44MjcyNSAxMS4xNTIzTDYuNTk1ODYgMTEuMDk1NEM2LjQyODM2IDExLjA1NDMgNi4yOTU5NCAxMC45OTE5IDYuMTk4NjIgMTAuOTA4NEM2LjEwMTk2IDEwLjgyNDIgNi4wNTM2MyAxMC43MTI1IDYuMDUzNjMgMTAuNTczM0M2LjA1MzYzIDEwLjQ1ODggNi4wODYwNyAxMC4zNTg1IDYuMTUwOTUgMTAuMjcyNEM2LjIxNjUgMTAuMTg2NCA2LjMwNTU0IDEwLjExOTYgNi40MTgwOSAxMC4wNzIxQzYuNTMwNjUgMTAuMDI0IDYuNjU4MDkgMTAgNi44MDA0NCAxMEM2Ljk0NDc3IDEwIDcuMDcxMjIgMTAuMDI0IDcuMTc5OCAxMC4wNzIxQzcuMjg5MDQgMTAuMTE5NiA3LjM3NDc4IDEwLjE4NTcgNy40MzcwMSAxMC4yNzA1QzcuNDk5MjUgMTAuMzU0NyA3LjUzMTM2IDEwLjQ1MTUgNy41MzMzNCAxMC41NjFINy4xNzg4MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03LjgwMDI0IDEwLjMyMThWMTAuMDI2Nkg5LjQyMjk2VjEwLjMyMThIOC43OTQzM1YxMS45NzA2SDguNDI4ODdWMTAuMzIxOEg3LjgwMDI0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuNzM1NzkgMTEuOTcwNlYxMC4wMjY2SDEwLjEwNDJWMTEuNjc1NEgxMVYxMS45NzA2SDkuNzM1NzlaXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXNrIGlkPVwibWFzazBfODAxMV83NTA1XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCI2XCIgeT1cIjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI2XCIgeT1cIjNcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiNEOUQ5RDlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGcgbWFzaz1cInVybCgjbWFzazBfODAxMV83NTA1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4yMjIyMiA3LjM1NjI1VjUuNjQzNzVMNi41NTU1NiA0Ljc3NVY2LjQ4NzVMOC4yMjIyMiA3LjM1NjI1Wk04Ljc3Nzc4IDcuMzU2MjVMMTAuNDQ0NCA2LjQ4NzVWNC43NzVMOC43Nzc3OCA1LjY0Mzc1VjcuMzU2MjVaTTguNSA1LjIxMjVMMTAuMTQ1OCA0LjM1NjI1TDguNSAzLjVMNi44NTQxNyA0LjM1NjI1TDguNSA1LjIxMjVaTTYuMjc3NzggNi45MjVDNi4xODk4MSA2Ljg3OTE3IDYuMTIxNTMgNi44MTg3NSA2LjA3MjkyIDYuNzQzNzVDNi4wMjQzMSA2LjY2ODc1IDYgNi41ODU0MiA2IDYuNDkzNzVWNC41MDYyNUM2IDQuNDE0NTggNi4wMjQzMSA0LjMzMTI1IDYuMDcyOTIgNC4yNTYyNUM2LjEyMTUzIDQuMTgxMjUgNi4xODk4MSA0LjEyMDgzIDYuMjc3NzggNC4wNzVMOC4yMjIyMiAzLjA2ODc1QzguMzEwMTkgMy4wMjI5MiA4LjQwMjc4IDMgOC41IDNDOC41OTcyMiAzIDguNjg5ODEgMy4wMjI5MiA4Ljc3Nzc4IDMuMDY4NzVMMTAuNzIyMiA0LjA3NUMxMC44MTAyIDQuMTIwODMgMTAuODc4NSA0LjE4MTI1IDEwLjkyNzEgNC4yNTYyNUMxMC45NzU3IDQuMzMxMjUgMTEgNC40MTQ1OCAxMSA0LjUwNjI1VjYuNDkzNzVDMTEgNi41ODU0MiAxMC45NzU3IDYuNjY4NzUgMTAuOTI3MSA2Ljc0Mzc1QzEwLjg3ODUgNi44MTg3NSAxMC44MTAyIDYuODc5MTcgMTAuNzIyMiA2LjkyNUw4Ljc3Nzc4IDcuOTMxMjVDOC42ODk4MSA3Ljk3NzA4IDguNTk3MjIgOCA4LjUgOEM4LjQwMjc4IDggOC4zMTAxOSA3Ljk3NzA4IDguMjIyMjIgNy45MzEyNUw2LjI3Nzc4IDYuOTI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInd29yZCdcIiB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIChjbGljayk9XCJvbkZpbGVDbGljayhmaWxlLGZpbGU/Lm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjE3NTcgMS4xNzU3NEMxMS4wNjMyIDEuMDYzMjEgMTAuOTEwNiAxIDEwLjc1MTUgMUgzLjZDMy4yNjg2MyAxIDMgMS4yNjg2MyAzIDEuNlYxNC40QzMgMTQuNzMxNCAzLjI2ODYzIDE1IDMuNiAxNUgxMy40QzEzLjczMTQgMTUgMTQgMTQuNzMxNCAxNCAxNC40VjQuMjQ4NTNDMTQgNC4wODk0IDEzLjkzNjggMy45MzY3OSAxMy44MjQzIDMuODI0MjZMMTEuMTc1NyAxLjE3NTc0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjRGNEY0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUgMTIuN0MxNSAxMi44NjU3IDE0Ljg2NTcgMTMgMTQuNyAxM0gyLjNDMi4xMzQzMSAxMyAyIDEyLjg2NTcgMiAxMi43VjkuM0MyIDkuMTM0MzEgMi4xMzQzMSA5IDIuMyA5SDE0LjdDMTQuODY1NyA5IDE1IDkuMTM0MzEgMTUgOS4zVjEyLjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxRjVFQkJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxTDEyLjUgMi41TDE0IDRIMTEuMkMxMS4wODk1IDQgMTEgMy45MTA0NiAxMSAzLjhWMVpcIiBmaWxsPVwiI0Q5RDlEOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMDQzNTMgMTJINi42MTEwNVYxMC4zMjAzSDYuMDU3MlY5Ljk2MDM4SDcuNTk3MzhWMTAuMzIwM0g3LjA0MzUzVjEyWk05LjU2MDI3IDEySDkuMDY2NDFMOC41OTIwOCAxMS4yMjg1TDguMTE3NzUgMTJINy42NTQ1OEw4LjMzMTE5IDEwLjk0ODFMNy42OTc4MiA5Ljk2MDM4SDguMTc0OTRMOC42MTQ0IDEwLjY5NDJMOS4wNDU0OCA5Ljk2MDM4SDkuNTExNDRMOC44NzEwOSAxMC45NzE4TDkuNTYwMjcgMTJaTTEwLjYwMzggMTJIMTAuMTcxM1YxMC4zMjAzSDkuNjE3NDdWOS45NjAzOEgxMS4xNTc2VjEwLjMyMDNIMTAuNjAzOFYxMlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjVcIiB5PVwiNVwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjAuNVwiIHJ4PVwiMC4yNVwiIGZpbGw9XCIjQ0NDQ0NDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI1XCIgeT1cIjZcIiB3aWR0aD1cIjdcIiBoZWlnaHQ9XCIwLjVcIiByeD1cIjAuMjVcIiBmaWxsPVwiI0NDQ0NDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNVwiIHk9XCI3XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiMC41XCIgcng9XCIwLjI1XCIgZmlsbD1cIiNDQ0NDQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoRGVmYXVsdCB3aWR0aD1cIjE4MHB4XCIgaGVpZ2h0PVwiMTgwcHhcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbjxwYXRoIGQ9XCJNMTIuNzAxMyAxM0gzLjMxMjdDMi41ODUwMSAxMyAyIDEyLjQwNDggMiAxMS42NjQ1VjQuMzM1NDhDMiAzLjU5NTE2IDIuNTg1MDEgMyAzLjMxMjcgM0gxMi42ODcxQzEzLjQxNDcgMyAxMy45OTk4IDMuNTk1MTYgMTMuOTk5OCA0LjMzNTQ4VjExLjY2NDVDMTQuMDE0IDEyLjQwNDggMTMuNDE0NyAxMyAxMi43MDEzIDEzWk05LjI0ODM2IDcuOTA0ODRMNy4zOTM0NyAxMC4wNjc3QzcuMjc5MzIgMTAuMjEyOSA3LjA1MTAyIDEwLjIxMjkgNi45MzY4OCAxMC4wODIzTDUuOTM4MDkgOC45OTM1NUM1LjgwOTY3IDguODYyOSA1LjYwOTkxIDguODYyOSA1LjQ4MTUgOC45OTM1NUwzLjc2OTI5IDEwLjg2NjFDMy41ODM4IDExLjA2OTQgMy43MjY0OCAxMS40MDMyIDMuOTk3NTggMTEuNDAzMkg2LjI2NjI2SDguMTM1NDNIMTIuMDE2NEMxMi4yODc1IDExLjQwMzIgMTIuNDMwMiAxMS4wODM5IDEyLjI0NDcgMTAuODgwNkw5LjcxOTIyIDcuOTA0ODRDOS41OTA4MSA3Ljc1OTY4IDkuMzc2NzggNy43NTk2OCA5LjI0ODM2IDcuOTA0ODRaTTYuNzM3MTIgNS45ODg3MUM2LjI1MTk5IDUuOTg4NzEgNS44NTI0OCA2LjM5NTE2IDUuODUyNDggNi44ODg3MUM1Ljg1MjQ4IDcuMzgyMjYgNi4yNTE5OSA3Ljc4ODcxIDYuNzM3MTIgNy43ODg3MUM3LjIyMjI1IDcuNzg4NzEgNy42MjE3NiA3LjM4MjI2IDcuNjIxNzYgNi44ODg3MUM3LjYyMTc2IDYuMzk1MTYgNy4yMjIyNSA1Ljk4ODcxIDYuNzM3MTIgNS45ODg3MVpcIiBmaWxsPVwiIzk5OTk5OVwiLz5cclxuPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNZXRhZGF0YSBvbiByaWdodCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlX25vdGVzIG1sLTJcIj5cclxuICAgICAgICAgICAgICA8IS0tIFRpdGxlIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTAgLW10LTFcIj5UaXRsZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJmaWxlLnRpdGxlXCIgbmFtZT1cInRpdGxle3tpfX1cIiAobmdNb2RlbENoYW5nZSk9XCJvbk1ldGFDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGl0bGVcIiBjbGFzcz1cIiByb3VuZGVkIHB4LTMgcHktMiBtYi0zIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICN0aXRsZUN0cmw9XCJuZ01vZGVsXCIgLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXRsZUN0cmwuaW52YWxpZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIHRleHQteHMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICBUaXRsZSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gTm90ZXMgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIGlucHV0LXRpdGxlIG0tMCAtbXQtMVwiPk5vdGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImZpbGUubm90ZXNcIiBuYW1lPVwibm90ZXN7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBub3Rlc1wiIGNsYXNzPVwiIHJvdW5kZWQgcHgtMyBweS0yIG1iLTAgdy1mdWxsIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nXCIgcm93cz1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZCAjbm90ZXNDdHJsPVwibmdNb2RlbFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm90ZXNDdHJsLmludmFsaWRcIiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LXhzIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgTm90ZXMgYXJlIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5IG10LTJcIj5cclxuICAgICAgICAgICAgPCEtLSBDYXRlZ29yeSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBpbnB1dC10aXRsZSBtLTBcIj5DYXRlZ29yeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImZpbGUuY2F0ZWdvcnlJZCBcIiBuYW1lPVwiY2F0ZWdvcnl7e2l9fVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWV0YUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiIHJvdW5kZWQgcHgtMyBweS0yIHctZnVsbCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZ1wiIHJlcXVpcmVkICNjYXRlZ29yeUN0cmw9XCJuZ01vZGVsXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IENhdGVnb3J5PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGNhdGVnb3JpZXNcIiBbbmdWYWx1ZV09XCJjLnZhbHVlXCI+e3sgYy5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhdGVnb3J5Q3RybC5pbnZhbGlkXCIgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgdGV4dC14cyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgQ2F0ZWdvcnkgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBJbWFnZSBQcmV2aWV3IERpYWxvZyAtLT5cclxuICA8cC1kaWFsb2cgaGVhZGVyPVwiSW1hZ2UgUHJldmlld1wiIFttb2RhbF09XCJ0cnVlXCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFsodmlzaWJsZSldPVwidmlzaWJsZVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc3MHJlbSd9XCJcclxuICAgIGNsYXNzPVwiY3VzdG9tRGlhbG9nQ2xhc3NcIiAob25IaWRlKT1cImNsb3NlRGlhbG9nKClcIj5cclxuICAgIDxpbWcgW3NyY109XCJzZWxlY3RlSW1hZ2VVcmxcIiAvPlxyXG4gIDwvcC1kaWFsb2c+XHJcblxyXG4gICAgPCEtLSBEb2N1bWVudCBQcmV2aWV3IERpYWxvZyAtLT5cclxuICA8cC1kaWFsb2cgaGVhZGVyPVwiRG9jdW1lbnQgUHJldmlld1wiIFttb2RhbF09XCJ0cnVlXCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFsodmlzaWJsZSldPVwiZmlsZVZpc2libGVcIlxyXG4gICAgW3N0eWxlXT1cInt3aWR0aDogJzcwcmVtJ31cIiBjbGFzcz1cImN1c3RvbURpYWxvZ0NsYXNzXCIgKG9uSGlkZSk9XCJjbG9zZUZpbGVEaWFsb2coKVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImZpbGVVcmwgJiYgZmlsZVR5cGUgIT09ICd1bnN1cHBvcnRlZCc7IGVsc2UgdW5zdXBwb3J0ZWRNc2dcIiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHNoYWRvdy1zbVwiPlxyXG4gICAgICA8aWZyYW1lIFtzcmNdPVwiZmlsZVVybFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjYwMFwiIHN0eWxlPVwiYm9yZGVyOiBub25lO1wiIGFsbG93ZnVsbHNjcmVlbj5cclxuICAgICAgPC9pZnJhbWU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3Vuc3VwcG9ydGVkTXNnPlxyXG4gICAgICA8cCBjbGFzcz1cInRleHQtcmVkLTYwMCBtdC0zXCIgKm5nSWY9XCJmaWxlVHlwZSA9PT0gJ3Vuc3VwcG9ydGVkJ1wiPlxyXG4gICAgICAgIFVuc3VwcG9ydGVkIGZpbGUgdHlwZS4gUGxlYXNlIHVwbG9hZCBhIFBERiwgRE9DWCwgWExTWCwgb3IgUFBUWCBmaWxlLlxyXG4gICAgICA8L3A+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC1kaWFsb2c+XHJcblxyXG4gIDwhLS0gU1RMIEZpbGUgUHJldmlldyBEaWFsb2cgLS0+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGxGaWxlVXBsb2FkXCI+XHJcbiAgPHAtZGlhbG9nIGhlYWRlcj1cIlNUTCBGaWxlIFByZXZpZXdcIiBbbW9kYWxdPVwidHJ1ZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbKHZpc2libGUpXT1cInN0bEZpbGVWaXNpYmxlXCIgW3N0eWxlXT1cInt3aWR0aDogJzcwcmVtJ31cIlxyXG4gICAgY2xhc3M9XCJjdXN0b21EaWFsb2dDbGFzc1wiIChvbkhpZGUpPVwiY2xvc2VTdGxEaWFsb2coKVwiPlxyXG4gICAgPGFwcC10aHJlZS12aWV3ZXIgW21hbnVhbEZpbGVVcGxvYWRdPVwic3RsRmlsZVVwbG9hZFwiPjwvYXBwLXRocmVlLXZpZXdlcj5cclxuICA8L3AtZGlhbG9nPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICA8cC10b2FzdCBbcHJldmVudE9wZW5EdXBsaWNhdGVzXT1cInRydWVcIiBbYnJlYWtwb2ludHNdPVwieyAnNDI2cHgnOiB7IHdpZHRoOiAnOTAlJyB9IH1cIiBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIj48L3AtdG9hc3Q+XHJcblxyXG48L2Z4LWNvbXBvbmVudD4iXX0=
@@ -1487,32 +1487,31 @@ class UploaderComponent extends FxBaseComponent {
1487
1487
  }
1488
1488
  ngAfterViewInit() {
1489
1489
  const key = this.fxComponent?.fxData?.name;
1490
- if (key && this.uploadedFilesMap?.[key]) {
1491
- const files = this.uploadedFilesMap[key];
1490
+ console.log('Uploader Key:', key);
1491
+ console.log('Uploaded Files Map:', this.uploadedFilesMap);
1492
+ const files = this.uploadedFilesMap?.[key];
1493
+ // Strong check — ensures patching happens only when files actually exist
1494
+ if (key && Array.isArray(files) && files.length > 0) {
1492
1495
  const formatted = files
1493
1496
  .filter((fileObj) => !!fileObj)
1494
1497
  .map((fileObj) => {
1495
1498
  const originalUrlObj = fileObj.originalUrl;
1496
1499
  const fileName = originalUrlObj?.fileName || '';
1497
- const fileUrl = originalUrlObj?.fileUrl || '';
1498
1500
  const previewUrl = originalUrlObj?.previewUrl;
1499
1501
  const type = fileObj?.type;
1500
- // detect type based on file extension
1501
- // const fileType = this.detectFileTypeFromUrl(fileName || fileUrl);
1502
1502
  return {
1503
1503
  id: v4(),
1504
- file: null, // nothing local
1505
- originalUrl: originalUrlObj, // keep whole object
1506
- result: type === 'image'
1507
- ? (previewUrl) // prefer previewUrl, fallback to fileUrl
1508
- : previewUrl,
1504
+ file: null,
1505
+ originalUrl: originalUrlObj,
1506
+ result: previewUrl,
1509
1507
  name: fileName,
1510
1508
  title: fileObj?.title || '',
1511
1509
  notes: fileObj?.notes || '',
1512
1510
  categoryId: fileObj?.categoryId || '',
1513
- type: type, // computed type
1511
+ type: type,
1514
1512
  };
1515
1513
  });
1514
+ console.log('Formatted Files for Patching:', formatted);
1516
1515
  if (formatted.length > 0) {
1517
1516
  this.uploadedFiles = [...this.uploadedFiles, ...formatted];
1518
1517
  this.formattedData.uploadedFiles = this.uploadedFiles;