@rangertechnologies/ngnxt 2.1.245 → 2.1.246

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.
@@ -141,27 +141,30 @@ export class PropertiesComponent {
141
141
  this.selectedElement.set(null); // Reset if index is invalid
142
142
  this.selectColumn.set(null);
143
143
  }
144
- });
145
- const element = this.selectedElement();
146
- if (element) {
147
- let subText = element.subText;
148
- if (typeof subText === 'string' && subText.trim() !== '') {
149
- try {
150
- subText = JSON.parse(subText);
144
+ const element = this.selectedElement();
145
+ if (element) {
146
+ let subText = element.subText;
147
+ if (typeof subText === 'string' && subText.trim() !== '') {
148
+ try {
149
+ subText = JSON.parse(subText);
150
+ }
151
+ catch (e) {
152
+ // console.error('Error parsing subText:', e);
153
+ subText = {};
154
+ }
151
155
  }
152
- catch (e) {
153
- // console.error('Error parsing subText:', e);
156
+ else if (typeof subText !== 'object' || subText === null) {
154
157
  subText = {};
155
158
  }
159
+ if (subText && Array.isArray(subText.field)) {
160
+ subText = { ...subText, field: subText.field.join(', ') };
161
+ }
162
+ if (subText && Array.isArray(subText.queryParameter)) {
163
+ subText = { ...subText, queryParameter: subText.queryParameter.join(', ') };
164
+ }
165
+ this.selectedElement.update(el => ({ ...el, subText }));
156
166
  }
157
- else if (typeof subText !== 'object' || subText === null) {
158
- subText = {};
159
- }
160
- if (subText && Array.isArray(subText.field)) {
161
- subText = { ...subText, field: subText.field.join(', ') };
162
- }
163
- this.selectedElement.update(el => ({ ...el, subText }));
164
- }
167
+ });
165
168
  }
166
169
  createElementProperties() {
167
170
  return {
@@ -215,6 +218,7 @@ export class PropertiesComponent {
215
218
  { label: 'End Point', placeholder: 'endpoint', type: 'text', key: 'subText.endpoint' },
216
219
  { label: 'Variable', placeholder: 'variable', type: 'text', key: 'subText.variable' },
217
220
  { label: 'Field', placeholder: 'field', type: 'text', key: 'subText.field' },
221
+ { label: 'Query Parameter', placeholder: 'queryParameter', type: 'text', key: 'subText.queryParameter' },
218
222
  { label: 'Default Field', placeholder: 'defaultField', type: 'text', key: 'subText.defaultField' },
219
223
  { label: 'Label Field', placeholder: 'labelField', type: 'text', key: 'subText.labelField' },
220
224
  { label: 'Value Field', placeholder: 'valueField', type: 'text', key: 'subText.valueField' },
@@ -628,6 +632,9 @@ export class PropertiesComponent {
628
632
  if (subText && Array.isArray(subText.field)) {
629
633
  subText = { ...subText, field: subText.field.join(', ') };
630
634
  }
635
+ if (subText && Array.isArray(subText.queryParameter)) {
636
+ subText = { ...subText, queryParameter: subText.queryParameter.join(', ') };
637
+ }
631
638
  this.selectedElement.update(el => ({ ...el, subText }));
632
639
  }
633
640
  const keys = path.split('.');
@@ -900,23 +907,10 @@ export class PropertiesComponent {
900
907
  trackByProp(index, item) {
901
908
  return item?.key ?? index;
902
909
  }
903
- // Add these getter methods
904
- get currentElement() {
905
- return this.selectedElement();
906
- }
907
- get currentElementType() {
908
- return this.currentElement?.type;
909
- }
910
- get isTableElement() {
911
- return this.currentElementType === 'Table';
912
- }
913
- get selectedColumnId() {
914
- return this.selectColumn();
915
- }
916
910
  getOptimizedSubPropValue(subProp) {
917
- const element = this.currentElement;
918
- if (this.isTableElement && (subProp.targetArray || subProp.isTableColumn)) {
919
- return this.getValueByArrayPath(subProp.targetArray, subProp.targetArrayKey, this.selectedColumnId, subProp.key, subProp.isTableColumn);
911
+ const element = this.selectedElement();
912
+ if (this.selectedElement()?.type === 'Table' && (subProp.targetArray || subProp.isTableColumn)) {
913
+ return this.getValueByArrayPath(subProp.targetArray, subProp.targetArrayKey, this.selectColumn(), subProp.key, subProp.isTableColumn);
920
914
  }
921
915
  return this.getValueByPath(subProp.key, element);
922
916
  }
@@ -941,4 +935,4 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.2.13", n
941
935
  type: HostListener,
942
936
  args: ['document:click', ['$event']]
943
937
  }] } }) });
