@cqa-lib/cqa-ui 1.1.197 → 1.1.199

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.
@@ -224,37 +224,55 @@ export class StepBuilderDocumentComponent {
224
224
  onCancel() {
225
225
  this.cancelled.emit();
226
226
  }
227
- onCreateStep() {
228
- if (this.selectedTemplateSource === 'upload' && !this.uploadedFile) {
229
- return;
227
+ isFormValid() {
228
+ // Check if main form is valid (documentType and outputVariable are required)
229
+ if (!this.documentForm.valid) {
230
+ return false;
231
+ }
232
+ // Check template source specific requirements
233
+ if (this.selectedTemplateSource === 'existing') {
234
+ const templateId = this.documentForm.get('templateId')?.value;
235
+ if (!templateId) {
236
+ return false;
237
+ }
238
+ }
239
+ else if (this.selectedTemplateSource === 'upload') {
240
+ if (!this.uploadedFile) {
241
+ return false;
242
+ }
230
243
  }
231
- if (this.selectedTemplateSource === 'createNew') {
244
+ else if (this.selectedTemplateSource === 'createNew') {
232
245
  const name = this.documentForm.get('templateName')?.value?.trim();
233
246
  const desc = this.documentForm.get('templateDescription')?.value?.trim();
234
- if (!name || !desc)
235
- return;
247
+ if (!name || !desc) {
248
+ return false;
249
+ }
236
250
  }
237
- if (this.documentForm.valid) {
238
- const formValue = this.documentForm.value;
239
- const stepData = {
240
- documentType: formValue.documentType,
241
- outputVariable: formValue.outputVariable,
242
- templateSource: this.selectedTemplateSource,
243
- templateId: formValue.templateId || undefined,
244
- ...(this.selectedTemplateSource === 'upload' && this.uploadedFile && { uploadedFile: this.uploadedFile }),
245
- ...(this.selectedTemplateSource === 'createNew' && {
246
- templateName: (formValue.templateName ?? '').trim(),
247
- templateDescription: (formValue.templateDescription ?? '').trim()
248
- }),
249
- mappings: (formValue.mappings || []).map((m) => ({
250
- key: m.key || '',
251
- valueType: m.valueType || 'variable',
252
- value: m.value || '',
253
- enabled: m.enabled ?? false
254
- }))
255
- };
256
- this.createStep.emit(stepData);
251
+ return true;
252
+ }
253
+ onCreateStep() {
254
+ if (!this.isFormValid()) {
255
+ return;
257
256
  }
257
+ const formValue = this.documentForm.value;
258
+ const stepData = {
259
+ documentType: formValue.documentType,
260
+ outputVariable: formValue.outputVariable,
261
+ templateSource: this.selectedTemplateSource,
262
+ templateId: formValue.templateId || undefined,
263
+ ...(this.selectedTemplateSource === 'upload' && this.uploadedFile && { uploadedFile: this.uploadedFile }),
264
+ ...(this.selectedTemplateSource === 'createNew' && {
265
+ templateName: (formValue.templateName ?? '').trim(),
266
+ templateDescription: (formValue.templateDescription ?? '').trim()
267
+ }),
268
+ mappings: (formValue.mappings || []).map((m) => ({
269
+ key: m.key || '',
270
+ valueType: m.valueType || 'variable',
271
+ value: m.value || '',
272
+ enabled: m.enabled ?? false
273
+ }))
274
+ };
275
+ this.createStep.emit(stepData);
258
276
  }
259
277
  onMapperHelpClick(event) {
260
278
  if (this.mapperHelpUrl) {
@@ -301,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
301
319
  }], createTemplate: [{
302
320
  type: Output
303
321
  }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1idWlsZGVyLWRvY3VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1kb2N1bWVudC9zdGVwLWJ1aWxkZXItZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWRvY3VtZW50L3N0ZXAtYnVpbGRlci1kb2N1bWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQWtELFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUE4QjVGLE1BQU0sT0FBTyw0QkFBNEI7SUFnRXZDLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBL0RuQyx5Q0FBeUM7UUFDaEMsd0JBQW1CLEdBQW1CLEVBQUUsQ0FBQztRQUVsRCwrRUFBK0U7UUFDdEUsb0JBQWUsR0FBbUIsRUFBRSxDQUFDO1FBRTlDLHlEQUF5RDtRQUNoRCxxQkFBZ0IsR0FBbUI7WUFDMUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQzFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUNsRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDbEYsRUFBRSxFQUFF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QVM7K0JBQ0UsMkJBQTJCO2tHQUs1QixtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1JLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0csU0FBUztzQkFBbEIsTUFBTTtnQkFHRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnLCBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZVNvdXJjZVR5cGUgPSAnZXhpc3RpbmcnIHwgJ3VwbG9hZCcgfCAnY3JlYXRlTmV3JztcblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudE1hcHBpbmdSb3cge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWVUeXBlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50Rm9ybURhdGEge1xuICBkb2N1bWVudFR5cGU6IHN0cmluZztcbiAgb3V0cHV0VmFyaWFibGU6IHN0cmluZztcbiAgdGVtcGxhdGVTb3VyY2U6IFRlbXBsYXRlU291cmNlVHlwZTtcbiAgdGVtcGxhdGVJZD86IHN0cmluZztcbiAgLyoqIFVwbG9hZGVkIHRlbXBsYXRlIGZpbGUgd2hlbiB0ZW1wbGF0ZVNvdXJjZSBpcyAndXBsb2FkJyAqL1xuICB1cGxvYWRlZEZpbGU/OiBGaWxlO1xuICAvKiogVGVtcGxhdGUgbmFtZSB3aGVuIHRlbXBsYXRlU291cmNlIGlzICdjcmVhdGVOZXcnICovXG4gIHRlbXBsYXRlTmFtZT86IHN0cmluZztcbiAgLyoqIFRlbXBsYXRlIGRlc2NyaXB0aW9uIHdoZW4gdGVtcGxhdGVTb3VyY2UgaXMgJ2NyZWF0ZU5ldycgKi9cbiAgdGVtcGxhdGVEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbWFwcGluZ3M6IERvY3VtZW50TWFwcGluZ1Jvd1tdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtc3RlcC1idWlsZGVyLWRvY3VtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXAtYnVpbGRlci1kb2N1bWVudC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3RlcEJ1aWxkZXJEb2N1bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqIE9wdGlvbnMgZm9yIGRvY3VtZW50IHR5cGUgZHJvcGRvd24gKi9cbiAgQElucHV0KCkgZG9jdW1lbnRUeXBlT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcblxuICAvKiogT3B0aW9ucyBmb3IgdGVtcGxhdGUgZHJvcGRvd24gKHdoZW4gXCJVc2UgRXhpc3RpbmcgVGVtcGxhdGVcIiBpcyBzZWxlY3RlZCkgKi9cbiAgQElucHV0KCkgdGVtcGxhdGVPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gIC8qKiBPcHRpb25zIGZvciB2YWx1ZSB0eXBlIGRyb3Bkb3duIGluIGRvY3VtZW50IG1hcHBlciAqL1xuICBASW5wdXQoKSB2YWx1ZVR5cGVPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtcbiAgICB7IGlkOiAndmFyaWFibGUnLCB2YWx1ZTogJ3ZhcmlhYmxlJywgbmFtZTogJ1ZhcmlhYmxlJywgbGFiZWw6ICdWYXJpYWJsZScgfSxcbiAgICB7IGlkOiAnc3RhdGljJywgdmFsdWU6ICdzdGF0aWMnLCBuYW1lOiAnU3RhdGljJywgbGFiZWw6ICdTdGF0aWMnIH0sXG4gICAgeyBpZDogJ2V4cHJlc3Npb24nLCB2YWx1ZTogJ2V4cHJlc3Npb24nLCBuYW1lOiAnRXhwcmVzc2lvbicsIGxhYmVsOiAnRXhwcmVzc2lvbicgfSxcbiAgICB7IGlkOiAncmVmZXJlbmNlJywgdmFsdWU6ICdyZWZlcmVuY2UnLCBuYW1lOiAnUmVmZXJlbmNlJywgbGFiZWw6ICdSZWZlcmVuY2UnIH1cbiAgXTtcblxuICAvKiogT3B0aW9uYWwgVVJMIGZvciBcIk5lZWQgaGVscD9cIiBsaW5rIGluIERvY3VtZW50IE1hcHBlciBzZWN0aW9uICovXG4gIEBJbnB1dCgpIG1hcHBlckhlbHBVcmw6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUb29sdGlwIHRleHQgd2hlbiBob3ZlcmluZyBvdmVyIFwiTmVlZCBoZWxwP1wiIChzYW1lIGFzIGN1c3RvbS1lZGl0LXN0ZXApICovXG4gIEBJbnB1dCgpIG1hcHBlckhlbHBUb29sdGlwVGV4dDogc3RyaW5nID0gJ05vdCBzdXJlIHdoYXQgdG8gZG8/IENsaWNrIHRvIGdvIHRvIG91ciBkZXRhaWxlZCBzdGVwIGNyZWF0aW9uIGRvY3VtZW50YXRpb24nO1xuXG4gIC8qKiBJbml0aWFsIGRvY3VtZW50IHR5cGUgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsRG9jdW1lbnRUeXBlPzogc3RyaW5nO1xuXG4gIC8qKiBJbml0aWFsIG91dHB1dCB2YXJpYWJsZSBmb3IgZWRpdCBtb2RlICovXG4gIEBJbnB1dCgpIGluaXRpYWxPdXRwdXRWYXJpYWJsZT86IHN0cmluZztcblxuICAvKiogSW5pdGlhbCB0ZW1wbGF0ZSBzb3VyY2UgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsVGVtcGxhdGVTb3VyY2U/OiBUZW1wbGF0ZVNvdXJjZVR5cGU7XG5cbiAgLyoqIEluaXRpYWwgdGVtcGxhdGUgSUQgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsVGVtcGxhdGVJZD86IHN0cmluZztcblxuICAvKiogSW5pdGlhbCB0ZW1wbGF0ZSBuYW1lIGZvciBlZGl0IG1vZGUgKHdoZW4gdGVtcGxhdGVTb3VyY2UgaXMgJ2NyZWF0ZU5ldycpICovXG4gIEBJbnB1dCgpIGluaXRpYWxUZW1wbGF0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIEluaXRpYWwgdGVtcGxhdGUgZGVzY3JpcHRpb24gZm9yIGVkaXQgbW9kZSAod2hlbiB0ZW1wbGF0ZVNvdXJjZSBpcyAnY3JlYXRlTmV3JykgKi9cbiAgQElucHV0KCkgaW5pdGlhbFRlbXBsYXRlRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqIEluaXRpYWwgbWFwcGluZ3MgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsTWFwcGluZ3M/OiBEb2N1bWVudE1hcHBpbmdSb3dbXTtcblxuICAvKiogV2hldGhlciBpbiBlZGl0IG1vZGUgKi9cbiAgQElucHV0KCkgZWRpdE1vZGU/OiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBoZWxwIHRvb2x0aXAgaXMgdmlzaWJsZSAqL1xuICBzaG93SGVscFRvb2x0aXAgPSBmYWxzZTtcblxuICAvKiogRW1pdCB3aGVuIHN0ZXAgaXMgY3JlYXRlZCAqL1xuICBAT3V0cHV0KCkgY3JlYXRlU3RlcCA9IG5ldyBFdmVudEVtaXR0ZXI8RG9jdW1lbnRGb3JtRGF0YT4oKTtcblxuICAvKiogRW1pdCB3aGVuIGNhbmNlbGxlZCAqL1xuICBAT3V0cHV0KCkgY2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBFbWl0IHdoZW4gXCJDcmVhdGUgVGVtcGxhdGVcIiBpcyBjbGlja2VkIChDcmVhdGUgTmV3IGZsb3cpLiBIb3N0IGNhbiBjcmVhdGUgdGVtcGxhdGUgdmlhIEFQSS4gKi9cbiAgQE91dHB1dCgpIGNyZWF0ZVRlbXBsYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRlbXBsYXRlTmFtZTogc3RyaW5nOyB0ZW1wbGF0ZURlc2NyaXB0aW9uOiBzdHJpbmcgfT4oKTtcblxuICBkb2N1bWVudEZvcm06IEZvcm1Hcm91cDtcbiAgc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZTogVGVtcGxhdGVTb3VyY2VUeXBlID0gJ2V4aXN0aW5nJztcbiAgLyoqIFVwbG9hZGVkIGZpbGUgd2hlbiBUZW1wbGF0ZSBTb3VyY2UgaXMgXCJVcGxvYWQgVGVtcGxhdGVcIiAqL1xuICB1cGxvYWRlZEZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcbiAgLyoqIFZpc3VhbCBzdGF0ZSBmb3IgZHJhZy1hbmQtZHJvcCB6b25lICovXG4gIGlzRHJhZ092ZXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZG9jdW1lbnRGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBkb2N1bWVudFR5cGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvdXRwdXRWYXJpYWJsZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHRlbXBsYXRlU291cmNlOiBbJ2V4aXN0aW5nJ10sXG4gICAgICB0ZW1wbGF0ZUlkOiBbbnVsbF0sXG4gICAgICB0ZW1wbGF0ZU5hbWU6IFsnJ10sXG4gICAgICB0ZW1wbGF0ZURlc2NyaXB0aW9uOiBbJyddLFxuICAgICAgbWFwcGluZ3M6IHRoaXMuZmIuYXJyYXkoW10pXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVTb3VyY2UgPSB0aGlzLmluaXRpYWxUZW1wbGF0ZVNvdXJjZSB8fCB0aGlzLmRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlU291cmNlJyk/LnZhbHVlIHx8ICdleGlzdGluZyc7XG4gICAgdGhpcy5pbml0aWFsaXplRm9ybVdpdGhJbml0aWFsVmFsdWVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RvY3VtZW50VHlwZU9wdGlvbnMnXSB8fCBjaGFuZ2VzWyd0ZW1wbGF0ZU9wdGlvbnMnXSB8fCBjaGFuZ2VzWyd2YWx1ZVR5cGVPcHRpb25zJ10pIHtcbiAgICAgIC8vIENvbmZpZ3MgYXJlIGJ1aWx0IGZyb20gaW5wdXRzIGluIGdldHRlcnM7IG5vIG5lZWQgdG8gcmVidWlsZCBmb3JtXG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbml0aWFsRG9jdW1lbnRUeXBlJ10gfHwgY2hhbmdlc1snaW5pdGlhbE91dHB1dFZhcmlhYmxlJ10gfHwgY2hhbmdlc1snaW5pdGlhbFRlbXBsYXRlU291cmNlJ10gfHwgXG4gICAgICAgIGNoYW5nZXNbJ2luaXRpYWxUZW1wbGF0ZUlkJ10gfHwgY2hhbmdlc1snaW5pdGlhbE1hcHBpbmdzJ10gfHwgY2hhbmdlc1snaW5pdGlhbFRlbXBsYXRlTmFtZSddIHx8IFxuICAgICAgICBjaGFuZ2VzWydpbml0aWFsVGVtcGxhdGVEZXNjcmlwdGlvbiddKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtV2l0aEluaXRpYWxWYWx1ZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtV2l0aEluaXRpYWxWYWx1ZXMoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgbWFwcGluZ3NcbiAgICB3aGlsZSAodGhpcy5tYXBwaW5nc0Zvcm1BcnJheS5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMubWFwcGluZ3NGb3JtQXJyYXkucmVtb3ZlQXQoMCk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGluaXRpYWwgdmFsdWVzIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMuaW5pdGlhbERvY3VtZW50VHlwZSkge1xuICAgICAgdGhpcy5kb2N1bWVudEZvcm0ucGF0Y2hWYWx1ZSh7IGRvY3VtZW50VHlwZTogdGhpcy5pbml0aWFsRG9jdW1lbnRUeXBlIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbml0aWFsT3V0cHV0VmFyaWFibGUpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRGb3JtLnBhdGNoVmFsdWUoeyBvdXRwdXRWYXJpYWJsZTogdGhpcy5pbml0aWFsT3V0cHV0VmFyaWFibGUgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRpYWxUZW1wbGF0ZVNvdXJjZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlID0gdGhpcy5pbml0aWFsVGVtcGxhdGVTb3VyY2U7XG4gICAgICB0aGlzLmRvY3VtZW50Rm9ybS5wYXRjaFZhbHVlKHsgdGVtcGxhdGVTb3VyY2U6IHRoaXMuaW5pdGlhbFRlbXBsYXRlU291cmNlIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbml0aWFsVGVtcGxhdGVJZCkge1xuICAgICAgdGhpcy5kb2N1bWVudEZvcm0ucGF0Y2hWYWx1ZSh7IHRlbXBsYXRlSWQ6IHRoaXMuaW5pdGlhbFRlbXBsYXRlSWQgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRpYWxUZW1wbGF0ZU5hbWUpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRGb3JtLnBhdGNoVmFsdWUoeyB0ZW1wbGF0ZU5hbWU6IHRoaXMuaW5pdGlhbFRlbXBsYXRlTmFtZSB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5pdGlhbFRlbXBsYXRlRGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRGb3JtLnBhdGNoVmFsdWUoeyB0ZW1wbGF0ZURlc2NyaXB0aW9uOiB0aGlzLmluaXRpYWxUZW1wbGF0ZURlc2NyaXB0aW9uIH0pO1xuICAgIH1cblxuICAgIC8vIExvYWQgaW5pdGlhbCBtYXBwaW5nc1xuICAgIGlmICh0aGlzLmluaXRpYWxNYXBwaW5ncyAmJiB0aGlzLmluaXRpYWxNYXBwaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmluaXRpYWxNYXBwaW5ncy5mb3JFYWNoKG1hcHBpbmcgPT4ge1xuICAgICAgICBjb25zdCBtYXBwaW5nR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICBrZXk6IFttYXBwaW5nLmtleSB8fCAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgdmFsdWVUeXBlOiBbbWFwcGluZy52YWx1ZVR5cGUgfHwgJ3ZhcmlhYmxlJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgdmFsdWU6IFttYXBwaW5nLnZhbHVlIHx8ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICBlbmFibGVkOiBbbWFwcGluZy5lbmFibGVkID8/IGZhbHNlXVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXBwaW5nc0Zvcm1BcnJheS5wdXNoKG1hcHBpbmdHcm91cCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQWRkIG9uZSBlbXB0eSBtYXBwaW5nIGlmIG5vIGluaXRpYWwgbWFwcGluZ3NcbiAgICAgIGlmICh0aGlzLm1hcHBpbmdzRm9ybUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmFkZE1hcHBpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgbWFwcGluZ3NGb3JtQXJyYXkoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudEZvcm0uZ2V0KCdtYXBwaW5ncycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGdldERvY3VtZW50VHlwZUNvbmZpZygpOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICdkb2N1bWVudFR5cGUnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgZG9jdW1lbnQgdHlwZScsXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuZG9jdW1lbnRUeXBlT3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBnZXRUZW1wbGF0ZVNlbGVjdENvbmZpZygpOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICd0ZW1wbGF0ZUlkJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IFRlbXBsYXRlIGRyb3Bkb3duJyxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgb3B0aW9uczogdGhpcy50ZW1wbGF0ZU9wdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgZ2V0VmFsdWVUeXBlQ29uZmlnKGluZGV4OiBudW1iZXIpOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICd2YWx1ZVR5cGUnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdWYWx1ZSBUeXBlJyxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgb3B0aW9uczogdGhpcy52YWx1ZVR5cGVPcHRpb25zLFxuICAgICAgb25DaGFuZ2U6ICgpID0+IHt9XG4gICAgfTtcbiAgfVxuXG4gIG9uVGVtcGxhdGVTb3VyY2VDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSA9IHZhbHVlIGFzIFRlbXBsYXRlU291cmNlVHlwZTtcbiAgICB0aGlzLmRvY3VtZW50Rm9ybS5wYXRjaFZhbHVlKHsgdGVtcGxhdGVTb3VyY2U6IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSB9KTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlICE9PSAndXBsb2FkJykge1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIG9uQ3JlYXRlVGVtcGxhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZG9jdW1lbnRGb3JtLmdldCgndGVtcGxhdGVOYW1lJyk/LnZhbHVlPy50cmltKCkgPz8gJyc7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLmRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlRGVzY3JpcHRpb24nKT8udmFsdWU/LnRyaW0oKSA/PyAnJztcbiAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlLmVtaXQoeyB0ZW1wbGF0ZU5hbWU6IG5hbWUsIHRlbXBsYXRlRGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIH0pO1xuICB9XG5cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGUgPSBmaWxlO1xuICAgIH1cbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlO1xuICB9XG5cbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc0RyYWdPdmVyID0gZmFsc2U7XG4gIH1cblxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc0RyYWdPdmVyID0gZmFsc2U7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM/LlswXTtcbiAgICBpZiAoZmlsZSAmJiB0aGlzLmlzQWNjZXB0ZWRUZW1wbGF0ZUZpbGUoZmlsZSkpIHtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlID0gZmlsZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQWNjZXB0ZWRUZW1wbGF0ZUZpbGUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjY2VwdGVkID0gWycucGRmJywgJy5kb2MnLCAnLmRvY3gnLCAnLnR4dCddO1xuICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gYWNjZXB0ZWQuc29tZShleHQgPT4gbmFtZS5lbmRzV2l0aChleHQpKTtcbiAgfVxuXG4gIGFkZE1hcHBpbmcoKTogdm9pZCB7XG4gICAgY29uc3QgbWFwcGluZ0dyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBrZXk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB2YWx1ZVR5cGU6IFsndmFyaWFibGUnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHZhbHVlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZW5hYmxlZDogW2ZhbHNlXVxuICAgIH0pO1xuICAgIHRoaXMubWFwcGluZ3NGb3JtQXJyYXkucHVzaChtYXBwaW5nR3JvdXApO1xuICB9XG5cbiAgcmVtb3ZlTWFwcGluZyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXBwaW5nc0Zvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBnZXRNYXBwaW5nRm9ybUdyb3VwKGluZGV4OiBudW1iZXIpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdzRm9ybUFycmF5LmF0KGluZGV4KSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICAvKiogVHJ1ZSB3aGVuIGV2ZXJ5IG1hcHBpbmcgcm93IGhhcyBlbmFibGVkID09PSB0cnVlICovXG4gIGdldCBhbGxNYXBwaW5nc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxlbiA9IHRoaXMubWFwcGluZ3NGb3JtQXJyYXkubGVuZ3RoO1xuICAgIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuZ2V0TWFwcGluZ0Zvcm1Hcm91cChpKS5nZXQoJ2VuYWJsZWQnKT8udmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogVHJ1ZSB3aGVuIGF0IGxlYXN0IG9uZSBtYXBwaW5nIHJvdyBoYXMgZW5hYmxlZCA9PT0gdHJ1ZSAoZm9yIGhlYWRlciBpbmRldGVybWluYXRlKSAqL1xuICBnZXQgc29tZU1hcHBpbmdzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hcHBpbmdzRm9ybUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgnZW5hYmxlZCcpPy52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uU2VsZWN0QWxsTWFwcGluZ3MoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubWFwcGluZ3NGb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoXywgaSkgPT4ge1xuICAgICAgdGhpcy5nZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgnZW5hYmxlZCcpPy5zZXRWYWx1ZShjaGVja2VkKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsbGVkLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ3JlYXRlU3RlcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlID09PSAndXBsb2FkJyAmJiAhdGhpcy51cGxvYWRlZEZpbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSA9PT0gJ2NyZWF0ZU5ldycpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlTmFtZScpPy52YWx1ZT8udHJpbSgpO1xuICAgICAgY29uc3QgZGVzYyA9IHRoaXMuZG9jdW1lbnRGb3JtLmdldCgndGVtcGxhdGVEZXNjcmlwdGlvbicpPy52YWx1ZT8udHJpbSgpO1xuICAgICAgaWYgKCFuYW1lIHx8ICFkZXNjKSByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmRvY3VtZW50Rm9ybS52YWxpZCkge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5kb2N1bWVudEZvcm0udmFsdWU7XG4gICAgICBjb25zdCBzdGVwRGF0YTogRG9jdW1lbnRGb3JtRGF0YSA9IHtcbiAgICAgICAgZG9jdW1lbnRUeXBlOiBmb3JtVmFsdWUuZG9jdW1lbnRUeXBlLFxuICAgICAgICBvdXRwdXRWYXJpYWJsZTogZm9ybVZhbHVlLm91dHB1dFZhcmlhYmxlLFxuICAgICAgICB0ZW1wbGF0ZVNvdXJjZTogdGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlLFxuICAgICAgICB0ZW1wbGF0ZUlkOiBmb3JtVmFsdWUudGVtcGxhdGVJZCB8fCB1bmRlZmluZWQsXG4gICAgICAgIC4uLih0aGlzLnNlbGVjdGVkVGVtcGxhdGVTb3VyY2UgPT09ICd1cGxvYWQnICYmIHRoaXMudXBsb2FkZWRGaWxlICYmIHsgdXBsb2FkZWRGaWxlOiB0aGlzLnVwbG9hZGVkRmlsZSB9KSxcbiAgICAgICAgLi4uKHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSA9PT0gJ2NyZWF0ZU5ldycgJiYge1xuICAgICAgICAgIHRlbXBsYXRlTmFtZTogKGZvcm1WYWx1ZS50ZW1wbGF0ZU5hbWUgPz8gJycpLnRyaW0oKSxcbiAgICAgICAgICB0ZW1wbGF0ZURlc2NyaXB0aW9uOiAoZm9ybVZhbHVlLnRlbXBsYXRlRGVzY3JpcHRpb24gPz8gJycpLnRyaW0oKVxuICAgICAgICB9KSxcbiAgICAgICAgbWFwcGluZ3M6IChmb3JtVmFsdWUubWFwcGluZ3MgfHwgW10pLm1hcCgobTogYW55KSA9PiAoe1xuICAgICAgICAgIGtleTogbS5rZXkgfHwgJycsXG4gICAgICAgICAgdmFsdWVUeXBlOiBtLnZhbHVlVHlwZSB8fCAndmFyaWFibGUnLFxuICAgICAgICAgIHZhbHVlOiBtLnZhbHVlIHx8ICcnLFxuICAgICAgICAgIGVuYWJsZWQ6IG0uZW5hYmxlZCA/PyBmYWxzZVxuICAgICAgICB9KSlcbiAgICAgIH07XG4gICAgICB0aGlzLmNyZWF0ZVN0ZXAuZW1pdChzdGVwRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgb25NYXBwZXJIZWxwQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWFwcGVySGVscFVybCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHdpbmRvdy5vcGVuKHRoaXMubWFwcGVySGVscFVybCwgJ19ibGFuaycpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290IGNxYS1ibG9jayBjcWEtdy1mdWxsIGNxYS1taW4tdy0wIGNxYS1zdGVwLWJ1aWxkZXItZG9jdW1lbnRcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS13LWZ1bGwgY3FhLW1pbi13LTAgY3FhLWgtZnVsbCBjcWEtYmctd2hpdGUgY3FhLWJvcmRlciBjcWEtYm94LWJvcmRlciBjcWEtbWF4LXctZnVsbCBjcWEtb3BhY2l0eS0xMDBcIj5cbiAgICA8IS0tIENvbnRlbnQgYXJlYTogcGFkZGluZyAxNnB4LCBnYXAgMTJweCBiZXR3ZWVuIHNlY3Rpb25zIChubyBmbGV4LTEgdG8gYXZvaWQgZ2FwIGFib3ZlIGZvb3RlcikgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZmxleC1zaHJpbmstMCBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1wLTQgY3FhLWdhcC0zXCI+XG4gIDwhLS0gSGVhZGVyOiBEb2N1bWVudCBHZW5lcmF0aW9uIFRlbXBsYXRlIFN0ZXAgKGxlZnQtYWxpZ25lZCwgSW50ZXIgNjAwIDEycHggbGluZS1oZWlnaHQgMTAwJSkgLS0+XG4gIDxoMlxuICAgIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzExMTgyN10gY3FhLW0tMCBjcWEtdGV4dC1sZWZ0IGNxYS1mbGV4LXNocmluay0wIGNxYS1hbGlnbi1taWRkbGVcIj5cbiAgICBEb2N1bWVudCBHZW5lcmF0aW9uIFRlbXBsYXRlIFN0ZXBcbiAgPC9oMj5cblxuICAgIDwhLS0gRG9jdW1lbnQgVHlwZSBhbmQgT3V0cHV0IFZhcmlhYmxlIFJvdyAoZ2FwIDEycHggYmV0d2VlbiBjb2x1bW5zKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtZmxleC1zaHJpbmstMCBjcWEtZ2FwLTE0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMCBjcWEtbWluLXctW2NhbGMoNDUlLTZweCldIFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMzNzQxNTFdIGNxYS1tYi0xLjUgY3FhLWJsb2NrXCI+XG4gICAgICAgICAgRG9jdW1lbnQgVHlwZSA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHlwZS1zZWxlY3RcIj5cbiAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0XG4gICAgICAgICAgICBbZm9ybV09XCJkb2N1bWVudEZvcm1cIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJnZXREb2N1bWVudFR5cGVDb25maWcoKVwiPlxuICAgICAgICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgIENob29zZSB0aGUgZmlsZSBmb3JtYXQgeW91IHdhbnQgdG8gZ2VuZXJhdGUuXG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLW1pbi13LVtjYWxjKDQ1JS02cHgpXVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMzNzQxNTFdIGNxYS1tYi0xLjUgY3FhLWJsb2NrXCI+XG4gICAgICAgICAgT3V0cHV0IFZhcmlhYmxlIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJJbnB1dFwiXG4gICAgICAgICAgW3ZhbHVlXT1cImRvY3VtZW50Rm9ybS5nZXQoJ291dHB1dFZhcmlhYmxlJyk/LnZhbHVlXCJcbiAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkb2N1bWVudEZvcm0uZ2V0KCdvdXRwdXRWYXJpYWJsZScpPy5zZXRWYWx1ZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgIFN0b3JlcyB0aGUgZ2VuZXJhdGVkIGZpbGUgc28gaXQgY2FuIGJlIHVzZWQgaW4gbGF0ZXIgc3RlcHMuXG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUZW1wbGF0ZSBTb3VyY2UgU2VjdGlvbjogbGFiZWwgbGVmdCwgdGFicyByaWdodCBvbiBzYW1lIHJvdyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1mbGV4LXNocmluay0wIGNxYS1nYXAtM1wiPlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMzNzQxNTFdIGNxYS1tLTAgY3FhLWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICBUZW1wbGF0ZSBTb3VyY2VcbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGNxYS1zZWdtZW50LWNvbnRyb2xcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgICAgICBbc2VnbWVudHNdPVwiW1xuICAgICAgICAgICAgeyBsYWJlbDogJ1VzZSBFeGlzdGluZyBUZW1wbGF0ZScsIHZhbHVlOiAnZXhpc3RpbmcnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnVXBsb2FkIFRlbXBsYXRlJywgdmFsdWU6ICd1cGxvYWQnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnQ3JlYXRlIE5ldycsIHZhbHVlOiAnY3JlYXRlTmV3JyB9XG4gICAgICAgICAgXVwiXG4gICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkVGVtcGxhdGVTb3VyY2VcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblRlbXBsYXRlU291cmNlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9jcWEtc2VnbWVudC1jb250cm9sPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHlwZS1zZWxlY3RcIiAqbmdJZj1cInNlbGVjdGVkVGVtcGxhdGVTb3VyY2UgPT09ICdleGlzdGluZydcIj5cbiAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdFxuICAgICAgICAgIFtmb3JtXT1cImRvY3VtZW50Rm9ybVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJnZXRUZW1wbGF0ZVNlbGVjdENvbmZpZygpXCI+XG4gICAgICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVXBsb2FkIFRlbXBsYXRlOiBDUUEgZHJhZy1hbmQtZHJvcCB6b25lIChtaW5pbWFsLCB3aGl0ZSwgY2VudGVyZWQpIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkVGVtcGxhdGVTb3VyY2UgPT09ICd1cGxvYWQnXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xLjVcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtbS0wXCI+XG4gICAgICAgICAgQXR0YWNobWVudCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIGFjY2VwdD1cIi5wZGYsLmRvYywuZG9jeCwudHh0XCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1oaWRkZW5cIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1taW4taC1bMTQwcHhdIGNxYS1yb3VuZGVkIGNxYS1ib3JkZXItMiBjcWEtYm9yZGVyLWRhc2hlZCBjcWEtYm9yZGVyLWdyYXktMzAwIGNxYS1iZy13aGl0ZSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWdhcC0zIGNxYS1wLTYgY3FhLWN1cnNvci1wb2ludGVyIGNxYS10cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgW2NsYXNzLmNxYS1yaW5nLTJdPVwiaXNEcmFnT3ZlclwiXG4gICAgICAgICAgW2NsYXNzLmNxYS1yaW5nLVsjM0Y0M0VFXV09XCJpc0RyYWdPdmVyXCJcbiAgICAgICAgICBbY2xhc3MuY3FhLXJpbmctaW5zZXRdPVwiaXNEcmFnT3ZlclwiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlVwbG9hZCB0ZW1wbGF0ZSBmaWxlXCI+XG4gICAgICAgICAgPCEtLSBVcGxvYWQgaWNvbjogYXJyb3cgaW4gZm9sZGVyL2JveCAoZGFyayBncmF5KSAtLT5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3FhLXctOCBjcWEtaC04ICBjcWEtZm9udC1ib2xkXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTRcIi8+XG4gICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMTcgOCAxMiAzIDcgOFwiLz5cbiAgICAgICAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjNcIiB4Mj1cIjEyXCIgeTI9XCIxNVwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LWJhc2UgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS1tLTAgY3FhLXRleHQtY2VudGVyIGNxYS1mb250LWJvbGRcIj5cbiAgICAgICAgICAgIERyYWcgYW5kIGRyb3AgZmlsZXMgaGVyZSBvciA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtZm9udC1tZWRpdW0gaG92ZXI6Y3FhLXVuZGVybGluZVwiPmJyb3dzZTwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW0tMFwiPlxuICAgICAgICAgICAgUERGLCBET0MsIG9yIFRYVCBmaWxlc1xuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1tLTBcIj5cbiAgICAgICAgICBDaG9vc2UgdGhlIGZpbGUgZm9ybWF0IHlvdSB3YW50IHRvIGdlbmVyYXRlLlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gQ3JlYXRlIE5ldzogVGVtcGxhdGUgTmFtZSwgVGVtcGxhdGUgRGVzY3JpcHRpb24sIENyZWF0ZSBUZW1wbGF0ZSBidXR0b24gLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSA9PT0gJ2NyZWF0ZU5ldydcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLW1pbi13LVtjYWxjKDUwJS02cHgpXVwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtbWItMS41IGNxYS1ibG9ja1wiPlxuICAgICAgICAgICAgICBUZW1wbGF0ZSBOYW1lIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQREYgRG9jdW1lbnQgKC5wZGYpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlTmFtZScpPy52YWx1ZVwiXG4gICAgICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZU5hbWUnKT8uc2V0VmFsdWUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wIGNxYS1taW4tdy1bY2FsYyg1MCUtNnB4KV1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzM3NDE1MV0gY3FhLW1iLTEuNSBjcWEtYmxvY2tcIj5cbiAgICAgICAgICAgICAgVGVtcGxhdGUgRGVzY3JpcHRpb24gPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8Y3FhLWN1c3RvbS1pbnB1dFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBERiBEb2N1bWVudCAoLnBkZilcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZG9jdW1lbnRGb3JtLmdldCgndGVtcGxhdGVEZXNjcmlwdGlvbicpPy52YWx1ZVwiXG4gICAgICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZURlc2NyaXB0aW9uJyk/LnNldFZhbHVlKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1lbmRcIj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgICAgICBidG5TaXplPVwibGdcIlxuICAgICAgICAgICAgdGV4dD1cIkNyZWF0ZSBUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzNGNDNFRV0gY3FhLWJnLVsjM0Y0M0VFXSdcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25DcmVhdGVUZW1wbGF0ZSgpXCI+XG4gICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEb2N1bWVudCBNYXBwZXIgU2VjdGlvbjogdGl0bGUgKyBzdWJ0aXRsZSBsZWZ0LCBOZWVkIGhlbHA/IHJpZ2h0IChDUUEgdGFibGUgYmVsb3cpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWdhcC0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0YXJ0IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLW1pbi13LTBcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJjcWEtdGV4dC1iYXNlIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1bMTRweF0gY3FhLW0tMCBjcWEtbGVhZGluZy10aWdodFwiPlxuICAgICAgICAgICAgRG9jdW1lbnQgTWFwcGVyXG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW0tMCBjcWEtbXQtMC41XCI+XG4gICAgICAgICAgICBNYXAgcGxhY2Vob2xkZXJzIHRvIGR5bmFtaWMgdmFsdWVzLlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLWlubGluZS1mbGV4IGNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzaG93SGVscFRvb2x0aXAgPSB0cnVlXCJcbiAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJzaG93SGVscFRvb2x0aXAgPSBmYWxzZVwiPlxuICAgICAgICAgIDxhICpuZ0lmPVwibWFwcGVySGVscFVybFwiXG4gICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgIChjbGljayk9XCJvbk1hcHBlckhlbHBDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzIxcHhdIGNxYS1uby11bmRlcmxpbmUgY3FhLWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjM0Y0M0VFXVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2hlbHAtaWNvbi1jbGlwLWRvYylcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNTAwMzMgMTQuNjY2M0MxMi40MTIzIDE0LjY2NjMgMTUuNTgzNyAxMS42ODE2IDE1LjU4MzcgNy45OTk2N0MxNS41ODM3IDQuMzE3NzggMTIuNDEyMyAxLjMzMzAxIDguNTAwMzMgMS4zMzMwMUM0LjU4ODMxIDEuMzMzMDEgMS40MTY5OSA0LjMxNzc4IDEuNDE2OTkgNy45OTk2N0MxLjQxNjk5IDExLjY4MTYgNC41ODgzMSAxNC42NjYzIDguNTAwMzMgMTQuNjY2M1pcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjQzODQ4IDYuMDAwMzhDNi42MDUwMSA1LjU1NDgzIDYuOTMzNzEgNS4xNzkxMiA3LjM2NjM2IDQuOTM5OEM3Ljc5OTAxIDQuNzAwNDkgOC4zMDc2OSA0LjYxMzAxIDguODAyMzEgNC42OTI4NUM5LjI5NjkzIDQuNzcyNyA5Ljc0NTU2IDUuMDE0NzMgMTAuMDY4NyA1LjM3NjA3QzEwLjM5MTkgNS43Mzc0IDEwLjU2ODggNi4xOTQ3MyAxMC41NjgxIDYuNjY3MDVDMTAuNTY4MSA4LjAwMDM4IDguNDQzMDYgOC42NjcwNSA4LjQ0MzA2IDguNjY3MDVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTEuMzMzSDguNTA5NjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiaGVscC1pY29uLWNsaXAtZG9jXCI+XG4gICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIi8+XG4gICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICBOZWVkIGhlbHAgP1xuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFtYXBwZXJIZWxwVXJsXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41IGNxYS1mb250LVs1MDBdIGNxYS10ZXh0LVsxMHB4XSBjcWEtY3Vyc29yLWRlZmF1bHQgY3FhLXRleHQtWyMzNzQxNTFdXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjM0Y0M0VFXVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2hlbHAtaWNvbi1jbGlwLWRvYy1ub2xpbmspXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUwMDMzIDE0LjY2NjNDMTIuNDEyMyAxNC42NjYzIDE1LjU4MzcgMTEuNjgxNiAxNS41ODM3IDcuOTk5NjdDMTUuNTgzNyA0LjMxNzc4IDEyLjQxMjMgMS4zMzMwMSA4LjUwMDMzIDEuMzMzMDFDNC41ODgzMSAxLjMzMzAxIDEuNDE2OTkgNC4zMTc3OCAxLjQxNjk5IDcuOTk5NjdDMS40MTY5OSAxMS42ODE2IDQuNTg4MzEgMTQuNjY2MyA4LjUwMDMzIDE0LjY2NjNaXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi40Mzg0OCA2LjAwMDM4QzYuNjA1MDEgNS41NTQ4MyA2LjkzMzcxIDUuMTc5MTIgNy4zNjYzNiA0LjkzOThDNy43OTkwMSA0LjcwMDQ5IDguMzA3NjkgNC42MTMwMSA4LjgwMjMxIDQuNjkyODVDOS4yOTY5MyA0Ljc3MjcgOS43NDU1NiA1LjAxNDczIDEwLjA2ODcgNS4zNzYwN0MxMC4zOTE5IDUuNzM3NCAxMC41Njg4IDYuMTk0NzMgMTAuNTY4MSA2LjY2NzA1QzEwLjU2ODEgOC4wMDAzOCA4LjQ0MzA2IDguNjY3MDUgOC40NDMwNiA4LjY2NzA1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDExLjMzM0g4LjUwOTY2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImhlbHAtaWNvbi1jbGlwLWRvYy1ub2xpbmtcIj5cbiAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIE5lZWQgaGVscCA/XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SGVscFRvb2x0aXBcIiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcG9pbnRlci1ldmVudHMtbm9uZSBjcWEtei1bMTAwXSBjcWEtdG9wLVstMjRweF0gY3FhLWxlZnQtWy0yMDNweF1cIiByb2xlPVwidG9vbHRpcFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LXdoaXRlIGNxYS10ZXh0LWNlbnRlciBjcWEtd2hpdGVzcGFjZS1ub3dyYXAgY3FhLXctWzMwNnB4XSBjcWEtbWluLWgtNSBjcWEtcm91bmRlZC1bNnB4XSBjcWEtb3BhY2l0eS0xMDAgY3FhLXB4LTIgY3FhLXB5LTEgY3FhLWJnLVsjMEEwQTBBXSBjcWEtbGVhZGluZy01IGNxYS10ZXh0LVs4cHhdXCI+XG4gICAgICAgICAgICAgIHt7IG1hcHBlckhlbHBUb29sdGlwVGV4dCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFRhYmxlIG9yIGVtcHR5IHN0YXRlOiBzYW1lIGNvbnRhaW5lciwgaGVhZGVyIGFsd2F5cyB2aXNpYmxlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1yb3VuZGVkLWxnIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLWJnLXdoaXRlIGNxYS1zaGFkb3ctc20gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiY3FhLXctZnVsbFwiPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImNxYS1pdGVtcy1jZW50ZXIgY3FhLWJnLVsjRDhEOUZDNERdXCI+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNxYS1weS1bMTMuMjVweF0gY3FhLXB4LVsxMC41cHhdIGNxYS10ZXh0LXhzIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtdGV4dC1sZWZ0IGNxYS13LVs0MHB4XSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwiYWxsTWFwcGluZ3NTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNvbWVNYXBwaW5nc1NlbGVjdGVkICYmICFhbGxNYXBwaW5nc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdEFsbE1hcHBpbmdzKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgYWxsIG1hcHBpbmdzXCI+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNxYS1weS1bMTMuMjVweF0gY3FhLXB4LVsxMC41cHhdIGNxYS10ZXh0LXhzIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtdGV4dC1sZWZ0IGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWdyYXktMjAwXCI+S2V5PC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3FhLXB5LVsxMy4yNXB4XSBjcWEtcHgtWzEwLjVweF0gY3FhLXRleHQteHMgY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LWxlZnQgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDAgY3FhLXctWzEyMHB4XVwiPlZhbHVlIFR5cGU8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjcWEtcHktWzEzLjI1cHhdIGNxYS1weC1bMTAuNXB4XSBjcWEtdGV4dC14cyBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzM3NDE1MV0gY3FhLXRleHQtbGVmdCBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlZhbHVlPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3FhLXB5LVsxMy4yNXB4XSBjcWEtcHgtWzEwLjVweF0gY3FhLXRleHQteHMgY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LWxlZnQgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDAgY3FhLXctWzQ4cHhdXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc3Itb25seVwiPkRlbGV0ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJjcWEtdy1mdWxsXCI+XG4gICAgICAgICAgICA8IS0tIEVtcHR5IHN0YXRlIHdoZW4gbm8gbWFwcGluZ3MgLS0+XG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJtYXBwaW5nc0Zvcm1BcnJheS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1hbGlnbi1taWRkbGUgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0xMiBjcWEtcHgtNCBjcWEtYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tLTAgY3FhLW1iLTRcIj5TdGFydCBtYXBwaW5nIHBsYWNlaG9sZGVycyB0byB2YWx1ZXMuPC9wPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtcm91bmRlZC1sZyBjcWEtcHgtNCBjcWEtcHktMi41IGNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LXdoaXRlIGNxYS1iZy1bIzRGNDZFNV0gY3FhLWJvcmRlci1ub25lIGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS05MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE1hcHBpbmcoKVwiPlxuICAgICAgICAgICAgICAgICAgICBBZGQgZmlyc3QgbWFwcGluZ1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPCEtLSBEYXRhIHJvd3Mgd2hlbiB0aGVyZSBhcmUgbWFwcGluZ3MgLS0+XG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG1hcHBpbmcgb2YgbWFwcGluZ3NGb3JtQXJyYXkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGhvdmVyOmNxYS1iZy1bI0Y5RkFGQl1cIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3FhLXB4LVsxMC41cHhdIGNxYS1weS1bMTFweF0gY3FhLWFsaWduLW1pZGRsZSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwiZ2V0TWFwcGluZ0Zvcm1Hcm91cChpKS5nZXQoJ2VuYWJsZWQnKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImdldE1hcHBpbmdGb3JtR3JvdXAoaSkuZ2V0KCdlbmFibGVkJyk/LnNldFZhbHVlKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFbmFibGUgbWFwcGluZ1wiPlxuICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjcWEtcHgtWzEwLjVweF0gY3FhLXB5LVsxMXB4XSBjcWEtYWxpZ24tbWlkZGxlIGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWdyYXktMjAwIFwiPlxuICAgICAgICAgICAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0tleSdcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldE1hcHBpbmdGb3JtR3JvdXAoaSkuZ2V0KCdrZXknKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJnZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgna2V5Jyk/LnNldFZhbHVlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L2NxYS1jdXN0b20taW5wdXQ+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNxYS1weC1bMTAuNXB4XSBjcWEtcHktWzExcHhdIGNxYS1hbGlnbi1taWRkbGUgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHlwZS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBbZm9ybV09XCJnZXRNYXBwaW5nRm9ybUdyb3VwKGkpXCJcbiAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiZ2V0VmFsdWVUeXBlQ29uZmlnKGkpXCI+XG4gICAgICAgICAgICAgICAgPC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjcWEtcHgtWzEwLjVweF0gY3FhLXB5LVsxMXB4XSBjcWEtYWxpZ24tbWlkZGxlIGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVmFsdWUnXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgndmFsdWUnKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJnZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgndmFsdWUnKT8uc2V0VmFsdWUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3FhLXB4LVsxMC41cHhdIGNxYS1weS1bMTFweF0gY3FhLWFsaWduLW1pZGRsZSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy05IGNxYS1oLTkgY3FhLXJvdW5kZWQgY3FhLXRleHQtWyNFNTczNzNdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBjcWEtYm9yZGVyLW5vbmUgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS04MFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlTWFwcGluZyhpKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidEZWxldGUgbWFwcGluZydcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjcWEtdy01IGNxYS1oLTUgY3FhLWZsZXgtc2hyaW5rLTBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDZoMThNOCA2VjRhMiAyIDAgMDEyLTJoNGEyIDIgMCAwMTIgMnYybTMgMHYxNGEyIDIgMCAwMS0yIDJIN2EyIDIgMCAwMS0yLTJWNmgxNHpcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgMTF2Nk0xNCAxMXY2XCIvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgXG4gICAgICAgIDwvdGFibGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1lbmRcIiAqbmdJZj1cIm1hcHBpbmdzRm9ybUFycmF5Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWyMzRjQzRUVdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtYm9yZGVyLW5vbmUgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1wLTNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZE1hcHBpbmcoKVwiPlxuICAgICAgICAgICAgKyBBZGQgTWFwcGluZ1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktZW5kXCIgKm5nSWY9XCJtYXBwaW5nc0Zvcm1BcnJheS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE4cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWJvcmRlci1ub25lIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtcC0wXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkTWFwcGluZygpXCI+XG4gICAgICAgICAgKyBBZGQgTWFwcGluZ1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIFxuXG4gIDwhLS0gRGl2aWRlciBhYm92ZSBmb290ZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtaC1weCBjcWEtdy1mdWxsXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0cmV0Y2ggY3FhLXctZnVsbCBjcWEtcC00IGNxYS1nYXAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBidG5TaXplPVwibGdcIlxuICAgICAgICB0ZXh0PVwiQ2FuY2VsXCJcbiAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtdGV4dC1bMTRweF0gY3FhLXB5LVs5cHhdIGNxYS1ib3JkZXItWyM0MTQxNDZdJ1wiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIFt0ZXh0XT1cImVkaXRNb2RlID8gJ1VwZGF0ZSBTdGVwJyA6ICdDcmVhdGUgU3RlcCdcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzNGNDNFRV0nXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25DcmVhdGVTdGVwKClcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1idWlsZGVyLWRvY3VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1kb2N1bWVudC9zdGVwLWJ1aWxkZXItZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWRvY3VtZW50L3N0ZXAtYnVpbGRlci1kb2N1bWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQWtELFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUE4QjVGLE1BQU0sT0FBTyw0QkFBNEI7SUFnRXZDLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBL0RuQyx5Q0FBeUM7UUFDaEMsd0JBQW1CLEdBQW1CLEVBQUUsQ0FBQztRQUVsRCwrRUFBK0U7UUFDdEUsb0JBQWUsR0FBbUIsRUFBRSxDQUFDO1FBRTlDLHlEQUF5RDtRQUNoRCxxQkFBZ0IsR0FBbUI7WUFDMUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQzFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUNsRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDbEYsRUFBRSxFQUFF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Z0JBQ3BCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUs7YUFDNUIsQ0FBQyxDQUFDO1NBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFZO1FBQzVCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQzs7eUhBdlVVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDZ0QkMvQnpDLDIwbEJBa1ZBOzJGRG5UYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCO2tHQUs1QixtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1JLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0csU0FBUztzQkFBbEIsTUFBTTtnQkFHRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnLCBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZVNvdXJjZVR5cGUgPSAnZXhpc3RpbmcnIHwgJ3VwbG9hZCcgfCAnY3JlYXRlTmV3JztcblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudE1hcHBpbmdSb3cge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWVUeXBlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50Rm9ybURhdGEge1xuICBkb2N1bWVudFR5cGU6IHN0cmluZztcbiAgb3V0cHV0VmFyaWFibGU6IHN0cmluZztcbiAgdGVtcGxhdGVTb3VyY2U6IFRlbXBsYXRlU291cmNlVHlwZTtcbiAgdGVtcGxhdGVJZD86IHN0cmluZztcbiAgLyoqIFVwbG9hZGVkIHRlbXBsYXRlIGZpbGUgd2hlbiB0ZW1wbGF0ZVNvdXJjZSBpcyAndXBsb2FkJyAqL1xuICB1cGxvYWRlZEZpbGU/OiBGaWxlO1xuICAvKiogVGVtcGxhdGUgbmFtZSB3aGVuIHRlbXBsYXRlU291cmNlIGlzICdjcmVhdGVOZXcnICovXG4gIHRlbXBsYXRlTmFtZT86IHN0cmluZztcbiAgLyoqIFRlbXBsYXRlIGRlc2NyaXB0aW9uIHdoZW4gdGVtcGxhdGVTb3VyY2UgaXMgJ2NyZWF0ZU5ldycgKi9cbiAgdGVtcGxhdGVEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbWFwcGluZ3M6IERvY3VtZW50TWFwcGluZ1Jvd1tdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtc3RlcC1idWlsZGVyLWRvY3VtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0ZXAtYnVpbGRlci1kb2N1bWVudC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3RlcEJ1aWxkZXJEb2N1bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqIE9wdGlvbnMgZm9yIGRvY3VtZW50IHR5cGUgZHJvcGRvd24gKi9cbiAgQElucHV0KCkgZG9jdW1lbnRUeXBlT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcblxuICAvKiogT3B0aW9ucyBmb3IgdGVtcGxhdGUgZHJvcGRvd24gKHdoZW4gXCJVc2UgRXhpc3RpbmcgVGVtcGxhdGVcIiBpcyBzZWxlY3RlZCkgKi9cbiAgQElucHV0KCkgdGVtcGxhdGVPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gIC8qKiBPcHRpb25zIGZvciB2YWx1ZSB0eXBlIGRyb3Bkb3duIGluIGRvY3VtZW50IG1hcHBlciAqL1xuICBASW5wdXQoKSB2YWx1ZVR5cGVPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtcbiAgICB7IGlkOiAndmFyaWFibGUnLCB2YWx1ZTogJ3ZhcmlhYmxlJywgbmFtZTogJ1ZhcmlhYmxlJywgbGFiZWw6ICdWYXJpYWJsZScgfSxcbiAgICB7IGlkOiAnc3RhdGljJywgdmFsdWU6ICdzdGF0aWMnLCBuYW1lOiAnU3RhdGljJywgbGFiZWw6ICdTdGF0aWMnIH0sXG4gICAgeyBpZDogJ2V4cHJlc3Npb24nLCB2YWx1ZTogJ2V4cHJlc3Npb24nLCBuYW1lOiAnRXhwcmVzc2lvbicsIGxhYmVsOiAnRXhwcmVzc2lvbicgfSxcbiAgICB7IGlkOiAncmVmZXJlbmNlJywgdmFsdWU6ICdyZWZlcmVuY2UnLCBuYW1lOiAnUmVmZXJlbmNlJywgbGFiZWw6ICdSZWZlcmVuY2UnIH1cbiAgXTtcblxuICAvKiogT3B0aW9uYWwgVVJMIGZvciBcIk5lZWQgaGVscD9cIiBsaW5rIGluIERvY3VtZW50IE1hcHBlciBzZWN0aW9uICovXG4gIEBJbnB1dCgpIG1hcHBlckhlbHBVcmw6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUb29sdGlwIHRleHQgd2hlbiBob3ZlcmluZyBvdmVyIFwiTmVlZCBoZWxwP1wiIChzYW1lIGFzIGN1c3RvbS1lZGl0LXN0ZXApICovXG4gIEBJbnB1dCgpIG1hcHBlckhlbHBUb29sdGlwVGV4dDogc3RyaW5nID0gJ05vdCBzdXJlIHdoYXQgdG8gZG8/IENsaWNrIHRvIGdvIHRvIG91ciBkZXRhaWxlZCBzdGVwIGNyZWF0aW9uIGRvY3VtZW50YXRpb24nO1xuXG4gIC8qKiBJbml0aWFsIGRvY3VtZW50IHR5cGUgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsRG9jdW1lbnRUeXBlPzogc3RyaW5nO1xuXG4gIC8qKiBJbml0aWFsIG91dHB1dCB2YXJpYWJsZSBmb3IgZWRpdCBtb2RlICovXG4gIEBJbnB1dCgpIGluaXRpYWxPdXRwdXRWYXJpYWJsZT86IHN0cmluZztcblxuICAvKiogSW5pdGlhbCB0ZW1wbGF0ZSBzb3VyY2UgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsVGVtcGxhdGVTb3VyY2U/OiBUZW1wbGF0ZVNvdXJjZVR5cGU7XG5cbiAgLyoqIEluaXRpYWwgdGVtcGxhdGUgSUQgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsVGVtcGxhdGVJZD86IHN0cmluZztcblxuICAvKiogSW5pdGlhbCB0ZW1wbGF0ZSBuYW1lIGZvciBlZGl0IG1vZGUgKHdoZW4gdGVtcGxhdGVTb3VyY2UgaXMgJ2NyZWF0ZU5ldycpICovXG4gIEBJbnB1dCgpIGluaXRpYWxUZW1wbGF0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIEluaXRpYWwgdGVtcGxhdGUgZGVzY3JpcHRpb24gZm9yIGVkaXQgbW9kZSAod2hlbiB0ZW1wbGF0ZVNvdXJjZSBpcyAnY3JlYXRlTmV3JykgKi9cbiAgQElucHV0KCkgaW5pdGlhbFRlbXBsYXRlRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqIEluaXRpYWwgbWFwcGluZ3MgZm9yIGVkaXQgbW9kZSAqL1xuICBASW5wdXQoKSBpbml0aWFsTWFwcGluZ3M/OiBEb2N1bWVudE1hcHBpbmdSb3dbXTtcblxuICAvKiogV2hldGhlciBpbiBlZGl0IG1vZGUgKi9cbiAgQElucHV0KCkgZWRpdE1vZGU/OiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBoZWxwIHRvb2x0aXAgaXMgdmlzaWJsZSAqL1xuICBzaG93SGVscFRvb2x0aXAgPSBmYWxzZTtcblxuICAvKiogRW1pdCB3aGVuIHN0ZXAgaXMgY3JlYXRlZCAqL1xuICBAT3V0cHV0KCkgY3JlYXRlU3RlcCA9IG5ldyBFdmVudEVtaXR0ZXI8RG9jdW1lbnRGb3JtRGF0YT4oKTtcblxuICAvKiogRW1pdCB3aGVuIGNhbmNlbGxlZCAqL1xuICBAT3V0cHV0KCkgY2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBFbWl0IHdoZW4gXCJDcmVhdGUgVGVtcGxhdGVcIiBpcyBjbGlja2VkIChDcmVhdGUgTmV3IGZsb3cpLiBIb3N0IGNhbiBjcmVhdGUgdGVtcGxhdGUgdmlhIEFQSS4gKi9cbiAgQE91dHB1dCgpIGNyZWF0ZVRlbXBsYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRlbXBsYXRlTmFtZTogc3RyaW5nOyB0ZW1wbGF0ZURlc2NyaXB0aW9uOiBzdHJpbmcgfT4oKTtcblxuICBkb2N1bWVudEZvcm06IEZvcm1Hcm91cDtcbiAgc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZTogVGVtcGxhdGVTb3VyY2VUeXBlID0gJ2V4aXN0aW5nJztcbiAgLyoqIFVwbG9hZGVkIGZpbGUgd2hlbiBUZW1wbGF0ZSBTb3VyY2UgaXMgXCJVcGxvYWQgVGVtcGxhdGVcIiAqL1xuICB1cGxvYWRlZEZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcbiAgLyoqIFZpc3VhbCBzdGF0ZSBmb3IgZHJhZy1hbmQtZHJvcCB6b25lICovXG4gIGlzRHJhZ092ZXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZG9jdW1lbnRGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBkb2N1bWVudFR5cGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvdXRwdXRWYXJpYWJsZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHRlbXBsYXRlU291cmNlOiBbJ2V4aXN0aW5nJ10sXG4gICAgICB0ZW1wbGF0ZUlkOiBbbnVsbF0sXG4gICAgICB0ZW1wbGF0ZU5hbWU6IFsnJ10sXG4gICAgICB0ZW1wbGF0ZURlc2NyaXB0aW9uOiBbJyddLFxuICAgICAgbWFwcGluZ3M6IHRoaXMuZmIuYXJyYXkoW10pXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGVTb3VyY2UgPSB0aGlzLmluaXRpYWxUZW1wbGF0ZVNvdXJjZSB8fCB0aGlzLmRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlU291cmNlJyk/LnZhbHVlIHx8ICdleGlzdGluZyc7XG4gICAgdGhpcy5pbml0aWFsaXplRm9ybVdpdGhJbml0aWFsVmFsdWVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RvY3VtZW50VHlwZU9wdGlvbnMnXSB8fCBjaGFuZ2VzWyd0ZW1wbGF0ZU9wdGlvbnMnXSB8fCBjaGFuZ2VzWyd2YWx1ZVR5cGVPcHRpb25zJ10pIHtcbiAgICAgIC8vIENvbmZpZ3MgYXJlIGJ1aWx0IGZyb20gaW5wdXRzIGluIGdldHRlcnM7IG5vIG5lZWQgdG8gcmVidWlsZCBmb3JtXG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpbml0aWFsRG9jdW1lbnRUeXBlJ10gfHwgY2hhbmdlc1snaW5pdGlhbE91dHB1dFZhcmlhYmxlJ10gfHwgY2hhbmdlc1snaW5pdGlhbFRlbXBsYXRlU291cmNlJ10gfHwgXG4gICAgICAgIGNoYW5nZXNbJ2luaXRpYWxUZW1wbGF0ZUlkJ10gfHwgY2hhbmdlc1snaW5pdGlhbE1hcHBpbmdzJ10gfHwgY2hhbmdlc1snaW5pdGlhbFRlbXBsYXRlTmFtZSddIHx8IFxuICAgICAgICBjaGFuZ2VzWydpbml0aWFsVGVtcGxhdGVEZXNjcmlwdGlvbiddKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtV2l0aEluaXRpYWxWYWx1ZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtV2l0aEluaXRpYWxWYWx1ZXMoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgbWFwcGluZ3NcbiAgICB3aGlsZSAodGhpcy5tYXBwaW5nc0Zvcm1BcnJheS5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMubWFwcGluZ3NGb3JtQXJyYXkucmVtb3ZlQXQoMCk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGluaXRpYWwgdmFsdWVzIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMuaW5pdGlhbERvY3VtZW50VHlwZSkge1xuICAgICAgdGhpcy5kb2N1bWVudEZvcm0ucGF0Y2hWYWx1ZSh7IGRvY3VtZW50VHlwZTogdGhpcy5pbml0aWFsRG9jdW1lbnRUeXBlIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbml0aWFsT3V0cHV0VmFyaWFibGUpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRGb3JtLnBhdGNoVmFsdWUoeyBvdXRwdXRWYXJpYWJsZTogdGhpcy5pbml0aWFsT3V0cHV0VmFyaWFibGUgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRpYWxUZW1wbGF0ZVNvdXJjZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlID0gdGhpcy5pbml0aWFsVGVtcGxhdGVTb3VyY2U7XG4gICAgICB0aGlzLmRvY3VtZW50Rm9ybS5wYXRjaFZhbHVlKHsgdGVtcGxhdGVTb3VyY2U6IHRoaXMuaW5pdGlhbFRlbXBsYXRlU291cmNlIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbml0aWFsVGVtcGxhdGVJZCkge1xuICAgICAgdGhpcy5kb2N1bWVudEZvcm0ucGF0Y2hWYWx1ZSh7IHRlbXBsYXRlSWQ6IHRoaXMuaW5pdGlhbFRlbXBsYXRlSWQgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRpYWxUZW1wbGF0ZU5hbWUpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRGb3JtLnBhdGNoVmFsdWUoeyB0ZW1wbGF0ZU5hbWU6IHRoaXMuaW5pdGlhbFRlbXBsYXRlTmFtZSB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5pdGlhbFRlbXBsYXRlRGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRGb3JtLnBhdGNoVmFsdWUoeyB0ZW1wbGF0ZURlc2NyaXB0aW9uOiB0aGlzLmluaXRpYWxUZW1wbGF0ZURlc2NyaXB0aW9uIH0pO1xuICAgIH1cblxuICAgIC8vIExvYWQgaW5pdGlhbCBtYXBwaW5nc1xuICAgIGlmICh0aGlzLmluaXRpYWxNYXBwaW5ncyAmJiB0aGlzLmluaXRpYWxNYXBwaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmluaXRpYWxNYXBwaW5ncy5mb3JFYWNoKG1hcHBpbmcgPT4ge1xuICAgICAgICBjb25zdCBtYXBwaW5nR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICBrZXk6IFttYXBwaW5nLmtleSB8fCAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgdmFsdWVUeXBlOiBbbWFwcGluZy52YWx1ZVR5cGUgfHwgJ3ZhcmlhYmxlJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgdmFsdWU6IFttYXBwaW5nLnZhbHVlIHx8ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICBlbmFibGVkOiBbbWFwcGluZy5lbmFibGVkID8/IGZhbHNlXVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXBwaW5nc0Zvcm1BcnJheS5wdXNoKG1hcHBpbmdHcm91cCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQWRkIG9uZSBlbXB0eSBtYXBwaW5nIGlmIG5vIGluaXRpYWwgbWFwcGluZ3NcbiAgICAgIGlmICh0aGlzLm1hcHBpbmdzRm9ybUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmFkZE1hcHBpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgbWFwcGluZ3NGb3JtQXJyYXkoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudEZvcm0uZ2V0KCdtYXBwaW5ncycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGdldERvY3VtZW50VHlwZUNvbmZpZygpOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICdkb2N1bWVudFR5cGUnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdTZWxlY3QgZG9jdW1lbnQgdHlwZScsXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBzZWFyY2hhYmxlOiBmYWxzZSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuZG9jdW1lbnRUeXBlT3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBnZXRUZW1wbGF0ZVNlbGVjdENvbmZpZygpOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICd0ZW1wbGF0ZUlkJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IFRlbXBsYXRlIGRyb3Bkb3duJyxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgb3B0aW9uczogdGhpcy50ZW1wbGF0ZU9wdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgZ2V0VmFsdWVUeXBlQ29uZmlnKGluZGV4OiBudW1iZXIpOiBEeW5hbWljU2VsZWN0RmllbGRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6ICd2YWx1ZVR5cGUnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdWYWx1ZSBUeXBlJyxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgb3B0aW9uczogdGhpcy52YWx1ZVR5cGVPcHRpb25zLFxuICAgICAgb25DaGFuZ2U6ICgpID0+IHt9XG4gICAgfTtcbiAgfVxuXG4gIG9uVGVtcGxhdGVTb3VyY2VDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSA9IHZhbHVlIGFzIFRlbXBsYXRlU291cmNlVHlwZTtcbiAgICB0aGlzLmRvY3VtZW50Rm9ybS5wYXRjaFZhbHVlKHsgdGVtcGxhdGVTb3VyY2U6IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSB9KTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlICE9PSAndXBsb2FkJykge1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIG9uQ3JlYXRlVGVtcGxhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZG9jdW1lbnRGb3JtLmdldCgndGVtcGxhdGVOYW1lJyk/LnZhbHVlPy50cmltKCkgPz8gJyc7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLmRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlRGVzY3JpcHRpb24nKT8udmFsdWU/LnRyaW0oKSA/PyAnJztcbiAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlLmVtaXQoeyB0ZW1wbGF0ZU5hbWU6IG5hbWUsIHRlbXBsYXRlRGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIH0pO1xuICB9XG5cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGUgPSBmaWxlO1xuICAgIH1cbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlO1xuICB9XG5cbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc0RyYWdPdmVyID0gZmFsc2U7XG4gIH1cblxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc0RyYWdPdmVyID0gZmFsc2U7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM/LlswXTtcbiAgICBpZiAoZmlsZSAmJiB0aGlzLmlzQWNjZXB0ZWRUZW1wbGF0ZUZpbGUoZmlsZSkpIHtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlID0gZmlsZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQWNjZXB0ZWRUZW1wbGF0ZUZpbGUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjY2VwdGVkID0gWycucGRmJywgJy5kb2MnLCAnLmRvY3gnLCAnLnR4dCddO1xuICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gYWNjZXB0ZWQuc29tZShleHQgPT4gbmFtZS5lbmRzV2l0aChleHQpKTtcbiAgfVxuXG4gIGFkZE1hcHBpbmcoKTogdm9pZCB7XG4gICAgY29uc3QgbWFwcGluZ0dyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBrZXk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB2YWx1ZVR5cGU6IFsndmFyaWFibGUnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHZhbHVlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZW5hYmxlZDogW2ZhbHNlXVxuICAgIH0pO1xuICAgIHRoaXMubWFwcGluZ3NGb3JtQXJyYXkucHVzaChtYXBwaW5nR3JvdXApO1xuICB9XG5cbiAgcmVtb3ZlTWFwcGluZyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXBwaW5nc0Zvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBnZXRNYXBwaW5nRm9ybUdyb3VwKGluZGV4OiBudW1iZXIpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdzRm9ybUFycmF5LmF0KGluZGV4KSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICAvKiogVHJ1ZSB3aGVuIGV2ZXJ5IG1hcHBpbmcgcm93IGhhcyBlbmFibGVkID09PSB0cnVlICovXG4gIGdldCBhbGxNYXBwaW5nc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxlbiA9IHRoaXMubWFwcGluZ3NGb3JtQXJyYXkubGVuZ3RoO1xuICAgIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuZ2V0TWFwcGluZ0Zvcm1Hcm91cChpKS5nZXQoJ2VuYWJsZWQnKT8udmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogVHJ1ZSB3aGVuIGF0IGxlYXN0IG9uZSBtYXBwaW5nIHJvdyBoYXMgZW5hYmxlZCA9PT0gdHJ1ZSAoZm9yIGhlYWRlciBpbmRldGVybWluYXRlKSAqL1xuICBnZXQgc29tZU1hcHBpbmdzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hcHBpbmdzRm9ybUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgnZW5hYmxlZCcpPy52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uU2VsZWN0QWxsTWFwcGluZ3MoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubWFwcGluZ3NGb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoXywgaSkgPT4ge1xuICAgICAgdGhpcy5nZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgnZW5hYmxlZCcpPy5zZXRWYWx1ZShjaGVja2VkKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsbGVkLmVtaXQoKTtcbiAgfVxuXG4gIGlzRm9ybVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIG1haW4gZm9ybSBpcyB2YWxpZCAoZG9jdW1lbnRUeXBlIGFuZCBvdXRwdXRWYXJpYWJsZSBhcmUgcmVxdWlyZWQpXG4gICAgaWYgKCF0aGlzLmRvY3VtZW50Rm9ybS52YWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIHRlbXBsYXRlIHNvdXJjZSBzcGVjaWZpYyByZXF1aXJlbWVudHNcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlID09PSAnZXhpc3RpbmcnKSB7XG4gICAgICBjb25zdCB0ZW1wbGF0ZUlkID0gdGhpcy5kb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZUlkJyk/LnZhbHVlO1xuICAgICAgaWYgKCF0ZW1wbGF0ZUlkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSA9PT0gJ3VwbG9hZCcpIHtcbiAgICAgIGlmICghdGhpcy51cGxvYWRlZEZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlID09PSAnY3JlYXRlTmV3Jykge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZG9jdW1lbnRGb3JtLmdldCgndGVtcGxhdGVOYW1lJyk/LnZhbHVlPy50cmltKCk7XG4gICAgICBjb25zdCBkZXNjID0gdGhpcy5kb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZURlc2NyaXB0aW9uJyk/LnZhbHVlPy50cmltKCk7XG4gICAgICBpZiAoIW5hbWUgfHwgIWRlc2MpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25DcmVhdGVTdGVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Zvcm1WYWxpZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZG9jdW1lbnRGb3JtLnZhbHVlO1xuICAgIGNvbnN0IHN0ZXBEYXRhOiBEb2N1bWVudEZvcm1EYXRhID0ge1xuICAgICAgZG9jdW1lbnRUeXBlOiBmb3JtVmFsdWUuZG9jdW1lbnRUeXBlLFxuICAgICAgb3V0cHV0VmFyaWFibGU6IGZvcm1WYWx1ZS5vdXRwdXRWYXJpYWJsZSxcbiAgICAgIHRlbXBsYXRlU291cmNlOiB0aGlzLnNlbGVjdGVkVGVtcGxhdGVTb3VyY2UsXG4gICAgICB0ZW1wbGF0ZUlkOiBmb3JtVmFsdWUudGVtcGxhdGVJZCB8fCB1bmRlZmluZWQsXG4gICAgICAuLi4odGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlID09PSAndXBsb2FkJyAmJiB0aGlzLnVwbG9hZGVkRmlsZSAmJiB7IHVwbG9hZGVkRmlsZTogdGhpcy51cGxvYWRlZEZpbGUgfSksXG4gICAgICAuLi4odGhpcy5zZWxlY3RlZFRlbXBsYXRlU291cmNlID09PSAnY3JlYXRlTmV3JyAmJiB7XG4gICAgICAgIHRlbXBsYXRlTmFtZTogKGZvcm1WYWx1ZS50ZW1wbGF0ZU5hbWUgPz8gJycpLnRyaW0oKSxcbiAgICAgICAgdGVtcGxhdGVEZXNjcmlwdGlvbjogKGZvcm1WYWx1ZS50ZW1wbGF0ZURlc2NyaXB0aW9uID8/ICcnKS50cmltKClcbiAgICAgIH0pLFxuICAgICAgbWFwcGluZ3M6IChmb3JtVmFsdWUubWFwcGluZ3MgfHwgW10pLm1hcCgobTogYW55KSA9PiAoe1xuICAgICAgICBrZXk6IG0ua2V5IHx8ICcnLFxuICAgICAgICB2YWx1ZVR5cGU6IG0udmFsdWVUeXBlIHx8ICd2YXJpYWJsZScsXG4gICAgICAgIHZhbHVlOiBtLnZhbHVlIHx8ICcnLFxuICAgICAgICBlbmFibGVkOiBtLmVuYWJsZWQgPz8gZmFsc2VcbiAgICAgIH0pKVxuICAgIH07XG4gICAgdGhpcy5jcmVhdGVTdGVwLmVtaXQoc3RlcERhdGEpO1xuICB9XG5cbiAgb25NYXBwZXJIZWxwQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWFwcGVySGVscFVybCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHdpbmRvdy5vcGVuKHRoaXMubWFwcGVySGVscFVybCwgJ19ibGFuaycpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290IGNxYS1ibG9jayBjcWEtdy1mdWxsIGNxYS1taW4tdy0wIGNxYS1zdGVwLWJ1aWxkZXItZG9jdW1lbnRcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS13LWZ1bGwgY3FhLW1pbi13LTAgY3FhLWgtZnVsbCBjcWEtYmctd2hpdGUgY3FhLWJvcmRlciBjcWEtYm94LWJvcmRlciBjcWEtbWF4LXctZnVsbCBjcWEtb3BhY2l0eS0xMDBcIj5cbiAgICA8IS0tIENvbnRlbnQgYXJlYTogcGFkZGluZyAxNnB4LCBnYXAgMTJweCBiZXR3ZWVuIHNlY3Rpb25zIChubyBmbGV4LTEgdG8gYXZvaWQgZ2FwIGFib3ZlIGZvb3RlcikgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZmxleC1zaHJpbmstMCBjcWEtb3ZlcmZsb3cteS1hdXRvIGNxYS1wLTQgY3FhLWdhcC0zXCI+XG4gIDwhLS0gSGVhZGVyOiBEb2N1bWVudCBHZW5lcmF0aW9uIFRlbXBsYXRlIFN0ZXAgKGxlZnQtYWxpZ25lZCwgSW50ZXIgNjAwIDEycHggbGluZS1oZWlnaHQgMTAwJSkgLS0+XG4gIDxoMlxuICAgIGNsYXNzPVwiY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxMDAlXSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzExMTgyN10gY3FhLW0tMCBjcWEtdGV4dC1sZWZ0IGNxYS1mbGV4LXNocmluay0wIGNxYS1hbGlnbi1taWRkbGVcIj5cbiAgICBEb2N1bWVudCBHZW5lcmF0aW9uIFRlbXBsYXRlIFN0ZXBcbiAgPC9oMj5cblxuICAgIDwhLS0gRG9jdW1lbnQgVHlwZSBhbmQgT3V0cHV0IFZhcmlhYmxlIFJvdyAoZ2FwIDEycHggYmV0d2VlbiBjb2x1bW5zKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtd3JhcCBjcWEtZmxleC1zaHJpbmstMCBjcWEtZ2FwLTE0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMCBjcWEtbWluLXctW2NhbGMoNDUlLTZweCldIFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMzNzQxNTFdIGNxYS1tYi0xLjUgY3FhLWJsb2NrXCI+XG4gICAgICAgICAgRG9jdW1lbnQgVHlwZSA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHlwZS1zZWxlY3RcIj5cbiAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0XG4gICAgICAgICAgICBbZm9ybV09XCJkb2N1bWVudEZvcm1cIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJnZXREb2N1bWVudFR5cGVDb25maWcoKVwiPlxuICAgICAgICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgIENob29zZSB0aGUgZmlsZSBmb3JtYXQgeW91IHdhbnQgdG8gZ2VuZXJhdGUuXG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLW1pbi13LVtjYWxjKDQ1JS02cHgpXVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMzNzQxNTFdIGNxYS1tYi0xLjUgY3FhLWJsb2NrXCI+XG4gICAgICAgICAgT3V0cHV0IFZhcmlhYmxlIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJJbnB1dFwiXG4gICAgICAgICAgW3ZhbHVlXT1cImRvY3VtZW50Rm9ybS5nZXQoJ291dHB1dFZhcmlhYmxlJyk/LnZhbHVlXCJcbiAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkb2N1bWVudEZvcm0uZ2V0KCdvdXRwdXRWYXJpYWJsZScpPy5zZXRWYWx1ZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLW10LTEgY3FhLW0tMFwiPlxuICAgICAgICAgIFN0b3JlcyB0aGUgZ2VuZXJhdGVkIGZpbGUgc28gaXQgY2FuIGJlIHVzZWQgaW4gbGF0ZXIgc3RlcHMuXG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUZW1wbGF0ZSBTb3VyY2UgU2VjdGlvbjogbGFiZWwgbGVmdCwgdGFicyByaWdodCBvbiBzYW1lIHJvdyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1mbGV4LXNocmluay0wIGNxYS1nYXAtM1wiPlxuICAgICAgXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1nYXAtNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMzNzQxNTFdIGNxYS1tLTAgY3FhLWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICBUZW1wbGF0ZSBTb3VyY2VcbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGNxYS1zZWdtZW50LWNvbnRyb2xcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgICAgICBbc2VnbWVudHNdPVwiW1xuICAgICAgICAgICAgeyBsYWJlbDogJ1VzZSBFeGlzdGluZyBUZW1wbGF0ZScsIHZhbHVlOiAnZXhpc3RpbmcnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnVXBsb2FkIFRlbXBsYXRlJywgdmFsdWU6ICd1cGxvYWQnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnQ3JlYXRlIE5ldycsIHZhbHVlOiAnY3JlYXRlTmV3JyB9XG4gICAgICAgICAgXVwiXG4gICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkVGVtcGxhdGVTb3VyY2VcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblRlbXBsYXRlU291cmNlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9jcWEtc2VnbWVudC1jb250cm9sPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHlwZS1zZWxlY3RcIiAqbmdJZj1cInNlbGVjdGVkVGVtcGxhdGVTb3VyY2UgPT09ICdleGlzdGluZydcIj5cbiAgICAgICAgPGNxYS1keW5hbWljLXNlbGVjdFxuICAgICAgICAgIFtmb3JtXT1cImRvY3VtZW50Rm9ybVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJnZXRUZW1wbGF0ZVNlbGVjdENvbmZpZygpXCI+XG4gICAgICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVXBsb2FkIFRlbXBsYXRlOiBDUUEgZHJhZy1hbmQtZHJvcCB6b25lIChtaW5pbWFsLCB3aGl0ZSwgY2VudGVyZWQpIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkVGVtcGxhdGVTb3VyY2UgPT09ICd1cGxvYWQnXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xLjVcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtbS0wXCI+XG4gICAgICAgICAgQXR0YWNobWVudCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIGFjY2VwdD1cIi5wZGYsLmRvYywuZG9jeCwudHh0XCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1oaWRkZW5cIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1taW4taC1bMTQwcHhdIGNxYS1yb3VuZGVkIGNxYS1ib3JkZXItMiBjcWEtYm9yZGVyLWRhc2hlZCBjcWEtYm9yZGVyLWdyYXktMzAwIGNxYS1iZy13aGl0ZSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWdhcC0zIGNxYS1wLTYgY3FhLWN1cnNvci1wb2ludGVyIGNxYS10cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgW2NsYXNzLmNxYS1yaW5nLTJdPVwiaXNEcmFnT3ZlclwiXG4gICAgICAgICAgW2NsYXNzLmNxYS1yaW5nLVsjM0Y0M0VFXV09XCJpc0RyYWdPdmVyXCJcbiAgICAgICAgICBbY2xhc3MuY3FhLXJpbmctaW5zZXRdPVwiaXNEcmFnT3ZlclwiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlVwbG9hZCB0ZW1wbGF0ZSBmaWxlXCI+XG4gICAgICAgICAgPCEtLSBVcGxvYWQgaWNvbjogYXJyb3cgaW4gZm9sZGVyL2JveCAoZGFyayBncmF5KSAtLT5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3FhLXctOCBjcWEtaC04ICBjcWEtZm9udC1ib2xkXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTRcIi8+XG4gICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMTcgOCAxMiAzIDcgOFwiLz5cbiAgICAgICAgICAgIDxsaW5lIHgxPVwiMTJcIiB5MT1cIjNcIiB4Mj1cIjEyXCIgeTI9XCIxNVwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LWJhc2UgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS1tLTAgY3FhLXRleHQtY2VudGVyIGNxYS1mb250LWJvbGRcIj5cbiAgICAgICAgICAgIERyYWcgYW5kIGRyb3AgZmlsZXMgaGVyZSBvciA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtZm9udC1tZWRpdW0gaG92ZXI6Y3FhLXVuZGVybGluZVwiPmJyb3dzZTwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW0tMFwiPlxuICAgICAgICAgICAgUERGLCBET0MsIG9yIFRYVCBmaWxlc1xuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1tLTBcIj5cbiAgICAgICAgICBDaG9vc2UgdGhlIGZpbGUgZm9ybWF0IHlvdSB3YW50IHRvIGdlbmVyYXRlLlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gQ3JlYXRlIE5ldzogVGVtcGxhdGUgTmFtZSwgVGVtcGxhdGUgRGVzY3JpcHRpb24sIENyZWF0ZSBUZW1wbGF0ZSBidXR0b24gLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUZW1wbGF0ZVNvdXJjZSA9PT0gJ2NyZWF0ZU5ldydcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLW1pbi13LVtjYWxjKDUwJS02cHgpXVwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtbWItMS41IGNxYS1ibG9ja1wiPlxuICAgICAgICAgICAgICBUZW1wbGF0ZSBOYW1lIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQREYgRG9jdW1lbnQgKC5wZGYpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImRvY3VtZW50Rm9ybS5nZXQoJ3RlbXBsYXRlTmFtZScpPy52YWx1ZVwiXG4gICAgICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZU5hbWUnKT8uc2V0VmFsdWUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9jcWEtY3VzdG9tLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wIGNxYS1taW4tdy1bY2FsYyg1MCUtNnB4KV1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzM3NDE1MV0gY3FhLW1iLTEuNSBjcWEtYmxvY2tcIj5cbiAgICAgICAgICAgICAgVGVtcGxhdGUgRGVzY3JpcHRpb24gPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8Y3FhLWN1c3RvbS1pbnB1dFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBERiBEb2N1bWVudCAoLnBkZilcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZG9jdW1lbnRGb3JtLmdldCgndGVtcGxhdGVEZXNjcmlwdGlvbicpPy52YWx1ZVwiXG4gICAgICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkb2N1bWVudEZvcm0uZ2V0KCd0ZW1wbGF0ZURlc2NyaXB0aW9uJyk/LnNldFZhbHVlKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1lbmRcIj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgICAgICBidG5TaXplPVwibGdcIlxuICAgICAgICAgICAgdGV4dD1cIkNyZWF0ZSBUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzNGNDNFRV0gY3FhLWJnLVsjM0Y0M0VFXSdcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25DcmVhdGVUZW1wbGF0ZSgpXCI+XG4gICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEb2N1bWVudCBNYXBwZXIgU2VjdGlvbjogdGl0bGUgKyBzdWJ0aXRsZSBsZWZ0LCBOZWVkIGhlbHA/IHJpZ2h0IChDUUEgdGFibGUgYmVsb3cpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWdhcC0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0YXJ0IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLW1pbi13LTBcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJjcWEtdGV4dC1iYXNlIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1bMTRweF0gY3FhLW0tMCBjcWEtbGVhZGluZy10aWdodFwiPlxuICAgICAgICAgICAgRG9jdW1lbnQgTWFwcGVyXG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLW0tMCBjcWEtbXQtMC41XCI+XG4gICAgICAgICAgICBNYXAgcGxhY2Vob2xkZXJzIHRvIGR5bmFtaWMgdmFsdWVzLlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLWlubGluZS1mbGV4IGNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzaG93SGVscFRvb2x0aXAgPSB0cnVlXCJcbiAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJzaG93SGVscFRvb2x0aXAgPSBmYWxzZVwiPlxuICAgICAgICAgIDxhICpuZ0lmPVwibWFwcGVySGVscFVybFwiXG4gICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgIChjbGljayk9XCJvbk1hcHBlckhlbHBDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzIxcHhdIGNxYS1uby11bmRlcmxpbmUgY3FhLWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjM0Y0M0VFXVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2hlbHAtaWNvbi1jbGlwLWRvYylcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNTAwMzMgMTQuNjY2M0MxMi40MTIzIDE0LjY2NjMgMTUuNTgzNyAxMS42ODE2IDE1LjU4MzcgNy45OTk2N0MxNS41ODM3IDQuMzE3NzggMTIuNDEyMyAxLjMzMzAxIDguNTAwMzMgMS4zMzMwMUM0LjU4ODMxIDEuMzMzMDEgMS40MTY5OSA0LjMxNzc4IDEuNDE2OTkgNy45OTk2N0MxLjQxNjk5IDExLjY4MTYgNC41ODgzMSAxNC42NjYzIDguNTAwMzMgMTQuNjY2M1pcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjQzODQ4IDYuMDAwMzhDNi42MDUwMSA1LjU1NDgzIDYuOTMzNzEgNS4xNzkxMiA3LjM2NjM2IDQuOTM5OEM3Ljc5OTAxIDQuNzAwNDkgOC4zMDc2OSA0LjYxMzAxIDguODAyMzEgNC42OTI4NUM5LjI5NjkzIDQuNzcyNyA5Ljc0NTU2IDUuMDE0NzMgMTAuMDY4NyA1LjM3NjA3QzEwLjM5MTkgNS43Mzc0IDEwLjU2ODggNi4xOTQ3MyAxMC41NjgxIDYuNjY3MDVDMTAuNTY4MSA4LjAwMDM4IDguNDQzMDYgOC42NjcwNSA4LjQ0MzA2IDguNjY3MDVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTEuMzMzSDguNTA5NjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiaGVscC1pY29uLWNsaXAtZG9jXCI+XG4gICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIi8+XG4gICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICBOZWVkIGhlbHAgP1xuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFtYXBwZXJIZWxwVXJsXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41IGNxYS1mb250LVs1MDBdIGNxYS10ZXh0LVsxMHB4XSBjcWEtY3Vyc29yLWRlZmF1bHQgY3FhLXRleHQtWyMzNzQxNTFdXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNxYS1mbGV4LXNocmluay0wIGNxYS10ZXh0LVsjM0Y0M0VFXVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2hlbHAtaWNvbi1jbGlwLWRvYy1ub2xpbmspXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjUwMDMzIDE0LjY2NjNDMTIuNDEyMyAxNC42NjYzIDE1LjU4MzcgMTEuNjgxNiAxNS41ODM3IDcuOTk5NjdDMTUuNTgzNyA0LjMxNzc4IDEyLjQxMjMgMS4zMzMwMSA4LjUwMDMzIDEuMzMzMDFDNC41ODgzMSAxLjMzMzAxIDEuNDE2OTkgNC4zMTc3OCAxLjQxNjk5IDcuOTk5NjdDMS40MTY5OSAxMS42ODE2IDQuNTg4MzEgMTQuNjY2MyA4LjUwMDMzIDE0LjY2NjNaXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi40Mzg0OCA2LjAwMDM4QzYuNjA1MDEgNS41NTQ4MyA2LjkzMzcxIDUuMTc5MTIgNy4zNjYzNiA0LjkzOThDNy43OTkwMSA0LjcwMDQ5IDguMzA3NjkgNC42MTMwMSA4LjgwMjMxIDQuNjkyODVDOS4yOTY5MyA0Ljc3MjcgOS43NDU1NiA1LjAxNDczIDEwLjA2ODcgNS4zNzYwN0MxMC4zOTE5IDUuNzM3NCAxMC41Njg4IDYuMTk0NzMgMTAuNTY4MSA2LjY2NzA1QzEwLjU2ODEgOC4wMDAzOCA4LjQ0MzA2IDguNjY3MDUgOC40NDMwNiA4LjY2NzA1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC41IDExLjMzM0g4LjUwOTY2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImhlbHAtaWNvbi1jbGlwLWRvYy1ub2xpbmtcIj5cbiAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIE5lZWQgaGVscCA/XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SGVscFRvb2x0aXBcIiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcG9pbnRlci1ldmVudHMtbm9uZSBjcWEtei1bMTAwXSBjcWEtdG9wLVstMjRweF0gY3FhLWxlZnQtWy0yMDNweF1cIiByb2xlPVwidG9vbHRpcFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LXdoaXRlIGNxYS10ZXh0LWNlbnRlciBjcWEtd2hpdGVzcGFjZS1ub3dyYXAgY3FhLXctWzMwNnB4XSBjcWEtbWluLWgtNSBjcWEtcm91bmRlZC1bNnB4XSBjcWEtb3BhY2l0eS0xMDAgY3FhLXB4LTIgY3FhLXB5LTEgY3FhLWJnLVsjMEEwQTBBXSBjcWEtbGVhZGluZy01IGNxYS10ZXh0LVs4cHhdXCI+XG4gICAgICAgICAgICAgIHt7IG1hcHBlckhlbHBUb29sdGlwVGV4dCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFRhYmxlIG9yIGVtcHR5IHN0YXRlOiBzYW1lIGNvbnRhaW5lciwgaGVhZGVyIGFsd2F5cyB2aXNpYmxlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1yb3VuZGVkLWxnIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLWJnLXdoaXRlIGNxYS1zaGFkb3ctc20gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiY3FhLXctZnVsbFwiPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImNxYS1pdGVtcy1jZW50ZXIgY3FhLWJnLVsjRDhEOUZDNERdXCI+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNxYS1weS1bMTMuMjVweF0gY3FhLXB4LVsxMC41cHhdIGNxYS10ZXh0LXhzIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtdGV4dC1sZWZ0IGNxYS13LVs0MHB4XSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwiYWxsTWFwcGluZ3NTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNvbWVNYXBwaW5nc1NlbGVjdGVkICYmICFhbGxNYXBwaW5nc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdEFsbE1hcHBpbmdzKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgYWxsIG1hcHBpbmdzXCI+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNxYS1weS1bMTMuMjVweF0gY3FhLXB4LVsxMC41cHhdIGNxYS10ZXh0LXhzIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMzc0MTUxXSBjcWEtdGV4dC1sZWZ0IGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWdyYXktMjAwXCI+S2V5PC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3FhLXB5LVsxMy4yNXB4XSBjcWEtcHgtWzEwLjVweF0gY3FhLXRleHQteHMgY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LWxlZnQgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDAgY3FhLXctWzEyMHB4XVwiPlZhbHVlIFR5cGU8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjcWEtcHktWzEzLjI1cHhdIGNxYS1weC1bMTAuNXB4XSBjcWEtdGV4dC14cyBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzM3NDE1MV0gY3FhLXRleHQtbGVmdCBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlZhbHVlPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3FhLXB5LVsxMy4yNXB4XSBjcWEtcHgtWzEwLjVweF0gY3FhLXRleHQteHMgY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LWxlZnQgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDAgY3FhLXctWzQ4cHhdXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtc3Itb25seVwiPkRlbGV0ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJjcWEtdy1mdWxsXCI+XG4gICAgICAgICAgICA8IS0tIEVtcHR5IHN0YXRlIHdoZW4gbm8gbWFwcGluZ3MgLS0+XG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJtYXBwaW5nc0Zvcm1BcnJheS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1hbGlnbi1taWRkbGUgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1weS0xMiBjcWEtcHgtNCBjcWEtYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtWyM2QjcyODBdIGNxYS1tLTAgY3FhLW1iLTRcIj5TdGFydCBtYXBwaW5nIHBsYWNlaG9sZGVycyB0byB2YWx1ZXMuPC9wPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtcm91bmRlZC1sZyBjcWEtcHgtNCBjcWEtcHktMi41IGNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LXdoaXRlIGNxYS1iZy1bIzRGNDZFNV0gY3FhLWJvcmRlci1ub25lIGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS05MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE1hcHBpbmcoKVwiPlxuICAgICAgICAgICAgICAgICAgICBBZGQgZmlyc3QgbWFwcGluZ1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPCEtLSBEYXRhIHJvd3Mgd2hlbiB0aGVyZSBhcmUgbWFwcGluZ3MgLS0+XG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG1hcHBpbmcgb2YgbWFwcGluZ3NGb3JtQXJyYXkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGhvdmVyOmNxYS1iZy1bI0Y5RkFGQl1cIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3FhLXB4LVsxMC41cHhdIGNxYS1weS1bMTFweF0gY3FhLWFsaWduLW1pZGRsZSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwiZ2V0TWFwcGluZ0Zvcm1Hcm91cChpKS5nZXQoJ2VuYWJsZWQnKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImdldE1hcHBpbmdGb3JtR3JvdXAoaSkuZ2V0KCdlbmFibGVkJyk/LnNldFZhbHVlKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFbmFibGUgbWFwcGluZ1wiPlxuICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjcWEtcHgtWzEwLjVweF0gY3FhLXB5LVsxMXB4XSBjcWEtYWxpZ24tbWlkZGxlIGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWdyYXktMjAwIFwiPlxuICAgICAgICAgICAgICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0tleSdcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldE1hcHBpbmdGb3JtR3JvdXAoaSkuZ2V0KCdrZXknKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJnZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgna2V5Jyk/LnNldFZhbHVlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L2NxYS1jdXN0b20taW5wdXQ+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNxYS1weC1bMTAuNXB4XSBjcWEtcHktWzExcHhdIGNxYS1hbGlnbi1taWRkbGUgY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItZ3JheS0yMDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHlwZS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8Y3FhLWR5bmFtaWMtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBbZm9ybV09XCJnZXRNYXBwaW5nRm9ybUdyb3VwKGkpXCJcbiAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiZ2V0VmFsdWVUeXBlQ29uZmlnKGkpXCI+XG4gICAgICAgICAgICAgICAgPC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjcWEtcHgtWzEwLjVweF0gY3FhLXB5LVsxMXB4XSBjcWEtYWxpZ24tbWlkZGxlIGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLWdyYXktMjAwXCI+XG4gICAgICAgICAgICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVmFsdWUnXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgndmFsdWUnKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJnZXRNYXBwaW5nRm9ybUdyb3VwKGkpLmdldCgndmFsdWUnKT8uc2V0VmFsdWUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY3FhLXB4LVsxMC41cHhdIGNxYS1weS1bMTFweF0gY3FhLWFsaWduLW1pZGRsZSBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1ncmF5LTIwMFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy05IGNxYS1oLTkgY3FhLXJvdW5kZWQgY3FhLXRleHQtWyNFNTczNzNdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBjcWEtYm9yZGVyLW5vbmUgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS04MFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlTWFwcGluZyhpKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidEZWxldGUgbWFwcGluZydcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjcWEtdy01IGNxYS1oLTUgY3FhLWZsZXgtc2hyaW5rLTBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDZoMThNOCA2VjRhMiAyIDAgMDEyLTJoNGEyIDIgMCAwMTIgMnYybTMgMHYxNGEyIDIgMCAwMS0yIDJIN2EyIDIgMCAwMS0yLTJWNmgxNHpcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgMTF2Nk0xNCAxMXY2XCIvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgXG4gICAgICAgIDwvdGFibGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1lbmRcIiAqbmdJZj1cIm1hcHBpbmdzRm9ybUFycmF5Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXRleHQtWyMzRjQzRUVdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtYm9yZGVyLW5vbmUgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1wLTNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZE1hcHBpbmcoKVwiPlxuICAgICAgICAgICAgKyBBZGQgTWFwcGluZ1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktZW5kXCIgKm5nSWY9XCJtYXBwaW5nc0Zvcm1BcnJheS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsjM0Y0M0VFXSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE4cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWJvcmRlci1ub25lIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtcC0wXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkTWFwcGluZygpXCI+XG4gICAgICAgICAgKyBBZGQgTWFwcGluZ1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIFxuXG4gIDwhLS0gRGl2aWRlciBhYm92ZSBmb290ZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtaC1weCBjcWEtdy1mdWxsXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0cmV0Y2ggY3FhLXctZnVsbCBjcWEtcC00IGNxYS1nYXAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBidG5TaXplPVwibGdcIlxuICAgICAgICB0ZXh0PVwiQ2FuY2VsXCJcbiAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtdGV4dC1bMTRweF0gY3FhLXB5LVs5cHhdIGNxYS1ib3JkZXItWyM0MTQxNDZdJ1wiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIFt0ZXh0XT1cImVkaXRNb2RlID8gJ1VwZGF0ZSBTdGVwJyA6ICdDcmVhdGUgU3RlcCdcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzNGNDNFRV0nXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25DcmVhdGVTdGVwKClcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==