ctt-puro 0.44.24 → 0.44.26
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.
|
@@ -772,7 +772,7 @@ export class MapperService {
|
|
|
772
772
|
}
|
|
773
773
|
combinedImages.push(props.multimedia.imagessmall[1]);
|
|
774
774
|
return {
|
|
775
|
-
title: props?.texts?.title,
|
|
775
|
+
title: props?.texts?.pretitle ?? props?.texts?.title,
|
|
776
776
|
items: combinedImages?.map((img) => ({
|
|
777
777
|
img: this.getImageResponsive(img),
|
|
778
778
|
title: img?.title,
|
|
@@ -2190,14 +2190,13 @@ export class MapperService {
|
|
|
2190
2190
|
img: this.getImageResponsive(props?.post?.multimedia?.imagenes?.[0]),
|
|
2191
2191
|
};
|
|
2192
2192
|
}
|
|
2193
|
-
//TODO: Check back props
|
|
2194
2193
|
mapBannerSlider(props) {
|
|
2195
2194
|
return {
|
|
2196
|
-
items: props?.
|
|
2197
|
-
title:
|
|
2198
|
-
description:
|
|
2199
|
-
img: this.getImageResponsive(
|
|
2200
|
-
button: Utils.mapButtons(this.siteId(),
|
|
2195
|
+
items: props?.multimedia?.imagenes?.map((img) => ({
|
|
2196
|
+
title: img.title,
|
|
2197
|
+
description: img.description,
|
|
2198
|
+
img: this.getImageResponsive(img),
|
|
2199
|
+
button: Utils.mapButtons(this.siteId(), img.buttons)[0],
|
|
2201
2200
|
})),
|
|
2202
2201
|
};
|
|
2203
2202
|
}
|
|
@@ -2539,4 +2538,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
2539
2538
|
providedIn: 'root',
|
|
2540
2539
|
}]
|
|
2541
2540
|
}] });
|
|
2542
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBOEc1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBTW5FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0FrckdMO0lBMXJHRyxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBUUQsa0JBQWtCLENBQ2QsS0FBZ0M7UUFFaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3BDLGFBQWEs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QyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssVUFBVTs0QkFDWCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsTUFBTSxFQUFFLFdBQVcsQ0FDakIsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssVUFBVTs0QkFDWCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssVUFBVTs0QkFDWCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENB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QUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELE9BQU87U0FDUSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBc0I7UUFDNUIsT0FBTztZQUNILFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7U0FDcEIsQ0FBQztJQUNyQixDQUFDOytHQTVyR1EsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0LCBJbmplY3RhYmxlLCBTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgICBQdXJvNDA0SSxcbiAgICBQdXJvQWR2YW50YWdlc0ksXG4gICAgUHVyb0FkdmFudGFnZXNJdGVtLFxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJLFxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtLFxuICAgIFB1cm9CYW5uZXI0Q29sSSxcbiAgICBQdXJvQmFubmVySW5mbzJJLFxuICAgIFB1cm9CYW5uZXJJbmZvSSxcbiAgICBQdXJvQmFubmVyU2xpZGVySSxcbiAgICBQdXJvQnJlYWRjcnVtYkksXG4gICAgUHVyb0NhcmVlcnNGb3JtSSxcbiAgICBQdXJvQ2FydGFJLFxuICAgIFB1cm9Db250YWN0Rm9ybUksXG4gICAgUHVyb0R1YWxMaXN0SSxcbiAgICBQdXJvRW5naW5lSSxcbiAgICBQdXJvRW5naW5lTW9kYWxJLFxuICAgIFB1cm9FdmVudHNGb3JtSSxcbiAgICBQdXJvRm9vdGVyQmVhY2hzSSxcbiAgICBQdXJvRm9vdGVyQmVhY2hzSXRlbSxcbiAgICBQdXJvRm9vdGVySG90ZWxzSSxcbiAgICBQdXJvRm9vdGVySG90ZWxzSXRlbSxcbiAgICBQdXJvRm9vdGVySW5mb0ksXG4gICAgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8sXG4gICAgUHVyb0Zvb3RlckxpbmtzSSxcbiAgICBQdXJvR2FsbGVyeUZpbHRlcixcbiAgICBQdXJvR2FsbGVyeUksXG4gICAgUHVyb0dhbGxlcnlJdGVtLFxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckksXG4gICAgUHVyb0dyaWQzQ29sRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJLFxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW0sXG4gICAgUHVyb0dyaWQ0aXRlbXNJLFxuICAgIFB1cm9HcmlkNGl0ZW1zSXRlbSxcbiAgICBQdXJvR3JpZDVpdGVtc0ksXG4gICAgUHVyb0dyaWQ1aXRlbXNJdGVtLFxuICAgIFB1cm9HcmlkNml0ZW1zSSxcbiAgICBQdXJvSGVhZGVySSxcbiAgICBQdXJvSGVhZEludHJvSSxcbiAgICBQdXJvSW1nSW5mb0ksXG4gICAgUHVyb0luZm9CYW5uZXJJLFxuICAgIFB1cm9JbmZvQmFubmVySXRlbSxcbiAgICBQdXJvSW5mb0JpZ0ksXG4gICAgUHVyb0luZm9EZXRhaWxzSSxcbiAgICBQdXJvSW5mb0dhbGxlcnlJLFxuICAgIFB1cm9JbmZvSW50cm9JLFxuICAgIFB1cm9JbmZvTGlzdEksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0ksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0l0ZW0sXG4gICAgUHVyb0luZm9TbGlkZXJJLFxuICAgIFB1cm9JbmZvU2xpZGVySXRlbSxcbiAgICBQdXJvSW5mb1RhYmxlSSxcbiAgICBQdXJvVGFibGVJdGVtLFxuICAgIFB1cm9JbmZvVmlkZW9JLFxuICAgIFB1cm9MYW5ndWFnZXNNb2RhbEksXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSXRlbSxcbiAgICBQdXJvTGlzdEF3YXJkc0ksXG4gICAgUHVyb0xpc3RBd2FyZHNJdGVtSSxcbiAgICBQdXJvTGlzdEdlbmVyYWxJLFxuICAgIFB1cm9MaXN0R2VuZXJhbEl0ZW0sXG4gICAgUHVyb01hcExpc3RJLFxuICAgIFB1cm9NYXBMaXN0SXRlbSxcbiAgICBQdXJvTWVudUksXG4gICAgUHVyb01vZGFsSW5mb0ksXG4gICAgUHVyb01vZGFsT3B0aW9uc0ksXG4gICAgUHVyb011c2ljU2xpZGVySSxcbiAgICBQdXJvTmV3c2xldHRlckksXG4gICAgUHVyb09mZmVyLFxuICAgIFB1cm9PZmZlckJhbm5lckksXG4gICAgUHVyb1Bob3RvU2xpZGVySSxcbiAgICBQdXJvUHJvamVjdHNGb3JtSSxcbiAgICBQdXJvRmFxc0ksXG4gICAgUHVyb0ZhcXNJbWdJLFxuICAgIFB1cm9TY2hlZHVsZUksXG4gICAgUHVyb1NjaGVkdWxlSXRlbSxcbiAgICBQdXJvU2xpZGVyMWNvbEksXG4gICAgUHVyb1NsaWRlcjFjb2xJdGVtLFxuICAgIFB1cm9TbGlkZXIyY29sSSxcbiAgICBQdXJvU2xpZGVyM0NhcmRJLFxuICAgIFB1cm9TbGlkZXIzQ2FyZEl0ZW1JLFxuICAgIFB1cm9TbGlkZXIzY29sSSxcbiAgICBQdXJvU2xpZGVyM0NvbEl0ZW0sXG4gICAgUHVyb1NsaWRlcjNDb2xSb3VuZEksXG4gICAgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW0sXG4gICAgUHVyb1NsaWRlcjRJdGVtc0ksXG4gICAgUHVyb1RoYW5rc0ksXG4gICAgUHVyb1RpbWVsaW5lSSxcbiAgICBQdXJvVG9wU2xpZGVySSxcbiAgICBQdXJvV2VibWFwSSxcbiAgICBQdXJvWmlnWmFnMmNvbEksXG4gICAgUHVyb0luZm9EZXRhaWxzM0NvbEksXG4gICAgUHVyb0luZm9EZXRhaWxJdGVtSSxcbiAgICBQdXJvSW5mb0RldGFpbHMyQ29sSSxcbiAgICBQdXJvQmxvZ0xpc3RJLFxuICAgIFB1cm9CbG9nRGV0YWlsc0ksXG4gICAgUHVyb0lubmVyQ29udGVudEksXG4gICAgUHVyb1NsaWRlcjJjb2xJdGVtLFxuICAgIFB1cm9TdWJtZW51TW9iaWxlSXRlbUksXG4gICAgUHVyb0dyaWQ2aXRlbXNJdGVtLFxuICAgIFB1cm9MaXN0UmVzdGF1cmFudHNJLFxuICAgIFB1cm9MaXN0UmVzdGF1cmFudEl0ZW1JLFxuICAgIFB1cm9JZnJhbWVJLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFB1cm9JbmZvMkNvbEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3B1cm8taW5mbzJjb2wvcHVyby1pbmZvMmNvbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQm9keUNvbXBvbmVudCwgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IFNjcmVlblNpemVyU2VydmljZSB9IGZyb20gJy4uL3NjcmVlbi1zaXplcic7XG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi9tYXBwZXIuc2VydmljZS50b2tlbic7XG5pbXBvcnQgeyBQdXJvVmlld3NUeXBlIH0gZnJvbSAnLi4vLi4vRW51bS92aWV3cy5lbnVtJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcbiAgICBnZXQgaXNNYXhTbWFsbERlc2t0b3BJbnN0YW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5tYXhTbWFsbERlc2t0b3BJbnN0YW50KCk7XG4gICAgfVxuXG4gICAgaGVhZGVyQnV0dG9ucyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgc2l0ZUlkOiBTaWduYWw8bnVtYmVyPiA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiB0aGlzLnNpdGVTdmMud2ViQ29uZmlnSW5zdGFudD8uc2l0ZUlEXG4gICAgKTtcblxuICAgIGdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2U6IEltYWdlUmVzcG9uc2UgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFpbWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNb2JpbGVJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzc2OF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc0Z1bGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy53ZWJwO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbERlc2t0b3AoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy5wYXRoPy53ZWJwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNyYzogYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWAsXG4gICAgICAgICAgICBhbHQ6IGltYWdlPy5hbHQsXG4gICAgICAgIH0gYXMgUHVyb0ltYWdlSTtcbiAgICB9XG5cbiAgICBnZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW1hZ2VJW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaW1hZ2VzPy5zb21lKChpbWcpID0+IGltZyAhPT0gdW5kZWZpbmVkICYmIGltZyAhPT0gbnVsbClcbiAgICAgICAgICAgID8gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSEpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRWaWV3KHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWQpOiAnbGVmdCcgfCAncmlnaHQnIHtcbiAgICAgICAgcmV0dXJuIHZpZXcgPT09ICdyaWdodCcgPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgIH1cblxuICAgIHNhbml0aXplKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuYW1lXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKSAvLyBxdWl0YXIgdGlsZGVzXG4gICAgICAgICAgICAucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnICcpIC8vIHF1aXRhciBzw61tYm9sb3MgcmFyb3NcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgICAgICAubWFwKChwYXJ0LCBpKSA9PlxuICAgICAgICAgICAgICAgIGkgPT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBwYXJ0LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcGFydC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbignJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUFnZXNPcHRpb25zKG1heExlbmd0aDogbnVtYmVyLCBtaW5MZW5ndGggPSAwKTogYW55W10ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnlbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gbWluTGVuZ3RoOyBpIDw9IG1heExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goeyBjb2RlOiBpLCBuYW1lOiBpIDwgMTAgPyBgMCR7aX1gIDogYCR7aX1gIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIG1hcENvbXBvbmVudHM8VD4oXG4gICAgICAgIGJvZHk6IGFueVtdLFxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXG4gICAgKTogQm9keUNvbXBvbmVudDxUPltdIHtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keS5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Py5vcmRlcixcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcbiAgICAgICAgICAgICAgICB2aWV3OiBjb21wb25lbnQ/LnZpZXcsXG4gICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8VD47XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Py5uYW1lICYmIGNvbXBvbmVudD8ucHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQzY29sRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHBsdXNmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjFjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMWNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckJlYWNocyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJob3RlbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVySG90ZWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckJ1dHRvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXNzbWFsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9MaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29scm91bmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWdpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW1naW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW1nSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm90YWJsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVGFibGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ1aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ2aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3NsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Ryb29tcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RyZXN0YXVyYW50cyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0UmVzdGF1cmFudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQwNCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2VydmljZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2Jhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTY2hlZHVsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwWmlnemFnMmNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDNjb2xzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zbGlkZXJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9zbGlkZXJsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwaG90b3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFBob3RvU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob3Rvc2xpZGVybGVmdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXI0Y29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lcjRDb2woXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9nYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9HYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMkNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWFwbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbGhvdGVscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0YWRvYmVhY2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTWFwTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2VzbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGFuZ3VhZ2VzTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN1Ym1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Rhd2FyZHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzdEF3YXJkcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NhcmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NhcmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25ld3NsZXR0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTmV3c2xldHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvMic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJJbmZvMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2RldGFpbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0RldGFpbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9kZXRhaWxzMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZGV0YWlsczNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0RldGFpbHNDb2xzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtdXNpY3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNdXNpY1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FydGEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ2FydGEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjRpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXI0SXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2R1YWxsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcER1YWxMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcm9qZWN0c2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUHJvamVjdHNGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9nbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nUG9zdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxvcHRpb25zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5uZXJjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElubmVyQ29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGltZWxpbmUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGltZWxpbmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIZWFkSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhcmVlcnNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENhcmVlcnNGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdldmVudHNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV2ZW50c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGFsaW5mb2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElmcmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxc2ltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXFzSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihjb21wb25lbnRNYXBwZWQubmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkM2NvbFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBob3RlbD8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChob3RlbC50ZXh0cz8ubmFtZSB8fCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChob3RlbC50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIDxicj4gJyArIGhvdGVsLnRleHRzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbC5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9HcmlkM2NvbFNsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dhbGxlcnlJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgZmlsdGVycyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChmOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGYubXVsdGltZWRpYSkgJiYgZi5tdWx0aW1lZGlhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbTogaXRlbS5yb29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HYWxsZXJ5RmlsdGVyXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlclRpdGxlOiB0ZXh0cz8ucm9vbXNGaWx0ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtczogZmlsdGVyc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShmLm11bHRpbWVkaWEpICYmIGYubXVsdGltZWRpYS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjYzogeyBtdWx0aW1lZGlhOiBhbnlbXTsgZmlsdGVySW5kZXg6IG51bWJlciB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4OiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aW1lZGlhV2l0aEZpbHRlciA9IGZpbHRlci5tdWx0aW1lZGlhLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiBtdWx0aW1lZGlhV2l0aEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeyBtdWx0aW1lZGlhIH06IGFueSkgPT4gbXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBNYXBMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTWFwTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9NYXBMaXN0SXRlbVtdID0gW107XG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ01hcExpc3RQaG90bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdNYXBMaXN0UGhvdG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ01hcExpc3RNYXAnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTWFwTGlzdE1hcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHRleHRzPy5uZHRpdGxlLFxuICAgICAgICAgICAgbmREZXNjcmlwdGlvbjogdGV4dHM/Lm5kZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/Lm1hcD8uWzBdKSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb01hcExpc3RJO1xuICAgIH1cblxuICAgIG1hcE9mZmVyQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvT2ZmZXJCYW5uZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgICAgIC8vVE9ETzpiYWNrXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogJycsXG4gICAgICAgICAgICAgICAgZnJvbTogdGV4dHM/LmZyb20sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmljZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9IGFzIFB1cm9PZmZlckJhbm5lckk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcExhbmd1YWdlc01vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbGFuZ3VhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBsYW5ndWFnZXMgYXMgUHVyb0xhbmd1YWdlc01vZGFsSXRlbVtdLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGxhbmd1YWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcEhlYWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbWVudTogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0hlYWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG5hdiwgbXVsdGltZWRpYSwgbGlua3MgfSA9IG1lbnUgfHwge307XG4gICAgICAgIGNvbnN0IHsgYm90dG9tTGlua3MgfSA9IGxpbmtzID8/IHt9O1xuXG4gICAgICAgIGNvbnN0IGZhbGxiYWNrVGV4dHMgPSB7XG4gICAgICAgICAgICBtZW51OiAnTWVuw7onLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICdJZGlvbWEnLFxuICAgICAgICAgICAgYm9va25vdzogJ1Jlc2VydmFyJyxcbiAgICAgICAgICAgIGNoZWNraW46ICdDaGVja0luJyxcbiAgICAgICAgICAgIGNoZWNraW5PbmxpbmU6ICdDaGVja0luT25saW5lJyxcbiAgICAgICAgfSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICAgICBjb25zdCB0ZXh0cyA9IHByb3BzPy5oZWFkZXJCdXR0b25zPy50ZXh0cyA/PyBmYWxsYmFja1RleHRzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZU1lbnU6IHRleHRzPy5tZW51ID8/IGZhbGxiYWNrVGV4dHNbJ21lbnUnXSxcbiAgICAgICAgICAgIHRpdGxlTGFuZzogdGV4dHM/Lmxhbmd1YWdlID8/IGZhbGxiYWNrVGV4dHNbJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBidG5Cb29rOiB0ZXh0cz8uYm9va25vdyA/PyBmYWxsYmFja1RleHRzWydib29rbm93J10sXG4gICAgICAgICAgICBuYXZMaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIG5hdlxuICAgICAgICAgICAgICAgICAgICA/Lm1hcCgobGluazogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGE/Lm9yZGVyIC0gYj8ub3JkZXIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBib3R0b21MaW5rcz8uWzBdPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGFiZWwpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnRuQ2hlY2tpbjogdGV4dHM/LmNoZWNraW4gPz8gZmFsbGJhY2tUZXh0c1snY2hlY2tpbiddLFxuICAgICAgICAgICAgYnRuQ2hlY2tpbk9ubGluZTpcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY2hlY2tpbm9ubGluZSA/PyBmYWxsYmFja1RleHRzWydjaGVja2luT25saW5lJ10sXG4gICAgICAgICAgICBob3RlbEJyYW5kOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0JpZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG5kRGVzY3JpcHRpb246IHRleHRzPy5uZERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMWNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjFjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2xpZGVyMWNvbEl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwWmlnemFnMmNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1ppZ1phZzJjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgbmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LlsxXSksXG4gICAgICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IChBcnJheS5pc0FycmF5KG11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgOiBtdWx0aW1lZGlhPy5pbWFnZW5lc1xuICAgICAgICAgICAgKT8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ0aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNGl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU6ICdpbmZvdmlkZW9yaWdodCcgfCAnaW5mb3ZpZGVvbGVmdCdcbiAgICApOiBQdXJvSW5mb1ZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcmV2ZXJzZTogbmFtZS5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgICAgIHZpZGVvOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBwcm9wcy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLnZpZGVvPy50eXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9WaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CcmVhZGNydW1iSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKHByb3BzPy5pdGVtcyBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICA/LnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0J1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CcmVhZGNydW1iSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXSA/PyBwcm9wcz8uYWRkcmVzcztcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWRkcmVzc0luZm86IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQWRkcmVzcyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzPy5hZGRyZXNzID8/ICcnfSwgJHthZGRyZXNzPy5jaXR5ID8/ICcnfSwgJHthZGRyZXNzPy5jcCA/PyAnJ30gJHthZGRyZXNzPy5wcm92aW5jZSA/PyAnJ31gLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgY29udGFjdEluZm86IHtcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICBuZXdzbGV0dGVySW5mbzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVOZXdzbGV0dGVyLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVsxXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxuICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IFV0aWxzLm1hcFNvY2lhbGNvbnMoaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM2NvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBldmVudCwgZXhwZXJpZW5jZSwgbXVsdGltZWRpYSwgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIzQ29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAvLyBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAvLyBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIC8vIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNjb2xJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjJjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIyY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgcm9vbXMsIG11bHRpbWVkaWEsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyMmNvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ1NsaWRlcjJDb2wnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ1NsaWRlcjJDb2wnXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LmRlc2NyaXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2UgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjJjb2xJO1xuICAgIH1cblxuICAgIG1hcEdyaWQ1aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNWl0ZW1zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkSW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gPSBbXTtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBsZXQgaiA9IDA7XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgaSA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBqIDwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5baV0pIHtcbiAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNbaV0pO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGw/LltqXSkge1xuICAgICAgICAgICAgICAgIGlmIChqID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNzbWFsbFtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGorKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2Vzc21hbGxbMV0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBjb21iaW5lZEltYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ1aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDVpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwR3JpZDZpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ2aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcy5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgfSkpIGFzIFB1cm9HcmlkNml0ZW1zSXRlbVtdLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDZpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlc1NtYWxsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0FkdmFudGFnZXNTbWFsbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IChwcm9wcy5zZXJ2aWNlc0FkdmFudGFnZXMgfHwgcHJvcHM/LkFkdmFudGFnZXMpPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lIHx8IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpdGVtPy5jbGFzcyB8fCBpdGVtPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0IHx8IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQWR2YW50YWdlc1NtYWxsSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkM2NvbEZpbHRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQzQ29sRmlsdGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghcHJvcHMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgcmF3RGVzdGluYXRpb25zOiBhbnlbXSA9IChwcm9wcy5kZXN0aW5hdGlvbnMgPz8gW10pXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnM6IGFueVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBNYXAocmF3RGVzdGluYXRpb25zLm1hcCgoZDogYW55KSA9PiBbTnVtYmVyKGQuaWQpLCBkXSkpLnZhbHVlcygpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgcmF3SXRlbXMgPSBkZXN0aW5hdGlvbnMuZmxhdE1hcCgoZGVzdDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGRlc3Q/LmNoaWxkcmVuID8/IFtdO1xuXG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4ubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHIgPSBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0gPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0cj8ubmFtZSA/PyBjaGlsZD8ubmFtZSA/PyBjaGlsZD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXRpdGxlID0gZGVzdD8ubmFtZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IChVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZD8uaG90ZWxzPy5bMF0/LmxpbmtzPy5bMF1cbiAgICAgICAgICAgICAgICApID8/IFtdKVswXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGltZ0NvdmVyID0gY2hpbGQ/LmhvdGVscz8uWzBdPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZy5jb3ZlclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nQ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IE51bWJlcihjaGlsZD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IE51bWJlcihkZXN0Py5pZCA/PyBjaGlsZD8ucGFyZW50X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRJbWFnZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUHVyb0dyaWQzQ29sRmlsdGVySXRlbVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBNYXAocmF3SXRlbXMubWFwKChpKSA9PiBbaS5maWx0ZXIsIGldKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gZGVzdGluYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChkZXN0OiBhbnkpID0+IHZhbGlkUGFyZW50SWRzLmhhcyhOdW1iZXIoZGVzdD8uaWQpKSlcbiAgICAgICAgICAgIC5tYXAoKGRlc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBOdW1iZXIoZGVzdD8uaWQpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRlc3Q/Lm5hbWUgfHwgZGVzdD8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID8/IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucykgPz8gW10sXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sUGx1c0ZpbHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCB7IHRleHRzLCBldmVudCwgZXhwZXJpZW5jZSwgaG90ZWxzIH0gPSBwcm9wcztcblxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgICAgICAgbGV0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgY29uc3QgZXhwID0gISEoZXhwZXJpZW5jZSB8fCBob3RlbHMpO1xuXG4gICAgICAgIGlmIChldmVudCB8fCBleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBjb25zdCByYXdEZXN0aW5hdGlvbnM6IGFueVtdID0gKGV2ZW50ID8/IGV4cGVyaWVuY2UgPz8gW10pXG4gICAgICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uczogYW55W10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgIG5ldyBNYXAoXG4gICAgICAgICAgICAgICAgICAgIHJhd0Rlc3RpbmF0aW9ucy5tYXAoKGQ6IGFueSkgPT4gW051bWJlcihkLmlkKSwgZF0pXG4gICAgICAgICAgICAgICAgKS52YWx1ZXMoKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgcmF3SXRlbXMgPSBkZXN0aW5hdGlvbnMubWFwKChkZXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IGRlc3Q/LnRleHRzID8/IGRlc3Q/LnRyYW5zbGF0aW9ucyA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICAgIHRyPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICBkZXN0Py5uYW1lID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/Lm5hbWVfaWRlbnRpZmllciA/P1xuICAgICAgICAgICAgICAgICAgICBkZXN0Py50cmFuc2xhdGlvbnM/LnRpdGxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5kVGl0bGUgPSB0cj8ubG9jYXRpb24gPz8gZGVzdD8udHJhbnNsYXRpb25zPy5sb2NhdGlvbjtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gZGVzdD8uZGF0ZXRpbWU/LnNwbGl0KCcgJyk/LlswXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbnMgPSBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGRlc3Q/LmJ1dHRvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBkZXN0Py5saW5rcyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEltZyA9XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/Lm11bHRpbWVkaWE/LmZpbmQoKG06IGFueSkgPT4gbT8uY292ZXIpID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGZpcnN0SW1nKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBuZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IE51bWJlcihkZXN0Py5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogdHI/LmxvY2F0aW9uLCAvLyB1c2Ftb3MgbG9jYXRpb24gY29tbyBhZ3J1cGFkb3IvZmlsdHJvXG4gICAgICAgICAgICAgICAgICAgIGltZyxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucyxcbiAgICAgICAgICAgICAgICAgICAgbGlua3MsXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpdGVtcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgbmV3IE1hcChyYXdJdGVtcy5tYXAoKGkpID0+IFtpLmZpbHRlciwgaV0pKS52YWx1ZXMoKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRQYXJlbnRJZHMgPSBuZXcgU2V0KGl0ZW1zLm1hcCgoaSkgPT4gaS5maWx0ZXJQYXJlbnQpKTtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBBcnJheS5mcm9tKHZhbGlkUGFyZW50SWRzKS5tYXAoKGxvYzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGxvYyxcbiAgICAgICAgICAgICAgICBuYW1lOiBsb2MsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscy5tYXAoKGhvdGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IGhvdGVsPy50ZXh0cyA/PyBob3RlbD8udHJhbnNsYXRpb25zID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdHI/Lm5hbWUgPz8gaG90ZWw/Lm5hbWVfaWRlbnRpZmllcjtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGhvdGVsPy5jaXR5O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmJ1dHRvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbD8ubGlua3MpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RJbWcgPVxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubXVsdGltZWRpYT8uZmluZCgobTogYW55KSA9PiBtPy5jb3ZlcikgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoZmlyc3RJbWcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGhvdGVsPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogaG90ZWwuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcyxcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQ2l0aWVzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZENpdGllcykubWFwKChjaXR5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogY2l0eSxcbiAgICAgICAgICAgICAgICBuYW1lOiBjaXR5LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSA/PyBbXSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXhwLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckk7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVySG90ZWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySG90ZWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsLmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUgPz8gaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJIb3RlbHNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9Gb290ZXJIb3RlbHNJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckxpbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVyTGlua3NJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8udGV4dHM/Lmljb24sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgbWVtYmVyVGl0bGU6IHByb3BzLnRleHRzPy5tZW1iZXJUaXRsZSxcbiAgICAgICAgICAgICAgICBtZW1iZXJQcmV0aXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclByZXRpdGxlLFxuICAgICAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHMudGV4dHM/LmNvcHlyaWdodCxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcy5saW5rcyksXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJMaW5rc0k7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckJlYWNocyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckJlYWNoc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoJy9wdXJvYmVhY2gnLCBob3RlbC5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lID8/IGhvdGVsLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaG90ZWw/LnRleHRzPy5sb2NhdGlvbkRlc2NyaXB0aW9uID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9Gb290ZXJCZWFjaHNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9Gb290ZXJCZWFjaHNJO1xuICAgIH1cblxuICAgIG1hcEluZm9MaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgQWR2YW50YWdlcyB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHsgYmFja2dyb3VuZGltYWdlLCBpbWFnZW5lcywgc21hbGxpbWFnZSB9ID0gbXVsdGltZWRpYTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGl0ZW1zOiBBcnJheSguLi4oQWR2YW50YWdlcyB8fCBbXSkpPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50aXRsZSBhcyBzdHJpbmdcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgc21hbGxJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHNtYWxsaW1hZ2U/LlswXSksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShiYWNrZ3JvdW5kaW1hZ2U/LlswXSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0xpc3RJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNDb2xSb3VuZChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9TbGlkZXIzQ29sUm91bmRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSwgcG9zdHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtW10gPSBbXTtcbiAgICAgICAgXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3MgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSBpZiAocG9zdHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gcG9zdHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRyYW5zbGF0aW9ucz8uWzFdLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA/IHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW5cbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uSGlkZGVuOlxuICAgICAgICAgICAgICAgICAgICB0ZXh0cz8uZGVzY3JpcHRpb25BZGRpdGlvbmFsID8/IHRleHRzLmRlc2NyaXB0aW9uQWRpY2lvbmFsLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIHNlZUxlc3M6IHRleHRzPy5idXR0b25NZW5vc2luZm8sXG4gICAgICAgICAgICAgICAgc2VlTW9yZTogdGV4dHM/LmJ1dHRvbk1hc2luZm8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG1hcEltZ0luZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnaW1naW5mb3JpZ2h0JyB8ICdpbWdpbmZvbGVmdCdcbiAgICApOiBQdXJvSW1nSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiBuYW1lPy5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgfSBhcyBQdXJvSW1nSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1RvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VzIHx8IG11bHRpbWVkaWE/Lm11bHRpbWVkaWEgfHwgbXVsdGltZWRpYT8uaW1hZ2VuZXNcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbWFnZXNNb2JpbGUgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYS5pbWFnZW5lc21vYmlsZSB8fCBbXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFByZWNhcmdhIGRpbsOhbWljYSBkZSBsYSBwcmltZXJhIGltYWdlbiBkZWwgc2xpZGVyXG4gICAgICAgIGlmIChpbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbWFnZXNNb2JpbGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNNb2JpbGVbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzTW9iaWxlPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNNb2JpbGVbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzcG90aWZ5OiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFjdGlvbnM/Llsnc3BvdGlmeSddLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIHVybDogYWN0aW9ucz8uWydzcG9ydGlmeUxpbmsnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWRlbGl0eToge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5J10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5TGluayddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXJMaW5rJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBhY3Rpb25zPy5bJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgdmlkZW86IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1haW5UaXRsZTogdGV4dHM/Lm1haW5UaXRsZSxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGltYWdlc01vYmlsZSxcbiAgICAgICAgfSBhcyBQdXJvVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0Jhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb0Jhbm5lckl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSBhcyBQdXJvSW5mb0Jhbm5lckk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBTY2hlZHVsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NjaGVkdWxlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgQWR2YW50YWdlcyB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IEFycmF5KC4uLihBZHZhbnRhZ2VzIHx8IFtdKSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NjaGVkdWxlSXRlbVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9IGFzIFB1cm9TY2hlZHVsZUk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbmZvU2VydmljZXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW5mb1NlcnZpY2VzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIHNlcnZpY2VzU2VydmljZSwgQWR2YW50YWdlcywgbXVsdGltZWRpYSwgYnV0dG9ucyB9ID1cbiAgICAgICAgICAgIHByb3BzO1xuICAgICAgICBsZXQgaXRlbXMgPSBbXTtcbiAgICAgICAgaWYgKEFkdmFudGFnZXMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gQWR2YW50YWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSA/PyBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5kZXNjcmlwdGlvbiA/PyBpdGVtPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzcyA/PyBpdGVtPy5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2VydmljZXNJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHNlcnZpY2VzU2VydmljZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBzZXJ2aWNlc1NlcnZpY2U/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uZGVzY3JpcHRpb24gPz8gaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3MgPz8gaXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW10pLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgdmlldzogdGhpcy5nZXRWaWV3KHZpZXcpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvU2VydmljZXNJO1xuICAgIH1cblxuICAgIG1hcExpc3RHZW5lcmFsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuYW1lPzogJ2xpc3RuZXdzcmlnaHQnIHwgJ2xpc3RuZXdzbGVmdCdcbiAgICApOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG9mZmVycywgcm9vbXMsIG11bHRpbWVkaWEsIGhvdGVscywgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9MaXN0R2VuZXJhbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChvZmZlcnMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gb2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLm11bHRpbWVkaWEgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgZXF1aXBtZW50LCBtdWx0aW1lZGlhIH0gPSBpdGVtO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBlcXVpcG1lbnQ/LnNsaWNlKDAsIDMpPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBpdGVtPy5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTGlzdFJvb21zJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTGlzdFJvb21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaG90ZWw/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGhvdGVsPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoaG90ZWw/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGl0bGUgJiYgaW1nPy50aXRsZS50cmltKCkgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5kZXNjcmlwdGlvbiAmJiBpbWc/LmRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWcuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICByaWdodFNpZGU6IG5hbWU/LmluY2x1ZGVzKCdyaWdodCcpLFxuICAgICAgICB9IGFzIFB1cm9MaXN0R2VuZXJhbEk7XG4gICAgfVxuXG4gICAgbWFwTGlzdFJlc3RhdXJhbnRzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGlzdFJlc3RhdXJhbnRzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucmVzdGF1cmFudHM/Lm1hcChcbiAgICAgICAgICAgICAgICAocmVzdGF1cmFudDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHJlc3RhdXJhbnQ/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiByZXN0YXVyYW50Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcmVzdGF1cmFudD8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdMaXN0UmVzdGF1cmFudHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTGlzdFJlc3RhdXJhbnRzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0YXVyYW50Py5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4ocmVzdGF1cmFudD8ubG9nb3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiByZXN0YXVyYW50Py5sb2dvcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RSZXN0YXVyYW50c0k7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRW5naW5lSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckluOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyT3V0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXG4gICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW4pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvY2F0aW9uRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duSG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4ocHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaG90ZWw/Lm1vZGVsSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGhvdGVsPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSA/PyBbXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclRpdGxlLFxuICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbHM/LlswXSxcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmVNb2RhbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZW5naW5lTWFwcGVkOiBQdXJvRW5naW5lSVxuICAgICk6IFB1cm9FbmdpbmVNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGVBZHZhbnRhZ2VzOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5naW5lOiBlbmdpbmVNYXBwZWQsXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbT8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9FbmdpbmVNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogcHJvcHM/LnBhZ2VzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IFB1cm9CdXR0b25JKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFV0aWxzLnVybFZhbGlkYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcFBob3RvU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByZXZlcnNlOiBib29sZWFuXG4gICAgKTogUHVyb1Bob3RvU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZXZlcnNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJhbm5lcjRDb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXI0Q29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMubXVsdGltZWRpYS5pbWFnZWJpZz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHMubXVsdGltZWRpYS5pbWFnZW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXMuc2xpY2UoMSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdLFxuXG4gICAgICAgICAgICBiaWdiYW5uZXI6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZWJpZz8uWzBdXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcy5tdWx0aW1lZGlhLmltYWdlYmlnWzBdKVxuICAgICAgICAgICAgICAgIDogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYS5pbWFnZW5lc1swXSlcbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYmlndGl0bGU6ICcnLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVyNENvbEk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEZvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvQ29udGFjdEZvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNMaW5rcyxcbiAgICAgICAgICAgIHByb21vdGlvbnM6IHByb3BzPy50ZXh0cz8ucHJvbW90aW9ucyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmREcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnN1bHR0eXBlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IHByb3A/LmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dE5hbWU6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXRTdXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LnN1cm5hbWVzKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQ29udGFjdEZvcm1JO1xuICAgIH1cblxuICAgIG1hcEluZm9TbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCwgcmV2ZXJzZTogYm9vbGVhbik6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgbXVsdGltZWRpYSwgZXhwZXJpZW5jZSwgdGV4dHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9JbmZvU2xpZGVySXRlbVtdID0gW107XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWcuc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGV4cDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHA/Lm11bHRpbWVkaWE/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGV4cD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGV4cD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV0aXRsZTogZXhwLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIHJldmVyc2U6IHJldmVyc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChvZmZlcjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvZmZlci5tdWx0aW1lZGlhWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb09mZmVyXG4gICAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcFRoYW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1RoYW5rc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb1RoYW5rc0k7XG4gICAgfVxuXG4gICAgbWFwNDA0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvNDA0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzcz8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogYCR7YWRkcmVzcy5hZGRyZXNzfTwvYnI+JHthZGRyZXNzLmNpdHl9LCAke2FkZHJlc3MuY3B9ICR7YWRkcmVzcy5wcm92aW5jZX1gLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucz8uWzFdKVswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LkNvbnRhY3Q/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zPy5bMl0pWzBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvNDA0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBtb3JlaW5mbzogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zLnJldmVyc2UoKSksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uZXF1aXBtZW50Py5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2NoZWR1bGVJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0dhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcEluZm9UYWJsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9UYWJsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICAvL1RPRE86IHBlbmRpZW50ZSBwcm9wc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRhYmxlSXRlbXM6IHByb3BzPy50YWJsZT8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGl0ZW0uY29sdW1ucz8ubWFwKChjb2w6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjb2wudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBjb2wuaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1RhYmxlSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhYmxlSGVhZGVyczogcHJvcHM/LnRhYmxlPy5oZWFkZXJzLFxuICAgICAgICAgICAgaW5mb0l0ZW1zOiBwcm9wcz8uaW5mb0l0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9JbmZvVGFibGVJO1xuICAgIH1cblxuICAgIG1hcEluZm8yQ29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mbzJDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmxpbmspLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvMkNvbEk7XG4gICAgfVxuXG4gICAgbWFwU3VibWVudShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01lbnVJIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBwcm9wcz8uaXRlbXM/LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICAgIGxldCBzaXRlVXJsID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnNpdGVJZCgpID09PSAyKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvaG90ZWxzJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNpdGVJZCgpID09PSAzKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvYmVhY2gnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1Ym1lbnUgPSB7XG4gICAgICAgICAgICAvLyBob3RlbDogcHJvcHM/LmhvdGVsLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHNpdGVVcmwgKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogbGluaz8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6IGxpbms/Lm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TdWJtZW51TW9iaWxlSXRlbUlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlICYmICFpdGVtLm1vYmlsZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBzaXRlVXJsICsgbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdGVkPy5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogc2VsZWN0ZWQ/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0J1dHRvbkksXG4gICAgICAgICAgICBib3R0b21MaW5rczogcHJvcHM/Lml0ZW1zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5tb2JpbGUpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc2l0ZVVybCArIGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TdWJtZW51TW9iaWxlSXRlbUlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9NZW51STtcblxuICAgICAgICByZXR1cm4gc3VibWVudSBhcyBQdXJvTWVudUk7XG4gICAgfVxuXG4gICAgbWFwTGlzdEF3YXJkcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xpc3RBd2FyZHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1bMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0QXdhcmRzSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RBd2FyZHNJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNDYXJkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyM0NhcmRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDYXJkSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDYXJkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTmV3c2xldHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm1haWxFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYW5nOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubGFuZ3VhZ2VQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubGFuZ3VhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsYW5nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBsYW5nPy5pZCwgbmFtZTogbGFuZz8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvdW50cnlQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY291bnRyaWVzXG4gICAgICAgICAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50cnk6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjb3VudHJ5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY291bnRyeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNlbnRlclBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGNlbnRlcjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjZW50ZXI/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNlbnRlcj8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzaWRlbnQ6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5yZXNpZGVudFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb3VudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY291bnRyeTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGNvdW50cnk/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb3VudHJ5Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTmV3c2xldHRlckk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwQmFubmVySW5mbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lckluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJJbmZvSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBCYW5uZXJJbmZvMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lckluZm8ySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJJbmZvMkk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5mb0RldGFpbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICB9IGFzIFB1cm9JbmZvRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5mb0RldGFpbHNDb2xzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0luZm9EZXRhaWxzM0NvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb0RldGFpbEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9JbmZvRGV0YWlsczNDb2xJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcEZhcXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvRGV0YWlsczNDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uY29udGVudCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvRmFxc0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwTXVzaWNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9NdXNpY1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGF1ZGlvOiBpdGVtLmF1ZGlvLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5pbWFnZSksXG4gICAgICAgICAgICAgICAgZGF0ZTogaXRlbS5kYXRlLFxuICAgICAgICAgICAgICAgIGhlYWRpbmc6IGl0ZW0uaGVhZGluZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRpbmc6IGl0ZW0udGV4dD8uaGVhZGluZyxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dD8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvTXVzaWNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcENhcnRhKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQ2FydGFJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlY3Rpb25zOiBwcm9wcz8uTWVudT8uWzBdPy5jaGlsZHJlbnM/Lm1hcCgoc2VjdGlvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBzZWN0aW9uPy5tZW51Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByaWNlLFxuICAgICAgICAgICAgICAgICAgICBpY29uczogaXRlbS5pY29ucz8ubWFwKChpY29uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgKGljb24/LmNsYXNzIHx8IGljb24/Lmljb24pLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvQ2FydGFJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjRJdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjRJdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXI0SXRlbXNJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcER1YWxMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRHVhbExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgLy8gcHJldGl0bGU6XG4gICAgICAgICAgICAvLyAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAvLyAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgLy8gICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAvLyB0aXRsZTpcbiAgICAgICAgICAgIC8vICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgIC8vICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAvLyAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIC8vIHRhZ3M6IHtcbiAgICAgICAgICAgIC8vICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgLy8gICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgLy8gdGV4dENvbG9yczoge1xuICAgICAgICAgICAgLy8gICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgLy8gICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaXN0czogcHJvcHM/Lml0ZW1zPy5tYXAoKGxpc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogbGlzdC5pdGVtcyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvRHVhbExpc3RJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcFByb2plY3RzRm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9Qcm9qZWN0c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgeWRUaXRsZTogcHJvcHM/LnRleHRzPy55ZFRpdGxlLFxuICAgICAgICAgICAgYWlUaXRsZTogcHJvcHM/LnRleHRzPy5haVRpdGxlLFxuICAgICAgICAgICAgaWNUaXRsZTogcHJvcHM/LnRleHRzPy5pY1RpdGxlLFxuICAgICAgICAgICAgZFRpdGxlOiBwcm9wcz8udGV4dHM/LmRUaXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc0xpbmtzLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIHdoeVRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRXaHlNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0V2h5TWVzc2FnZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnd2h5TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2FUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0V2FNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0V2FNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd3YU1lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBwVGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBQTWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBQTWVzc2FnZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAncHBNZXNzYWdlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBucERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubnBEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnBEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmJwRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YkRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGJEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5wb0Ryb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmVtRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYnBEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmhicERyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LnByZWZpeGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogQXJyYXkocHJvcHM/LnByZWZpeGVzKS5pbmRleE9mKHByZWZpeCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZHJlc3NJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5hZGRyZXNzSW5wdXQpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yQWRkcmVzcyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaXplSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zaXplSW5wdXQsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LnNpemVJbnB1dCksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JTaXplLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE5hbWUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uc3VybmFtZXMpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybUVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWF0ZXJpYWxzSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRNYXRlcmlhbHMpLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNYXRlcmlhbHMsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uaW5wdXRNYXRlcmlhbHMsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9Qcm9qZWN0c0Zvcm1JO1xuICAgIH1cblxuICAgIG1hcEZhcXNJbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvRmFxc0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIEl0ZW1zLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGltZ3M6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXMpLFxuICAgICAgICAgICAgaXRlbXM6IEl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLnRleHQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBhcHBsaWNhdGlvbkJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zPy5bMF0pWzBdLFxuICAgICAgICAgICAgdmlldzogdGhpcy5nZXRWaWV3KHZpZXcpLFxuICAgICAgICAgICAgY29udGFjdEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zPy5bMV0pWzFdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0ZhcXNJbWdJO1xuICAgIH1cblxuICAgIG1hcEJsb2dMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmxvZ0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHBvc3RzID0gcHJvcHM/LnBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUgPz8gcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgcG9zdD8udGV4dHM/LnN1YnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgIHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocG9zdD8ubXVsdGltZWRpYT8uWzBdKSA/PyB7XG4gICAgICAgICAgICAgICAgc3JjOiAnaHR0cHM6Ly9wdXJvLWFwaS1kZXYuYi1jZG4ubmV0L211bHRpbWVkaWEvaW1hZ2VzL3RodW1ibmFpbHMvMTI4MC8yMDNDYXB0dXJhLTIwZGUtMjBwYW50YWxsYS0yMDIwMTctMDQtMjQtMjBhLTIwbGFzLTIwMTktNDUtNTYtcG5nLndlYnAnLFxuICAgICAgICAgICAgICAgIGFsdDogcG9zdD8udGV4dHM/LnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogbmV3IERhdGUocG9zdC5jcmVhdGVkQXQpLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgcG9zdHMgPSBwb3N0cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiBiLmRhdGUgLSBhLmRhdGU7IC8vIGFtYm9zIGNvbiBmZWNoYVxuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiAhYi5kYXRlKSByZXR1cm4gLTE7IC8vIGEgdGllbmUgZmVjaGEsIGIgbm9cbiAgICAgICAgICAgIGlmICghYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIDE7IC8vIGIgdGllbmUgZmVjaGEsIGEgbm9cbiAgICAgICAgICAgIHJldHVybiAwOyAvLyBuaW5ndW5vIHRpZW5lIGZlY2hhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE9idGVuZXIgbG9zIDQgcG9zdHMgbcOhcyByZWNpZW50ZXNcbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHMgPSBwb3N0cz8uc2xpY2UoMCwgNCk7XG5cbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IEFycmF5LmlzQXJyYXkocHJvcHM/LnBvc3RDYXRlZ29yaWVzKVxuICAgICAgICAgICAgPyBwcm9wcy5wb3N0Q2F0ZWdvcmllc1xuICAgICAgICAgICAgOiBPYmplY3QudmFsdWVzKHByb3BzPy5wb3N0Q2F0ZWdvcmllcyB8fCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG5vdGZvdW5kVGV4dDogcHJvcHM/LnRleHRzPy5zZWFyY2hOb3RGb3VuZCxcbiAgICAgICAgICAgIHBvc3RzOiBwb3N0cyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6XG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbFBvc3RzLFxuICAgICAgICAgICAgICAgIH0pKSA/PyBbXSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ1Bvc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CbG9nRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zdElkID0gcHJvcHM/LnBvc3Q/LmlkO1xuICAgICAgICBjb25zdCBwb3N0cyA9IHByb3BzPy5yZWxhdGVkUG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAocG9zdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChwOiBhbnkpID0+IHA/LmlkICE9PSBjdXJyZW50UG9zdElkXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlbGF0ZWRQb3N0c0NvbnN0ID1cbiAgICAgICAgICAgIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwOiBhbnkpID0+IHA/LmRhdGUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYi5kYXRlIGFzIGFueSkgLSAoYS5kYXRlIGFzIGFueSkpXG4gICAgICAgICAgICAgICAgLnNsaWNlKDAsIDQpIHx8IFtdO1xuICAgICAgICBpZiAocmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgY29uc3Qgd2l0aG91dERhdGUgPSBjYW5kaWRhdGVzLmZpbHRlcigocDogYW55KSA9PiAhcD8uZGF0ZSk7XG4gICAgICAgICAgICByZWxhdGVkUG9zdHNDb25zdCA9IHJlbGF0ZWRQb3N0c0NvbnN0LmNvbmNhdChcbiAgICAgICAgICAgICAgICB3aXRob3V0RGF0ZS5zbGljZSgwLCA0IC0gcmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBBcnJheS5pc0FycmF5KHByb3BzPy5wb3N0Q2F0ZWdvcmllcylcbiAgICAgICAgICAgID8gcHJvcHMucG9zdENhdGVnb3JpZXNcbiAgICAgICAgICAgIDogT2JqZWN0LnZhbHVlcyhwcm9wcz8ucG9zdENhdGVnb3JpZXMgfHwge30pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5wb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgIGRhdGU6IHByb3BzPy5wb3N0Py5kYXRlID8gbmV3IERhdGUocHJvcHM/LnBvc3Q/LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHByb3BzPy5wb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbF9wb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQmxvZ0RldGFpbHNJO1xuICAgIH1cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBCYW5uZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXJTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5idXR0b25zKVswXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwTW9kYWxPcHRpb25zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTW9kYWxPcHRpb25zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lml0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmxpbmtzKVswXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb01vZGFsT3B0aW9uc0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5uZXJDb250ZW50KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5uZXJDb250ZW50SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LmNvbnRlbnQsXG4gICAgICAgIH0gYXMgUHVyb0lubmVyQ29udGVudEk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwVGltZWxpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9UaW1lbGluZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgeWVhcjogaXRlbS55ZWFyLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvVGltZWxpbmVJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcEhlYWRJbnRybyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0hlYWRJbnRyb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZEludHJvSTtcbiAgICB9XG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwQ2FyZWVyc0Zvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvQ2FyZWVyc0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHlkVGl0bGU6IHByb3BzPy50ZXh0cz8ueWRUaXRsZSxcbiAgICAgICAgICAgIG9kVGl0bGU6IHByb3BzPy50ZXh0cz8ub2RUaXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc0xpbmtzLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIHd3VGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy53d1RleHRhcmVhLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lnd3VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3d3VGV4dGFyZWEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdsRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy53bERyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3cERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ud3BEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFvRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hb0Ryb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2xhbmdEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LndsYW5nRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoZERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaGREcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5wcmVmaXhlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IEFycmF5KHByb3BzPy5wcmVmaXhlcykuaW5kZXhPZihwcmVmaXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VybmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LnN1cm5hbWVzKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1FbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbGVzSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCksXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHM/LnRleHRzPy5maWxlc0lucHV0LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3ZJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5jdklucHV0KSxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcz8udGV4dHM/LmN2SW5wdXQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uY3ZJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCBhcyBGaWxlIHwgRmlsZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0NhcmVlcnNGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBFdmVudHNGb3JtKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRXZlbnRzRm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwcmVmaXhWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHByb3BzPy5wcmVmaXhlcyB8fCB7fSkgYXMgc3RyaW5nW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2lUaXRsZTogcHJvcHM/LnRleHRzPy5jaXRpdGxlLFxuICAgICAgICAgICAgZFRpdGxlOiBwcm9wcz8udGV4dHM/LmR0aXRsZSxcbiAgICAgICAgICAgIGhvd1RpdGxlOiBwcm9wcz8udGV4dHM/Lmhvd1RpdGxlLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNsaW5rLFxuICAgICAgICAgICAgcmVxdWlyZWRMYWJlbDogcHJvcHM/LnRleHRzPy5yZXF1aXJlZExhYmVsLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIGhvd1RleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaG93VGl0bGUsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaG93VGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ2hvd01lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZm9UZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmluZm9UaXRsZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbmZvVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ2luZm9NZXNzYWdlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZURyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubmVEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubmF0dXJlPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3RoZXJzRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5vdGhlcnNEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG93SGVhcmRVcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByZWZpeFZhbHVlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuc2FuaXRpemUocHJvcHM/LnRleHRzPy5uYW1lVGl0bGUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5hbWVUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5hbWVFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuc2FuaXRpemUocHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc3VybmFtZXNFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnNhbml0aXplKHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lbWFpbEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnNhbml0aXplKHByb3BzPy50ZXh0cz8uY29tcGFueVRpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5jb21wYW55VGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5jb21wYW55RXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5zYW5pdGl6ZShwcm9wcz8udGV4dHM/LnBob25lVGl0bGUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LnBob25lRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbnBJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuc2FuaXRpemUocHJvcHM/LnRleHRzPy5ucFRpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5ucFRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubnBFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRlSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnNhbml0aXplKHByb3BzPy50ZXh0cz8uZGF0ZVRpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kYXRlVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5kYXRlRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc0hvdXJJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuc2FuaXRpemUocHJvcHM/LnRleHRzPy5zSG91clRpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc0hvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmSG91cklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5zYW5pdGl6ZShwcm9wcz8udGV4dHM/LmZIb3VyVGl0bGUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmZIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5mSG91ckVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvRXZlbnRzRm9ybUk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwTW9kYWxJbmZvKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByZXZlcnNlOiBib29sZWFuXG4gICAgKTogUHVyb01vZGFsSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgZXh0cmFEZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5leHRyYURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICAgICAgcmV2ZXJzZSxcbiAgICAgICAgfSBhcyBQdXJvTW9kYWxJbmZvSTtcbiAgICB9XG5cbiAgICBtYXBJZnJhbWUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JZnJhbWVJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZyYW1lVXJsOiBwcm9wcz8udGV4dHM/LmZyYW1lVXJsLFxuICAgICAgICB9IGFzIFB1cm9JZnJhbWVJO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB9O1xuICAgIGNvdmVyOiBudW1iZXI7XG4gICAgdGFncz86IGFueVtdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIG5kVGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2VQYXRoIHtcbiAgICBvcmlnaW5hbDogc3RyaW5nO1xuICAgIHdlYnA6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRzQWRkb25zIHtcbiAgICBjb25zdWx0VHlwZT86IENvbnN1bHRUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlck9wdGlvbiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IEZpbHRlck9wdGlvbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3VsdFR5cGUge1xuICAgIGNvbnN1bHRUeXBlSWQ/OiBudW1iZXI7XG4gICAgSWQ/OiBudW1iZXI7XG4gICAgbGFuZ3VhZ2VJZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xufVxuIl19
|
|
2541
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBOEc1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBTW5FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0FrckdMO0lBMXJHRyxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBUUQsa0JBQWtCLENBQ2QsS0FBZ0M7UUFFaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3BDLGFBQWEs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QyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssVUFBVTs0QkFDWCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsTUFBTSxFQUFFLFdBQVcsQ0FDakIsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssVUFBVTs0QkFDWCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssWUFBWTs0QkFDYixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssY0FBYzs0QkFDZixlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQ2IsQ0FBQzs0QkFDUCxNQUFNO3dCQUNWLEtBQUssVUFBVTs0QkFDWCxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENB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QyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELE9BQU87U0FDUSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBc0I7UUFDNUIsT0FBTztZQUNILFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7U0FDcEIsQ0FBQztJQUNyQixDQUFDOytHQTVyR1EsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0LCBJbmplY3RhYmxlLCBTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgICBQdXJvNDA0SSxcbiAgICBQdXJvQWR2YW50YWdlc0ksXG4gICAgUHVyb0FkdmFudGFnZXNJdGVtLFxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJLFxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtLFxuICAgIFB1cm9CYW5uZXI0Q29sSSxcbiAgICBQdXJvQmFubmVySW5mbzJJLFxuICAgIFB1cm9CYW5uZXJJbmZvSSxcbiAgICBQdXJvQmFubmVyU2xpZGVySSxcbiAgICBQdXJvQnJlYWRjcnVtYkksXG4gICAgUHVyb0NhcmVlcnNGb3JtSSxcbiAgICBQdXJvQ2FydGFJLFxuICAgIFB1cm9Db250YWN0Rm9ybUksXG4gICAgUHVyb0R1YWxMaXN0SSxcbiAgICBQdXJvRW5naW5lSSxcbiAgICBQdXJvRW5naW5lTW9kYWxJLFxuICAgIFB1cm9FdmVudHNGb3JtSSxcbiAgICBQdXJvRm9vdGVyQmVhY2hzSSxcbiAgICBQdXJvRm9vdGVyQmVhY2hzSXRlbSxcbiAgICBQdXJvRm9vdGVySG90ZWxzSSxcbiAgICBQdXJvRm9vdGVySG90ZWxzSXRlbSxcbiAgICBQdXJvRm9vdGVySW5mb0ksXG4gICAgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8sXG4gICAgUHVyb0Zvb3RlckxpbmtzSSxcbiAgICBQdXJvR2FsbGVyeUZpbHRlcixcbiAgICBQdXJvR2FsbGVyeUksXG4gICAgUHVyb0dhbGxlcnlJdGVtLFxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckksXG4gICAgUHVyb0dyaWQzQ29sRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJLFxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW0sXG4gICAgUHVyb0dyaWQ0aXRlbXNJLFxuICAgIFB1cm9HcmlkNGl0ZW1zSXRlbSxcbiAgICBQdXJvR3JpZDVpdGVtc0ksXG4gICAgUHVyb0dyaWQ1aXRlbXNJdGVtLFxuICAgIFB1cm9HcmlkNml0ZW1zSSxcbiAgICBQdXJvSGVhZGVySSxcbiAgICBQdXJvSGVhZEludHJvSSxcbiAgICBQdXJvSW1nSW5mb0ksXG4gICAgUHVyb0luZm9CYW5uZXJJLFxuICAgIFB1cm9JbmZvQmFubmVySXRlbSxcbiAgICBQdXJvSW5mb0JpZ0ksXG4gICAgUHVyb0luZm9EZXRhaWxzSSxcbiAgICBQdXJvSW5mb0dhbGxlcnlJLFxuICAgIFB1cm9JbmZvSW50cm9JLFxuICAgIFB1cm9JbmZvTGlzdEksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0ksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0l0ZW0sXG4gICAgUHVyb0luZm9TbGlkZXJJLFxuICAgIFB1cm9JbmZvU2xpZGVySXRlbSxcbiAgICBQdXJvSW5mb1RhYmxlSSxcbiAgICBQdXJvVGFibGVJdGVtLFxuICAgIFB1cm9JbmZvVmlkZW9JLFxuICAgIFB1cm9MYW5ndWFnZXNNb2RhbEksXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSXRlbSxcbiAgICBQdXJvTGlzdEF3YXJkc0ksXG4gICAgUHVyb0xpc3RBd2FyZHNJdGVtSSxcbiAgICBQdXJvTGlzdEdlbmVyYWxJLFxuICAgIFB1cm9MaXN0R2VuZXJhbEl0ZW0sXG4gICAgUHVyb01hcExpc3RJLFxuICAgIFB1cm9NYXBMaXN0SXRlbSxcbiAgICBQdXJvTWVudUksXG4gICAgUHVyb01vZGFsSW5mb0ksXG4gICAgUHVyb01vZGFsT3B0aW9uc0ksXG4gICAgUHVyb011c2ljU2xpZGVySSxcbiAgICBQdXJvTmV3c2xldHRlckksXG4gICAgUHVyb09mZmVyLFxuICAgIFB1cm9PZmZlckJhbm5lckksXG4gICAgUHVyb1Bob3RvU2xpZGVySSxcbiAgICBQdXJvUHJvamVjdHNGb3JtSSxcbiAgICBQdXJvRmFxc0ksXG4gICAgUHVyb0ZhcXNJbWdJLFxuICAgIFB1cm9TY2hlZHVsZUksXG4gICAgUHVyb1NjaGVkdWxlSXRlbSxcbiAgICBQdXJvU2xpZGVyMWNvbEksXG4gICAgUHVyb1NsaWRlcjFjb2xJdGVtLFxuICAgIFB1cm9TbGlkZXIyY29sSSxcbiAgICBQdXJvU2xpZGVyM0NhcmRJLFxuICAgIFB1cm9TbGlkZXIzQ2FyZEl0ZW1JLFxuICAgIFB1cm9TbGlkZXIzY29sSSxcbiAgICBQdXJvU2xpZGVyM0NvbEl0ZW0sXG4gICAgUHVyb1NsaWRlcjNDb2xSb3VuZEksXG4gICAgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW0sXG4gICAgUHVyb1NsaWRlcjRJdGVtc0ksXG4gICAgUHVyb1RoYW5rc0ksXG4gICAgUHVyb1RpbWVsaW5lSSxcbiAgICBQdXJvVG9wU2xpZGVySSxcbiAgICBQdXJvV2VibWFwSSxcbiAgICBQdXJvWmlnWmFnMmNvbEksXG4gICAgUHVyb0luZm9EZXRhaWxzM0NvbEksXG4gICAgUHVyb0luZm9EZXRhaWxJdGVtSSxcbiAgICBQdXJvSW5mb0RldGFpbHMyQ29sSSxcbiAgICBQdXJvQmxvZ0xpc3RJLFxuICAgIFB1cm9CbG9nRGV0YWlsc0ksXG4gICAgUHVyb0lubmVyQ29udGVudEksXG4gICAgUHVyb1NsaWRlcjJjb2xJdGVtLFxuICAgIFB1cm9TdWJtZW51TW9iaWxlSXRlbUksXG4gICAgUHVyb0dyaWQ2aXRlbXNJdGVtLFxuICAgIFB1cm9MaXN0UmVzdGF1cmFudHNJLFxuICAgIFB1cm9MaXN0UmVzdGF1cmFudEl0ZW1JLFxuICAgIFB1cm9JZnJhbWVJLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFB1cm9JbmZvMkNvbEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3B1cm8taW5mbzJjb2wvcHVyby1pbmZvMmNvbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQm9keUNvbXBvbmVudCwgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IFNjcmVlblNpemVyU2VydmljZSB9IGZyb20gJy4uL3NjcmVlbi1zaXplcic7XG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi9tYXBwZXIuc2VydmljZS50b2tlbic7XG5pbXBvcnQgeyBQdXJvVmlld3NUeXBlIH0gZnJvbSAnLi4vLi4vRW51bS92aWV3cy5lbnVtJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcbiAgICBnZXQgaXNNYXhTbWFsbERlc2t0b3BJbnN0YW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5tYXhTbWFsbERlc2t0b3BJbnN0YW50KCk7XG4gICAgfVxuXG4gICAgaGVhZGVyQnV0dG9ucyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgc2l0ZUlkOiBTaWduYWw8bnVtYmVyPiA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiB0aGlzLnNpdGVTdmMud2ViQ29uZmlnSW5zdGFudD8uc2l0ZUlEXG4gICAgKTtcblxuICAgIGdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2U6IEltYWdlUmVzcG9uc2UgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFpbWFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNb2JpbGVJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzc2OF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc0Z1bGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy53ZWJwO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbERlc2t0b3AoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy5wYXRoPy53ZWJwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNyYzogYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWAsXG4gICAgICAgICAgICBhbHQ6IGltYWdlPy5hbHQsXG4gICAgICAgIH0gYXMgUHVyb0ltYWdlSTtcbiAgICB9XG5cbiAgICBnZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW1hZ2VJW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaW1hZ2VzPy5zb21lKChpbWcpID0+IGltZyAhPT0gdW5kZWZpbmVkICYmIGltZyAhPT0gbnVsbClcbiAgICAgICAgICAgID8gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSEpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRWaWV3KHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWQpOiAnbGVmdCcgfCAncmlnaHQnIHtcbiAgICAgICAgcmV0dXJuIHZpZXcgPT09ICdyaWdodCcgPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgIH1cblxuICAgIHNhbml0aXplKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuYW1lXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKSAvLyBxdWl0YXIgdGlsZGVzXG4gICAgICAgICAgICAucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnICcpIC8vIHF1aXRhciBzw61tYm9sb3MgcmFyb3NcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgICAgICAubWFwKChwYXJ0LCBpKSA9PlxuICAgICAgICAgICAgICAgIGkgPT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBwYXJ0LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcGFydC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbignJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUFnZXNPcHRpb25zKG1heExlbmd0aDogbnVtYmVyLCBtaW5MZW5ndGggPSAwKTogYW55W10ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnlbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gbWluTGVuZ3RoOyBpIDw9IG1heExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goeyBjb2RlOiBpLCBuYW1lOiBpIDwgMTAgPyBgMCR7aX1gIDogYCR7aX1gIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIG1hcENvbXBvbmVudHM8VD4oXG4gICAgICAgIGJvZHk6IGFueVtdLFxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXG4gICAgKTogQm9keUNvbXBvbmVudDxUPltdIHtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keS5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Py5vcmRlcixcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcbiAgICAgICAgICAgICAgICB2aWV3OiBjb21wb25lbnQ/LnZpZXcsXG4gICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8VD47XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Py5uYW1lICYmIGNvbXBvbmVudD8ucHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQzY29sRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHBsdXNmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjFjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMWNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckJlYWNocyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJob3RlbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVySG90ZWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckJ1dHRvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXNzbWFsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9MaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29scm91bmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWdpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW1naW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW1nSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm90YWJsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVGFibGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ1aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ2aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3NsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Ryb29tcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RyZXN0YXVyYW50cyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0UmVzdGF1cmFudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQwNCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2VydmljZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2Jhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTY2hlZHVsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwWmlnemFnMmNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDNjb2xzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zbGlkZXJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9zbGlkZXJsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwaG90b3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFBob3RvU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob3Rvc2xpZGVybGVmdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXI0Y29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lcjRDb2woXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9nYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9HYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMkNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWFwbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbGhvdGVscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0YWRvYmVhY2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTWFwTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2VzbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGFuZ3VhZ2VzTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN1Ym1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Rhd2FyZHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzdEF3YXJkcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NhcmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NhcmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25ld3NsZXR0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTmV3c2xldHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvMic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJJbmZvMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2RldGFpbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0RldGFpbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9kZXRhaWxzMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZGV0YWlsczNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0RldGFpbHNDb2xzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtdXNpY3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNdXNpY1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FydGEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ2FydGEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjRpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXI0SXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2R1YWxsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcER1YWxMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcm9qZWN0c2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUHJvamVjdHNGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9nbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nUG9zdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxvcHRpb25zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5uZXJjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElubmVyQ29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGltZWxpbmUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGltZWxpbmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIZWFkSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhcmVlcnNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENhcmVlcnNGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdldmVudHNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV2ZW50c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGFsaW5mb2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElmcmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxc2ltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXFzSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihjb21wb25lbnRNYXBwZWQubmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkM2NvbFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBob3RlbD8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChob3RlbC50ZXh0cz8ubmFtZSB8fCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChob3RlbC50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIDxicj4gJyArIGhvdGVsLnRleHRzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbC5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9HcmlkM2NvbFNsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dhbGxlcnlJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgZmlsdGVycyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChmOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGYubXVsdGltZWRpYSkgJiYgZi5tdWx0aW1lZGlhLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbTogaXRlbS5yb29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HYWxsZXJ5RmlsdGVyXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlclRpdGxlOiB0ZXh0cz8ucm9vbXNGaWx0ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtczogZmlsdGVyc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoZjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShmLm11bHRpbWVkaWEpICYmIGYubXVsdGltZWRpYS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjYzogeyBtdWx0aW1lZGlhOiBhbnlbXTsgZmlsdGVySW5kZXg6IG51bWJlciB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4OiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aW1lZGlhV2l0aEZpbHRlciA9IGZpbHRlci5tdWx0aW1lZGlhLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiBtdWx0aW1lZGlhV2l0aEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeyBtdWx0aW1lZGlhIH06IGFueSkgPT4gbXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBNYXBMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTWFwTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9NYXBMaXN0SXRlbVtdID0gW107XG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ01hcExpc3RQaG90bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdNYXBMaXN0UGhvdG8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ01hcExpc3RNYXAnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTWFwTGlzdE1hcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb01hcExpc3RJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHRleHRzPy5uZHRpdGxlLFxuICAgICAgICAgICAgbmREZXNjcmlwdGlvbjogdGV4dHM/Lm5kZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/Lm1hcD8uWzBdKSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb01hcExpc3RJO1xuICAgIH1cblxuICAgIG1hcE9mZmVyQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvT2ZmZXJCYW5uZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgICAgIC8vVE9ETzpiYWNrXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogJycsXG4gICAgICAgICAgICAgICAgZnJvbTogdGV4dHM/LmZyb20sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmljZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9IGFzIFB1cm9PZmZlckJhbm5lckk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcExhbmd1YWdlc01vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbGFuZ3VhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBsYW5ndWFnZXMgYXMgUHVyb0xhbmd1YWdlc01vZGFsSXRlbVtdLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGxhbmd1YWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcEhlYWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbWVudTogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0hlYWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG5hdiwgbXVsdGltZWRpYSwgbGlua3MgfSA9IG1lbnUgfHwge307XG4gICAgICAgIGNvbnN0IHsgYm90dG9tTGlua3MgfSA9IGxpbmtzID8/IHt9O1xuXG4gICAgICAgIGNvbnN0IGZhbGxiYWNrVGV4dHMgPSB7XG4gICAgICAgICAgICBtZW51OiAnTWVuw7onLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICdJZGlvbWEnLFxuICAgICAgICAgICAgYm9va25vdzogJ1Jlc2VydmFyJyxcbiAgICAgICAgICAgIGNoZWNraW46ICdDaGVja0luJyxcbiAgICAgICAgICAgIGNoZWNraW5PbmxpbmU6ICdDaGVja0luT25saW5lJyxcbiAgICAgICAgfSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICAgICBjb25zdCB0ZXh0cyA9IHByb3BzPy5oZWFkZXJCdXR0b25zPy50ZXh0cyA/PyBmYWxsYmFja1RleHRzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZU1lbnU6IHRleHRzPy5tZW51ID8/IGZhbGxiYWNrVGV4dHNbJ21lbnUnXSxcbiAgICAgICAgICAgIHRpdGxlTGFuZzogdGV4dHM/Lmxhbmd1YWdlID8/IGZhbGxiYWNrVGV4dHNbJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBidG5Cb29rOiB0ZXh0cz8uYm9va25vdyA/PyBmYWxsYmFja1RleHRzWydib29rbm93J10sXG4gICAgICAgICAgICBuYXZMaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIG5hdlxuICAgICAgICAgICAgICAgICAgICA/Lm1hcCgobGluazogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGE/Lm9yZGVyIC0gYj8ub3JkZXIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBib3R0b21MaW5rcz8uWzBdPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGFiZWwpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnRuQ2hlY2tpbjogdGV4dHM/LmNoZWNraW4gPz8gZmFsbGJhY2tUZXh0c1snY2hlY2tpbiddLFxuICAgICAgICAgICAgYnRuQ2hlY2tpbk9ubGluZTpcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY2hlY2tpbm9ubGluZSA/PyBmYWxsYmFja1RleHRzWydjaGVja2luT25saW5lJ10sXG4gICAgICAgICAgICBob3RlbEJyYW5kOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0JpZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG5kRGVzY3JpcHRpb246IHRleHRzPy5uZERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMWNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjFjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2xpZGVyMWNvbEl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwWmlnemFnMmNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1ppZ1phZzJjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgbmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LlsxXSksXG4gICAgICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IChBcnJheS5pc0FycmF5KG11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgOiBtdWx0aW1lZGlhPy5pbWFnZW5lc1xuICAgICAgICAgICAgKT8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ0aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNGl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU6ICdpbmZvdmlkZW9yaWdodCcgfCAnaW5mb3ZpZGVvbGVmdCdcbiAgICApOiBQdXJvSW5mb1ZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcmV2ZXJzZTogbmFtZS5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgICAgIHZpZGVvOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBwcm9wcy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLnZpZGVvPy50eXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9WaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CcmVhZGNydW1iSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKHByb3BzPy5pdGVtcyBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICA/LnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0J1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CcmVhZGNydW1iSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXSA/PyBwcm9wcz8uYWRkcmVzcztcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWRkcmVzc0luZm86IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQWRkcmVzcyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzPy5hZGRyZXNzID8/ICcnfSwgJHthZGRyZXNzPy5jaXR5ID8/ICcnfSwgJHthZGRyZXNzPy5jcCA/PyAnJ30gJHthZGRyZXNzPy5wcm92aW5jZSA/PyAnJ31gLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgY29udGFjdEluZm86IHtcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICBuZXdzbGV0dGVySW5mbzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVOZXdzbGV0dGVyLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVsxXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxuICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IFV0aWxzLm1hcFNvY2lhbGNvbnMoaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM2NvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBldmVudCwgZXhwZXJpZW5jZSwgbXVsdGltZWRpYSwgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIzQ29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAvLyBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAvLyBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIC8vIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNjb2xJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjJjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIyY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgcm9vbXMsIG11bHRpbWVkaWEsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyMmNvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ1NsaWRlcjJDb2wnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ1NsaWRlcjJDb2wnXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LmRlc2NyaXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2UgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjJjb2xJO1xuICAgIH1cblxuICAgIG1hcEdyaWQ1aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNWl0ZW1zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkSW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gPSBbXTtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBsZXQgaiA9IDA7XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgaSA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBqIDwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5baV0pIHtcbiAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNbaV0pO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGw/LltqXSkge1xuICAgICAgICAgICAgICAgIGlmIChqID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNzbWFsbFtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGorKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2Vzc21hbGxbMV0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA/PyBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IGNvbWJpbmVkSW1hZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDVpdGVtc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNWl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkNml0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDZpdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICB9KSkgYXMgUHVyb0dyaWQ2aXRlbXNJdGVtW10sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvQWR2YW50YWdlc1NtYWxsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogKHByb3BzLnNlcnZpY2VzQWR2YW50YWdlcyB8fCBwcm9wcz8uQWR2YW50YWdlcyk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgfHwgaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgKGl0ZW0/LmNsYXNzIHx8IGl0ZW0/Lmljb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQgfHwgaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sRmlsdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNDb2xGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCByYXdEZXN0aW5hdGlvbnM6IGFueVtdID0gKHByb3BzLmRlc3RpbmF0aW9ucyA/PyBbXSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uczogYW55W10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IE1hcChyYXdEZXN0aW5hdGlvbnMubWFwKChkOiBhbnkpID0+IFtOdW1iZXIoZC5pZCksIGRdKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByYXdJdGVtcyA9IGRlc3RpbmF0aW9ucy5mbGF0TWFwKChkZXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGVzdD8uY2hpbGRyZW4gPz8gW107XG5cbiAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXSA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IHRyPy5uYW1lID8/IGNoaWxkPy5uYW1lID8/IGNoaWxkPy5uYW1lX2lkZW50aWZpZXI7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldGl0bGUgPSBkZXN0Py5uYW1lO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gKFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkPy5ob3RlbHM/LlswXT8ubGlua3M/LlswXVxuICAgICAgICAgICAgICAgICkgPz8gW10pWzBdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaW1nQ292ZXIgPSBjaGlsZD8uaG90ZWxzPy5bMF0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nLmNvdmVyXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWdDb3Zlcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGNoaWxkPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogTnVtYmVyKGRlc3Q/LmlkID8/IGNoaWxkPy5wYXJlbnRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b24sXG4gICAgICAgICAgICAgICAgICAgIGltZyxcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZEltYWdlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zOiBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtW10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IE1hcChyYXdJdGVtcy5tYXAoKGkpID0+IFtpLmZpbHRlciwgaV0pKS52YWx1ZXMoKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkUGFyZW50SWRzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBkZXN0aW5hdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGRlc3Q6IGFueSkgPT4gdmFsaWRQYXJlbnRJZHMuaGFzKE51bWJlcihkZXN0Py5pZCkpKVxuICAgICAgICAgICAgLm1hcCgoZGVzdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IE51bWJlcihkZXN0Py5pZCksXG4gICAgICAgICAgICAgICAgbmFtZTogZGVzdD8ubmFtZSB8fCBkZXN0Py5uYW1lX2lkZW50aWZpZXIsXG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPz8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSA/PyBbXSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbEZpbHRlckk7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGV2ZW50LCBleHBlcmllbmNlLCBob3RlbHMgfSA9IHByb3BzO1xuXG4gICAgICAgIGxldCBpdGVtczogUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBsZXQgb3B0aW9uczogRHJvcGRvd25PcHRpb25bXSA9IFtdO1xuICAgICAgICBjb25zdCBleHAgPSAhIShleHBlcmllbmNlIHx8IGhvdGVscyk7XG5cbiAgICAgICAgaWYgKGV2ZW50IHx8IGV4cGVyaWVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhd0Rlc3RpbmF0aW9uczogYW55W10gPSAoZXZlbnQgPz8gZXhwZXJpZW5jZSA/PyBbXSlcbiAgICAgICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25zOiBhbnlbXSA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgbmV3IE1hcChcbiAgICAgICAgICAgICAgICAgICAgcmF3RGVzdGluYXRpb25zLm1hcCgoZDogYW55KSA9PiBbTnVtYmVyKGQuaWQpLCBkXSlcbiAgICAgICAgICAgICAgICApLnZhbHVlcygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGRlc3RpbmF0aW9ucy5tYXAoKGRlc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gZGVzdD8udGV4dHMgPz8gZGVzdD8udHJhbnNsYXRpb25zID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgdHI/LnRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/Lm5hbWUgPz9cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubmFtZV9pZGVudGlmaWVyID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/LnRyYW5zbGF0aW9ucz8udGl0bGU7XG4gICAgICAgICAgICAgICAgY29uc3QgbmRUaXRsZSA9IHRyPy5sb2NhdGlvbiA/PyBkZXN0Py50cmFuc2xhdGlvbnM/LmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBkZXN0Py5kYXRldGltZT8uc3BsaXQoJyAnKT8uWzBdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgZGVzdD8uYnV0dG9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGRlc3Q/LmxpbmtzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0SW1nID1cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubXVsdGltZWRpYT8uZmluZCgobTogYW55KSA9PiBtPy5jb3ZlcikgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoZmlyc3RJbWcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGRlc3Q/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiB0cj8ubG9jYXRpb24sIC8vIHVzYW1vcyBsb2NhdGlvbiBjb21vIGFncnVwYWRvci9maWx0cm9cbiAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcyxcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGl0ZW1zID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICBuZXcgTWFwKHJhd0l0ZW1zLm1hcCgoaSkgPT4gW2kuZmlsdGVyLCBpXSkpLnZhbHVlcygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRQYXJlbnRJZHMpLm1hcCgobG9jOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogbG9jLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvYyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzLm1hcCgoaG90ZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gaG90ZWw/LnRleHRzID8/IGhvdGVsPy50cmFuc2xhdGlvbnMgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0cj8ubmFtZSA/PyBob3RlbD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaG90ZWw/LmNpdHk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b25zID0gVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBob3RlbD8uYnV0dG9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsPy5saW5rcyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEltZyA9XG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5tdWx0aW1lZGlhPy5maW5kKChtOiBhbnkpID0+IG0/LmNvdmVyKSA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShmaXJzdEltZyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoaG90ZWw/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBob3RlbC5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckl0ZW07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRDaXRpZXMgPSBuZXcgU2V0KGl0ZW1zLm1hcCgoaSkgPT4gaS5maWx0ZXJQYXJlbnQpKTtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBBcnJheS5mcm9tKHZhbGlkQ2l0aWVzKS5tYXAoKGNpdHk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBjaXR5LFxuICAgICAgICAgICAgICAgIG5hbWU6IGNpdHksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRleHRzPy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpID8/IFtdLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBleHAsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJIb3RlbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJIb3RlbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWwubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSA/PyBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0Zvb3RlckhvdGVsc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckhvdGVsc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJMaW5rc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy50ZXh0cz8uaWNvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBtZW1iZXJUaXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclRpdGxlLFxuICAgICAgICAgICAgICAgIG1lbWJlclByZXRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyUHJldGl0bGUsXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzLmxpbmtzKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0Zvb3RlckxpbmtzSTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyQmVhY2hzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVyQmVhY2hzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucygnL3B1cm9iZWFjaCcsIGhvdGVsLmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUgPz8gaG90ZWwubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0Zvb3RlckJlYWNoc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckJlYWNoc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgeyBiYWNrZ3JvdW5kaW1hZ2UsIGltYWdlbmVzLCBzbWFsbGltYWdlIH0gPSBtdWx0aW1lZGlhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IEFycmF5KC4uLihBZHZhbnRhZ2VzIHx8IFtdKSk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpdGxlIGFzIHN0cmluZ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBzbWFsbEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoc21hbGxpbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGJhY2tncm91bmRpbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9JbmZvTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1NsaWRlcjNDb2xSb3VuZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhLCBwb3N0cyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3MgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSBpZiAocG9zdHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gcG9zdHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRyYW5zbGF0aW9ucz8uWzFdLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA/IHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW5cbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uSGlkZGVuOlxuICAgICAgICAgICAgICAgICAgICB0ZXh0cz8uZGVzY3JpcHRpb25BZGRpdGlvbmFsID8/IHRleHRzLmRlc2NyaXB0aW9uQWRpY2lvbmFsLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIHNlZUxlc3M6IHRleHRzPy5idXR0b25NZW5vc2luZm8sXG4gICAgICAgICAgICAgICAgc2VlTW9yZTogdGV4dHM/LmJ1dHRvbk1hc2luZm8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG1hcEltZ0luZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnaW1naW5mb3JpZ2h0JyB8ICdpbWdpbmZvbGVmdCdcbiAgICApOiBQdXJvSW1nSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiBuYW1lPy5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgfSBhcyBQdXJvSW1nSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1RvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VzIHx8IG11bHRpbWVkaWE/Lm11bHRpbWVkaWEgfHwgbXVsdGltZWRpYT8uaW1hZ2VuZXNcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbWFnZXNNb2JpbGUgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYS5pbWFnZW5lc21vYmlsZSB8fCBbXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFByZWNhcmdhIGRpbsOhbWljYSBkZSBsYSBwcmltZXJhIGltYWdlbiBkZWwgc2xpZGVyXG4gICAgICAgIGlmIChpbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbWFnZXNNb2JpbGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNNb2JpbGVbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzTW9iaWxlPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNNb2JpbGVbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzcG90aWZ5OiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFjdGlvbnM/Llsnc3BvdGlmeSddLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIHVybDogYWN0aW9ucz8uWydzcG9ydGlmeUxpbmsnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWRlbGl0eToge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5J10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5TGluayddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXJMaW5rJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBhY3Rpb25zPy5bJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgdmlkZW86IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1haW5UaXRsZTogdGV4dHM/Lm1haW5UaXRsZSxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGltYWdlc01vYmlsZSxcbiAgICAgICAgfSBhcyBQdXJvVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0Jhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb0Jhbm5lckl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSBhcyBQdXJvSW5mb0Jhbm5lckk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBTY2hlZHVsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NjaGVkdWxlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgQWR2YW50YWdlcyB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IEFycmF5KC4uLihBZHZhbnRhZ2VzIHx8IFtdKSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NjaGVkdWxlSXRlbVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9IGFzIFB1cm9TY2hlZHVsZUk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbmZvU2VydmljZXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW5mb1NlcnZpY2VzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIHNlcnZpY2VzU2VydmljZSwgQWR2YW50YWdlcywgbXVsdGltZWRpYSwgYnV0dG9ucyB9ID1cbiAgICAgICAgICAgIHByb3BzO1xuICAgICAgICBsZXQgaXRlbXMgPSBbXTtcbiAgICAgICAgaWYgKEFkdmFudGFnZXMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gQWR2YW50YWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSA/PyBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5kZXNjcmlwdGlvbiA/PyBpdGVtPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzcyA/PyBpdGVtPy5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2VydmljZXNJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHNlcnZpY2VzU2VydmljZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBzZXJ2aWNlc1NlcnZpY2U/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uZGVzY3JpcHRpb24gPz8gaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3MgPz8gaXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW10pLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgdmlldzogdGhpcy5nZXRWaWV3KHZpZXcpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvU2VydmljZXNJO1xuICAgIH1cblxuICAgIG1hcExpc3RHZW5lcmFsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuYW1lPzogJ2xpc3RuZXdzcmlnaHQnIHwgJ2xpc3RuZXdzbGVmdCdcbiAgICApOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG9mZmVycywgcm9vbXMsIG11bHRpbWVkaWEsIGhvdGVscywgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9MaXN0R2VuZXJhbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChvZmZlcnMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gb2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLm11bHRpbWVkaWEgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgZXF1aXBtZW50LCBtdWx0aW1lZGlhIH0gPSBpdGVtO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBlcXVpcG1lbnQ/LnNsaWNlKDAsIDMpPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBpdGVtPy5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTGlzdFJvb21zJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTGlzdFJvb21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaG90ZWw/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGhvdGVsPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoaG90ZWw/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGl0bGUgJiYgaW1nPy50aXRsZS50cmltKCkgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5kZXNjcmlwdGlvbiAmJiBpbWc/LmRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWcuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICByaWdodFNpZGU6IG5hbWU/LmluY2x1ZGVzKCdyaWdodCcpLFxuICAgICAgICB9IGFzIFB1cm9MaXN0R2VuZXJhbEk7XG4gICAgfVxuXG4gICAgbWFwTGlzdFJlc3RhdXJhbnRzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGlzdFJlc3RhdXJhbnRzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucmVzdGF1cmFudHM/Lm1hcChcbiAgICAgICAgICAgICAgICAocmVzdGF1cmFudDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHJlc3RhdXJhbnQ/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiByZXN0YXVyYW50Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcmVzdGF1cmFudD8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdMaXN0UmVzdGF1cmFudHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTGlzdFJlc3RhdXJhbnRzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0YXVyYW50Py5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4ocmVzdGF1cmFudD8ubG9nb3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiByZXN0YXVyYW50Py5sb2dvcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RSZXN0YXVyYW50c0k7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRW5naW5lSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckluOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyT3V0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXG4gICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW4pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvY2F0aW9uRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duSG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4ocHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaG90ZWw/Lm1vZGVsSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGhvdGVsPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSA/PyBbXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclRpdGxlLFxuICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbHM/LlswXSxcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmVNb2RhbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgZW5naW5lTWFwcGVkOiBQdXJvRW5naW5lSVxuICAgICk6IFB1cm9FbmdpbmVNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGVBZHZhbnRhZ2VzOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5naW5lOiBlbmdpbmVNYXBwZWQsXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbT8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0FkdmFudGFnZXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9FbmdpbmVNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogcHJvcHM/LnBhZ2VzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IFB1cm9CdXR0b25JKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFV0aWxzLnVybFZhbGlkYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcFBob3RvU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByZXZlcnNlOiBib29sZWFuXG4gICAgKTogUHVyb1Bob3RvU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZXZlcnNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJhbm5lcjRDb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXI0Q29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMubXVsdGltZWRpYS5pbWFnZWJpZz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHMubXVsdGltZWRpYS5pbWFnZW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXMuc2xpY2UoMSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdLFxuXG4gICAgICAgICAgICBiaWdiYW5uZXI6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZWJpZz8uWzBdXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcy5tdWx0aW1lZGlhLmltYWdlYmlnWzBdKVxuICAgICAgICAgICAgICAgIDogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYS5pbWFnZW5lc1swXSlcbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYmlndGl0bGU6ICcnLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVyNENvbEk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEZvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvQ29udGFjdEZvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNMaW5rcyxcbiAgICAgICAgICAgIHByb21vdGlvbnM6IHByb3BzPy50ZXh0cz8ucHJvbW90aW9ucyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmREcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnN1bHR0eXBlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IHByb3A/LmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dE5hbWU6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXRTdXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LnN1cm5hbWVzKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvQ29udGFjdEZvcm1JO1xuICAgIH1cblxuICAgIG1hcEluZm9TbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCwgcmV2ZXJzZTogYm9vbGVhbik6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgbXVsdGltZWRpYSwgZXhwZXJpZW5jZSwgdGV4dHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9JbmZvU2xpZGVySXRlbVtdID0gW107XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWcuc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGV4cDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHA/Lm11bHRpbWVkaWE/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGV4cD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGV4cD8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGV4cD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmV0aXRsZTogZXhwLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIHJldmVyc2U6IHJldmVyc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChvZmZlcjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvZmZlci5tdWx0aW1lZGlhWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb09mZmVyXG4gICAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcFRoYW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1RoYW5rc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb1RoYW5rc0k7XG4gICAgfVxuXG4gICAgbWFwNDA0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvNDA0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9wcz8uYWRkcmVzcz8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogYCR7YWRkcmVzcy5hZGRyZXNzfTwvYnI+JHthZGRyZXNzLmNpdHl9LCAke2FkZHJlc3MuY3B9ICR7YWRkcmVzcy5wcm92aW5jZX1gLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucz8uWzFdKVswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LkNvbnRhY3Q/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zPy5bMl0pWzBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvNDA0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBtb3JlaW5mbzogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zLnJldmVyc2UoKSksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uZXF1aXBtZW50Py5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2NoZWR1bGVJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0dhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcEluZm9UYWJsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9UYWJsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICAvL1RPRE86IHBlbmRpZW50ZSBwcm9wc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRhYmxlSXRlbXM6IHByb3BzPy50YWJsZT8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGl0ZW0uY29sdW1ucz8ubWFwKChjb2w6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjb2wudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBjb2wuaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1RhYmxlSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhYmxlSGVhZGVyczogcHJvcHM/LnRhYmxlPy5oZWFkZXJzLFxuICAgICAgICAgICAgaW5mb0l0ZW1zOiBwcm9wcz8uaW5mb0l0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9JbmZvVGFibGVJO1xuICAgIH1cblxuICAgIG1hcEluZm8yQ29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mbzJDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmxpbmspLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvMkNvbEk7XG4gICAgfVxuXG4gICAgbWFwU3VibWVudShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01lbnVJIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBwcm9wcz8uaXRlbXM/LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICAgIGxldCBzaXRlVXJsID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnNpdGVJZCgpID09PSAyKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvaG90ZWxzJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNpdGVJZCgpID09PSAzKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvYmVhY2gnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1Ym1lbnUgPSB7XG4gICAgICAgICAgICAvLyBob3RlbDogcHJvcHM/LmhvdGVsLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHNpdGVVcmwgKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogbGluaz8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6IGxpbms/Lm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TdWJtZW51TW9iaWxlSXRlbUlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlICYmICFpdGVtLm1vYmlsZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBzaXRlVXJsICsgbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdGVkPy5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogc2VsZWN0ZWQ/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0J1dHRvbkksXG4gICAgICAgICAgICBib3R0b21MaW5rczogcHJvcHM/Lml0ZW1zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5tb2JpbGUpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc2l0ZVVybCArIGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TdWJtZW51TW9iaWxlSXRlbUlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9NZW51STtcblxuICAgICAgICByZXR1cm4gc3VibWVudSBhcyBQdXJvTWVudUk7XG4gICAgfVxuXG4gICAgbWFwTGlzdEF3YXJkcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xpc3RBd2FyZHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1bMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0QXdhcmRzSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RBd2FyZHNJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNDYXJkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyM0NhcmRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDYXJkSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDYXJkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTmV3c2xldHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm1haWxFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYW5nOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubGFuZ3VhZ2VQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubGFuZ3VhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsYW5nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBsYW5nPy5pZCwgbmFtZTogbGFuZz8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvdW50cnlQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY291bnRyaWVzXG4gICAgICAgICAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50cnk6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjb3VudHJ5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY291bnRyeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNlbnRlclBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGNlbnRlcjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjZW50ZXI/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNlbnRlcj8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzaWRlbnQ6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5yZXNpZGVudFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb3VudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY291bnRyeTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGNvdW50cnk/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb3VudHJ5Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTmV3c2xldHRlckk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwQmFubmVySW5mbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lckluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJJbmZvSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBCYW5uZXJJbmZvMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lckluZm8ySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJJbmZvMkk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5mb0RldGFpbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICB9IGFzIFB1cm9JbmZvRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5mb0RldGFpbHNDb2xzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0luZm9EZXRhaWxzM0NvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb0RldGFpbEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9JbmZvRGV0YWlsczNDb2xJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcEZhcXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvRGV0YWlsczNDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uY29udGVudCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvRmFxc0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwTXVzaWNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9NdXNpY1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGF1ZGlvOiBpdGVtLmF1ZGlvLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5pbWFnZSksXG4gICAgICAgICAgICAgICAgZGF0ZTogaXRlbS5kYXRlLFxuICAgICAgICAgICAgICAgIGhlYWRpbmc6IGl0ZW0uaGVhZGluZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRpbmc6IGl0ZW0udGV4dD8uaGVhZGluZyxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dD8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvTXVzaWNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcENhcnRhKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQ2FydGFJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlY3Rpb25zOiBwcm9wcz8uTWVudT8uWzBdPy5jaGlsZHJlbnM/Lm1hcCgoc2VjdGlvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBzZWN0aW9uPy5tZW51Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByaWNlLFxuICAgICAgICAgICAgICAgICAgICBpY29uczogaXRlbS5pY29ucz8ubWFwKChpY29uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgKGljb24/LmNsYXNzIHx8IGljb24/Lmljb24pLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvQ2FydGFJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjRJdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjRJdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXI0SXRlbXNJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcER1YWxMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRHVhbExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgLy8gcHJldGl0bGU6XG4gICAgICAgICAgICAvLyAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAvLyAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgLy8gICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAvLyB0aXRsZTpcbiAgICAgICAgICAgIC8vICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgIC8vICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAvLyAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIC8vIHRhZ3M6IHtcbiAgICAgICAgICAgIC8vICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgLy8gICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgLy8gdGV4dENvbG9yczoge1xuICAgICAgICAgICAgLy8gICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgLy8gICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaXN0czogcHJvcHM/Lml0ZW1zPy5tYXAoKGxpc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogbGlzdC5pdGVtcyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvRHVhbExpc3RJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcFByb2plY3RzRm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9Qcm9qZWN0c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgeWRUaXRsZTogcHJvcHM/LnRleHRzPy55ZFRpdGxlLFxuICAgICAgICAgICAgYWlUaXRsZTogcHJvcHM/LnRleHRzPy5haVRpdGxlLFxuICAgICAgICAgICAgaWNUaXRsZTogcHJvcHM/LnRleHRzPy5pY1RpdGxlLFxuICAgICAgICAgICAgZFRpdGxlOiBwcm9wcz8udGV4dHM/LmRUaXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc0xpbmtzLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIHdoeVRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRXaHlNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0V2h5TWVzc2FnZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnd2h5TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2FUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0V2FNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0V2FNZXNzYWdlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd3YU1lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBwVGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBQTWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBQTWVzc2FnZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAncHBNZXNzYWdlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBucERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubnBEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnBEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmJwRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YkRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGJEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5wb0Ryb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmVtRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYnBEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmhicERyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LnByZWZpeGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogQXJyYXkocHJvcHM/LnByZWZpeGVzKS5pbmRleE9mKHByZWZpeCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZHJlc3NJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5hZGRyZXNzSW5wdXQpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yQWRkcmVzcyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaXplSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zaXplSW5wdXQsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LnNpemVJbnB1dCksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JTaXplLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE5hbWUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uc3VybmFtZXMpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JOYW1lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybUVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWF0ZXJpYWxzSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRNYXRlcmlhbHMpLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNYXRlcmlhbHMsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uaW5wdXRNYXRlcmlhbHMsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9Qcm9qZWN0c0Zvcm1JO1xuICAgIH1cblxuICAgIG1hcEZhcXNJbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvRmFxc0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIEl0ZW1zLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGltZ3M6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXMpLFxuICAgICAgICAgICAgaXRlbXM6IEl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLnRleHQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBhcHBsaWNhdGlvbkJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zPy5bMF0pWzBdLFxuICAgICAgICAgICAgdmlldzogdGhpcy5nZXRWaWV3KHZpZXcpLFxuICAgICAgICAgICAgY29udGFjdEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zPy5bMV0pWzFdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0ZhcXNJbWdJO1xuICAgIH1cblxuICAgIG1hcEJsb2dMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmxvZ0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHBvc3RzID0gcHJvcHM/LnBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUgPz8gcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgcG9zdD8udGV4dHM/LnN1YnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgIHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocG9zdD8ubXVsdGltZWRpYT8uWzBdKSA/PyB7XG4gICAgICAgICAgICAgICAgc3JjOiAnaHR0cHM6Ly9wdXJvLWFwaS1kZXYuYi1jZG4ubmV0L211bHRpbWVkaWEvaW1hZ2VzL3RodW1ibmFpbHMvMTI4MC8yMDNDYXB0dXJhLTIwZGUtMjBwYW50YWxsYS0yMDIwMTctMDQtMjQtMjBhLTIwbGFzLTIwMTktNDUtNTYtcG5nLndlYnAnLFxuICAgICAgICAgICAgICAgIGFsdDogcG9zdD8udGV4dHM/LnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogbmV3IERhdGUocG9zdC5jcmVhdGVkQXQpLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgcG9zdHMgPSBwb3N0cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiBiLmRhdGUgLSBhLmRhdGU7IC8vIGFtYm9zIGNvbiBmZWNoYVxuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiAhYi5kYXRlKSByZXR1cm4gLTE7IC8vIGEgdGllbmUgZmVjaGEsIGIgbm9cbiAgICAgICAgICAgIGlmICghYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIDE7IC8vIGIgdGllbmUgZmVjaGEsIGEgbm9cbiAgICAgICAgICAgIHJldHVybiAwOyAvLyBuaW5ndW5vIHRpZW5lIGZlY2hhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE9idGVuZXIgbG9zIDQgcG9zdHMgbcOhcyByZWNpZW50ZXNcbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHMgPSBwb3N0cz8uc2xpY2UoMCwgNCk7XG5cbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IEFycmF5LmlzQXJyYXkocHJvcHM/LnBvc3RDYXRlZ29yaWVzKVxuICAgICAgICAgICAgPyBwcm9wcy5wb3N0Q2F0ZWdvcmllc1xuICAgICAgICAgICAgOiBPYmplY3QudmFsdWVzKHByb3BzPy5wb3N0Q2F0ZWdvcmllcyB8fCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG5vdGZvdW5kVGV4dDogcHJvcHM/LnRleHRzPy5zZWFyY2hOb3RGb3VuZCxcbiAgICAgICAgICAgIHBvc3RzOiBwb3N0cyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6XG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbFBvc3RzLFxuICAgICAgICAgICAgICAgIH0pKSA/PyBbXSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ1Bvc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CbG9nRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zdElkID0gcHJvcHM/LnBvc3Q/LmlkO1xuICAgICAgICBjb25zdCBwb3N0cyA9IHByb3BzPy5yZWxhdGVkUG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAocG9zdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChwOiBhbnkpID0+IHA/LmlkICE9PSBjdXJyZW50UG9zdElkXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlbGF0ZWRQb3N0c0NvbnN0ID1cbiAgICAgICAgICAgIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwOiBhbnkpID0+IHA/LmRhdGUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYi5kYXRlIGFzIGFueSkgLSAoYS5kYXRlIGFzIGFueSkpXG4gICAgICAgICAgICAgICAgLnNsaWNlKDAsIDQpIHx8IFtdO1xuICAgICAgICBpZiAocmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgY29uc3Qgd2l0aG91dERhdGUgPSBjYW5kaWRhdGVzLmZpbHRlcigocDogYW55KSA9PiAhcD8uZGF0ZSk7XG4gICAgICAgICAgICByZWxhdGVkUG9zdHNDb25zdCA9IHJlbGF0ZWRQb3N0c0NvbnN0LmNvbmNhdChcbiAgICAgICAgICAgICAgICB3aXRob3V0RGF0ZS5zbGljZSgwLCA0IC0gcmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBBcnJheS5pc0FycmF5KHByb3BzPy5wb3N0Q2F0ZWdvcmllcylcbiAgICAgICAgICAgID8gcHJvcHMucG9zdENhdGVnb3JpZXNcbiAgICAgICAgICAgIDogT2JqZWN0LnZhbHVlcyhwcm9wcz8ucG9zdENhdGVnb3JpZXMgfHwge30pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5wb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgIGRhdGU6IHByb3BzPy5wb3N0Py5kYXRlID8gbmV3IERhdGUocHJvcHM/LnBvc3Q/LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHByb3BzPy5wb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbF9wb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQmxvZ0RldGFpbHNJO1xuICAgIH1cbiAgICBcbiAgICBtYXBCYW5uZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CYW5uZXJTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvQmFubmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwTW9kYWxPcHRpb25zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTW9kYWxPcHRpb25zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lml0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmxpbmtzKVswXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb01vZGFsT3B0aW9uc0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5uZXJDb250ZW50KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5uZXJDb250ZW50SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LmNvbnRlbnQsXG4gICAgICAgIH0gYXMgUHVyb0lubmVyQ29udGVudEk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwVGltZWxpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9UaW1lbGluZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgeWVhcjogaXRlbS55ZWFyLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvVGltZWxpbmVJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcEhlYWRJbnRybyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0hlYWRJbnRyb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZEludHJvSTtcbiAgICB9XG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwQ2FyZWVyc0Zvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvQ2FyZWVyc0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHlkVGl0bGU6IHByb3BzPy50ZXh0cz8ueWRUaXRsZSxcbiAgICAgICAgICAgIG9kVGl0bGU6IHByb3BzPy50ZXh0cz8ub2RUaXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc0xpbmtzLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIHd3VGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy53d1RleHRhcmVhLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lnd3VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3d3VGV4dGFyZWEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdsRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy53bERyb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3cERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ud3BEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFvRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hb0Ryb3Bkb3duLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2xhbmdEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LndsYW5nRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoZERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaGREcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5wcmVmaXhlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IEFycmF5KHByb3BzPy5wcmVmaXhlcykuaW5kZXhPZihwcmVmaXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VybmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LnN1cm5hbWVzKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1FbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbGVzSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCksXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHM/LnRleHRzPy5maWxlc0lucHV0LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3ZJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5jdklucHV0KSxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcz8udGV4dHM/LmN2SW5wdXQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uY3ZJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCBhcyBGaWxlIHwgRmlsZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0NhcmVlcnNGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBFdmVudHNGb3JtKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRXZlbnRzRm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwcmVmaXhWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHByb3BzPy5wcmVmaXhlcyB8fCB7fSkgYXMgc3RyaW5nW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2lUaXRsZTogcHJvcHM/LnRleHRzPy5jaXRpdGxlLFxuICAgICAgICAgICAgZFRpdGxlOiBwcm9wcz8udGV4dHM/LmR0aXRsZSxcbiAgICAgICAgICAgIGhvd1RpdGxlOiBwcm9wcz8udGV4dHM/Lmhvd1RpdGxlLFxuICAgICAgICAgICAgb3RoZXJzOiBwcm9wcz8udGV4dHM/Lm90aGVycyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnNMaW5rOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnNsaW5rLFxuICAgICAgICAgICAgcmVxdWlyZWRMYWJlbDogcHJvcHM/LnRleHRzPy5yZXF1aXJlZExhYmVsLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgc2VlQWxsQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVsxXSxcbiAgICAgICAgICAgIGhvd1RleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaG93VGl0bGUsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaG93VGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ2hvd01lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZm9UZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmluZm9UaXRsZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbmZvVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ2luZm9NZXNzYWdlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZURyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubmVEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubmF0dXJlPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3RoZXJzRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5vdGhlcnNEcm9wZG93bixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG93SGVhcmRVcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByZWZpeFZhbHVlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuc2FuaXRpemUocHJvcHM/LnRleHRzPy5uYW1lVGl0bGUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5hbWVUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5hbWVFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuc2FuaXRpemUocHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc3VybmFtZXNFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnNhbml0aXplKHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lbWFpbEVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnNhbml0aXplKHByb3BzPy50ZXh0cz8uY29tcGFueVRpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5jb21wYW55VGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5jb21wYW55RXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5zYW5pdGl6ZShwcm9wcz8udGV4dHM/LnBob25lVGl0bGUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LnBob25lRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbnBJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuc2FuaXRpemUocHJvcHM/LnRleHRzPy5ucFRpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5ucFRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubnBFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRlSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLnNhbml0aXplKHByb3BzPy50ZXh0cz8uZGF0ZVRpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kYXRlVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5kYXRlRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc0hvdXJJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuc2FuaXRpemUocHJvcHM/LnRleHRzPy5zSG91clRpdGxlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zSG91clRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc0hvdXJFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmSG91cklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5zYW5pdGl6ZShwcm9wcz8udGV4dHM/LmZIb3VyVGl0bGUpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmZIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5mSG91ckVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvRXZlbnRzRm9ybUk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwTW9kYWxJbmZvKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByZXZlcnNlOiBib29sZWFuXG4gICAgKTogUHVyb01vZGFsSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgZXh0cmFEZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5leHRyYURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICAgICAgcmV2ZXJzZSxcbiAgICAgICAgfSBhcyBQdXJvTW9kYWxJbmZvSTtcbiAgICB9XG5cbiAgICBtYXBJZnJhbWUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JZnJhbWVJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZyYW1lVXJsOiBwcm9wcz8udGV4dHM/LmZyYW1lVXJsLFxuICAgICAgICB9IGFzIFB1cm9JZnJhbWVJO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB9O1xuICAgIGNvdmVyOiBudW1iZXI7XG4gICAgdGFncz86IGFueVtdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIG5kVGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2VQYXRoIHtcbiAgICBvcmlnaW5hbDogc3RyaW5nO1xuICAgIHdlYnA6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRzQWRkb25zIHtcbiAgICBjb25zdWx0VHlwZT86IENvbnN1bHRUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlck9wdGlvbiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IEZpbHRlck9wdGlvbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3VsdFR5cGUge1xuICAgIGNvbnN1bHRUeXBlSWQ/OiBudW1iZXI7XG4gICAgSWQ/OiBudW1iZXI7XG4gICAgbGFuZ3VhZ2VJZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xufVxuIl19
|