VGhlIHRoaW5nIHRvIHVuZGVyc3RhbmQgYWJvdXQgQyBpcyB0aGF0IHRoZSB0eXBlIG9mIGFuIGV4 cHJlc3Npb24gKG9yIHN1Yi1leHByZXNzaW9uKSBkZXBlbmRzIFNPTEVMWSBvbiB0aGUgdHlwZXMg b2YgdGhlIG9wZXJhbmRzOyB0aGUgdHlwZSBvZiBhIHZhcmlhYmxlIHRvIHdoaWNoIHRoZSByZXN1 bHQgd2lsbCBiZSBhc3NpZ25lZCBwbGF5cyBubyBwYXJ0IGluIHRoZSBwcm9jZXNzLiAgU28gb24g YSBwbGF0Zm9ybSB3aXRoIDE2LWJpdCBpbnRzLCB5b3UgYXJlIHBlcmZvcm1pbmcgZm91ciAxNi1i aXQgc2hpZnRzLCB3aGljaCBhcmUgT1LigJlkIHRvZ2V0aGVyIHRvIHByb2R1Y2UgYSAxNi1iaXQg cmVzdWx0LiAgSW4gZmFjdCwgdGhlICgnRCc8PDI0KSBhbmQgKCdDJzw8MTYpIHBhcnRzIGhhdmUg dW5kZWZpbmVkIHJlc3VsdHMgLSB5b3UgYXJlbuKAmXQgYWxsb3dlZCB0byBzaGlmdCBieSBhbiBh bW91bnQgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIHRoZSBiaXQgc2l6ZSBvZiB0aGUgdHlwZSwg YXMgQ1BVcyBnZW5lcmFsbHkgZG9u4oCZdCBpbXBsZW1lbnQgYSByYW5nZSBhbnkgbGFyZ2VyIHRo YW4gdGhhdCBpbiB0aGVpciBzaGlmdCBvcGNvZGVzLgoKVHlwZWNhc3RpbmcgdGhlIHJlc3VsdHMg b2YgdGhlIHNoaWZ0cyBjYW5ub3QgcG9zc2libHkgZml4IHRoZSBwcm9ibGVtLCBhcyB0aGUgZGFt YWdlIHdhcyBhbHJlYWR5IGRvbmUgaW4gdGhlIHNoaWZ0cyB0aGVtc2VsdmVzLiAgWW91IGhhdmUg dG8gY2FzdCBhdCBsZWFzdCBvbmUgb3BlcmFuZCBvZiB0aGUgb3ZlcmZsb3dpbmcgc2hpZnRzIHRv IGEgMzItYml0IHR5cGUsIHNvIHRoYXQgdGhlIHNoaWZ0IHdvcmtzIGNvcnJlY3RseS4gIFlvdSBj b3VsZCB1cGNhc3QgdGhlIGNoYXIgY29uc3RhbnRzIC0gYnV0IHRoYXQgZ2V0cyByYXRoZXIgdmVy Ym9zZTsgaXQgd29ya3MganVzdCBhcyB3ZWxsIHRvIHVwY2FzdCB0aGUgc2hpZnQgYW1vdW50cywg YW5kIHRoYXTigJlzIGEgbG90IHNob3J0ZXIgdG8gd3JpdGUuICBUaGUgQyBsYW5ndWFnZSB0cmVh dHMgYm90aCBvcGVyYW5kIHR5cGVzIGVxdWFsbHksIGRlc3BpdGUgaG93IGxpdHRsZSBzZW5zZSB0 aGF0IG1ha2VzIGluIHRoZSBjYXNlIG9mIHNoaWZ0cy4gIFNvIEnigJlkIHdyaXRlIHRoaXMgYXM6 Cgp1aW50MzJfdCBkcyA9ICgnRCc8PDI0TCl8KCdDJzw8MTZMKSB8KCdCJzw8OCl8KCdBJyk7Cgo+ IE9uIEF1ZyAxMSwgMjAxOCwgYXQgNjowOSBBTSwgSnVzdGluIFJpY2hhcmRzIDxqdXN0aW4ucmlj aGFyZHNAZ21haWwuY29tPiB3cm90ZToKPiAKPiBTbyB0cnlpbmcgdGhpcwo+IAo+IHVpbnQzMl90 IGRzID0gKCdEJzw8MjQpfCgnQyc8PDE2KSB8KCdCJzw8OCl8KCdBJyk7Cj4gCj4gd2hlbiBjb21w aWxlZCBmb3IgYW4gRVNQODI2NiB0YXJnZXQgaW4gYXJkdWlubyBJREUgYW5kIHByaW50ZWQgZ2l2 ZXMKPiAKPiAweDQ0NDM0MjQxIGFzIGV4cGVjdGVkLgo+IAo+IHdoZW4gdGhlIHRhcmdldCBpcyBV Tk8gaXQgcHJvZHVjZXMKPiAKPiAweDQyNDEKCi0tIApodHRwOi8vd3d3LnBpY2xpc3QuY29tL3Rl Y2hyZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlClZpZXcvY2hhbmdlIHlvdXIg bWVtYmVyc2hpcCBvcHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0 aW5mby9waWNsaXN0Cg== .