944
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYnVpbGRlci9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL3BhZ2VzL2J1aWxkZXIvcHJvcGVydGllcy9wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLN0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMscUZBQXFGO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBdUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUVySyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBRXBELDBDQUEwQztBQU0xQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFNBQVMsQ0FBQyxHQUFRLEVBQUUsSUFBWSxFQUFFLGVBQW9CLEVBQUU7UUFDdEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLFlBQVksQ0FBQztRQUN2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LFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEdBQUcsQ0FBQztZQUNKLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7U0FDZCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBzaWduYWwsIGNvbXB1dGVkLCBlZmZlY3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbWFnZS1jcm9wcGVyL2NvbXBvbmVudC9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOeHRTZWFyY2hCb3ggfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3NlYXJjaC1ib3gvc2VhcmNoLWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IENyb3BwZXJQb3NpdGlvbiwgRGltZW5zaW9ucywgSW1hZ2VUcmFuc2Zvcm0gfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2ltYWdlLWNyb3BwZXIvaW50ZXJmYWNlcyc7XG4vL0FQLTI1SlVOMjUtSW1wb3J0aW5nIGNvbW1vbiBjb25zdGFudHMgZm9yIGVsZW1lbnQsIGZpZWxkLCBhbmQgYXBwZWFyYW5jZSBwcm9wZXJ0aWVzXG5pbXBvcnQgeyBDT01NT05fRUxFTUVOVF9QUk9QUywgQ09NTU9OX09QVElPTlNfRklFTEQsIENPTU1PTl9GSUVMRF9QUk9QUywgQ09NTU9OX0FQUEVBUkFOQ0VfUFJPUFMsIENPTU1PTl9DT0xVTU5fRklFTEQgfSBmcm9tICcuLi9wcm9wZXJ0aWVzL2NvbW1vbi1maWVsZHMuY29uc3RhbnRzJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBDdXN0b20gcGlwZSBmb3IgcGF0aC1iYXNlZCB2YWx1ZSBhY2Nlc3NcbkBQaXBlKHtcbiAgbmFtZTogJ2dldFZhbHVlQnlQYXRoJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBHZXRWYWx1ZUJ5UGF0aFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKG9iajogYW55LCBwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogYW55ID0gJycpOiBhbnkge1xuICAgIGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChvLCBrKSA9PiBvPy5ba10gPz8gZGVmYXVsdFZhbHVlLCBvYmopO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9wZXJ0aWVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEltYWdlQ3JvcHBlckNvbXBvbmVudCwgTnh0U2VhcmNoQm94LCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgR2V0VmFsdWVCeVBhdGhQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9wZXJ0aWVzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydGllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHRlbXBsYXRlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkRWxlbWVudFR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50VHlwZVNpZy5zZXQodmFsdWUpO1xuICB9XG4gIEBPdXRwdXQoKSBmb3JtQnV0dG9uSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgdGVtcGxhdGVTYXZlSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duITogRWxlbWVudFJlZjtcblxuICAvLyBTaWduYWxzIGZvciByZWFjdGl2ZSBzdGF0ZVxuICBzZWxlY3RlZEVsZW1lbnRUeXBlU2lnID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBzZWxlY3RlZEVsZW1lbnQgPSBzaWduYWw8YW55PihudWxsKTtcbiAgc2VsZWN0ZWRFbGVtZW50SW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG4gIGhlYWRlclNlbGVjdCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGJvb2sgPSBzaWduYWw8YW55PihudWxsKTtcbiAgYm9va0lkID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIGFjdGl2ZVRhYiA9IHNpZ25hbDxzdHJpbmc+KCdhdHRyaWJ1dGVzJyk7XG4gIHNlbGVjdENvbHVtbiA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICB0cmFuc2Zvcm0gPSBzaWduYWw8SW1hZ2VUcmFuc2Zvcm0+KHtcbiAgICB0cmFuc2xhdGVVbml0OiAncHgnLFxuICAgIHNjYWxlOiAxLFxuICAgIHJvdGF0ZTogMCxcbiAgICBmbGlwSDogZmFsc2UsXG4gICAgZmxpcFY6IGZhbHNlLFxuICAgIHRyYW5zbGF0ZUg6IDAsXG4gICAgdHJhbnNsYXRlVjogMFxuICB9KTtcbiAgY2FudmFzUm90YXRpb24gPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgY3JvcHBlciA9IHNpZ25hbDxDcm9wcGVyUG9zaXRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0xpbmtEcm9wZG93bk9wZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBlcnJvck1lc3NhZ2UgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIGJvb2tTdWJ0ZXh0ID0gc2lnbmFsKHtcbiAgICBlbmRwb2ludDogJ2h0dHBzOi8vZGV2LWFwaS52YWxhcmhyLmNvbS9ueHQnLFxuICAgIHZhcmlhYmxlOiBudWxsLFxuICAgIGZpZWxkOiBbJ2xhYmVsJywgJ25hbWUnXSxcbiAgICBkZWZhdWx0RmllbGQ6ICdsYWJlbCdcbiAgfSk7XG4gIGlzU3R5bGVFeHBhbmRlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGNyb3BwZXJNYXhIZWlnaHQgPSAwO1xuICBjcm9wcGVyTWF4V2lkdGggPSAwO1xuICBjcm9wcGVyTWluSGVpZ2h0ID0gMDtcbiAgY3JvcHBlck1pbldpZHRoID0gMDtcbiAgY3JvcHBlclN0YXRpY1dpZHRoID0gMDtcbiAgY3JvcHBlclN0YXRpY0hlaWdodCA9IDA7XG4gIGFzcGVjdFJhdGlvID0gNCAvIDM7XG4gIHJvdW5kQ3JvcHBlciA9IGZhbHNlO1xuICBpc0V4cGFuZGVkOiBCb29sZWFuID0gZmFsc2VcbiAgYWxpZ25JbWFnZSA9ICdjZW50ZXInIGFzIGNvbnN0O1xuICBlbGVtZW50VHlwZSA9IFsnSGVhZGVyJywnTGluZScsJ1NwYWNlJywnVGFibGUnLCdUYWJsZUNvbHVtbicsJ0NoZWNrYm94JywnRHJvcGRvd24nLCdSYWRpbycsXCJUZXh0XCIsIFwiQ2FsZW5kYXJcIiwgXCJEYXRlXCIsIFwiVGltZVwiLCBcIkRhdGVUaW1lXCIsIFwiRW1haWxcIiwgXCJCb29rXCIsIFwiTGlzdFwiLCBcIlRleHRBcmVhXCIsIFwiUmljaFRleHRBcmVhXCIsIFwiTnVtYmVyXCIsIFwiSW1hZ2VcIiwgXCJMYWJlbFwiLCBcIkJvb2xlYW5cIiwgXCJGaWxlXCIsIFwiSWNvblwiLCAnQnV0dG9uJ11cblxuICAvLyBBZGQgdGhlc2UgcHJvcGVydGllcyB0byB5b3VyIGNvbXBvbmVudCBjbGFzc1xuICBwcml2YXRlIF9jYWNoZWRQcm9wZXJ0aWVzOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0U2VsZWN0ZWRFbGVtZW50OiBhbnkgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0U2VsZWN0ZWRDb2x1bW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8vIENvbXB1dGVkIHNpZ25hbHMgZm9yIG1lbW9pemF0aW9uXG4gIGZpZWxkQXNTdHJpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJvb2tTdWJ0ZXh0KCkuZmllbGQuam9pbignLCAnKSk7XG4gIGZpbHRlcmVkQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmaWVsZHNNZXRhID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQoKT8uZmllbGRzTWV0YSA/PyBbXTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmaWVsZHNNZXRhKVxuICAgICAgPyBmaWVsZHNNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnVuaXF1ZUlkZW50aWZpZXIgIT09IHRoaXMuc2VsZWN0Q29sdW1uKCkpXG4gICAgICA6IFtdO1xuICB9KTtcblxuICAvLyBNZW1vaXplZCBwcm9wZXJ0aWVzXG4gIGVsZW1lbnRQcm9wZXJ0aWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jcmVhdGVFbGVtZW50UHJvcGVydGllcygpKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyU2VydmljZTogRm9ybUJ1aWxkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVtcGxhdGVTZXJ2aWNlOiBUZW1wbGF0ZVNlcnZpY2VcbiAgKSB7fVxuICBcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc2VsZWN0SGVhZGVyU3ViamVjdCQuc3Vic2NyaWJlKGhlYWRlciA9PiB7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnNldCh7IHR5cGU6IGhlYWRlciB9KTtcbiAgICAgICAgdGhpcy5oZWFkZXJTZWxlY3Quc2V0KHRydWUpO1xuICAgICAgICBjb25zdCBib29rRGF0YSA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEJvb2soKTtcbiAgICAgICAgdGhpcy5ib29rLnNldChib29rRGF0YSk7XG4gICAgICAgIHRoaXMuYm9va0lkLnNldChib29rRGF0YT8ucmVjb3Jkc1swXT8uaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICBcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zZWxlY3RlZEVsZW1lbnQkLnN1YnNjcmliZShpbmRleCA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4LnNldChpbmRleCk7XG4gICAgICB0aGlzLmhlYWRlclNlbGVjdC5zZXQoZmFsc2UpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRFbGVtZW50cygpO1xuICAgICAgICBpZiAoIWVsZW1lbnRzIHx8ICFBcnJheS5pc0FycmF5KGVsZW1lbnRzKSB8fCBpbmRleCA+PSBlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQobnVsbCk7IC8vIFJlc2V0IHNlbGVjdGVkRWxlbWVudCBpZiBpbnZhbGlkXG4gICAgICAgICAgdGhpcy5zZWxlY3RDb2x1bW4uc2V0KG51bGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtZW50ID0geyAuLi5lbGVtZW50c1tpbmRleF0gfTsgLy8gU2FmZSB0byBzcHJlYWQgc2luY2Ugd2UgY2hlY2tlZFxuICAgICAgICBsZXQgZmllbGRzTWV0YSA9IGVsZW1lbnQ/LmZpZWxkc01ldGE7XG4gICAgICAgIGlmIChlbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZpZWxkc01ldGEgPSBBcnJheS5pc0FycmF5KGZpZWxkc01ldGEpXG4gICAgICAgICAgICAgID8gZmllbGRzTWV0YVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZmllbGRzTWV0YSB8fCAnW10nKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIGZpZWxkc01ldGE6JywgZSk7XG4gICAgICAgICAgICBmaWVsZHNNZXRhID0gW107XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0Q29sdW1uLnNldCh0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRTZWxlY3RUYWJsZUNvbHVtbigpID8/IG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0Q29sdW1uLnNldChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQoeyAuLi5lbGVtZW50LCBmaWVsZHNNZXRhIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KG51bGwpOyAvLyBSZXNldCBpZiBpbmRleCBpcyBpbnZhbGlkXG4gICAgICAgIHRoaXMuc2VsZWN0Q29sdW1uLnNldChudWxsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50KCk7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGxldCBzdWJUZXh0ID0gZWxlbWVudC5zdWJUZXh0O1xuICAgICAgaWYgKHR5cGVvZiBzdWJUZXh0ID09PSAnc3RyaW5nJyAmJiBzdWJUZXh0LnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzdWJUZXh0ID0gSlNPTi5wYXJzZShzdWJUZXh0KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgc3ViVGV4dDonLCBlKTtcbiAgICAgICAgICBzdWJUZXh0ID0ge307XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN1YlRleHQgIT09ICdvYmplY3QnIHx8IHN1YlRleHQgPT09IG51bGwpIHtcbiAgICAgICAgc3ViVGV4dCA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKHN1YlRleHQgJiYgQXJyYXkuaXNBcnJheShzdWJUZXh0LmZpZWxkKSkge1xuICAgICAgICBzdWJUZXh0ID0geyAuLi5zdWJUZXh0LCBmaWVsZDogc3ViVGV4dC5maWVsZC5qb2luKCcsICcpIH07XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHsgLi4uZWwsIHN1YlRleHQgfSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRWxlbWVudFByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEhlYWRlcjoge1xuICAgICAgICBlbGVtZW50UHJvcHM6IFt7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsIGtleTogJ3RpdGxlJywgaXNUcmFuc2xhdGU6IHRydWUgfV0sXG4gICAgICB9LFxuICAgICAgLy8gQVAtMTlNQVIyNSBBZGQgTGluZSBQcm9wZXJ0eVxuICAgICAgTGluZToge1xuICAgICAgICBlbGVtZW50UHJvcHM6IFtcbiAgICAgICAgICB7IGxhYmVsOiAnTGluZSBXaWR0aCcsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdzaXplJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdQYWRkaW5nIFRvcCcsIHR5cGU6ICdudW1iZXInLCBrZXk6ICdwYWRkaW5nVG9wJywgcGxhY2Vob2xkZXI6ICdFbnRlciBwYWRkaW5nIHRvcCcgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnUGFkZGluZyBCb3R0b20nLCB0eXBlOiAnbnVtYmVyJywga2V5OiAncGFkZGluZ0JvdHRvbScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgcGFkZGluZyBib3R0b20nIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ0xpbmUgU3R5bGUnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnbGluZVN0eWxlJywgb3B0aW9uczogW3tsYWJlbDonU29saWQnLHZhbHVlOidTb2xpZCd9LHtsYWJlbDonRGFzaGVkJyx2YWx1ZTonRGFzaGVkJ30se2xhYmVsOidEb3R0ZWQnLHZhbHVlOidEb3R0ZWQnfV0gfVxuICAgICAgICBdLFxuICAgICAgICBmaWVsZFByb3BzOiBbXVxuICAgICAgfSxcbiAgICAgIFNwYWNlOiB7XG4gICAgICAgIGVsZW1lbnRQcm9wczogW1xuICAgICAgICAgIHsgbGFiZWw6ICdFbGVtZW50JywgdHlwZTogJ251bWJlcicsIGtleTogJ3F1ZXN0aW9uTnVtYmVyJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ3NpemUnIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGZpZWxkUHJvcHM6IFtdXG4gICAgICB9LFxuICAgICAgVGFibGU6IHtcbiAgICAgICAgZWxlbWVudFByb3BzOiBbXG4gICAgICAgICAgeyBsYWJlbDogJ0lzIExhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAnc3R5bGUuc2hvd0xhYmVsJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdwcmltYXJ5S2V5JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAncHJpbWFyeUtleScgfSxcbiAgICAgICAgICB7IGxhYmVsOiAndGFibGVOYW1lJywgcGxhY2Vob2xkZXI6ICdFbXBsb3llZSBEZXRhaWxzJywgdHlwZTogJ3RleHQnLCBrZXk6ICdxdWVzdGlvblRleHQnICwgaXNUcmFuc2xhdGU6IHRydWV9LFxuICAgICAgICAgIHsgbGFiZWw6ICdpbnB1dFRleHRBbGlnbm1lbnQnLCBwbGFjZWhvbGRlcjogJ0xlZnQnLCB0eXBlOiAndGV4dCcsIGtleTogJ2lucHV0VGV4dEFsaWdubWVudCcgfSxcbiAgICAgICAgICB7IGxhYmVsOiAndGFibGVTY2FsZVNpemUnLCBwbGFjZWhvbGRlcjogJzA2IC0gRnVsbCBTY2FsZScsIHR5cGU6ICd0ZXh0Jywga2V5OiAndGFibGVTY2FsZVNpemUnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2lzTm9zSW5kaWNhdG9yJywgcGxhY2Vob2xkZXI6ICcwNiAtIEZ1bGwgU2NhbGUnLCB0eXBlOiAnY2hlY2tib3gnLCBrZXk6ICd0YWJsZUNvbmZpZy5pc05vc0luZGljYXRvcicgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnaXNQYWdpbmF0aW9uJywgcGxhY2Vob2xkZXI6ICcwNiAtIEZ1bGwgU2NhbGUnLCB0eXBlOiAnY2hlY2tib3gnLCBrZXk6ICd0YWJsZUNvbmZpZy5pc1BhZ2luYXRpb24nIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2FkZElubGluZVJlY29yZCcsIHBsYWNlaG9sZGVyOiAnMDYgLSBGdWxsIFNjYWxlJywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAndGFibGVDb25maWcuYWRkSW5saW5lUmVjb3JkJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdhY3Rpb25CdXR0b24nLCBwbGFjZWhvbGRlcjogJzA2IC0gRnVsbCBTY2FsZScsIHR5cGU6ICdjaGVja2JveCcsIGtleTogJ3RhYmxlQ29uZmlnLmFjdGlvbkJ1dHRvbicgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnc2VhcmNoQmFyJywgcGxhY2Vob2xkZXI6ICcwNiAtIEZ1bGwgU2NhbGUnLCB0eXBlOiAnY2hlY2tib3gnLCBrZXk6ICd0YWJsZUNvbmZpZy5zZWFyY2hCYXInIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2lzRGVsZXRlUm93JywgcGxhY2Vob2xkZXI6ICcwNiAtIEZ1bGwgU2NhbGUnLCB0eXBlOiAnY2hlY2tib3gnLCBrZXk6ICd0YWJsZUNvbmZpZy5pc0RlbGV0ZVJvdycgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnaXNFZGl0Um93JywgcGxhY2Vob2xkZXI6ICcwNiAtIEZ1bGwgU2NhbGUnLCB0eXBlOiAnY2hlY2tib3gnLCBrZXk6ICd0YWJsZUNvbmZpZy5pc0VkaXRSb3cnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2lzQnV0dG9ucycsIHBsYWNlaG9sZGVyOiAnMDYgLSBGdWxsIFNjYWxlJywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAndGFibGVDb25maWcuaXNCdXR0b25zJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdyb3dDaG9pY2UnLCBwbGFjZWhvbGRlcjogJycsIHR5cGU6ICd0ZXh0Jywga2V5OiAncm93Q2hvaWNlJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdxdWVzdGlvbk51bWJlcicsIHR5cGU6ICdudW1iZXInLCBrZXk6ICdxdWVzdGlvbk51bWJlcicgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdzaXplJyB9LFxuICAgICAgICBdLFxuICAgICAgICBmaWVsZFByb3BzOiBbXG4gICAgICAgICAgeyBsYWJlbDogJ3RhYmxlSWQnLCBwbGFjZWhvbGRlcjogJ0VtcF9UYWJsZV8wMScsIHR5cGU6ICd0ZXh0Jywga2V5OiAndGFibGVJZCcsIGlzVHJhbnNsYXRlOiB0cnVlIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2hlbHBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBtZXNzYWdlJywgdHlwZTogJ3RleHQnLCBrZXk6ICdoZWxwVGV4dCcsIGlzVHJhbnNsYXRlOiB0cnVlIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2RlZmF1bHRWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRGVmYXVsdCBWYWx1ZScsIHR5cGU6ICd0ZXh0Jywga2V5OiAnZGVmYXVsdFZhbHVlJ30sXG4gICAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnLCBrZXk6ICdyZWZlcmVuY2VGaWVsZCcgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3N1YlF1ZXN0aW9uJywga2V5OiAnaXNTdWJUZXh0JyxcbiAgICAgICAgICAgIHN1YlF1ZXN0aW9uOiBbXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdFbmQgUG9pbnQnLCBwbGFjZWhvbGRlcjogJ2VuZHBvaW50JywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LmVuZHBvaW50JyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnVmFyaWFibGUnLCBwbGFjZWhvbGRlcjogJ3ZhcmlhYmxlJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LnZhcmlhYmxlJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnRmllbGQnLCBwbGFjZWhvbGRlcjogJ2ZpZWxkJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LmZpZWxkJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnRGVmYXVsdCBGaWVsZCcsIHBsYWNlaG9sZGVyOiAnZGVmYXVsdEZpZWxkJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LmRlZmF1bHRGaWVsZCcgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ0xhYmVsIEZpZWxkJywgcGxhY2Vob2xkZXI6ICdsYWJlbEZpZWxkJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LmxhYmVsRmllbGQnIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdWYWx1ZSBGaWVsZCcsIHBsYWNlaG9sZGVyOiAndmFsdWVGaWVsZCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAnc3ViVGV4dC52YWx1ZUZpZWxkJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnU291cmNlIFF1ZXN0aW9uIElkJywgcGxhY2Vob2xkZXI6ICdzb3VyY2VRdWVzdGlvbklkJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LnNvdXJjZVF1ZXN0aW9uSWQnIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdEZXBlbmRlbnQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ2RlcGVuZGVudFZhbHVlJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LmRlcGVuZGVudFZhbHVlJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnRGVwZW5kZW50IEZpZWxkJywgcGxhY2Vob2xkZXI6ICdpc0RlcGVuZGVudEZpZWxkJywgdHlwZTogJ2Jvb2xlYW4nLCBrZXk6ICdzdWJUZXh0LmlzRGVwZW5kZW50RmllbGQnIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdRdWVyeSBGaWVsZCcsIHBsYWNlaG9sZGVyOiAncXVlcnlGaWVsZCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAnc3ViVGV4dC5xdWVyeUZpZWxkJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnUXVlcnkgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ3F1ZXJ5VmFsdWUnLCB0eXBlOiAndGV4dCcsIGtleTogJ3N1YlRleHQucXVlcnlWYWx1ZScgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ1F1ZXJ5IFZhbHVlIFJlZicsIHBsYWNlaG9sZGVyOiAncXVlcnlWYWx1ZVJlZicsIHR5cGU6ICd0ZXh0Jywga2V5OiAnc3ViVGV4dC5xdWVyeVZhbHVlUmVmZXJlbmNlJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnVW5pcXVlIEtleScsIHBsYWNlaG9sZGVyOiAndW5pcXVlS2V5JywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LnVuaXF1ZUtleScgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhcHBlYXJhbmNlOiBbXG4gICAgICAgICAgeyBsYWJlbDogJ1NlbGVjdCBGb250JywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnQnLCBwbGFjZWhvbGRlcjogJ0xlZnQnLCByZXF1aXJlZDogdHJ1ZSwgb3B0aW9uczogW3tsYWJlbDonSGVsdmV0aWNhIE5ldWUnLHZhbHVlOidIZWx2ZXRpY2EgTmV1ZSd9LHtsYWJlbDonQXJpYWwnLHZhbHVlOidBcmlhbCd9LHtsYWJlbDonVGltZXMgTmV3IFJvbWFuJyx2YWx1ZTonVGltZXMgTmV3IFJvbWFuJ30se2xhYmVsOidSb2JvdG8nLHZhbHVlOidSb2JvdG8nfV19LFxuICAgICAgICAgIHsgbGFiZWw6ICdGb250IENvbG9yJywgdHlwZTogJ2NvbG9yJywga2V5OiAnZm9udENvbG9yJywgZGVmYXVsdFZhbHVlOiAnJywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnRm9udCBTaXplJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnRTaXplJywgZGVmYXVsdFZhbHVlOiAnJywgcmVxdWlyZWQ6IHRydWUsIG9wdGlvbnM6IFt7IGxhYmVsOiAnU21hbGwnLCB2YWx1ZTogJzEycHgnIH0sIHsgbGFiZWw6ICdNZWRpdW0nLCB2YWx1ZTogJzE0cHgnIH0sIHsgbGFiZWw6ICdMYXJnZScsIHZhbHVlOiAnMTZweCcgfV19LFxuICAgICAgICAgIHsgbGFiZWw6ICdGb250IFdpZHRoJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnRXZWlnaHQnLCBkZWZhdWx0VmFsdWU6ICcnLCByZXF1aXJlZDogdHJ1ZSwgb3B0aW9uczogW3sgdmFsdWU6ICc0MDAnLCBsYWJlbDogJzQwMC1Ob3JtYWwnIH0sIHsgdmFsdWU6ICc1MDAnLCBsYWJlbDogJzUwMC1NZWRpdW0nIH0sIHsgdmFsdWU6ICc2MDAnLCBsYWJlbDogJzYwMC1TZW1pIEJvbGQnIH0sIHsgdmFsdWU6ICc3MDAnLCBsYWJlbDogJzcwMC1Cb2xkJyB9XX0sXG4gICAgICAgICAgeyBsYWJlbDogJ0R1cGxpY2F0ZSBGaWVsZCcsIHR5cGU6ICdidXR0b24tdG9nZ2xlJywga2V5OiAnZHVwbGljYXRlRmllbGQnLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFRhYmxlQ29sdW1uOiB7XG4gICAgICAgIGVsZW1lbnRQcm9wczogW1xuICAgICAgICAgIHsgbGFiZWw6ICdUeXBlJywgcGxhY2Vob2xkZXI6ICdUZXh0JywgdHlwZTogJ3NlbGVjdCcsIHRhcmdldEFycmF5OiAnZmllbGRzTWV0YScsIHRhcmdldEFycmF5S2V5OiAndW5pcXVlSWRlbnRpZmllcicsIGtleTogJ2ZsZFR5cGUnLCByZXF1aXJlZDogdHJ1ZSAsIG9wdGlvbnM6IHRoaXMuZWxlbWVudFR5cGUubWFwKGYgPT4gKHsgbGFiZWw6IGYsIHZhbHVlOiBmIH0pKX0sXG4gICAgICAgICAgeyBsYWJlbDogJ2hlYWRlckxhYmVscycsIHBsYWNlaG9sZGVyOiAnRW1wbG95ZWUgRGV0YWlscycsIHR5cGU6ICd0ZXh0JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnbGFiZWwnLCBpc1RyYW5zbGF0ZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdhcGlOYW1lJywgcGxhY2Vob2xkZXI6ICdFbXBsb3llZSBEZXRhaWxzJywgdHlwZTogJ3RleHQnLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdhcGlOYW1lJyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU3VtbWFyeSBDb2x1bW4nLCBwbGFjZWhvbGRlcjogJ1N1bW1hcnkgQ29sdW1uJywgdHlwZTogJ3N1YlF1ZXN0aW9uJywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnc3VtbWFyeUNvbHVtbicsXG4gICAgICAgICAgICBzdWJRdWVzdGlvbjogW1xuICAgICAgICAgICAgICB7IGxhYmVsOiAnVHlwZScsIHBsYWNlaG9sZGVyOiAnRW1wbG95ZWUgRGV0YWlscycsIHR5cGU6ICd0ZXh0JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnZmxkVHlwZScgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ09wZXJhdGlvbicsIHBsYWNlaG9sZGVyOiAnRW1wbG95ZWUgRGV0YWlscycsIHR5cGU6ICd0ZXh0JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnb3BlcmF0aW9uJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnT3BlcmFuZHMnLCBwbGFjZWhvbGRlcjogJ0VtcGxveWVlIERldGFpbHMnLCB0eXBlOiAnYXJyYXknLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdvcGVyYW5kcycgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU3VtbWFyeSBSb3cnLCBwbGFjZWhvbGRlcjogJ1N1bW1hcnkgUm93JywgdHlwZTogJ3N1YlF1ZXN0aW9uJywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnc3VtbWFyeVJvdycsXG4gICAgICAgICAgICBzdWJRdWVzdGlvbjogW1xuICAgICAgICAgICAgICB7IGxhYmVsOiAnVHlwZScsIHBsYWNlaG9sZGVyOiAnRW1wbG95ZWUgRGV0YWlscycsIHR5cGU6ICd0ZXh0JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnZmxkVHlwZScgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ29wZXJhdGlvbicsIHBsYWNlaG9sZGVyOiAnb3BlcmF0aW9uJywgdHlwZTogJ3RleHQnLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdvcGVyYXRpb24nIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdjb2x1bW4nLCBwbGFjZWhvbGRlcjogJ0VtcGxveWVlIERldGFpbHMnLCB0eXBlOiAncmFkaW8nLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdjb2x1bW4nIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdjb2x1bW5zJywgcGxhY2Vob2xkZXI6ICdFbXBsb3llZSBEZXRhaWxzJywgdHlwZTogJ2FycmF5JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnY29sdW1ucycgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ29wZXJhbmRzJywgcGxhY2Vob2xkZXI6ICdFbXBsb3llZSBEZXRhaWxzJywgdHlwZTogJ2FycmF5JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnb3BlcmFuZHMnIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGxhYmVsOiAndGV4dEFsaWdubWVudCcsIHBsYWNlaG9sZGVyOiAnTGVmdCcsIHR5cGU6ICd0ZXh0JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAndGV4dEFsaWdubWVudCcgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnY29sdW1uU2NhbGVTaXplJywgcGxhY2Vob2xkZXI6ICcwNiAtIEZ1bGwgU2NhbGUnLCB0eXBlOiAndGV4dCcsIHRhcmdldEFycmF5OiAnZmllbGRzTWV0YScsIHRhcmdldEFycmF5S2V5OiAndW5pcXVlSWRlbnRpZmllcicsIGtleTogJ2NvbHVtblNjYWxlU2l6ZScgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmllbGRQcm9wczogW10sXG4gICAgICAgIGFwcGVhcmFuY2U6IFtdXG4gICAgICB9LFxuICAgICAgQ2hlY2tib3g6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZyh7IGN1c3RvbUZpZWxkUHJvcHM6IENPTU1PTl9PUFRJT05TX0ZJRUxELm1hcChvcHQgPT4gKHsgLi4ub3B0LCB0eXBlOiAnY2hlY2tib3gnIH0pKSB9KSxcbiAgICAgIERyb3Bkb3duOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoeyBjdXN0b21GaWVsZFByb3BzOiBDT01NT05fT1BUSU9OU19GSUVMRC5tYXAob3B0ID0+ICh7IC4uLm9wdCwgdHlwZTogJ2Ryb3Bkb3duJyB9KSkgfSksXG4gICAgICBSYWRpbzogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKHsgY3VzdG9tRmllbGRQcm9wczogQ09NTU9OX09QVElPTlNfRklFTEQubWFwKG9wdCA9PiAoeyAuLi5vcHQsIHR5cGU6ICdjaGVja2JveCcgfSkpIH0pLFxuICAgICAgVGV4dDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBDYWxlbmRhcjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBEYXRlOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIFRpbWU6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgRGF0ZVRpbWU6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgRW1haWw6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgQm9vazogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBMaXN0OiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIFRleHRBcmVhOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIFJpY2hUZXh0QXJlYTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBOdW1iZXI6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgSW1hZ2U6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgTGFiZWw6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgQm9vbGVhbjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBGaWxlOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIEljb246IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLCAvL01TTTEwSlVMMjUgaWNvbiBzZWxlY3RvciBlbGVtZW50XG4gICAgICBCdXR0b246IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgIH07XG4gIH1cblxuICBjcmVhdGVFbGVtZW50Q29uZmlnKGNvbmZpZz86IHsgY3VzdG9tRWxlbWVudFByb3BzPzogYW55W10sIGN1c3RvbUZpZWxkUHJvcHM/OiBhbnlbXSwgY3VzdG9tQXBwZWFyYW5jZVByb3BzPzogYW55W10gfSkge1xuICAgIHJldHVybiB7XG4gICAgICBlbGVtZW50UHJvcHM6IFsuLi5DT01NT05fRUxFTUVOVF9QUk9QUywgLi4uKGNvbmZpZz8uY3VzdG9tRWxlbWVudFByb3BzIHx8IFtdKV0sXG4gICAgICBmaWVsZFByb3BzOiBbLi4uQ09NTU9OX0ZJRUxEX1BST1BTLCAuLi4oY29uZmlnPy5jdXN0b21GaWVsZFByb3BzIHx8IFtdKV0sXG4gICAgICBhcHBlYXJhbmNlOiBbLi4uQ09NTU9OX0FQUEVBUkFOQ0VfUFJPUFMsIC4uLihjb25maWc/LmN1c3RvbUFwcGVhcmFuY2VQcm9wcyB8fCBbXSldXG4gICAgfTtcbiAgfVxuICAvLyBBUCAyM01BWTI1IC0gQWRkIGEgbmV3IGJ1dHRvbiB3aXRoIGRlZmF1bHQgc3R5bGluZ1xuICBhZGROZXdCdXR0b24oKSB7XG4gICAgY29uc3QgbGFzdFBlcmNlbnQgPSB0aGlzLmJvb2soKT8ucXVlc3Rpb25ib29rPy5hY3Rpb24/LnNsaWNlKC0xKVswXT8ucG9zaXRpb25QZXJjZW50ID8/IDA7XG4gICAgY29uc3QgYnV0dG9ucyA9IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgZXZlbnR0b2VtaXQ6ICcnLFxuICAgICAgYWx0OiAnJyxcbiAgICAgIGVuZHBvaW50OiAnJyxcbiAgICAgIG1ldGhvZDogJycsXG4gICAgICBpZDogdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuYWRkRWxlbWVudFdpdGhJZCgpLFxuICAgICAgcG9zaXRpb25QZXJjZW50OiBsYXN0UGVyY2VudCArIDEwLFxuICAgICAgd2lkdGg6IDEwMCxcbiAgICAgIGJvcmRlclJhZGl1czogNixcbiAgICAgIGFsaWdubWVudDogJ2ZsZXgtc3RhcnQnXG4gICAgfTtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVRdWVzdGlvbkJvb2tBY3Rpb25CdXR0b25zKGJ1dHRvbnMsICdhZGQnKTtcbiAgICB0aGlzLmJvb2sudXBkYXRlKGJvb2sgPT4gKHsgLi4uYm9vayB9KSk7XG4gIH1cbiAgLy9BUCAyM01BWTI1IC0gUmVtb3ZlIGEgYnV0dG9uIGZyb20gdGhlIGFjdGlvbiBsaXN0IFxuICByZW1vdmVCdXR0b24oYnRuOiBhbnkpIHtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVRdWVzdGlvbkJvb2tBY3Rpb25CdXR0b25zKGJ0biwgJ3JlbW92ZScpO1xuICAgIHRoaXMuYm9vay51cGRhdGUoYm9vayA9PiAoeyAuLi5ib29rIH0pKTtcbiAgfVxuICAvL0FQIDIzTUFZMjUgLSBVcGRhdGUgYSBzcGVjaWZpYyBwcm9wZXJ0eSBvZiBhIGJ1dHRvblxuICBvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGluZGV4OiBudW1iZXIsIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgYnV0dG9ucyA9IHRoaXMuYm9vaygpPy5xdWVzdGlvbmJvb2s/LmFjdGlvbiA/PyBbXTtcbiAgICBpZiAoYnV0dG9uc1tpbmRleF0pIHtcbiAgICAgIGJ1dHRvbnNbaW5kZXhdW2tleV0gPSB2YWx1ZTtcbiAgICAgIHRoaXMuYm9vay51cGRhdGUoYm9vayA9PiAoeyAuLi5ib29rLCBxdWVzdGlvbmJvb2s6IHsgLi4uYm9vay5xdWVzdGlvbmJvb2ssIGFjdGlvbjogYnV0dG9ucyB9IH0pKTtcbiAgICB9XG4gIH1cbiAgLy9BUC0xME1BUjI1IFVwZGF0ZXMgdGhlIHRpdGxlIHVzaW5nIHRoZSBmb3JtIGJ1aWxkZXIgc2VydmljZSAgXG4gIHVwZGF0ZVRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVUaXRsZSh2YWx1ZSk7XG4gICAgdGhpcy5ib29rLnVwZGF0ZShib29rID0+ICh7XG4gICAgICAuLi5ib29rLFxuICAgICAgcmVjb3JkczogW3sgLi4uYm9vay5yZWNvcmRzWzBdLCB0aXRsZTogdmFsdWUgfV1cbiAgICB9KSk7XG4gIH1cblxuICB2YWxpZGF0ZUlucHV0KHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlID09PSAnbGFiZWwnIHx8IHR5cGUgPT09ICdwbGFjZWhvbGRlcicpIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL15bYS16QS1aMC05XFxzXSokLztcbiAgICAgIGlmICghcmVnZXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KCdPbmx5IGxldHRlcnMgYW5kIG51bWJlcnMgYXJlIGFsbG93ZWQnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoJycpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdXBkYXRlRmllbGQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYm9va1N1YnRleHQudXBkYXRlKHN1YnRleHQgPT4gKHtcbiAgICAgIC4uLnN1YnRleHQsXG4gICAgICBmaWVsZDogdmFsdWUuc3BsaXQoJywnKS5tYXAoaXRlbSA9PiBpdGVtLnRyaW0oKSlcbiAgICB9KSk7XG4gIH1cblxuICBvbkNoZWNrYm94Q2hhbmdlKHRhcmdldEFycmF5UGF0aDogYW55LCB0YXJnZXRBcnJheUtleTogYW55LCBrZXk6IGFueSwgYXBpTmFtZTogc3RyaW5nLCBpc0NoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0RGF0YUJ5UGF0aCh0YXJnZXRBcnJheVBhdGgpO1xuICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRhcmdldEFycmF5LmZpbmQoaXRlbSA9PiBpdGVtW3RhcmdldEFycmF5S2V5XSA9PT0gdGhpcy5zZWxlY3RDb2x1bW4oKSk7XG4gICAgZm91bmRJdGVtW2tleV0gPSBmb3VuZEl0ZW1ba2V5XSA/IGZvdW5kSXRlbVtrZXldIDogW107XG4gICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgaWYgKCFmb3VuZEl0ZW1ba2V5XS5pbmNsdWRlcyhhcGlOYW1lKSkge1xuICAgICAgICBmb3VuZEl0ZW1ba2V5XS5wdXNoKGFwaU5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbmRleCA9IGZvdW5kSXRlbVtrZXldLmluZGV4T2YoYXBpTmFtZSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBmb3VuZEl0ZW1ba2V5XS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnQoKSk7XG4gIH1cblxuICB1cGRhdGVQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4KCkgPj0gMCkge1xuICAgICAgaWYgKGtleSA9PT0gJ3F1ZXN0aW9uVGV4dCcgfHwga2V5ID09PSAncXVlc3Rpb24nKSB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUlucHV0KHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoa2V5ID09PSAncXVlc3Rpb25OdW1iZXInKSB7XG4gICAgICAgIC8vQVAtMTBNQVIyNSBDb252ZXJ0IHRoZSB2YWx1ZSB0byBhbiBpbnRlZ2VyICBcbiAgICAgICAgY29uc3QgbmV3T3JkZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICBpZiAoaXNOYU4obmV3T3JkZXIpKSByZXR1cm47XG5cbiAgICAgICAgLy9BUC0xME1BUjI1IFVwZGF0ZSB0aGUgZWxlbWVudCdzIHF1ZXN0aW9uTnVtYmVyIGluIHRoZSBmb3JtIGJ1aWxkZXIgc2VydmljZSAgXG4gICAgICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCgpLCB7IHF1ZXN0aW9uTnVtYmVyOiBuZXdPcmRlciB9KTtcblxuICAgICAgICAvL0FQLTEwTUFSMjUgU29ydCBlbGVtZW50cyBiYXNlZCBvbiB0aGUgdXBkYXRlZCBxdWVzdGlvbk51bWJlciAgXG4gICAgICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnNvcnRFbGVtZW50c0J5T3JkZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09ICdmb250JyB8fCBrZXkgPT09ICdmb250V2VpZ2h0Jykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHsgLi4uZWwsIFtrZXldOiB2YWx1ZSB9KSk7XG4gICAgICB9XG4gICAgICBjb25zdCB1cGRhdGUgPSB7IFtrZXldOiB2YWx1ZSB9O1xuICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4KCksIHVwZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgb25SYWRpb0NoYW5nZSh0YXJnZXRBcnJheVBhdGg6IGFueSwgdGFyZ2V0QXJyYXlLZXk6IGFueSwga2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgbGV0IHRhcmdldEFycmF5ID0gdGhpcy5nZXREYXRhQnlQYXRoKHRhcmdldEFycmF5UGF0aCk7XG4gICAgICBpZiAodHlwZW9mIHRhcmdldEFycmF5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRhcmdldEFycmF5ID0gSlNPTi5wYXJzZSh0YXJnZXRBcnJheSB8fCAnW10nKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgdGFyZ2V0QXJyYXk6JywgZSk7XG4gICAgICAgICAgdGFyZ2V0QXJyYXkgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldEFycmF5KSkgcmV0dXJuO1xuICAgICAgbGV0IGZvdW5kSXRlbSA9IHRhcmdldEFycmF5LmZpbmQoaXRlbSA9PiBpdGVtW3RhcmdldEFycmF5S2V5XSA9PT0gdGhpcy5zZWxlY3RDb2x1bW4oKSk7XG4gICAgICBpZiAoIWZvdW5kSXRlbSkge1xuICAgICAgICBmb3VuZEl0ZW0gPSB7IFt0YXJnZXRBcnJheUtleV06IHRoaXMuc2VsZWN0Q29sdW1uKCkgfTtcbiAgICAgICAgdGFyZ2V0QXJyYXkucHVzaChmb3VuZEl0ZW0pO1xuICAgICAgfVxuICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgbGV0IG9iaiA9IGZvdW5kSXRlbTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgayA9IGtleXNbaV07XG4gICAgICAgIGlmICghb2JqW2tdKSBvYmpba10gPSB7fTtcbiAgICAgICAgb2JqID0gb2JqW2tdO1xuICAgICAgfVxuICAgICAgb2JqW2tleXNba2V5cy5sZW5ndGggLSAxXV0gPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiAoe1xuICAgICAgICAuLi5lbCxcbiAgICAgICAgZmllbGRzTWV0YTogdGFyZ2V0QXJyYXlcbiAgICAgIH0pKTtcbiAgICAgIHRoaXMudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRWYWx1ZUJ5UGF0aChrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvblJlcXVpcmVkQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpIHtcbiAgICAgIGxldCBsYWJlbCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50KCkubGFiZWwgPyB0aGlzLnNlbGVjdGVkRWxlbWVudCgpLmxhYmVsLnJlcGxhY2UoL1xccypcXCorJC8sICcnKSA6ICdMYWJlbCc7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbGFiZWwgPSBgJHtsYWJlbH0gKmA7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5KCdsYWJlbCcsIGxhYmVsKTtcbiAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkoJ2lzT3B0aW9uYWwnLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU3ViUXVlc3Rpb24ocHJvcDogYW55KSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIHRvZ2dsZVN0eWxlU2VjdGlvbigpIHtcbiAgICB0aGlzLmlzU3R5bGVFeHBhbmRlZC5zZXQoIXRoaXMuaXNTdHlsZUV4cGFuZGVkKCkpO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcygpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQoKTtcbiAgICBjb25zdCBzZWxlY3RlZENvbHVtbiA9IHRoaXMuc2VsZWN0Q29sdW1uKCk7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIHVzZSBjYWNoZWQgcmVzdWx0XG4gICAgaWYgKHRoaXMuX2NhY2hlZFByb3BlcnRpZXMgJiYgXG4gICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEVsZW1lbnQgPT09IGVsZW1lbnQgJiYgXG4gICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZENvbHVtbiA9PT0gc2VsZWN0ZWRDb2x1bW4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRQcm9wZXJ0aWVzO1xuICAgIH0gICAgXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICB0aGlzLl9jYWNoZWRQcm9wZXJ0aWVzID0gbnVsbDtcbiAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEVsZW1lbnQgPSBudWxsO1xuICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkQ29sdW1uID0gbnVsbDtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgXG4gICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgXG4gICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ0hlYWRlcicpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuZWxlbWVudFByb3BlcnRpZXMoKVsnSGVhZGVyJ107XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09ICdUYWJsZScgJiYgc2VsZWN0ZWRDb2x1bW4gIT09IG51bGwpIHtcbiAgICAgIGxldCBmaWVsZHNNZXRhID0gZWxlbWVudC5maWVsZHNNZXRhO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZmllbGRzTWV0YSA9IEFycmF5LmlzQXJyYXkoZmllbGRzTWV0YSlcbiAgICAgICAgICA/IGZpZWxkc01ldGFcbiAgICAgICAgICA6IEpTT04ucGFyc2UoZmllbGRzTWV0YSB8fCAnW10nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBmaWVsZHNNZXRhIGluIGdldFByb3BlcnRpZXM6JywgZSk7XG4gICAgICAgIGZpZWxkc01ldGEgPSBbXTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgY29sdW1uID0gZmllbGRzTWV0YS5maW5kKChjOiBhbnkpID0+IGMudW5pcXVlSWRlbnRpZmllciA9PT0gc2VsZWN0ZWRDb2x1bW4pO1xuICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICBjb25zdCBtYXJrSXNUYWJsZUNvbHVtbiA9IChpdGVtczogYW55W10gPSBbXSkgPT5cbiAgICAgICAgICBpdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdJdGVtID0geyAuLi5pdGVtLCBpc1RhYmxlQ29sdW1uOiB0cnVlIH07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdJdGVtLnN1YlF1ZXN0aW9uKSkge1xuICAgICAgICAgICAgICBuZXdJdGVtLnN1YlF1ZXN0aW9uID0gbmV3SXRlbS5zdWJRdWVzdGlvbi5tYXAoc3ViID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3ViLFxuICAgICAgICAgICAgICAgIGlzVGFibGVDb2x1bW46IHRydWVcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ld0l0ZW07XG4gICAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgZWxlbWVudFByb3BzOiBbXG4gICAgICAgICAgICAuLi4odGhpcy5lbGVtZW50UHJvcGVydGllcygpWydUYWJsZUNvbHVtbiddLmVsZW1lbnRQcm9wcyB8fCBbXSksXG4gICAgICAgICAgICAuLi5tYXJrSXNUYWJsZUNvbHVtbih0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzKClbdGhpcy5lbGVtZW50VHlwZS5pbmNsdWRlcyhjb2x1bW4uZmxkVHlwZSkgPyBjb2x1bW4uZmxkVHlwZSA6ICdUZXh0J10/LmVsZW1lbnRQcm9wcylcbiAgICAgICAgICBdLFxuICAgICAgICAgIGZpZWxkUHJvcHM6IFtcbiAgICAgICAgICAgIC4uLih0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzKClbJ1RhYmxlQ29sdW1uJ10uZmllbGRQcm9wcyB8fCBbXSksXG4gICAgICAgICAgICAuLi5tYXJrSXNUYWJsZUNvbHVtbih0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzKClbdGhpcy5lbGVtZW50VHlwZS5pbmNsdWRlcyhjb2x1bW4uZmxkVHlwZSkgPyBjb2x1bW4uZmxkVHlwZSA6ICdUZXh0J10/LmZpZWxkUHJvcHMpXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhcHBlYXJhbmNlOiBbXG4gICAgICAgICAgICAuLi4odGhpcy5lbGVtZW50UHJvcGVydGllcygpWydUYWJsZUNvbHVtbiddLmFwcGVhcmFuY2UgfHwgW10pLFxuICAgICAgICAgICAgLi4ubWFya0lzVGFibGVDb2x1bW4odGhpcy5lbGVtZW50UHJvcGVydGllcygpW3RoaXMuZWxlbWVudFR5cGUuaW5jbHVkZXMoY29sdW1uLmZsZFR5cGUpID8gY29sdW1uLmZsZFR5cGUgOiAnVGV4dCddPy5hcHBlYXJhbmNlKVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZWxlbWVudFByb3BlcnRpZXMoKVsnVGFibGVDb2x1bW4nXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gdGhpcy5lbGVtZW50UHJvcGVydGllcygpW2VsZW1lbnQudHlwZV07XG4gICAgfVxuICAgIFxuICAgIC8vIENhY2hlIHRoZSByZXN1bHRcbiAgICB0aGlzLl9jYWNoZWRQcm9wZXJ0aWVzID0gcmVzdWx0O1xuICAgIHRoaXMuX2xhc3RTZWxlY3RlZEVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuX2xhc3RTZWxlY3RlZENvbHVtbiA9IHNlbGVjdGVkQ29sdW1uO1xuICAgIFxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgLy8gQWRkIG1ldGhvZCB0byBjbGVhciBjYWNoZSB3aGVuIG5lZWRlZFxuICBwcml2YXRlIGNsZWFyUHJvcGVydGllc0NhY2hlKCkge1xuICAgIHRoaXMuX2NhY2hlZFByb3BlcnRpZXMgPSBudWxsO1xuICAgIHRoaXMuX2xhc3RTZWxlY3RlZEVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX2xhc3RTZWxlY3RlZENvbHVtbiA9IG51bGw7XG4gIH1cbiAgLy8gQVAtMjhNQVIyNSBBZGQgYW4gb3B0aW9uIHdpdGggYSB1bmlxdWUgVVVJRFxuICBhZGRPcHRpb24ob3B0aW9uczogYW55W10pIHtcbiAgICBjb25zdCB1bmlxdWVfaWQgPSB1dWlkdjQoKTtcbiAgICBvcHRpb25zLnB1c2goeyBpZDogdW5pcXVlX2lkLCB2YWx1ZTogJycgfSk7XG4gIH1cblxuICAvLyBBUC0yOE1BUjI1IEZ1bmN0aW9uIHRvIHJlbW92ZSBhbiBvcHRpb24gYmFzZWQgb24gaXRzIHVuaXF1ZSBVVUlEXG4gIHJlbW92ZU9wdGlvbihvcHRpb25zOiBhbnlbXSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gaWQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIG9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVCdXR0b25DbGljaygpIHtcbiAgICB0aGlzLmZvcm1CdXR0b25IYW5kbGVyLmVtaXQodGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZG93bmxvYWRFbGVtZW50KCkpO1xuICB9XG5cbiAgaGFuZGxlVGVtcGxhdGVTYXZlKCkge1xuICAgIHRoaXMudGVtcGxhdGVTYXZlSGFuZGxlci5lbWl0KHRoaXMudGVtcGxhdGVTZXJ2aWNlLmRvd25sb2FkKCkpO1xuICB9XG5cbiAgc2V0QWN0aXZlVGFiKHRhYjogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIuc2V0KHRhYik7XG4gIH1cblxuICBvblNhdmUoKSB7fVxuXG4gIG9uQ2FuY2VsKCkge31cblxuICBvbkFsaWduU2VsZWN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHsgLi4uZWwsIHRleHRBbGlnbjogdmFsdWUgfSkpO1xuICB9XG5cbiAgb25TdHlsZVNlbGVjdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+ICh7XG4gICAgICAuLi5lbCxcbiAgICAgIHN0eWxlczogW3ZhbHVlXVxuICAgIH0pKTtcbiAgfVxuXG4gIGlzU3R5bGVBY3RpdmUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRWxlbWVudCgpPy5zdHlsZXM/LmluY2x1ZGVzKHZhbHVlKSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldFZhbHVlQnlQYXRoKHBhdGg6IHN0cmluZywgb2JqOiBhbnkgPSB0aGlzLnNlbGVjdGVkRWxlbWVudCgpLCBkZWZhdWx0VmFsdWU6IGFueSA9ICcnKTogYW55IHtcbiAgICBpZiAoIW9iaiB8fCAhcGF0aCkgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgobywgaykgPT4gbz8uW2tdID8/IGRlZmF1bHRWYWx1ZSwgb2JqKTtcbiAgfVxuICBpc0Fub3RoZXJJZFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRFbGVtZW50cygpXG4gICAgICAuc29tZSgoZWwsIGkpID0+IGkgIT09IHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgoKSAmJiBlbC5wcmltYXJ5S2V5KTtcbiAgfVxuXG4gIC8vIEFsc28gdXBkYXRlIHlvdXIgb25Ub2dnbGVDaGFuZ2UgbWV0aG9kIHRvIGNsZWFyIGNhY2hlXG5vblRvZ2dsZUNoYW5nZShwYXRoOiBzdHJpbmcsIGV2ZW50OiBhbnkpIHtcbiAgLy8gQ2xlYXIgY2FjaGUgd2hlbiBlbGVtZW50IGNoYW5nZXNcbiAgdGhpcy5jbGVhclByb3BlcnRpZXNDYWNoZSgpO1xuICBjb25zdCBjaGVja2VkID0gZXZlbnQudGFyZ2V0ID8gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkIDogZXZlbnQ7XG4gIHRoaXMuc2V0VmFsdWVCeVBhdGgocGF0aCwgY2hlY2tlZCk7XG4gIFxuICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgIGxldCBmaWVsZHNNZXRhID0gdGhpcy5nZXREYXRhQnlQYXRoKCdmaWVsZHNNZXRhJyk7XG4gICAgaWYgKHR5cGVvZiBmaWVsZHNNZXRhID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZmllbGRzTWV0YSA9IEpTT04ucGFyc2UoZmllbGRzTWV0YSB8fCAnW10nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBmaWVsZHNNZXRhOicsIGUpO1xuICAgICAgICBmaWVsZHNNZXRhID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiAoe1xuICAgICAgLi4uZWwsXG4gICAgICBmaWVsZHNNZXRhOiBmaWVsZHNNZXRhXG4gICAgfSkpO1xuICAgIHRoaXMudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudCgpKTtcbiAgfVxufVxuXG4gIC8vIFVwZGF0ZSB5b3VyIHNldFZhbHVlQnlQYXRoIG1ldGhvZCB0byBjbGVhciBjYWNoZVxuc2V0VmFsdWVCeVBhdGgocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gIC8vIENsZWFyIGNhY2hlIHdoZW4gZWxlbWVudCBjaGFuZ2VzXG4gIHRoaXMuY2xlYXJQcm9wZXJ0aWVzQ2FjaGUoKTtcbiAgXG4gIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4KCkgPj0gMCkge1xuICAgIGlmIChwYXRoID09PSAncXVlc3Rpb25UZXh0JyB8fCBwYXRoID09PSAncXVlc3Rpb24nKSB7XG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGVJbnB1dCh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGF0aCA9PT0gJ3F1ZXN0aW9uTnVtYmVyJykge1xuICAgICAgY29uc3QgbmV3T3JkZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgaWYgKGlzTmFOKG5ld09yZGVyKSkgcmV0dXJuO1xuICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4KCksIHsgcXVlc3Rpb25OdW1iZXI6IG5ld09yZGVyIH0pO1xuICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc29ydEVsZW1lbnRzQnlPcmRlcigpO1xuICAgIH1cbiAgICBpZiAocGF0aCA9PT0gJ2ZvbnQnIHx8IHBhdGggPT09ICdmb250V2VpZ2h0Jykge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+ICh7IC4uLmVsLCBbcGF0aF06IHZhbHVlIH0pKTtcbiAgICB9XG4gIH1cbiAgXG4gIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudCgpO1xuICBpZiAoZWxlbWVudCkge1xuICAgIGxldCBzdWJUZXh0ID0gZWxlbWVudC5zdWJUZXh0O1xuICAgIGlmICh0eXBlb2Ygc3ViVGV4dCA9PT0gJ3N0cmluZycgJiYgc3ViVGV4dC50cmltKCkgIT09ICcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdWJUZXh0ID0gSlNPTi5wYXJzZShzdWJUZXh0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBzdWJUZXh0OicsIGUpO1xuICAgICAgICBzdWJUZXh0ID0ge307XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc3ViVGV4dCAhPT0gJ29iamVjdCcgfHwgc3ViVGV4dCA9PT0gbnVsbCkge1xuICAgICAgc3ViVGV4dCA9IHt9O1xuICAgIH1cbiAgICBpZiAoc3ViVGV4dCAmJiBBcnJheS5pc0FycmF5KHN1YlRleHQuZmllbGQpKSB7XG4gICAgICBzdWJUZXh0ID0geyAuLi5zdWJUZXh0LCBmaWVsZDogc3ViVGV4dC5maWVsZC5qb2luKCcsICcpIH07XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiAoeyAuLi5lbCwgc3ViVGV4dCB9KSk7XG4gIH1cbiAgXG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiB7XG4gICAgbGV0IG9iaiA9IHsgLi4uZWwgfTtcbiAgICBsZXQgY3VycmVudCA9IG9iajtcbiAgICBrZXlzLmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0ga2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIGN1cnJlbnRba2V5XSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFjdXJyZW50W2tleV0pIHtcbiAgICAgICAgICBjdXJyZW50W2tleV0gPSBpc05hTihOdW1iZXIoa2V5c1tpbmRleCArIDFdKSkgPyB7fSA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG9iajtcbiAgfSk7XG4gIFxuICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5lbGVtZW50VXBkYXRlKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgoKSwgdGhpcy5zZWxlY3RlZEVsZW1lbnQoKSk7XG59XG5cbiAgZ2V0U3R5bGVLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50KCk/LnN0eWxlO1xuICAgIHJldHVybiBzdHlsZSAmJiB0eXBlb2Ygc3R5bGUgPT09ICdvYmplY3QnID8gT2JqZWN0LmtleXMoc3R5bGUpIDogW107XG4gIH1cblxuICB1cGRhdGVFbGVtZW50KGVsZW1lbnQ6IGFueSkge1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmVsZW1lbnRVcGRhdGUodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCgpLCBlbGVtZW50KTtcbiAgICBpZiAoZWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJyAmJiB0aGlzLnNlbGVjdENvbHVtbigpKSB7XG4gICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zZXRTZWxlY3RlZFRhYmxlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4KCksIHsgdW5pcXVlSWRlbnRpZmllcjogdGhpcy5zZWxlY3RDb2x1bW4oKSB8fCBudWxsIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KHsgLi4uZWxlbWVudCB9KTsgLy8gRW5zdXJlIHJlYWN0aXZlIHVwZGF0ZVxuICAgIH1cbiAgfVxuXG4gIGdldFZhbHVlQnlBcnJheVBhdGgodGFyZ2V0QXJyYXlQYXRoOiBhbnksIHRhcmdldEFycmF5S2V5OiBzdHJpbmcsIHNlbGVjdENvbHVtbjogc3RyaW5nLCBrZXlQYXRoOiBzdHJpbmcsIGlzVGFibGVDb2x1bW46IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XG4gICAgaWYgKGlzVGFibGVDb2x1bW4pIHtcbiAgICAgIHRhcmdldEFycmF5UGF0aCA9ICdmaWVsZHNNZXRhJztcbiAgICAgIHRhcmdldEFycmF5S2V5ID0gJ3VuaXF1ZUlkZW50aWZpZXInO1xuICAgICAga2V5UGF0aCA9ICdxdWVzdGlvbi4nICsga2V5UGF0aDtcbiAgICB9XG4gICAgbGV0IHRhcmdldEFycmF5ID0gdGhpcy5nZXREYXRhQnlQYXRoKHRhcmdldEFycmF5UGF0aCk7XG4gICAgaWYgKHR5cGVvZiB0YXJnZXRBcnJheSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRhcmdldEFycmF5ID0gSlNPTi5wYXJzZSh0YXJnZXRBcnJheSB8fCAnW10nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyB0YXJnZXRBcnJheTonLCBlKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0QXJyYXkpKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZm91bmRJdGVtID0gdGFyZ2V0QXJyYXkuZmluZChpdGVtID0+IGl0ZW1bdGFyZ2V0QXJyYXlLZXldID09PSBzZWxlY3RDb2x1bW4pO1xuICAgIHJldHVybiBmb3VuZEl0ZW0gPyBrZXlQYXRoLnNwbGl0KCcuJykucmVkdWNlKChvYmosIGtleSkgPT4gb2JqPy5ba2V5XSwgZm91bmRJdGVtKSA6ICcnO1xuICB9XG4gIFxuICB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHRhcmdldEFycmF5UGF0aDogYW55LCB0YXJnZXRBcnJheUtleTogc3RyaW5nLCBzZWxlY3RDb2x1bW46IHN0cmluZywga2V5UGF0aDogc3RyaW5nLCBldmVudDogYW55LCBpc1RhYmxlQ29sdW1uOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAvLyBDbGVhciBjYWNoZSB3aGVuIGVsZW1lbnQgY2hhbmdlc1xuICAgIHRoaXMuY2xlYXJQcm9wZXJ0aWVzQ2FjaGUoKTtcbiAgICAgICAgXG4gICAgaWYgKGlzVGFibGVDb2x1bW4pIHtcbiAgICAgIHRhcmdldEFycmF5UGF0aCA9ICdmaWVsZHNNZXRhJztcbiAgICAgIHRhcmdldEFycmF5S2V5ID0gJ3VuaXF1ZUlkZW50aWZpZXInO1xuICAgICAga2V5UGF0aCA9ICdxdWVzdGlvbi4nICsga2V5UGF0aDtcbiAgICB9XG4gICAgICAgIFxuICAgIGxldCB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0RGF0YUJ5UGF0aCh0YXJnZXRBcnJheVBhdGgpO1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0QXJyYXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0YXJnZXRBcnJheSA9IEpTT04ucGFyc2UodGFyZ2V0QXJyYXkgfHwgJ1tdJyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgdGFyZ2V0QXJyYXk6JywgZSk7XG4gICAgICAgIHRhcmdldEFycmF5ID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0YXJnZXRBcnJheSkpIHtcbiAgICAgIHRhcmdldEFycmF5ID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHtcbiAgICAgICAgLi4uZWwsXG4gICAgICAgIFt0YXJnZXRBcnJheVBhdGhdOiB0YXJnZXRBcnJheVxuICAgICAgfSkpO1xuICAgIH1cbiAgICBcbiAgICBsZXQgZm91bmRJdGVtID0gdGFyZ2V0QXJyYXkuZmluZChpdGVtID0+IGl0ZW1bdGFyZ2V0QXJyYXlLZXldID09PSBzZWxlY3RDb2x1bW4pO1xuICAgIGlmICghZm91bmRJdGVtKSB7XG4gICAgICBmb3VuZEl0ZW0gPSB7IFt0YXJnZXRBcnJheUtleV06IHNlbGVjdENvbHVtbiB9O1xuICAgICAgdGFyZ2V0QXJyYXkucHVzaChmb3VuZEl0ZW0pO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBrZXlzID0ga2V5UGF0aC5zcGxpdCgnLicpO1xuICAgIGxldCBvYmogPSBmb3VuZEl0ZW07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgIGlmICghb2JqW2tleV0pIG9ialtrZXldID0ge307XG4gICAgICBvYmogPSBvYmpba2V5XTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgbGFzdEtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQ6IGFueSA9IGV2ZW50LnRhcmdldCA/IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50IDogZXZlbnQ7XG4gICAgb2JqW2xhc3RLZXldID0gaW5wdXRFbGVtZW50Py50eXBlID09PSAnY2hlY2tib3gnID8gaW5wdXRFbGVtZW50LmNoZWNrZWQgOiBpbnB1dEVsZW1lbnQudmFsdWUgPyBpbnB1dEVsZW1lbnQudmFsdWUgOiBpbnB1dEVsZW1lbnQ7XG4gICAgXG4gICAgaWYgKGtleVBhdGggPT09ICdzdW1tYXJ5Q29sdW1uJykge1xuICAgICAgaWYgKG9ialsnc3VtbWFyeVJvdyddID09PSB0cnVlKSB7XG4gICAgICAgIG9ialsnc3VtbWFyeVJvdyddID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXRFbGVtZW50LmNoZWNrZWQgPT09IHRydWUpIHtcbiAgICAgICAgb2JqWydmbGRUeXBlJ10gPSAnY2FsY3VsYXRpb24nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqWydmbGRUeXBlJ10gPSAnVGV4dCc7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChrZXlQYXRoID09PSAnc3VtbWFyeVJvdycpIHtcbiAgICAgIGlmIChvYmpbJ3N1bW1hcnlDb2x1bW4nXSA9PT0gdHJ1ZSkge1xuICAgICAgICBvYmpbJ3N1bW1hcnlDb2x1bW4nXSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0RWxlbWVudC5jaGVja2VkID09PSB0cnVlKSB7XG4gICAgICAgIG9ialsnZmxkVHlwZSddID0gJ2NhbGN1bGF0aW9uJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9ialsnZmxkVHlwZSddID0gJ1RleHQnO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHtcbiAgICAgIC4uLmVsLFxuICAgICAgW3RhcmdldEFycmF5UGF0aF06IHRhcmdldEFycmF5XG4gICAgfSkpO1xuICAgIFxuICAgIHRoaXMudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudCgpKTtcbiAgfVxuXG4gIGdldERhdGFCeVBhdGgocGF0aDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCBrZXkpID0+IG9iaj8uW2tleV0sIHRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpO1xuICB9XG5cbiAgZmxpcEhvcml6b250YWwoKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0udXBkYXRlKHQgPT4gKHsgLi4udCwgZmxpcEg6ICF0LmZsaXBIIH0pKTtcbiAgfVxuXG4gIGZsaXBWZXJ0aWNhbCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybS51cGRhdGUodCA9PiAoeyAuLi50LCBmbGlwVjogIXQuZmxpcFYgfSkpO1xuICB9XG5cbiAgcmVzZXRJbWFnZSgpIHtcbiAgICB0aGlzLmNhbnZhc1JvdGF0aW9uLnNldCgwKTtcbiAgICB0aGlzLmNyb3BwZXIuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy50cmFuc2Zvcm0uc2V0KHtcbiAgICAgIHRyYW5zbGF0ZVVuaXQ6ICdweCcsXG4gICAgICBzY2FsZTogMSxcbiAgICAgIHJvdGF0ZTogMCxcbiAgICAgIGZsaXBIOiBmYWxzZSxcbiAgICAgIGZsaXBWOiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0ZUg6IDAsXG4gICAgICB0cmFuc2xhdGVWOiAwXG4gICAgfSk7XG4gIH1cblxuICB6b29tT3V0KCkge1xuICAgIHRoaXMudHJhbnNmb3JtLnVwZGF0ZSh0ID0+ICh7IC4uLnQsIHNjYWxlOiB0LnNjYWxlISAtIDAuMSB9KSk7XG4gIH1cblxuICB6b29tSW4oKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0udXBkYXRlKHQgPT4gKHsgLi4udCwgc2NhbGU6IHQuc2NhbGUhICsgMC4xIH0pKTtcbiAgfVxuXG4gIHJvdGF0ZUxlZnQoKSB7XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2FudmFzUm90YXRpb24udXBkYXRlKGMgPT4gYyAtIDEpO1xuICAgICAgdGhpcy5mbGlwQWZ0ZXJSb3RhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJvdGF0ZVJpZ2h0KCkge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbnZhc1JvdGF0aW9uLnVwZGF0ZShjID0+IGMgKyAxKTtcbiAgICAgIHRoaXMuZmxpcEFmdGVyUm90YXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBtb3ZlTGVmdCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybS51cGRhdGUodCA9PiAoeyAuLi50LCB0cmFuc2xhdGVIOiB0LnRyYW5zbGF0ZUghIC0gMSB9KSk7XG4gIH1cblxuICBtb3ZlUmlnaHQoKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0udXBkYXRlKHQgPT4gKHsgLi4udCwgdHJhbnNsYXRlSDogdC50cmFuc2xhdGVIISArIDEgfSkpO1xuICB9XG5cbiAgbW92ZURvd24oKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0udXBkYXRlKHQgPT4gKHsgLi4udCwgdHJhbnNsYXRlVjogdC50cmFuc2xhdGVWISArIDEgfSkpO1xuICB9XG5cbiAgbW92ZVVwKCkge1xuICAgIHRoaXMudHJhbnNmb3JtLnVwZGF0ZSh0ID0+ICh7IC4uLnQsIHRyYW5zbGF0ZVY6IHQudHJhbnNsYXRlViEgLSAxIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgZmxpcEFmdGVyUm90YXRlKCkge1xuICAgIHRoaXMudHJhbnNmb3JtLnVwZGF0ZSh0ID0+ICh7XG4gICAgICAuLi50LFxuICAgICAgZmxpcEg6IHQuZmxpcFYsXG4gICAgICBmbGlwVjogdC5mbGlwSCxcbiAgICAgIHRyYW5zbGF0ZUg6IDAsXG4gICAgICB0cmFuc2xhdGVWOiAwXG4gICAgfSkpO1xuICB9XG5cbiAgYXN5bmMgaW1hZ2VDcm9wcGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZTY0ID0gYXdhaXQgdGhpcy5jb252ZXJ0QmxvYlRvQmFzZTY0KGV2ZW50Lm9iamVjdFVybCk7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHsgLi4uZWwsIGltYWdlRGF0YTogYmFzZTY0IH0pKTtcbiAgICAgIGF3YWl0IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmVsZW1lbnRVcGRhdGUodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCgpLCB0aGlzLnNlbGVjdGVkRWxlbWVudCgpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gY29uc29sZS5lcnJvcihcIkVycm9yIGluIGltYWdlQ3JvcHBlZDpcIiwgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGNyb3BwZXJSZWFkeShzb3VyY2VJbWFnZURpbWVuc2lvbnM6IERpbWVuc2lvbnMpIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGNvbnZlcnRCbG9iVG9CYXNlNjQob2JqZWN0VXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBmZXRjaChvYmplY3RVcmwpXG4gICAgICAudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5ibG9iKCkpXG4gICAgICAudGhlbihibG9iID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKTtcbiAgICAgICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBjaGlsZEV2ZW50Q2FwdHVyZShldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+ICh7XG4gICAgICAuLi5lbCxcbiAgICAgIHFiUmVmZXJlbmNlOiBldmVudC52YWx1ZU9iaj8ubmFtZSxcbiAgICAgIHFiUmVmZXJlbmNlUXVlc3Rpb25zOiBldmVudC52YWx1ZU9iaj8uanNvbkJvZHlcbiAgICB9KSk7XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZWxlbWVudFVwZGF0ZSh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4KCksIHRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpO1xuICB9XG5cbiAgbGlua1RvZ2dsZURyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaXNMaW5rRHJvcGRvd25PcGVuLnVwZGF0ZShvcGVuID0+ICFvcGVuKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZHJvcGRvd24gJiYgIXRoaXMuZHJvcGRvd24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmlzTGlua0Ryb3Bkb3duT3Blbi5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRyYWdnZWRJZCA9IGlkO1xuICAgIGV2ZW50LmRhdGFUcmFuc2ZlciEuZWZmZWN0QWxsb3dlZCA9IFwibW92ZVwiO1xuICB9XG5cbiAgLy8gQVAtMjhNQVIyNSBQcmV2ZW50IGRlZmF1bHQgYmVoYXZpb3IgdG8gYWxsb3cgZHJvcFxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLy8gQVAtMjhNQVIyNSBTd2FwIHRoZSBkcmFnZ2VkIGl0ZW0gd2l0aCB0aGUgZHJvcHBlZCBwb3NpdGlvblxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCwga2V5OiBzdHJpbmcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHRhcmdldElkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcIi5vcHRpb24taXRlbXNcIik/LmdldEF0dHJpYnV0ZShcImRhdGEtaWRcIik7XG4gICAgaWYgKHRoaXMuZHJhZ2dlZElkICYmIHRhcmdldElkICYmIHRoaXMuZHJhZ2dlZElkICE9PSB0YXJnZXRJZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IFsuLi5lbFtrZXldXTtcbiAgICAgICAgY29uc3QgZHJhZ2dlZEluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gdGhpcy5kcmFnZ2VkSWQpO1xuICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb24uaWQgPT09IHRhcmdldElkKTtcbiAgICAgICAgaWYgKGRyYWdnZWRJbmRleCAhPT0gLTEgJiYgdGFyZ2V0SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgW29wdGlvbnNbZHJhZ2dlZEluZGV4XSwgb3B0aW9uc1t0YXJnZXRJbmRleF1dID0gW29wdGlvbnNbdGFyZ2V0SW5kZXhdLCBvcHRpb25zW2RyYWdnZWRJbmRleF1dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLmVsLCBba2V5XTogb3B0aW9ucyB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZHJhZ2dlZElkID0gbnVsbDtcbiAgfVxuXG4gIGR1cGxpY2F0ZUZpZWxkKGVsZW1lbnQ6IGFueSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZ2V0RWxlbWVudHMoKTtcbiAgICBjb25zdCBjb3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlbGVtZW50KSk7XG4gICAgLy9BUC0xOEFQUjI1IEdlbmVyYXRlIGEgbmV3IElEIHVzaW5nIHRoZSBzZXJ2aWNlJ3MgbWV0aG9kXG4gICAgY29weS5pZCA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmFkZEVsZW1lbnRXaXRoSWQoKTtcbiAgICAvL2NvcHkudXVpZCA9IGNvcHkuaWQ7IFxuICAgIC8vIEFQLTE4QVBSMjUgU2V0IHRoZSBxdWVzdGlvbk51bWJlciB0byB0aGUgbmV4dCBhdmFpbGFibGUgbnVtYmVyXG4gICAgY29weS5xdWVzdGlvbk51bWJlciA9IGVsZW1lbnRzLmxlbmd0aCArIDE7XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuYWRkRWxlbWVudChjb3B5KTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhZ2dlZElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgdXBkYXRlQm9va1N1YnRleHQoa2V5OiAnZW5kcG9pbnQnIHwgJ3ZhcmlhYmxlJyB8ICdkZWZhdWx0RmllbGQnLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5ib29rU3VidGV4dC51cGRhdGUoKHMpID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgW2tleV06IHZhbHVlLFxuICAgIH0pKTtcbiAgfSAgXG4gIHRyYWNrQnlQcm9wKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGl0ZW0/LmtleSA/PyBpbmRleDtcbiAgfVxuICAvLyBBZGQgdGhlc2UgZ2V0dGVyIG1ldGhvZHNcbiAgZ2V0IGN1cnJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRWxlbWVudCgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRFbGVtZW50VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RWxlbWVudD8udHlwZTtcbiAgfVxuXG4gIGdldCBpc1RhYmxlRWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RWxlbWVudFR5cGUgPT09ICdUYWJsZSc7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRDb2x1bW5JZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RDb2x1bW4oKTtcbiAgfVxuICBnZXRPcHRpbWl6ZWRTdWJQcm9wVmFsdWUoc3ViUHJvcDogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5jdXJyZW50RWxlbWVudDtcbiAgICBpZiAodGhpcy5pc1RhYmxlRWxlbWVudCAmJiAoc3ViUHJvcC50YXJnZXRBcnJheSB8fCBzdWJQcm9wLmlzVGFibGVDb2x1bW4pKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZUJ5QXJyYXlQYXRoKFxuICAgICAgICBzdWJQcm9wLnRhcmdldEFycmF5LCBcbiAgICAgICAgc3ViUHJvcC50YXJnZXRBcnJheUtleSwgXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5JZCwgXG4gICAgICAgIHN1YlByb3Aua2V5LCBcbiAgICAgICAgc3ViUHJvcC5pc1RhYmxlQ29sdW1uXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgZWxlbWVudCk7XG4gIH1cbn0iLCI8IS0tIEFQIDIySkFOMjUgLSBGaWVsZCBhbmQgRWxlbWVudCBQcm9wZXJ0aWVzIC0tPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiKCkgPT09ICdhdHRyaWJ1dGVzJ31cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdhdHRyaWJ1dGVzJylcIj5BdHRyaWJ1dGVzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiKCkgPT09ICdwcm9wZXJ0eSd9XCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYigncHJvcGVydHknKVwiPlByb3BlcnR5PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiKCkgPT09ICdhcHBlYXJhbmNlJ31cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdhcHBlYXJhbmNlJylcIj5BcHBlYXJhbmNlPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwiYWN0aXZlVGFiKCkgPT09ICdhdHRyaWJ1dGVzJ1wiPlxuICAgIEBkZWZlciAod2hlbiBnZXRQcm9wZXJ0aWVzKCkpIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIEBkZWZlciAod2hlbiBzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ0ltYWdlJykge1xuICAgICAgICAgIDxpbWFnZS1jcm9wcGVyXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRWxlbWVudCgpLmltYWdlRGF0YVwiXG4gICAgICAgICAgICBbaW1hZ2VCYXNlNjRdPVwic2VsZWN0ZWRFbGVtZW50KCkub3JnSW1hZ2VEYXRhXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbYWxpZ25JbWFnZV09XCJhbGlnbkltYWdlXCJcbiAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwicm91bmRDcm9wcGVyXCJcbiAgICAgICAgICAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJ3doaXRlJ1wiXG4gICAgICAgICAgICBpbWFnZUFsdFRleHQ9XCJBbHRlcm5hdGl2ZSBpbWFnZSB0ZXh0XCJcbiAgICAgICAgICAgIFthbGxvd01vdmVJbWFnZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZVJlc2l6ZVNxdWFyZXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2NhbnZhc1JvdGF0aW9uXT1cImNhbnZhc1JvdGF0aW9uKClcIlxuICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cImFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAgIFtjb250YWluV2l0aGluQXNwZWN0UmF0aW9dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW21haW50YWluQXNwZWN0UmF0aW9dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Nyb3BwZXJTdGF0aWNXaWR0aF09XCJjcm9wcGVyU3RhdGljV2lkdGhcIlxuICAgICAgICAgICAgW2Nyb3BwZXJTdGF0aWNIZWlnaHRdPVwiY3JvcHBlclN0YXRpY0hlaWdodFwiXG4gICAgICAgICAgICBbY3JvcHBlck1pbldpZHRoXT1cImNyb3BwZXJNaW5XaWR0aFwiXG4gICAgICAgICAgICBbY3JvcHBlck1pbkhlaWdodF09XCJjcm9wcGVyTWluSGVpZ2h0XCJcbiAgICAgICAgICAgIFtjcm9wcGVyTWF4V2lkdGhdPVwiY3JvcHBlck1heFdpZHRoXCJcbiAgICAgICAgICAgIFtjcm9wcGVyTWF4SGVpZ2h0XT1cImNyb3BwZXJNYXhIZWlnaHRcIlxuICAgICAgICAgICAgW3Jlc2V0Q3JvcE9uQXNwZWN0UmF0aW9DaGFuZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbKGNyb3BwZXIpXT1cImNyb3BwZXJcIlxuICAgICAgICAgICAgWyh0cmFuc2Zvcm0pXT1cInRyYW5zZm9ybVwiXG4gICAgICAgICAgICBbb25seVNjYWxlRG93bl09XCJ0cnVlXCJcbiAgICAgICAgICAgIG91dHB1dD1cImJsb2JcIlxuICAgICAgICAgICAgZm9ybWF0PVwicG5nXCJcbiAgICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIlxuICAgICAgICAgICAgKGNyb3BwZXJSZWFkeSk9XCJjcm9wcGVyUmVhZHkoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvaW1hZ2UtY3JvcHBlcj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50KCkuaW1hZ2VEYXRhXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDJweDtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwicm90YXRlTGVmdCgpXCIgdGl0bGU9XCJSb3RhdGUgTGVmdFwiPuKfsjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJyb3RhdGVSaWdodCgpXCIgdGl0bGU9XCJSb3RhdGUgUmlnaHRcIj7in7M8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiem9vbU91dCgpXCIgdGl0bGU9XCJab29tIE91dFwiPi08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiem9vbUluKClcIiB0aXRsZT1cIlpvb20gSW5cIj4rPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cIm1vdmVMZWZ0KClcIiB0aXRsZT1cIk1vdmUgTGVmdFwiPuKGkDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlUmlnaHQoKVwiIHRpdGxlPVwiTW92ZSBSaWdodFwiPuKGkjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlVXAoKVwiIHRpdGxlPVwiTW92ZSBVcFwiPuKGkTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlRG93bigpXCIgdGl0bGU9XCJNb3ZlIERvd25cIj7ihpM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiZmxpcEhvcml6b250YWwoKVwiIFtuZ0NsYXNzXT1cInsnZW5hYmxlZCc6IHRyYW5zZm9ybSgpLmZsaXBIfVwiIHRpdGxlPVwiRmxpcCBIb3Jpem9udGFsbHlcIj7ihpQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiZmxpcFZlcnRpY2FsKClcIiBbbmdDbGFzc109XCJ7J2VuYWJsZWQnOiB0cmFuc2Zvcm0oKS5mbGlwVn1cIiB0aXRsZT1cIkZsaXAgVmVydGljYWxseVwiPuKGlTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJyZXNldEltYWdlKClcIiB0aXRsZT1cIlJlc2V0XCI+w5c8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdCb29rJ1wiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21cIj5TZWFyY2ggQm9vazwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cbiAgICAgICAgICAgIDxueHQtc2VhcmNoLWJveFxuICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwic2VsZWN0ZWRFbGVtZW50KClcIlxuICAgICAgICAgICAgICBbYXBpTWV0YV09XCJib29rU3VidGV4dCgpXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyVGV4dF09XCInU2VhcmNoLi4uJ1wiXG4gICAgICAgICAgICAgIChzZWFyY2hWYWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICAgID48L254dC1zZWFyY2gtYm94PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstaWNvblwiPlxuICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJsaW5rVG9nZ2xlRHJvcGRvd24oJGV2ZW50KVwiIGZpbGw9XCIjMDAwMDAwXCIgdmVyc2lvbj1cIjEuMVwiIGlkPVwiQ2FwYV8xXCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDQ1MCA0NTBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxuICAgICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMxOC4xNSwyMzAuMTk1bDc3LjkzNC03Ny45MzdjMzEuODk0LTMxLjg5MiwzMS44OTQtODMuNzgyLTAuMDA0LTExNS42NzRsLTEyLjY2LTEyLjY2XG4gICAgICAgICAgYy0zMS44OTMtMzEuODk2LTgzLjc4LTMxLjg5Ni0xMTUuNjc0LTAuMDA0bC03Ny45MzcsNzcuOTM0Yy0xNy41ODgsMTcuNTg4LTI1LjQ1Nyw0MS4yNjQtMjMuNjQ2LDY0LjMxMVxuICAgICAgICAgIGMtMjMuMDQ1LTEuODEzLTQ2LjcyMiw2LjA1Ni02NC4zMDgsMjMuNjQ3TDIzLjkyLDI2Ny43NDhjLTMxLjg5NCwzMS44ODktMzEuODk0LDgzLjc3OSwwLDExNS42NzRsMTIuNjY0LDEyLjY2MlxuICAgICAgICAgIGMzMS44OTMsMzEuODkzLDgzLjc4MywzMS44OTMsMTE1LjY3NCwwbDc3LjkzNS03Ny45MzZjMTcuNTkyLTE3LjU5LDI1LjQ1OS00MS4yNjYsMjMuNjQ3LTY0LjMwOVxuICAgICAgICAgIEMyNzYuODg0LDI1NS42NTQsMzAwLjU2LDI0Ny43ODMsMzE4LjE1LDIzMC4xOTV6IE0yMDIuNjUzLDI5MC42MDVsLTc3LjkzNiw3Ny45MzhjLTE2LjcwNSwxNi43MDMtNDMuODg5LDE2LjcwMy02MC41OSwwXG4gICAgICAgICAgbC0xMi42NjYtMTIuNjY2Yy0xNi43MDUtMTYuNzAxLTE2LjcwMy00My44ODUsMC02MC41OTRsNzcuOTM2LTc3LjkzMmMxNC4xNC0xNC4xNDEsMzUuNzc5LTE2LjMwNiw1Mi4yMjYtNi41MTZsLTMyLjMwMiwzMi4zMDdcbiAgICAgICAgICBjLTcuNjA2LDcuNjA0LTcuNjA2LDE5LjkzOCwwLDI3LjU0MWM3LjYwNSw3LjYwNywxOS45MzcsNy42MDcsMjcuNTQxLDBsMzIuMzA2LTMyLjMwM1xuICAgICAgICAgIEMyMTguOTU5LDI1NC44MjgsMjE2Ljc5NSwyNzYuNDY5LDIwMi42NTMsMjkwLjYwNXogTTIzOC4zODIsMjA5LjE2OWwzMi4yOTktMzIuMzA2YzcuNjA4LTcuNjAyLDcuNjA4LTE5LjkzNSwwLTI3LjUzOFxuICAgICAgICAgIGMtNy42MDQtNy42MS0xOS45MzYtNy42MS0yNy41NDEtMC4wMDRsLTMyLjMwMywzMi4zMDNjLTkuNzkxLTE2LjQ0Ni03LjYyNy0zOC4wODcsNi41MTQtNTIuMjI2bDc3LjkzNS03Ny45MzVcbiAgICAgICAgICBjMTYuNzA3LTE2LjcwNyw0My44OS0xNi43MDcsNjAuNTk0LDBsMTIuNjY0LDEyLjY2NGMxNi43MDUsMTYuNzA1LDE2LjcwNSw0My44ODYsMCw2MC41OTFsLTc3LjkzNiw3Ny45MzdcbiAgICAgICAgICBDMjc2LjQ2OCwyMTYuNzk3LDI1NC44MjgsMjE4Ljk1OSwyMzguMzgyLDIwOS4xNjl6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zNDMuNDY2LDI2MS40NjVjLTQ1LjI4NywwLTgyLDM2LjcxMy04Miw4MnMzNi43MTMsODIsODIsODJjNDUuMjg2LDAsODItMzYuNzEzLDgyLTgyUzM4OC43NTMsMjYxLjQ2NSwzNDMuNDY2LDI2MS40NjV6XG4gICAgICAgICAgIE0zNzIuNTA1LDMzMy41NjRsLTU2LjA0Niw1Ni4xMDRjLTAuMjM5LDAuMjM4LTAuNTM2LDAuNDEtMC44NjIsMC40OTZsLTIyLjMxNSw1Ljg1Yy0wLjY0OSwwLjE2OC0xLjM0Ny0wLjAyLTEuODIyLTAuNDk0XG4gICAgICAgICAgYy0wLjQ3Ny0wLjQ3OS0wLjY2Ni0xLjE3Mi0wLjQ5Ni0xLjgyNGw1LjgyNi0yMi4zMThjMC4wODQtMC4zMjYsMC4yNTYtMC42MjcsMC40OTQtMC44NjNsNTYuMDQ3LTU2LjEwNFxuICAgICAgICAgIGMwLjc0Mi0wLjc0MiwxLjk0NS0wLjc0NCwyLjY4OC0wLjAwMmw0LjU0OCw0LjU0MWMwLjczOSwwLjc0LDAuNzQxLDEuOTQzLDAsMi42ODhsLTM3LjQzMywzNy40NzFsNC43MDksNC43MDNsMzcuNDM1LTM3LjQ3MVxuICAgICAgICAgIGMwLjczOS0wLjc0MiwxLjk0LTAuNzQyLDIuNjgyLTAuMDAybDQuNTUsNC41NDFDMzczLjI1LDMzMS42MTcsMzczLjI1LDMzMi44MjIsMzcyLjUwNSwzMzMuNTY0eiBNMzk1LjQ3MiwzMTAuNTc0bC0xNywxNy4wMThcbiAgICAgICAgICBjLTAuNzM5LDAuNzQ0LTEuOTQyLDAuNzQ0LTIuNjg1LDAuMDAybC0xNi40ODktMTYuNDc1Yy0wLjc0NC0wLjc0LTAuNzQ0LTEuOTQzLTAuMDAyLTIuNjg4bDE3LTE3LjAyXG4gICAgICAgICAgYzAuNzQxLTAuNzQsMS45NDQtMC43NCwyLjY4OC0wLjAwMmwxNi40ODcsMTYuNDc3QzM5Ni4yMTYsMzA4LjYyOSwzOTYuMjE2LDMwOS44MzIsMzk1LjQ3MiwzMTAuNTc0elwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstZHJvcGRvd24tbWVudVwiICpuZ0lmPVwiaXNMaW5rRHJvcGRvd25PcGVuKClcIiAjZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPGxhYmVsPkVuZHBvaW50OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYm9va1N1YnRleHQoKS5lbmRwb2ludFwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUJvb2tTdWJ0ZXh0KCdlbmRwb2ludCcsICRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbD5WYXJpYWJsZTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cImJvb2tTdWJ0ZXh0KCkudmFyaWFibGVcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVCb29rU3VidGV4dCgndmFyaWFibGUnLCAkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWw+RmllbGQ6PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbbmdNb2RlbF09XCJmaWVsZEFzU3RyaW5nKClcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVGaWVsZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWw+RGVmYXVsdCBGaWVsZDo8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cImJvb2tTdWJ0ZXh0KCkuZGVmYXVsdEZpZWxkXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQm9va1N1YnRleHQoJ2RlZmF1bHRGaWVsZCcsICRldmVudClcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCk/LmVsZW1lbnRQcm9wczsgdHJhY2tCeTogdHJhY2tCeVByb3BcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwicHJvcC50eXBlICE9PSAnY2hlY2tib3gnICYmIHByb3AudHlwZSAhPT0gJ3N1YlF1ZXN0aW9uJ1wiIGNsYXNzPVwidGV4dC1zbVwiPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnaGVscFRleHQnICYmIHNlbGVjdGVkRWxlbWVudCgpPy5oZWxwVGV4dFwiPnt7IHNlbGVjdGVkRWxlbWVudCgpPy5oZWxwVGV4dCB9fTwvZGl2PlxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaGVhZGVyU2VsZWN0KCkgPyBib29rKCkucmVjb3Jkc1swXS50aXRsZSA6IChzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4pID8gKGdldFZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCBwcm9wLmlzVGFibGVDb2x1bW4pKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpKVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhlYWRlclNlbGVjdCgpID8gdXBkYXRlVGl0bGUoJGV2ZW50KSA6IChzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4pID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksICRldmVudCwgcHJvcC5pc1RhYmxlQ29sdW1uKSA6IHNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQpKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5yZWFkLW9ubHldPVwic2VsZWN0ZWRFbGVtZW50KCk/LnJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInNlbGVjdGVkRWxlbWVudCgpPy5yZWFkT25seVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uKSA/IChnZXRWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgcHJvcC5pc1RhYmxlQ29sdW1uKSkgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KSlcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uKSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCAkZXZlbnQsIHByb3AuaXNUYWJsZUNvbHVtbikgOiBzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50KSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyAoZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgJGV2ZW50LCBwcm9wLmlzVGFibGVDb2x1bW4pIDogc2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudCkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KSkgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbiA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCAkZXZlbnQsIHByb3AuaXNUYWJsZUNvbHVtbikgOiBvblRvZ2dsZUNoYW5nZShwcm9wLmtleSwgJGV2ZW50KSkgOiBvblRvZ2dsZUNoYW5nZShwcm9wLmtleSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEwcHg7XCI+e3sgcHJvcC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3N1YlF1ZXN0aW9uJ1wiPlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsgZ2FwOiAxMHB4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgcHJvcC5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KSkgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksICRldmVudCwgcHJvcC5pc1RhYmxlQ29sdW1uKSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpKSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4gPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgcHJvcC5pc1RhYmxlQ29sdW1uKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN1YlByb3Agb2YgcHJvcC5zdWJRdWVzdGlvblwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2U3ZjJmZjsgcGFkZGluZzogOHB4OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3ViUHJvcC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdhcnJheSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZmlsdGVyZWRDb2x1bW5zKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzdWJQcm9wLm9wZXJhbmRzID8gc3ViUHJvcC5vcGVyYW5kcy5pbmNsdWRlcyhjb2x1bW4uYXBpTmFtZSkgOiBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHN1YlByb3Aua2V5LCBjb2x1bW4uYXBpTmFtZSwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLmFwaU5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViUHJvcC50eXBlID09PSAncmFkaW8nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGZpbHRlcmVkQ29sdW1ucygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic3ViUHJvcC5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW4uYXBpTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0VmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgc3ViUHJvcC5rZXkpID09PSBjb2x1bW4uYXBpTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHN1YlByb3Aua2V5LCBjb2x1bW4uYXBpTmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5hcGlOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICd0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdWJQcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyA/IChzdWJQcm9wLnRhcmdldEFycmF5ID8gZ2V0VmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgc3ViUHJvcC5rZXkpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBzdWJQcm9wLmtleSkpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBzdWJQcm9wLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHN1YlByb3AudGFyZ2V0QXJyYXkgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBzdWJQcm9wLmtleSwgJGV2ZW50KSA6IHNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQpKSA6IHNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdib29sZWFuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogc3ViUHJvcC5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQuY2hlY2tlZClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdzZWxlY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHN1YlByb3AudGFyZ2V0QXJyYXkgfHwgc3ViUHJvcC5pc1RhYmxlQ29sdW1uKSA/IChnZXRWYWx1ZUJ5QXJyYXlQYXRoKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBzdWJQcm9wLmtleSwgc3ViUHJvcC5pc1RhYmxlQ29sdW1uKSkgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHN1YlByb3Aua2V5KSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIihzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiAoc3ViUHJvcC50YXJnZXRBcnJheSB8fCBzdWJQcm9wLmlzVGFibGVDb2x1bW4pID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgc3ViUHJvcC5rZXksICRldmVudCwgc3ViUHJvcC5pc1RhYmxlQ29sdW1uKSA6IHNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQpKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc3ViUHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdjaGVja2JveCdcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHN1YlByb3Aua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2FsaWduJ1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgKGNsaWNrKT1cIm9uQWxpZ25TZWxlY3Qob3B0aW9uLnZhbHVlKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2VsZWN0ZWRFbGVtZW50KCk/LnRleHRBbGlnbiA9PT0gb3B0aW9uLnZhbHVlfVwiIFt0aXRsZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiJy4uL2Fzc2V0cy9pY29ucy8nICsgb3B0aW9uLmljb24gKyAnLnN2ZydcIiBbYWx0XT1cIm9wdGlvbi52YWx1ZVwiIGNsYXNzPVwiaWNvbi1zaXplXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdHlsZSdcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIChjbGljayk9XCJvblN0eWxlU2VsZWN0KG9wdGlvbi52YWx1ZSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzU3R5bGVBY3RpdmUob3B0aW9uLnZhbHVlKX1cIiBbdGl0bGVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIicuLi9hc3NldHMvaWNvbnMvJyArIG9wdGlvbi5pY29uICsgJy5zdmcnXCIgW2FsdF09XCJvcHRpb24udmFsdWVcIiBjbGFzcz1cImljb24tc2l6ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnY29sb3InXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyAoZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uKSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCAkZXZlbnQsIHByb3AuaXNUYWJsZUNvbHVtbikgOiBzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50KSlcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICd0aXRsZSdcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6IDIwcHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGROZXdCdXR0b24oKVwiIGNsYXNzPVwiYWRkLWJ1dHRvblwiPisgQWRkIEJ1dHRvbjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJvb2soKT8ucXVlc3Rpb25ib29rPy5hY3Rpb24gfHwgW107IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImJ1dHRvbi1jb25maWctY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+QnV0dG9uIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYnRuLm5hbWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICduYW1lJywgJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgYnV0dG9uIG5hbWVcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPkV2ZW50IE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYnRuLmV2ZW50dG9lbWl0XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnZXZlbnR0b2VtaXQnLCAkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJFdmVudCB0byBlbWl0XCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5BbHQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYnRuLmFsdFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ2FsdCcsICRldmVudClcIiBwbGFjZWhvbGRlcj1cIkJ1dHRvbiBhbHQgdGV4dFwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+RW5kcG9pbnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYnRuLmVuZHBvaW50XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnZW5kcG9pbnQnLCAkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJBUEkgZW5kcG9pbnRcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPk1ldGhvZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IFtuZ01vZGVsXT1cImJ0bi5tZXRob2RcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICdtZXRob2QnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJHRVRcIj5HRVQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlBPU1RcIj5QT1NUPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJQVVRcIj5QVVQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkRFTEVURVwiPkRFTEVURTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5CYWNrZ3JvdW5kIENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBbbmdNb2RlbF09XCJidG4uYmdDb2xvclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ2JnQ29sb3InLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5Cb3JkZXIgUmFkaXVzPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtaW49XCIwXCIgbWF4PVwiNTBcIiBbbmdNb2RlbF09XCJidG4uYm9yZGVyUmFkaXVzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnYm9yZGVyUmFkaXVzJywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuLmJvcmRlclJhZGl1cyB9fXB4PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+QnV0dG9uIFdpZHRoIChweCk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbbmdNb2RlbF09XCJidG4ud2lkdGhcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICd3aWR0aCcsICRldmVudClcIiBtaW49XCI1MFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgd2lkdGggaW4gcHhcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPlRleHQgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFtuZ01vZGVsXT1cImJ0bi50ZXh0Q29sb3JcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICd0ZXh0Q29sb3InLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5Qb3NpdGlvbiAoJSk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1pbj1cIjBcIiBtYXg9XCIxMDBcIiBbbmdNb2RlbF09XCJidG4ucG9zaXRpb25QZXJjZW50XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAncG9zaXRpb25QZXJjZW50JywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuLnBvc2l0aW9uUGVyY2VudCB9fSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlQnV0dG9uKGJ0bilcIiBjbGFzcz1cInJlbW92ZS1idXR0b25cIj7DlyBSZW1vdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwiYWN0aXZlVGFiKCkgPT09ICdwcm9wZXJ0eSdcIj5cbiAgICBAZGVmZXIgKHdoZW4gZ2V0UHJvcGVydGllcygpKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8bGFiZWw+TGFiZWwgSWQ8L2xhYmVsPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiAxM3B4OyBwYWRkaW5nOiAxMXB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XCI+XG4gICAgICAgICAge3sgaGVhZGVyU2VsZWN0KCkgPyBib29rSWQoKSA6IHNlbGVjdGVkRWxlbWVudCgpPy5pZCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCk/LmZpZWxkUHJvcHM7IHRyYWNrQnk6IHRyYWNrQnlQcm9wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbCAgKm5nSWY9XCJwcm9wLnR5cGUgIT09ICdzdWJRdWVzdGlvbidcIiBjbGFzcz1cInRleHQtc21cIj57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICd0b2dnbGVHcm91cCdcIiBjbGFzcz1cInRvZ2dsZS1ncm91cFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzT3B0aW9uYWwnLCB0cnVlKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogJ2lzT3B0aW9uYWwnKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzT3B0aW9uYWwnLCAkZXZlbnQsIHRydWUpIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudCkpIDogb25Ub2dnbGVDaGFuZ2UoJ2lzT3B0aW9uYWwnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICBSZXF1aXJlZFxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzUmVhZE9ubHknLCB0cnVlKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogJ2lzUmVhZE9ubHknKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzUmVhZE9ubHknLCAkZXZlbnQsIHRydWUpIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudCkpIDogb25Ub2dnbGVDaGFuZ2UoJ2lzUmVhZE9ubHknLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICBSZWFkIE9ubHlcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbiA/IGdldFZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksICdpc0hpZGRlbicsIHRydWUpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiAnaXNIaWRkZW4nKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzSGlkZGVuJywgJGV2ZW50LCB0cnVlKSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpKSA6IG9uVG9nZ2xlQ2hhbmdlKCdpc0hpZGRlbicsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIElzIEhpZGVcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiBwcm9wLnR5cGUgPT09ICdjaGVja2JveCcgfHwgcHJvcC50eXBlID09PSAncmFkaW8nIHx8IHByb3Aua2V5ID09PSAnb3B0aW9ucydcIiBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tbGlzdFwiIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIiAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50LCBwcm9wLmtleSlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgc2VsZWN0Q29sdW1uKCkgPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKCdmaWVsZHNNZXRhJywgJ3VuaXF1ZUlkZW50aWZpZXInLCBzZWxlY3RDb2x1bW4oKSwgIHByb3Aua2V5LCB0cnVlKSA6IHNlbGVjdGVkRWxlbWVudCgpW3Byb3Aua2V5XSA7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cIm9wdGlvbi1pdGVtc1wiIFthdHRyLmRhdGEtaWRdPVwib3B0aW9uLmlkXCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIChkcmFnc3RhcnQpPVwib25EcmFnU3RhcnQoJGV2ZW50LCBvcHRpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbbmdNb2RlbF09XCJvcHRpb24udmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvcHRpb24udmFsdWUgPSAkZXZlbnRcIiBwbGFjZWhvbGRlcj1cIk9wdGlvblwiIGNsYXNzPVwib3B0aW9uc1wiIC8+XG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pY29ucy9UcmFzaC5zdmdcIiAoY2xpY2spPVwicmVtb3ZlT3B0aW9uKHNlbGVjdGVkRWxlbWVudCgpW3Byb3Aua2V5XSwgb3B0aW9uLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcmFnLWhhbmRsZVwiPuKYsDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZE9wdGlvbihzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiBzZWxlY3RDb2x1bW4oKSA/IGdldFZhbHVlQnlBcnJheVBhdGgoJ2ZpZWxkc01ldGEnLCAndW5pcXVlSWRlbnRpZmllcicsIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgdHJ1ZSkgOiBzZWxlY3RlZEVsZW1lbnQoKVtwcm9wLmtleV0pXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC12YXJpZW50XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGdcIj4rPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+QWRkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaGVhZGVyU2VsZWN0KCkgPyBib29rKCkucmVjb3Jkc1swXS50aXRsZSA6IChzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4pID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KSlcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoZWFkZXJTZWxlY3QoKSA/IHVwZGF0ZVRpdGxlKCRldmVudCkgOiAoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uKSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCAkZXZlbnQsIHByb3AuaXNUYWJsZUNvbHVtbikgOiBzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50KSlcIlxuICAgICAgICAgICAgICBbY2xhc3MucmVhZC1vbmx5XT1cInNlbGVjdGVkRWxlbWVudCgpPy5yZWFkT25seVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJzZWxlY3RlZEVsZW1lbnQoKT8ucmVhZE9ubHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdWJRdWVzdGlvbidcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0eWxlLXRvZ2dsZS1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlU3ViUXVlc3Rpb24ocHJvcClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZC1lbGVtZW50c1wiPlN1YiBUZXh0PC9kaXY+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImlzRXhwYW5kZWQgPyAnLi4vYXNzZXRzL2ljb25zL2Fycm93LWRvd24uc3ZnJyA6ICcuLi9hc3NldHMvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJUb2dnbGUgQXJyb3dcIiBjbGFzcz1cImFycm93LWljb25cIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0V4cGFuZGVkXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViUHJvcCBvZiBwcm9wLnN1YlF1ZXN0aW9uOyB0cmFja0J5OiB0cmFja0J5UHJvcFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2U3ZjJmZjsgcGFkZGluZzogOHB4OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3ViUHJvcC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3ViUHJvcC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRPcHRpbWl6ZWRTdWJQcm9wVmFsdWUoc3ViUHJvcClcIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChzdWJQcm9wLnRhcmdldEFycmF5IHx8IHN1YlByb3AuaXNUYWJsZUNvbHVtbikpID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUsIHN1YlByb3AuaXNUYWJsZUNvbHVtbikgOiBzZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MucmVhZC1vbmx5XT1cInNlbGVjdGVkRWxlbWVudCgpPy5yZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJzZWxlY3RlZEVsZW1lbnQoKT8ucmVhZE9ubHlcIiAvPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIDwhLS0gQVAtMDJBUFIyNSBSZW5kZXIgaW5wdXQgZmllbGQgb25seSBpZiBzdWJQcm9wLnR5cGUgaXMgJ2FycmF5JyAtLT5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ2FycmF5J1wiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInN1YlByb3AucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpXCIgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ2Jvb2xlYW4nXCIgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDEwcHg7XCI+e3sgcHJvcC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbiA/IGdldFZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCBwcm9wLmlzVGFibGVDb2x1bW4pIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSlcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4gPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgJGV2ZW50LCBwcm9wLmlzVGFibGVDb2x1bW4pIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudCkpIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3R5bGUtdG9nZ2xlLWhlYWRlclwiIChjbGljayk9XCJ0b2dnbGVTdHlsZVNlY3Rpb24oKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkLWVsZW1lbnRzXCI+U3R5bGU8L2Rpdj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaXNTdHlsZUV4cGFuZGVkKCkgPyAnLi4vYXNzZXRzL2ljb25zL2Fycm93LWRvd24uc3ZnJyA6ICcuLi9hc3NldHMvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnJ1wiIGFsdD1cIlRvZ2dsZSBBcnJvd1wiIGNsYXNzPVwiYXJyb3ctaWNvblwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzU3R5bGVFeHBhbmRlZCgpXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBwYWRkaW5nOiA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDtcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldFN0eWxlS2V5cygpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD57eyBrZXkgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIHNlbGVjdENvbHVtbigpID8gZ2V0VmFsdWVCeUFycmF5UGF0aCgnZmllbGRzTWV0YScsICd1bmlxdWVJZGVudGlmaWVyJywgc2VsZWN0Q29sdW1uKCksJ3N0eWxlLicgKyBrZXksIHRydWUpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiAnc3R5bGUuJyArIGtleSlcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgc2VsZWN0Q29sdW1uKCkgKSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgoJ2ZpZWxkc01ldGEnLCAndW5pcXVlSWRlbnRpZmllcicsIHNlbGVjdENvbHVtbigpLCAnc3R5bGUuJyArIGtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSwgdHJ1ZSkgOiBzZXRWYWx1ZUJ5UGF0aCgnc3R5bGUuJyArIGtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIge3sga2V5IH19XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgKm5nSWY9XCJhY3RpdmVUYWIoKSA9PT0gJ2FwcGVhcmFuY2UnXCI+XG4gICAgQGRlZmVyICh3aGVuIGdldFByb3BlcnRpZXMoKSkge1xuICAgICAgPGRpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCk/LmFwcGVhcmFuY2U7IHRyYWNrQnk6IHRyYWNrQnlQcm9wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21cIj57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyAoZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgJGV2ZW50LCBwcm9wLmlzVGFibGVDb2x1bW4pIDogc2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudCkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5XCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudClcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdjb2xvcidcIiBjbGFzcz1cImNvbG9yLXNlbGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRFbGVtZW50KCk/LmZvbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aCgnZm9udENvbG9yJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2NvbG9yJ1wiIGNsYXNzPVwiaGV4LWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPkhFWCBDb2RlPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5XCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2J1dHRvbi10b2dnbGUnXCIgY2xhc3M9XCJidXR0b24tdG9nZ2xlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImR1cGxpY2F0ZUZpZWxkKHNlbGVjdGVkRWxlbWVudCgpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBZGQgRHVwbGljYXRlXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiICpuZ0lmPVwiIXRlbXBsYXRlU2VsZWN0ZWRcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ0blwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnRuXCIgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCIgKm5nSWY9XCJ0ZW1wbGF0ZVNlbGVjdGVkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAyMHB4O1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIChjbGljayk9XCJoYW5kbGVUZW1wbGF0ZVNhdmUoKVwiPlNhdmUgVGVtcGxhdGU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
938
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYnVpbGRlci9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL3BhZ2VzL2J1aWxkZXIvcHJvcGVydGllcy9wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZLLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLN0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMscUZBQXFGO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBdUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUVySyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBRXBELDBDQUEwQztBQU0xQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFNBQVMsQ0FBQyxHQUFRLEVBQUUsSUFBWSxFQUFFLGVBQW9CLEVBQUU7UUFDdEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLFlBQVksQ0FBQztRQUN2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QkFBZ0I7MEJBQXhCLEtBQUs7b0JBQ08sbUJBQW1COzBCQUEvQixLQUFLO29CQUdJLGlCQUFpQjswQkFBMUIsTUFBTTtvQkFDRyxtQkFBbUI7MEJBQTVCLE1BQU07b0JBRW1DLFFBQVE7MEJBQWpELFNBQVM7MkJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtvQkFzMkJ4QyxjQUFjOzBCQURiLFlBQVk7MkJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBzaWduYWwsIGNvbXB1dGVkLCBlZmZlY3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbWFnZS1jcm9wcGVyL2NvbXBvbmVudC9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOeHRTZWFyY2hCb3ggfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3NlYXJjaC1ib3gvc2VhcmNoLWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IENyb3BwZXJQb3NpdGlvbiwgRGltZW5zaW9ucywgSW1hZ2VUcmFuc2Zvcm0gfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2ltYWdlLWNyb3BwZXIvaW50ZXJmYWNlcyc7XG4vL0FQLTI1SlVOMjUtSW1wb3J0aW5nIGNvbW1vbiBjb25zdGFudHMgZm9yIGVsZW1lbnQsIGZpZWxkLCBhbmQgYXBwZWFyYW5jZSBwcm9wZXJ0aWVzXG5pbXBvcnQgeyBDT01NT05fRUxFTUVOVF9QUk9QUywgQ09NTU9OX09QVElPTlNfRklFTEQsIENPTU1PTl9GSUVMRF9QUk9QUywgQ09NTU9OX0FQUEVBUkFOQ0VfUFJPUFMsIENPTU1PTl9DT0xVTU5fRklFTEQgfSBmcm9tICcuLi9wcm9wZXJ0aWVzL2NvbW1vbi1maWVsZHMuY29uc3RhbnRzJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBDdXN0b20gcGlwZSBmb3IgcGF0aC1iYXNlZCB2YWx1ZSBhY2Nlc3NcbkBQaXBlKHtcbiAgbmFtZTogJ2dldFZhbHVlQnlQYXRoJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBHZXRWYWx1ZUJ5UGF0aFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKG9iajogYW55LCBwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogYW55ID0gJycpOiBhbnkge1xuICAgIGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChvLCBrKSA9PiBvPy5ba10gPz8gZGVmYXVsdFZhbHVlLCBvYmopO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9wZXJ0aWVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEltYWdlQ3JvcHBlckNvbXBvbmVudCwgTnh0U2VhcmNoQm94LCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgR2V0VmFsdWVCeVBhdGhQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9wZXJ0aWVzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydGllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHRlbXBsYXRlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkRWxlbWVudFR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50VHlwZVNpZy5zZXQodmFsdWUpO1xuICB9XG4gIEBPdXRwdXQoKSBmb3JtQnV0dG9uSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgdGVtcGxhdGVTYXZlSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duITogRWxlbWVudFJlZjtcblxuICAvLyBTaWduYWxzIGZvciByZWFjdGl2ZSBzdGF0ZVxuICBzZWxlY3RlZEVsZW1lbnRUeXBlU2lnID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBzZWxlY3RlZEVsZW1lbnQgPSBzaWduYWw8YW55PihudWxsKTtcbiAgc2VsZWN0ZWRFbGVtZW50SW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG4gIGhlYWRlclNlbGVjdCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGJvb2sgPSBzaWduYWw8YW55PihudWxsKTtcbiAgYm9va0lkID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIGFjdGl2ZVRhYiA9IHNpZ25hbDxzdHJpbmc+KCdhdHRyaWJ1dGVzJyk7XG4gIHNlbGVjdENvbHVtbiA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICB0cmFuc2Zvcm0gPSBzaWduYWw8SW1hZ2VUcmFuc2Zvcm0+KHtcbiAgICB0cmFuc2xhdGVVbml0OiAncHgnLFxuICAgIHNjYWxlOiAxLFxuICAgIHJvdGF0ZTogMCxcbiAgICBmbGlwSDogZmFsc2UsXG4gICAgZmxpcFY6IGZhbHNlLFxuICAgIHRyYW5zbGF0ZUg6IDAsXG4gICAgdHJhbnNsYXRlVjogMFxuICB9KTtcbiAgY2FudmFzUm90YXRpb24gPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgY3JvcHBlciA9IHNpZ25hbDxDcm9wcGVyUG9zaXRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0xpbmtEcm9wZG93bk9wZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBlcnJvck1lc3NhZ2UgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIGJvb2tTdWJ0ZXh0ID0gc2lnbmFsKHtcbiAgICBlbmRwb2ludDogJ2h0dHBzOi8vZGV2LWFwaS52YWxhcmhyLmNvbS9ueHQnLFxuICAgIHZhcmlhYmxlOiBudWxsLFxuICAgIGZpZWxkOiBbJ2xhYmVsJywgJ25hbWUnXSxcbiAgICBkZWZhdWx0RmllbGQ6ICdsYWJlbCdcbiAgfSk7XG4gIGlzU3R5bGVFeHBhbmRlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGNyb3BwZXJNYXhIZWlnaHQgPSAwO1xuICBjcm9wcGVyTWF4V2lkdGggPSAwO1xuICBjcm9wcGVyTWluSGVpZ2h0ID0gMDtcbiAgY3JvcHBlck1pbldpZHRoID0gMDtcbiAgY3JvcHBlclN0YXRpY1dpZHRoID0gMDtcbiAgY3JvcHBlclN0YXRpY0hlaWdodCA9IDA7XG4gIGFzcGVjdFJhdGlvID0gNCAvIDM7XG4gIHJvdW5kQ3JvcHBlciA9IGZhbHNlO1xuICBpc0V4cGFuZGVkOiBCb29sZWFuID0gZmFsc2VcbiAgYWxpZ25JbWFnZSA9ICdjZW50ZXInIGFzIGNvbnN0O1xuICBlbGVtZW50VHlwZSA9IFsnSGVhZGVyJywnTGluZScsJ1NwYWNlJywnVGFibGUnLCdUYWJsZUNvbHVtbicsJ0NoZWNrYm94JywnRHJvcGRvd24nLCdSYWRpbycsXCJUZXh0XCIsIFwiQ2FsZW5kYXJcIiwgXCJEYXRlXCIsIFwiVGltZVwiLCBcIkRhdGVUaW1lXCIsIFwiRW1haWxcIiwgXCJCb29rXCIsIFwiTGlzdFwiLCBcIlRleHRBcmVhXCIsIFwiUmljaFRleHRBcmVhXCIsIFwiTnVtYmVyXCIsIFwiSW1hZ2VcIiwgXCJMYWJlbFwiLCBcIkJvb2xlYW5cIiwgXCJGaWxlXCIsIFwiSWNvblwiLCAnQnV0dG9uJ11cblxuICAvLyBBZGQgdGhlc2UgcHJvcGVydGllcyB0byB5b3VyIGNvbXBvbmVudCBjbGFzc1xuICBwcml2YXRlIF9jYWNoZWRQcm9wZXJ0aWVzOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0U2VsZWN0ZWRFbGVtZW50OiBhbnkgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0U2VsZWN0ZWRDb2x1bW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8vIENvbXB1dGVkIHNpZ25hbHMgZm9yIG1lbW9pemF0aW9uXG4gIGZpZWxkQXNTdHJpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJvb2tTdWJ0ZXh0KCkuZmllbGQuam9pbignLCAnKSk7XG4gIGZpbHRlcmVkQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmaWVsZHNNZXRhID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQoKT8uZmllbGRzTWV0YSA/PyBbXTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmaWVsZHNNZXRhKVxuICAgICAgPyBmaWVsZHNNZXRhLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnVuaXF1ZUlkZW50aWZpZXIgIT09IHRoaXMuc2VsZWN0Q29sdW1uKCkpXG4gICAgICA6IFtdO1xuICB9KTtcblxuICAvLyBNZW1vaXplZCBwcm9wZXJ0aWVzXG4gIGVsZW1lbnRQcm9wZXJ0aWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jcmVhdGVFbGVtZW50UHJvcGVydGllcygpKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyU2VydmljZTogRm9ybUJ1aWxkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVtcGxhdGVTZXJ2aWNlOiBUZW1wbGF0ZVNlcnZpY2VcbiAgKSB7fVxuICBcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc2VsZWN0SGVhZGVyU3ViamVjdCQuc3Vic2NyaWJlKGhlYWRlciA9PiB7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnNldCh7IHR5cGU6IGhlYWRlciB9KTtcbiAgICAgICAgdGhpcy5oZWFkZXJTZWxlY3Quc2V0KHRydWUpO1xuICAgICAgICBjb25zdCBib29rRGF0YSA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEJvb2soKTtcbiAgICAgICAgdGhpcy5ib29rLnNldChib29rRGF0YSk7XG4gICAgICAgIHRoaXMuYm9va0lkLnNldChib29rRGF0YT8ucmVjb3Jkc1swXT8uaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICBcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zZWxlY3RlZEVsZW1lbnQkLnN1YnNjcmliZShpbmRleCA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4LnNldChpbmRleCk7XG4gICAgICB0aGlzLmhlYWRlclNlbGVjdC5zZXQoZmFsc2UpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRFbGVtZW50cygpO1xuICAgICAgICBpZiAoIWVsZW1lbnRzIHx8ICFBcnJheS5pc0FycmF5KGVsZW1lbnRzKSB8fCBpbmRleCA+PSBlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQobnVsbCk7IC8vIFJlc2V0IHNlbGVjdGVkRWxlbWVudCBpZiBpbnZhbGlkXG4gICAgICAgICAgdGhpcy5zZWxlY3RDb2x1bW4uc2V0KG51bGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtZW50ID0geyAuLi5lbGVtZW50c1tpbmRleF0gfTsgLy8gU2FmZSB0byBzcHJlYWQgc2luY2Ugd2UgY2hlY2tlZFxuICAgICAgICBsZXQgZmllbGRzTWV0YSA9IGVsZW1lbnQ/LmZpZWxkc01ldGE7XG4gICAgICAgIGlmIChlbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZpZWxkc01ldGEgPSBBcnJheS5pc0FycmF5KGZpZWxkc01ldGEpXG4gICAgICAgICAgICAgID8gZmllbGRzTWV0YVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZmllbGRzTWV0YSB8fCAnW10nKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIGZpZWxkc01ldGE6JywgZSk7XG4gICAgICAgICAgICBmaWVsZHNNZXRhID0gW107XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0Q29sdW1uLnNldCh0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRTZWxlY3RUYWJsZUNvbHVtbigpID8/IG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0Q29sdW1uLnNldChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQoeyAuLi5lbGVtZW50LCBmaWVsZHNNZXRhIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc2V0KG51bGwpOyAvLyBSZXNldCBpZiBpbmRleCBpcyBpbnZhbGlkXG4gICAgICAgIHRoaXMuc2VsZWN0Q29sdW1uLnNldChudWxsKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudCgpO1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHN1YlRleHQgPSBlbGVtZW50LnN1YlRleHQ7XG4gICAgICAgIGlmICh0eXBlb2Ygc3ViVGV4dCA9PT0gJ3N0cmluZycgJiYgc3ViVGV4dC50cmltKCkgIT09ICcnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN1YlRleHQgPSBKU09OLnBhcnNlKHN1YlRleHQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgc3ViVGV4dDonLCBlKTtcbiAgICAgICAgICAgIHN1YlRleHQgPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN1YlRleHQgIT09ICdvYmplY3QnIHx8IHN1YlRleHQgPT09IG51bGwpIHtcbiAgICAgICAgICBzdWJUZXh0ID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN1YlRleHQgJiYgQXJyYXkuaXNBcnJheShzdWJUZXh0LmZpZWxkKSkge1xuICAgICAgICAgIHN1YlRleHQgPSB7IC4uLnN1YlRleHQsIGZpZWxkOiBzdWJUZXh0LmZpZWxkLmpvaW4oJywgJykgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ViVGV4dCAmJiBBcnJheS5pc0FycmF5KHN1YlRleHQucXVlcnlQYXJhbWV0ZXIpKSB7XG4gICAgICAgICAgc3ViVGV4dCA9IHsgLi4uc3ViVGV4dCwgcXVlcnlQYXJhbWV0ZXI6IHN1YlRleHQucXVlcnlQYXJhbWV0ZXIuam9pbignLCAnKSB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiAoeyAuLi5lbCwgc3ViVGV4dCB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUVsZW1lbnRQcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBIZWFkZXI6IHtcbiAgICAgICAgZWxlbWVudFByb3BzOiBbeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLCBrZXk6ICd0aXRsZScsIGlzVHJhbnNsYXRlOiB0cnVlIH1dLFxuICAgICAgfSxcbiAgICAgIC8vIEFQLTE5TUFSMjUgQWRkIExpbmUgUHJvcGVydHlcbiAgICAgIExpbmU6IHtcbiAgICAgICAgZWxlbWVudFByb3BzOiBbXG4gICAgICAgICAgeyBsYWJlbDogJ0xpbmUgV2lkdGgnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnc2l6ZScgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnUGFkZGluZyBUb3AnLCB0eXBlOiAnbnVtYmVyJywga2V5OiAncGFkZGluZ1RvcCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgcGFkZGluZyB0b3AnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ1BhZGRpbmcgQm90dG9tJywgdHlwZTogJ251bWJlcicsIGtleTogJ3BhZGRpbmdCb3R0b20nLCBwbGFjZWhvbGRlcjogJ0VudGVyIHBhZGRpbmcgYm90dG9tJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdMaW5lIFN0eWxlJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2xpbmVTdHlsZScsIG9wdGlvbnM6IFt7bGFiZWw6J1NvbGlkJyx2YWx1ZTonU29saWQnfSx7bGFiZWw6J0Rhc2hlZCcsdmFsdWU6J0Rhc2hlZCd9LHtsYWJlbDonRG90dGVkJyx2YWx1ZTonRG90dGVkJ31dIH1cbiAgICAgICAgXSxcbiAgICAgICAgZmllbGRQcm9wczogW11cbiAgICAgIH0sXG4gICAgICBTcGFjZToge1xuICAgICAgICBlbGVtZW50UHJvcHM6IFtcbiAgICAgICAgICB7IGxhYmVsOiAnRWxlbWVudCcsIHR5cGU6ICdudW1iZXInLCBrZXk6ICdxdWVzdGlvbk51bWJlcicgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdzaXplJyB9LFxuICAgICAgICBdLFxuICAgICAgICBmaWVsZFByb3BzOiBbXVxuICAgICAgfSxcbiAgICAgIFRhYmxlOiB7XG4gICAgICAgIGVsZW1lbnRQcm9wczogW1xuICAgICAgICAgIHsgbGFiZWw6ICdJcyBMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICdjaGVja2JveCcsIGtleTogJ3N0eWxlLnNob3dMYWJlbCcgfSxcbiAgICAgICAgICB7IGxhYmVsOiAncHJpbWFyeUtleScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICdjaGVja2JveCcsIGtleTogJ3ByaW1hcnlLZXknIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ3RhYmxlTmFtZScsIHBsYWNlaG9sZGVyOiAnRW1wbG95ZWUgRGV0YWlscycsIHR5cGU6ICd0ZXh0Jywga2V5OiAncXVlc3Rpb25UZXh0JyAsIGlzVHJhbnNsYXRlOiB0cnVlfSxcbiAgICAgICAgICB7IGxhYmVsOiAnaW5wdXRUZXh0QWxpZ25tZW50JywgcGxhY2Vob2xkZXI6ICdMZWZ0JywgdHlwZTogJ3RleHQnLCBrZXk6ICdpbnB1dFRleHRBbGlnbm1lbnQnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ3RhYmxlU2NhbGVTaXplJywgcGxhY2Vob2xkZXI6ICcwNiAtIEZ1bGwgU2NhbGUnLCB0eXBlOiAndGV4dCcsIGtleTogJ3RhYmxlU2NhbGVTaXplJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdpc05vc0luZGljYXRvcicsIHBsYWNlaG9sZGVyOiAnMDYgLSBGdWxsIFNjYWxlJywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAndGFibGVDb25maWcuaXNOb3NJbmRpY2F0b3InIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2lzUGFnaW5hdGlvbicsIHBsYWNlaG9sZGVyOiAnMDYgLSBGdWxsIFNjYWxlJywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAndGFibGVDb25maWcuaXNQYWdpbmF0aW9uJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdhZGRJbmxpbmVSZWNvcmQnLCBwbGFjZWhvbGRlcjogJzA2IC0gRnVsbCBTY2FsZScsIHR5cGU6ICdjaGVja2JveCcsIGtleTogJ3RhYmxlQ29uZmlnLmFkZElubGluZVJlY29yZCcgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnYWN0aW9uQnV0dG9uJywgcGxhY2Vob2xkZXI6ICcwNiAtIEZ1bGwgU2NhbGUnLCB0eXBlOiAnY2hlY2tib3gnLCBrZXk6ICd0YWJsZUNvbmZpZy5hY3Rpb25CdXR0b24nIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ3NlYXJjaEJhcicsIHBsYWNlaG9sZGVyOiAnMDYgLSBGdWxsIFNjYWxlJywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAndGFibGVDb25maWcuc2VhcmNoQmFyJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdpc0RlbGV0ZVJvdycsIHBsYWNlaG9sZGVyOiAnMDYgLSBGdWxsIFNjYWxlJywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAndGFibGVDb25maWcuaXNEZWxldGVSb3cnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2lzRWRpdFJvdycsIHBsYWNlaG9sZGVyOiAnMDYgLSBGdWxsIFNjYWxlJywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAndGFibGVDb25maWcuaXNFZGl0Um93JyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdpc0J1dHRvbnMnLCBwbGFjZWhvbGRlcjogJzA2IC0gRnVsbCBTY2FsZScsIHR5cGU6ICdjaGVja2JveCcsIGtleTogJ3RhYmxlQ29uZmlnLmlzQnV0dG9ucycgfSxcbiAgICAgICAgICB7IGxhYmVsOiAncm93Q2hvaWNlJywgcGxhY2Vob2xkZXI6ICcnLCB0eXBlOiAndGV4dCcsIGtleTogJ3Jvd0Nob2ljZScgfSxcbiAgICAgICAgICB7IGxhYmVsOiAncXVlc3Rpb25OdW1iZXInLCB0eXBlOiAnbnVtYmVyJywga2V5OiAncXVlc3Rpb25OdW1iZXInIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnc2l6ZScgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZmllbGRQcm9wczogW1xuICAgICAgICAgIHsgbGFiZWw6ICd0YWJsZUlkJywgcGxhY2Vob2xkZXI6ICdFbXBfVGFibGVfMDEnLCB0eXBlOiAndGV4dCcsIGtleTogJ3RhYmxlSWQnLCBpc1RyYW5zbGF0ZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdoZWxwVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgbWVzc2FnZScsIHR5cGU6ICd0ZXh0Jywga2V5OiAnaGVscFRleHQnLCBpc1RyYW5zbGF0ZTogdHJ1ZSB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdkZWZhdWx0VmFsdWUnLCBwbGFjZWhvbGRlcjogJ0RlZmF1bHQgVmFsdWUnLCB0eXBlOiAndGV4dCcsIGtleTogJ2RlZmF1bHRWYWx1ZSd9LFxuICAgICAgICAgIHsgbGFiZWw6ICdSZWZlcmVuY2UnLCBwbGFjZWhvbGRlcjogJ1JlZmVyZW5jZSBGaWVsZCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAncmVmZXJlbmNlRmllbGQnIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTdWIgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICdzdWJRdWVzdGlvbicsIGtleTogJ2lzU3ViVGV4dCcsXG4gICAgICAgICAgICBzdWJRdWVzdGlvbjogW1xuICAgICAgICAgICAgICB7IGxhYmVsOiAnRW5kIFBvaW50JywgcGxhY2Vob2xkZXI6ICdlbmRwb2ludCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAnc3ViVGV4dC5lbmRwb2ludCcgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ1ZhcmlhYmxlJywgcGxhY2Vob2xkZXI6ICd2YXJpYWJsZScsIHR5cGU6ICd0ZXh0Jywga2V5OiAnc3ViVGV4dC52YXJpYWJsZScgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ0ZpZWxkJywgcGxhY2Vob2xkZXI6ICdmaWVsZCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAnc3ViVGV4dC5maWVsZCcgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ1F1ZXJ5IFBhcmFtZXRlcicsIHBsYWNlaG9sZGVyOiAncXVlcnlQYXJhbWV0ZXInLCB0eXBlOiAndGV4dCcsIGtleTogJ3N1YlRleHQucXVlcnlQYXJhbWV0ZXInIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IEZpZWxkJywgcGxhY2Vob2xkZXI6ICdkZWZhdWx0RmllbGQnLCB0eXBlOiAndGV4dCcsIGtleTogJ3N1YlRleHQuZGVmYXVsdEZpZWxkJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnTGFiZWwgRmllbGQnLCBwbGFjZWhvbGRlcjogJ2xhYmVsRmllbGQnLCB0eXBlOiAndGV4dCcsIGtleTogJ3N1YlRleHQubGFiZWxGaWVsZCcgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ1ZhbHVlIEZpZWxkJywgcGxhY2Vob2xkZXI6ICd2YWx1ZUZpZWxkJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LnZhbHVlRmllbGQnIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdTb3VyY2UgUXVlc3Rpb24gSWQnLCBwbGFjZWhvbGRlcjogJ3NvdXJjZVF1ZXN0aW9uSWQnLCB0eXBlOiAndGV4dCcsIGtleTogJ3N1YlRleHQuc291cmNlUXVlc3Rpb25JZCcgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ0RlcGVuZGVudCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnZGVwZW5kZW50VmFsdWUnLCB0eXBlOiAndGV4dCcsIGtleTogJ3N1YlRleHQuZGVwZW5kZW50VmFsdWUnIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdEZXBlbmRlbnQgRmllbGQnLCBwbGFjZWhvbGRlcjogJ2lzRGVwZW5kZW50RmllbGQnLCB0eXBlOiAnYm9vbGVhbicsIGtleTogJ3N1YlRleHQuaXNEZXBlbmRlbnRGaWVsZCcgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ1F1ZXJ5IEZpZWxkJywgcGxhY2Vob2xkZXI6ICdxdWVyeUZpZWxkJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LnF1ZXJ5RmllbGQnIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdRdWVyeSBWYWx1ZScsIHBsYWNlaG9sZGVyOiAncXVlcnlWYWx1ZScsIHR5cGU6ICd0ZXh0Jywga2V5OiAnc3ViVGV4dC5xdWVyeVZhbHVlJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnUXVlcnkgVmFsdWUgUmVmJywgcGxhY2Vob2xkZXI6ICdxdWVyeVZhbHVlUmVmJywgdHlwZTogJ3RleHQnLCBrZXk6ICdzdWJUZXh0LnF1ZXJ5VmFsdWVSZWZlcmVuY2UnIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdVbmlxdWUgS2V5JywgcGxhY2Vob2xkZXI6ICd1bmlxdWVLZXknLCB0eXBlOiAndGV4dCcsIGtleTogJ3N1YlRleHQudW5pcXVlS2V5JyB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFwcGVhcmFuY2U6IFtcbiAgICAgICAgICB7IGxhYmVsOiAnU2VsZWN0IEZvbnQnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnZm9udCcsIHBsYWNlaG9sZGVyOiAnTGVmdCcsIHJlcXVpcmVkOiB0cnVlLCBvcHRpb25zOiBbe2xhYmVsOidIZWx2ZXRpY2EgTmV1ZScsdmFsdWU6J0hlbHZldGljYSBOZXVlJ30se2xhYmVsOidBcmlhbCcsdmFsdWU6J0FyaWFsJ30se2xhYmVsOidUaW1lcyBOZXcgUm9tYW4nLHZhbHVlOidUaW1lcyBOZXcgUm9tYW4nfSx7bGFiZWw6J1JvYm90bycsdmFsdWU6J1JvYm90byd9XX0sXG4gICAgICAgICAgeyBsYWJlbDogJ0ZvbnQgQ29sb3InLCB0eXBlOiAnY29sb3InLCBrZXk6ICdmb250Q29sb3InLCBkZWZhdWx0VmFsdWU6ICcnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdGb250IFNpemUnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnZm9udFNpemUnLCBkZWZhdWx0VmFsdWU6ICcnLCByZXF1aXJlZDogdHJ1ZSwgb3B0aW9uczogW3sgbGFiZWw6ICdTbWFsbCcsIHZhbHVlOiAnMTJweCcgfSwgeyBsYWJlbDogJ01lZGl1bScsIHZhbHVlOiAnMTRweCcgfSwgeyBsYWJlbDogJ0xhcmdlJywgdmFsdWU6ICcxNnB4JyB9XX0sXG4gICAgICAgICAgeyBsYWJlbDogJ0ZvbnQgV2lkdGgnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnZm9udFdlaWdodCcsIGRlZmF1bHRWYWx1ZTogJycsIHJlcXVpcmVkOiB0cnVlLCBvcHRpb25zOiBbeyB2YWx1ZTogJzQwMCcsIGxhYmVsOiAnNDAwLU5vcm1hbCcgfSwgeyB2YWx1ZTogJzUwMCcsIGxhYmVsOiAnNTAwLU1lZGl1bScgfSwgeyB2YWx1ZTogJzYwMCcsIGxhYmVsOiAnNjAwLVNlbWkgQm9sZCcgfSwgeyB2YWx1ZTogJzcwMCcsIGxhYmVsOiAnNzAwLUJvbGQnIH1dfSxcbiAgICAgICAgICB7IGxhYmVsOiAnRHVwbGljYXRlIEZpZWxkJywgdHlwZTogJ2J1dHRvbi10b2dnbGUnLCBrZXk6ICdkdXBsaWNhdGVGaWVsZCcsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgVGFibGVDb2x1bW46IHtcbiAgICAgICAgZWxlbWVudFByb3BzOiBbXG4gICAgICAgICAgeyBsYWJlbDogJ1R5cGUnLCBwbGFjZWhvbGRlcjogJ1RleHQnLCB0eXBlOiAnc2VsZWN0JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnZmxkVHlwZScsIHJlcXVpcmVkOiB0cnVlICwgb3B0aW9uczogdGhpcy5lbGVtZW50VHlwZS5tYXAoZiA9PiAoeyBsYWJlbDogZiwgdmFsdWU6IGYgfSkpfSxcbiAgICAgICAgICB7IGxhYmVsOiAnaGVhZGVyTGFiZWxzJywgcGxhY2Vob2xkZXI6ICdFbXBsb3llZSBEZXRhaWxzJywgdHlwZTogJ3RleHQnLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdsYWJlbCcsIGlzVHJhbnNsYXRlOiB0cnVlIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2FwaU5hbWUnLCBwbGFjZWhvbGRlcjogJ0VtcGxveWVlIERldGFpbHMnLCB0eXBlOiAndGV4dCcsIHRhcmdldEFycmF5OiAnZmllbGRzTWV0YScsIHRhcmdldEFycmF5S2V5OiAndW5pcXVlSWRlbnRpZmllcicsIGtleTogJ2FwaU5hbWUnIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTdW1tYXJ5IENvbHVtbicsIHBsYWNlaG9sZGVyOiAnU3VtbWFyeSBDb2x1bW4nLCB0eXBlOiAnc3ViUXVlc3Rpb24nLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdzdW1tYXJ5Q29sdW1uJyxcbiAgICAgICAgICAgIHN1YlF1ZXN0aW9uOiBbXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdUeXBlJywgcGxhY2Vob2xkZXI6ICdFbXBsb3llZSBEZXRhaWxzJywgdHlwZTogJ3RleHQnLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdmbGRUeXBlJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnT3BlcmF0aW9uJywgcGxhY2Vob2xkZXI6ICdFbXBsb3llZSBEZXRhaWxzJywgdHlwZTogJ3RleHQnLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdvcGVyYXRpb24nIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdPcGVyYW5kcycsIHBsYWNlaG9sZGVyOiAnRW1wbG95ZWUgRGV0YWlscycsIHR5cGU6ICdhcnJheScsIHRhcmdldEFycmF5OiAnZmllbGRzTWV0YScsIHRhcmdldEFycmF5S2V5OiAndW5pcXVlSWRlbnRpZmllcicsIGtleTogJ29wZXJhbmRzJyB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTdW1tYXJ5IFJvdycsIHBsYWNlaG9sZGVyOiAnU3VtbWFyeSBSb3cnLCB0eXBlOiAnc3ViUXVlc3Rpb24nLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdzdW1tYXJ5Um93JyxcbiAgICAgICAgICAgIHN1YlF1ZXN0aW9uOiBbXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdUeXBlJywgcGxhY2Vob2xkZXI6ICdFbXBsb3llZSBEZXRhaWxzJywgdHlwZTogJ3RleHQnLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdmbGRUeXBlJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnb3BlcmF0aW9uJywgcGxhY2Vob2xkZXI6ICdvcGVyYXRpb24nLCB0eXBlOiAndGV4dCcsIHRhcmdldEFycmF5OiAnZmllbGRzTWV0YScsIHRhcmdldEFycmF5S2V5OiAndW5pcXVlSWRlbnRpZmllcicsIGtleTogJ29wZXJhdGlvbicgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ2NvbHVtbicsIHBsYWNlaG9sZGVyOiAnRW1wbG95ZWUgRGV0YWlscycsIHR5cGU6ICdyYWRpbycsIHRhcmdldEFycmF5OiAnZmllbGRzTWV0YScsIHRhcmdldEFycmF5S2V5OiAndW5pcXVlSWRlbnRpZmllcicsIGtleTogJ2NvbHVtbicgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ2NvbHVtbnMnLCBwbGFjZWhvbGRlcjogJ0VtcGxveWVlIERldGFpbHMnLCB0eXBlOiAnYXJyYXknLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdjb2x1bW5zJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnb3BlcmFuZHMnLCBwbGFjZWhvbGRlcjogJ0VtcGxveWVlIERldGFpbHMnLCB0eXBlOiAnYXJyYXknLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICdvcGVyYW5kcycgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgbGFiZWw6ICd0ZXh0QWxpZ25tZW50JywgcGxhY2Vob2xkZXI6ICdMZWZ0JywgdHlwZTogJ3RleHQnLCB0YXJnZXRBcnJheTogJ2ZpZWxkc01ldGEnLCB0YXJnZXRBcnJheUtleTogJ3VuaXF1ZUlkZW50aWZpZXInLCBrZXk6ICd0ZXh0QWxpZ25tZW50JyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdjb2x1bW5TY2FsZVNpemUnLCBwbGFjZWhvbGRlcjogJzA2IC0gRnVsbCBTY2FsZScsIHR5cGU6ICd0ZXh0JywgdGFyZ2V0QXJyYXk6ICdmaWVsZHNNZXRhJywgdGFyZ2V0QXJyYXlLZXk6ICd1bmlxdWVJZGVudGlmaWVyJywga2V5OiAnY29sdW1uU2NhbGVTaXplJyB9LFxuICAgICAgICBdLFxuICAgICAgICBmaWVsZFByb3BzOiBbXSxcbiAgICAgICAgYXBwZWFyYW5jZTogW11cbiAgICAgIH0sXG4gICAgICBDaGVja2JveDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKHsgY3VzdG9tRmllbGRQcm9wczogQ09NTU9OX09QVElPTlNfRklFTEQubWFwKG9wdCA9PiAoeyAuLi5vcHQsIHR5cGU6ICdjaGVja2JveCcgfSkpIH0pLFxuICAgICAgRHJvcGRvd246IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZyh7IGN1c3RvbUZpZWxkUHJvcHM6IENPTU1PTl9PUFRJT05TX0ZJRUxELm1hcChvcHQgPT4gKHsgLi4ub3B0LCB0eXBlOiAnZHJvcGRvd24nIH0pKSB9KSxcbiAgICAgIFJhZGlvOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoeyBjdXN0b21GaWVsZFByb3BzOiBDT01NT05fT1BUSU9OU19GSUVMRC5tYXAob3B0ID0+ICh7IC4uLm9wdCwgdHlwZTogJ2NoZWNrYm94JyB9KSkgfSksXG4gICAgICBUZXh0OiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIENhbGVuZGFyOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIERhdGU6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgVGltZTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBEYXRlVGltZTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBFbWFpbDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBCb29rOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIExpc3Q6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgVGV4dEFyZWE6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgUmljaFRleHRBcmVhOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIE51bWJlcjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBJbWFnZTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBMYWJlbDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgICBCb29sZWFuOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICAgIEZpbGU6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgICAgSWNvbjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksIC8vTVNNMTBKVUwyNSBpY29uIHNlbGVjdG9yIGVsZW1lbnRcbiAgICAgIEJ1dHRvbjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUVsZW1lbnRDb25maWcoY29uZmlnPzogeyBjdXN0b21FbGVtZW50UHJvcHM/OiBhbnlbXSwgY3VzdG9tRmllbGRQcm9wcz86IGFueVtdLCBjdXN0b21BcHBlYXJhbmNlUHJvcHM/OiBhbnlbXSB9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnRQcm9wczogWy4uLkNPTU1PTl9FTEVNRU5UX1BST1BTLCAuLi4oY29uZmlnPy5jdXN0b21FbGVtZW50UHJvcHMgfHwgW10pXSxcbiAgICAgIGZpZWxkUHJvcHM6IFsuLi5DT01NT05fRklFTERfUFJPUFMsIC4uLihjb25maWc/LmN1c3RvbUZpZWxkUHJvcHMgfHwgW10pXSxcbiAgICAgIGFwcGVhcmFuY2U6IFsuLi5DT01NT05fQVBQRUFSQU5DRV9QUk9QUywgLi4uKGNvbmZpZz8uY3VzdG9tQXBwZWFyYW5jZVByb3BzIHx8IFtdKV1cbiAgICB9O1xuICB9XG4gIC8vIEFQIDIzTUFZMjUgLSBBZGQgYSBuZXcgYnV0dG9uIHdpdGggZGVmYXVsdCBzdHlsaW5nXG4gIGFkZE5ld0J1dHRvbigpIHtcbiAgICBjb25zdCBsYXN0UGVyY2VudCA9IHRoaXMuYm9vaygpPy5xdWVzdGlvbmJvb2s/LmFjdGlvbj8uc2xpY2UoLTEpWzBdPy5wb3NpdGlvblBlcmNlbnQgPz8gMDtcbiAgICBjb25zdCBidXR0b25zID0ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBldmVudHRvZW1pdDogJycsXG4gICAgICBhbHQ6ICcnLFxuICAgICAgZW5kcG9pbnQ6ICcnLFxuICAgICAgbWV0aG9kOiAnJyxcbiAgICAgIGlkOiB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5hZGRFbGVtZW50V2l0aElkKCksXG4gICAgICBwb3NpdGlvblBlcmNlbnQ6IGxhc3RQZXJjZW50ICsgMTAsXG4gICAgICB3aWR0aDogMTAwLFxuICAgICAgYm9yZGVyUmFkaXVzOiA2LFxuICAgICAgYWxpZ25tZW50OiAnZmxleC1zdGFydCdcbiAgICB9O1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZVF1ZXN0aW9uQm9va0FjdGlvbkJ1dHRvbnMoYnV0dG9ucywgJ2FkZCcpO1xuICAgIHRoaXMuYm9vay51cGRhdGUoYm9vayA9PiAoeyAuLi5ib29rIH0pKTtcbiAgfVxuICAvL0FQIDIzTUFZMjUgLSBSZW1vdmUgYSBidXR0b24gZnJvbSB0aGUgYWN0aW9uIGxpc3QgXG4gIHJlbW92ZUJ1dHRvbihidG46IGFueSkge1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZVF1ZXN0aW9uQm9va0FjdGlvbkJ1dHRvbnMoYnRuLCAncmVtb3ZlJyk7XG4gICAgdGhpcy5ib29rLnVwZGF0ZShib29rID0+ICh7IC4uLmJvb2sgfSkpO1xuICB9XG4gIC8vQVAgMjNNQVkyNSAtIFVwZGF0ZSBhIHNwZWNpZmljIHByb3BlcnR5IG9mIGEgYnV0dG9uXG4gIG9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaW5kZXg6IG51bWJlciwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBidXR0b25zID0gdGhpcy5ib29rKCk/LnF1ZXN0aW9uYm9vaz8uYWN0aW9uID8/IFtdO1xuICAgIGlmIChidXR0b25zW2luZGV4XSkge1xuICAgICAgYnV0dG9uc1tpbmRleF1ba2V5XSA9IHZhbHVlO1xuICAgICAgdGhpcy5ib29rLnVwZGF0ZShib29rID0+ICh7IC4uLmJvb2ssIHF1ZXN0aW9uYm9vazogeyAuLi5ib29rLnF1ZXN0aW9uYm9vaywgYWN0aW9uOiBidXR0b25zIH0gfSkpO1xuICAgIH1cbiAgfVxuICAvL0FQLTEwTUFSMjUgVXBkYXRlcyB0aGUgdGl0bGUgdXNpbmcgdGhlIGZvcm0gYnVpbGRlciBzZXJ2aWNlICBcbiAgdXBkYXRlVGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZVRpdGxlKHZhbHVlKTtcbiAgICB0aGlzLmJvb2sudXBkYXRlKGJvb2sgPT4gKHtcbiAgICAgIC4uLmJvb2ssXG4gICAgICByZWNvcmRzOiBbeyAuLi5ib29rLnJlY29yZHNbMF0sIHRpdGxlOiB2YWx1ZSB9XVxuICAgIH0pKTtcbiAgfVxuXG4gIHZhbGlkYXRlSW5wdXQodmFsdWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGUgPT09ICdsYWJlbCcgfHwgdHlwZSA9PT0gJ3BsYWNlaG9sZGVyJykge1xuICAgICAgY29uc3QgcmVnZXggPSAvXlthLXpBLVowLTlcXHNdKiQvO1xuICAgICAgaWYgKCFyZWdleC50ZXN0KHZhbHVlKSkge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoJ09ubHkgbGV0dGVycyBhbmQgbnVtYmVycyBhcmUgYWxsb3dlZCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldCgnJyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB1cGRhdGVGaWVsZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5ib29rU3VidGV4dC51cGRhdGUoc3VidGV4dCA9PiAoe1xuICAgICAgLi4uc3VidGV4dCxcbiAgICAgIGZpZWxkOiB2YWx1ZS5zcGxpdCgnLCcpLm1hcChpdGVtID0+IGl0ZW0udHJpbSgpKVxuICAgIH0pKTtcbiAgfVxuXG4gIG9uQ2hlY2tib3hDaGFuZ2UodGFyZ2V0QXJyYXlQYXRoOiBhbnksIHRhcmdldEFycmF5S2V5OiBhbnksIGtleTogYW55LCBhcGlOYW1lOiBzdHJpbmcsIGlzQ2hlY2tlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IHRhcmdldEFycmF5ID0gdGhpcy5nZXREYXRhQnlQYXRoKHRhcmdldEFycmF5UGF0aCk7XG4gICAgY29uc3QgZm91bmRJdGVtID0gdGFyZ2V0QXJyYXkuZmluZChpdGVtID0+IGl0ZW1bdGFyZ2V0QXJyYXlLZXldID09PSB0aGlzLnNlbGVjdENvbHVtbigpKTtcbiAgICBmb3VuZEl0ZW1ba2V5XSA9IGZvdW5kSXRlbVtrZXldID8gZm91bmRJdGVtW2tleV0gOiBbXTtcbiAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICBpZiAoIWZvdW5kSXRlbVtrZXldLmluY2x1ZGVzKGFwaU5hbWUpKSB7XG4gICAgICAgIGZvdW5kSXRlbVtrZXldLnB1c2goYXBpTmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZm91bmRJdGVtW2tleV0uaW5kZXhPZihhcGlOYW1lKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZvdW5kSXRlbVtrZXldLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudCgpKTtcbiAgfVxuXG4gIHVwZGF0ZVByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgoKSA+PSAwKSB7XG4gICAgICBpZiAoa2V5ID09PSAncXVlc3Rpb25UZXh0JyB8fCBrZXkgPT09ICdxdWVzdGlvbicpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlSW5wdXQodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09ICdxdWVzdGlvbk51bWJlcicpIHtcbiAgICAgICAgLy9BUC0xME1BUjI1IENvbnZlcnQgdGhlIHZhbHVlIHRvIGFuIGludGVnZXIgIFxuICAgICAgICBjb25zdCBuZXdPcmRlciA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgIGlmIChpc05hTihuZXdPcmRlcikpIHJldHVybjtcblxuICAgICAgICAvL0FQLTEwTUFSMjUgVXBkYXRlIHRoZSBlbGVtZW50J3MgcXVlc3Rpb25OdW1iZXIgaW4gdGhlIGZvcm0gYnVpbGRlciBzZXJ2aWNlICBcbiAgICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4KCksIHsgcXVlc3Rpb25OdW1iZXI6IG5ld09yZGVyIH0pO1xuXG4gICAgICAgIC8vQVAtMTBNQVIyNSBTb3J0IGVsZW1lbnRzIGJhc2VkIG9uIHRoZSB1cGRhdGVkIHF1ZXN0aW9uTnVtYmVyICBcbiAgICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc29ydEVsZW1lbnRzQnlPcmRlcigpO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ2ZvbnQnIHx8IGtleSA9PT0gJ2ZvbnRXZWlnaHQnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiAoeyAuLi5lbCwgW2tleV06IHZhbHVlIH0pKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgW2tleV06IHZhbHVlIH07XG4gICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgoKSwgdXBkYXRlKTtcbiAgICB9XG4gIH1cblxuICBvblJhZGlvQ2hhbmdlKHRhcmdldEFycmF5UGF0aDogYW55LCB0YXJnZXRBcnJheUtleTogYW55LCBrZXk6IGFueSwgdmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICBsZXQgdGFyZ2V0QXJyYXkgPSB0aGlzLmdldERhdGFCeVBhdGgodGFyZ2V0QXJyYXlQYXRoKTtcbiAgICAgIGlmICh0eXBlb2YgdGFyZ2V0QXJyYXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGFyZ2V0QXJyYXkgPSBKU09OLnBhcnNlKHRhcmdldEFycmF5IHx8ICdbXScpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyB0YXJnZXRBcnJheTonLCBlKTtcbiAgICAgICAgICB0YXJnZXRBcnJheSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0QXJyYXkpKSByZXR1cm47XG4gICAgICBsZXQgZm91bmRJdGVtID0gdGFyZ2V0QXJyYXkuZmluZChpdGVtID0+IGl0ZW1bdGFyZ2V0QXJyYXlLZXldID09PSB0aGlzLnNlbGVjdENvbHVtbigpKTtcbiAgICAgIGlmICghZm91bmRJdGVtKSB7XG4gICAgICAgIGZvdW5kSXRlbSA9IHsgW3RhcmdldEFycmF5S2V5XTogdGhpcy5zZWxlY3RDb2x1bW4oKSB9O1xuICAgICAgICB0YXJnZXRBcnJheS5wdXNoKGZvdW5kSXRlbSk7XG4gICAgICB9XG4gICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICBsZXQgb2JqID0gZm91bmRJdGVtO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICBjb25zdCBrID0ga2V5c1tpXTtcbiAgICAgICAgaWYgKCFvYmpba10pIG9ialtrXSA9IHt9O1xuICAgICAgICBvYmogPSBvYmpba107XG4gICAgICB9XG4gICAgICBvYmpba2V5c1trZXlzLmxlbmd0aCAtIDFdXSA9IHZhbHVlO1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+ICh7XG4gICAgICAgIC4uLmVsLFxuICAgICAgICBmaWVsZHNNZXRhOiB0YXJnZXRBcnJheVxuICAgICAgfSkpO1xuICAgICAgdGhpcy51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFZhbHVlQnlQYXRoKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVxdWlyZWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQoKSkge1xuICAgICAgbGV0IGxhYmVsID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQoKS5sYWJlbCA/IHRoaXMuc2VsZWN0ZWRFbGVtZW50KCkubGFiZWwucmVwbGFjZSgvXFxzKlxcKiskLywgJycpIDogJ0xhYmVsJztcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBsYWJlbCA9IGAke2xhYmVsfSAqYDtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkoJ2xhYmVsJywgbGFiZWwpO1xuICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eSgnaXNPcHRpb25hbCcsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTdWJRdWVzdGlvbihwcm9wOiBhbnkpIHtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xuICB9XG5cbiAgdG9nZ2xlU3R5bGVTZWN0aW9uKCkge1xuICAgIHRoaXMuaXNTdHlsZUV4cGFuZGVkLnNldCghdGhpcy5pc1N0eWxlRXhwYW5kZWQoKSk7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudCgpO1xuICAgIGNvbnN0IHNlbGVjdGVkQ29sdW1uID0gdGhpcy5zZWxlY3RDb2x1bW4oKTtcbiAgICBcbiAgICAvLyBDaGVjayBpZiB3ZSBjYW4gdXNlIGNhY2hlZCByZXN1bHRcbiAgICBpZiAodGhpcy5fY2FjaGVkUHJvcGVydGllcyAmJiBcbiAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkRWxlbWVudCA9PT0gZWxlbWVudCAmJiBcbiAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkQ29sdW1uID09PSBzZWxlY3RlZENvbHVtbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZFByb3BlcnRpZXM7XG4gICAgfSAgICBcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2NhY2hlZFByb3BlcnRpZXMgPSBudWxsO1xuICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkRWxlbWVudCA9IG51bGw7XG4gICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRDb2x1bW4gPSBudWxsO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICBcbiAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICBcbiAgICBpZiAoZWxlbWVudC50eXBlID09PSAnSGVhZGVyJykge1xuICAgICAgcmVzdWx0ID0gdGhpcy5lbGVtZW50UHJvcGVydGllcygpWydIZWFkZXInXTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJyAmJiBzZWxlY3RlZENvbHVtbiAhPT0gbnVsbCkge1xuICAgICAgbGV0IGZpZWxkc01ldGEgPSBlbGVtZW50LmZpZWxkc01ldGE7XG4gICAgICB0cnkge1xuICAgICAgICBmaWVsZHNNZXRhID0gQXJyYXkuaXNBcnJheShmaWVsZHNNZXRhKVxuICAgICAgICAgID8gZmllbGRzTWV0YVxuICAgICAgICAgIDogSlNPTi5wYXJzZShmaWVsZHNNZXRhIHx8ICdbXScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIGZpZWxkc01ldGEgaW4gZ2V0UHJvcGVydGllczonLCBlKTtcbiAgICAgICAgZmllbGRzTWV0YSA9IFtdO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCBjb2x1bW4gPSBmaWVsZHNNZXRhLmZpbmQoKGM6IGFueSkgPT4gYy51bmlxdWVJZGVudGlmaWVyID09PSBzZWxlY3RlZENvbHVtbik7XG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIGNvbnN0IG1hcmtJc1RhYmxlQ29sdW1uID0gKGl0ZW1zOiBhbnlbXSA9IFtdKSA9PlxuICAgICAgICAgIGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0l0ZW0gPSB7IC4uLml0ZW0sIGlzVGFibGVDb2x1bW46IHRydWUgfTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5ld0l0ZW0uc3ViUXVlc3Rpb24pKSB7XG4gICAgICAgICAgICAgIG5ld0l0ZW0uc3ViUXVlc3Rpb24gPSBuZXdJdGVtLnN1YlF1ZXN0aW9uLm1hcChzdWIgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5zdWIsXG4gICAgICAgICAgICAgICAgaXNUYWJsZUNvbHVtbjogdHJ1ZVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3SXRlbTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICBlbGVtZW50UHJvcHM6IFtcbiAgICAgICAgICAgIC4uLih0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzKClbJ1RhYmxlQ29sdW1uJ10uZWxlbWVudFByb3BzIHx8IFtdKSxcbiAgICAgICAgICAgIC4uLm1hcmtJc1RhYmxlQ29sdW1uKHRoaXMuZWxlbWVudFByb3BlcnRpZXMoKVt0aGlzLmVsZW1lbnRUeXBlLmluY2x1ZGVzKGNvbHVtbi5mbGRUeXBlKSA/IGNvbHVtbi5mbGRUeXBlIDogJ1RleHQnXT8uZWxlbWVudFByb3BzKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZmllbGRQcm9wczogW1xuICAgICAgICAgICAgLi4uKHRoaXMuZWxlbWVudFByb3BlcnRpZXMoKVsnVGFibGVDb2x1bW4nXS5maWVsZFByb3BzIHx8IFtdKSxcbiAgICAgICAgICAgIC4uLm1hcmtJc1RhYmxlQ29sdW1uKHRoaXMuZWxlbWVudFByb3BlcnRpZXMoKVt0aGlzLmVsZW1lbnRUeXBlLmluY2x1ZGVzKGNvbHVtbi5mbGRUeXBlKSA/IGNvbHVtbi5mbGRUeXBlIDogJ1RleHQnXT8uZmllbGRQcm9wcylcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFwcGVhcmFuY2U6IFtcbiAgICAgICAgICAgIC4uLih0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzKClbJ1RhYmxlQ29sdW1uJ10uYXBwZWFyYW5jZSB8fCBbXSksXG4gICAgICAgICAgICAuLi5tYXJrSXNUYWJsZUNvbHVtbih0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzKClbdGhpcy5lbGVtZW50VHlwZS5pbmNsdWRlcyhjb2x1bW4uZmxkVHlwZSkgPyBjb2x1bW4uZmxkVHlwZSA6ICdUZXh0J10/LmFwcGVhcmFuY2UpXG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5lbGVtZW50UHJvcGVydGllcygpWydUYWJsZUNvbHVtbiddO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzKClbZWxlbWVudC50eXBlXTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2FjaGUgdGhlIHJlc3VsdFxuICAgIHRoaXMuX2NhY2hlZFByb3BlcnRpZXMgPSByZXN1bHQ7XG4gICAgdGhpcy5fbGFzdFNlbGVjdGVkRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5fbGFzdFNlbGVjdGVkQ29sdW1uID0gc2VsZWN0ZWRDb2x1bW47XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvLyBBZGQgbWV0aG9kIHRvIGNsZWFyIGNhY2hlIHdoZW4gbmVlZGVkXG4gIHByaXZhdGUgY2xlYXJQcm9wZXJ0aWVzQ2FjaGUoKSB7XG4gICAgdGhpcy5fY2FjaGVkUHJvcGVydGllcyA9IG51bGw7XG4gICAgdGhpcy5fbGFzdFNlbGVjdGVkRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5fbGFzdFNlbGVjdGVkQ29sdW1uID0gbnVsbDtcbiAgfVxuICAvLyBBUC0yOE1BUjI1IEFkZCBhbiBvcHRpb24gd2l0aCBhIHVuaXF1ZSBVVUlEXG4gIGFkZE9wdGlvbihvcHRpb25zOiBhbnlbXSkge1xuICAgIGNvbnN0IHVuaXF1ZV9pZCA9IHV1aWR2NCgpO1xuICAgIG9wdGlvbnMucHVzaCh7IGlkOiB1bmlxdWVfaWQsIHZhbHVlOiAnJyB9KTtcbiAgfVxuXG4gIC8vIEFQLTI4TUFSMjUgRnVuY3Rpb24gdG8gcmVtb3ZlIGFuIG9wdGlvbiBiYXNlZCBvbiBpdHMgdW5pcXVlIFVVSURcbiAgcmVtb3ZlT3B0aW9uKG9wdGlvbnM6IGFueVtdLCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaW5kZXggPSBvcHRpb25zLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uLmlkID09PSBpZCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgb3B0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUJ1dHRvbkNsaWNrKCkge1xuICAgIHRoaXMuZm9ybUJ1dHRvbkhhbmRsZXIuZW1pdCh0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5kb3dubG9hZEVsZW1lbnQoKSk7XG4gIH1cblxuICBoYW5kbGVUZW1wbGF0ZVNhdmUoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZVNhdmVIYW5kbGVyLmVtaXQodGhpcy50ZW1wbGF0ZVNlcnZpY2UuZG93bmxvYWQoKSk7XG4gIH1cblxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFjdGl2ZVRhYi5zZXQodGFiKTtcbiAgfVxuXG4gIG9uU2F2ZSgpIHt9XG5cbiAgb25DYW5jZWwoKSB7fVxuXG4gIG9uQWxpZ25TZWxlY3QodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiAoeyAuLi5lbCwgdGV4dEFsaWduOiB2YWx1ZSB9KSk7XG4gIH1cblxuICBvblN0eWxlU2VsZWN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHtcbiAgICAgIC4uLmVsLFxuICAgICAgc3R5bGVzOiBbdmFsdWVdXG4gICAgfSkpO1xuICB9XG5cbiAgaXNTdHlsZUFjdGl2ZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50KCk/LnN0eWxlcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0VmFsdWVCeVBhdGgocGF0aDogc3RyaW5nLCBvYmo6IGFueSA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50KCksIGRlZmF1bHRWYWx1ZTogYW55ID0gJycpOiBhbnkge1xuICAgIGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChvLCBrKSA9PiBvPy5ba10gPz8gZGVmYXVsdFZhbHVlLCBvYmopO1xuICB9XG4gIGlzQW5vdGhlcklkU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEVsZW1lbnRzKClcbiAgICAgIC5zb21lKChlbCwgaSkgPT4gaSAhPT0gdGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCgpICYmIGVsLnByaW1hcnlLZXkpO1xuICB9XG5cbiAgLy8gQWxzbyB1cGRhdGUgeW91ciBvblRvZ2dsZUNoYW5nZSBtZXRob2QgdG8gY2xlYXIgY2FjaGVcbm9uVG9nZ2xlQ2hhbmdlKHBhdGg6IHN0cmluZywgZXZlbnQ6IGFueSkge1xuICAvLyBDbGVhciBjYWNoZSB3aGVuIGVsZW1lbnQgY2hhbmdlc1xuICB0aGlzLmNsZWFyUHJvcGVydGllc0NhY2hlKCk7XG4gIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQgPyAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQgOiBldmVudDtcbiAgdGhpcy5zZXRWYWx1ZUJ5UGF0aChwYXRoLCBjaGVja2VkKTtcbiAgXG4gIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnKSB7XG4gICAgbGV0IGZpZWxkc01ldGEgPSB0aGlzLmdldERhdGFCeVBhdGgoJ2ZpZWxkc01ldGEnKTtcbiAgICBpZiAodHlwZW9mIGZpZWxkc01ldGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmaWVsZHNNZXRhID0gSlNPTi5wYXJzZShmaWVsZHNNZXRhIHx8ICdbXScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIGZpZWxkc01ldGE6JywgZSk7XG4gICAgICAgIGZpZWxkc01ldGEgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+ICh7XG4gICAgICAuLi5lbCxcbiAgICAgIGZpZWxkc01ldGE6IGZpZWxkc01ldGFcbiAgICB9KSk7XG4gICAgdGhpcy51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpO1xuICB9XG59XG5cbiAgLy8gVXBkYXRlIHlvdXIgc2V0VmFsdWVCeVBhdGggbWV0aG9kIHRvIGNsZWFyIGNhY2hlXG5zZXRWYWx1ZUJ5UGF0aChwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgLy8gQ2xlYXIgY2FjaGUgd2hlbiBlbGVtZW50IGNoYW5nZXNcbiAgdGhpcy5jbGVhclByb3BlcnRpZXNDYWNoZSgpO1xuICBcbiAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgoKSA+PSAwKSB7XG4gICAgaWYgKHBhdGggPT09ICdxdWVzdGlvblRleHQnIHx8IHBhdGggPT09ICdxdWVzdGlvbicpIHtcbiAgICAgIGlmICghdGhpcy52YWxpZGF0ZUlucHV0KHZhbHVlLCBwYXRoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYXRoID09PSAncXVlc3Rpb25OdW1iZXInKSB7XG4gICAgICBjb25zdCBuZXdPcmRlciA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICBpZiAoaXNOYU4obmV3T3JkZXIpKSByZXR1cm47XG4gICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgoKSwgeyBxdWVzdGlvbk51bWJlcjogbmV3T3JkZXIgfSk7XG4gICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zb3J0RWxlbWVudHNCeU9yZGVyKCk7XG4gICAgfVxuICAgIGlmIChwYXRoID09PSAnZm9udCcgfHwgcGF0aCA9PT0gJ2ZvbnRXZWlnaHQnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHsgLi4uZWwsIFtwYXRoXTogdmFsdWUgfSkpO1xuICAgIH1cbiAgfVxuICBcbiAgY29uc3QgZWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50KCk7XG4gIGlmIChlbGVtZW50KSB7XG4gICAgbGV0IHN1YlRleHQgPSBlbGVtZW50LnN1YlRleHQ7XG4gICAgaWYgKHR5cGVvZiBzdWJUZXh0ID09PSAnc3RyaW5nJyAmJiBzdWJUZXh0LnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN1YlRleHQgPSBKU09OLnBhcnNlKHN1YlRleHQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIHN1YlRleHQ6JywgZSk7XG4gICAgICAgIHN1YlRleHQgPSB7fTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdWJUZXh0ICE9PSAnb2JqZWN0JyB8fCBzdWJUZXh0ID09PSBudWxsKSB7XG4gICAgICBzdWJUZXh0ID0ge307XG4gICAgfVxuICAgIGlmIChzdWJUZXh0ICYmIEFycmF5LmlzQXJyYXkoc3ViVGV4dC5maWVsZCkpIHtcbiAgICAgIHN1YlRleHQgPSB7IC4uLnN1YlRleHQsIGZpZWxkOiBzdWJUZXh0LmZpZWxkLmpvaW4oJywgJykgfTtcbiAgICB9XG4gICAgaWYgKHN1YlRleHQgJiYgQXJyYXkuaXNBcnJheShzdWJUZXh0LnF1ZXJ5UGFyYW1ldGVyKSkge1xuICAgICAgc3ViVGV4dCA9IHsgLi4uc3ViVGV4dCwgcXVlcnlQYXJhbWV0ZXI6IHN1YlRleHQucXVlcnlQYXJhbWV0ZXIuam9pbignLCAnKSB9O1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4gKHsgLi4uZWwsIHN1YlRleHQgfSkpO1xuICB9XG4gIFxuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICB0aGlzLnNlbGVjdGVkRWxlbWVudC51cGRhdGUoZWwgPT4ge1xuICAgIGxldCBvYmogPSB7IC4uLmVsIH07XG4gICAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gICAga2V5cy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPT09IGtleXMubGVuZ3RoIC0gMSkge1xuICAgICAgICBjdXJyZW50W2tleV0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghY3VycmVudFtrZXldKSB7XG4gICAgICAgICAgY3VycmVudFtrZXldID0gaXNOYU4oTnVtYmVyKGtleXNbaW5kZXggKyAxXSkpID8ge30gOiBbXTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvYmo7XG4gIH0pO1xuICBcbiAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZWxlbWVudFVwZGF0ZSh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4KCksIHRoaXMuc2VsZWN0ZWRFbGVtZW50KCkpO1xufVxuXG4gIGdldFN0eWxlS2V5cygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLnNlbGVjdGVkRWxlbWVudCgpPy5zdHlsZTtcbiAgICByZXR1cm4gc3R5bGUgJiYgdHlwZW9mIHN0eWxlID09PSAnb2JqZWN0JyA/IE9iamVjdC5rZXlzKHN0eWxlKSA6IFtdO1xuICB9XG5cbiAgdXBkYXRlRWxlbWVudChlbGVtZW50OiBhbnkpIHtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5lbGVtZW50VXBkYXRlKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgoKSwgZWxlbWVudCk7XG4gICAgaWYgKGVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScgJiYgdGhpcy5zZWxlY3RDb2x1bW4oKSkge1xuICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCgpLCB7IHVuaXF1ZUlkZW50aWZpZXI6IHRoaXMuc2VsZWN0Q29sdW1uKCkgfHwgbnVsbCB9KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnNldCh7IC4uLmVsZW1lbnQgfSk7IC8vIEVuc3VyZSByZWFjdGl2ZSB1cGRhdGVcbiAgICB9XG4gIH1cblxuICBnZXRWYWx1ZUJ5QXJyYXlQYXRoKHRhcmdldEFycmF5UGF0aDogYW55LCB0YXJnZXRBcnJheUtleTogc3RyaW5nLCBzZWxlY3RDb2x1bW46IHN0cmluZywga2V5UGF0aDogc3RyaW5nLCBpc1RhYmxlQ29sdW1uOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuICAgIGlmIChpc1RhYmxlQ29sdW1uKSB7XG4gICAgICB0YXJnZXRBcnJheVBhdGggPSAnZmllbGRzTWV0YSc7XG4gICAgICB0YXJnZXRBcnJheUtleSA9ICd1bmlxdWVJZGVudGlmaWVyJztcbiAgICAgIGtleVBhdGggPSAncXVlc3Rpb24uJyArIGtleVBhdGg7XG4gICAgfVxuICAgIGxldCB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0RGF0YUJ5UGF0aCh0YXJnZXRBcnJheVBhdGgpO1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0QXJyYXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0YXJnZXRBcnJheSA9IEpTT04ucGFyc2UodGFyZ2V0QXJyYXkgfHwgJ1tdJyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgdGFyZ2V0QXJyYXk6JywgZSk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldEFycmF5KSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRhcmdldEFycmF5LmZpbmQoaXRlbSA9PiBpdGVtW3RhcmdldEFycmF5S2V5XSA9PT0gc2VsZWN0Q29sdW1uKTtcbiAgICByZXR1cm4gZm91bmRJdGVtID8ga2V5UGF0aC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCBrZXkpID0+IG9iaj8uW2tleV0sIGZvdW5kSXRlbSkgOiAnJztcbiAgfVxuICBcbiAgdXBkYXRlVmFsdWVCeUFycmF5UGF0aCh0YXJnZXRBcnJheVBhdGg6IGFueSwgdGFyZ2V0QXJyYXlLZXk6IHN0cmluZywgc2VsZWN0Q29sdW1uOiBzdHJpbmcsIGtleVBhdGg6IHN0cmluZywgZXZlbnQ6IGFueSwgaXNUYWJsZUNvbHVtbjogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgLy8gQ2xlYXIgY2FjaGUgd2hlbiBlbGVtZW50IGNoYW5nZXNcbiAgICB0aGlzLmNsZWFyUHJvcGVydGllc0NhY2hlKCk7XG4gICAgICAgIFxuICAgIGlmIChpc1RhYmxlQ29sdW1uKSB7XG4gICAgICB0YXJnZXRBcnJheVBhdGggPSAnZmllbGRzTWV0YSc7XG4gICAgICB0YXJnZXRBcnJheUtleSA9ICd1bmlxdWVJZGVudGlmaWVyJztcbiAgICAgIGtleVBhdGggPSAncXVlc3Rpb24uJyArIGtleVBhdGg7XG4gICAgfVxuICAgICAgICBcbiAgICBsZXQgdGFyZ2V0QXJyYXkgPSB0aGlzLmdldERhdGFCeVBhdGgodGFyZ2V0QXJyYXlQYXRoKTtcbiAgICBpZiAodHlwZW9mIHRhcmdldEFycmF5ID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGFyZ2V0QXJyYXkgPSBKU09OLnBhcnNlKHRhcmdldEFycmF5IHx8ICdbXScpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIHRhcmdldEFycmF5OicsIGUpO1xuICAgICAgICB0YXJnZXRBcnJheSA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0QXJyYXkpKSB7XG4gICAgICB0YXJnZXRBcnJheSA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+ICh7XG4gICAgICAgIC4uLmVsLFxuICAgICAgICBbdGFyZ2V0QXJyYXlQYXRoXTogdGFyZ2V0QXJyYXlcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgXG4gICAgbGV0IGZvdW5kSXRlbSA9IHRhcmdldEFycmF5LmZpbmQoaXRlbSA9PiBpdGVtW3RhcmdldEFycmF5S2V5XSA9PT0gc2VsZWN0Q29sdW1uKTtcbiAgICBpZiAoIWZvdW5kSXRlbSkge1xuICAgICAgZm91bmRJdGVtID0geyBbdGFyZ2V0QXJyYXlLZXldOiBzZWxlY3RDb2x1bW4gfTtcbiAgICAgIHRhcmdldEFycmF5LnB1c2goZm91bmRJdGVtKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3Qga2V5cyA9IGtleVBhdGguc3BsaXQoJy4nKTtcbiAgICBsZXQgb2JqID0gZm91bmRJdGVtO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoIW9ialtrZXldKSBvYmpba2V5XSA9IHt9O1xuICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzW2tleXMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgaW5wdXRFbGVtZW50OiBhbnkgPSBldmVudC50YXJnZXQgPyBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCA6IGV2ZW50O1xuICAgIG9ialtsYXN0S2V5XSA9IGlucHV0RWxlbWVudD8udHlwZSA9PT0gJ2NoZWNrYm94JyA/IGlucHV0RWxlbWVudC5jaGVja2VkIDogaW5wdXRFbGVtZW50LnZhbHVlID8gaW5wdXRFbGVtZW50LnZhbHVlIDogaW5wdXRFbGVtZW50O1xuICAgIFxuICAgIGlmIChrZXlQYXRoID09PSAnc3VtbWFyeUNvbHVtbicpIHtcbiAgICAgIGlmIChvYmpbJ3N1bW1hcnlSb3cnXSA9PT0gdHJ1ZSkge1xuICAgICAgICBvYmpbJ3N1bW1hcnlSb3cnXSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0RWxlbWVudC5jaGVja2VkID09PSB0cnVlKSB7XG4gICAgICAgIG9ialsnZmxkVHlwZSddID0gJ2NhbGN1bGF0aW9uJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9ialsnZmxkVHlwZSddID0gJ1RleHQnO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoa2V5UGF0aCA9PT0gJ3N1bW1hcnlSb3cnKSB7XG4gICAgICBpZiAob2JqWydzdW1tYXJ5Q29sdW1uJ10gPT09IHRydWUpIHtcbiAgICAgICAgb2JqWydzdW1tYXJ5Q29sdW1uJ10gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dEVsZW1lbnQuY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgICBvYmpbJ2ZsZFR5cGUnXSA9ICdjYWxjdWxhdGlvbic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpbJ2ZsZFR5cGUnXSA9ICdUZXh0JztcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+ICh7XG4gICAgICAuLi5lbCxcbiAgICAgIFt0YXJnZXRBcnJheVBhdGhdOiB0YXJnZXRBcnJheVxuICAgIH0pKTtcbiAgICBcbiAgICB0aGlzLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnQoKSk7XG4gIH1cblxuICBnZXREYXRhQnlQYXRoKHBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiBvYmo/LltrZXldLCB0aGlzLnNlbGVjdGVkRWxlbWVudCgpKTtcbiAgfVxuXG4gIGZsaXBIb3Jpem9udGFsKCkge1xuICAgIHRoaXMudHJhbnNmb3JtLnVwZGF0ZSh0ID0+ICh7IC4uLnQsIGZsaXBIOiAhdC5mbGlwSCB9KSk7XG4gIH1cblxuICBmbGlwVmVydGljYWwoKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0udXBkYXRlKHQgPT4gKHsgLi4udCwgZmxpcFY6ICF0LmZsaXBWIH0pKTtcbiAgfVxuXG4gIHJlc2V0SW1hZ2UoKSB7XG4gICAgdGhpcy5jYW52YXNSb3RhdGlvbi5zZXQoMCk7XG4gICAgdGhpcy5jcm9wcGVyLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMudHJhbnNmb3JtLnNldCh7XG4gICAgICB0cmFuc2xhdGVVbml0OiAncHgnLFxuICAgICAgc2NhbGU6IDEsXG4gICAgICByb3RhdGU6IDAsXG4gICAgICBmbGlwSDogZmFsc2UsXG4gICAgICBmbGlwVjogZmFsc2UsXG4gICAgICB0cmFuc2xhdGVIOiAwLFxuICAgICAgdHJhbnNsYXRlVjogMFxuICAgIH0pO1xuICB9XG5cbiAgem9vbU91dCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybS51cGRhdGUodCA9PiAoeyAuLi50LCBzY2FsZTogdC5zY2FsZSEgLSAwLjEgfSkpO1xuICB9XG5cbiAgem9vbUluKCkge1xuICAgIHRoaXMudHJhbnNmb3JtLnVwZGF0ZSh0ID0+ICh7IC4uLnQsIHNjYWxlOiB0LnNjYWxlISArIDAuMSB9KSk7XG4gIH1cblxuICByb3RhdGVMZWZ0KCkge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbnZhc1JvdGF0aW9uLnVwZGF0ZShjID0+IGMgLSAxKTtcbiAgICAgIHRoaXMuZmxpcEFmdGVyUm90YXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICByb3RhdGVSaWdodCgpIHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYW52YXNSb3RhdGlvbi51cGRhdGUoYyA9PiBjICsgMSk7XG4gICAgICB0aGlzLmZsaXBBZnRlclJvdGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbW92ZUxlZnQoKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0udXBkYXRlKHQgPT4gKHsgLi4udCwgdHJhbnNsYXRlSDogdC50cmFuc2xhdGVIISAtIDEgfSkpO1xuICB9XG5cbiAgbW92ZVJpZ2h0KCkge1xuICAgIHRoaXMudHJhbnNmb3JtLnVwZGF0ZSh0ID0+ICh7IC4uLnQsIHRyYW5zbGF0ZUg6IHQudHJhbnNsYXRlSCEgKyAxIH0pKTtcbiAgfVxuXG4gIG1vdmVEb3duKCkge1xuICAgIHRoaXMudHJhbnNmb3JtLnVwZGF0ZSh0ID0+ICh7IC4uLnQsIHRyYW5zbGF0ZVY6IHQudHJhbnNsYXRlViEgKyAxIH0pKTtcbiAgfVxuXG4gIG1vdmVVcCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybS51cGRhdGUodCA9PiAoeyAuLi50LCB0cmFuc2xhdGVWOiB0LnRyYW5zbGF0ZVYhIC0gMSB9KSk7XG4gIH1cblxuICBwcml2YXRlIGZsaXBBZnRlclJvdGF0ZSgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybS51cGRhdGUodCA9PiAoe1xuICAgICAgLi4udCxcbiAgICAgIGZsaXBIOiB0LmZsaXBWLFxuICAgICAgZmxpcFY6IHQuZmxpcEgsXG4gICAgICB0cmFuc2xhdGVIOiAwLFxuICAgICAgdHJhbnNsYXRlVjogMFxuICAgIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGltYWdlQ3JvcHBlZChldmVudDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2U2NCA9IGF3YWl0IHRoaXMuY29udmVydEJsb2JUb0Jhc2U2NChldmVudC5vYmplY3RVcmwpO1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKGVsID0+ICh7IC4uLmVsLCBpbWFnZURhdGE6IGJhc2U2NCB9KSk7XG4gICAgICBhd2FpdCB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5lbGVtZW50VXBkYXRlKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgoKSwgdGhpcy5zZWxlY3RlZEVsZW1lbnQoKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbiBpbWFnZUNyb3BwZWQ6XCIsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBjcm9wcGVyUmVhZHkoc291cmNlSW1hZ2VEaW1lbnNpb25zOiBEaW1lbnNpb25zKSB7XG4gICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBjb252ZXJ0QmxvYlRvQmFzZTY0KG9iamVjdFVybDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZmV0Y2gob2JqZWN0VXJsKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuYmxvYigpKVxuICAgICAgLnRoZW4oYmxvYiA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY2hpbGRFdmVudENhcHR1cmUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiAoe1xuICAgICAgLi4uZWwsXG4gICAgICBxYlJlZmVyZW5jZTogZXZlbnQudmFsdWVPYmo/Lm5hbWUsXG4gICAgICBxYlJlZmVyZW5jZVF1ZXN0aW9uczogZXZlbnQudmFsdWVPYmo/Lmpzb25Cb2R5XG4gICAgfSkpO1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmVsZW1lbnRVcGRhdGUodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCgpLCB0aGlzLnNlbGVjdGVkRWxlbWVudCgpKTtcbiAgfVxuXG4gIGxpbmtUb2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzTGlua0Ryb3Bkb3duT3Blbi51cGRhdGUob3BlbiA9PiAhb3Blbik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duICYmICF0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5pc0xpbmtEcm9wZG93bk9wZW4uc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvbkRyYWdTdGFydChldmVudDogRHJhZ0V2ZW50LCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5kcmFnZ2VkSWQgPSBpZDtcbiAgICBldmVudC5kYXRhVHJhbnNmZXIhLmVmZmVjdEFsbG93ZWQgPSBcIm1vdmVcIjtcbiAgfVxuXG4gIC8vIEFQLTI4TUFSMjUgUHJldmVudCBkZWZhdWx0IGJlaGF2aW9yIHRvIGFsbG93IGRyb3BcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIC8vIEFQLTI4TUFSMjUgU3dhcCB0aGUgZHJhZ2dlZCBpdGVtIHdpdGggdGhlIGRyb3BwZWQgcG9zaXRpb25cbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQsIGtleTogc3RyaW5nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB0YXJnZXRJZCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXCIub3B0aW9uLWl0ZW1zXCIpPy5nZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIpO1xuICAgIGlmICh0aGlzLmRyYWdnZWRJZCAmJiB0YXJnZXRJZCAmJiB0aGlzLmRyYWdnZWRJZCAhPT0gdGFyZ2V0SWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnVwZGF0ZShlbCA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBbLi4uZWxba2V5XV07XG4gICAgICAgIGNvbnN0IGRyYWdnZWRJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb24uaWQgPT09IHRoaXMuZHJhZ2dlZElkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBvcHRpb25zLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uLmlkID09PSB0YXJnZXRJZCk7XG4gICAgICAgIGlmIChkcmFnZ2VkSW5kZXggIT09IC0xICYmIHRhcmdldEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIFtvcHRpb25zW2RyYWdnZWRJbmRleF0sIG9wdGlvbnNbdGFyZ2V0SW5kZXhdXSA9IFtvcHRpb25zW3RhcmdldEluZGV4XSwgb3B0aW9uc1tkcmFnZ2VkSW5kZXhdXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5lbCwgW2tleV06IG9wdGlvbnMgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRyYWdnZWRJZCA9IG51bGw7XG4gIH1cblxuICBkdXBsaWNhdGVGaWVsZChlbGVtZW50OiBhbnkpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEVsZW1lbnRzKCk7XG4gICAgY29uc3QgY29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWxlbWVudCkpO1xuICAgIC8vQVAtMThBUFIyNSBHZW5lcmF0ZSBhIG5ldyBJRCB1c2luZyB0aGUgc2VydmljZSdzIG1ldGhvZFxuICAgIGNvcHkuaWQgPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5hZGRFbGVtZW50V2l0aElkKCk7XG4gICAgLy9jb3B5LnV1aWQgPSBjb3B5LmlkOyBcbiAgICAvLyBBUC0xOEFQUjI1IFNldCB0aGUgcXVlc3Rpb25OdW1iZXIgdG8gdGhlIG5leHQgYXZhaWxhYmxlIG51bWJlclxuICAgIGNvcHkucXVlc3Rpb25OdW1iZXIgPSBlbGVtZW50cy5sZW5ndGggKyAxO1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmFkZEVsZW1lbnQoY29weSk7XG4gIH1cblxuICBwcml2YXRlIGRyYWdnZWRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHVwZGF0ZUJvb2tTdWJ0ZXh0KGtleTogJ2VuZHBvaW50JyB8ICd2YXJpYWJsZScgfCAnZGVmYXVsdEZpZWxkJywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYm9va1N1YnRleHQudXBkYXRlKChzKSA9PiAoe1xuICAgICAgLi4ucyxcbiAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICB9KSk7XG4gIH0gIFxuICB0cmFja0J5UHJvcChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBpdGVtPy5rZXkgPz8gaW5kZXg7XG4gIH1cbiAgXG4gIGdldE9wdGltaXplZFN1YlByb3BWYWx1ZShzdWJQcm9wOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudCgpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChzdWJQcm9wLnRhcmdldEFycmF5IHx8IHN1YlByb3AuaXNUYWJsZUNvbHVtbikpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlQnlBcnJheVBhdGgoXG4gICAgICAgIHN1YlByb3AudGFyZ2V0QXJyYXksIFxuICAgICAgICBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBcbiAgICAgICAgdGhpcy5zZWxlY3RDb2x1bW4oKSwgXG4gICAgICAgIHN1YlByb3Aua2V5LCBcbiAgICAgICAgc3ViUHJvcC5pc1RhYmxlQ29sdW1uXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgZWxlbWVudCk7XG4gIH1cbn0iLCI8IS0tIEFQIDIySkFOMjUgLSBGaWVsZCBhbmQgRWxlbWVudCBQcm9wZXJ0aWVzIC0tPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiKCkgPT09ICdhdHRyaWJ1dGVzJ31cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdhdHRyaWJ1dGVzJylcIj5BdHRyaWJ1dGVzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiKCkgPT09ICdwcm9wZXJ0eSd9XCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYigncHJvcGVydHknKVwiPlByb3BlcnR5PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiKCkgPT09ICdhcHBlYXJhbmNlJ31cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdhcHBlYXJhbmNlJylcIj5BcHBlYXJhbmNlPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwiYWN0aXZlVGFiKCkgPT09ICdhdHRyaWJ1dGVzJ1wiPlxuICAgIEBkZWZlciAod2hlbiBnZXRQcm9wZXJ0aWVzKCkpIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIEBkZWZlciAod2hlbiBzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ0ltYWdlJykge1xuICAgICAgICAgIDxpbWFnZS1jcm9wcGVyXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRWxlbWVudCgpLmltYWdlRGF0YVwiXG4gICAgICAgICAgICBbaW1hZ2VCYXNlNjRdPVwic2VsZWN0ZWRFbGVtZW50KCkub3JnSW1hZ2VEYXRhXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbYWxpZ25JbWFnZV09XCJhbGlnbkltYWdlXCJcbiAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwicm91bmRDcm9wcGVyXCJcbiAgICAgICAgICAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJ3doaXRlJ1wiXG4gICAgICAgICAgICBpbWFnZUFsdFRleHQ9XCJBbHRlcm5hdGl2ZSBpbWFnZSB0ZXh0XCJcbiAgICAgICAgICAgIFthbGxvd01vdmVJbWFnZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZVJlc2l6ZVNxdWFyZXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2NhbnZhc1JvdGF0aW9uXT1cImNhbnZhc1JvdGF0aW9uKClcIlxuICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cImFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAgIFtjb250YWluV2l0aGluQXNwZWN0UmF0aW9dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW21haW50YWluQXNwZWN0UmF0aW9dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Nyb3BwZXJTdGF0aWNXaWR0aF09XCJjcm9wcGVyU3RhdGljV2lkdGhcIlxuICAgICAgICAgICAgW2Nyb3BwZXJTdGF0aWNIZWlnaHRdPVwiY3JvcHBlclN0YXRpY0hlaWdodFwiXG4gICAgICAgICAgICBbY3JvcHBlck1pbldpZHRoXT1cImNyb3BwZXJNaW5XaWR0aFwiXG4gICAgICAgICAgICBbY3JvcHBlck1pbkhlaWdodF09XCJjcm9wcGVyTWluSGVpZ2h0XCJcbiAgICAgICAgICAgIFtjcm9wcGVyTWF4V2lkdGhdPVwiY3JvcHBlck1heFdpZHRoXCJcbiAgICAgICAgICAgIFtjcm9wcGVyTWF4SGVpZ2h0XT1cImNyb3BwZXJNYXhIZWlnaHRcIlxuICAgICAgICAgICAgW3Jlc2V0Q3JvcE9uQXNwZWN0UmF0aW9DaGFuZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbKGNyb3BwZXIpXT1cImNyb3BwZXJcIlxuICAgICAgICAgICAgWyh0cmFuc2Zvcm0pXT1cInRyYW5zZm9ybVwiXG4gICAgICAgICAgICBbb25seVNjYWxlRG93bl09XCJ0cnVlXCJcbiAgICAgICAgICAgIG91dHB1dD1cImJsb2JcIlxuICAgICAgICAgICAgZm9ybWF0PVwicG5nXCJcbiAgICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIlxuICAgICAgICAgICAgKGNyb3BwZXJSZWFkeSk9XCJjcm9wcGVyUmVhZHkoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvaW1hZ2UtY3JvcHBlcj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50KCkuaW1hZ2VEYXRhXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDJweDtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwicm90YXRlTGVmdCgpXCIgdGl0bGU9XCJSb3RhdGUgTGVmdFwiPuKfsjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJyb3RhdGVSaWdodCgpXCIgdGl0bGU9XCJSb3RhdGUgUmlnaHRcIj7in7M8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiem9vbU91dCgpXCIgdGl0bGU9XCJab29tIE91dFwiPi08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiem9vbUluKClcIiB0aXRsZT1cIlpvb20gSW5cIj4rPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cIm1vdmVMZWZ0KClcIiB0aXRsZT1cIk1vdmUgTGVmdFwiPuKGkDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlUmlnaHQoKVwiIHRpdGxlPVwiTW92ZSBSaWdodFwiPuKGkjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlVXAoKVwiIHRpdGxlPVwiTW92ZSBVcFwiPuKGkTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlRG93bigpXCIgdGl0bGU9XCJNb3ZlIERvd25cIj7ihpM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiZmxpcEhvcml6b250YWwoKVwiIFtuZ0NsYXNzXT1cInsnZW5hYmxlZCc6IHRyYW5zZm9ybSgpLmZsaXBIfVwiIHRpdGxlPVwiRmxpcCBIb3Jpem9udGFsbHlcIj7ihpQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiZmxpcFZlcnRpY2FsKClcIiBbbmdDbGFzc109XCJ7J2VuYWJsZWQnOiB0cmFuc2Zvcm0oKS5mbGlwVn1cIiB0aXRsZT1cIkZsaXAgVmVydGljYWxseVwiPuKGlTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJyZXNldEltYWdlKClcIiB0aXRsZT1cIlJlc2V0XCI+w5c8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdCb29rJ1wiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21cIj5TZWFyY2ggQm9vazwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cbiAgICAgICAgICAgIDxueHQtc2VhcmNoLWJveFxuICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwic2VsZWN0ZWRFbGVtZW50KClcIlxuICAgICAgICAgICAgICBbYXBpTWV0YV09XCJib29rU3VidGV4dCgpXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyVGV4dF09XCInU2VhcmNoLi4uJ1wiXG4gICAgICAgICAgICAgIChzZWFyY2hWYWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQudmFsdWUpXCJcbiAgICAgICAgICAgID48L254dC1zZWFyY2gtYm94PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstaWNvblwiPlxuICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJsaW5rVG9nZ2xlRHJvcGRvd24oJGV2ZW50KVwiIGZpbGw9XCIjMDAwMDAwXCIgdmVyc2lvbj1cIjEuMVwiIGlkPVwiQ2FwYV8xXCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDQ1MCA0NTBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxuICAgICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMxOC4xNSwyMzAuMTk1bDc3LjkzNC03Ny45MzdjMzEuODk0LTMxLjg5MiwzMS44OTQtODMuNzgyLTAuMDA0LTExNS42NzRsLTEyLjY2LTEyLjY2XG4gICAgICAgICAgYy0zMS44OTMtMzEuODk2LTgzLjc4LTMxLjg5Ni0xMTUuNjc0LTAuMDA0bC03Ny45MzcsNzcuOTM0Yy0xNy41ODgsMTcuNTg4LTI1LjQ1Nyw0MS4yNjQtMjMuNjQ2LDY0LjMxMVxuICAgICAgICAgIGMtMjMuMDQ1LTEuODEzLTQ2LjcyMiw2LjA1Ni02NC4zMDgsMjMuNjQ3TDIzLjkyLDI2Ny43NDhjLTMxLjg5NCwzMS44ODktMzEuODk0LDgzLjc3OSwwLDExNS42NzRsMTIuNjY0LDEyLjY2MlxuICAgICAgICAgIGMzMS44OTMsMzEuODkzLDgzLjc4MywzMS44OTMsMTE1LjY3NCwwbDc3LjkzNS03Ny45MzZjMTcuNTkyLTE3LjU5LDI1LjQ1OS00MS4yNjYsMjMuNjQ3LTY0LjMwOVxuICAgICAgICAgIEMyNzYuODg0LDI1NS42NTQsMzAwLjU2LDI0Ny43ODMsMzE4LjE1LDIzMC4xOTV6IE0yMDIuNjUzLDI5MC42MDVsLTc3LjkzNiw3Ny45MzhjLTE2LjcwNSwxNi43MDMtNDMuODg5LDE2LjcwMy02MC41OSwwXG4gICAgICAgICAgbC0xMi42NjYtMTIuNjY2Yy0xNi43MDUtMTYuNzAxLTE2LjcwMy00My44ODUsMC02MC41OTRsNzcuOTM2LTc3LjkzMmMxNC4xNC0xNC4xNDEsMzUuNzc5LTE2LjMwNiw1Mi4yMjYtNi41MTZsLTMyLjMwMiwzMi4zMDdcbiAgICAgICAgICBjLTcuNjA2LDcuNjA0LTcuNjA2LDE5LjkzOCwwLDI3LjU0MWM3LjYwNSw3LjYwNywxOS45MzcsNy42MDcsMjcuNTQxLDBsMzIuMzA2LTMyLjMwM1xuICAgICAgICAgIEMyMTguOTU5LDI1NC44MjgsMjE2Ljc5NSwyNzYuNDY5LDIwMi42NTMsMjkwLjYwNXogTTIzOC4zODIsMjA5LjE2OWwzMi4yOTktMzIuMzA2YzcuNjA4LTcuNjAyLDcuNjA4LTE5LjkzNSwwLTI3LjUzOFxuICAgICAgICAgIGMtNy42MDQtNy42MS0xOS45MzYtNy42MS0yNy41NDEtMC4wMDRsLTMyLjMwMywzMi4zMDNjLTkuNzkxLTE2LjQ0Ni03LjYyNy0zOC4wODcsNi41MTQtNTIuMjI2bDc3LjkzNS03Ny45MzVcbiAgICAgICAgICBjMTYuNzA3LTE2LjcwNyw0My44OS0xNi43MDcsNjAuNTk0LDBsMTIuNjY0LDEyLjY2NGMxNi43MDUsMTYuNzA1LDE2LjcwNSw0My44ODYsMCw2MC41OTFsLTc3LjkzNiw3Ny45MzdcbiAgICAgICAgICBDMjc2LjQ2OCwyMTYuNzk3LDI1NC44MjgsMjE4Ljk1OSwyMzguMzgyLDIwOS4xNjl6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zNDMuNDY2LDI2MS40NjVjLTQ1LjI4NywwLTgyLDM2LjcxMy04Miw4MnMzNi43MTMsODIsODIsODJjNDUuMjg2LDAsODItMzYuNzEzLDgyLTgyUzM4OC43NTMsMjYxLjQ2NSwzNDMuNDY2LDI2MS40NjV6XG4gICAgICAgICAgIE0zNzIuNTA1LDMzMy41NjRsLTU2LjA0Niw1Ni4xMDRjLTAuMjM5LDAuMjM4LTAuNTM2LDAuNDEtMC44NjIsMC40OTZsLTIyLjMxNSw1Ljg1Yy0wLjY0OSwwLjE2OC0xLjM0Ny0wLjAyLTEuODIyLTAuNDk0XG4gICAgICAgICAgYy0wLjQ3Ny0wLjQ3OS0wLjY2Ni0xLjE3Mi0wLjQ5Ni0xLjgyNGw1LjgyNi0yMi4zMThjMC4wODQtMC4zMjYsMC4yNTYtMC42MjcsMC40OTQtMC44NjNsNTYuMDQ3LTU2LjEwNFxuICAgICAgICAgIGMwLjc0Mi0wLjc0MiwxLjk0NS0wLjc0NCwyLjY4OC0wLjAwMmw0LjU0OCw0LjU0MWMwLjczOSwwLjc0LDAuNzQxLDEuOTQzLDAsMi42ODhsLTM3LjQzMywzNy40NzFsNC43MDksNC43MDNsMzcuNDM1LTM3LjQ3MVxuICAgICAgICAgIGMwLjczOS0wLjc0MiwxLjk0LTAuNzQyLDIuNjgyLTAuMDAybDQuNTUsNC41NDFDMzczLjI1LDMzMS42MTcsMzczLjI1LDMzMi44MjIsMzcyLjUwNSwzMzMuNTY0eiBNMzk1LjQ3MiwzMTAuNTc0bC0xNywxNy4wMThcbiAgICAgICAgICBjLTAuNzM5LDAuNzQ0LTEuOTQyLDAuNzQ0LTIuNjg1LDAuMDAybC0xNi40ODktMTYuNDc1Yy0wLjc0NC0wLjc0LTAuNzQ0LTEuOTQzLTAuMDAyLTIuNjg4bDE3LTE3LjAyXG4gICAgICAgICAgYzAuNzQxLTAuNzQsMS45NDQtMC43NCwyLjY4OC0wLjAwMmwxNi40ODcsMTYuNDc3QzM5Ni4yMTYsMzA4LjYyOSwzOTYuMjE2LDMwOS44MzIsMzk1LjQ3MiwzMTAuNTc0elwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstZHJvcGRvd24tbWVudVwiICpuZ0lmPVwiaXNMaW5rRHJvcGRvd25PcGVuKClcIiAjZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPGxhYmVsPkVuZHBvaW50OjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYm9va1N1YnRleHQoKS5lbmRwb2ludFwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZUJvb2tTdWJ0ZXh0KCdlbmRwb2ludCcsICRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbD5WYXJpYWJsZTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cImJvb2tTdWJ0ZXh0KCkudmFyaWFibGVcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVCb29rU3VidGV4dCgndmFyaWFibGUnLCAkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWw+RmllbGQ6PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbbmdNb2RlbF09XCJmaWVsZEFzU3RyaW5nKClcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVGaWVsZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWw+RGVmYXVsdCBGaWVsZDo8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cImJvb2tTdWJ0ZXh0KCkuZGVmYXVsdEZpZWxkXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlQm9va1N1YnRleHQoJ2RlZmF1bHRGaWVsZCcsICRldmVudClcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCk/LmVsZW1lbnRQcm9wczsgdHJhY2tCeTogdHJhY2tCeVByb3BcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwicHJvcC50eXBlICE9PSAnY2hlY2tib3gnICYmIHByb3AudHlwZSAhPT0gJ3N1YlF1ZXN0aW9uJ1wiIGNsYXNzPVwidGV4dC1zbVwiPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnaGVscFRleHQnICYmIHNlbGVjdGVkRWxlbWVudCgpPy5oZWxwVGV4dFwiPnt7IHNlbGVjdGVkRWxlbWVudCgpPy5oZWxwVGV4dCB9fTwvZGl2PlxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaGVhZGVyU2VsZWN0KCkgPyBib29rKCkucmVjb3Jkc1swXS50aXRsZSA6IChzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4pID8gKGdldFZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCBwcm9wLmlzVGFibGVDb2x1bW4pKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpKVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhlYWRlclNlbGVjdCgpID8gdXBkYXRlVGl0bGUoJGV2ZW50KSA6IChzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4pID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksICRldmVudCwgcHJvcC5pc1RhYmxlQ29sdW1uKSA6IHNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQpKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5yZWFkLW9ubHldPVwic2VsZWN0ZWRFbGVtZW50KCk/LnJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInNlbGVjdGVkRWxlbWVudCgpPy5yZWFkT25seVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uKSA/IChnZXRWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgcHJvcC5pc1RhYmxlQ29sdW1uKSkgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KSlcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uKSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCAkZXZlbnQsIHByb3AuaXNUYWJsZUNvbHVtbikgOiBzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50KSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyAoZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgJGV2ZW50LCBwcm9wLmlzVGFibGVDb2x1bW4pIDogc2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudCkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KSkgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbiA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCAkZXZlbnQsIHByb3AuaXNUYWJsZUNvbHVtbikgOiBvblRvZ2dsZUNoYW5nZShwcm9wLmtleSwgJGV2ZW50KSkgOiBvblRvZ2dsZUNoYW5nZShwcm9wLmtleSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEwcHg7XCI+e3sgcHJvcC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3N1YlF1ZXN0aW9uJ1wiPlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsgZ2FwOiAxMHB4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgcHJvcC5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KSkgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksICRldmVudCwgcHJvcC5pc1RhYmxlQ29sdW1uKSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpKSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4gPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgcHJvcC5pc1RhYmxlQ29sdW1uKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN1YlByb3Agb2YgcHJvcC5zdWJRdWVzdGlvblwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2U3ZjJmZjsgcGFkZGluZzogOHB4OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3ViUHJvcC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdhcnJheSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZmlsdGVyZWRDb2x1bW5zKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzdWJQcm9wLm9wZXJhbmRzID8gc3ViUHJvcC5vcGVyYW5kcy5pbmNsdWRlcyhjb2x1bW4uYXBpTmFtZSkgOiBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHN1YlByb3Aua2V5LCBjb2x1bW4uYXBpTmFtZSwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLmFwaU5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViUHJvcC50eXBlID09PSAncmFkaW8nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGZpbHRlcmVkQ29sdW1ucygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic3ViUHJvcC5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW4uYXBpTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0VmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgc3ViUHJvcC5rZXkpID09PSBjb2x1bW4uYXBpTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHN1YlByb3Aua2V5LCBjb2x1bW4uYXBpTmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5hcGlOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICd0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdWJQcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyA/IChzdWJQcm9wLnRhcmdldEFycmF5ID8gZ2V0VmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgc3ViUHJvcC5rZXkpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBzdWJQcm9wLmtleSkpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBzdWJQcm9wLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHN1YlByb3AudGFyZ2V0QXJyYXkgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBzdWJQcm9wLmtleSwgJGV2ZW50KSA6IHNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQpKSA6IHNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdib29sZWFuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogc3ViUHJvcC5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQuY2hlY2tlZClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdzZWxlY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHN1YlByb3AudGFyZ2V0QXJyYXkgfHwgc3ViUHJvcC5pc1RhYmxlQ29sdW1uKSA/IChnZXRWYWx1ZUJ5QXJyYXlQYXRoKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBzdWJQcm9wLmtleSwgc3ViUHJvcC5pc1RhYmxlQ29sdW1uKSkgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHN1YlByb3Aua2V5KSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIihzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiAoc3ViUHJvcC50YXJnZXRBcnJheSB8fCBzdWJQcm9wLmlzVGFibGVDb2x1bW4pID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgc3ViUHJvcC5rZXksICRldmVudCwgc3ViUHJvcC5pc1RhYmxlQ29sdW1uKSA6IHNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQpKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc3ViUHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdjaGVja2JveCdcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHN1YlByb3Aua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2FsaWduJ1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgKGNsaWNrKT1cIm9uQWxpZ25TZWxlY3Qob3B0aW9uLnZhbHVlKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2VsZWN0ZWRFbGVtZW50KCk/LnRleHRBbGlnbiA9PT0gb3B0aW9uLnZhbHVlfVwiIFt0aXRsZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiJy4uL2Fzc2V0cy9pY29ucy8nICsgb3B0aW9uLmljb24gKyAnLnN2ZydcIiBbYWx0XT1cIm9wdGlvbi52YWx1ZVwiIGNsYXNzPVwiaWNvbi1zaXplXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdHlsZSdcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIChjbGljayk9XCJvblN0eWxlU2VsZWN0KG9wdGlvbi52YWx1ZSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzU3R5bGVBY3RpdmUob3B0aW9uLnZhbHVlKX1cIiBbdGl0bGVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIicuLi9hc3NldHMvaWNvbnMvJyArIG9wdGlvbi5pY29uICsgJy5zdmcnXCIgW2FsdF09XCJvcHRpb24udmFsdWVcIiBjbGFzcz1cImljb24tc2l6ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnY29sb3InXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyAoZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uKSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCAkZXZlbnQsIHByb3AuaXNUYWJsZUNvbHVtbikgOiBzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50KSlcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICd0aXRsZSdcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6IDIwcHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGROZXdCdXR0b24oKVwiIGNsYXNzPVwiYWRkLWJ1dHRvblwiPisgQWRkIEJ1dHRvbjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJvb2soKT8ucXVlc3Rpb25ib29rPy5hY3Rpb24gfHwgW107IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImJ1dHRvbi1jb25maWctY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+QnV0dG9uIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYnRuLm5hbWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICduYW1lJywgJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgYnV0dG9uIG5hbWVcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPkV2ZW50IE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYnRuLmV2ZW50dG9lbWl0XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnZXZlbnR0b2VtaXQnLCAkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJFdmVudCB0byBlbWl0XCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5BbHQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYnRuLmFsdFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ2FsdCcsICRldmVudClcIiBwbGFjZWhvbGRlcj1cIkJ1dHRvbiBhbHQgdGV4dFwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+RW5kcG9pbnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW25nTW9kZWxdPVwiYnRuLmVuZHBvaW50XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnZW5kcG9pbnQnLCAkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJBUEkgZW5kcG9pbnRcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPk1ldGhvZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IFtuZ01vZGVsXT1cImJ0bi5tZXRob2RcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICdtZXRob2QnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJHRVRcIj5HRVQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlBPU1RcIj5QT1NUPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJQVVRcIj5QVVQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkRFTEVURVwiPkRFTEVURTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5CYWNrZ3JvdW5kIENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBbbmdNb2RlbF09XCJidG4uYmdDb2xvclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ2JnQ29sb3InLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5Cb3JkZXIgUmFkaXVzPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtaW49XCIwXCIgbWF4PVwiNTBcIiBbbmdNb2RlbF09XCJidG4uYm9yZGVyUmFkaXVzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnYm9yZGVyUmFkaXVzJywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuLmJvcmRlclJhZGl1cyB9fXB4PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+QnV0dG9uIFdpZHRoIChweCk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbbmdNb2RlbF09XCJidG4ud2lkdGhcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICd3aWR0aCcsICRldmVudClcIiBtaW49XCI1MFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgd2lkdGggaW4gcHhcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPlRleHQgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFtuZ01vZGVsXT1cImJ0bi50ZXh0Q29sb3JcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICd0ZXh0Q29sb3InLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5Qb3NpdGlvbiAoJSk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1pbj1cIjBcIiBtYXg9XCIxMDBcIiBbbmdNb2RlbF09XCJidG4ucG9zaXRpb25QZXJjZW50XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAncG9zaXRpb25QZXJjZW50JywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuLnBvc2l0aW9uUGVyY2VudCB9fSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlQnV0dG9uKGJ0bilcIiBjbGFzcz1cInJlbW92ZS1idXR0b25cIj7DlyBSZW1vdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwiYWN0aXZlVGFiKCkgPT09ICdwcm9wZXJ0eSdcIj5cbiAgICBAZGVmZXIgKHdoZW4gZ2V0UHJvcGVydGllcygpKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8bGFiZWw+TGFiZWwgSWQ8L2xhYmVsPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiAxM3B4OyBwYWRkaW5nOiAxMXB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XCI+XG4gICAgICAgICAge3sgaGVhZGVyU2VsZWN0KCkgPyBib29rSWQoKSA6IHNlbGVjdGVkRWxlbWVudCgpPy5pZCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCk/LmZpZWxkUHJvcHM7IHRyYWNrQnk6IHRyYWNrQnlQcm9wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbCAgKm5nSWY9XCJwcm9wLnR5cGUgIT09ICdzdWJRdWVzdGlvbidcIiBjbGFzcz1cInRleHQtc21cIj57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICd0b2dnbGVHcm91cCdcIiBjbGFzcz1cInRvZ2dsZS1ncm91cFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzT3B0aW9uYWwnLCB0cnVlKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogJ2lzT3B0aW9uYWwnKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzT3B0aW9uYWwnLCAkZXZlbnQsIHRydWUpIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudCkpIDogb25Ub2dnbGVDaGFuZ2UoJ2lzT3B0aW9uYWwnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICBSZXF1aXJlZFxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzUmVhZE9ubHknLCB0cnVlKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogcHJvcC5rZXkpKSA6IChzZWxlY3RlZEVsZW1lbnQoKSB8IGdldFZhbHVlQnlQYXRoIDogJ2lzUmVhZE9ubHknKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzUmVhZE9ubHknLCAkZXZlbnQsIHRydWUpIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudCkpIDogb25Ub2dnbGVDaGFuZ2UoJ2lzUmVhZE9ubHknLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICBSZWFkIE9ubHlcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbiA/IGdldFZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksICdpc0hpZGRlbicsIHRydWUpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiAnaXNIaWRkZW4nKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgJ2lzSGlkZGVuJywgJGV2ZW50LCB0cnVlKSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpKSA6IG9uVG9nZ2xlQ2hhbmdlKCdpc0hpZGRlbicsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIElzIEhpZGVcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiBwcm9wLnR5cGUgPT09ICdjaGVja2JveCcgfHwgcHJvcC50eXBlID09PSAncmFkaW8nIHx8IHByb3Aua2V5ID09PSAnb3B0aW9ucydcIiBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tbGlzdFwiIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIiAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50LCBwcm9wLmtleSlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgc2VsZWN0Q29sdW1uKCkgPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKCdmaWVsZHNNZXRhJywgJ3VuaXF1ZUlkZW50aWZpZXInLCBzZWxlY3RDb2x1bW4oKSwgIHByb3Aua2V5LCB0cnVlKSA6IHNlbGVjdGVkRWxlbWVudCgpW3Byb3Aua2V5XSA7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cIm9wdGlvbi1pdGVtc1wiIFthdHRyLmRhdGEtaWRdPVwib3B0aW9uLmlkXCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIChkcmFnc3RhcnQpPVwib25EcmFnU3RhcnQoJGV2ZW50LCBvcHRpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbbmdNb2RlbF09XCJvcHRpb24udmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvcHRpb24udmFsdWUgPSAkZXZlbnRcIiBwbGFjZWhvbGRlcj1cIk9wdGlvblwiIGNsYXNzPVwib3B0aW9uc1wiIC8+XG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pY29ucy9UcmFzaC5zdmdcIiAoY2xpY2spPVwicmVtb3ZlT3B0aW9uKHNlbGVjdGVkRWxlbWVudCgpW3Byb3Aua2V5XSwgb3B0aW9uLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcmFnLWhhbmRsZVwiPuKYsDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZE9wdGlvbihzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiBzZWxlY3RDb2x1bW4oKSA/IGdldFZhbHVlQnlBcnJheVBhdGgoJ2ZpZWxkc01ldGEnLCAndW5pcXVlSWRlbnRpZmllcicsIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgdHJ1ZSkgOiBzZWxlY3RlZEVsZW1lbnQoKVtwcm9wLmtleV0pXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZC12YXJpZW50XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGdcIj4rPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+QWRkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaGVhZGVyU2VsZWN0KCkgPyBib29rKCkucmVjb3Jkc1swXS50aXRsZSA6IChzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyAmJiAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4pID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikgOiAoc2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5KSlcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoZWFkZXJTZWxlY3QoKSA/IHVwZGF0ZVRpdGxlKCRldmVudCkgOiAoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgKHByb3AudGFyZ2V0QXJyYXkgfHwgcHJvcC5pc1RhYmxlQ29sdW1uKSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCAkZXZlbnQsIHByb3AuaXNUYWJsZUNvbHVtbikgOiBzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50KSlcIlxuICAgICAgICAgICAgICBbY2xhc3MucmVhZC1vbmx5XT1cInNlbGVjdGVkRWxlbWVudCgpPy5yZWFkT25seVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJzZWxlY3RlZEVsZW1lbnQoKT8ucmVhZE9ubHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdWJRdWVzdGlvbidcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0eWxlLXRvZ2dsZS1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlU3ViUXVlc3Rpb24ocHJvcClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZC1lbGVtZW50c1wiPlN1YiBUZXh0PC9kaXY+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImlzRXhwYW5kZWQgPyAnLi4vYXNzZXRzL2ljb25zL2Fycm93LWRvd24uc3ZnJyA6ICcuLi9hc3NldHMvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJUb2dnbGUgQXJyb3dcIiBjbGFzcz1cImFycm93LWljb25cIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0V4cGFuZGVkXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViUHJvcCBvZiBwcm9wLnN1YlF1ZXN0aW9uOyB0cmFja0J5OiB0cmFja0J5UHJvcFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2U3ZjJmZjsgcGFkZGluZzogOHB4OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3ViUHJvcC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3ViUHJvcC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRPcHRpbWl6ZWRTdWJQcm9wVmFsdWUoc3ViUHJvcClcIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChzdWJQcm9wLnRhcmdldEFycmF5IHx8IHN1YlByb3AuaXNUYWJsZUNvbHVtbikpID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUsIHN1YlByb3AuaXNUYWJsZUNvbHVtbikgOiBzZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MucmVhZC1vbmx5XT1cInNlbGVjdGVkRWxlbWVudCgpPy5yZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJzZWxlY3RlZEVsZW1lbnQoKT8ucmVhZE9ubHlcIiAvPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIDwhLS0gQVAtMDJBUFIyNSBSZW5kZXIgaW5wdXQgZmllbGQgb25seSBpZiBzdWJQcm9wLnR5cGUgaXMgJ2FycmF5JyAtLT5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ2FycmF5J1wiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInN1YlByb3AucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpXCIgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ2Jvb2xlYW4nXCIgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDEwcHg7XCI+e3sgcHJvcC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQoKT8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbiA/IGdldFZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uKCksIHByb3Aua2V5LCBwcm9wLmlzVGFibGVDb2x1bW4pIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSlcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSB8fCBwcm9wLmlzVGFibGVDb2x1bW4gPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgJGV2ZW50LCBwcm9wLmlzVGFibGVDb2x1bW4pIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudCkpIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3R5bGUtdG9nZ2xlLWhlYWRlclwiIChjbGljayk9XCJ0b2dnbGVTdHlsZVNlY3Rpb24oKVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkLWVsZW1lbnRzXCI+U3R5bGU8L2Rpdj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaXNTdHlsZUV4cGFuZGVkKCkgPyAnLi4vYXNzZXRzL2ljb25zL2Fycm93LWRvd24uc3ZnJyA6ICcuLi9hc3NldHMvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnJ1wiIGFsdD1cIlRvZ2dsZSBBcnJvd1wiIGNsYXNzPVwiYXJyb3ctaWNvblwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzU3R5bGVFeHBhbmRlZCgpXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBwYWRkaW5nOiA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDtcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldFN0eWxlS2V5cygpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD57eyBrZXkgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIHNlbGVjdENvbHVtbigpID8gZ2V0VmFsdWVCeUFycmF5UGF0aCgnZmllbGRzTWV0YScsICd1bmlxdWVJZGVudGlmaWVyJywgc2VsZWN0Q29sdW1uKCksJ3N0eWxlLicgKyBrZXksIHRydWUpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiAnc3R5bGUuJyArIGtleSlcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCIoc2VsZWN0ZWRFbGVtZW50KCk/LnR5cGUgPT09ICdUYWJsZScgJiYgc2VsZWN0Q29sdW1uKCkgKSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgoJ2ZpZWxkc01ldGEnLCAndW5pcXVlSWRlbnRpZmllcicsIHNlbGVjdENvbHVtbigpLCAnc3R5bGUuJyArIGtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSwgdHJ1ZSkgOiBzZXRWYWx1ZUJ5UGF0aCgnc3R5bGUuJyArIGtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIge3sga2V5IH19XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgKm5nSWY9XCJhY3RpdmVUYWIoKSA9PT0gJ2FwcGVhcmFuY2UnXCI+XG4gICAgQGRlZmVyICh3aGVuIGdldFByb3BlcnRpZXMoKSkge1xuICAgICAgPGRpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCk/LmFwcGVhcmFuY2U7IHRyYWNrQnk6IHRyYWNrQnlQcm9wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21cIj57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyAoZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4oKSwgcHJvcC5rZXksIHByb3AuaXNUYWJsZUNvbHVtbikpIDogKHNlbGVjdGVkRWxlbWVudCgpIHwgZ2V0VmFsdWVCeVBhdGggOiBwcm9wLmtleSkpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiKHNlbGVjdGVkRWxlbWVudCgpPy50eXBlID09PSAnVGFibGUnICYmIChwcm9wLnRhcmdldEFycmF5IHx8IHByb3AuaXNUYWJsZUNvbHVtbikgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbigpLCBwcm9wLmtleSwgJGV2ZW50LCBwcm9wLmlzVGFibGVDb2x1bW4pIDogc2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudCkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5XCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudClcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdjb2xvcidcIiBjbGFzcz1cImNvbG9yLXNlbGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRFbGVtZW50KCk/LmZvbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aCgnZm9udENvbG9yJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2NvbG9yJ1wiIGNsYXNzPVwiaGV4LWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPkhFWCBDb2RlPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRFbGVtZW50KCkgfCBnZXRWYWx1ZUJ5UGF0aCA6IHByb3Aua2V5XCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2J1dHRvbi10b2dnbGUnXCIgY2xhc3M9XCJidXR0b24tdG9nZ2xlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImR1cGxpY2F0ZUZpZWxkKHNlbGVjdGVkRWxlbWVudCgpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBZGQgRHVwbGljYXRlXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiICpuZ0lmPVwiIXRlbXBsYXRlU2VsZWN0ZWRcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ0blwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnRuXCIgKGNsaWNrKT1cImhhbmRsZUJ1dHRvbkNsaWNrKClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCIgKm5nSWY9XCJ0ZW1wbGF0ZVNlbGVjdGVkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAyMHB4O1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIChjbGljayk9XCJoYW5kbGVUZW1wbGF0ZVNhdmUoKVwiPlNhdmUgVGVtcGxhdGU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=