verben-ng-ui 0.5.0 → 0.5.2
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.
|
@@ -27,7 +27,7 @@ export class DropDownItemComponent {
|
|
|
27
27
|
ngOnInit() { }
|
|
28
28
|
isEqual(value, other) {
|
|
29
29
|
return this.selectKey
|
|
30
|
-
? isEqual(value[this.selectKey], other[this.selectKey])
|
|
30
|
+
? isEqual((value && value[this.selectKey]) || null, other[this.selectKey])
|
|
31
31
|
: isEqual(value, other);
|
|
32
32
|
}
|
|
33
33
|
isSelected(value, other) {
|
|
@@ -102,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
102
102
|
}], onSelect: [{
|
|
103
103
|
type: Input
|
|
104
104
|
}] } });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLDJEQUEyRDtBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFTL0QsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixZQUFZLEdBQTRCLElBQUksQ0FBQyxDQUFDLHNDQUFzQztJQUNwRixhQUFhLEdBQTRCLElBQUksQ0FBQztJQUU5QyxVQUFVLENBQU87SUFDakIsV0FBVyxDQUFPO0lBQ2xCLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQ2hDLFdBQVcsQ0FBVTtJQUNyQixXQUFXLENBQVU7SUFDckIsY0FBYyxDQUFVO0lBQ3hCLGVBQWUsQ0FBVTtJQUN6QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUN2QixRQUFRLENBR0U7SUFDVixVQUFVLENBQW9EO0lBQzlE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RyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL1RlbXBsYXRlRGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVJdGVtV3JhcHBlciB9IGZyb20gJy4uL2Ryb3AtZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyBpbXBvcnQgeyBTdmdNb2R1bGUgfSBmcm9tICd2ZXJiZW4tbmctdWkvc3JjL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9zdmcvc3ZnLm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ryb3AtZG93bi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFN2Z01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wLWRvd24taXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcm9wLWRvd24taXRlbS5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcERvd25JdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7IC8vIEFsbG93IG51bGwgZm9yIGN1c3RvbSBpdGVtIHRlbXBsYXRlXG4gIEBJbnB1dCgpIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKSBhY3RpdmVJdGVtPzogYW55O1xuICBASW5wdXQoKSBhY3RpdmVJdGVtcz86IGFueTtcbiAgQElucHV0KCkgc2VsZWN0S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25TdWJMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgbG9hZE1vcmVDYXB0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvbkV4cGFuZD86IChcbiAgICBpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcixcbiAgICBzaWJsaW5nczogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXVxuICApID0+IFByb21pc2U8dm9pZD47XG4gIEBJbnB1dCgpIG9uTG9hZE1vcmU/OiAoaXRlbTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXIpID0+IFByb21pc2U8dm9pZD47XG4gIEBJbnB1dCgpIG9uU2VsZWN0PzogKHZhbHVlOiBhbnksIGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBpc0VxdWFsKHZhbHVlOiBhbnksIG90aGVyOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RLZXlcbiAgICAgID8gaXNFcXVhbCh2YWx1ZVt0aGlzLnNlbGVjdEtleV0sIG90aGVyW3RoaXMuc2VsZWN0S2V5XSlcbiAgICAgIDogaXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCh2YWx1ZTogYW55W10sIG90aGVyOiBhbnkpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCB2YWwgb2YgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5Q2hlY2sgPSB0aGlzLnNlbGVjdEtleVxuICAgICAgICA/IGlzRXF1YWwodmFsW3RoaXMuc2VsZWN0S2V5XSwgb3RoZXJbdGhpcy5zZWxlY3RLZXldKVxuICAgICAgICA6IGlzRXF1YWwodmFsLCBvdGhlcik7XG4gICAgICBpZiAoZXF1YWxpdHlDaGVjaykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0VmFsdWUoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZSA6IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZVt0aGlzLm9wdGlvblZhbHVlXSA6IGl0ZW1bdGhpcy5vcHRpb25WYWx1ZV07XG4gIH1cblxuICBnZXRPcHRpb25MYWJlbChpdGVtOiBhbnkpOiBhbnkge1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICByZXR1cm4gaXRlbS5sYWJlbDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm9wdGlvbkxhYmVsKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiBpdGVtW3RoaXMub3B0aW9uTGFiZWxdO1xuICB9XG5cbiAgZ2V0T3B0aW9uU3ViTGFiZWwoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgcmV0dXJuIGl0ZW0uc3ViTGFiZWw7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25TdWJMYWJlbCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLm9wdGlvblN1YkxhYmVsXTtcbiAgfVxufVxuIiwiPCEtLSBJZiBncm91cCBtb2RlIGlzIGZhbHNlLCBkaXNwbGF5IGEgZmxhdCBsaXN0IC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cFwiPlxuXG4gIDxkaXYgY2xhc3M9XCJvcHRpb24taXRlbXMtY29udGFpbmVyIGZsZXggZmxleC1jb2xcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEl0ZW1cIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlLWl0ZW0nOiBpc0VxdWFsKHRoaXMuYWN0aXZlSXRlbSwgdGhpcy5nZXRWYWx1ZShpdGVtKSl9XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QgJiYgb25TZWxlY3QoaXRlbSwgJGV2ZW50KVwiIGNsYXNzPVwiaXRlbS13cmFwcGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J211bHRpLXNlbGVjdC1hY3RpdmUtaXRlbSc6IGlzU2VsZWN0ZWQodGhpcy5hY3RpdmVJdGVtcywgdGhpcy5nZXRWYWx1ZShpdGVtKSl9XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QgJiYgb25TZWxlY3QoaXRlbSwgJGV2ZW50KVwiIGNsYXNzPVwiaXRlbS13cmFwcGVyIG11bHRpLXNlbGVjdCBmbGV4XCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQodGhpcy5hY3RpdmVJdGVtcywgdGhpcy5nZXRWYWx1ZShpdGVtKSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tY2hlY2tib3hcIiAvPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlLWl0ZW0nOiBpc0VxdWFsKHRoaXMuYWN0aXZlSXRlbSwgdGhpcy5nZXRWYWx1ZShpdGVtKSl9XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QgJiYgb25TZWxlY3QoaXRlbSwgJGV2ZW50KVwiIGNsYXNzPVwiZGVmYXVsdC1pdGVtIGl0ZW0td3JhcHBlciBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2hhcy1zdWItbGFiZWwnOiBvcHRpb25TdWJMYWJlbH1cIiBjbGFzcz1cIml0ZW0tbGFiZWxcIj57e3RoaXMuZ2V0T3B0aW9uTGFiZWwoaXRlbSl9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25TdWJMYWJlbCB8fCAoZ3JvdXAgJiYgaXRlbS5zdWJMYWJlbClcIiBjbGFzcz1cIml0ZW0tc3ViLWxhYmVsXCI+XG4gICAgICAgICAgICB7e3RoaXMuZ2V0T3B0aW9uU3ViTGFiZWwoaXRlbSl9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J211bHRpLXNlbGVjdC1hY3RpdmUtaXRlbSc6IGlzU2VsZWN0ZWQodGhpcy5hY3RpdmVJdGVtcywgdGhpcy5nZXRWYWx1ZShpdGVtKSl9XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QgJiYgb25TZWxlY3QoaXRlbSwgJGV2ZW50KVwiIGNsYXNzPVwiZGVmYXVsdC1pdGVtIGl0ZW0td3JhcHBlciBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHRoaXMuYWN0aXZlSXRlbXMsIHRoaXMuZ2V0VmFsdWUoaXRlbSkpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2hhcy1zdWItbGFiZWwnOiBvcHRpb25TdWJMYWJlbH1cIiBjbGFzcz1cIml0ZW0tbGFiZWxcIj57e3RoaXMuZ2V0T3B0aW9uTGFiZWwoaXRlbSl9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvblN1YkxhYmVsIHx8IChncm91cCAmJiBpdGVtLnN1YkxhYmVsKVwiIGNsYXNzPVwiaXRlbS1zdWItbGFiZWxcIj5cbiAgICAgICAgICAgICAge3t0aGlzLmdldE9wdGlvblN1YkxhYmVsKGl0ZW0pfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIElmIGdyb3VwIG1vZGUgaXMgdHJ1ZSwgZGlzcGxheSBncm91cHMgYW5kIHN1Yi1ncm91cHMgcmVjdXJzaXZlbHkgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cIm9wdGlvbi1pdGVtcy1jb250YWluZXIgZmxleCBmbGV4LWNvbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uc1wiPlxuICAgICAgPCEtLSBEaXNwbGF5IGFzIGdyb3VwIGhlYWRlciBpZiB0aGUgaXRlbSBoYXMgY2hpbGRyZW4gLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWl0ZW0uaXRlbXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0SXRlbVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1pdGVtJzogaXNFcXVhbCh0aGlzLmFjdGl2ZUl0ZW0sIHRoaXMuZ2V0VmFsdWUoaXRlbSkpfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QgJiYgb25TZWxlY3QoaXRlbSwgJGV2ZW50KVwiIGNsYXNzPVwiaXRlbS13cmFwcGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbXVsdGktc2VsZWN0LWFjdGl2ZS1pdGVtJzogaXNTZWxlY3RlZCh0aGlzLmFjdGl2ZUl0ZW1zLCB0aGlzLmdldFZhbHVlKGl0ZW0pKX1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ICYmIG9uU2VsZWN0KGl0ZW0sICRldmVudClcIiBjbGFzcz1cIml0ZW0td3JhcHBlciBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQodGhpcy5hY3RpdmVJdGVtcywgdGhpcy5nZXRWYWx1ZShpdGVtKSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiIC8+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlLWl0ZW0nOiBpc0VxdWFsKHRoaXMuYWN0aXZlSXRlbSwgdGhpcy5nZXRWYWx1ZShpdGVtKSl9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdCAmJiBvblNlbGVjdChpdGVtLCAkZXZlbnQpXCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gaXRlbS13cmFwcGVyIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydoYXMtc3ViLWxhYmVsJzogaXRlbS5zdWJMYWJlbH1cIiBjbGFzcz1cIml0ZW0tbGFiZWxcIj57e2l0ZW0ubGFiZWx9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uc3ViTGFiZWxcIiBjbGFzcz1cIml0ZW0tc3ViLWxhYmVsXCI+e3tpdGVtLnN1YkxhYmVsfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtdWx0aS1zZWxlY3QtYWN0aXZlLWl0ZW0nOiBpc1NlbGVjdGVkKHRoaXMuYWN0aXZlSXRlbXMsIHRoaXMuZ2V0VmFsdWUoaXRlbSkpfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QgJiYgb25TZWxlY3QoaXRlbSwgJGV2ZW50KVwiIGNsYXNzPVwiZGVmYXVsdC1pdGVtIGl0ZW0td3JhcHBlciBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQodGhpcy5hY3RpdmVJdGVtcywgdGhpcy5nZXRWYWx1ZShpdGVtKSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaGFzLXN1Yi1sYWJlbCc6IGl0ZW0uc3ViTGFiZWx9XCIgY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3tpdGVtLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uc3ViTGFiZWxcIiBjbGFzcz1cIml0ZW0tc3ViLWxhYmVsXCI+e3tpdGVtLnN1YkxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRGlzcGxheSBhcyBub3JtYWwgaXRlbSBpZiBpdCBkb2Vzbid0IGhhdmUgY2hpbGRyZW4gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiICpuZ0lmPVwiaXRlbS5pdGVtc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0R3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAtd3JhcHBlclwiIChjbGljayk9XCJvbkV4cGFuZCAmJiBvbkV4cGFuZChpdGVtLCBvcHRpb25zKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R3JvdXA+XG4gICAgICAgICAgPGRpdiAoY2xpY2spPVwib25FeHBhbmQgJiYgb25FeHBhbmQoaXRlbSwgb3B0aW9ucylcIiBjbGFzcz1cImRlZmF1bHQtZ3JvdXAgZ3JvdXAtd3JhcHBlciBmbGV4XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJwbHVzXCIgZmlsbD1cIiM1ZDY2NzRcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICA8IS0tIDxzdmcgY2xhc3M9XCJwbHVzLW1pbnVzLWljb25cIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZD1cIk01LjMzMjE0IDYuNjY1NzhINS4yNjEwMkMzLjk1ODU4IDYuNjY1NzggMi42NTYxNCA2LjY2NjMgMS4zNTM3MSA2LjY2NTQ0QzEuMDY1MjggNi42NjUyNyAwLjg1MDU1MyA2LjUzNTcxIDAuNzI4MTkyIDYuMjczNjlDMC41MjUxMTUgNS44Mzg1OSAwLjg0NDM4MyA1LjMzNzM0IDEuMzI0OTEgNS4zMzMyMkMxLjY0NjI0IDUuMzMwMzEgMS45Njc1NiA1LjMzMjcxIDIuMjg4ODkgNS4zMzI3MUMzLjI4Mjg1IDUuMzMyNzEgNC4yNzY4MiA1LjMzMjcxIDUuMjcwNzkgNS4zMzI3MUg1LjMzMjE0VjUuMjc2MzNDNS4zMzIxNCAzLjk2Njc0IDUuMzMyMTQgMi42NTcxNCA1LjMzMjE0IDEuMzQ3NTVDNS4zMzIxNCAxLjAzMDg2IDUuNTMxNjIgMC43Njc0NzIgNS44Mjk5OCAwLjY4ODY0M0M2LjI1NTE1IDAuNTc2MjI1IDYuNjY1NzcgMC44OTY1MTIgNi42NjY0NSAxLjM0MzI3QzYuNjY3NDggMS45NjMxMSA2LjY2Njc5IDIuNTgyOTQgNi42NjY3OSAzLjIwMjc4QzYuNjY2NzkgMy44OTI1NCA2LjY2Njc5IDQuNTgyMjkgNi42NjY3OSA1LjI3MjIyVjUuMzMzMDVINi43MjQyQzguMDMyMyA1LjMzMzA1IDkuMzQwNTYgNS4zMzMwNSAxMC42NDg3IDUuMzMzMDVDMTAuOTMzIDUuMzMzMDUgMTEuMTczNyA1LjQ4ODQ4IDExLjI3ODggNS43MzkwMkMxMS40NjU5IDYuMTg1MjcgMTEuMTQzMSA2LjY2NDc1IDEwLjY1MzMgNi42NjU5NUMxMC4xNTQ5IDYuNjY2OTggOS42NTY0IDYuNjY2MTIgOS4xNTgwNSA2LjY2NjEyQzguMzQ5NjggNi42NjYxMiA3LjU0MTQ4IDYuNjY2MTIgNi43MzMxMSA2LjY2NjEySDYuNjY2NzlWNi43MjcxM0M2LjY2Njc5IDguMDM1MzUgNi42NjY3OSA5LjM0MzU3IDYuNjY2NzkgMTAuNjUxNkM2LjY2Njc5IDEwLjk4MDggNi40NTM0MyAxMS4yNDc1IDYuMTM0ODUgMTEuMzE3N0M1Ljc1OTg5IDExLjQwMDMgNS4zODI1MiAxMS4xMzA5IDUuMzM4OTkgMTAuNzQ5QzUuMzM0NzEgMTAuNzEwNyA1LjMzMjMxIDEwLjY3MjIgNS4zMzIzMSAxMC42MzM2QzUuMzMxOTcgOS4zMzEyMyA1LjMzMTk3IDguMDI4NjcgNS4zMzE5NyA2LjcyNjI3VjYuNjY2MTJMNS4zMzIxNCA2LjY2NTc4WlwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJtaW51c1wiIGZpbGw9XCIjNWQ2Njc0XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIyXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICA8IS0tIDxzdmcgY2xhc3M9XCJwbHVzLW1pbnVzLWljb25cIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMlwiIHZpZXdCb3g9XCIwIDAgMTAgMlwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wLjMzMzk4NCAwLjMzMjAzMUg5LjY2NzMyVjEuNjY1MzZIMC4zMzM5ODRWMC4zMzIwMzFaXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaGFzLXN1Yi1sYWJlbCc6IGl0ZW0uc3ViTGFiZWx9XCIgY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3tpdGVtLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uc3ViTGFiZWxcIiBjbGFzcz1cIml0ZW0tc3ViLWxhYmVsXCI+e3tpdGVtLnN1YkxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8IS0tIFJlY3Vyc2l2ZSByZW5kZXJpbmcgb2Ygc3ViLWl0ZW1zIChncm91cHMgb3IgaW5kaXZpZHVhbCBpdGVtcykgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmV4cGFuZGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLXdyYXBwZXItaXRlbXMgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGRyb3AtZG93bi1pdGVtIFtpdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlXCIgW2dyb3VwVGVtcGxhdGVdPVwiZ3JvdXBUZW1wbGF0ZVwiIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICBbYWN0aXZlSXRlbXNdPVwiYWN0aXZlSXRlbXNcIiBbbXVsdGlzZWxlY3RdPVwibXVsdGlzZWxlY3RcIiBbb3B0aW9uVmFsdWVdPVwib3B0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwib3B0aW9uTGFiZWxcIiBbb3B0aW9uU3ViTGFiZWxdPVwib3B0aW9uU3ViTGFiZWxcIiBbbG9hZE1vcmVDYXB0aW9uXT1cImxvYWRNb3JlQ2FwdGlvblwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cIml0ZW0uaXRlbXNcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbb25FeHBhbmRdPVwib25FeHBhbmRcIiBbb25Mb2FkTW9yZV09XCJvbkxvYWRNb3JlXCJcbiAgICAgICAgICAgICAgW29uU2VsZWN0XT1cIm9uU2VsZWN0XCI+PC9kcm9wLWRvd24taXRlbT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmxhenlMb2FkXCIgY2xhc3M9XCJzZWUtbW9yZS1jb250YWluZXIgZmxleFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlZS1tb3JlLWNhcHRpb25cIiAoY2xpY2spPVwib25Mb2FkTW9yZSAmJiBvbkxvYWRNb3JlKGl0ZW0pXCI+e3tsb2FkTW9yZUNhcHRpb259fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNMb2FkaW5nXCIgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLDJEQUEyRDtBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFTL0QsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixZQUFZLEdBQTRCLElBQUksQ0FBQyxDQUFDLHNDQUFzQztJQUNwRixhQUFhLEdBQTRCLElBQUksQ0FBQztJQUU5QyxVQUFVLENBQU87SUFDakIsV0FBVyxDQUFPO0lBQ2xCLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQ2hDLFdBQVcsQ0FBVTtJQUNyQixXQUFXLENBQVU7SUFDckIsY0FBYyxDQUFVO0lBQ3hCLGVBQWUsQ0FBVTtJQUN6QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUN2QixRQUFRLENBR0U7SUFDVixVQUFVLENBQW9EO0lBQzlE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QUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL1RlbXBsYXRlRGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVJdGVtV3JhcHBlciB9IGZyb20gJy4uL2Ryb3AtZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyBpbXBvcnQgeyBTdmdNb2R1bGUgfSBmcm9tICd2ZXJiZW4tbmctdWkvc3JjL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9zdmcvc3ZnLm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ryb3AtZG93bi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFN2Z01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wLWRvd24taXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcm9wLWRvd24taXRlbS5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcERvd25JdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7IC8vIEFsbG93IG51bGwgZm9yIGN1c3RvbSBpdGVtIHRlbXBsYXRlXG4gIEBJbnB1dCgpIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKSBhY3RpdmVJdGVtPzogYW55O1xuICBASW5wdXQoKSBhY3RpdmVJdGVtcz86IGFueTtcbiAgQElucHV0KCkgc2VsZWN0S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25TdWJMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgbG9hZE1vcmVDYXB0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvcHRpb25zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvbkV4cGFuZD86IChcbiAgICBpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcixcbiAgICBzaWJsaW5nczogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXVxuICApID0+IFByb21pc2U8dm9pZD47XG4gIEBJbnB1dCgpIG9uTG9hZE1vcmU/OiAoaXRlbTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXIpID0+IFByb21pc2U8dm9pZD47XG4gIEBJbnB1dCgpIG9uU2VsZWN0PzogKHZhbHVlOiBhbnksIGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBpc0VxdWFsKHZhbHVlOiBhbnksIG90aGVyOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RLZXlcbiAgICAgID8gaXNFcXVhbCgodmFsdWUgJiYgdmFsdWVbdGhpcy5zZWxlY3RLZXldKSB8fCBudWxsLCBvdGhlclt0aGlzLnNlbGVjdEtleV0pXG4gICAgICA6IGlzRXF1YWwodmFsdWUsIG90aGVyKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQodmFsdWU6IGFueVtdLCBvdGhlcjogYW55KTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgdmFsIG9mIHZhbHVlKSB7XG4gICAgICBjb25zdCBlcXVhbGl0eUNoZWNrID0gdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgPyBpc0VxdWFsKHZhbFt0aGlzLnNlbGVjdEtleV0sIG90aGVyW3RoaXMuc2VsZWN0S2V5XSlcbiAgICAgICAgOiBpc0VxdWFsKHZhbCwgb3RoZXIpO1xuICAgICAgaWYgKGVxdWFsaXR5Q2hlY2spIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldFZhbHVlKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWUgOiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWVbdGhpcy5vcHRpb25WYWx1ZV0gOiBpdGVtW3RoaXMub3B0aW9uVmFsdWVdO1xuICB9XG5cbiAgZ2V0T3B0aW9uTGFiZWwoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25MYWJlbCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLm9wdGlvbkxhYmVsXTtcbiAgfVxuXG4gIGdldE9wdGlvblN1YkxhYmVsKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHJldHVybiBpdGVtLnN1YkxhYmVsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3B0aW9uU3ViTGFiZWwpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW1bdGhpcy5vcHRpb25TdWJMYWJlbF07XG4gIH1cbn1cbiIsIjwhLS0gSWYgZ3JvdXAgbW9kZSBpcyBmYWxzZSwgZGlzcGxheSBhIGZsYXQgbGlzdCAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBcIj5cblxuICA8ZGl2IGNsYXNzPVwib3B0aW9uLWl0ZW1zLWNvbnRhaW5lciBmbGV4IGZsZXgtY29sXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRJdGVtXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1pdGVtJzogaXNFcXVhbCh0aGlzLmFjdGl2ZUl0ZW0sIHRoaXMuZ2V0VmFsdWUoaXRlbSkpfVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ICYmIG9uU2VsZWN0KGl0ZW0sICRldmVudClcIiBjbGFzcz1cIml0ZW0td3JhcHBlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydtdWx0aS1zZWxlY3QtYWN0aXZlLWl0ZW0nOiBpc1NlbGVjdGVkKHRoaXMuYWN0aXZlSXRlbXMsIHRoaXMuZ2V0VmFsdWUoaXRlbSkpfVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ICYmIG9uU2VsZWN0KGl0ZW0sICRldmVudClcIiBjbGFzcz1cIml0ZW0td3JhcHBlciBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHRoaXMuYWN0aXZlSXRlbXMsIHRoaXMuZ2V0VmFsdWUoaXRlbSkpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCIgLz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1pdGVtJzogaXNFcXVhbCh0aGlzLmFjdGl2ZUl0ZW0sIHRoaXMuZ2V0VmFsdWUoaXRlbSkpfVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ICYmIG9uU2VsZWN0KGl0ZW0sICRldmVudClcIiBjbGFzcz1cImRlZmF1bHQtaXRlbSBpdGVtLXdyYXBwZXIgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydoYXMtc3ViLWxhYmVsJzogb3B0aW9uU3ViTGFiZWx9XCIgY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3t0aGlzLmdldE9wdGlvbkxhYmVsKGl0ZW0pfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9uU3ViTGFiZWwgfHwgKGdyb3VwICYmIGl0ZW0uc3ViTGFiZWwpXCIgY2xhc3M9XCJpdGVtLXN1Yi1sYWJlbFwiPlxuICAgICAgICAgICAge3t0aGlzLmdldE9wdGlvblN1YkxhYmVsKGl0ZW0pfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydtdWx0aS1zZWxlY3QtYWN0aXZlLWl0ZW0nOiBpc1NlbGVjdGVkKHRoaXMuYWN0aXZlSXRlbXMsIHRoaXMuZ2V0VmFsdWUoaXRlbSkpfVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ICYmIG9uU2VsZWN0KGl0ZW0sICRldmVudClcIiBjbGFzcz1cImRlZmF1bHQtaXRlbSBpdGVtLXdyYXBwZXIgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCh0aGlzLmFjdGl2ZUl0ZW1zLCB0aGlzLmdldFZhbHVlKGl0ZW0pKVwiXG4gICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydoYXMtc3ViLWxhYmVsJzogb3B0aW9uU3ViTGFiZWx9XCIgY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3t0aGlzLmdldE9wdGlvbkxhYmVsKGl0ZW0pfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25TdWJMYWJlbCB8fCAoZ3JvdXAgJiYgaXRlbS5zdWJMYWJlbClcIiBjbGFzcz1cIml0ZW0tc3ViLWxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7dGhpcy5nZXRPcHRpb25TdWJMYWJlbChpdGVtKX19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBJZiBncm91cCBtb2RlIGlzIHRydWUsIGRpc3BsYXkgZ3JvdXBzIGFuZCBzdWItZ3JvdXBzIHJlY3Vyc2l2ZWx5IC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJvcHRpb24taXRlbXMtY29udGFpbmVyIGZsZXggZmxleC1jb2xcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnNcIj5cbiAgICAgIDwhLS0gRGlzcGxheSBhcyBncm91cCBoZWFkZXIgaWYgdGhlIGl0ZW0gaGFzIGNoaWxkcmVuIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cIiFpdGVtLml0ZW1zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEl0ZW1cIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpc2VsZWN0XCIgW25nQ2xhc3NdPVwieydhY3RpdmUtaXRlbSc6IGlzRXF1YWwodGhpcy5hY3RpdmVJdGVtLCB0aGlzLmdldFZhbHVlKGl0ZW0pKX1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ICYmIG9uU2VsZWN0KGl0ZW0sICRldmVudClcIiBjbGFzcz1cIml0ZW0td3JhcHBlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J211bHRpLXNlbGVjdC1hY3RpdmUtaXRlbSc6IGlzU2VsZWN0ZWQodGhpcy5hY3RpdmVJdGVtcywgdGhpcy5nZXRWYWx1ZShpdGVtKSl9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdCAmJiBvblNlbGVjdChpdGVtLCAkZXZlbnQpXCIgY2xhc3M9XCJpdGVtLXdyYXBwZXIgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHRoaXMuYWN0aXZlSXRlbXMsIHRoaXMuZ2V0VmFsdWUoaXRlbSkpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tY2hlY2tib3hcIiAvPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJdGVtPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZS1pdGVtJzogaXNFcXVhbCh0aGlzLmFjdGl2ZUl0ZW0sIHRoaXMuZ2V0VmFsdWUoaXRlbSkpfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3QgJiYgb25TZWxlY3QoaXRlbSwgJGV2ZW50KVwiIGNsYXNzPVwiZGVmYXVsdC1pdGVtIGl0ZW0td3JhcHBlciBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaGFzLXN1Yi1sYWJlbCc6IGl0ZW0uc3ViTGFiZWx9XCIgY2xhc3M9XCJpdGVtLWxhYmVsXCI+e3tpdGVtLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnN1YkxhYmVsXCIgY2xhc3M9XCJpdGVtLXN1Yi1sYWJlbFwiPnt7aXRlbS5zdWJMYWJlbH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbXVsdGktc2VsZWN0LWFjdGl2ZS1pdGVtJzogaXNTZWxlY3RlZCh0aGlzLmFjdGl2ZUl0ZW1zLCB0aGlzLmdldFZhbHVlKGl0ZW0pKX1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ICYmIG9uU2VsZWN0KGl0ZW0sICRldmVudClcIiBjbGFzcz1cImRlZmF1bHQtaXRlbSBpdGVtLXdyYXBwZXIgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHRoaXMuYWN0aXZlSXRlbXMsIHRoaXMuZ2V0VmFsdWUoaXRlbSkpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tY2hlY2tib3hcIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2hhcy1zdWItbGFiZWwnOiBpdGVtLnN1YkxhYmVsfVwiIGNsYXNzPVwiaXRlbS1sYWJlbFwiPnt7aXRlbS5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnN1YkxhYmVsXCIgY2xhc3M9XCJpdGVtLXN1Yi1sYWJlbFwiPnt7aXRlbS5zdWJMYWJlbH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIERpc3BsYXkgYXMgbm9ybWFsIGl0ZW0gaWYgaXQgZG9lc24ndCBoYXZlIGNoaWxkcmVuIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIiAqbmdJZj1cIml0ZW0uaXRlbXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEdyb3VwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLXdyYXBwZXJcIiAoY2xpY2spPVwib25FeHBhbmQgJiYgb25FeHBhbmQoaXRlbSwgb3B0aW9ucylcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJncm91cFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEdyb3VwPlxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uRXhwYW5kICYmIG9uRXhwYW5kKGl0ZW0sIG9wdGlvbnMpXCIgY2xhc3M9XCJkZWZhdWx0LWdyb3VwIGdyb3VwLXdyYXBwZXIgZmxleFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwicGx1c1wiIGZpbGw9XCIjNWQ2Njc0XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgPCEtLSA8c3ZnIGNsYXNzPVwicGx1cy1taW51cy1pY29uXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNS4zMzIxNCA2LjY2NTc4SDUuMjYxMDJDMy45NTg1OCA2LjY2NTc4IDIuNjU2MTQgNi42NjYzIDEuMzUzNzEgNi42NjU0NEMxLjA2NTI4IDYuNjY1MjcgMC44NTA1NTMgNi41MzU3MSAwLjcyODE5MiA2LjI3MzY5QzAuNTI1MTE1IDUuODM4NTkgMC44NDQzODMgNS4zMzczNCAxLjMyNDkxIDUuMzMzMjJDMS42NDYyNCA1LjMzMDMxIDEuOTY3NTYgNS4zMzI3MSAyLjI4ODg5IDUuMzMyNzFDMy4yODI4NSA1LjMzMjcxIDQuMjc2ODIgNS4zMzI3MSA1LjI3MDc5IDUuMzMyNzFINS4zMzIxNFY1LjI3NjMzQzUuMzMyMTQgMy45NjY3NCA1LjMzMjE0IDIuNjU3MTQgNS4zMzIxNCAxLjM0NzU1QzUuMzMyMTQgMS4wMzA4NiA1LjUzMTYyIDAuNzY3NDcyIDUuODI5OTggMC42ODg2NDNDNi4yNTUxNSAwLjU3NjIyNSA2LjY2NTc3IDAuODk2NTEyIDYuNjY2NDUgMS4zNDMyN0M2LjY2NzQ4IDEuOTYzMTEgNi42NjY3OSAyLjU4Mjk0IDYuNjY2NzkgMy4yMDI3OEM2LjY2Njc5IDMuODkyNTQgNi42NjY3OSA0LjU4MjI5IDYuNjY2NzkgNS4yNzIyMlY1LjMzMzA1SDYuNzI0MkM4LjAzMjMgNS4zMzMwNSA5LjM0MDU2IDUuMzMzMDUgMTAuNjQ4NyA1LjMzMzA1QzEwLjkzMyA1LjMzMzA1IDExLjE3MzcgNS40ODg0OCAxMS4yNzg4IDUuNzM5MDJDMTEuNDY1OSA2LjE4NTI3IDExLjE0MzEgNi42NjQ3NSAxMC42NTMzIDYuNjY1OTVDMTAuMTU0OSA2LjY2Njk4IDkuNjU2NCA2LjY2NjEyIDkuMTU4MDUgNi42NjYxMkM4LjM0OTY4IDYuNjY2MTIgNy41NDE0OCA2LjY2NjEyIDYuNzMzMTEgNi42NjYxMkg2LjY2Njc5VjYuNzI3MTNDNi42NjY3OSA4LjAzNTM1IDYuNjY2NzkgOS4zNDM1NyA2LjY2Njc5IDEwLjY1MTZDNi42NjY3OSAxMC45ODA4IDYuNDUzNDMgMTEuMjQ3NSA2LjEzNDg1IDExLjMxNzdDNS43NTk4OSAxMS40MDAzIDUuMzgyNTIgMTEuMTMwOSA1LjMzODk5IDEwLjc0OUM1LjMzNDcxIDEwLjcxMDcgNS4zMzIzMSAxMC42NzIyIDUuMzMyMzEgMTAuNjMzNkM1LjMzMTk3IDkuMzMxMjMgNS4zMzE5NyA4LjAyODY3IDUuMzMxOTcgNi43MjYyN1Y2LjY2NjEyTDUuMzMyMTQgNi42NjU3OFpcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwibWludXNcIiBmaWxsPVwiIzVkNjY3NFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMlwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgPCEtLSA8c3ZnIGNsYXNzPVwicGx1cy1taW51cy1pY29uXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjJcIiB2aWV3Qm94PVwiMCAwIDEwIDJcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMC4zMzM5ODQgMC4zMzIwMzFIOS42NjczMlYxLjY2NTM2SDAuMzMzOTg0VjAuMzMyMDMxWlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1pdGVtIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2hhcy1zdWItbGFiZWwnOiBpdGVtLnN1YkxhYmVsfVwiIGNsYXNzPVwiaXRlbS1sYWJlbFwiPnt7aXRlbS5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnN1YkxhYmVsXCIgY2xhc3M9XCJpdGVtLXN1Yi1sYWJlbFwiPnt7aXRlbS5zdWJMYWJlbH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSBSZWN1cnNpdmUgcmVuZGVyaW5nIG9mIHN1Yi1pdGVtcyAoZ3JvdXBzIG9yIGluZGl2aWR1YWwgaXRlbXMpIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5leHBhbmRlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC13cmFwcGVyLWl0ZW1zIGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxkcm9wLWRvd24taXRlbSBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiIFtncm91cFRlbXBsYXRlXT1cImdyb3VwVGVtcGxhdGVcIiBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1zXT1cImFjdGl2ZUl0ZW1zXCIgW211bHRpc2VsZWN0XT1cIm11bHRpc2VsZWN0XCIgW29wdGlvblZhbHVlXT1cIm9wdGlvblZhbHVlXCJcbiAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbkxhYmVsXCIgW29wdGlvblN1YkxhYmVsXT1cIm9wdGlvblN1YkxhYmVsXCIgW2xvYWRNb3JlQ2FwdGlvbl09XCJsb2FkTW9yZUNhcHRpb25cIlxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJpdGVtLml0ZW1zXCIgW2dyb3VwXT1cImdyb3VwXCIgW29uRXhwYW5kXT1cIm9uRXhwYW5kXCIgW29uTG9hZE1vcmVdPVwib25Mb2FkTW9yZVwiXG4gICAgICAgICAgICAgIFtvblNlbGVjdF09XCJvblNlbGVjdFwiPjwvZHJvcC1kb3duLWl0ZW0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5sYXp5TG9hZFwiIGNsYXNzPVwic2VlLW1vcmUtY29udGFpbmVyIGZsZXhcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWUtbW9yZS1jYXB0aW9uXCIgKGNsaWNrKT1cIm9uTG9hZE1vcmUgJiYgb25Mb2FkTW9yZShpdGVtKVwiPnt7bG9hZE1vcmVDYXB0aW9ufX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzTG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -454,7 +454,7 @@ export class DropDownComponent {
|
|
|
454
454
|
const index = this.checkMultiselectValue(item);
|
|
455
455
|
if (index == null) {
|
|
456
456
|
this.selectedOptions.push(this.getValue(item));
|
|
457
|
-
this.selectedOptionLabels.push(this.getOptionLabel(
|
|
457
|
+
this.selectedOptionLabels.push(this.getOptionLabel(item));
|
|
458
458
|
}
|
|
459
459
|
}
|
|
460
460
|
}
|
|
@@ -561,7 +561,7 @@ export class DropDownComponent {
|
|
|
561
561
|
if (!this.group && !this.lazyLoad) {
|
|
562
562
|
for (let option of this.options) {
|
|
563
563
|
const equalityCheck = this.selectKey
|
|
564
|
-
? isEqual(this.getValue(option)[this.selectKey], obj[this.selectKey])
|
|
564
|
+
? isEqual(this.getValue(option)[this.selectKey], (obj && obj[this.selectKey]) || null)
|
|
565
565
|
: isEqual(this.getValue(option), obj);
|
|
566
566
|
if (equalityCheck) {
|
|
567
567
|
this.selectedOption = this.getValue(option);
|
|
@@ -773,4 +773,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
773
773
|
type: HostListener,
|
|
774
774
|
args: ['document:click', ['$event']]
|
|
775
775
|
}] } });
|
|
776
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQXlCMUQsTUFBTSxPQUFPLGlCQUFpQjtJQThGWTtJQTNGeEMsV0FBVztJQUNILFFBQVEsR0FBVSxFQUFFLENBQUMsQ0FBQyxnQ0FBZ0M7SUFFOUQsU0FBUztJQUNULElBQ0ksT0FBTyxDQUFDLEtBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7WUFDdkYsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyx1Q0FBdUM7SUFDL0QsQ0FBQztJQUVRLEtBQUssR0FBVyxPQUFPLENBQUM7SUFDeEIsa0JBQWtCLEdBQVksSUFBSSxDQUFDO0lBQ25DLG1CQUFtQixHQUFXLHdCQUF3QixDQUFDO0lBQ3ZELFdBQVcsQ0FBVTtJQUNyQixjQUFjLENBQVU7SUFDeEIsV0FBVyxDQUFVO0lBQ3JCLFdBQVcsQ0FBVTtJQUNyQixjQUFjLENBQVU7SUFDeEIsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixlQUFlLEdBQVcsVUFBVSxDQUFDO0lBQ3JDLE9BQU8sR0FBVyxTQUFTLENBQUM7SUFDNUIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQ2hDLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUN2QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFDeEIsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBQ2xDLFFBQVEsQ0FBVTtJQUNsQixZQUFZLEdBQVcsR0FBRyxDQUFDO0lBQzNCLE9BQU8sR0FBVyxDQUFDLENBQUM7SUFDcEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLElBQUksQ0FBa0Q7SUFDdEQsVUFBVSxDQUFtQztJQUM3QyxNQUFNLENBQTZEO0lBRTVFLFVBQVU7SUFDQSxhQUFhLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDeEQsUUFBUSxHQUFzQyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ2pFLE9BQU8sR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNsRCxPQUFPLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFNUQsWUFBWSxHQUF5QixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDOUMsU0FBUyxHQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNqQyxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTNCLFlBQVk7SUFFWixpQkFBaUIsQ0FBYztJQUUvQixpQkFBaUIsQ0FBYztJQUNLLFNBQVMsQ0FBZ0M7SUFFL0MsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNoRCxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRXZCLG9CQUFvQixHQUE0QixJQUFJLENBQUM7SUFDckQsWUFBWSxHQUE0QixJQUFJLENBQUMsQ0FBQyxzQ0FBc0M7SUFDcEYsYUFBYSxHQUE0QixJQUFJLENBQUM7SUFFOUMsV0FBVztJQUNYLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFDNUIsU0FBUyxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDdkQsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBQ2xDLGNBQWMsQ0FBTTtJQUNwQixlQUFlLEdBQVUsRUFBRSxDQUFDO0lBQzVCLG1CQUFtQixDQUFNO0lBQ3pCLG9CQUFvQixHQUFVLEVBQUUsQ0FBQztJQUNqQyxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsYUFBYSxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDM0QsZ0JBQWdCLEdBQVUsRUFBRSxDQUFDO0lBQzdCLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFDN0IsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDcEMsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFN0IsWUFBd0MsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUMxRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyw4Q0FBOEM7WUFDbkYsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO29CQUNyQyxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87b0JBQ2hELENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUNyQixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ2xCLFNBQVMsR0FBRyxLQUFLLENBQUM7NEJBQ2xCLE1BQU07d0JBQ1IsQ0FBQztvQkFDSCxDQUFDO29CQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO2dCQUNsQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFdBQVc7aUJBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7aUJBQzFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7Z0JBQzlCLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3JDLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ04sQ0FBQztvQkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7d0JBQ3RCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUM3RCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzt3QkFDdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOzRCQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFDOUMsSUFBSSxDQUFDLEtBQUs7Z0NBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUE2QixDQUFDO2dDQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUM1QyxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO3dCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUN2QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7d0JBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUNoRCxJQUFJLENBQUMsS0FBSztnQ0FDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7Z0NBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQzVDLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUNELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDM0MsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7WUFDekQsQ0FBQztZQUNELElBQUksaUJBQWlCLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztZQUNqRCxDQUFDO1lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFc0IsT0FBTztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRXFCLE1BQU07UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDTixDQUFDO1lBQzdCLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxLQUFLO29CQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQztvQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNoQixPQUFPO29CQUNULENBQUM7b0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUyxDQUFDLElBQUksUUFBUTt3QkFDMUMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsQ0FBQyxDQUM1RCxDQUFDO29CQUNGLElBQUksQ0FBQyxLQUFLO3dCQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQzt3QkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ2hCLE9BQU87b0JBQ1QsQ0FBQztvQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUMzQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLFFBQVE7d0JBQzFCLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUM1QyxDQUFDO29CQUNGLElBQUksQ0FBQyxLQUFLO3dCQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQzt3QkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxLQUFLO29CQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQztvQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUNwQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxJQUFJLFFBQVE7d0JBQ3BDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsQ0FBQyxDQUN0RCxDQUFDO29CQUNGLElBQUksQ0FBQyxLQUFLO3dCQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQzt3QkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQ3BDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLElBQUksSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDbkUsQ0FBQztvQkFDRixJQUFJLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7d0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWTtRQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBbUM7UUFDNUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQ2QsSUFBNkIsRUFDN0IsUUFBbUM7UUFFbkMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEQsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixFQUFFLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3ZDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQy9DLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUM5RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO3dCQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUMxQixZQUFZLEVBQ1osY0FBYyxHQUFHLFlBQVksQ0FDOUIsQ0FBQztvQkFDSixDQUFDO29CQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pDLElBQUksWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzlDLENBQUM7b0JBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNyRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDdEIsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzlDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDakQsQ0FBQztvQkFDRCxJQUFJLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7d0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7b0JBQ3BELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDO29CQUM5RCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2pELENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDbEMsSUFBSSxDQUFDLGFBQWE7NEJBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQTZCO1FBQ25ELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksTUFBTSxHQUNSLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUNyQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNsRCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELEtBQUssSUFBSSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pELENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUs7Z0JBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUE2QixDQUFDO2dCQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakQsQ0FBQztnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLENBQUM7WUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksTUFBTSxHQUNSLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUNyQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNsRCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbEMsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakQsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSztnQkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUM7Z0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUF5QjtRQUMzQyxNQUFNLE9BQU8sR0FBOEIsRUFBRSxDQUFDO1FBQzlDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdkIsTUFBTSxhQUFhLEdBQTRCO2dCQUM3QyxHQUFHLElBQUk7Z0JBQ1AsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzNELGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQy9ELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNwRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUN4RSxDQUFDO1lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7WUFDL0IsS0FBSyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDakQsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1lBQy9CLEtBQUssSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMvQyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUMvQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDOUQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVk7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVLEVBQUUsS0FBWTtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sa0JBQWtCLEdBQUc7b0JBQ3pCLEdBQUcsSUFBSSxDQUFDLGVBQWU7b0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUNyQixDQUFDO2dCQUNGLE1BQU0sdUJBQXVCLEdBQUc7b0JBQzlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQjtvQkFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7aUJBQzNCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO2dCQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDakIsYUFBYSxFQUFFLEtBQUs7b0JBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZTtpQkFDNUIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3JELGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUMvRCx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO2dCQUMxQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsdUJBQXVCLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNqQixhQUFhLEVBQUUsS0FBSztvQkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlO2lCQUM1QixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxLQUFhLEVBQUUsS0FBWTtRQUNqRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMvRCx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLENBQUM7UUFDMUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFVO1FBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDO2dCQUMvQixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUzt3QkFDbEMsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDckMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDcEI7d0JBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLGFBQWEsRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUN2RCxNQUFNO29CQUNSLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVTtnQkFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztnQkFDL0IsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQyxLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDaEMsS0FBSyxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVM7NEJBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQ3ZCOzRCQUNILENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxhQUFhLEVBQUUsQ0FBQzs0QkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzRCQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDNUQsTUFBTTt3QkFDUixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO1lBQzNCLEtBQUssSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQzVCLElBQUksQ0FBQyxVQUFVO29CQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQ2hDLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQ3BCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxLQUFLLENBQ3BFO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUNwQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxJQUFJLEtBQUssQ0FDN0QsQ0FBQztRQUNOLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFTO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEtBQVk7UUFDakQsT0FBTyxDQUNMLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELHdFQUF3RTtJQUNoRSx5QkFBeUIsQ0FBQyxJQUFTO1FBQ3pDLE9BQU8sVUFBVSxJQUFJLElBQUksQ0FBQztJQUM1QixDQUFDO0lBR0QsY0FBYyxDQUFDLEtBQVk7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQ0UsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVO1lBQ2YsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDNUQsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3VHQS9zQlUsaUJBQWlCOzJGQUFqQixpQkFBaUIsMmxDQW1FWCxpQkFBaUIsNFFDeEhwQyw2K1pBaU1BLDRwS0R0SkksWUFBWSxxZ0JBQ1oscUJBQXFCLDJSQUNyQixZQUFZLDByQ0FDWixXQUFXLCt4QkFDWCxTQUFTLG1LQUNULGFBQWE7OzJGQUtKLGlCQUFpQjtrQkFkN0IsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxhQUFhO3FCQUNkOzswQkFrR1ksUUFBUTs7MEJBQUksSUFBSTt5Q0F0RnpCLE9BQU87c0JBRFYsS0FBSztnQkFpQkcsS0FBSztzQkFBYixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQVFQLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2hELGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRWIsU0FBUztzQkFBNUMsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBRUosU0FBUztzQkFBdEMsV0FBVzt1QkFBQyxlQUFlO2dCQTRHTCxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBSUMsTUFBTTtzQkFBM0IsWUFBWTt1QkFBQyxNQUFNO2dCQThnQnBCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVJdGVtIH0gZnJvbSAnLi9Ecm9wZG93bk1lbnVJdGVtJztcbmltcG9ydCB7IERyb3Bkb3duTG9hZEV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkxvYWRFdmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL1RlbXBsYXRlRGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkNoYW5nZUV2ZW50JztcbmltcG9ydCB7IERyb3BEb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGlzRXF1YWwsIGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnL3N2Zy5tb2R1bGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyIGV4dGVuZHMgRHJvcGRvd25NZW51SXRlbSB7XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpdGVtcz86IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW107XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgY29weTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXTtcbiAgbG9hZFRpbWVzPzogRHJvcGRvd25Mb2FkRXZlbnQ7XG4gIGxvYWRUaW1lc0NvcHk/OiBEcm9wZG93bkxvYWRFdmVudDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWRyb3AtZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJvcERvd25JdGVtQ29tcG9uZW50LFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTdmdNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcm9wLWRvd24uY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIERyb3BEb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICAvLyBJTlRFUk5BTFxuICBwcml2YXRlIF9vcHRpb25zOiBhbnlbXSA9IFtdOyAvLyBJbnRlcm5hbCB2YXJpYWJsZSBmb3Igb3B0aW9uc1xuXG4gIC8vIElOUFVUU1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogYW55W10pIHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlKSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHZhbHVlKTsgLy8gU2V0IHRoZSBpbnRlcm5hbCBvcHRpb25zIHZhcmlhYmxlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7IC8vIFJldHVybiB0aGUgaW50ZXJuYWwgb3B0aW9ucyB2YXJpYWJsZVxuICB9XG5cbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcxMnJlbSc7XG4gIEBJbnB1dCgpIHNob3dIb3Jpem9udGFsTGluZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhvcml6b250YWxMaW5lQ29sb3I6IHN0cmluZyA9ICdyZ2JhKDI1NSwgMjMwLCAxMjksIDEpJztcbiAgQElucHV0KCkgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvblN1YkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGludmFsaWRNZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclBvc2l0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbG9hZE1vcmVDYXB0aW9uOiBzdHJpbmcgPSAnU2VlIG1vcmUnO1xuICBASW5wdXQoKSBkaXNwbGF5OiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXp5TG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZ3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF2b2lkRHVwbGljYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyQnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZTogbnVtYmVyID0gNTAwO1xuICBASW5wdXQoKSBtaW5DaGFyOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkPzogKGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcbiAgQElucHV0KCkgYXN5bmNMYWJlbD86IChjb250ZXh0OiBhbnkpID0+IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpIHNlYXJjaD86IChkYXRhOiBhbnksIGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcblxuICAvLyBPVVRQVVRTXG4gIEBPdXRwdXQoKSBvcHRpb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxEcm9wZG93bkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG9uSXRlbUNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vVEVNUExBVElOR1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGRyb3Bkb3duQ29udGFpbmVyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25FeHBhbnNpb24nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZHJvcGRvd25FeHBhbnNpb24hOiBFbGVtZW50UmVmO1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsOyAvLyBBbGxvdyBudWxsIGZvciBjdXN0b20gaXRlbSB0ZW1wbGF0ZVxuICBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLy9WQVJJQUJMRVNcbiAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2FkVGltZXM6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIGluaXRpYWxJbmNyZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcbiAgc2VsZWN0ZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uTGFiZWxzOiBhbnlbXSA9IFtdO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3B0aW9uc0NvcHk6IGFueVtdID0gW107XG4gIGxvYWRUaW1lc0NvcHk6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIHNlbGVjdGVkQ29udGV4dHM6IGFueVtdID0gW107XG4gIHNlYXJjaEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG4gIHNlYXJjaFRlcm0kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBzZWFyY2hDb250ZXh0OiBzdHJpbmcgPSAnJztcbiAgYWxsb3dTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRBbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzOyAvLyBBc3NpZ24gdGhpcyBjb21wb25lbnQgYXMgdGhlIHZhbHVlIGFjY2Vzc29yXG4gICAgICB0aGlzLm5nQ29udHJvbD8uc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0ludmFsaWQgPSB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgPyBzdGF0dXMgPT09ICdJTlZBTElEJyAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKCF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBpc0FsbG93ZWQgPSB0cnVlO1xuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5sYXp5TG9hZCkge1xuICAgICAgICAgICAgICBpc0FsbG93ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSBpc0FsbG93ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5ID0gY2xvbmVEZWVwKHRoaXMuX29wdGlvbnMpO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpKSAvLyBBZGp1c3QgZGVib3VuY2UgdGltZSBoZXJlIChpbiBtcylcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAoc2VhcmNoVGVybSkgPT4ge1xuICAgICAgICAgIGlmIChzZWFyY2hUZXJtLmxlbmd0aCA8IHRoaXMubWluQ2hhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VhcmNoICYmIGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaXRlbS5zZWFyY2goc2VhcmNoVGVybSwgaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgICAgICAgaXRlbS5pdGVtcyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2ggJiYgdGhpcy5sb2FkVGltZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlYXJjaChzZWFyY2hUZXJtLCB0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaENvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZURpcmVjdGl2ZSkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlRGlyZWN0aXZlLnZUZW1wbGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVEaXJlY3RpdmUudlRlbXBsYXRlID09PSAnaXRlbScpIHtcbiAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZURpcmVjdGl2ZS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZURpcmVjdGl2ZS52VGVtcGxhdGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWFyY2hGb2N1cygpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uU2VhcmNoQmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbklucHV0Qmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvblNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGl0ZW0uaXRlbXMgPSBjbG9uZURlZXAoaXRlbS5jb3B5KTtcbiAgICAgICAgaXRlbS5sb2FkVGltZXMgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpdGVtLmZpbHRlckJ5KSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0gPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgbmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnaScpLnRlc3QoeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLmNvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgIHR5cGVvZiB4LnZhbHVlID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgudmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnNDb3B5KTtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zQ29weS5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHhbdGhpcy5maWx0ZXJCeSFdID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHhbdGhpcy5maWx0ZXJCeSFdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9uc0NvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+IHR5cGVvZiB4ID09ICdzdHJpbmcnICYmIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cblxuICBoYXNTaWJsaW5nKHNpYmxpbmdzOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihzaWJsaW5nc1tpXSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZXhwYW5kTWVudShcbiAgICBpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcixcbiAgICBzaWJsaW5nczogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXVxuICApIHtcbiAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGZvciAobGV0IGl0IG9mIHNpYmxpbmdzLmZpbHRlcigoeCkgPT4geCAhPT0gaXRlbSkpIHtcbiAgICAgICAgICBpZiAoaXQuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIGl0LmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpdC5sb2FkVGltZXMgJiYgaXQubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpdGVtLmV4cGFuZGVkID0gIWl0ZW0uZXhwYW5kZWQ7XG4gICAgICBpZiAoaXRlbS5leHBhbmRlZCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBzaWJsaW5nQ2hlY2sgPSB0aGlzLmhhc1NpYmxpbmcoc2libGluZ3MpO1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoID4gMCAmJiBzaWJsaW5nQ2hlY2sgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRzTGVuZ3RoID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoXG4gICAgICAgICAgICAgIHNpYmxpbmdDaGVjayxcbiAgICAgICAgICAgICAgY29udGV4dHNMZW5ndGggLSBzaWJsaW5nQ2hlY2tcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIGlmIChzaWJsaW5nQ2hlY2sgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5LnB1c2godGhpcy5zZWFyY2hDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ubGF6eUxvYWQgJiYgaXRlbS5sb2FkTW9yZSAmJiBpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaXRlbS5sb2FkTW9yZShpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgaXRlbS5pdGVtcyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgICAgaXRlbS5sb2FkVGltZXNDb3B5ID0gY2xvbmVEZWVwKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgIGNvbnN0IGNvbnRleHRzTGVuZ3RoID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aDtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnNwbGljZShpbmRleCwgY29udGV4dHNMZW5ndGggLSBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgICBpdGVtLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hIaXN0b3J5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udGV4dCA9XG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoSGlzdG9yeVt0aGlzLnNlYXJjaEhpc3RvcnkubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEhpc3Rvcnkuc3BsaWNlKHRoaXMuc2VhcmNoSGlzdG9yeS5sZW5ndGggLSAxLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTW9yZU1lbnVJdGVtcyhpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcikge1xuICAgIGlmIChpdGVtLmxvYWRNb3JlICYmIGl0ZW0ubG9hZFRpbWVzICYmIGl0ZW0uaXRlbXMpIHtcbiAgICAgIGNvbnN0IHNlYXJjaENvbnRleHQgPSB0aGlzLnNlYXJjaENvbnRleHQudHJpbSgpO1xuICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdmFyIHJlc3VsdCA9XG4gICAgICAgIHNlYXJjaENvbnRleHQubGVuZ3RoID4gMCAmJiBpdGVtLnNlYXJjaFxuICAgICAgICAgID8gYXdhaXQgaXRlbS5zZWFyY2goc2VhcmNoQ29udGV4dCwgaXRlbS5sb2FkVGltZXMpXG4gICAgICAgICAgOiBhd2FpdCBpdGVtLmxvYWRNb3JlKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgIGl0ZW0uaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIGZvciAobGV0IHJlcyBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgaXRlbS5pdGVtcy5wdXNoKHJlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIWl0ZW0uc2VhcmNoKSB7XG4gICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgaWYgKHRoaXMubG9hZCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmluaXRpYWxJbmNyZW1lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbEluY3JlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IHRoaXMuc2VhcmNoKHNlYXJjaENvbnRleHQsIHRoaXMubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5sb2FkKHRoaXMubG9hZFRpbWVzKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZFRpbWVzLmluY3JlYXNlTG9hZFRpbWUoKTtcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgcmVzdWx0KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGlmIChzZWFyY2hDb250ZXh0Lmxlbmd0aCA9PSAwIHx8ICF0aGlzLnNlYXJjaCkge1xuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSBjbG9uZURlZXAodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmdyb3VwXG4gICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRUb0V4cGFuZGFibGUoaXRlbXM6IERyb3Bkb3duTWVudUl0ZW1bXSk6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10ge1xuICAgIGNvbnN0IHdyYXBwZXI6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWRJdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlciA9IHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICBsb2FkVGltZXM6IGl0ZW0uaXRlbXMgPyBuZXcgRHJvcGRvd25Mb2FkRXZlbnQoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgbG9hZFRpbWVzQ29weTogaXRlbS5pdGVtcyA/IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpIDogdW5kZWZpbmVkLFxuICAgICAgICBpdGVtczogaXRlbS5pdGVtcyA/IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShpdGVtLml0ZW1zKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY29weTogaXRlbS5pdGVtcyA/IGNsb25lRGVlcCh0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUoaXRlbS5pdGVtcykpIDogW10sXG4gICAgICB9O1xuICAgICAgd3JhcHBlci5wdXNoKGNvbnZlcnRlZEl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gd3JhcHBlcjtcbiAgfVxuXG4gIG9uU2VsZWN0QWxsKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoW10pO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogW10gfSk7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZShvcHRpb24pO1xuICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG9wdGlvbi5pdGVtcykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja011bHRpc2VsZWN0VmFsdWUoaXRlbSk7XG4gICAgICAgICAgaWYgKGluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShpdGVtKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBudWxsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoW10pO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogW10gfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLm9uQ2xlYXIuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNlbGVjdCh2YWx1ZTogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmdldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwodmFsdWUpO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5nZXRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgfSk7XG4gICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlKTtcbiAgICAgIGlmIChleGlzdHMgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbXG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgICAgdGhpcy5nZXRWYWx1ZSh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gW1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMsXG4gICAgICAgICAgdGhpcy5nZXRPcHRpb25MYWJlbCh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGV4aXN0cywgMSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoZXhpc3RzLCAxKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdTZWxlY3RlZE9wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zIH0pO1xuICB9XG5cbiAgY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaXNFcXVhbCh0aGlzLnNlbGVjdGVkT3B0aW9uc1tpXSwgdGhpcy5nZXRWYWx1ZSh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCB8fCBvYmogPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvYmo7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IG9iajtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgaWYgKCF0aGlzLmdyb3VwICYmICF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBlcXVhbGl0eUNoZWNrID0gdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgICAgID8gaXNFcXVhbChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgIG9ialt0aGlzLnNlbGVjdEtleV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqKTtcbiAgICAgICAgICBpZiAoZXF1YWxpdHlDaGVjaykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMuZ2V0VmFsdWUob3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbiB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9iajtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuYXN5bmNMYWJlbFxuICAgICAgICA/IHRoaXMuYXN5bmNMYWJlbChvYmopXG4gICAgICAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmopO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBpZiAoIXRoaXMuZ3JvdXAgJiYgIXRoaXMubGF6eUxvYWQpIHtcbiAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5Q2hlY2sgPSB0aGlzLnNlbGVjdEtleVxuICAgICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgICAgb2JqZWN0W3RoaXMuc2VsZWN0S2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqZWN0KTtcbiAgICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscy5wdXNoKHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gb2JqO1xuICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iaikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2goXG4gICAgICAgICAgdGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICA/IHRoaXMuYXN5bmNMYWJlbChvYmplY3QpXG4gICAgICAgICAgICA6IHRoaXMuZ2V0T3B0aW9uTGFiZWwob2JqZWN0KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRPcHRpb25Gcm9tVmFsdWUodmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IHZhbHVlLnZhbHVlIDogdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cFxuICAgICAgPyB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgeC52YWx1ZVt0aGlzLm9wdGlvblZhbHVlIV0gJiYgeC52YWx1ZVt0aGlzLm9wdGlvblZhbHVlIV0gPT0gdmFsdWVcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PiB4W3RoaXMub3B0aW9uVmFsdWUhXSAmJiB4W3RoaXMub3B0aW9uVmFsdWUhXSA9PSB2YWx1ZVxuICAgICAgICApO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1tpbmRleF07XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGdldFZhbHVlKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWUgOiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWVbdGhpcy5vcHRpb25WYWx1ZV0gOiBpdGVtW3RoaXMub3B0aW9uVmFsdWVdO1xuICB9XG4gIGdldE9wdGlvbkxhYmVsKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3B0aW9uTGFiZWwpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW1bdGhpcy5vcHRpb25MYWJlbF07XG4gIH1cblxuICBwcml2YXRlIGlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXJBcnJheSh2YWx1ZTogYW55W10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiB0aGlzLmlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXIoaXRlbSkpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFR5cGUgZ3VhcmQgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIG9mIHR5cGUgRHJvcGRvd25NZW51SXRlbVxuICBwcml2YXRlIGlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXIoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICdleHBhbmRlZCcgaW4gaXRlbTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIXRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICB0aGlzLmlzRXhwYW5kZWQgJiZcbiAgICAgIHRoaXMuZHJvcGRvd25FeHBhbnNpb24gJiZcbiAgICAgICF0aGlzLmRyb3Bkb3duRXhwYW5zaW9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICNkcm9wZG93bkNvbnRhaW5lciBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgY2xhc3M9XCJkcm9wLWRvd25cIj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsncmlnaHQtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICdyaWdodCcsICdsZWZ0LWVycm9yJzogZXJyb3JQb3NpdGlvbiA9PSAnbGVmdCcsICd0b3AtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICd0b3AnfVwiXG4gICAgY2xhc3M9XCJkcm9wLWRvd24taW5wdXQtd3JhcHBlclwiPlxuICAgIDxkaXYgKGNsaWNrKT1cIm9uRHJvcGRvd25DbGljaygkZXZlbnQpXCIgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIiBbY2xhc3MuZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICAgICAgW25nQ2xhc3NdPVwieyduZy1pbnZhbGlkJzogaXNJbnZhbGlkLCAnZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiB0YWJpbmRleD1cIjBcIlxuICAgICAgY2xhc3M9XCJkcm9wLWRvd24taW5wdXQgdmVyYmVuLWlucHV0IGZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tbWFpbi1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIihzZWxlY3RlZEl0ZW1UZW1wbGF0ZSAmJiBzZWxlY3RlZE9wdGlvbikgfHwgKHNlbGVjdGVkSXRlbVRlbXBsYXRlICYmIHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKTsgZWxzZSBkZWZhdWx0SXRlbVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkT3B0aW9uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiIGNsYXNzPVwiZGVmYXVsdC1pdGVtIGZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1sYWJlbCBwbGFjZS1ob2xkZXJcIiAqbmdJZj1cIiF0aGlzLnNlbGVjdGVkT3B0aW9uXCI+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvblwiIGNsYXNzPVwiaXRlbS1sYWJlbCBkcm9wZG93bi1sYWJlbFwiPlxuICAgICAgICAgICAgICB7e3RoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0XCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1sYWJlbCBwbGFjZS1ob2xkZXJcIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PSAwXCI+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgICAgICA8dmVyYmVuLXRvb2x0aXAgY3VzdG9tQ2xhc3M9XCJjdXN0b20tdG9vbHRpcC13aWR0aFwiIGJvcmRlcj1cIjFweCBzb2xpZCAjMzM0MTU1XCIgYmFja2dyb3VuZENvbG9yPVwid2hpdGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcENvbnRlbnRdPVwibXVsdGlzZWxlY3RUb29sdGlwXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvIGNoaXBcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01LjAwMDY1IDkuMzMzMzNDNy4zMDE4NCA5LjMzMzMzIDkuMTY3MzIgNy40Njc4NSA5LjE2NzMyIDUuMTY2NjdDOS4xNjczMiAyLjg2NTQ4IDcuMzAxODQgMSA1LjAwMDY1IDFDMi42OTk0NiAxIDAuODMzOTg0IDIuODY1NDggMC44MzM5ODQgNS4xNjY2N0MwLjgzMzk4NCA3LjQ2Nzg1IDIuNjk5NDYgOS4zMzMzMyA1LjAwMDY1IDkuMzMzMzNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1IDMuOTE3OTdMMy43NSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjc1IDMuOTE3OTdMNi4yNSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSAhPSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28gbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2kgIT09IHNlbGVjdGVkT3B0aW9uTGFiZWxzLmxlbmd0aCAtIDE/IGl0ZW0gKyAnLCAnOml0ZW19fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdmVyYmVuLXRvb2x0aXA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI211bHRpc2VsZWN0VG9vbHRpcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXNlbGVjdC1mdWxsLXZpZXdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiaXRlbS1sYWJlbCBkcm9wZG93bi1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvLXRvb2x0aXAgY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1IDMuOTE3OTdMMy43NSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy43NSAzLjkxNzk3TDYuMjUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyLXR3by10b29sdGlwLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiKHNob3dDbGVhciAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uICYmICFtdWx0aXNlbGVjdCkgfHwgKHNob3dDbGVhciAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwICYmIG11bHRpc2VsZWN0KVwiXG4gICAgICAgIChjbGljayk9XCJ0aGlzLmNsZWFyU2VsZWN0aW9uKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIGNsYXNzPVwiZHJvcC1kb3duLWljb24taXRlbSBkcm9wLWRvd24tY2xlYXItYnV0dG9uXCI+XG4gICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJjbG9zZS1uby1jaXJjbGVcIiBzdHJva2U9XCIjOTRhM2I4XCIgW3dpZHRoXT1cIjEzXCIgW2hlaWdodF09XCIxM1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiOVwiIGhlaWdodD1cIjlcIiB2aWV3Qm94PVwiMCAwIDkgOVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC44NDM3NSAwLjg0Mzc1TDguMTU2MjUgOC4xNTYyNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC44NDM3NSA4LjE1NjI1TDguMTU2MjUgMC44NDM3NVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImRyb3AtZG93bi1pY29uLWl0ZW0gZHJvcC1kb3duLWV4cGFuZC1idXR0b25cIj5cbiAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNoZXZyb24tZG93blwiIGZpbGw9XCIjOTRhM2I4XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCI4XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjdcIiB2aWV3Qm94PVwiMCAwIDEyIDdcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk02LjAwNTA3IDQuODgwMjdDNi4yMDIwNSA0LjYyNzc1IDYuMzA2ODMgNC40NjIyIDYuNDQwOTUgNC4zMjcwNEM3Ljc0MzM0IDMuMDE3MzEgOS4wNTIwMiAxLjcxMzg3IDEwLjM1NzYgMC40MDYyNDJDMTAuNTcxMyAwLjE5MjQ5NSAxMC43ODgyIDAuMDA5MTMzNjcgMTEuMTE5MyAwLjAxMDE4MTRDMTEuNDY5MiAwLjAxMTIyOTIgMTEuNzIyOCAwLjE1NzkyIDExLjg4ODQgMC40NTY1MzdDMTIuMDU3IDAuNzYwMzk0IDEyLjAzMDkgMS4wNjExMSAxMS44MzQ5IDEuMzQyOTZDMTEuNzY1OCAxLjQ0MjUgMTEuNjc2NyAxLjUyNzM3IDExLjU5MDggMS42MTQzM0M5Ljk4ODczIDMuMjE2MzkgOC4zNzMwNSA0LjgwNDgzIDYuNzkzIDYuNDI3ODRDNi4yOTExMSA2Ljk0MzM1IDUuNjg3NTkgNi45MjM0NCA1LjIxMzk5IDYuNDM4MzJDMy42MzE4NCA0LjgxNzQgMi4wMTgyNiAzLjIyNjg3IDAuNDE0MTA5IDEuNjI2OTFDMC4xMTY1MzkgMS4zMjkzNCAtMC4xMTYwNjcgMS4wMTkyIDAuMDYyMDU2MSAwLjU2NTUwN0MwLjI3MTYxMiAwLjAzMTEzOSAwLjg4MzUxOSAtMC4xNjc5NDEgMS4zNTUwMiAwLjE1NzkxOUMxLjQ5NjQ3IDAuMjU1MzYzIDEuNjE1OTIgMC4zODczODUgMS43Mzk1NSAwLjUwOTk3NUMzLjAyMjA0IDEuNzkwMzYgNC4zMDQ1MiAzLjA3MDc1IDUuNTgzODYgNC4zNTUzM0M1LjcwNjQ1IDQuNDc3OTIgNS44MDI4NCA0LjYyNjcxIDYuMDA2MTEgNC44ODEzMkw2LjAwNTA3IDQuODgwMjdaXCJcbiAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRoaXMuaXNJbnZhbGlkICYmIHRoaXMuaW52YWxpZE1lc3NhZ2VcIiBjbGFzcz1cInZlcmJlbi1lcnJvci1tZXNzYWdlIGVycm9yLW1lc3NhZ2VcIj57e2ludmFsaWRNZXNzYWdlfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5IFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwiZHJvcGRvd25Db250YWluZXIub2Zmc2V0V2lkdGhcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uXT1cImZhbHNlXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cIltcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgIH0sXG4gICAge1xuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICB9XG4gIF1cIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNFeHBhbmRlZFwiIChkZXRhY2gpPVwiaXNFeHBhbmRlZCA9IGZhbHNlXCI+XG4gICAgPGRpdiAjZHJvcGRvd25FeHBhbnNpb24gY2xhc3M9XCJkcm9wLWRvd24tbWVudS1pdGVtLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdCAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ID09ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyIGNoaXAgZmxleFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgZmxleFwiPlxuICAgICAgICAgICAgPHNwYW4+e3tpdGVtfX08L3NwYW4+XG4gICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KVwiIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8IS0tIDxzdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudClcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01LjAwMDY1IDkuMzMzMzNDNy4zMDE4NCA5LjMzMzMzIDkuMTY3MzIgNy40Njc4NSA5LjE2NzMyIDUuMTY2NjdDOS4xNjczMiAyLjg2NTQ4IDcuMzAxODQgMSA1LjAwMDY1IDFDMi42OTk0NiAxIDAuODMzOTg0IDIuODY1NDggMC44MzM5ODQgNS4xNjY2N0MwLjgzMzk4NCA3LjQ2Nzg1IDIuNjk5NDYgOS4zMzMzMyA1LjAwMDY1IDkuMzMzMzNaXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgMy45MTc5N0w2LjI1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyIG5vcm1hbFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICB7e2kgIT09IHNlbGVjdGVkT3B0aW9uTGFiZWxzLmxlbmd0aCAtIDE/IGl0ZW0gKyAnLCAnOml0ZW19fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd1NlbGVjdEFsbCB8fCBmaWx0ZXJcIiBjbGFzcz1cImFjdGlvbnMtc2VjdGlvbiBmbGV4XCI+XG4gICAgICAgIDxpbnB1dCAqbmdJZj1cImFsbG93U2VsZWN0QWxsXCIgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKCRldmVudClcIiB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQWxsXCJcbiAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LWFsbC1jYXB0aW9uXCIgKm5nSWY9XCJhbGxvd1NlbGVjdEFsbCAmJiAhZmlsdGVyXCI+U2VsZWN0IEFsbDwvc3Bhbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclwiIFtuZ0NsYXNzXT1cInsnZm9jdXNlZCc6IGlzSW5wdXRGb2N1c2VkfVwiIHRhYmluZGV4PVwiMFwiIChmb2N1cyk9XCJvblNlYXJjaEZvY3VzKClcIlxuICAgICAgICAgIChibHVyKT1cIm9uU2VhcmNoQmx1cigpXCIgY2xhc3M9XCJzZWFyY2gtc2VjdGlvbiBmbGV4XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmbGV4XCI+XG4gICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwic2VhcmNoXCIgc3Ryb2tlPVwiIzY0NzQ4YlwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8IS0tIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI4XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCI+PC9jaXJjbGU+XG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTRcIiB5MT1cIjE0XCIgeDI9XCIxOVwiIHkyPVwiMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+PC9saW5lPlxuICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRDb250ZXh0c1t0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMV1cIiBjbGFzcz1cInNlYXJjaC1jb250ZXh0XCI+XG4gICAgICAgICAgICB7e3RoaXMuZ2V0T3B0aW9uTGFiZWwodGhpcy5zZWxlY3RlZENvbnRleHRzW3RoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXSl9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlucHV0IChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hDb250ZXh0XCIgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dIb3Jpem9udGFsTGluZVwiIGNsYXNzPVwiY29sb3JlZC11bmRlcmxpbmUtc2VjdGlvblwiPlxuICAgICAgICA8aHIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaG9yaXpvbnRhbExpbmVDb2xvclwiIGNsYXNzPVwiY29sb3JlZC11bmRlcmxpbmVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1kb3duLW1lbnUtaXRlbVwiPlxuICAgICAgICA8ZHJvcC1kb3duLWl0ZW0gW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIiBbZ3JvdXBUZW1wbGF0ZV09XCJncm91cFRlbXBsYXRlXCIgW2FjdGl2ZUl0ZW1dPVwic2VsZWN0ZWRPcHRpb25cIlxuICAgICAgICAgIFthY3RpdmVJdGVtc109XCJzZWxlY3RlZE9wdGlvbnNcIiBbbXVsdGlzZWxlY3RdPVwibXVsdGlzZWxlY3RcIiBbb3B0aW9uVmFsdWVdPVwib3B0aW9uVmFsdWVcIlxuICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJvcHRpb25MYWJlbFwiIFtvcHRpb25TdWJMYWJlbF09XCJvcHRpb25TdWJMYWJlbFwiIFtzZWxlY3RLZXldPVwic2VsZWN0S2V5XCJcbiAgICAgICAgICBbbG9hZE1vcmVDYXB0aW9uXT1cImxvYWRNb3JlQ2FwdGlvblwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbb25FeHBhbmRdPVwiZXhwYW5kTWVudS5iaW5kKHRoaXMpXCJcbiAgICAgICAgICBbb25Mb2FkTW9yZV09XCJsb2FkTW9yZU1lbnVJdGVtcy5iaW5kKHRoaXMpXCIgW29uU2VsZWN0XT1cIm9uU2VsZWN0LmJpbmQodGhpcylcIj48L2Ryb3AtZG93bi1pdGVtPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibGF6eUxvYWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VlLW1vcmUtY29udGFpbmVyIGZsZXgganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VlLW1vcmUtY2FwdGlvblwiIChjbGljayk9XCJsb2FkTW9yZSgpXCI+e3tsb2FkTW9yZUNhcHRpb259fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
776
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQXlCMUQsTUFBTSxPQUFPLGlCQUFpQjtJ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QUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBSUMsTUFBTTtzQkFBM0IsWUFBWTt1QkFBQyxNQUFNO2dCQThnQnBCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVJdGVtIH0gZnJvbSAnLi9Ecm9wZG93bk1lbnVJdGVtJztcbmltcG9ydCB7IERyb3Bkb3duTG9hZEV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkxvYWRFdmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL1RlbXBsYXRlRGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkNoYW5nZUV2ZW50JztcbmltcG9ydCB7IERyb3BEb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGlzRXF1YWwsIGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnL3N2Zy5tb2R1bGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyIGV4dGVuZHMgRHJvcGRvd25NZW51SXRlbSB7XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpdGVtcz86IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW107XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgY29weTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXTtcbiAgbG9hZFRpbWVzPzogRHJvcGRvd25Mb2FkRXZlbnQ7XG4gIGxvYWRUaW1lc0NvcHk/OiBEcm9wZG93bkxvYWRFdmVudDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWRyb3AtZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJvcERvd25JdGVtQ29tcG9uZW50LFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTdmdNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcm9wLWRvd24uY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIERyb3BEb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICAvLyBJTlRFUk5BTFxuICBwcml2YXRlIF9vcHRpb25zOiBhbnlbXSA9IFtdOyAvLyBJbnRlcm5hbCB2YXJpYWJsZSBmb3Igb3B0aW9uc1xuXG4gIC8vIElOUFVUU1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogYW55W10pIHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlKSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHZhbHVlKTsgLy8gU2V0IHRoZSBpbnRlcm5hbCBvcHRpb25zIHZhcmlhYmxlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7IC8vIFJldHVybiB0aGUgaW50ZXJuYWwgb3B0aW9ucyB2YXJpYWJsZVxuICB9XG5cbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcxMnJlbSc7XG4gIEBJbnB1dCgpIHNob3dIb3Jpem9udGFsTGluZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhvcml6b250YWxMaW5lQ29sb3I6IHN0cmluZyA9ICdyZ2JhKDI1NSwgMjMwLCAxMjksIDEpJztcbiAgQElucHV0KCkgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvblN1YkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGludmFsaWRNZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclBvc2l0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbG9hZE1vcmVDYXB0aW9uOiBzdHJpbmcgPSAnU2VlIG1vcmUnO1xuICBASW5wdXQoKSBkaXNwbGF5OiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXp5TG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZ3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF2b2lkRHVwbGljYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyQnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZTogbnVtYmVyID0gNTAwO1xuICBASW5wdXQoKSBtaW5DaGFyOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkPzogKGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcbiAgQElucHV0KCkgYXN5bmNMYWJlbD86IChjb250ZXh0OiBhbnkpID0+IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpIHNlYXJjaD86IChkYXRhOiBhbnksIGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcblxuICAvLyBPVVRQVVRTXG4gIEBPdXRwdXQoKSBvcHRpb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxEcm9wZG93bkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG9uSXRlbUNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vVEVNUExBVElOR1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGRyb3Bkb3duQ29udGFpbmVyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25FeHBhbnNpb24nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZHJvcGRvd25FeHBhbnNpb24hOiBFbGVtZW50UmVmO1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsOyAvLyBBbGxvdyBudWxsIGZvciBjdXN0b20gaXRlbSB0ZW1wbGF0ZVxuICBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLy9WQVJJQUJMRVNcbiAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2FkVGltZXM6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIGluaXRpYWxJbmNyZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcbiAgc2VsZWN0ZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uTGFiZWxzOiBhbnlbXSA9IFtdO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3B0aW9uc0NvcHk6IGFueVtdID0gW107XG4gIGxvYWRUaW1lc0NvcHk6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIHNlbGVjdGVkQ29udGV4dHM6IGFueVtdID0gW107XG4gIHNlYXJjaEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG4gIHNlYXJjaFRlcm0kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBzZWFyY2hDb250ZXh0OiBzdHJpbmcgPSAnJztcbiAgYWxsb3dTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRBbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzOyAvLyBBc3NpZ24gdGhpcyBjb21wb25lbnQgYXMgdGhlIHZhbHVlIGFjY2Vzc29yXG4gICAgICB0aGlzLm5nQ29udHJvbD8uc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0ludmFsaWQgPSB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgPyBzdGF0dXMgPT09ICdJTlZBTElEJyAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKCF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBpc0FsbG93ZWQgPSB0cnVlO1xuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5sYXp5TG9hZCkge1xuICAgICAgICAgICAgICBpc0FsbG93ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSBpc0FsbG93ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5ID0gY2xvbmVEZWVwKHRoaXMuX29wdGlvbnMpO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpKSAvLyBBZGp1c3QgZGVib3VuY2UgdGltZSBoZXJlIChpbiBtcylcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAoc2VhcmNoVGVybSkgPT4ge1xuICAgICAgICAgIGlmIChzZWFyY2hUZXJtLmxlbmd0aCA8IHRoaXMubWluQ2hhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VhcmNoICYmIGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaXRlbS5zZWFyY2goc2VhcmNoVGVybSwgaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgICAgICAgaXRlbS5pdGVtcyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2ggJiYgdGhpcy5sb2FkVGltZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlYXJjaChzZWFyY2hUZXJtLCB0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaENvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZURpcmVjdGl2ZSkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlRGlyZWN0aXZlLnZUZW1wbGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVEaXJlY3RpdmUudlRlbXBsYXRlID09PSAnaXRlbScpIHtcbiAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZURpcmVjdGl2ZS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZURpcmVjdGl2ZS52VGVtcGxhdGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWFyY2hGb2N1cygpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uU2VhcmNoQmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbklucHV0Qmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvblNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGl0ZW0uaXRlbXMgPSBjbG9uZURlZXAoaXRlbS5jb3B5KTtcbiAgICAgICAgaXRlbS5sb2FkVGltZXMgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpdGVtLmZpbHRlckJ5KSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0gPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgbmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnaScpLnRlc3QoeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLmNvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgIHR5cGVvZiB4LnZhbHVlID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgudmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnNDb3B5KTtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zQ29weS5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHhbdGhpcy5maWx0ZXJCeSFdID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHhbdGhpcy5maWx0ZXJCeSFdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9uc0NvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+IHR5cGVvZiB4ID09ICdzdHJpbmcnICYmIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cblxuICBoYXNTaWJsaW5nKHNpYmxpbmdzOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihzaWJsaW5nc1tpXSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZXhwYW5kTWVudShcbiAgICBpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcixcbiAgICBzaWJsaW5nczogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXVxuICApIHtcbiAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGZvciAobGV0IGl0IG9mIHNpYmxpbmdzLmZpbHRlcigoeCkgPT4geCAhPT0gaXRlbSkpIHtcbiAgICAgICAgICBpZiAoaXQuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIGl0LmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpdC5sb2FkVGltZXMgJiYgaXQubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpdGVtLmV4cGFuZGVkID0gIWl0ZW0uZXhwYW5kZWQ7XG4gICAgICBpZiAoaXRlbS5leHBhbmRlZCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBzaWJsaW5nQ2hlY2sgPSB0aGlzLmhhc1NpYmxpbmcoc2libGluZ3MpO1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoID4gMCAmJiBzaWJsaW5nQ2hlY2sgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRzTGVuZ3RoID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoXG4gICAgICAgICAgICAgIHNpYmxpbmdDaGVjayxcbiAgICAgICAgICAgICAgY29udGV4dHNMZW5ndGggLSBzaWJsaW5nQ2hlY2tcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIGlmIChzaWJsaW5nQ2hlY2sgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5LnB1c2godGhpcy5zZWFyY2hDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ubGF6eUxvYWQgJiYgaXRlbS5sb2FkTW9yZSAmJiBpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaXRlbS5sb2FkTW9yZShpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgaXRlbS5pdGVtcyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgICAgaXRlbS5sb2FkVGltZXNDb3B5ID0gY2xvbmVEZWVwKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgIGNvbnN0IGNvbnRleHRzTGVuZ3RoID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aDtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnNwbGljZShpbmRleCwgY29udGV4dHNMZW5ndGggLSBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgICBpdGVtLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hIaXN0b3J5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udGV4dCA9XG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoSGlzdG9yeVt0aGlzLnNlYXJjaEhpc3RvcnkubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEhpc3Rvcnkuc3BsaWNlKHRoaXMuc2VhcmNoSGlzdG9yeS5sZW5ndGggLSAxLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTW9yZU1lbnVJdGVtcyhpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcikge1xuICAgIGlmIChpdGVtLmxvYWRNb3JlICYmIGl0ZW0ubG9hZFRpbWVzICYmIGl0ZW0uaXRlbXMpIHtcbiAgICAgIGNvbnN0IHNlYXJjaENvbnRleHQgPSB0aGlzLnNlYXJjaENvbnRleHQudHJpbSgpO1xuICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdmFyIHJlc3VsdCA9XG4gICAgICAgIHNlYXJjaENvbnRleHQubGVuZ3RoID4gMCAmJiBpdGVtLnNlYXJjaFxuICAgICAgICAgID8gYXdhaXQgaXRlbS5zZWFyY2goc2VhcmNoQ29udGV4dCwgaXRlbS5sb2FkVGltZXMpXG4gICAgICAgICAgOiBhd2FpdCBpdGVtLmxvYWRNb3JlKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgIGl0ZW0uaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIGZvciAobGV0IHJlcyBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgaXRlbS5pdGVtcy5wdXNoKHJlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIWl0ZW0uc2VhcmNoKSB7XG4gICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgaWYgKHRoaXMubG9hZCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmluaXRpYWxJbmNyZW1lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbEluY3JlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IHRoaXMuc2VhcmNoKHNlYXJjaENvbnRleHQsIHRoaXMubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5sb2FkKHRoaXMubG9hZFRpbWVzKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZFRpbWVzLmluY3JlYXNlTG9hZFRpbWUoKTtcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgcmVzdWx0KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGlmIChzZWFyY2hDb250ZXh0Lmxlbmd0aCA9PSAwIHx8ICF0aGlzLnNlYXJjaCkge1xuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSBjbG9uZURlZXAodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmdyb3VwXG4gICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRUb0V4cGFuZGFibGUoaXRlbXM6IERyb3Bkb3duTWVudUl0ZW1bXSk6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10ge1xuICAgIGNvbnN0IHdyYXBwZXI6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWRJdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlciA9IHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICBsb2FkVGltZXM6IGl0ZW0uaXRlbXMgPyBuZXcgRHJvcGRvd25Mb2FkRXZlbnQoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgbG9hZFRpbWVzQ29weTogaXRlbS5pdGVtcyA/IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpIDogdW5kZWZpbmVkLFxuICAgICAgICBpdGVtczogaXRlbS5pdGVtcyA/IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShpdGVtLml0ZW1zKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY29weTogaXRlbS5pdGVtcyA/IGNsb25lRGVlcCh0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUoaXRlbS5pdGVtcykpIDogW10sXG4gICAgICB9O1xuICAgICAgd3JhcHBlci5wdXNoKGNvbnZlcnRlZEl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gd3JhcHBlcjtcbiAgfVxuXG4gIG9uU2VsZWN0QWxsKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoW10pO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogW10gfSk7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZShvcHRpb24pO1xuICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG9wdGlvbi5pdGVtcykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja011bHRpc2VsZWN0VmFsdWUoaXRlbSk7XG4gICAgICAgICAgaWYgKGluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShpdGVtKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5nZXRPcHRpb25MYWJlbChpdGVtKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMgfSk7XG4gIH1cblxuICBjbGVhclNlbGVjdGlvbihldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gbnVsbDtcbiAgICAgIHRoaXMub25JdGVtQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogbnVsbCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgIHRoaXMub25JdGVtQ2hhbmdlKFtdKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IFtdIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgdGhpcy5vbkNsZWFyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25TZWxlY3QodmFsdWU6IGFueSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5nZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSB0aGlzLmdldE9wdGlvbkxhYmVsKHZhbHVlKTtcbiAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuZ2V0VmFsdWUodmFsdWUpKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMuZ2V0VmFsdWUodmFsdWUpIH0pO1xuICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleGlzdHMgPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZSh2YWx1ZSk7XG4gICAgICBpZiAoZXhpc3RzID09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gW1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zLFxuICAgICAgICAgIHRoaXMuZ2V0VmFsdWUodmFsdWUpLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtcbiAgICAgICAgICAuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLFxuICAgICAgICAgIHRoaXMuZ2V0T3B0aW9uTGFiZWwodmFsdWUpLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IG5ld1NlbGVjdGVkT3B0aW9ucztcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzO1xuICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICAgICAgbmV3U2VsZWN0ZWRPcHRpb25zLnNwbGljZShleGlzdHMsIDEpO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzXTtcbiAgICAgICAgbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHMuc3BsaWNlKGV4aXN0cywgMSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9ucyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uc107XG4gICAgbmV3U2VsZWN0ZWRPcHRpb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsc107XG4gICAgbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IG5ld1NlbGVjdGVkT3B0aW9ucztcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgfVxuXG4gIGNoZWNrTXVsdGlzZWxlY3RWYWx1ZSh2YWx1ZTogYW55KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGlzRXF1YWwodGhpcy5zZWxlY3RlZE9wdGlvbnNbaV0sIHRoaXMuZ2V0VmFsdWUodmFsdWUpKSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAob2JqID09IG51bGwgfHwgb2JqID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb2JqO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBvYmo7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5ncm91cCAmJiAhdGhpcy5sYXp5TG9hZCkge1xuICAgICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgY29uc3QgZXF1YWxpdHlDaGVjayA9IHRoaXMuc2VsZWN0S2V5XG4gICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRWYWx1ZShvcHRpb24pW3RoaXMuc2VsZWN0S2V5XSxcbiAgICAgICAgICAgICAgICAob2JqICYmIG9ialt0aGlzLnNlbGVjdEtleV0pIHx8IG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqKTtcbiAgICAgICAgICBpZiAoZXF1YWxpdHlDaGVjaykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMuZ2V0VmFsdWUob3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbiB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9iajtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuYXN5bmNMYWJlbFxuICAgICAgICA/IHRoaXMuYXN5bmNMYWJlbChvYmopXG4gICAgICAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmopO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBpZiAoIXRoaXMuZ3JvdXAgJiYgIXRoaXMubGF6eUxvYWQpIHtcbiAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5Q2hlY2sgPSB0aGlzLnNlbGVjdEtleVxuICAgICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgICAgb2JqZWN0W3RoaXMuc2VsZWN0S2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqZWN0KTtcbiAgICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscy5wdXNoKHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gb2JqO1xuICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iaikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2goXG4gICAgICAgICAgdGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICA/IHRoaXMuYXN5bmNMYWJlbChvYmplY3QpXG4gICAgICAgICAgICA6IHRoaXMuZ2V0T3B0aW9uTGFiZWwob2JqZWN0KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRPcHRpb25Gcm9tVmFsdWUodmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IHZhbHVlLnZhbHVlIDogdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cFxuICAgICAgPyB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgeC52YWx1ZVt0aGlzLm9wdGlvblZhbHVlIV0gJiYgeC52YWx1ZVt0aGlzLm9wdGlvblZhbHVlIV0gPT0gdmFsdWVcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PiB4W3RoaXMub3B0aW9uVmFsdWUhXSAmJiB4W3RoaXMub3B0aW9uVmFsdWUhXSA9PSB2YWx1ZVxuICAgICAgICApO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1tpbmRleF07XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGdldFZhbHVlKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWUgOiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWVbdGhpcy5vcHRpb25WYWx1ZV0gOiBpdGVtW3RoaXMub3B0aW9uVmFsdWVdO1xuICB9XG4gIGdldE9wdGlvbkxhYmVsKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3B0aW9uTGFiZWwpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW1bdGhpcy5vcHRpb25MYWJlbF07XG4gIH1cblxuICBwcml2YXRlIGlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXJBcnJheSh2YWx1ZTogYW55W10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiB0aGlzLmlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXIoaXRlbSkpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFR5cGUgZ3VhcmQgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIG9mIHR5cGUgRHJvcGRvd25NZW51SXRlbVxuICBwcml2YXRlIGlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXIoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICdleHBhbmRlZCcgaW4gaXRlbTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIXRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICB0aGlzLmlzRXhwYW5kZWQgJiZcbiAgICAgIHRoaXMuZHJvcGRvd25FeHBhbnNpb24gJiZcbiAgICAgICF0aGlzLmRyb3Bkb3duRXhwYW5zaW9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICNkcm9wZG93bkNvbnRhaW5lciBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgY2xhc3M9XCJkcm9wLWRvd25cIj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsncmlnaHQtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICdyaWdodCcsICdsZWZ0LWVycm9yJzogZXJyb3JQb3NpdGlvbiA9PSAnbGVmdCcsICd0b3AtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICd0b3AnfVwiXG4gICAgY2xhc3M9XCJkcm9wLWRvd24taW5wdXQtd3JhcHBlclwiPlxuICAgIDxkaXYgKGNsaWNrKT1cIm9uRHJvcGRvd25DbGljaygkZXZlbnQpXCIgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIiBbY2xhc3MuZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICAgICAgW25nQ2xhc3NdPVwieyduZy1pbnZhbGlkJzogaXNJbnZhbGlkLCAnZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiB0YWJpbmRleD1cIjBcIlxuICAgICAgY2xhc3M9XCJkcm9wLWRvd24taW5wdXQgdmVyYmVuLWlucHV0IGZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tbWFpbi1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIihzZWxlY3RlZEl0ZW1UZW1wbGF0ZSAmJiBzZWxlY3RlZE9wdGlvbikgfHwgKHNlbGVjdGVkSXRlbVRlbXBsYXRlICYmIHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKTsgZWxzZSBkZWZhdWx0SXRlbVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkT3B0aW9uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiIGNsYXNzPVwiZGVmYXVsdC1pdGVtIGZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1sYWJlbCBwbGFjZS1ob2xkZXJcIiAqbmdJZj1cIiF0aGlzLnNlbGVjdGVkT3B0aW9uXCI+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvblwiIGNsYXNzPVwiaXRlbS1sYWJlbCBkcm9wZG93bi1sYWJlbFwiPlxuICAgICAgICAgICAgICB7e3RoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0XCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1sYWJlbCBwbGFjZS1ob2xkZXJcIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PSAwXCI+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgICAgICA8dmVyYmVuLXRvb2x0aXAgY3VzdG9tQ2xhc3M9XCJjdXN0b20tdG9vbHRpcC13aWR0aFwiIGJvcmRlcj1cIjFweCBzb2xpZCAjMzM0MTU1XCIgYmFja2dyb3VuZENvbG9yPVwid2hpdGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcENvbnRlbnRdPVwibXVsdGlzZWxlY3RUb29sdGlwXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvIGNoaXBcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01LjAwMDY1IDkuMzMzMzNDNy4zMDE4NCA5LjMzMzMzIDkuMTY3MzIgNy40Njc4NSA5LjE2NzMyIDUuMTY2NjdDOS4xNjczMiAyLjg2NTQ4IDcuMzAxODQgMSA1LjAwMDY1IDFDMi42OTk0NiAxIDAuODMzOTg0IDIuODY1NDggMC44MzM5ODQgNS4xNjY2N0MwLjgzMzk4NCA3LjQ2Nzg1IDIuNjk5NDYgOS4zMzMzMyA1LjAwMDY1IDkuMzMzMzNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1IDMuOTE3OTdMMy43NSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjc1IDMuOTE3OTdMNi4yNSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSAhPSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28gbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2kgIT09IHNlbGVjdGVkT3B0aW9uTGFiZWxzLmxlbmd0aCAtIDE/IGl0ZW0gKyAnLCAnOml0ZW19fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdmVyYmVuLXRvb2x0aXA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI211bHRpc2VsZWN0VG9vbHRpcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXNlbGVjdC1mdWxsLXZpZXdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiaXRlbS1sYWJlbCBkcm9wZG93bi1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvLXRvb2x0aXAgY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1IDMuOTE3OTdMMy43NSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy43NSAzLjkxNzk3TDYuMjUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyLXR3by10b29sdGlwLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiKHNob3dDbGVhciAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uICYmICFtdWx0aXNlbGVjdCkgfHwgKHNob3dDbGVhciAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwICYmIG11bHRpc2VsZWN0KVwiXG4gICAgICAgIChjbGljayk9XCJ0aGlzLmNsZWFyU2VsZWN0aW9uKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIGNsYXNzPVwiZHJvcC1kb3duLWljb24taXRlbSBkcm9wLWRvd24tY2xlYXItYnV0dG9uXCI+XG4gICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJjbG9zZS1uby1jaXJjbGVcIiBzdHJva2U9XCIjOTRhM2I4XCIgW3dpZHRoXT1cIjEzXCIgW2hlaWdodF09XCIxM1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiOVwiIGhlaWdodD1cIjlcIiB2aWV3Qm94PVwiMCAwIDkgOVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC44NDM3NSAwLjg0Mzc1TDguMTU2MjUgOC4xNTYyNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC44NDM3NSA4LjE1NjI1TDguMTU2MjUgMC44NDM3NVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImRyb3AtZG93bi1pY29uLWl0ZW0gZHJvcC1kb3duLWV4cGFuZC1idXR0b25cIj5cbiAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNoZXZyb24tZG93blwiIGZpbGw9XCIjOTRhM2I4XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCI4XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjdcIiB2aWV3Qm94PVwiMCAwIDEyIDdcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk02LjAwNTA3IDQuODgwMjdDNi4yMDIwNSA0LjYyNzc1IDYuMzA2ODMgNC40NjIyIDYuNDQwOTUgNC4zMjcwNEM3Ljc0MzM0IDMuMDE3MzEgOS4wNTIwMiAxLjcxMzg3IDEwLjM1NzYgMC40MDYyNDJDMTAuNTcxMyAwLjE5MjQ5NSAxMC43ODgyIDAuMDA5MTMzNjcgMTEuMTE5MyAwLjAxMDE4MTRDMTEuNDY5MiAwLjAxMTIyOTIgMTEuNzIyOCAwLjE1NzkyIDExLjg4ODQgMC40NTY1MzdDMTIuMDU3IDAuNzYwMzk0IDEyLjAzMDkgMS4wNjExMSAxMS44MzQ5IDEuMzQyOTZDMTEuNzY1OCAxLjQ0MjUgMTEuNjc2NyAxLjUyNzM3IDExLjU5MDggMS42MTQzM0M5Ljk4ODczIDMuMjE2MzkgOC4zNzMwNSA0LjgwNDgzIDYuNzkzIDYuNDI3ODRDNi4yOTExMSA2Ljk0MzM1IDUuNjg3NTkgNi45MjM0NCA1LjIxMzk5IDYuNDM4MzJDMy42MzE4NCA0LjgxNzQgMi4wMTgyNiAzLjIyNjg3IDAuNDE0MTA5IDEuNjI2OTFDMC4xMTY1MzkgMS4zMjkzNCAtMC4xMTYwNjcgMS4wMTkyIDAuMDYyMDU2MSAwLjU2NTUwN0MwLjI3MTYxMiAwLjAzMTEzOSAwLjg4MzUxOSAtMC4xNjc5NDEgMS4zNTUwMiAwLjE1NzkxOUMxLjQ5NjQ3IDAuMjU1MzYzIDEuNjE1OTIgMC4zODczODUgMS43Mzk1NSAwLjUwOTk3NUMzLjAyMjA0IDEuNzkwMzYgNC4zMDQ1MiAzLjA3MDc1IDUuNTgzODYgNC4zNTUzM0M1LjcwNjQ1IDQuNDc3OTIgNS44MDI4NCA0LjYyNjcxIDYuMDA2MTEgNC44ODEzMkw2LjAwNTA3IDQuODgwMjdaXCJcbiAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRoaXMuaXNJbnZhbGlkICYmIHRoaXMuaW52YWxpZE1lc3NhZ2VcIiBjbGFzcz1cInZlcmJlbi1lcnJvci1tZXNzYWdlIGVycm9yLW1lc3NhZ2VcIj57e2ludmFsaWRNZXNzYWdlfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5IFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwiZHJvcGRvd25Db250YWluZXIub2Zmc2V0V2lkdGhcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uXT1cImZhbHNlXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cIltcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgIH0sXG4gICAge1xuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICB9XG4gIF1cIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNFeHBhbmRlZFwiIChkZXRhY2gpPVwiaXNFeHBhbmRlZCA9IGZhbHNlXCI+XG4gICAgPGRpdiAjZHJvcGRvd25FeHBhbnNpb24gY2xhc3M9XCJkcm9wLWRvd24tbWVudS1pdGVtLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdCAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ID09ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyIGNoaXAgZmxleFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgZmxleFwiPlxuICAgICAgICAgICAgPHNwYW4+e3tpdGVtfX08L3NwYW4+XG4gICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KVwiIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8IS0tIDxzdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudClcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01LjAwMDY1IDkuMzMzMzNDNy4zMDE4NCA5LjMzMzMzIDkuMTY3MzIgNy40Njc4NSA5LjE2NzMyIDUuMTY2NjdDOS4xNjczMiAyLjg2NTQ4IDcuMzAxODQgMSA1LjAwMDY1IDFDMi42OTk0NiAxIDAuODMzOTg0IDIuODY1NDggMC44MzM5ODQgNS4xNjY2N0MwLjgzMzk4NCA3LjQ2Nzg1IDIuNjk5NDYgOS4zMzMzMyA1LjAwMDY1IDkuMzMzMzNaXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgMy45MTc5N0w2LjI1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyIG5vcm1hbFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICB7e2kgIT09IHNlbGVjdGVkT3B0aW9uTGFiZWxzLmxlbmd0aCAtIDE/IGl0ZW0gKyAnLCAnOml0ZW19fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd1NlbGVjdEFsbCB8fCBmaWx0ZXJcIiBjbGFzcz1cImFjdGlvbnMtc2VjdGlvbiBmbGV4XCI+XG4gICAgICAgIDxpbnB1dCAqbmdJZj1cImFsbG93U2VsZWN0QWxsXCIgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKCRldmVudClcIiB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQWxsXCJcbiAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LWFsbC1jYXB0aW9uXCIgKm5nSWY9XCJhbGxvd1NlbGVjdEFsbCAmJiAhZmlsdGVyXCI+U2VsZWN0IEFsbDwvc3Bhbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclwiIFtuZ0NsYXNzXT1cInsnZm9jdXNlZCc6IGlzSW5wdXRGb2N1c2VkfVwiIHRhYmluZGV4PVwiMFwiIChmb2N1cyk9XCJvblNlYXJjaEZvY3VzKClcIlxuICAgICAgICAgIChibHVyKT1cIm9uU2VhcmNoQmx1cigpXCIgY2xhc3M9XCJzZWFyY2gtc2VjdGlvbiBmbGV4XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmbGV4XCI+XG4gICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwic2VhcmNoXCIgc3Ryb2tlPVwiIzY0NzQ4YlwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8IS0tIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI4XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCI+PC9jaXJjbGU+XG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTRcIiB5MT1cIjE0XCIgeDI9XCIxOVwiIHkyPVwiMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+PC9saW5lPlxuICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRDb250ZXh0c1t0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMV1cIiBjbGFzcz1cInNlYXJjaC1jb250ZXh0XCI+XG4gICAgICAgICAgICB7e3RoaXMuZ2V0T3B0aW9uTGFiZWwodGhpcy5zZWxlY3RlZENvbnRleHRzW3RoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXSl9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlucHV0IChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hDb250ZXh0XCIgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dIb3Jpem9udGFsTGluZVwiIGNsYXNzPVwiY29sb3JlZC11bmRlcmxpbmUtc2VjdGlvblwiPlxuICAgICAgICA8aHIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaG9yaXpvbnRhbExpbmVDb2xvclwiIGNsYXNzPVwiY29sb3JlZC11bmRlcmxpbmVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1kb3duLW1lbnUtaXRlbVwiPlxuICAgICAgICA8ZHJvcC1kb3duLWl0ZW0gW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIiBbZ3JvdXBUZW1wbGF0ZV09XCJncm91cFRlbXBsYXRlXCIgW2FjdGl2ZUl0ZW1dPVwic2VsZWN0ZWRPcHRpb25cIlxuICAgICAgICAgIFthY3RpdmVJdGVtc109XCJzZWxlY3RlZE9wdGlvbnNcIiBbbXVsdGlzZWxlY3RdPVwibXVsdGlzZWxlY3RcIiBbb3B0aW9uVmFsdWVdPVwib3B0aW9uVmFsdWVcIlxuICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJvcHRpb25MYWJlbFwiIFtvcHRpb25TdWJMYWJlbF09XCJvcHRpb25TdWJMYWJlbFwiIFtzZWxlY3RLZXldPVwic2VsZWN0S2V5XCJcbiAgICAgICAgICBbbG9hZE1vcmVDYXB0aW9uXT1cImxvYWRNb3JlQ2FwdGlvblwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbb25FeHBhbmRdPVwiZXhwYW5kTWVudS5iaW5kKHRoaXMpXCJcbiAgICAgICAgICBbb25Mb2FkTW9yZV09XCJsb2FkTW9yZU1lbnVJdGVtcy5iaW5kKHRoaXMpXCIgW29uU2VsZWN0XT1cIm9uU2VsZWN0LmJpbmQodGhpcylcIj48L2Ryb3AtZG93bi1pdGVtPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibGF6eUxvYWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VlLW1vcmUtY29udGFpbmVyIGZsZXgganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VlLW1vcmUtY2FwdGlvblwiIChjbGljayk9XCJsb2FkTW9yZSgpXCI+e3tsb2FkTW9yZUNhcHRpb259fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -512,7 +512,7 @@ class DropDownItemComponent {
|
|
|
512
512
|
ngOnInit() { }
|
|
513
513
|
isEqual(value, other) {
|
|
514
514
|
return this.selectKey
|
|
515
|
-
? isEqual(value[this.selectKey], other[this.selectKey])
|
|
515
|
+
? isEqual((value && value[this.selectKey]) || null, other[this.selectKey])
|
|
516
516
|
: isEqual(value, other);
|
|
517
517
|
}
|
|
518
518
|
isSelected(value, other) {
|
|
@@ -1158,7 +1158,7 @@ class DropDownComponent {
|
|
|
1158
1158
|
const index = this.checkMultiselectValue(item);
|
|
1159
1159
|
if (index == null) {
|
|
1160
1160
|
this.selectedOptions.push(this.getValue(item));
|
|
1161
|
-
this.selectedOptionLabels.push(this.getOptionLabel(
|
|
1161
|
+
this.selectedOptionLabels.push(this.getOptionLabel(item));
|
|
1162
1162
|
}
|
|
1163
1163
|
}
|
|
1164
1164
|
}
|
|
@@ -1265,7 +1265,7 @@ class DropDownComponent {
|
|
|
1265
1265
|
if (!this.group && !this.lazyLoad) {
|
|
1266
1266
|
for (let option of this.options) {
|
|
1267
1267
|
const equalityCheck = this.selectKey
|
|
1268
|
-
? isEqual(this.getValue(option)[this.selectKey], obj[this.selectKey])
|
|
1268
|
+
? isEqual(this.getValue(option)[this.selectKey], (obj && obj[this.selectKey]) || null)
|
|
1269
1269
|
: isEqual(this.getValue(option), obj);
|
|
1270
1270
|
if (equalityCheck) {
|
|
1271
1271
|
this.selectedOption = this.getValue(option);
|