@fundamental-ngx/platform 0.44.0-rc.6 → 0.44.0
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.
- package/esm2022/action-bar/action-bar.component.mjs +3 -3
- package/esm2022/button/button.component.mjs +4 -3
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -2
- package/esm2022/feed-input/feed-input.component.mjs +3 -2
- package/esm2022/form/checkbox/checkbox.component.mjs +6 -5
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +3 -3
- package/esm2022/form/date-picker/date-picker.component.mjs +7 -6
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +6 -5
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +3 -2
- package/esm2022/form/form-group/form-field/form-field.component.mjs +4 -3
- package/esm2022/form/form-group/form-group.component.mjs +3 -3
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +3 -3
- package/esm2022/form/platform-file-uploader/platform-file-uploader.component.mjs +4 -3
- package/esm2022/form/radio-group/radio/radio.component.mjs +4 -3
- package/esm2022/form/select/commons/base-select.mjs +3 -3
- package/esm2022/form/select/select/select.component.mjs +4 -4
- package/esm2022/form/text-area/text-area.component.mjs +4 -4
- package/esm2022/form/time-picker/time-picker.component.mjs +3 -2
- package/esm2022/list/base-list-item.mjs +5 -5
- package/esm2022/page-footer/page-footer.component.mjs +3 -2
- package/esm2022/search-field/search-field.component.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +7 -6
- package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +3 -2
- package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +3 -3
- package/esm2022/thumbnail/thumbnail.component.mjs +3 -3
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +5 -5
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +4 -3
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +3 -2
- package/esm2022/value-help-dialog/components/value-help-dialog-search/value-help-dialog-search.component.mjs +3 -2
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +5 -5
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +2 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +31 -30
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +7 -7
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +11 -10
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +9 -8
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.44.0.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/fundamental-ngx-platform-v0.44.0-rc.6.tgz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Injector, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
3
3
|
import { take, tap } from 'rxjs/operators';
|
|
4
|
-
import { uuidv4 } from '@fundamental-ngx/
|
|
4
|
+
import { warnOnce, uuidv4 } from '@fundamental-ngx/core/utils';
|
|
5
5
|
import { DialogService } from '@fundamental-ngx/core/dialog';
|
|
6
6
|
import { ColumnAlign, SelectionMode } from '@fundamental-ngx/platform/table';
|
|
7
7
|
import { isDataSource } from '@fundamental-ngx/platform/shared';
|
|
@@ -74,7 +74,7 @@ export class UploadCollectionComponent {
|
|
|
74
74
|
* Allows to set own text for the 'No data' text label.
|
|
75
75
|
*/
|
|
76
76
|
set noDataText(value) {
|
|
77
|
-
|
|
77
|
+
warnOnce("Property noDataText is deprecated. Use i18n capabilities 'platformUploadCollection.noDataText' key instead.");
|
|
78
78
|
this._noDataText = value;
|
|
79
79
|
}
|
|
80
80
|
get noDataText() {
|
|
@@ -85,7 +85,7 @@ export class UploadCollectionComponent {
|
|
|
85
85
|
* Allows to set own text for the 'No data' description label.
|
|
86
86
|
*/
|
|
87
87
|
set noDataDescription(value) {
|
|
88
|
-
|
|
88
|
+
warnOnce("Property noDataDescription is deprecated. Use i18n capabilities 'platformUploadCollection.noDataDescription' key instead.");
|
|
89
89
|
this._noDataDescription = value;
|
|
90
90
|
}
|
|
91
91
|
get noDataDescription() {
|
|
@@ -218,7 +218,7 @@ export class UploadCollectionComponent {
|
|
|
218
218
|
];
|
|
219
219
|
/** @hidden */
|
|
220
220
|
this._onDestroy$ = new Subject();
|
|
221
|
-
|
|
221
|
+
warnOnce('The Upload Collection component is deprecated and will be removed in next release.');
|
|
222
222
|
}
|
|
223
223
|
/** @hidden */
|
|
224
224
|
ngOnChanges(changes) {
|
|
@@ -907,4 +907,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
907
907
|
type: ViewChild,
|
|
908
908
|
args: ['updateVersionInput']
|
|
909
909
|
}] } });
|
|
910
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWNvbGxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3VwbG9hZC1jb2xsZWN0aW9uL3VwbG9hZC1jb2xsZWN0aW9uL3VwbG9hZC1jb2xsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi91cGxvYWQtY29sbGVjdGlvbi91cGxvYWQtY29sbGVjdGlvbi91cGxvYWQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQWdDLE1BQU0saUNBQWlDLENBQUM7QUFDM0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQTZCLE1BQU0sc0NBQXNDLENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUtILGdCQUFnQixFQUNo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ICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyB1dWlkdjQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBEaWFsb2dDb25maWcsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IENvbHVtbkFsaWduLCBTZWxlY3Rpb25Nb2RlLCBUYWJsZVJvd1NlbGVjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZSc7XG5pbXBvcnQgeyBpc0RhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBOZXdGb2xkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL25ldy1mb2xkZXIvbmV3LWZvbGRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW92ZVRvQ29tcG9uZW50LCBNb3ZlVG9Db21wb25lbnREaWFsb2dEYXRhIH0gZnJvbSAnLi4vZGlhbG9ncy9tb3ZlLXRvL21vdmUtdG8uY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVzVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZpbGVzLXZhbGlkYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQnJlYWRjcnVtYkxpc3QsXG4gICAgSXRlbVBlclBhZ2UsXG4gICAgTWVzc2FnZSxcbiAgICBNZXNzYWdlT3B0aW9ucyxcbiAgICBNZXNzYWdlU3RyaXBUeXBlLFxuICAgIE1lc3NhZ2VUeXBlLFxuICAgIFVwbG9hZENvbGxlY3Rpb25GaWxlLFxuICAgIFVwbG9hZENvbGxlY3Rpb25Gb2xkZXIsXG4gICAgVXBsb2FkQ29sbGVjdGlvbkl0ZW0sXG4gICAgVXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMsXG4gICAgRmlsZW5hbWVMZW5ndGhFeGNlZWRFdmVudCxcbiAgICBGaWxlU2l6ZUV4Y2VlZEV2ZW50LFxuICAgIE1vdmVUb0V2ZW50LFxuICAgIFR5cGVNaXNtYXRjaEV2ZW50LFxuICAgIFVwZGF0ZVZlcnNpb25FdmVudCxcbiAgICBGaWxlc1ZhbGlkYXRvck91dHB1dCxcbiAgICBVcGxvYWRDb2xsZWN0aW9uQ21wXG59IGZyb20gJy4uL21vZGVscy91cGxvYWQtY29sbGVjdGlvbi5tb2RlbHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVNZXNzYWdlU3RyaXBlRGF0YSB9IGZyb20gJy4uL2hlbHBlcnMvZ2VuZXJhdGUtbWVzc2FnZS1zdHJpcGUtZGF0YSc7XG5pbXBvcnQgeyBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZSB9IGZyb20gJy4uL2RvbWFpbi91cGxvYWQtY29sbGVjdGlvbi1kYXRhLXNvdXJjZSc7XG5cbmV4cG9ydCB0eXBlIEZkcFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlID0gVXBsb2FkQ29sbGVjdGlvbkRhdGFTb3VyY2U7XG5cbmxldCByYW5kb21JZCA9IDA7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVwbG9hZENvbGxlY3Rpb24gY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtdXBsb2FkLWNvbGxlY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWNvbGxlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbGxlY3Rpb25Db21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBVcGxvYWRDb2xsZWN0aW9uQ21wPEZkcFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlPlxue1xuICAgIC8qKiBJRCBvZiB0aGUgdXBsb2FkIGNvbGxlY3Rpb24gZWxlbWVudC4gSWYgbm9uZSBpcyBwcm92aWRlZCwgb25lIHdpbGwgYmUgZ2VuZXJhdGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQgPSBgZmRwLXVwbG9hZC1jb2xsZWN0aW9uLWlkLSR7cmFuZG9tSWQrK31gO1xuXG4gICAgLyoqIERlZmluZXMgdGhlIG51bWJlciBvZiBpdGVtcyBvbiB0aGUgcGFnZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zUGVyUGFnZSh2YWx1ZTogbnVtYmVyIHwgSXRlbVBlclBhZ2VbXSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9tYXRjaCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5maW5kKChpdGVtKSA9PiBpdGVtLmRlZmF1bHQpO1xuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2VPcHRpb25zID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlID0gZGVmYXVsdFZhbHVlLmxhYmVsO1xuICAgICAgICAgICAgdGhpcy5fbWF0Y2goKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlID0gdmFsdWVbTWF0aC5yb3VuZCh2YWx1ZS5sZW5ndGggLyAyKV0ubGFiZWw7XG5cbiAgICAgICAgdGhpcy5fbWF0Y2goKTtcbiAgICB9XG4gICAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIgfCBJdGVtUGVyUGFnZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZTtcbiAgICB9XG5cbiAgICAvKiogTGlzdCBvZiBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IEZkcFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURTKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBGZHBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIGFsbG93ZWQgZmlsZSB0eXBlcyBmb3IgdGhlIHVwbG9hZC5cbiAgICAgKiBUaGUgY2hvc2VuIGZpbGVzIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IGFuIGFycmF5IG9mIGZpbGUgdHlwZXMuXG4gICAgICogSWYgYXQgbGVhc3Qgb25lIGZpbGUgZG9lcyBub3QgZml0IHRoZSBmaWxlIHR5cGUgcmVxdWlyZW1lbnRzLFxuICAgICAqIHRoZSB1cGxvYWQgaXMgcHJldmVudGVkLiBFeGFtcGxlOiBbXCJqcGdcIiwgXCJwbmdcIiwgXCJibXBcIl0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxlVHlwZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgYSBmaWxlIHNpemUgbGltaXQgaW4gbWVnYWJ5dGVzIHRoYXQgcHJldmVudHMgdGhlIHVwbG9hZFxuICAgICAqIGlmIGF0IGxlYXN0IG9uZSBmaWxlIGV4Y2VlZHMgdGhlIGxpbWl0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4RmlsZVNpemU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgZmlsZSBuYW1lLlxuICAgICAqIElmIHRoZSBtYXhpbXVtIGZpbGUgbmFtZSBsZW5ndGggaXMgZXhjZWVkZWQsXG4gICAgICogdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgJ2ZpbGVuYW1lTGVuZ3RoRXhjZWVkJyBpcyB0cmlnZ2VyZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhGaWxlbmFtZUxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIGFsbG93ZWQgTUlNRSB0eXBlcyBvZiBmaWxlcyB0byBiZSB1cGxvYWRlZC5cbiAgICAgKiBUaGUgY2hvc2VuIGZpbGVzIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IGFuIGFycmF5IG9mIE1JTUUgdHlwZXMuXG4gICAgICogSWYgYXQgbGVhc3Qgb25lIGZpbGUgZG9lcyBub3QgZml0IHRoZSBNSU1FIHR5cGUgcmVxdWlyZW1lbnRzLCB0aGUgdXBsb2FkIGlzIHByZXZlbnRlZC5cbiAgICAgKiBFeGFtcGxlOiBtaW1lVHlwZXMgW1wiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvanBlZ1wiXS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbWVUeXBlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQWxsb3dzIHRvIHNldCBvd24gdGV4dCBmb3IgdGhlICdObyBkYXRhJyB0ZXh0IGxhYmVsLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG5vRGF0YVRleHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlByb3BlcnR5IG5vRGF0YVRleHQgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubm9EYXRhVGV4dCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbm9EYXRhVGV4dCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBub0RhdGFUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub0RhdGFUZXh0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQWxsb3dzIHRvIHNldCBvd24gdGV4dCBmb3IgdGhlICdObyBkYXRhJyBkZXNjcmlwdGlvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBub0RhdGFEZXNjcmlwdGlvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiUHJvcGVydHkgbm9EYXRhRGVzY3JpcHRpb24gaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubm9EYXRhRGVzY3JpcHRpb24nIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX25vRGF0YURlc2NyaXB0aW9uID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IG5vRGF0YURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub0RhdGFEZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICAvKiogQWxsIGFjdGlvbiBidXR0b25zIHdpbGwgYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogQWxsIGFjdGlvbiBidXR0b25zIHdpbGwgYmUgaW52aXNpYmxlICovXG4gICAgQElucHV0KClcbiAgICByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbG93cyB0byBzdXBwb3J0IGhpZXJhcmNoeSAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGllcmFyY2h5ID0gdHJ1ZTtcblxuICAgIC8qKiBBbGxvd3MgdG8gc2hvdy9oaWRlIHBhZ2luYXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIGVuYWJsZVBhZ2luYXRpb24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgdGhlIGJ1dHRvbiB0aGF0IGlzIHVzZWQgdG8gdGVybWluYXRlIHRoZSBpbnN0YW50IGZpbGUgdXBsb2FkIGdldHMgdmlzaWJsZS5cbiAgICAgKiBUaGUgYnV0dG9uIG5vcm1hbGx5IGFwcGVhcnMgd2hlbiBhIGZpbGUgaXMgYmVpbmcgdXBsb2FkZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0ZXJtaW5hdGlvbkVuYWJsZWQgPSB0cnVlO1xuXG4gICAgLyoqIEdpdmVzIHRvIHNlbGVjdCBtdWx0aXBsZSBmaWxlcyBmcm9tIHRoZSBzYW1lIGZvbGRlciBhbmQgdGhlbiB1cGxvYWQgdGhlbS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpcGxlID0gdHJ1ZTtcblxuICAgIC8qKiBBbGxvd3MgdG8gc2hvdy9oaWRlIHNlYXJjaCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlYXJjaCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBbGxvd3MgdG8gdXNlIHRoZSBzYW1lIG5hbWUgZm9yIGEgZmlsZSB3aGVuIGVkaXRpbmcgdGhlIGZpbGUgbmFtZS5cbiAgICAgKiAnU2FtZSBuYW1lJyByZWZlcnMgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBmaWxlIG5hbWUgaW4gdGhlIGxpc3QuXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIHNhbWVGaWxlTmFtZUFsbG93ZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgZmlsZSB0eXBlIG9yIHRoZSBNSU1FIHR5cGUgZG9uJ3QgbWF0Y2ggdGhlIHBlcm1pdHRlZCB0eXBlc1xuICAgICAqIChvbmx5IGlmIHRoZSBmaWxlVHlwZXMgcHJvcGVydHkgb3IgdGhlIG1pbWVUeXBlcyBwcm9wZXJ0eSBhcmUgcHJvdmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uKS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICB0eXBlTWlzbWF0Y2ggPSBuZXcgRXZlbnRFbWl0dGVyPFR5cGVNaXNtYXRjaEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBuYW1lIG9mIGEgY2hvc2VuIGZpbGUgaXMgbG9uZ2VyIHRoYW4gdGhlIHZhbHVlIHNwZWNpZmllZFxuICAgICAqIHdpdGggdGhlIG1heEZpbGVuYW1lTGVuZ3RoIHByb3BlcnR5IChvbmx5IGlmIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbikuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZmlsZW5hbWVMZW5ndGhFeGNlZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVuYW1lTGVuZ3RoRXhjZWVkRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGZpbGUgc2l6ZSBvZiBhbiB1cGxvYWRlZCBmaWxlIGlzIGV4Y2VlZGVkXG4gICAgICogKG9ubHkgaWYgdGhlIG1heEZpbGVTaXplIHByb3BlcnR5IHdhcyBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24pLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbGVTaXplRXhjZWVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlU2l6ZUV4Y2VlZEV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMgPSBVcGxvYWRDb2xsZWN0aW9uSXRlbVN0YXR1cztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2JyZWFkY3J1bWJMaXN0OiBCcmVhZGNydW1iTGlzdFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jdXJyZW50UGFnZSA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pdGVtc1BlclBhZ2UgPSAxMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2l0ZW1zUGVyUGFnZU9wdGlvbnM6IEl0ZW1QZXJQYWdlW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RvdGFsSXRlbXMgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY291bnRTaG93ZWRJdGVtcyA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb3VudE5vdFNob3dlZEl0ZW1zID0gMDtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiBjdXJyZW50bHkgZGlzcGxheWVkIGl0ZW1zXG4gICAgICovXG4gICAgX3Zpc2libGVMaXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXBsb2FkQ29sbGVjdGlvbkl0ZW1bXT4oW10pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3RlZEl0ZW1zOiBVcGxvYWRDb2xsZWN0aW9uSXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWFyY2hUZXh0ID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zaG93RHJhZ0Ryb3BBcmVhID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyYWdEcm9wQXJlYSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWN0aXZlSXRlbT86IFVwbG9hZENvbGxlY3Rpb25JdGVtO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3VycmVudFVwZGF0ZUZpbGVWZXJzaW9uPzogVXBsb2FkQ29sbGVjdGlvbkZpbGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZXNzYWdlPzogTWVzc2FnZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VUeXBlID0gTWVzc2FnZVR5cGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZXNzYWdlU3RyaXBUeXBlID0gTWVzc2FnZVN0cmlwVHlwZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbHVtbkFsaWduID0gQ29sdW1uQWxpZ247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3Rpb25Nb2RlID0gU2VsZWN0aW9uTW9kZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF91cGxvYWRGaWxlc1JlZjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndXBkYXRlVmVyc2lvbklucHV0JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVWZXJzaW9uUmVmOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbm9EYXRhRGVzY3JpcHRpb246IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbm9EYXRhVGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb250ZW50RGVuc2l0eU1hbnVhbGx5U2V0ID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ltYWdlRXh0ZW5zaW9uczogc3RyaW5nW10gPSBbXG4gICAgICAgICcuYXBuZycsXG4gICAgICAgICcuYm1wJyxcbiAgICAgICAgJy5naWYnLFxuICAgICAgICAnLmljbycsXG4gICAgICAgICcuY3VyJyxcbiAgICAgICAgJy5qcGcnLFxuICAgICAgICAnLmpwZWcnLFxuICAgICAgICAnLmpmaWYnLFxuICAgICAgICAnLnBqcGVnJyxcbiAgICAgICAgJy5wanAnLFxuICAgICAgICAnLnBuZycsXG4gICAgICAgICcuc3ZnJyxcbiAgICAgICAgJy50aWYnLFxuICAgICAgICAnLnRpZmYnLFxuICAgICAgICAnLndlYnAnLFxuICAgICAgICAnLmZsaWYnLFxuICAgICAgICAnLmNyMicsXG4gICAgICAgICcuanhyJyxcbiAgICAgICAgJy5wc2QnLFxuICAgICAgICAnLmJwZycsXG4gICAgICAgICcuanAyJyxcbiAgICAgICAgJy5qcG0nLFxuICAgICAgICAnLmpweCcsXG4gICAgICAgICcuaGVpYycsXG4gICAgICAgICcuZGNtJ1xuICAgIF07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbGlkYXRlZEZpbGVzOiBGaWxlc1ZhbGlkYXRvck91dHB1dDtcblxuICAgIC8qKiBAaGlkZGVuIGZvciBkYXRhIHNvdXJjZSBoYW5kbGluZyAqL1xuICAgIHByaXZhdGUgX2RzU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzVmFsaWRhdG9yU2VydmljZTogRmlsZXNWYWxpZGF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdUaGUgVXBsb2FkIENvbGxlY3Rpb24gY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHJlbGVhc2UuJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbnRlbnREZW5zaXR5KSB7XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eU1hbnVhbGx5U2V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogU2hvdyBtZWVzc2FnZSBmb3IgdHlwZXMgTkVXIEZPTERFUiBDUkVBVEUsIFJFTU9WRSwgTU9WRSBUTywgVVBEQVRFX1ZFUlNJT04sIEZJTEVfUkVOQU1FRCAqL1xuICAgIHNob3dNZXNzYWdlKHR5cGU6IE1lc3NhZ2VUeXBlLCBvcHRpb25zOiBNZXNzYWdlT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0gZ2VuZXJhdGVNZXNzYWdlU3RyaXBlRGF0YSh0eXBlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogT3BlbnMgdGhlIGZpbGUgc2VsZWN0b3IuXG4gICAgICovXG4gICAgX2ZpbGVOYW1lQ2hhbmdlKGU6IEZvY3VzRXZlbnQsIGN1cnJlbnRJdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGl0ZW1OYW1lID0gaW5wdXQudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCBuZXdOYW1lID0gY3VycmVudEl0ZW0udHlwZSA9PT0gJ2ZpbGUnID8gYCR7aXRlbU5hbWV9LiR7Y3VycmVudEl0ZW0ubmFtZS5zcGxpdCgnLicpLnBvcCgpfWAgOiBpdGVtTmFtZTtcblxuICAgICAgICBpZiAoY3VycmVudEl0ZW0ubmFtZSA9PT0gbmV3TmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4RmlsZW5hbWVMZW5ndGggJiYgaXRlbU5hbWUubGVuZ3RoID4gdGhpcy5tYXhGaWxlbmFtZUxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcmVuYW1lZEl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudEl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogbmV3TmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IFtyZW5hbWVkSXRlbV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZUxlbmd0aEV2ZW50ID0gbmV3IEZpbGVuYW1lTGVuZ3RoRXhjZWVkRXZlbnQodGhpcywgcGF5bG9hZCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuRklMRV9OQU1FX0xFTkdUSCwgeyBwYXlsb2FkLCB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLkVSUk9SIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lTGVuZ3RoRXhjZWVkLmVtaXQoZmlsZW5hbWVMZW5ndGhFdmVudCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXJyZW50SXRlbS5zYW1lRmlsZW5hbWVTdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIHBhcmVudEZvbGRlcklkOiB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKSxcbiAgICAgICAgICAgIGZpbGVOYW1lOiBuZXdOYW1lLFxuICAgICAgICAgICAgaXRlbTogeyAuLi5jdXJyZW50SXRlbSB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlXG4gICAgICAgICAgICAuZmlsZVJlbmFtZWQoZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShNZXNzYWdlVHlwZS5GSUxFX1JFTkFNRSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGUuU1VDQ0VTU1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuRklMRV9SRU5BTUUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLkVSUk9SXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrTmFtZShlOiBFdmVudCwgY3VycmVudEl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgY29uc3QgaXRlbU5hbWUgPSBpbnB1dC52YWx1ZS50cmltKCk7XG4gICAgICAgIGNvbnN0IG5ld05hbWUgPSBjdXJyZW50SXRlbS50eXBlID09PSAnZmlsZScgPyBgJHtpdGVtTmFtZX0uJHtjdXJyZW50SXRlbS5uYW1lLnNwbGl0KCcuJykucG9wKCl9YCA6IGl0ZW1OYW1lO1xuICAgICAgICBjb25zdCBuYW1lQWxyZWFkeUV4aXN0cyA9IHRoaXMuX2dldExpc3QoKS5zb21lKFxuICAgICAgICAgICAgKGl0ZW0pID0+IGN1cnJlbnRJdGVtLmRvY3VtZW50SWQgIT09IGl0ZW0uZG9jdW1lbnRJZCAmJiBpdGVtLm5hbWUgPT09IG5ld05hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIXRoaXMuc2FtZUZpbGVOYW1lQWxsb3dlZCAmJiBuYW1lQWxyZWFkeUV4aXN0cykge1xuICAgICAgICAgICAgY3VycmVudEl0ZW0uc2FtZUZpbGVuYW1lU3RhdGUgPSAnZXJyb3InO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGUgY3VycmVudEl0ZW0uc2FtZUZpbGVuYW1lU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBPcGVucyB0aGUgZmlsZSBzZWxlY3Rvci5cbiAgICAgKi9cbiAgICBfb3BlblVwbG9hZEZpbGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuX3VwbG9hZEZpbGVzUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgaW5wdXQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogT3BlbnMgdGhlIHVwZGF0ZSBmaWxlIHZlcnNpb24gc2VsZWN0b3IuXG4gICAgICovXG4gICAgX29wZW5VcGRhdGVGaWxlVmVyc2lvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5fdXBkYXRlVmVyc2lvblJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRVcGRhdGVGaWxlVmVyc2lvbiA9IHRoaXMuX2FjdGl2ZUl0ZW0gYXMgVXBsb2FkQ29sbGVjdGlvbkZpbGU7XG4gICAgICAgICAgICBpbnB1dC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0SGFuZGxlcihmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlRmlsZXMoZmlsZXMpO1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVGaWxlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZURyb3Aob3V0cHV0OiBGaWxlc1ZhbGlkYXRvck91dHB1dCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWxpZGF0ZWRGaWxlcyA9IG91dHB1dDtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlRmlsZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vcGVuTmV3Rm9sZGVyRGlhbG9nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4oTmV3Rm9sZGVyQ29tcG9uZW50LCB7XG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xpY2tDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMzIwcHgnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRGb2xkZXI6IHRoaXMuX2dldEN1cnJlbnRGb2xkZXIoKSxcbiAgICAgICAgICAgICAgICBtYXhGaWxlbmFtZUxlbmd0aDogdGhpcy5tYXhGaWxlbmFtZUxlbmd0aFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGFzIERpYWxvZ0NvbmZpZyk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChmb2xkZXJOYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZXIgPSB0aGlzLl9nZW5lcmF0ZVRlbXBvcmFyeU5ld0ZvbGRlcihmb2xkZXJOYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEZvbGRlcklkID0gdGhpcy5fZ2V0Q3VycmVudEZvbGRlcklkKCk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgIHBhcmVudEZvbGRlcklkLFxuICAgICAgICAgICAgICAgIGZvbGRlcjogeyAuLi5mb2xkZXIgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5fZmluZFBhcmVudEZvbGRlckFuZEFkZFRlbXBvcmFyeUZpbGVzKHBhcmVudEZvbGRlcklkLCBbZm9sZGVyXSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgIC5uZXdGb2xkZXIoZGF0YSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5fbWF0Y2goKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuQ1JFQVRFLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLlNVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShNZXNzYWdlVHlwZS5DUkVBVEUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGUuRVJST1JcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vdmVUb0NsaWNrZWQobXVsdGlwbGU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfYWN0aXZlSXRlbSA9IHRoaXMuX2FjdGl2ZUl0ZW07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGb2xkZXIgPSB0aGlzLl9nZXRDdXJyZW50Rm9sZGVyKCk7XG4gICAgICAgIGNvbnN0IG1vdmFibGVJdGVtcyA9IG11bHRpcGxlID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogX2FjdGl2ZUl0ZW0gPyBbX2FjdGl2ZUl0ZW1dIDogW107XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbihcbiAgICAgICAgICAgIE1vdmVUb0NvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xpY2tDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzM1MHB4JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLmRhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Rm9sZGVyLFxuICAgICAgICAgICAgICAgICAgICBtb3ZhYmxlRm9sZGVyczogbW92YWJsZUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbT8udHlwZSA9PT0gJ2ZvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICBtYXhGaWxlbmFtZUxlbmd0aDogdGhpcy5tYXhGaWxlbmFtZUxlbmd0aFxuICAgICAgICAgICAgICAgIH0gYXMgTW92ZVRvQ29tcG9uZW50RGlhbG9nRGF0YVxuICAgICAgICAgICAgfSBhcyBEaWFsb2dDb25maWcsXG4gICAgICAgICAgICB0aGlzLl9pbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcbiAgICAgICAgICAgICh7IHNlbGVjdGVkRm9sZGVyLCBwYXJlbnRGb2xkZXJJZCwgZm9sZGVyTmFtZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZDogTW92ZVRvRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGN1cnJlbnRGb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBzZWxlY3RlZEZvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IG1vdmFibGVJdGVtc1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoZm9sZGVyTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLm5ld0ZvbGRlciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZvbGRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVyTmFtZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAubW92ZVRvKHBheWxvYWQpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuTU9WRSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLlNVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuTU9WRSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLkVSUk9SXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rvd25sb2FkQ2xpY2tlZChtdWx0aXBsZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9hY3RpdmVJdGVtID0geyAuLi50aGlzLl9hY3RpdmVJdGVtIH07XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gKG11bHRpcGxlID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogW19hY3RpdmVJdGVtXSkgYXMgVXBsb2FkQ29sbGVjdGlvbkZpbGVbXTtcblxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZG93bmxvYWQoeyBpdGVtcyB9KS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yZW1vdmUobXVsdGlwbGU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfYWN0aXZlSXRlbSA9IHsgLi4udGhpcy5fYWN0aXZlSXRlbSB9IGFzIFVwbG9hZENvbGxlY3Rpb25JdGVtO1xuICAgICAgICBjb25zdCBpdGVtcyA9IG11bHRpcGxlID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogW19hY3RpdmVJdGVtXTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHsgcGFyZW50Rm9sZGVySWQ6IHRoaXMuX2dldEN1cnJlbnRGb2xkZXJJZCgpLCBpdGVtcyB9O1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVxuICAgICAgICAgICAgLmRlbGV0ZShkYXRhKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWF0Y2goKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKE1lc3NhZ2VUeXBlLlJFTU9WRSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGUuU1VDQ0VTU1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuUkVNT1ZFLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogTWVzc2FnZVN0cmlwVHlwZS5FUlJPUlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ydW5VcGxvYWROZXdGaWxlQWZ0ZXJGYWlsKGl0ZW06IFVwbG9hZENvbGxlY3Rpb25GaWxlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVxuICAgICAgICAgICAgLnJ1bkFmdGVyRmFpbCh7IHBhcmVudEZvbGRlcklkOiB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKSwgaXRlbXM6IFtpdGVtXSB9KVxuICAgICAgICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuX21hdGNoKCkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhbmNlbFVwbG9hZE5ld0ZpbGUoZmlsZTogVXBsb2FkQ29sbGVjdGlvbkZpbGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlXG4gICAgICAgICAgICAuY2FuY2VsVXBsb2FkTmV3RmlsZSh7IHBhcmVudEZvbGRlcklkOiB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKSwgaXRlbTogZmlsZSB9KVxuICAgICAgICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuX21hdGNoKCkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VTdHJpcERpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3BlbkZvbGRlcihpdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnZmlsZScgfHwgIWl0ZW0uZG9jdW1lbnRJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2JyZWFkY3J1bWJMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2JyZWFkY3J1bWJMaXN0W3RoaXMuX2JyZWFkY3J1bWJMaXN0Lmxlbmd0aCAtIDFdLmNsaWthYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2JyZWFkY3J1bWJMaXN0LnB1c2goe1xuICAgICAgICAgICAgY2xpa2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgZm9sZGVySWQ6IGl0ZW0uZG9jdW1lbnRJZCxcbiAgICAgICAgICAgIGZvbGRlck5hbWU6IGl0ZW0ubmFtZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9tYXRjaCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FjdGlvbkJ1dHRvbihpdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3B6b25lKGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Nob3dEcmFnRHJvcEFyZWEgPSB0cnVlO1xuICAgICAgICB0aGlzLl9vbkRyYWdEcm9wQXJlYSA9IGV2ZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RyYWdEcm9wQ2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zaG93RHJhZ0Ryb3BBcmVhID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYnJlYWRjcnVtYkdvVG8oZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4PzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihpbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2JyZWFkY3J1bWJMaXN0ID0gW107XG4gICAgICAgICAgICB0aGlzLl9tYXRjaCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9icmVhZGNydW1iTGlzdCA9IHRoaXMuX2JyZWFkY3J1bWJMaXN0LnNsaWNlKDAsIGluZGV4ISArIDEpO1xuICAgICAgICB0aGlzLl9icmVhZGNydW1iTGlzdFt0aGlzLl9icmVhZGNydW1iTGlzdC5sZW5ndGggLSAxXS5jbGlrYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGFnZUNoYW5nZWQocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lbmFibGVQYWdpbmF0aW9uIHx8IHRoaXMuX2N1cnJlbnRQYWdlID09PSBwYWdlTnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xuXG4gICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXRlbXNQZXJQYWdlQ2hhbmdlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9pdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFBhZ2UgKiB0aGlzLl9pdGVtc1BlclBhZ2UgPiB0aGlzLl90b3RhbEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IE1hdGguY2VpbCh0aGlzLl90b3RhbEl0ZW1zIC8gdGhpcy5faXRlbXNQZXJQYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VhcmNoSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tYXRjaCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uUm93U2VsZWN0aW9uQ2hhbmdlKGRhdGE6IFRhYmxlUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQ8VXBsb2FkQ29sbGVjdGlvbkl0ZW0+KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zYW1lRmlsZU5hbWVBbGxvd2VkKSB7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVkSXRlbSA9IGRhdGEucmVtb3ZlZFswXTtcbiAgICAgICAgICAgIHRoaXMuX2NsZWFySXRlbVNhbWVGaWxlbmFtZVN0YXRlKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGRhdGEuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldEl0ZW1OYW1lKGl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2ZvbGRlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbS5uYW1lLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRJdGVtRXh0ZW5zaW9uKGl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2ZvbGRlcicpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgLiR7aXRlbS5uYW1lLnNwbGl0KCcuJykucG9wKCl9YDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRJY29uQnlUeXBlKGZpbGU6IFVwbG9hZENvbGxlY3Rpb25GaWxlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IGAuJHtmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKX1gO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZUV4dGVuc2lvbnMuaW5jbHVkZXModHlwZSkgPyAnYmFja2dyb3VuZCcgOiAnZG9jdW1lbnQnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dJZlNlbGVjdGVkT25seUZpbGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09ICdmb2xkZXInKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1NlbGVjdGVkSXRlbShpdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoKHNlbGVjdGVkSXRlbSkgPT4gc2VsZWN0ZWRJdGVtLmRvY3VtZW50SWQgPT09IGl0ZW0uZG9jdW1lbnRJZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0TGlzdCgpOiBVcGxvYWRDb2xsZWN0aW9uSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIubGlzdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5RG9jdW1lbnRJZChpbmRleDogbnVtYmVyLCBpdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IFVwbG9hZENvbGxlY3Rpb25JdGVtWydkb2N1bWVudElkJ10ge1xuICAgICAgICByZXR1cm4gaXRlbS5kb2N1bWVudElkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldEFsbG93ZWRUeXBlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5maWxlVHlwZXM/LmpvaW4oJywgJyl9JHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVR5cGVzPy5sZW5ndGggJiYgdGhpcy5taW1lVHlwZXM/Lmxlbmd0aCA/ICcsICcgOiAnJ1xuICAgICAgICB9JHt0aGlzLm1pbWVUeXBlcz8uam9pbignLCAnKX1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVGaWxlcyhmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlZEZpbGVzID0gdGhpcy5fZmlsZXNWYWxpZGF0b3JTZXJ2aWNlLnZhbGlkYXRpb24oZmlsZXMsIHtcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0aGlzLm1heEZpbGVTaXplLFxuICAgICAgICAgICAgbWF4RmlsZU5hbWVMZW5ndGg6IHRoaXMubWF4RmlsZW5hbWVMZW5ndGgsXG4gICAgICAgICAgICBmaWxlVHlwZXM6IHRoaXMuZmlsZVR5cGVzLFxuICAgICAgICAgICAgbWltZVR5cGVzOiB0aGlzLm1pbWVUeXBlc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZUZpbGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHZhbGlkRmlsZXMsIHR5cGVNaXNtYXRjaCwgZmlsZW5hbWVMZW5ndGhFeGNlZWQsIGZpbGVTaXplRXhjZWVkIH0gPSB0aGlzLl92YWxpZGF0ZWRGaWxlcztcblxuICAgICAgICBpZiAodmFsaWRGaWxlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRVcGRhdGVGaWxlVmVyc2lvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGVWZXJzaW9uKHZhbGlkRmlsZXNbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGxvYWROZXdGaWxlcyh2YWxpZEZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlTWlzbWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IGl0ZW1zOiB0eXBlTWlzbWF0Y2ggfTtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IFR5cGVNaXNtYXRjaEV2ZW50KHRoaXMsIHBheWxvYWQpO1xuXG4gICAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKE1lc3NhZ2VUeXBlLlRZUEVfTUlTTUFUQ0gsIHsgcGF5bG9hZCwgdHlwZTogTWVzc2FnZVN0cmlwVHlwZS5FUlJPUiB9KTtcblxuICAgICAgICAgICAgdGhpcy50eXBlTWlzbWF0Y2guZW1pdChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZW5hbWVMZW5ndGhFeGNlZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IGl0ZW1zOiBmaWxlbmFtZUxlbmd0aEV4Y2VlZCB9O1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRmlsZW5hbWVMZW5ndGhFeGNlZWRFdmVudCh0aGlzLCBwYXlsb2FkKTtcblxuICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShNZXNzYWdlVHlwZS5GSUxFX05BTUVfTEVOR1RILCB7IHBheWxvYWQsIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGUuRVJST1IgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVMZW5ndGhFeGNlZWQuZW1pdChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZVNpemVFeGNlZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IGl0ZW1zOiBmaWxlU2l6ZUV4Y2VlZCB9O1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRmlsZVNpemVFeGNlZWRFdmVudCh0aGlzLCBwYXlsb2FkKTtcblxuICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShNZXNzYWdlVHlwZS5GSUxFX1NJWkUsIHsgcGF5bG9hZCwgdHlwZTogTWVzc2FnZVN0cmlwVHlwZS5FUlJPUiB9KTtcblxuICAgICAgICAgICAgdGhpcy5maWxlU2l6ZUV4Y2VlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRmlsZVZlcnNpb24obmV3SXRlbTogRmlsZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50Rm9sZGVySWQgPSB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSB7XG4gICAgICAgICAgICAuLi50aGlzLl9jdXJyZW50VXBkYXRlRmlsZVZlcnNpb24sXG4gICAgICAgICAgICBzdGF0dXM6IFVwbG9hZENvbGxlY3Rpb25JdGVtU3RhdHVzLkxPQURJTkdcbiAgICAgICAgfSBhcyBVcGxvYWRDb2xsZWN0aW9uSXRlbTtcblxuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgcGFyZW50Rm9sZGVySWQ6IHRoaXMuX2dldEN1cnJlbnRGb2xkZXJJZCgpLFxuICAgICAgICAgICAgaXRlbTogdGhpcy5fY3VycmVudFVwZGF0ZUZpbGVWZXJzaW9uLFxuICAgICAgICAgICAgbmV3SXRlbVxuICAgICAgICB9IGFzIFVwZGF0ZVZlcnNpb25FdmVudDtcblxuICAgICAgICB0aGlzLl9maW5kUGFyZW50Rm9sZGVyQW5kVXBkYXRlSXRlbShjdXJyZW50Rm9sZGVySWQsIGN1cnJlbnRJdGVtKTtcblxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VcbiAgICAgICAgICAgIC51cGRhdGVWZXJzaW9uKGRhdGEpXG4gICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5fbWF0Y2goKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuVVBEQVRFX1ZFUlNJT04sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLlNVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRVcGRhdGVGaWxlVmVyc2lvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuVVBEQVRFX1ZFUlNJT04sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLkVSUk9SXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBsb2FkTmV3RmlsZXMoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50Rm9sZGVySWQgPSB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKTtcbiAgICAgICAgY29uc3QgbmV3SXRlbXMgPSB0aGlzLl9nZW5lcmF0ZVRlbXBvcmFyeU5ld0ZpbGVzKGZpbGVzKTtcblxuICAgICAgICB0aGlzLl9maW5kUGFyZW50Rm9sZGVyQW5kQWRkVGVtcG9yYXJ5RmlsZXMoY3VycmVudEZvbGRlcklkLCBuZXdJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlXG4gICAgICAgICAgICAudXBsb2FkKHtcbiAgICAgICAgICAgICAgICBwYXJlbnRGb2xkZXJJZDogY3VycmVudEZvbGRlcklkLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBuZXdJdGVtcy5tYXAoKGl0ZW0pID0+ICh7IC4uLml0ZW0gfSkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuX21hdGNoKCkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudEZvbGRlcigpOiBVcGxvYWRDb2xsZWN0aW9uRm9sZGVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY3VycmVudEZvbGRlcklkID0gdGhpcy5fZ2V0Q3VycmVudEZvbGRlcklkKCk7XG5cbiAgICAgICAgcmV0dXJuICFjdXJyZW50Rm9sZGVySWQgPyB1bmRlZmluZWQgOiB0aGlzLl9maW5kRm9sZGVyQnlJZChjdXJyZW50Rm9sZGVySWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudEZvbGRlcklkKCk6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9icmVhZGNydW1iTGlzdC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHRoaXMuX2JyZWFkY3J1bWJMaXN0W3RoaXMuX2JyZWFkY3J1bWJMaXN0Lmxlbmd0aCAtIDFdLmZvbGRlcklkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmluZEZvbGRlckJ5SWQoXG4gICAgICAgIGZvbGRlcklkOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgICAgIGl0ZW1zOiBVcGxvYWRDb2xsZWN0aW9uSXRlbVtdID0gdGhpcy5kYXRhU291cmNlLmRhdGFQcm92aWRlci5pdGVtc1xuICAgICk6IFVwbG9hZENvbGxlY3Rpb25Gb2xkZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgZm91bmRPYmo6IFVwbG9hZENvbGxlY3Rpb25Gb2xkZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXRlbXMsIChfLCBuZXN0ZWRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5lc3RlZFZhbHVlICYmIG5lc3RlZFZhbHVlLmRvY3VtZW50SWQgPT09IGZvbGRlcklkKSB7XG4gICAgICAgICAgICAgICAgZm91bmRPYmogPSBuZXN0ZWRWYWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5lc3RlZFZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZm91bmRPYmo7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9maW5kUGFyZW50Rm9sZGVyQW5kVXBkYXRlSXRlbShcbiAgICAgICAgcGFyZW50Rm9sZGVySWQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICAgICAgdXBkYXRlZEl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtLFxuICAgICAgICBpdGVtcyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIuaXRlbXNcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKCFwYXJlbnRGb2xkZXJJZCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uZG9jdW1lbnRJZCA9PT0gdXBkYXRlZEl0ZW0uZG9jdW1lbnRJZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaXRlbXNbaW5kZXhdID0gdXBkYXRlZEl0ZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX21hdGNoKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gaXRlbXNbaV07XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbS50eXBlICE9PSAnZm9sZGVyJykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0uZG9jdW1lbnRJZCA9PT0gcGFyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRJdGVtLmZpbGVzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5kb2N1bWVudElkID09PSB1cGRhdGVkSXRlbS5kb2N1bWVudElkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLmZpbGVzW2ldID0gdXBkYXRlZEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdGNoKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9maW5kUGFyZW50Rm9sZGVyQW5kVXBkYXRlSXRlbShwYXJlbnRGb2xkZXJJZCwgdXBkYXRlZEl0ZW0sIGN1cnJlbnRJdGVtLmZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmluZFBhcmVudEZvbGRlckFuZEFkZFRlbXBvcmFyeUZpbGVzKFxuICAgICAgICBwYXJlbnRGb2xkZXJJZDogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgICAgICBuZXdJdGVtczogVXBsb2FkQ29sbGVjdGlvbkl0ZW1bXSxcbiAgICAgICAgaXRlbXMgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLml0ZW1zXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICghcGFyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goLi4ubmV3SXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5fbWF0Y2goKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbS50eXBlICE9PSAnZm9sZGVyJykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0uZG9jdW1lbnRJZCA9PT0gcGFyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS5maWxlcy5wdXNoKC4uLm5ld0l0ZW1zKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXRjaCgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmRQYXJlbnRGb2xkZXJBbmRBZGRUZW1wb3JhcnlGaWxlcyhwYXJlbnRGb2xkZXJJZCwgbmV3SXRlbXMsIGN1cnJlbnRJdGVtLmZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVUZW1wb3JhcnlOZXdGaWxlcyhmaWxlczogRmlsZVtdKTogVXBsb2FkQ29sbGVjdGlvbkZpbGVbXSB7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoKGZpbGUpID0+ICh7XG4gICAgICAgICAgICBkb2N1bWVudElkOiB1dWlkdjQoKSxcbiAgICAgICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgIHVwbG9hZGVkQnk6IHtcbiAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgICAgICAgbmFtZTogYFlvdWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGxvYWRlZE9uOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgZmlsZVNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgICAgICB1cmw6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiBVcGxvYWRDb2xsZWN0aW9uSXRlbVN0YXR1cy5MT0FESU5HLFxuICAgICAgICAgICAgZmlsZVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZW5lcmF0ZVRlbXBvcmFyeU5ld0ZvbGRlcihmb2xkZXJOYW1lOiBzdHJpbmcpOiBVcGxvYWRDb2xsZWN0aW9uRm9sZGVyIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvY3VtZW50SWQ6IHV1aWR2NCgpLFxuICAgICAgICAgICAgdHlwZTogJ2ZvbGRlcicsXG4gICAgICAgICAgICBuYW1lOiBmb2xkZXJOYW1lLFxuICAgICAgICAgICAgdXBsb2FkZWRCeToge1xuICAgICAgICAgICAgICAgIGlkOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdZb3UnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBsb2FkZWRPbjogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIGZpbGVzOiBbXSxcbiAgICAgICAgICAgIHN0YXR1czogVXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMuTE9BRElOR1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZURTKGRzOiBGZHBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aXNpYmxlTGlzdCQubmV4dChbXSk7XG4gICAgICAgIGlmIChpc0RhdGFTb3VyY2UodGhpcy5kYXRhU291cmNlKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmNsb3NlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5fZHNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IHRoaXMuX29wZW5EYXRhU3RyZWFtKGRzKTtcblxuICAgICAgICAvLyBpbml0aWFsIGRhdGEgZmV0Y2hcbiAgICAgICAgdGhpcy5fbWF0Y2goKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29wZW5EYXRhU3RyZWFtKGRzOiBGZHBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZSk6IFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlIHtcbiAgICAgICAgY29uc3QgaW5pdERhdGFTb3VyY2UgPSB0aGlzLl90b0RhdGFTdHJlYW0oZHMpO1xuICAgICAgICBpZiAoaW5pdERhdGFTb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbZGF0YVNvdXJjZV0gc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gYXJyYXksIE9ic2VydmFibGUsIG9yIERhdGFTb3VyY2VgKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBpcyBzaW5nbGUgcG9pbnQgb2YgZGF0YSBlbnRyeSB0byB0aGUgY29tcG9uZW50LiBXZSBkb250IHdhbnQgdG8gc2V0IGRhdGEgb24gZGlmZmVyZW50XG4gICAgICAgICAqIHBsYWNlcy4gSWYgYW55IG5ldyBkYXRhIGNvbWVzIGluIGVpdGhlciB5b3UgZG8gYSBzZWFyY2ggYW5kIHlvdSB3YW50IHRvIHBhc3MgaW5pdGlhbCBkYXRhXG4gICAgICAgICAqIGl0cyBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBpbml0RGF0YVNvdXJjZS5vcGVuKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlTGlzdCQubmV4dChkYXRhKTtcblxuICAgICAgICAgICAgdGhpcy5fdG90YWxJdGVtcyA9IGluaXREYXRhU291cmNlLmRhdGFQcm92aWRlci50b3RhbEl0ZW1zO1xuXG4gICAgICAgICAgICB0aGlzLl9jb3VudFVudmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaW5pdERhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b0RhdGFTdHJlYW0oZHM6IEZkcFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlKTogVXBsb2FkQ29sbGVjdGlvbkRhdGFTb3VyY2UgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKGRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRzIGFzIFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21hdGNoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBxdWVyeSA9IG5ldyBNYXAoKTtcblxuICAgICAgICBxdWVyeS5zZXQoJ2ZvbGRlcklkJywgdGhpcy5fZ2V0Q3VycmVudEZvbGRlcklkKCkpO1xuICAgICAgICBxdWVyeS5zZXQoJ3BhZ2UnLCB0aGlzLl9jdXJyZW50UGFnZSk7XG4gICAgICAgIHF1ZXJ5LnNldCgnc2VhcmNoVGV4dCcsIHRoaXMuX3NlYXJjaFRleHQgfHwgJyonKTtcblxuICAgICAgICBpZiAodGhpcy5lbmFibGVQYWdpbmF0aW9uKSB7XG4gICAgICAgICAgICBxdWVyeS5zZXQoJ2xpbWl0JywgdGhpcy5faXRlbXNQZXJQYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5tYXRjaChxdWVyeSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb3VudFVudmlzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtc1BlclBhZ2UgPSB0aGlzLl9pdGVtc1BlclBhZ2UgYXMgbnVtYmVyO1xuICAgICAgICB0aGlzLl9jb3VudFNob3dlZEl0ZW1zID0gdGhpcy5fY3VycmVudFBhZ2UgKiBpdGVtc1BlclBhZ2UgLSBpdGVtc1BlclBhZ2UgKyAxO1xuICAgICAgICB0aGlzLl9jb3VudE5vdFNob3dlZEl0ZW1zID0gdGhpcy5fY291bnRTaG93ZWRJdGVtcyArIHRoaXMuX3Zpc2libGVMaXN0JC52YWx1ZS5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xlYXJJdGVtU2FtZUZpbGVuYW1lU3RhdGUoY3VycmVudEl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICghY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9nZXRMaXN0KCkpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmRvY3VtZW50SWQgPT09IGN1cnJlbnRJdGVtLmRvY3VtZW50SWQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS5zYW1lRmlsZW5hbWVTdGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgW2lkXT1cImlkXCIgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25cIj5cbiAgICA8IS0tIE1lc3NhZ2Ugc3RyaXAgLS0+XG4gICAgPGZkLW1lc3NhZ2Utc3RyaXAgKm5nSWY9XCJfbWVzc2FnZVwiIFt0eXBlXT1cIl9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGVcIiAob25EaXNtaXNzKT1cIl9tZXNzYWdlU3RyaXBEaXNtaXNzKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVzc2FnZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlOiBfbWVzc2FnZS5tZXNzYWdlVHlwZSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgY291bnQ6IF9tZXNzYWdlLmNvdW50XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtbWVzc2FnZS1zdHJpcD5cblxuICAgIDwhLS0gVG9vbGJhciAtLT5cbiAgICA8ZmQtdG9vbGJhciBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fdG9vbGJhclwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogMSBhdXRvXCI+XG4gICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYiBbaWRdPVwiaWQgKyAnLWJyZWFkY3J1bWInXCI+XG4gICAgICAgICAgICAgICAgPGZkLWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZUJyZWFkY3J1bWJzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBmZC1saW5rIChjbGljayk9XCJfYnJlYWRjcnVtYkdvVG8oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uYnJlYWRjcnVtYkxhYmVsQWxsRmlsZXMnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCcmVhZGNydW1iPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5icmVhZGNydW1iTGFiZWxBbGxGaWxlc1dpdGhUb3RhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHRvdGFsOiBfdG90YWxJdGVtcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfYnJlYWRjcnVtYkxpc3QubGVuZ3RoID4gMCA/IG11bHRpcGxlQnJlYWRjcnVtYnMgOiBzaW5nbGVCcmVhZGNydW1iXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZmQtYnJlYWRjcnVtYi1pdGVtPlxuICAgICAgICAgICAgICAgIDxmZC1icmVhZGNydW1iLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2JyZWFkY3J1bWJMaXN0OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xpY2thYmxlQnJlYWRjcnVtYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgZmQtbGluayAoY2xpY2spPVwiX2JyZWFkY3J1bWJHb1RvKCRldmVudCwgaSlcIj57eyBpdGVtLmZvbGRlck5hbWUgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEJyZWFkY3J1bWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmZvbGRlck5hbWUgfX0gKHt7IF90b3RhbEl0ZW1zIH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtLmNsaWthYmxlID8gY2xpY2thYmxlQnJlYWRjcnVtYiA6IHRleHRCcmVhZGNydW1iXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZmQtYnJlYWRjcnVtYi1pdGVtPlxuICAgICAgICAgICAgPC9mZC1icmVhZGNydW1iPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXIgc3R5bGU9XCJtYXgtd2lkdGg6IDNyZW1cIj48L2ZkLXRvb2xiYXItc3BhY2VyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVhZG9ubHkgfHwgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgIDxmZC1pbnB1dC1ncm91cFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1NlYXJjaFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3NlYXJjaElucHV0Q2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICBnbHlwaD1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImlkICsgJy1icmVhZGNydW1iJ1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uc2VhcmNoUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvZmQtaW5wdXQtZ3JvdXA+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuVXBsb2FkRmlsZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImdob3N0XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uYWRkQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5hZGRCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb3Blbk5ld0ZvbGRlckRpYWxvZygpXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoaWVyYXJjaHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm5ld0ZvbGRlckJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubmV3Rm9sZGVyQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRvbmx5ICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZVRvQ2xpY2tlZCh0cnVlKVwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubW92ZVRvQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1vdmVUb0J0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2Rvd25sb2FkQ2xpY2tlZCh0cnVlKVwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJfc2hvd0lmU2VsZWN0ZWRPbmx5RmlsZXMoKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZG93bmxvYWRCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZG93bmxvYWRCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9yZW1vdmUodHJ1ZSlcIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cImdob3N0XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLnJlbW92ZUJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5yZW1vdmVCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtdG9vbGJhcj5cblxuICAgIDxkaXYgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX3RhYmxlLS13cmFwcGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX190YWJsZVwiXG4gICAgICAgICAgICBmZHBVcGxvYWRDb2xsZWN0aW9uRHJhZ25Ecm9wXG4gICAgICAgICAgICBbZmlsZVR5cGVzXT1cImZpbGVUeXBlc1wiXG4gICAgICAgICAgICBbbWF4RmlsZW5hbWVMZW5ndGhdPVwibWF4RmlsZW5hbWVMZW5ndGhcIlxuICAgICAgICAgICAgW21heEZpbGVTaXplXT1cIm1heEZpbGVTaXplXCJcbiAgICAgICAgICAgIFttaW1lVHlwZXNdPVwibWltZVR5cGVzXCJcbiAgICAgICAgICAgIFtkcmFnbmRyb3BdPVwiIXJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgKGZpbGVDaGFuZ2VkKT1cIl9oYW5kbGVEcm9wKCRldmVudClcIlxuICAgICAgICAgICAgKGNhbmNlbCk9XCJfZHJhZ0Ryb3BDYW5jZWwoKVwiXG4gICAgICAgICAgICAob25Ecm9wem9uZSk9XCJfb25Ecm9wem9uZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBUYWJsZSAtLT5cbiAgICAgICAgICAgIDxmZHAtdGFibGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIl92aXNpYmxlTGlzdCQudmFsdWUubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiX3Zpc2libGVMaXN0JFwiXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiZGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgIGVtcHR5VGFibGVNZXNzYWdlPVwiXCJcbiAgICAgICAgICAgICAgICBbbm9Ib3Jpem9udGFsQm9yZGVyc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbdHJhY2tCeV09XCJfdHJhY2tCeURvY3VtZW50SWRcIlxuICAgICAgICAgICAgICAgIChyb3dTZWxlY3Rpb25DaGFuZ2UpPVwiX29uUm93U2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZHAtY29sdW1uIG5hbWU9XCJuYW1lXCIgbGFiZWw9XCJOYW1lXCIgd2lkdGg9XCI4cmVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtY2VsbCAqZmRwQ2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX192ZXJ0aWNhbC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fZmQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZm9sZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZm9sZGVyLWJsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZm9sZGVySWNvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19mZC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdmaWxlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJfZ2V0SWNvbkJ5VHlwZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLmZpbGVJY29uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWljb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgIV9pc1NlbGVjdGVkSXRlbShpdGVtKTsgZWxzZSBlZGl0TW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC11cGxvYWQtY29sbGVjdGlvbl9fY3Vyc29yXT1cIml0ZW0udHlwZSA9PT0gJ2ZvbGRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuRm9sZGVyKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBpdGVtLm5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdE1vZGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXAgW3RyaWdnZXJzXT1cIltdXCIgW2lzT3Blbl09XCIhIWl0ZW0uc2FtZUZpbGVuYW1lU3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX3ZlcnRpY2FsLWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9nZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIl9maWxlTmFtZUNoYW5nZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIl9jaGVja05hbWUoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5lZGl0RmlsZU5hbWVJbnB1dFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJpdGVtLnNhbWVGaWxlbmFtZVN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19pdGVtX2V4dGVuc2lvblwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRJdGVtRXh0ZW5zaW9uKGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZvcm0tbWVzc2FnZSBbdHlwZV09XCJpdGVtLnNhbWVGaWxlbmFtZVN0YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0udHlwZSA9PT0gJ2ZpbGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZWRpdEZpbGVOYW1lRmlsZUFscmVhZHlFeGlzdHNFcnJvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5lZGl0RmlsZU5hbWVGb2xkZXJBbHJlYWR5RXhpc3RzRXJyb3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkcC10YWJsZS1jZWxsPlxuICAgICAgICAgICAgICAgIDwvZmRwLWNvbHVtbj5cblxuICAgICAgICAgICAgICAgIDxmZHAtY29sdW1uIG5hbWU9XCJ1cGxvYWRlZEJ5XCIgbGFiZWw9XCJVcGxvYWRlZCBieVwiIHdpZHRoPVwiNXJlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWNlbGwgKmZkcENlbGxEZWY9XCJsZXQgaXRlbVwiPnt7IGl0ZW0udXBsb2FkZWRCeS5uYW1lIH19PC9mZHAtdGFibGUtY2VsbD5cbiAgICAgICAgICAgICAgICA8L2ZkcC1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZmRwLWNvbHVtbiBuYW1lPVwidXBsb2FkZWRPblwiIGxhYmVsPVwiVXBsb2FkZWQgb25cIiB3aWR0aD1cIjVyZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1jZWxsICpmZHBDZWxsRGVmPVwibGV0IGl0ZW1cIj57eyBpdGVtLnVwbG9hZGVkT24gfCBkYXRlIDogJ3Nob3J0RGF0ZScgfX08L2ZkcC10YWJsZS1jZWxsPlxuICAgICAgICAgICAgICAgIDwvZmRwLWNvbHVtbj5cblxuICAgICAgICAgICAgICAgIDxmZHAtY29sdW1uIG5hbWU9XCJzaXplXCIgbGFiZWw9XCJGaWxlIHNpemVcIiB3aWR0aD1cIjVyZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1jZWxsICpmZHBDZWxsRGVmPVwibGV0IGl0ZW1cIj57eyBpdGVtLmZpbGVTaXplIHwgY29udmVydEJ5dGVzIH19PC9mZHAtdGFibGUtY2VsbD5cbiAgICAgICAgICAgICAgICA8L2ZkcC1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZmRwLWNvbHVtbiBuYW1lPVwidmVyc2lvblwiIGxhYmVsPVwiVmVyc2lvblwiIHdpZHRoPVwiNXJlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWNlbGwgKmZkcENlbGxEZWY9XCJsZXQgaXRlbVwiPnt7IGl0ZW0udmVyc2lvbiB8fCAnJyB9fTwvZmRwLXRhYmxlLWNlbGw+XG4gICAgICAgICAgICAgICAgPC9mZHAtY29sdW1uPlxuXG4gICAgICAgICAgICAgICAgPGZkcC1jb2x1bW4gbmFtZT1cInN0YXR1c1wiIGxhYmVsPVwiU3RhdHVzXCIgd2lkdGg9XCI1cmVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtY2VsbCAqZmRwQ2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uc3RhdHVzID09PSBfdXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMuTE9BRElOR1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwiU3RhdHVzOiBMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5zdGF0dXMgPT09IF91cGxvYWRDb2xsZWN0aW9uSXRlbVN0YXR1cy5TVUNDRVNTRlVMXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPVwicG9zaXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uaXRlbVN0YXR1c1N1Y2Nlc3NmdWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnN0YXR1cyA9PT0gX3VwbG9hZENvbGxlY3Rpb25JdGVtU3RhdHVzLlVOU1VDQ0VTU0ZVTFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz1cIm5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLml0ZW1TdGF0dXNVbnN1Y2Nlc3NmdWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZHAtdGFibGUtY2VsbD5cbiAgICAgICAgICAgICAgICA8L2ZkcC1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZmRwLWNvbHVtbiBuYW1lPVwiYWN0aW9uXCIgKm5nSWY9XCIhcmVhZG9ubHlcIiB3aWR0aD1cIjVyZW1cIiBhbGlnbj1cImVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWhlYWRlciAqZmRwSGVhZGVyQ2VsbERlZj5BY3Rpb248L2ZkcC10YWJsZS1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtY2VsbCAqZmRwQ2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fYWN0aW9ucy0tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24udXBsb2FkTmV3RmlsZUFmdGVyRmFpbEFjdGlvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi51cGxvYWROZXdGaWxlQWZ0ZXJGYWlsQWN0aW9uJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfcnVuVXBsb2FkTmV3RmlsZUFmdGVyRmFpbChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnN0YXR1cyA9PT0gX3VwbG9hZENvbGxlY3Rpb25JdGVtU3RhdHVzLlVOU1VDQ0VTU0ZVTFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLmNhbmNlbFVwbG9hZE5ld0ZpbGVBY3Rpb24nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uY2FuY2VsVXBsb2FkTmV3RmlsZUFjdGlvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jYW5jZWxVcGxvYWROZXdGaWxlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGVybWluYXRpb25FbmFibGVkICYmIGl0ZW0uc3RhdHVzID09PSBfdXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMuTE9BRElOR1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtbWVudS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cIm92ZXJmbG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uaXRlbU1lbnVCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZHBNZW51VHJpZ2dlckZvcl09XCJtZW51QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cIl9hY3Rpb25CdXR0b24oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkcC1tZW51LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2ZkcC10YWJsZS1jZWxsPlxuICAgICAgICAgICAgICAgIDwvZmRwLWNvbHVtbj5cbiAgICAgICAgICAgIDwvZmRwLXRhYmxlPlxuXG4gICAgICAgICAgICA8IS0tIERyYWdkcm9wIGFyZWEgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX2RyYWdkcm9wLWFyZWFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX3Nob3dEcmFnRHJvcEFyZWFcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiX29uRHJhZ0Ryb3BBcmVhXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvbiBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fZHJhZ2Ryb3AtYXJlYS0taWNvblwiIGdseXBoPVwidXBsb2FkLXRvLWNsb3VkXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19kcmFnZHJvcC1hcmVhLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZHJhZ0Ryb3BBcmVhVGV4dCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIE5vIGRhdGEgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX25vLWRhdGFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX3Zpc2libGVMaXN0JC52YWx1ZS5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwiX3Nob3dEcmFnRHJvcEFyZWFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiZG9jdW1lbnRcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgPGgzPnt7IG5vRGF0YVRleHQgfHwgKCdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubm9EYXRhVGV4dCcgfCBmZFRyYW5zbGF0ZSkgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IG5vRGF0YURlc2NyaXB0aW9uIHx8ICgncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm5vRGF0YURlc2NyaXB0aW9uJyB8IGZkVHJhbnNsYXRlKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRhYmxlIGZvb3RlciAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fdGFibGUtZm9vdGVyXCIgKm5nSWY9XCJlbmFibGVQYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICA8IS0tIFBhZ2luYXRpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19wYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2lkXT1cImlkICsgJy1wYWdpbmF0aW9uJ1wiIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19wYWdpbmF0aW9uLS10b3RhbFwiPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5wYWdpbmF0aW9uVG90YWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZnJvbTogX2NvdW50U2hvd2VkSXRlbXMsIHRvOiBfY291bnROb3RTaG93ZWRJdGVtcywgdG90YWw6IF90b3RhbEl0ZW1zIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGZkLXBhZ2luYXRpb25cbiAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwiX3RvdGFsSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheVRvdGFsSXRlbXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZVN0YXJ0KT1cIl9wYWdlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCJfaXRlbXNQZXJQYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cIl9jdXJyZW50UGFnZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctcGFnaW5hdGlvbidcIlxuICAgICAgICAgICAgICAgID48L2ZkLXBhZ2luYXRpb24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSZXN1bHRzIHBlciBwYWdlIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fcmVzdWx0c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19yZXN1bHRzLS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaWRdPVwiaWQgKyAnLXJlc3VsdHMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLnJlc3VsdHNQZXJQYWdlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfaXRlbXNQZXJQYWdlT3B0aW9ucy5sZW5ndGggPT09IDBcIj57eyBfaXRlbXNQZXJQYWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZmRwLW1lbnUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2l0ZW1zUGVyUGFnZU9wdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpZCArICctcmVzdWx0cydcIlxuICAgICAgICAgICAgICAgICAgICBbZmRwTWVudVRyaWdnZXJGb3JdPVwiaXRlbXNQZXJQYWdlTWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfaXRlbXNQZXJQYWdlICsgJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkcC1tZW51LWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZmRwLW1lbnUgI2l0ZW1zUGVyUGFnZU1lbnUgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgPGZkcC1tZW51LWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIF9pdGVtc1BlclBhZ2VPcHRpb25zXCJcbiAgICAgICAgKGl0ZW1TZWxlY3QpPVwiX2l0ZW1zUGVyUGFnZUNoYW5nZSh2YWx1ZS5sYWJlbClcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCInUmVzdWx0cyBwZXIgcGFnZTogJyArIHZhbHVlLmxhYmVsXCJcbiAgICA+XG4gICAgICAgIDxzcGFuPnt7IHZhbHVlLmxhYmVsIH19PC9zcGFuPlxuICAgIDwvZmRwLW1lbnUtaXRlbT5cbjwvZmRwLW1lbnU+XG5cbjxmZHAtbWVudSAjbWVudUFjdGlvbnMgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgPGZkcC1tZW51LWl0ZW0gKGl0ZW1TZWxlY3QpPVwiX21vdmVUb0NsaWNrZWQoKVwiPlxuICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX2ZkLWljb25cIlxuICAgICAgICAgICAgZ2x5cGg9XCJmb2xkZXItYmxhbmtcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubW92ZVRvQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICA+PC9mZC1pY29uPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubW92ZVRvQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZmRwLW1lbnUtaXRlbT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2FjdGl2ZUl0ZW0/LnR5cGUgPT09ICdmaWxlJ1wiPlxuICAgICAgICA8ZmRwLW1lbnUtaXRlbSAoaXRlbVNlbGVjdCk9XCJfZG93bmxvYWRDbGlja2VkKClcIj5cbiAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX2ZkLWljb25cIlxuICAgICAgICAgICAgICAgIGdseXBoPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLmRvd25sb2FkQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZG93bmxvYWRCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2ZkcC1tZW51LWl0ZW0+XG4gICAgICAgIDxmZHAtbWVudS1pdGVtIChpdGVtU2VsZWN0KT1cIl9vcGVuVXBkYXRlRmlsZVZlcnNpb24oKVwiPlxuICAgICAgICAgICAgPGZkLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fZmQtaWNvblwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJkcmlsbC11cFwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24udXBkYXRlVmVyc2lvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID48L2ZkLWljb24+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLnVwZGF0ZVZlcnNpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2ZkcC1tZW51LWl0ZW0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGZkcC1tZW51LWl0ZW0gKGl0ZW1TZWxlY3QpPVwiX3JlbW92ZSgpXCI+XG4gICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fZmQtaWNvblwiXG4gICAgICAgICAgICBnbHlwaD1cImRlbGV0ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5yZW1vdmVCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID48L2ZkLWljb24+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5yZW1vdmVCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9mZHAtbWVudS1pdGVtPlxuPC9mZHAtbWVudT5cblxuPGlucHV0XG4gICAgI2ZpbGVJbnB1dFxuICAgIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19oaWRkZW5cIlxuICAgIHR5cGU9XCJmaWxlXCJcbiAgICAoZmlsZVNlbGVjdGVkKT1cIl9zZWxlY3RIYW5kbGVyKCRldmVudClcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBmZEZpbGVTZWxlY3Rcbi8+XG5cbjxpbnB1dFxuICAgICN1cGRhdGVWZXJzaW9uSW5wdXRcbiAgICBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9faGlkZGVuXCJcbiAgICB0eXBlPVwiZmlsZVwiXG4gICAgKGZpbGVTZWxlY3RlZCk9XCJfc2VsZWN0SGFuZGxlcigkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgZmRGaWxlU2VsZWN0XG4vPlxuXG48bmctdGVtcGxhdGVcbiAgICBsZXQtbWVzc2FnZVR5cGU9XCJtZXNzYWdlVHlwZVwiXG4gICAgbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCJcbiAgICBsZXQtbWVzc2FnZVN0cmlwVHlwZT1cIm1lc3NhZ2VTdHJpcFR5cGVcIlxuICAgIGxldC1jb3VudD1cImNvdW50XCJcbiAgICAjbWVzc2FnZVxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfbWVzc2FnZVwiIFtuZ1N3aXRjaF09XCJtZXNzYWdlVHlwZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiX21lc3NhZ2VUeXBlLkNSRUFURVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlTmV3Rm9sZGVyXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgbWVzc2FnZVN0cmlwVHlwZTogX21lc3NhZ2UubWVzc2FnZVN0cmlwVHlwZSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJfbWVzc2FnZVR5cGUuVVBEQVRFX1ZFUlNJT05cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVzc2FnZVVwZGF0ZVZlcnNpb25cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBtZXNzYWdlU3RyaXBUeXBlOiBfbWVzc2FnZS5tZXNzYWdlU3RyaXBUeXBlLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IF9tZXNzYWdlLnBheWxvYWRcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIl9tZXNzYWdlVHlwZS5GSUxFX1JFTkFNRVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlRmlsZVJlbmFtZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogX21lc3NhZ2UucGF5bG9hZFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiX21lc3NhZ2VUeXBlLlJFTU9WRVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlUmVtb3ZlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgcGF5bG9hZDogX21lc3NhZ2UucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlU3RyaXBUeXBlOiBfbWVzc2FnZS5tZXNzYWdlU3RyaXBUeXBlLFxuICAgICAgICAgICAgICAgIGNvdW50OiBfbWVzc2FnZS5jb3VudFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiX21lc3NhZ2VUeXBlLk1PVkVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVzc2FnZU1vdmVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgY291bnQ6IF9tZXNzYWdlLmNvdW50XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJfbWVzc2FnZVR5cGUuVFlQRV9NSVNNQVRDSFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlVHlwZU1pc21hdGNoXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgcGF5bG9hZDogX21lc3NhZ2UucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlU3RyaXBUeXBlOiBfbWVzc2FnZS5tZXNzYWdlU3RyaXBUeXBlLFxuICAgICAgICAgICAgICAgIGNvdW50OiBfbWVzc2FnZS5jb3VudFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiX21lc3NhZ2VUeXBlLkZJTEVfU0laRVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlRmlsZVNpemVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgY291bnQ6IF9tZXNzYWdlLmNvdW50XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJfbWVzc2FnZVR5cGUuRklMRV9OQU1FX0xFTkdUSFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlRmlsZW5hbWVMZW5ndGhcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgY291bnQ6IF9tZXNzYWdlLmNvdW50XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlTmV3Rm9sZGVyIGxldC1wYXlsb2FkPVwicGF5bG9hZFwiIGxldC1tZXNzYWdlU3RyaXBUeXBlPVwibWVzc2FnZVN0cmlwVHlwZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIGZvbGRlcnNDcmVhdGVkXCI+XG4gICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZUNyZWF0ZUZhaWxlZCcgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyTmFtZTogcGF5bG9hZC5mb2xkZXIubmFtZSB9IH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNmb2xkZXJzQ3JlYXRlZD5cbiAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlQ3JlYXRlU3VjY2VzcycgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyTmFtZTogcGF5bG9hZC5mb2xkZXIubmFtZSB9IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZVVwZGF0ZVZlcnNpb24gbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCIgbGV0LW1lc3NhZ2VTdHJpcFR5cGU9XCJtZXNzYWdlU3RyaXBUeXBlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VTdHJpcFR5cGUgPT09ICdlcnJvcic7IGVsc2UgdmVyc2lvblVwZGF0ZWRcIj5cbiAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlVXBkYXRlVmVyc2lvbkZhaWxlZCcgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyTmFtZTogcGF5bG9hZC5pdGVtLm5hbWUgfSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjdmVyc2lvblVwZGF0ZWQ+XG4gICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZVVwZGF0ZVZlcnNpb25TdWNjZXNzJyB8IGZkVHJhbnNsYXRlIDogeyBmb2xkZXJOYW1lOiBwYXlsb2FkLml0ZW0ubmFtZSB9IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZUZpbGVSZW5hbWUgbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCIgbGV0LW1lc3NhZ2VTdHJpcFR5cGU9XCJtZXNzYWdlU3RyaXBUeXBlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VTdHJpcFR5cGUgPT09ICdlcnJvcic7IGVsc2UgZmlsZVJlbmFtZWRcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZUZpbGVSZW5hbWVGYWlsZWQnXG4gICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZnJvbTogcGF5bG9hZC5pdGVtLm5hbWUsIHRvOiBwYXlsb2FkLmZpbGVOYW1lIH1cbiAgICAgICAgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2ZpbGVSZW5hbWVkPlxuICAgICAgICB7e1xuICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlRmlsZVJlbmFtZVN1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZnJvbTogcGF5bG9hZC5pdGVtLm5hbWUsIHRvOiBwYXlsb2FkLmZpbGVOYW1lIH1cbiAgICAgICAgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlUmVtb3ZlIGxldC1wYXlsb2FkPVwicGF5bG9hZFwiIGxldC1tZXNzYWdlU3RyaXBUeXBlPVwibWVzc2FnZVN0cmlwVHlwZVwiIGxldC1jb3VudD1cImNvdW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID4gMSAmJiBjb3VudC5mb2xkZXIgJiYgY291bnQuZmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVN0cmlwVHlwZSA9PT0gJ2Vycm9yJzsgZWxzZSBmb2xkZXJzQW5kRmlsZXNSZW1vdmVkXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZVJlbW92ZUZvbGRlcnNBbmRGaWxlc0ZhaWxlZCdcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyc0NvdW50OiBjb3VudC5mb2xkZXIsIGZpbGVzQ291bnQ6IGNvdW50LmZpbGUgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9sZGVyc0FuZEZpbGVzUmVtb3ZlZD5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlUmVtb3ZlRm9sZGVyc0FuZEZpbGVzU3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyc0NvdW50OiBjb3VudC5mb2xkZXIsIGZpbGVzQ291bnQ6IGNvdW50LmZpbGUgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXlsb2FkLml0ZW1zLmxlbmd0aCA+IDEgJiYgY291bnQuZm9sZGVyICYmICFjb3VudC5maWxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIGZvbGRlcnNSZW1vdmVkXCI+XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VSZW1vdmVGb2xkZXJzRmFpbGVkJyB8IGZkVHJhbnNsYXRlIDogeyBmb2xkZXJzQ291bnQ6IGNvdW50LmZvbGRlciB9IH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZvbGRlcnNSZW1vdmVkPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlUmVtb3ZlRm9sZGVyc1N1Y2Nlc3MnIHwgZmRUcmFuc2xhdGUgOiB7IGZvbGRlcnNDb3VudDogY291bnQuZm9sZGVyIH0gfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXlsb2FkLml0ZW1zLmxlbmd0aCA+IDEgJiYgY291bnQuZmlsZSAmJiAhY291bnQuZm9sZGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIGZpbGVzUmVtb3ZlZFwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlUmVtb3ZlRmlsZXNGYWlsZWQnIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVzQ291bnQ6IGNvdW50LmZpbGUgfSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlc1JlbW92ZWQ+XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VSZW1vdmVGaWxlc1N1Y2Nlc3MnIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVzQ291bnQ6IGNvdW50LmZpbGUgfSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIG9uZUl0ZW1SZW1vdmVkXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZVJlbW92ZUZpbGVPckZvbGRlckZhaWxlZCdcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgbmFtZTogcGF5bG9hZC5pdGVtc1swXS5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI29uZUl0ZW1SZW1vdmVkPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VSZW1vdmVGaWxlT3JGb2xkZXJTdWNjZXNzJ1xuICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyBuYW1lOiBwYXlsb2FkLml0ZW1zWzBdLm5hbWUgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZU1vdmUgbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCIgbGV0LW1lc3NhZ2VTdHJpcFR5cGU9XCJtZXNzYWdlU3RyaXBUeXBlXCIgbGV0LWNvdW50PVwiY291bnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPiAxICYmIGNvdW50LmZvbGRlciAmJiBjb3VudC5maWxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIGZpbGVzQW5kRm9sZGVyc01vdmVkVG9cIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKHBheWxvYWQudG9cbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlRm9sZGVyc0FuZEZpbGVzRmFpbGVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVSb290Rm9sZGVyc0FuZEZpbGVzRmFpbGVkJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyc0NvdW50OiBjb3VudC5mb2xkZXIsIGZpbGVzQ291bnQ6IGNvdW50LmZpbGUsIHRvOiBwYXlsb2FkLnRvPy5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbGVzQW5kRm9sZGVyc01vdmVkVG8+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIChwYXlsb2FkLnRvXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZUZvbGRlcnNBbmRGaWxlc1N1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZVJvb3RGb2xkZXJzQW5kRmlsZXNTdWNjZXNzJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyc0NvdW50OiBjb3VudC5mb2xkZXIsIGZpbGVzQ291bnQ6IGNvdW50LmZpbGUsIHRvOiBwYXlsb2FkLnRvPy5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPiAxICYmIGNvdW50LmZvbGRlciAmJiAhY291bnQuZmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVN0cmlwVHlwZSA9PT0gJ2Vycm9yJzsgZWxzZSBmb2xkZXJzTW92ZWRUb1wiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAocGF5bG9hZC50b1xuICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVGb2xkZXJzRmFpbGVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVSb290Rm9sZGVyc0ZhaWxlZCdcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGUgOiB7IGZvbGRlcnNDb3VudDogY291bnQuZm9sZGVyLCB0bzogcGF5bG9hZC50bz8ubmFtZSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmb2xkZXJzTW92ZWRUbz5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKHBheWxvYWQudG9cbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlRm9sZGVyc1N1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZVJvb3RGb2xkZXJzU3VjY2VzcydcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGUgOiB7IGZvbGRlcnNDb3VudDogY291bnQuZm9sZGVyLCB0bzogcGF5bG9hZC50bz8ubmFtZSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID4gMSAmJiBjb3VudC5maWxlICYmICFjb3VudC5mb2xkZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VTdHJpcFR5cGUgPT09ICdlcnJvcic7IGVsc2UgZmlsZXNNb3ZlZFRvXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIChwYXlsb2FkLnRvXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZUZpbGVzRmFpbGVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVSb290RmlsZXNGYWlsZWQnXG4gICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlIDogeyBmaWxlc0NvdW50OiBjb3VudC5maWxlLCB0bzogcGF5bG9hZC50bz8ubmFtZSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlc01vdmVkVG8+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIChwYXlsb2FkLnRvXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZUZpbGVzU3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlUm9vdEZpbGVzU3VjY2VzcydcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVzQ291bnQ6IGNvdW50LmZpbGUsIHRvOiBwYXlsb2FkLnRvPy5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPT09IDFcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VTdHJpcFR5cGUgPT09ICdlcnJvcic7IGVsc2Ugb25lSXRlbU1vdmVkVG9cIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKHBheWxvYWQudG9cbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlRmlsZU9yRm9sZGVyRmFpbGVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVSb290RmlsZU9yRm9sZGVyRmFpbGVkJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgbmFtZTogcGF5bG9hZC5pdGVtc1swXS5uYW1lLCB0bzogcGF5bG9hZC50bz8ubmFtZSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNvbmVJdGVtTW92ZWRUbz5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKHBheWxvYWQudG9cbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlRmlsZU9yRm9sZGVyU3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlUm9vdEZpbGVPckZvbGRlclN1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlIDogeyBuYW1lOiBwYXlsb2FkLml0ZW1zWzBdLm5hbWUsIHRvOiBwYXlsb2FkLnRvPy5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21lc3NhZ2VUeXBlTWlzbWF0Y2ggbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCIgbGV0LW1lc3NhZ2VTdHJpcFR5cGU9XCJtZXNzYWdlU3RyaXBUeXBlXCIgbGV0LWNvdW50PVwiY291bnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPiAxXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgICAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VGaWxlVHlwZU1pc21hdGNoUGx1cmFsJ1xuICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVzQ291bnQ6IHBheWxvYWQuaXRlbXMubGVuZ3RoLCBhbGxvd2VkVHlwZXM6IF9nZXRBbGxvd2VkVHlwZXMoKSB9XG4gICAgICAgIH19XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPT09IDFcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZUZpbGVUeXBlTWlzbWF0Y2hTaW5ndWxhcidcbiAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyBmaWxlTmFtZTogcGF5bG9hZC5pdGVtc1swXS5uYW1lLCBhbGxvd2VkVHlwZXM6IF9nZXRBbGxvd2VkVHlwZXMoKSB9XG4gICAgICAgIH19XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21lc3NhZ2VGaWxlU2l6ZSBsZXQtcGF5bG9hZD1cInBheWxvYWRcIiBsZXQtbWVzc2FnZVN0cmlwVHlwZT1cIm1lc3NhZ2VTdHJpcFR5cGVcIiBsZXQtY291bnQ9XCJjb3VudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXlsb2FkLml0ZW1zLmxlbmd0aCA+IDFcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZUZpbGVTaXplRXhjZWVkZWRQbHVyYWwnXG4gICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZmlsZXNDb3VudDogcGF5bG9hZC5pdGVtcy5sZW5ndGgsIG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSB8fCAwIH1cbiAgICAgICAgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXlsb2FkLml0ZW1zLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICB7e1xuICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlRmlsZVNpemVFeGNlZWRlZFNpbmd1bGFyJ1xuICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVOYW1lOiBwYXlsb2FkLml0ZW1zWzBdLm5hbWUsIG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSB8fCAwIH1cbiAgICAgICAgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZUZpbGVuYW1lTGVuZ3RoIGxldC1wYXlsb2FkPVwicGF5bG9hZFwiIGxldC1tZXNzYWdlU3RyaXBUeXBlPVwibWVzc2FnZVN0cmlwVHlwZVwiIGxldC1jb3VudD1cImNvdW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID4gMVwiPlxuICAgICAgICB7e1xuICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlRmlsZU5hbWVMZW5ndGhFeGNlZWRlZFBsdXJhbCdcbiAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyBmaWxlc0NvdW50OiBwYXlsb2FkLml0ZW1zLmxlbmd0aCwgbWF4RmlsZW5hbWVMZW5ndGg6IG1heEZpbGVuYW1lTGVuZ3RoIHx8IDAgfVxuICAgICAgICB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgICAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VGaWxlTmFtZUxlbmd0aEV4Y2VlZGVkU2luZ3VsYXInXG4gICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZmlsZU5hbWU6IHBheWxvYWQuaXRlbXNbMF0ubmFtZSwgbWF4RmlsZW5hbWVMZW5ndGg6IG1heEZpbGVuYW1lTGVuZ3RoIHx8IDAgfVxuICAgICAgICB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
910
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWNvbGxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3VwbG9hZC1jb2xsZWN0aW9uL3VwbG9hZC1jb2xsZWN0aW9uL3VwbG9hZC1jb2xsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi91cGxvYWQtY29sbGVjdGlvbi91cGxvYWQtY29sbGVjdGlvbi91cGxvYWQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFnQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUE2QixNQUFNLHNDQUFzQyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFLSCxn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S0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsQ0FBQyxVQUFVLEVBQUU7Z0JBQzVDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO2dCQUM5QixNQUFNO2FBQ1Q7U0FDSjtJQUNMLENBQUM7OEdBL2pDUSx5QkFBeUI7a0dBQXpCLHlCQUF5Qix5NUJDNUR0QywybGhDQStzQkE7OzJGRG5wQmEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLHVCQUF1QixpQkFHbEIsaUJBQWlCLENBQUMsSUFBSTsrTEFPckMsRUFBRTtzQkFERCxLQUFLO2dCQUtGLFlBQVk7c0JBRGYsS0FBSztnQkE2QkYsVUFBVTtzQkFEYixLQUFLO2dCQWlCTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQVNOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFVTixTQUFTO3NCQURSLEtBQUs7Z0JBUUYsVUFBVTtzQkFEYixLQUFLO2dCQWlCRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBY04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBUU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQVFOLFlBQVk7c0JBRFgsTUFBTTtnQkFRUCxvQkFBb0I7c0JBRG5CLE1BQU07Z0JBUVAsY0FBYztzQkFEYixNQUFNO2dCQW1FVSxlQUFlO3NCQUQvQixTQUFTO3VCQUFDLFdBQVc7Z0JBS0wsaUJBQWlCO3NCQURqQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgd2Fybk9uY2UsIHV1aWR2NCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBEaWFsb2dDb25maWcsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IENvbHVtbkFsaWduLCBTZWxlY3Rpb25Nb2RlLCBUYWJsZVJvd1NlbGVjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZSc7XG5pbXBvcnQgeyBpc0RhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBOZXdGb2xkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL25ldy1mb2xkZXIvbmV3LWZvbGRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW92ZVRvQ29tcG9uZW50LCBNb3ZlVG9Db21wb25lbnREaWFsb2dEYXRhIH0gZnJvbSAnLi4vZGlhbG9ncy9tb3ZlLXRvL21vdmUtdG8uY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVzVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZpbGVzLXZhbGlkYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQnJlYWRjcnVtYkxpc3QsXG4gICAgSXRlbVBlclBhZ2UsXG4gICAgTWVzc2FnZSxcbiAgICBNZXNzYWdlT3B0aW9ucyxcbiAgICBNZXNzYWdlU3RyaXBUeXBlLFxuICAgIE1lc3NhZ2VUeXBlLFxuICAgIFVwbG9hZENvbGxlY3Rpb25GaWxlLFxuICAgIFVwbG9hZENvbGxlY3Rpb25Gb2xkZXIsXG4gICAgVXBsb2FkQ29sbGVjdGlvbkl0ZW0sXG4gICAgVXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMsXG4gICAgRmlsZW5hbWVMZW5ndGhFeGNlZWRFdmVudCxcbiAgICBGaWxlU2l6ZUV4Y2VlZEV2ZW50LFxuICAgIE1vdmVUb0V2ZW50LFxuICAgIFR5cGVNaXNtYXRjaEV2ZW50LFxuICAgIFVwZGF0ZVZlcnNpb25FdmVudCxcbiAgICBGaWxlc1ZhbGlkYXRvck91dHB1dCxcbiAgICBVcGxvYWRDb2xsZWN0aW9uQ21wXG59IGZyb20gJy4uL21vZGVscy91cGxvYWQtY29sbGVjdGlvbi5tb2RlbHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVNZXNzYWdlU3RyaXBlRGF0YSB9IGZyb20gJy4uL2hlbHBlcnMvZ2VuZXJhdGUtbWVzc2FnZS1zdHJpcGUtZGF0YSc7XG5pbXBvcnQgeyBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZSB9IGZyb20gJy4uL2RvbWFpbi91cGxvYWQtY29sbGVjdGlvbi1kYXRhLXNvdXJjZSc7XG5cbmV4cG9ydCB0eXBlIEZkcFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlID0gVXBsb2FkQ29sbGVjdGlvbkRhdGFTb3VyY2U7XG5cbmxldCByYW5kb21JZCA9IDA7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIFVwbG9hZENvbGxlY3Rpb24gY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtdXBsb2FkLWNvbGxlY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWNvbGxlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbGxlY3Rpb25Db21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBVcGxvYWRDb2xsZWN0aW9uQ21wPEZkcFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlPlxue1xuICAgIC8qKiBJRCBvZiB0aGUgdXBsb2FkIGNvbGxlY3Rpb24gZWxlbWVudC4gSWYgbm9uZSBpcyBwcm92aWRlZCwgb25lIHdpbGwgYmUgZ2VuZXJhdGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQgPSBgZmRwLXVwbG9hZC1jb2xsZWN0aW9uLWlkLSR7cmFuZG9tSWQrK31gO1xuXG4gICAgLyoqIERlZmluZXMgdGhlIG51bWJlciBvZiBpdGVtcyBvbiB0aGUgcGFnZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zUGVyUGFnZSh2YWx1ZTogbnVtYmVyIHwgSXRlbVBlclBhZ2VbXSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9tYXRjaCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5maW5kKChpdGVtKSA9PiBpdGVtLmRlZmF1bHQpO1xuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2VPcHRpb25zID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlID0gZGVmYXVsdFZhbHVlLmxhYmVsO1xuICAgICAgICAgICAgdGhpcy5fbWF0Y2goKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlID0gdmFsdWVbTWF0aC5yb3VuZCh2YWx1ZS5sZW5ndGggLyAyKV0ubGFiZWw7XG5cbiAgICAgICAgdGhpcy5fbWF0Y2goKTtcbiAgICB9XG4gICAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIgfCBJdGVtUGVyUGFnZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZTtcbiAgICB9XG5cbiAgICAvKiogTGlzdCBvZiBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IEZkcFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURTKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBGZHBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIGFsbG93ZWQgZmlsZSB0eXBlcyBmb3IgdGhlIHVwbG9hZC5cbiAgICAgKiBUaGUgY2hvc2VuIGZpbGVzIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IGFuIGFycmF5IG9mIGZpbGUgdHlwZXMuXG4gICAgICogSWYgYXQgbGVhc3Qgb25lIGZpbGUgZG9lcyBub3QgZml0IHRoZSBmaWxlIHR5cGUgcmVxdWlyZW1lbnRzLFxuICAgICAqIHRoZSB1cGxvYWQgaXMgcHJldmVudGVkLiBFeGFtcGxlOiBbXCJqcGdcIiwgXCJwbmdcIiwgXCJibXBcIl0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxlVHlwZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgYSBmaWxlIHNpemUgbGltaXQgaW4gbWVnYWJ5dGVzIHRoYXQgcHJldmVudHMgdGhlIHVwbG9hZFxuICAgICAqIGlmIGF0IGxlYXN0IG9uZSBmaWxlIGV4Y2VlZHMgdGhlIGxpbWl0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4RmlsZVNpemU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgZmlsZSBuYW1lLlxuICAgICAqIElmIHRoZSBtYXhpbXVtIGZpbGUgbmFtZSBsZW5ndGggaXMgZXhjZWVkZWQsXG4gICAgICogdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQgJ2ZpbGVuYW1lTGVuZ3RoRXhjZWVkJyBpcyB0cmlnZ2VyZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhGaWxlbmFtZUxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIGFsbG93ZWQgTUlNRSB0eXBlcyBvZiBmaWxlcyB0byBiZSB1cGxvYWRlZC5cbiAgICAgKiBUaGUgY2hvc2VuIGZpbGVzIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IGFuIGFycmF5IG9mIE1JTUUgdHlwZXMuXG4gICAgICogSWYgYXQgbGVhc3Qgb25lIGZpbGUgZG9lcyBub3QgZml0IHRoZSBNSU1FIHR5cGUgcmVxdWlyZW1lbnRzLCB0aGUgdXBsb2FkIGlzIHByZXZlbnRlZC5cbiAgICAgKiBFeGFtcGxlOiBtaW1lVHlwZXMgW1wiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvanBlZ1wiXS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbWVUeXBlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogQWxsb3dzIHRvIHNldCBvd24gdGV4dCBmb3IgdGhlICdObyBkYXRhJyB0ZXh0IGxhYmVsLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG5vRGF0YVRleHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiUHJvcGVydHkgbm9EYXRhVGV4dCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5ub0RhdGFUZXh0JyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9ub0RhdGFUZXh0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IG5vRGF0YVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vRGF0YVRleHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBBbGxvd3MgdG8gc2V0IG93biB0ZXh0IGZvciB0aGUgJ05vIGRhdGEnIGRlc2NyaXB0aW9uIGxhYmVsLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG5vRGF0YURlc2NyaXB0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IG5vRGF0YURlc2NyaXB0aW9uIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm5vRGF0YURlc2NyaXB0aW9uJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9ub0RhdGFEZXNjcmlwdGlvbiA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBub0RhdGFEZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9EYXRhRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgLyoqIEFsbCBhY3Rpb24gYnV0dG9ucyB3aWxsIGJlIGRpc2FibGVkICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbCBhY3Rpb24gYnV0dG9ucyB3aWxsIGJlIGludmlzaWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBBbGxvd3MgdG8gc3VwcG9ydCBoaWVyYXJjaHkgKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZXJhcmNoeSA9IHRydWU7XG5cbiAgICAvKiogQWxsb3dzIHRvIHNob3cvaGlkZSBwYWdpbmF0aW9uICovXG4gICAgQElucHV0KClcbiAgICBlbmFibGVQYWdpbmF0aW9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSBidXR0b24gdGhhdCBpcyB1c2VkIHRvIHRlcm1pbmF0ZSB0aGUgaW5zdGFudCBmaWxlIHVwbG9hZCBnZXRzIHZpc2libGUuXG4gICAgICogVGhlIGJ1dHRvbiBub3JtYWxseSBhcHBlYXJzIHdoZW4gYSBmaWxlIGlzIGJlaW5nIHVwbG9hZGVkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGVybWluYXRpb25FbmFibGVkID0gdHJ1ZTtcblxuICAgIC8qKiBHaXZlcyB0byBzZWxlY3QgbXVsdGlwbGUgZmlsZXMgZnJvbSB0aGUgc2FtZSBmb2xkZXIgYW5kIHRoZW4gdXBsb2FkIHRoZW0uICovXG4gICAgQElucHV0KClcbiAgICBtdWx0aXBsZSA9IHRydWU7XG5cbiAgICAvKiogQWxsb3dzIHRvIHNob3cvaGlkZSBzZWFyY2ggKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dTZWFyY2ggPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQWxsb3dzIHRvIHVzZSB0aGUgc2FtZSBuYW1lIGZvciBhIGZpbGUgd2hlbiBlZGl0aW5nIHRoZSBmaWxlIG5hbWUuXG4gICAgICogJ1NhbWUgbmFtZScgcmVmZXJzIHRvIGFuIGFscmVhZHkgZXhpc3RpbmcgZmlsZSBuYW1lIGluIHRoZSBsaXN0LlxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBzYW1lRmlsZU5hbWVBbGxvd2VkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGZpbGUgdHlwZSBvciB0aGUgTUlNRSB0eXBlIGRvbid0IG1hdGNoIHRoZSBwZXJtaXR0ZWQgdHlwZXNcbiAgICAgKiAob25seSBpZiB0aGUgZmlsZVR5cGVzIHByb3BlcnR5IG9yIHRoZSBtaW1lVHlwZXMgcHJvcGVydHkgYXJlIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbikuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdHlwZU1pc21hdGNoID0gbmV3IEV2ZW50RW1pdHRlcjxUeXBlTWlzbWF0Y2hFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgbmFtZSBvZiBhIGNob3NlbiBmaWxlIGlzIGxvbmdlciB0aGFuIHRoZSB2YWx1ZSBzcGVjaWZpZWRcbiAgICAgKiB3aXRoIHRoZSBtYXhGaWxlbmFtZUxlbmd0aCBwcm9wZXJ0eSAob25seSBpZiBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24pLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbGVuYW1lTGVuZ3RoRXhjZWVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlbmFtZUxlbmd0aEV4Y2VlZEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBmaWxlIHNpemUgb2YgYW4gdXBsb2FkZWQgZmlsZSBpcyBleGNlZWRlZFxuICAgICAqIChvbmx5IGlmIHRoZSBtYXhGaWxlU2l6ZSBwcm9wZXJ0eSB3YXMgcHJvdmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uKS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaWxlU2l6ZUV4Y2VlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVNpemVFeGNlZWRFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VwbG9hZENvbGxlY3Rpb25JdGVtU3RhdHVzID0gVXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9icmVhZGNydW1iTGlzdDogQnJlYWRjcnVtYkxpc3RbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3VycmVudFBhZ2UgPSAxO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXRlbXNQZXJQYWdlID0gMTA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pdGVtc1BlclBhZ2VPcHRpb25zOiBJdGVtUGVyUGFnZVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b3RhbEl0ZW1zID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvdW50U2hvd2VkSXRlbXMgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY291bnROb3RTaG93ZWRJdGVtcyA9IDA7XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgY3VycmVudGx5IGRpc3BsYXllZCBpdGVtc1xuICAgICAqL1xuICAgIF92aXNpYmxlTGlzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVwbG9hZENvbGxlY3Rpb25JdGVtW10+KFtdKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2VsZWN0ZWRJdGVtczogVXBsb2FkQ29sbGVjdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VhcmNoVGV4dCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2hvd0RyYWdEcm9wQXJlYSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25EcmFnRHJvcEFyZWEgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FjdGl2ZUl0ZW0/OiBVcGxvYWRDb2xsZWN0aW9uSXRlbTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2N1cnJlbnRVcGRhdGVGaWxlVmVyc2lvbj86IFVwbG9hZENvbGxlY3Rpb25GaWxlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVzc2FnZT86IE1lc3NhZ2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVzc2FnZVN0cmlwVHlwZSA9IE1lc3NhZ2VTdHJpcFR5cGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb2x1bW5BbGlnbiA9IENvbHVtbkFsaWduO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0aW9uTW9kZSA9IFNlbGVjdGlvbk1vZGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdXBsb2FkRmlsZXNSZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3VwZGF0ZVZlcnNpb25JbnB1dCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdXBkYXRlVmVyc2lvblJlZjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogVXBsb2FkQ29sbGVjdGlvbkRhdGFTb3VyY2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25vRGF0YURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25vRGF0YVRleHQ6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29udGVudERlbnNpdHlNYW51YWxseVNldCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbWFnZUV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW1xuICAgICAgICAnLmFwbmcnLFxuICAgICAgICAnLmJtcCcsXG4gICAgICAgICcuZ2lmJyxcbiAgICAgICAgJy5pY28nLFxuICAgICAgICAnLmN1cicsXG4gICAgICAgICcuanBnJyxcbiAgICAgICAgJy5qcGVnJyxcbiAgICAgICAgJy5qZmlmJyxcbiAgICAgICAgJy5wanBlZycsXG4gICAgICAgICcucGpwJyxcbiAgICAgICAgJy5wbmcnLFxuICAgICAgICAnLnN2ZycsXG4gICAgICAgICcudGlmJyxcbiAgICAgICAgJy50aWZmJyxcbiAgICAgICAgJy53ZWJwJyxcbiAgICAgICAgJy5mbGlmJyxcbiAgICAgICAgJy5jcjInLFxuICAgICAgICAnLmp4cicsXG4gICAgICAgICcucHNkJyxcbiAgICAgICAgJy5icGcnLFxuICAgICAgICAnLmpwMicsXG4gICAgICAgICcuanBtJyxcbiAgICAgICAgJy5qcHgnLFxuICAgICAgICAnLmhlaWMnLFxuICAgICAgICAnLmRjbSdcbiAgICBdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92YWxpZGF0ZWRGaWxlczogRmlsZXNWYWxpZGF0b3JPdXRwdXQ7XG5cbiAgICAvKiogQGhpZGRlbiBmb3IgZGF0YSBzb3VyY2UgaGFuZGxpbmcgKi9cbiAgICBwcml2YXRlIF9kc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9maWxlc1ZhbGlkYXRvclNlcnZpY2U6IEZpbGVzVmFsaWRhdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHdhcm5PbmNlKCdUaGUgVXBsb2FkIENvbGxlY3Rpb24gY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHJlbGVhc2UuJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbnRlbnREZW5zaXR5KSB7XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eU1hbnVhbGx5U2V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogU2hvdyBtZWVzc2FnZSBmb3IgdHlwZXMgTkVXIEZPTERFUiBDUkVBVEUsIFJFTU9WRSwgTU9WRSBUTywgVVBEQVRFX1ZFUlNJT04sIEZJTEVfUkVOQU1FRCAqL1xuICAgIHNob3dNZXNzYWdlKHR5cGU6IE1lc3NhZ2VUeXBlLCBvcHRpb25zOiBNZXNzYWdlT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZXNzYWdlID0gZ2VuZXJhdGVNZXNzYWdlU3RyaXBlRGF0YSh0eXBlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogT3BlbnMgdGhlIGZpbGUgc2VsZWN0b3IuXG4gICAgICovXG4gICAgX2ZpbGVOYW1lQ2hhbmdlKGU6IEZvY3VzRXZlbnQsIGN1cnJlbnRJdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGl0ZW1OYW1lID0gaW5wdXQudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCBuZXdOYW1lID0gY3VycmVudEl0ZW0udHlwZSA9PT0gJ2ZpbGUnID8gYCR7aXRlbU5hbWV9LiR7Y3VycmVudEl0ZW0ubmFtZS5zcGxpdCgnLicpLnBvcCgpfWAgOiBpdGVtTmFtZTtcblxuICAgICAgICBpZiAoY3VycmVudEl0ZW0ubmFtZSA9PT0gbmV3TmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4RmlsZW5hbWVMZW5ndGggJiYgaXRlbU5hbWUubGVuZ3RoID4gdGhpcy5tYXhGaWxlbmFtZUxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcmVuYW1lZEl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudEl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogbmV3TmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IFtyZW5hbWVkSXRlbV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZUxlbmd0aEV2ZW50ID0gbmV3IEZpbGVuYW1lTGVuZ3RoRXhjZWVkRXZlbnQodGhpcywgcGF5bG9hZCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuRklMRV9OQU1FX0xFTkdUSCwgeyBwYXlsb2FkLCB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLkVSUk9SIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lTGVuZ3RoRXhjZWVkLmVtaXQoZmlsZW5hbWVMZW5ndGhFdmVudCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXJyZW50SXRlbS5zYW1lRmlsZW5hbWVTdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIHBhcmVudEZvbGRlcklkOiB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKSxcbiAgICAgICAgICAgIGZpbGVOYW1lOiBuZXdOYW1lLFxuICAgICAgICAgICAgaXRlbTogeyAuLi5jdXJyZW50SXRlbSB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlXG4gICAgICAgICAgICAuZmlsZVJlbmFtZWQoZGF0YSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShNZXNzYWdlVHlwZS5GSUxFX1JFTkFNRSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGUuU1VDQ0VTU1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuRklMRV9SRU5BTUUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLkVSUk9SXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrTmFtZShlOiBFdmVudCwgY3VycmVudEl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgY29uc3QgaXRlbU5hbWUgPSBpbnB1dC52YWx1ZS50cmltKCk7XG4gICAgICAgIGNvbnN0IG5ld05hbWUgPSBjdXJyZW50SXRlbS50eXBlID09PSAnZmlsZScgPyBgJHtpdGVtTmFtZX0uJHtjdXJyZW50SXRlbS5uYW1lLnNwbGl0KCcuJykucG9wKCl9YCA6IGl0ZW1OYW1lO1xuICAgICAgICBjb25zdCBuYW1lQWxyZWFkeUV4aXN0cyA9IHRoaXMuX2dldExpc3QoKS5zb21lKFxuICAgICAgICAgICAgKGl0ZW0pID0+IGN1cnJlbnRJdGVtLmRvY3VtZW50SWQgIT09IGl0ZW0uZG9jdW1lbnRJZCAmJiBpdGVtLm5hbWUgPT09IG5ld05hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIXRoaXMuc2FtZUZpbGVOYW1lQWxsb3dlZCAmJiBuYW1lQWxyZWFkeUV4aXN0cykge1xuICAgICAgICAgICAgY3VycmVudEl0ZW0uc2FtZUZpbGVuYW1lU3RhdGUgPSAnZXJyb3InO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGUgY3VycmVudEl0ZW0uc2FtZUZpbGVuYW1lU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBPcGVucyB0aGUgZmlsZSBzZWxlY3Rvci5cbiAgICAgKi9cbiAgICBfb3BlblVwbG9hZEZpbGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuX3VwbG9hZEZpbGVzUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgaW5wdXQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogT3BlbnMgdGhlIHVwZGF0ZSBmaWxlIHZlcnNpb24gc2VsZWN0b3IuXG4gICAgICovXG4gICAgX29wZW5VcGRhdGVGaWxlVmVyc2lvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5fdXBkYXRlVmVyc2lvblJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRVcGRhdGVGaWxlVmVyc2lvbiA9IHRoaXMuX2FjdGl2ZUl0ZW0gYXMgVXBsb2FkQ29sbGVjdGlvbkZpbGU7XG4gICAgICAgICAgICBpbnB1dC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0SGFuZGxlcihmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlRmlsZXMoZmlsZXMpO1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVGaWxlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZURyb3Aob3V0cHV0OiBGaWxlc1ZhbGlkYXRvck91dHB1dCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWxpZGF0ZWRGaWxlcyA9IG91dHB1dDtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlRmlsZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vcGVuTmV3Rm9sZGVyRGlhbG9nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4oTmV3Rm9sZGVyQ29tcG9uZW50LCB7XG4gICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xpY2tDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMzIwcHgnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRGb2xkZXI6IHRoaXMuX2dldEN1cnJlbnRGb2xkZXIoKSxcbiAgICAgICAgICAgICAgICBtYXhGaWxlbmFtZUxlbmd0aDogdGhpcy5tYXhGaWxlbmFtZUxlbmd0aFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGFzIERpYWxvZ0NvbmZpZyk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChmb2xkZXJOYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZXIgPSB0aGlzLl9nZW5lcmF0ZVRlbXBvcmFyeU5ld0ZvbGRlcihmb2xkZXJOYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEZvbGRlcklkID0gdGhpcy5fZ2V0Q3VycmVudEZvbGRlcklkKCk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgIHBhcmVudEZvbGRlcklkLFxuICAgICAgICAgICAgICAgIGZvbGRlcjogeyAuLi5mb2xkZXIgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5fZmluZFBhcmVudEZvbGRlckFuZEFkZFRlbXBvcmFyeUZpbGVzKHBhcmVudEZvbGRlcklkLCBbZm9sZGVyXSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgIC5uZXdGb2xkZXIoZGF0YSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5fbWF0Y2goKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuQ1JFQVRFLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLlNVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShNZXNzYWdlVHlwZS5DUkVBVEUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGUuRVJST1JcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vdmVUb0NsaWNrZWQobXVsdGlwbGU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfYWN0aXZlSXRlbSA9IHRoaXMuX2FjdGl2ZUl0ZW07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGb2xkZXIgPSB0aGlzLl9nZXRDdXJyZW50Rm9sZGVyKCk7XG4gICAgICAgIGNvbnN0IG1vdmFibGVJdGVtcyA9IG11bHRpcGxlID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogX2FjdGl2ZUl0ZW0gPyBbX2FjdGl2ZUl0ZW1dIDogW107XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbihcbiAgICAgICAgICAgIE1vdmVUb0NvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xpY2tDbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzM1MHB4JyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLmRhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Rm9sZGVyLFxuICAgICAgICAgICAgICAgICAgICBtb3ZhYmxlRm9sZGVyczogbW92YWJsZUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbT8udHlwZSA9PT0gJ2ZvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICBtYXhGaWxlbmFtZUxlbmd0aDogdGhpcy5tYXhGaWxlbmFtZUxlbmd0aFxuICAgICAgICAgICAgICAgIH0gYXMgTW92ZVRvQ29tcG9uZW50RGlhbG9nRGF0YVxuICAgICAgICAgICAgfSBhcyBEaWFsb2dDb25maWcsXG4gICAgICAgICAgICB0aGlzLl9pbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcbiAgICAgICAgICAgICh7IHNlbGVjdGVkRm9sZGVyLCBwYXJlbnRGb2xkZXJJZCwgZm9sZGVyTmFtZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZDogTW92ZVRvRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGN1cnJlbnRGb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBzZWxlY3RlZEZvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IG1vdmFibGVJdGVtc1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoZm9sZGVyTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLm5ld0ZvbGRlciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZvbGRlcklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVyTmFtZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAubW92ZVRvKHBheWxvYWQpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuTU9WRSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLlNVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuTU9WRSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLkVSUk9SXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rvd25sb2FkQ2xpY2tlZChtdWx0aXBsZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9hY3RpdmVJdGVtID0geyAuLi50aGlzLl9hY3RpdmVJdGVtIH07XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gKG11bHRpcGxlID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogW19hY3RpdmVJdGVtXSkgYXMgVXBsb2FkQ29sbGVjdGlvbkZpbGVbXTtcblxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZG93bmxvYWQoeyBpdGVtcyB9KS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yZW1vdmUobXVsdGlwbGU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfYWN0aXZlSXRlbSA9IHsgLi4udGhpcy5fYWN0aXZlSXRlbSB9IGFzIFVwbG9hZENvbGxlY3Rpb25JdGVtO1xuICAgICAgICBjb25zdCBpdGVtcyA9IG11bHRpcGxlID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogW19hY3RpdmVJdGVtXTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHsgcGFyZW50Rm9sZGVySWQ6IHRoaXMuX2dldEN1cnJlbnRGb2xkZXJJZCgpLCBpdGVtcyB9O1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVxuICAgICAgICAgICAgLmRlbGV0ZShkYXRhKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWF0Y2goKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKE1lc3NhZ2VUeXBlLlJFTU9WRSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGUuU1VDQ0VTU1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuUkVNT1ZFLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogTWVzc2FnZVN0cmlwVHlwZS5FUlJPUlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ydW5VcGxvYWROZXdGaWxlQWZ0ZXJGYWlsKGl0ZW06IFVwbG9hZENvbGxlY3Rpb25GaWxlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZVxuICAgICAgICAgICAgLnJ1bkFmdGVyRmFpbCh7IHBhcmVudEZvbGRlcklkOiB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKSwgaXRlbXM6IFtpdGVtXSB9KVxuICAgICAgICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuX21hdGNoKCkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhbmNlbFVwbG9hZE5ld0ZpbGUoZmlsZTogVXBsb2FkQ29sbGVjdGlvbkZpbGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlXG4gICAgICAgICAgICAuY2FuY2VsVXBsb2FkTmV3RmlsZSh7IHBhcmVudEZvbGRlcklkOiB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKSwgaXRlbTogZmlsZSB9KVxuICAgICAgICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuX21hdGNoKCkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VTdHJpcERpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3BlbkZvbGRlcihpdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnZmlsZScgfHwgIWl0ZW0uZG9jdW1lbnRJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2JyZWFkY3J1bWJMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2JyZWFkY3J1bWJMaXN0W3RoaXMuX2JyZWFkY3J1bWJMaXN0Lmxlbmd0aCAtIDFdLmNsaWthYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2JyZWFkY3J1bWJMaXN0LnB1c2goe1xuICAgICAgICAgICAgY2xpa2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgZm9sZGVySWQ6IGl0ZW0uZG9jdW1lbnRJZCxcbiAgICAgICAgICAgIGZvbGRlck5hbWU6IGl0ZW0ubmFtZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9tYXRjaCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FjdGlvbkJ1dHRvbihpdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkRyb3B6b25lKGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Nob3dEcmFnRHJvcEFyZWEgPSB0cnVlO1xuICAgICAgICB0aGlzLl9vbkRyYWdEcm9wQXJlYSA9IGV2ZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RyYWdEcm9wQ2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zaG93RHJhZ0Ryb3BBcmVhID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYnJlYWRjcnVtYkdvVG8oZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4PzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihpbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2JyZWFkY3J1bWJMaXN0ID0gW107XG4gICAgICAgICAgICB0aGlzLl9tYXRjaCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9icmVhZGNydW1iTGlzdCA9IHRoaXMuX2JyZWFkY3J1bWJMaXN0LnNsaWNlKDAsIGluZGV4ISArIDEpO1xuICAgICAgICB0aGlzLl9icmVhZGNydW1iTGlzdFt0aGlzLl9icmVhZGNydW1iTGlzdC5sZW5ndGggLSAxXS5jbGlrYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGFnZUNoYW5nZWQocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lbmFibGVQYWdpbmF0aW9uIHx8IHRoaXMuX2N1cnJlbnRQYWdlID09PSBwYWdlTnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xuXG4gICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXRlbXNQZXJQYWdlQ2hhbmdlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9pdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFBhZ2UgKiB0aGlzLl9pdGVtc1BlclBhZ2UgPiB0aGlzLl90b3RhbEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IE1hdGguY2VpbCh0aGlzLl90b3RhbEl0ZW1zIC8gdGhpcy5faXRlbXNQZXJQYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VhcmNoSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tYXRjaCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uUm93U2VsZWN0aW9uQ2hhbmdlKGRhdGE6IFRhYmxlUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQ8VXBsb2FkQ29sbGVjdGlvbkl0ZW0+KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zYW1lRmlsZU5hbWVBbGxvd2VkKSB7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVkSXRlbSA9IGRhdGEucmVtb3ZlZFswXTtcbiAgICAgICAgICAgIHRoaXMuX2NsZWFySXRlbVNhbWVGaWxlbmFtZVN0YXRlKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGRhdGEuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldEl0ZW1OYW1lKGl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2ZvbGRlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbS5uYW1lLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRJdGVtRXh0ZW5zaW9uKGl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2ZvbGRlcicpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgLiR7aXRlbS5uYW1lLnNwbGl0KCcuJykucG9wKCl9YDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nZXRJY29uQnlUeXBlKGZpbGU6IFVwbG9hZENvbGxlY3Rpb25GaWxlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IGAuJHtmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKX1gO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZUV4dGVuc2lvbnMuaW5jbHVkZXModHlwZSkgPyAnYmFja2dyb3VuZCcgOiAnZG9jdW1lbnQnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dJZlNlbGVjdGVkT25seUZpbGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09ICdmb2xkZXInKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1NlbGVjdGVkSXRlbShpdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoKHNlbGVjdGVkSXRlbSkgPT4gc2VsZWN0ZWRJdGVtLmRvY3VtZW50SWQgPT09IGl0ZW0uZG9jdW1lbnRJZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0TGlzdCgpOiBVcGxvYWRDb2xsZWN0aW9uSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIubGlzdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5RG9jdW1lbnRJZChpbmRleDogbnVtYmVyLCBpdGVtOiBVcGxvYWRDb2xsZWN0aW9uSXRlbSk6IFVwbG9hZENvbGxlY3Rpb25JdGVtWydkb2N1bWVudElkJ10ge1xuICAgICAgICByZXR1cm4gaXRlbS5kb2N1bWVudElkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldEFsbG93ZWRUeXBlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5maWxlVHlwZXM/LmpvaW4oJywgJyl9JHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVR5cGVzPy5sZW5ndGggJiYgdGhpcy5taW1lVHlwZXM/Lmxlbmd0aCA/ICcsICcgOiAnJ1xuICAgICAgICB9JHt0aGlzLm1pbWVUeXBlcz8uam9pbignLCAnKX1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVGaWxlcyhmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlZEZpbGVzID0gdGhpcy5fZmlsZXNWYWxpZGF0b3JTZXJ2aWNlLnZhbGlkYXRpb24oZmlsZXMsIHtcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0aGlzLm1heEZpbGVTaXplLFxuICAgICAgICAgICAgbWF4RmlsZU5hbWVMZW5ndGg6IHRoaXMubWF4RmlsZW5hbWVMZW5ndGgsXG4gICAgICAgICAgICBmaWxlVHlwZXM6IHRoaXMuZmlsZVR5cGVzLFxuICAgICAgICAgICAgbWltZVR5cGVzOiB0aGlzLm1pbWVUeXBlc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZUZpbGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHZhbGlkRmlsZXMsIHR5cGVNaXNtYXRjaCwgZmlsZW5hbWVMZW5ndGhFeGNlZWQsIGZpbGVTaXplRXhjZWVkIH0gPSB0aGlzLl92YWxpZGF0ZWRGaWxlcztcblxuICAgICAgICBpZiAodmFsaWRGaWxlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRVcGRhdGVGaWxlVmVyc2lvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGVWZXJzaW9uKHZhbGlkRmlsZXNbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGxvYWROZXdGaWxlcyh2YWxpZEZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlTWlzbWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IGl0ZW1zOiB0eXBlTWlzbWF0Y2ggfTtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IFR5cGVNaXNtYXRjaEV2ZW50KHRoaXMsIHBheWxvYWQpO1xuXG4gICAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKE1lc3NhZ2VUeXBlLlRZUEVfTUlTTUFUQ0gsIHsgcGF5bG9hZCwgdHlwZTogTWVzc2FnZVN0cmlwVHlwZS5FUlJPUiB9KTtcblxuICAgICAgICAgICAgdGhpcy50eXBlTWlzbWF0Y2guZW1pdChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZW5hbWVMZW5ndGhFeGNlZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IGl0ZW1zOiBmaWxlbmFtZUxlbmd0aEV4Y2VlZCB9O1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRmlsZW5hbWVMZW5ndGhFeGNlZWRFdmVudCh0aGlzLCBwYXlsb2FkKTtcblxuICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShNZXNzYWdlVHlwZS5GSUxFX05BTUVfTEVOR1RILCB7IHBheWxvYWQsIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGUuRVJST1IgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVMZW5ndGhFeGNlZWQuZW1pdChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZVNpemVFeGNlZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IGl0ZW1zOiBmaWxlU2l6ZUV4Y2VlZCB9O1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRmlsZVNpemVFeGNlZWRFdmVudCh0aGlzLCBwYXlsb2FkKTtcblxuICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShNZXNzYWdlVHlwZS5GSUxFX1NJWkUsIHsgcGF5bG9hZCwgdHlwZTogTWVzc2FnZVN0cmlwVHlwZS5FUlJPUiB9KTtcblxuICAgICAgICAgICAgdGhpcy5maWxlU2l6ZUV4Y2VlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRmlsZVZlcnNpb24obmV3SXRlbTogRmlsZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50Rm9sZGVySWQgPSB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSB7XG4gICAgICAgICAgICAuLi50aGlzLl9jdXJyZW50VXBkYXRlRmlsZVZlcnNpb24sXG4gICAgICAgICAgICBzdGF0dXM6IFVwbG9hZENvbGxlY3Rpb25JdGVtU3RhdHVzLkxPQURJTkdcbiAgICAgICAgfSBhcyBVcGxvYWRDb2xsZWN0aW9uSXRlbTtcblxuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgcGFyZW50Rm9sZGVySWQ6IHRoaXMuX2dldEN1cnJlbnRGb2xkZXJJZCgpLFxuICAgICAgICAgICAgaXRlbTogdGhpcy5fY3VycmVudFVwZGF0ZUZpbGVWZXJzaW9uLFxuICAgICAgICAgICAgbmV3SXRlbVxuICAgICAgICB9IGFzIFVwZGF0ZVZlcnNpb25FdmVudDtcblxuICAgICAgICB0aGlzLl9maW5kUGFyZW50Rm9sZGVyQW5kVXBkYXRlSXRlbShjdXJyZW50Rm9sZGVySWQsIGN1cnJlbnRJdGVtKTtcblxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VcbiAgICAgICAgICAgIC51cGRhdGVWZXJzaW9uKGRhdGEpXG4gICAgICAgICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5fbWF0Y2goKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuVVBEQVRFX1ZFUlNJT04sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLlNVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRVcGRhdGVGaWxlVmVyc2lvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoTWVzc2FnZVR5cGUuVVBEQVRFX1ZFUlNJT04sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBNZXNzYWdlU3RyaXBUeXBlLkVSUk9SXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBsb2FkTmV3RmlsZXMoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50Rm9sZGVySWQgPSB0aGlzLl9nZXRDdXJyZW50Rm9sZGVySWQoKTtcbiAgICAgICAgY29uc3QgbmV3SXRlbXMgPSB0aGlzLl9nZW5lcmF0ZVRlbXBvcmFyeU5ld0ZpbGVzKGZpbGVzKTtcblxuICAgICAgICB0aGlzLl9maW5kUGFyZW50Rm9sZGVyQW5kQWRkVGVtcG9yYXJ5RmlsZXMoY3VycmVudEZvbGRlcklkLCBuZXdJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlXG4gICAgICAgICAgICAudXBsb2FkKHtcbiAgICAgICAgICAgICAgICBwYXJlbnRGb2xkZXJJZDogY3VycmVudEZvbGRlcklkLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBuZXdJdGVtcy5tYXAoKGl0ZW0pID0+ICh7IC4uLml0ZW0gfSkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuX21hdGNoKCkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudEZvbGRlcigpOiBVcGxvYWRDb2xsZWN0aW9uRm9sZGVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY3VycmVudEZvbGRlcklkID0gdGhpcy5fZ2V0Q3VycmVudEZvbGRlcklkKCk7XG5cbiAgICAgICAgcmV0dXJuICFjdXJyZW50Rm9sZGVySWQgPyB1bmRlZmluZWQgOiB0aGlzLl9maW5kRm9sZGVyQnlJZChjdXJyZW50Rm9sZGVySWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudEZvbGRlcklkKCk6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9icmVhZGNydW1iTGlzdC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHRoaXMuX2JyZWFkY3J1bWJMaXN0W3RoaXMuX2JyZWFkY3J1bWJMaXN0Lmxlbmd0aCAtIDFdLmZvbGRlcklkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmluZEZvbGRlckJ5SWQoXG4gICAgICAgIGZvbGRlcklkOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgICAgIGl0ZW1zOiBVcGxvYWRDb2xsZWN0aW9uSXRlbVtdID0gdGhpcy5kYXRhU291cmNlLmRhdGFQcm92aWRlci5pdGVtc1xuICAgICk6IFVwbG9hZENvbGxlY3Rpb25Gb2xkZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgZm91bmRPYmo6IFVwbG9hZENvbGxlY3Rpb25Gb2xkZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXRlbXMsIChfLCBuZXN0ZWRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5lc3RlZFZhbHVlICYmIG5lc3RlZFZhbHVlLmRvY3VtZW50SWQgPT09IGZvbGRlcklkKSB7XG4gICAgICAgICAgICAgICAgZm91bmRPYmogPSBuZXN0ZWRWYWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5lc3RlZFZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZm91bmRPYmo7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9maW5kUGFyZW50Rm9sZGVyQW5kVXBkYXRlSXRlbShcbiAgICAgICAgcGFyZW50Rm9sZGVySWQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICAgICAgdXBkYXRlZEl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtLFxuICAgICAgICBpdGVtcyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIuaXRlbXNcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKCFwYXJlbnRGb2xkZXJJZCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uZG9jdW1lbnRJZCA9PT0gdXBkYXRlZEl0ZW0uZG9jdW1lbnRJZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaXRlbXNbaW5kZXhdID0gdXBkYXRlZEl0ZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX21hdGNoKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gaXRlbXNbaV07XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbS50eXBlICE9PSAnZm9sZGVyJykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0uZG9jdW1lbnRJZCA9PT0gcGFyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRJdGVtLmZpbGVzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5kb2N1bWVudElkID09PSB1cGRhdGVkSXRlbS5kb2N1bWVudElkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLmZpbGVzW2ldID0gdXBkYXRlZEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdGNoKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9maW5kUGFyZW50Rm9sZGVyQW5kVXBkYXRlSXRlbShwYXJlbnRGb2xkZXJJZCwgdXBkYXRlZEl0ZW0sIGN1cnJlbnRJdGVtLmZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZmluZFBhcmVudEZvbGRlckFuZEFkZFRlbXBvcmFyeUZpbGVzKFxuICAgICAgICBwYXJlbnRGb2xkZXJJZDogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgICAgICBuZXdJdGVtczogVXBsb2FkQ29sbGVjdGlvbkl0ZW1bXSxcbiAgICAgICAgaXRlbXMgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLml0ZW1zXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICghcGFyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goLi4ubmV3SXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5fbWF0Y2goKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbS50eXBlICE9PSAnZm9sZGVyJykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0uZG9jdW1lbnRJZCA9PT0gcGFyZW50Rm9sZGVySWQpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SXRlbS5maWxlcy5wdXNoKC4uLm5ld0l0ZW1zKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXRjaCgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmRQYXJlbnRGb2xkZXJBbmRBZGRUZW1wb3JhcnlGaWxlcyhwYXJlbnRGb2xkZXJJZCwgbmV3SXRlbXMsIGN1cnJlbnRJdGVtLmZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVUZW1wb3JhcnlOZXdGaWxlcyhmaWxlczogRmlsZVtdKTogVXBsb2FkQ29sbGVjdGlvbkZpbGVbXSB7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoKGZpbGUpID0+ICh7XG4gICAgICAgICAgICBkb2N1bWVudElkOiB1dWlkdjQoKSxcbiAgICAgICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgIHVwbG9hZGVkQnk6IHtcbiAgICAgICAgICAgICAgICBpZDogdXVpZHY0KCksXG4gICAgICAgICAgICAgICAgbmFtZTogYFlvdWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGxvYWRlZE9uOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgZmlsZVNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgICAgICB1cmw6ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiBVcGxvYWRDb2xsZWN0aW9uSXRlbVN0YXR1cy5MT0FESU5HLFxuICAgICAgICAgICAgZmlsZVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZW5lcmF0ZVRlbXBvcmFyeU5ld0ZvbGRlcihmb2xkZXJOYW1lOiBzdHJpbmcpOiBVcGxvYWRDb2xsZWN0aW9uRm9sZGVyIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvY3VtZW50SWQ6IHV1aWR2NCgpLFxuICAgICAgICAgICAgdHlwZTogJ2ZvbGRlcicsXG4gICAgICAgICAgICBuYW1lOiBmb2xkZXJOYW1lLFxuICAgICAgICAgICAgdXBsb2FkZWRCeToge1xuICAgICAgICAgICAgICAgIGlkOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdZb3UnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBsb2FkZWRPbjogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIGZpbGVzOiBbXSxcbiAgICAgICAgICAgIHN0YXR1czogVXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMuTE9BRElOR1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZURTKGRzOiBGZHBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aXNpYmxlTGlzdCQubmV4dChbXSk7XG4gICAgICAgIGlmIChpc0RhdGFTb3VyY2UodGhpcy5kYXRhU291cmNlKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmNsb3NlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5fZHNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IHRoaXMuX29wZW5EYXRhU3RyZWFtKGRzKTtcblxuICAgICAgICAvLyBpbml0aWFsIGRhdGEgZmV0Y2hcbiAgICAgICAgdGhpcy5fbWF0Y2goKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29wZW5EYXRhU3RyZWFtKGRzOiBGZHBVcGxvYWRDb2xsZWN0aW9uRGF0YVNvdXJjZSk6IFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlIHtcbiAgICAgICAgY29uc3QgaW5pdERhdGFTb3VyY2UgPSB0aGlzLl90b0RhdGFTdHJlYW0oZHMpO1xuICAgICAgICBpZiAoaW5pdERhdGFTb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbZGF0YVNvdXJjZV0gc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gYXJyYXksIE9ic2VydmFibGUsIG9yIERhdGFTb3VyY2VgKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBpcyBzaW5nbGUgcG9pbnQgb2YgZGF0YSBlbnRyeSB0byB0aGUgY29tcG9uZW50LiBXZSBkb250IHdhbnQgdG8gc2V0IGRhdGEgb24gZGlmZmVyZW50XG4gICAgICAgICAqIHBsYWNlcy4gSWYgYW55IG5ldyBkYXRhIGNvbWVzIGluIGVpdGhlciB5b3UgZG8gYSBzZWFyY2ggYW5kIHlvdSB3YW50IHRvIHBhc3MgaW5pdGlhbCBkYXRhXG4gICAgICAgICAqIGl0cyBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBpbml0RGF0YVNvdXJjZS5vcGVuKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlTGlzdCQubmV4dChkYXRhKTtcblxuICAgICAgICAgICAgdGhpcy5fdG90YWxJdGVtcyA9IGluaXREYXRhU291cmNlLmRhdGFQcm92aWRlci50b3RhbEl0ZW1zO1xuXG4gICAgICAgICAgICB0aGlzLl9jb3VudFVudmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaW5pdERhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b0RhdGFTdHJlYW0oZHM6IEZkcFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlKTogVXBsb2FkQ29sbGVjdGlvbkRhdGFTb3VyY2UgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKGRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRzIGFzIFVwbG9hZENvbGxlY3Rpb25EYXRhU291cmNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21hdGNoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBxdWVyeSA9IG5ldyBNYXAoKTtcblxuICAgICAgICBxdWVyeS5zZXQoJ2ZvbGRlcklkJywgdGhpcy5fZ2V0Q3VycmVudEZvbGRlcklkKCkpO1xuICAgICAgICBxdWVyeS5zZXQoJ3BhZ2UnLCB0aGlzLl9jdXJyZW50UGFnZSk7XG4gICAgICAgIHF1ZXJ5LnNldCgnc2VhcmNoVGV4dCcsIHRoaXMuX3NlYXJjaFRleHQgfHwgJyonKTtcblxuICAgICAgICBpZiAodGhpcy5lbmFibGVQYWdpbmF0aW9uKSB7XG4gICAgICAgICAgICBxdWVyeS5zZXQoJ2xpbWl0JywgdGhpcy5faXRlbXNQZXJQYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5tYXRjaChxdWVyeSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb3VudFVudmlzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtc1BlclBhZ2UgPSB0aGlzLl9pdGVtc1BlclBhZ2UgYXMgbnVtYmVyO1xuICAgICAgICB0aGlzLl9jb3VudFNob3dlZEl0ZW1zID0gdGhpcy5fY3VycmVudFBhZ2UgKiBpdGVtc1BlclBhZ2UgLSBpdGVtc1BlclBhZ2UgKyAxO1xuICAgICAgICB0aGlzLl9jb3VudE5vdFNob3dlZEl0ZW1zID0gdGhpcy5fY291bnRTaG93ZWRJdGVtcyArIHRoaXMuX3Zpc2libGVMaXN0JC52YWx1ZS5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xlYXJJdGVtU2FtZUZpbGVuYW1lU3RhdGUoY3VycmVudEl0ZW06IFVwbG9hZENvbGxlY3Rpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICghY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9nZXRMaXN0KCkpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmRvY3VtZW50SWQgPT09IGN1cnJlbnRJdGVtLmRvY3VtZW50SWQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS5zYW1lRmlsZW5hbWVTdGF0ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgW2lkXT1cImlkXCIgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25cIj5cbiAgICA8IS0tIE1lc3NhZ2Ugc3RyaXAgLS0+XG4gICAgPGZkLW1lc3NhZ2Utc3RyaXAgKm5nSWY9XCJfbWVzc2FnZVwiIFt0eXBlXT1cIl9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGVcIiAob25EaXNtaXNzKT1cIl9tZXNzYWdlU3RyaXBEaXNtaXNzKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVzc2FnZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlOiBfbWVzc2FnZS5tZXNzYWdlVHlwZSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgY291bnQ6IF9tZXNzYWdlLmNvdW50XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtbWVzc2FnZS1zdHJpcD5cblxuICAgIDwhLS0gVG9vbGJhciAtLT5cbiAgICA8ZmQtdG9vbGJhciBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fdG9vbGJhclwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogMSBhdXRvXCI+XG4gICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYiBbaWRdPVwiaWQgKyAnLWJyZWFkY3J1bWInXCI+XG4gICAgICAgICAgICAgICAgPGZkLWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZUJyZWFkY3J1bWJzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBmZC1saW5rIChjbGljayk9XCJfYnJlYWRjcnVtYkdvVG8oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uYnJlYWRjcnVtYkxhYmVsQWxsRmlsZXMnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCcmVhZGNydW1iPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5icmVhZGNydW1iTGFiZWxBbGxGaWxlc1dpdGhUb3RhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHRvdGFsOiBfdG90YWxJdGVtcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfYnJlYWRjcnVtYkxpc3QubGVuZ3RoID4gMCA/IG11bHRpcGxlQnJlYWRjcnVtYnMgOiBzaW5nbGVCcmVhZGNydW1iXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZmQtYnJlYWRjcnVtYi1pdGVtPlxuICAgICAgICAgICAgICAgIDxmZC1icmVhZGNydW1iLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2JyZWFkY3J1bWJMaXN0OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xpY2thYmxlQnJlYWRjcnVtYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgZmQtbGluayAoY2xpY2spPVwiX2JyZWFkY3J1bWJHb1RvKCRldmVudCwgaSlcIj57eyBpdGVtLmZvbGRlck5hbWUgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEJyZWFkY3J1bWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmZvbGRlck5hbWUgfX0gKHt7IF90b3RhbEl0ZW1zIH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtLmNsaWthYmxlID8gY2xpY2thYmxlQnJlYWRjcnVtYiA6IHRleHRCcmVhZGNydW1iXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZmQtYnJlYWRjcnVtYi1pdGVtPlxuICAgICAgICAgICAgPC9mZC1icmVhZGNydW1iPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXIgc3R5bGU9XCJtYXgtd2lkdGg6IDNyZW1cIj48L2ZkLXRvb2xiYXItc3BhY2VyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVhZG9ubHkgfHwgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgIDxmZC1pbnB1dC1ncm91cFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1NlYXJjaFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3NlYXJjaElucHV0Q2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICBnbHlwaD1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImlkICsgJy1icmVhZGNydW1iJ1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uc2VhcmNoUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvZmQtaW5wdXQtZ3JvdXA+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuVXBsb2FkRmlsZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImdob3N0XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uYWRkQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5hZGRCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb3Blbk5ld0ZvbGRlckRpYWxvZygpXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoaWVyYXJjaHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm5ld0ZvbGRlckJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubmV3Rm9sZGVyQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRvbmx5ICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZVRvQ2xpY2tlZCh0cnVlKVwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubW92ZVRvQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1vdmVUb0J0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2Rvd25sb2FkQ2xpY2tlZCh0cnVlKVwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJfc2hvd0lmU2VsZWN0ZWRPbmx5RmlsZXMoKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZG93bmxvYWRCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZG93bmxvYWRCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9yZW1vdmUodHJ1ZSlcIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cImdob3N0XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLnJlbW92ZUJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5yZW1vdmVCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtdG9vbGJhcj5cblxuICAgIDxkaXYgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX3RhYmxlLS13cmFwcGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX190YWJsZVwiXG4gICAgICAgICAgICBmZHBVcGxvYWRDb2xsZWN0aW9uRHJhZ25Ecm9wXG4gICAgICAgICAgICBbZmlsZVR5cGVzXT1cImZpbGVUeXBlc1wiXG4gICAgICAgICAgICBbbWF4RmlsZW5hbWVMZW5ndGhdPVwibWF4RmlsZW5hbWVMZW5ndGhcIlxuICAgICAgICAgICAgW21heEZpbGVTaXplXT1cIm1heEZpbGVTaXplXCJcbiAgICAgICAgICAgIFttaW1lVHlwZXNdPVwibWltZVR5cGVzXCJcbiAgICAgICAgICAgIFtkcmFnbmRyb3BdPVwiIXJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgKGZpbGVDaGFuZ2VkKT1cIl9oYW5kbGVEcm9wKCRldmVudClcIlxuICAgICAgICAgICAgKGNhbmNlbCk9XCJfZHJhZ0Ryb3BDYW5jZWwoKVwiXG4gICAgICAgICAgICAob25Ecm9wem9uZSk9XCJfb25Ecm9wem9uZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBUYWJsZSAtLT5cbiAgICAgICAgICAgIDxmZHAtdGFibGVcbiAgICAgICAgICAgICAgICAqbmdJZj1cIl92aXNpYmxlTGlzdCQudmFsdWUubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiX3Zpc2libGVMaXN0JFwiXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiZGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgIGVtcHR5VGFibGVNZXNzYWdlPVwiXCJcbiAgICAgICAgICAgICAgICBbbm9Ib3Jpem9udGFsQm9yZGVyc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbdHJhY2tCeV09XCJfdHJhY2tCeURvY3VtZW50SWRcIlxuICAgICAgICAgICAgICAgIChyb3dTZWxlY3Rpb25DaGFuZ2UpPVwiX29uUm93U2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZHAtY29sdW1uIG5hbWU9XCJuYW1lXCIgbGFiZWw9XCJOYW1lXCIgd2lkdGg9XCI4cmVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtY2VsbCAqZmRwQ2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX192ZXJ0aWNhbC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fZmQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZm9sZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiZm9sZGVyLWJsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZm9sZGVySWNvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19mZC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdmaWxlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJfZ2V0SWNvbkJ5VHlwZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLmZpbGVJY29uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWljb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgIV9pc1NlbGVjdGVkSXRlbShpdGVtKTsgZWxzZSBlZGl0TW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkcC11cGxvYWQtY29sbGVjdGlvbl9fY3Vyc29yXT1cIml0ZW0udHlwZSA9PT0gJ2ZvbGRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuRm9sZGVyKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBpdGVtLm5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdE1vZGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXAgW3RyaWdnZXJzXT1cIltdXCIgW2lzT3Blbl09XCIhIWl0ZW0uc2FtZUZpbGVuYW1lU3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX3ZlcnRpY2FsLWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1mb3JtLWNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9nZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIl9maWxlTmFtZUNoYW5nZSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIl9jaGVja05hbWUoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5lZGl0RmlsZU5hbWVJbnB1dFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJpdGVtLnNhbWVGaWxlbmFtZVN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19pdGVtX2V4dGVuc2lvblwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRJdGVtRXh0ZW5zaW9uKGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWZvcm0tbWVzc2FnZSBbdHlwZV09XCJpdGVtLnNhbWVGaWxlbmFtZVN0YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0udHlwZSA9PT0gJ2ZpbGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZWRpdEZpbGVOYW1lRmlsZUFscmVhZHlFeGlzdHNFcnJvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5lZGl0RmlsZU5hbWVGb2xkZXJBbHJlYWR5RXhpc3RzRXJyb3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkcC10YWJsZS1jZWxsPlxuICAgICAgICAgICAgICAgIDwvZmRwLWNvbHVtbj5cblxuICAgICAgICAgICAgICAgIDxmZHAtY29sdW1uIG5hbWU9XCJ1cGxvYWRlZEJ5XCIgbGFiZWw9XCJVcGxvYWRlZCBieVwiIHdpZHRoPVwiNXJlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWNlbGwgKmZkcENlbGxEZWY9XCJsZXQgaXRlbVwiPnt7IGl0ZW0udXBsb2FkZWRCeS5uYW1lIH19PC9mZHAtdGFibGUtY2VsbD5cbiAgICAgICAgICAgICAgICA8L2ZkcC1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZmRwLWNvbHVtbiBuYW1lPVwidXBsb2FkZWRPblwiIGxhYmVsPVwiVXBsb2FkZWQgb25cIiB3aWR0aD1cIjVyZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1jZWxsICpmZHBDZWxsRGVmPVwibGV0IGl0ZW1cIj57eyBpdGVtLnVwbG9hZGVkT24gfCBkYXRlIDogJ3Nob3J0RGF0ZScgfX08L2ZkcC10YWJsZS1jZWxsPlxuICAgICAgICAgICAgICAgIDwvZmRwLWNvbHVtbj5cblxuICAgICAgICAgICAgICAgIDxmZHAtY29sdW1uIG5hbWU9XCJzaXplXCIgbGFiZWw9XCJGaWxlIHNpemVcIiB3aWR0aD1cIjVyZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1jZWxsICpmZHBDZWxsRGVmPVwibGV0IGl0ZW1cIj57eyBpdGVtLmZpbGVTaXplIHwgY29udmVydEJ5dGVzIH19PC9mZHAtdGFibGUtY2VsbD5cbiAgICAgICAgICAgICAgICA8L2ZkcC1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZmRwLWNvbHVtbiBuYW1lPVwidmVyc2lvblwiIGxhYmVsPVwiVmVyc2lvblwiIHdpZHRoPVwiNXJlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWNlbGwgKmZkcENlbGxEZWY9XCJsZXQgaXRlbVwiPnt7IGl0ZW0udmVyc2lvbiB8fCAnJyB9fTwvZmRwLXRhYmxlLWNlbGw+XG4gICAgICAgICAgICAgICAgPC9mZHAtY29sdW1uPlxuXG4gICAgICAgICAgICAgICAgPGZkcC1jb2x1bW4gbmFtZT1cInN0YXR1c1wiIGxhYmVsPVwiU3RhdHVzXCIgd2lkdGg9XCI1cmVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtY2VsbCAqZmRwQ2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uc3RhdHVzID09PSBfdXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMuTE9BRElOR1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwiU3RhdHVzOiBMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5zdGF0dXMgPT09IF91cGxvYWRDb2xsZWN0aW9uSXRlbVN0YXR1cy5TVUNDRVNTRlVMXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPVwicG9zaXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uaXRlbVN0YXR1c1N1Y2Nlc3NmdWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnN0YXR1cyA9PT0gX3VwbG9hZENvbGxlY3Rpb25JdGVtU3RhdHVzLlVOU1VDQ0VTU0ZVTFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz1cIm5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLml0ZW1TdGF0dXNVbnN1Y2Nlc3NmdWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZHAtdGFibGUtY2VsbD5cbiAgICAgICAgICAgICAgICA8L2ZkcC1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8ZmRwLWNvbHVtbiBuYW1lPVwiYWN0aW9uXCIgKm5nSWY9XCIhcmVhZG9ubHlcIiB3aWR0aD1cIjVyZW1cIiBhbGlnbj1cImVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWhlYWRlciAqZmRwSGVhZGVyQ2VsbERlZj5BY3Rpb248L2ZkcC10YWJsZS1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtY2VsbCAqZmRwQ2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fYWN0aW9ucy0tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24udXBsb2FkTmV3RmlsZUFmdGVyRmFpbEFjdGlvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi51cGxvYWROZXdGaWxlQWZ0ZXJGYWlsQWN0aW9uJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfcnVuVXBsb2FkTmV3RmlsZUFmdGVyRmFpbChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnN0YXR1cyA9PT0gX3VwbG9hZENvbGxlY3Rpb25JdGVtU3RhdHVzLlVOU1VDQ0VTU0ZVTFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLmNhbmNlbFVwbG9hZE5ld0ZpbGVBY3Rpb24nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uY2FuY2VsVXBsb2FkTmV3RmlsZUFjdGlvbicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jYW5jZWxVcGxvYWROZXdGaWxlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGVybWluYXRpb25FbmFibGVkICYmIGl0ZW0uc3RhdHVzID09PSBfdXBsb2FkQ29sbGVjdGlvbkl0ZW1TdGF0dXMuTE9BRElOR1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtbWVudS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cIm92ZXJmbG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uaXRlbU1lbnVCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZHBNZW51VHJpZ2dlckZvcl09XCJtZW51QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cIl9hY3Rpb25CdXR0b24oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkcC1tZW51LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2ZkcC10YWJsZS1jZWxsPlxuICAgICAgICAgICAgICAgIDwvZmRwLWNvbHVtbj5cbiAgICAgICAgICAgIDwvZmRwLXRhYmxlPlxuXG4gICAgICAgICAgICA8IS0tIERyYWdkcm9wIGFyZWEgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX2RyYWdkcm9wLWFyZWFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX3Nob3dEcmFnRHJvcEFyZWFcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiX29uRHJhZ0Ryb3BBcmVhXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvbiBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fZHJhZ2Ryb3AtYXJlYS0taWNvblwiIGdseXBoPVwidXBsb2FkLXRvLWNsb3VkXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19kcmFnZHJvcC1hcmVhLS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZHJhZ0Ryb3BBcmVhVGV4dCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIE5vIGRhdGEgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX25vLWRhdGFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX3Zpc2libGVMaXN0JC52YWx1ZS5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwiX3Nob3dEcmFnRHJvcEFyZWFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiZG9jdW1lbnRcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgPGgzPnt7IG5vRGF0YVRleHQgfHwgKCdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubm9EYXRhVGV4dCcgfCBmZFRyYW5zbGF0ZSkgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IG5vRGF0YURlc2NyaXB0aW9uIHx8ICgncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm5vRGF0YURlc2NyaXB0aW9uJyB8IGZkVHJhbnNsYXRlKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRhYmxlIGZvb3RlciAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fdGFibGUtZm9vdGVyXCIgKm5nSWY9XCJlbmFibGVQYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICA8IS0tIFBhZ2luYXRpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19wYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2lkXT1cImlkICsgJy1wYWdpbmF0aW9uJ1wiIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19wYWdpbmF0aW9uLS10b3RhbFwiPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5wYWdpbmF0aW9uVG90YWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZnJvbTogX2NvdW50U2hvd2VkSXRlbXMsIHRvOiBfY291bnROb3RTaG93ZWRJdGVtcywgdG90YWw6IF90b3RhbEl0ZW1zIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGZkLXBhZ2luYXRpb25cbiAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwiX3RvdGFsSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheVRvdGFsSXRlbXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZVN0YXJ0KT1cIl9wYWdlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCJfaXRlbXNQZXJQYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cIl9jdXJyZW50UGFnZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctcGFnaW5hdGlvbidcIlxuICAgICAgICAgICAgICAgID48L2ZkLXBhZ2luYXRpb24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSZXN1bHRzIHBlciBwYWdlIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fcmVzdWx0c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19yZXN1bHRzLS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaWRdPVwiaWQgKyAnLXJlc3VsdHMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLnJlc3VsdHNQZXJQYWdlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJfaXRlbXNQZXJQYWdlT3B0aW9ucy5sZW5ndGggPT09IDBcIj57eyBfaXRlbXNQZXJQYWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZmRwLW1lbnUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiX2l0ZW1zUGVyUGFnZU9wdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJpZCArICctcmVzdWx0cydcIlxuICAgICAgICAgICAgICAgICAgICBbZmRwTWVudVRyaWdnZXJGb3JdPVwiaXRlbXNQZXJQYWdlTWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfaXRlbXNQZXJQYWdlICsgJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkcC1tZW51LWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZmRwLW1lbnUgI2l0ZW1zUGVyUGFnZU1lbnUgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgPGZkcC1tZW51LWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIF9pdGVtc1BlclBhZ2VPcHRpb25zXCJcbiAgICAgICAgKGl0ZW1TZWxlY3QpPVwiX2l0ZW1zUGVyUGFnZUNoYW5nZSh2YWx1ZS5sYWJlbClcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCInUmVzdWx0cyBwZXIgcGFnZTogJyArIHZhbHVlLmxhYmVsXCJcbiAgICA+XG4gICAgICAgIDxzcGFuPnt7IHZhbHVlLmxhYmVsIH19PC9zcGFuPlxuICAgIDwvZmRwLW1lbnUtaXRlbT5cbjwvZmRwLW1lbnU+XG5cbjxmZHAtbWVudSAjbWVudUFjdGlvbnMgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgPGZkcC1tZW51LWl0ZW0gKGl0ZW1TZWxlY3QpPVwiX21vdmVUb0NsaWNrZWQoKVwiPlxuICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX2ZkLWljb25cIlxuICAgICAgICAgICAgZ2x5cGg9XCJmb2xkZXItYmxhbmtcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubW92ZVRvQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICA+PC9mZC1pY29uPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubW92ZVRvQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZmRwLW1lbnUtaXRlbT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2FjdGl2ZUl0ZW0/LnR5cGUgPT09ICdmaWxlJ1wiPlxuICAgICAgICA8ZmRwLW1lbnUtaXRlbSAoaXRlbVNlbGVjdCk9XCJfZG93bmxvYWRDbGlja2VkKClcIj5cbiAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtdXBsb2FkLWNvbGxlY3Rpb25fX2ZkLWljb25cIlxuICAgICAgICAgICAgICAgIGdseXBoPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLmRvd25sb2FkQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24uZG93bmxvYWRCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2ZkcC1tZW51LWl0ZW0+XG4gICAgICAgIDxmZHAtbWVudS1pdGVtIChpdGVtU2VsZWN0KT1cIl9vcGVuVXBkYXRlRmlsZVZlcnNpb24oKVwiPlxuICAgICAgICAgICAgPGZkLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fZmQtaWNvblwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJkcmlsbC11cFwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24udXBkYXRlVmVyc2lvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID48L2ZkLWljb24+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLnVwZGF0ZVZlcnNpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2ZkcC1tZW51LWl0ZW0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGZkcC1tZW51LWl0ZW0gKGl0ZW1TZWxlY3QpPVwiX3JlbW92ZSgpXCI+XG4gICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9fZmQtaWNvblwiXG4gICAgICAgICAgICBnbHlwaD1cImRlbGV0ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5yZW1vdmVCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID48L2ZkLWljb24+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5yZW1vdmVCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9mZHAtbWVudS1pdGVtPlxuPC9mZHAtbWVudT5cblxuPGlucHV0XG4gICAgI2ZpbGVJbnB1dFxuICAgIGNsYXNzPVwiZmRwLXVwbG9hZC1jb2xsZWN0aW9uX19oaWRkZW5cIlxuICAgIHR5cGU9XCJmaWxlXCJcbiAgICAoZmlsZVNlbGVjdGVkKT1cIl9zZWxlY3RIYW5kbGVyKCRldmVudClcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBmZEZpbGVTZWxlY3Rcbi8+XG5cbjxpbnB1dFxuICAgICN1cGRhdGVWZXJzaW9uSW5wdXRcbiAgICBjbGFzcz1cImZkcC11cGxvYWQtY29sbGVjdGlvbl9faGlkZGVuXCJcbiAgICB0eXBlPVwiZmlsZVwiXG4gICAgKGZpbGVTZWxlY3RlZCk9XCJfc2VsZWN0SGFuZGxlcigkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgZmRGaWxlU2VsZWN0XG4vPlxuXG48bmctdGVtcGxhdGVcbiAgICBsZXQtbWVzc2FnZVR5cGU9XCJtZXNzYWdlVHlwZVwiXG4gICAgbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCJcbiAgICBsZXQtbWVzc2FnZVN0cmlwVHlwZT1cIm1lc3NhZ2VTdHJpcFR5cGVcIlxuICAgIGxldC1jb3VudD1cImNvdW50XCJcbiAgICAjbWVzc2FnZVxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfbWVzc2FnZVwiIFtuZ1N3aXRjaF09XCJtZXNzYWdlVHlwZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiX21lc3NhZ2VUeXBlLkNSRUFURVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlTmV3Rm9sZGVyXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgbWVzc2FnZVN0cmlwVHlwZTogX21lc3NhZ2UubWVzc2FnZVN0cmlwVHlwZSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJfbWVzc2FnZVR5cGUuVVBEQVRFX1ZFUlNJT05cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVzc2FnZVVwZGF0ZVZlcnNpb25cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBtZXNzYWdlU3RyaXBUeXBlOiBfbWVzc2FnZS5tZXNzYWdlU3RyaXBUeXBlLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IF9tZXNzYWdlLnBheWxvYWRcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIl9tZXNzYWdlVHlwZS5GSUxFX1JFTkFNRVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlRmlsZVJlbmFtZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogX21lc3NhZ2UucGF5bG9hZFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiX21lc3NhZ2VUeXBlLlJFTU9WRVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlUmVtb3ZlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgcGF5bG9hZDogX21lc3NhZ2UucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlU3RyaXBUeXBlOiBfbWVzc2FnZS5tZXNzYWdlU3RyaXBUeXBlLFxuICAgICAgICAgICAgICAgIGNvdW50OiBfbWVzc2FnZS5jb3VudFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiX21lc3NhZ2VUeXBlLk1PVkVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVzc2FnZU1vdmVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgY291bnQ6IF9tZXNzYWdlLmNvdW50XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJfbWVzc2FnZVR5cGUuVFlQRV9NSVNNQVRDSFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlVHlwZU1pc21hdGNoXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgcGF5bG9hZDogX21lc3NhZ2UucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlU3RyaXBUeXBlOiBfbWVzc2FnZS5tZXNzYWdlU3RyaXBUeXBlLFxuICAgICAgICAgICAgICAgIGNvdW50OiBfbWVzc2FnZS5jb3VudFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiX21lc3NhZ2VUeXBlLkZJTEVfU0laRVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlRmlsZVNpemVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgY291bnQ6IF9tZXNzYWdlLmNvdW50XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJfbWVzc2FnZVR5cGUuRklMRV9OQU1FX0xFTkdUSFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJtZXNzYWdlRmlsZW5hbWVMZW5ndGhcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBfbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VTdHJpcFR5cGU6IF9tZXNzYWdlLm1lc3NhZ2VTdHJpcFR5cGUsXG4gICAgICAgICAgICAgICAgY291bnQ6IF9tZXNzYWdlLmNvdW50XG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlTmV3Rm9sZGVyIGxldC1wYXlsb2FkPVwicGF5bG9hZFwiIGxldC1tZXNzYWdlU3RyaXBUeXBlPVwibWVzc2FnZVN0cmlwVHlwZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIGZvbGRlcnNDcmVhdGVkXCI+XG4gICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZUNyZWF0ZUZhaWxlZCcgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyTmFtZTogcGF5bG9hZC5mb2xkZXIubmFtZSB9IH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNmb2xkZXJzQ3JlYXRlZD5cbiAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlQ3JlYXRlU3VjY2VzcycgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyTmFtZTogcGF5bG9hZC5mb2xkZXIubmFtZSB9IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZVVwZGF0ZVZlcnNpb24gbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCIgbGV0LW1lc3NhZ2VTdHJpcFR5cGU9XCJtZXNzYWdlU3RyaXBUeXBlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VTdHJpcFR5cGUgPT09ICdlcnJvcic7IGVsc2UgdmVyc2lvblVwZGF0ZWRcIj5cbiAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlVXBkYXRlVmVyc2lvbkZhaWxlZCcgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyTmFtZTogcGF5bG9hZC5pdGVtLm5hbWUgfSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjdmVyc2lvblVwZGF0ZWQ+XG4gICAgICAgIHt7ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZVVwZGF0ZVZlcnNpb25TdWNjZXNzJyB8IGZkVHJhbnNsYXRlIDogeyBmb2xkZXJOYW1lOiBwYXlsb2FkLml0ZW0ubmFtZSB9IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZUZpbGVSZW5hbWUgbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCIgbGV0LW1lc3NhZ2VTdHJpcFR5cGU9XCJtZXNzYWdlU3RyaXBUeXBlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VTdHJpcFR5cGUgPT09ICdlcnJvcic7IGVsc2UgZmlsZVJlbmFtZWRcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZUZpbGVSZW5hbWVGYWlsZWQnXG4gICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZnJvbTogcGF5bG9hZC5pdGVtLm5hbWUsIHRvOiBwYXlsb2FkLmZpbGVOYW1lIH1cbiAgICAgICAgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2ZpbGVSZW5hbWVkPlxuICAgICAgICB7e1xuICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlRmlsZVJlbmFtZVN1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZnJvbTogcGF5bG9hZC5pdGVtLm5hbWUsIHRvOiBwYXlsb2FkLmZpbGVOYW1lIH1cbiAgICAgICAgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlUmVtb3ZlIGxldC1wYXlsb2FkPVwicGF5bG9hZFwiIGxldC1tZXNzYWdlU3RyaXBUeXBlPVwibWVzc2FnZVN0cmlwVHlwZVwiIGxldC1jb3VudD1cImNvdW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID4gMSAmJiBjb3VudC5mb2xkZXIgJiYgY291bnQuZmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVN0cmlwVHlwZSA9PT0gJ2Vycm9yJzsgZWxzZSBmb2xkZXJzQW5kRmlsZXNSZW1vdmVkXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZVJlbW92ZUZvbGRlcnNBbmRGaWxlc0ZhaWxlZCdcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyc0NvdW50OiBjb3VudC5mb2xkZXIsIGZpbGVzQ291bnQ6IGNvdW50LmZpbGUgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9sZGVyc0FuZEZpbGVzUmVtb3ZlZD5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlUmVtb3ZlRm9sZGVyc0FuZEZpbGVzU3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyc0NvdW50OiBjb3VudC5mb2xkZXIsIGZpbGVzQ291bnQ6IGNvdW50LmZpbGUgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXlsb2FkLml0ZW1zLmxlbmd0aCA+IDEgJiYgY291bnQuZm9sZGVyICYmICFjb3VudC5maWxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIGZvbGRlcnNSZW1vdmVkXCI+XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VSZW1vdmVGb2xkZXJzRmFpbGVkJyB8IGZkVHJhbnNsYXRlIDogeyBmb2xkZXJzQ291bnQ6IGNvdW50LmZvbGRlciB9IH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZvbGRlcnNSZW1vdmVkPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlUmVtb3ZlRm9sZGVyc1N1Y2Nlc3MnIHwgZmRUcmFuc2xhdGUgOiB7IGZvbGRlcnNDb3VudDogY291bnQuZm9sZGVyIH0gfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXlsb2FkLml0ZW1zLmxlbmd0aCA+IDEgJiYgY291bnQuZmlsZSAmJiAhY291bnQuZm9sZGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIGZpbGVzUmVtb3ZlZFwiPlxuICAgICAgICAgICAge3sgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlUmVtb3ZlRmlsZXNGYWlsZWQnIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVzQ291bnQ6IGNvdW50LmZpbGUgfSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlc1JlbW92ZWQ+XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VSZW1vdmVGaWxlc1N1Y2Nlc3MnIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVzQ291bnQ6IGNvdW50LmZpbGUgfSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIG9uZUl0ZW1SZW1vdmVkXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZVJlbW92ZUZpbGVPckZvbGRlckZhaWxlZCdcbiAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgbmFtZTogcGF5bG9hZC5pdGVtc1swXS5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI29uZUl0ZW1SZW1vdmVkPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VSZW1vdmVGaWxlT3JGb2xkZXJTdWNjZXNzJ1xuICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyBuYW1lOiBwYXlsb2FkLml0ZW1zWzBdLm5hbWUgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZU1vdmUgbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCIgbGV0LW1lc3NhZ2VTdHJpcFR5cGU9XCJtZXNzYWdlU3RyaXBUeXBlXCIgbGV0LWNvdW50PVwiY291bnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPiAxICYmIGNvdW50LmZvbGRlciAmJiBjb3VudC5maWxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlU3RyaXBUeXBlID09PSAnZXJyb3InOyBlbHNlIGZpbGVzQW5kRm9sZGVyc01vdmVkVG9cIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKHBheWxvYWQudG9cbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlRm9sZGVyc0FuZEZpbGVzRmFpbGVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVSb290Rm9sZGVyc0FuZEZpbGVzRmFpbGVkJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyc0NvdW50OiBjb3VudC5mb2xkZXIsIGZpbGVzQ291bnQ6IGNvdW50LmZpbGUsIHRvOiBwYXlsb2FkLnRvPy5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbGVzQW5kRm9sZGVyc01vdmVkVG8+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIChwYXlsb2FkLnRvXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZUZvbGRlcnNBbmRGaWxlc1N1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZVJvb3RGb2xkZXJzQW5kRmlsZXNTdWNjZXNzJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgZm9sZGVyc0NvdW50OiBjb3VudC5mb2xkZXIsIGZpbGVzQ291bnQ6IGNvdW50LmZpbGUsIHRvOiBwYXlsb2FkLnRvPy5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPiAxICYmIGNvdW50LmZvbGRlciAmJiAhY291bnQuZmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVN0cmlwVHlwZSA9PT0gJ2Vycm9yJzsgZWxzZSBmb2xkZXJzTW92ZWRUb1wiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAocGF5bG9hZC50b1xuICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVGb2xkZXJzRmFpbGVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVSb290Rm9sZGVyc0ZhaWxlZCdcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGUgOiB7IGZvbGRlcnNDb3VudDogY291bnQuZm9sZGVyLCB0bzogcGF5bG9hZC50bz8ubmFtZSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmb2xkZXJzTW92ZWRUbz5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKHBheWxvYWQudG9cbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlRm9sZGVyc1N1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZVJvb3RGb2xkZXJzU3VjY2VzcydcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGUgOiB7IGZvbGRlcnNDb3VudDogY291bnQuZm9sZGVyLCB0bzogcGF5bG9hZC50bz8ubmFtZSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID4gMSAmJiBjb3VudC5maWxlICYmICFjb3VudC5mb2xkZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VTdHJpcFR5cGUgPT09ICdlcnJvcic7IGVsc2UgZmlsZXNNb3ZlZFRvXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIChwYXlsb2FkLnRvXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZUZpbGVzRmFpbGVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVSb290RmlsZXNGYWlsZWQnXG4gICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlIDogeyBmaWxlc0NvdW50OiBjb3VudC5maWxlLCB0bzogcGF5bG9hZC50bz8ubmFtZSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlc01vdmVkVG8+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIChwYXlsb2FkLnRvXG4gICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlTW92ZUZpbGVzU3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlUm9vdEZpbGVzU3VjY2VzcydcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVzQ291bnQ6IGNvdW50LmZpbGUsIHRvOiBwYXlsb2FkLnRvPy5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPT09IDFcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VTdHJpcFR5cGUgPT09ICdlcnJvcic7IGVsc2Ugb25lSXRlbU1vdmVkVG9cIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKHBheWxvYWQudG9cbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlRmlsZU9yRm9sZGVyRmFpbGVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZU1vdmVSb290RmlsZU9yRm9sZGVyRmFpbGVkJ1xuICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgbmFtZTogcGF5bG9hZC5pdGVtc1swXS5uYW1lLCB0bzogcGF5bG9hZC50bz8ubmFtZSB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNvbmVJdGVtTW92ZWRUbz5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKHBheWxvYWQudG9cbiAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlRmlsZU9yRm9sZGVyU3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VNb3ZlUm9vdEZpbGVPckZvbGRlclN1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlIDogeyBuYW1lOiBwYXlsb2FkLml0ZW1zWzBdLm5hbWUsIHRvOiBwYXlsb2FkLnRvPy5uYW1lIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21lc3NhZ2VUeXBlTWlzbWF0Y2ggbGV0LXBheWxvYWQ9XCJwYXlsb2FkXCIgbGV0LW1lc3NhZ2VTdHJpcFR5cGU9XCJtZXNzYWdlU3RyaXBUeXBlXCIgbGV0LWNvdW50PVwiY291bnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPiAxXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgICAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VGaWxlVHlwZU1pc21hdGNoUGx1cmFsJ1xuICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVzQ291bnQ6IHBheWxvYWQuaXRlbXMubGVuZ3RoLCBhbGxvd2VkVHlwZXM6IF9nZXRBbGxvd2VkVHlwZXMoKSB9XG4gICAgICAgIH19XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGF5bG9hZC5pdGVtcy5sZW5ndGggPT09IDFcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZUZpbGVUeXBlTWlzbWF0Y2hTaW5ndWxhcidcbiAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyBmaWxlTmFtZTogcGF5bG9hZC5pdGVtc1swXS5uYW1lLCBhbGxvd2VkVHlwZXM6IF9nZXRBbGxvd2VkVHlwZXMoKSB9XG4gICAgICAgIH19XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21lc3NhZ2VGaWxlU2l6ZSBsZXQtcGF5bG9hZD1cInBheWxvYWRcIiBsZXQtbWVzc2FnZVN0cmlwVHlwZT1cIm1lc3NhZ2VTdHJpcFR5cGVcIiBsZXQtY291bnQ9XCJjb3VudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXlsb2FkLml0ZW1zLmxlbmd0aCA+IDFcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAgICdwbGF0Zm9ybVVwbG9hZENvbGxlY3Rpb24ubWVzc2FnZUZpbGVTaXplRXhjZWVkZWRQbHVyYWwnXG4gICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZmlsZXNDb3VudDogcGF5bG9hZC5pdGVtcy5sZW5ndGgsIG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSB8fCAwIH1cbiAgICAgICAgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXlsb2FkLml0ZW1zLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICB7e1xuICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlRmlsZVNpemVFeGNlZWRlZFNpbmd1bGFyJ1xuICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IGZpbGVOYW1lOiBwYXlsb2FkLml0ZW1zWzBdLm5hbWUsIG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSB8fCAwIH1cbiAgICAgICAgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZUZpbGVuYW1lTGVuZ3RoIGxldC1wYXlsb2FkPVwicGF5bG9hZFwiIGxldC1tZXNzYWdlU3RyaXBUeXBlPVwibWVzc2FnZVN0cmlwVHlwZVwiIGxldC1jb3VudD1cImNvdW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID4gMVwiPlxuICAgICAgICB7e1xuICAgICAgICAgICAgJ3BsYXRmb3JtVXBsb2FkQ29sbGVjdGlvbi5tZXNzYWdlRmlsZU5hbWVMZW5ndGhFeGNlZWRlZFBsdXJhbCdcbiAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyBmaWxlc0NvdW50OiBwYXlsb2FkLml0ZW1zLmxlbmd0aCwgbWF4RmlsZW5hbWVMZW5ndGg6IG1heEZpbGVuYW1lTGVuZ3RoIHx8IDAgfVxuICAgICAgICB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBheWxvYWQuaXRlbXMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgICAncGxhdGZvcm1VcGxvYWRDb2xsZWN0aW9uLm1lc3NhZ2VGaWxlTmFtZUxlbmd0aEV4Y2VlZGVkU2luZ3VsYXInXG4gICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgZmlsZU5hbWU6IHBheWxvYWQuaXRlbXNbMF0ubmFtZSwgbWF4RmlsZW5hbWVMZW5ndGg6IG1heEZpbGVuYW1lTGVuZ3RoIHx8IDAgfVxuICAgICAgICB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|