Li4gQWxnb3JpdGhtcy9Db25jZXB0cy8vSW5zZXJ0ZXIKCkluc2VydGVyCj09PT09PT09CgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKQW4gfEluc2VydGVyfCBpcyBhIGNvbXBpbGUtdGltZSBzdWJzdGl0dXRlIGZvciBTVEwgfE91dHB1dCBJdGVyYXRvcnwuIApVbmRlciB0aGUgaG9vZCwgaXQncyBzaW1wbHkgYSB0eXBlIGhvbGRpbmcgCnR3byBlbnRpdGllczogYSAqc3RhdGUqIGFuZCBhbiAqb3BlcmF0aW9uKi4gV2hlbiBwYXNzZWQgdG8gYSAKfHRyYW5zZm9ybWF0aW9uIGFsZ29yaXRobXwsIHRoZSBpbnNlcnRlcidzIGJpbmFyeSBvcGVyYXRpb24gaXMKaW52b2tlZCBmb3IgZXZlcnkgZWxlbWVudCB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHdyaXR0ZW4gaW50byB0aGUgCm91dHB1dCBpdGVyYXRvciwgd2l0aCB0aGUgZWxlbWVudCBpdHNlbGYgKGFzIHRoZSBzZWNvbmQKYXJndW1lbnQpIGFuZCB0aGUgcmVzdWx0IG9mIHRoZSBwcmV2aW91cyBvcGVyYXRpb24ncyBpbnZvY2F0aW9uIHwtLXwgb3IsCmZvciB0aGUgdmVyeSBmaXJzdCBlbGVtZW50LCB0aGUgaW5zZXJ0ZXIncyBpbml0aWFsIHN0YXRlLiAKClRlY2huaWNhbGx5LCBpbnN0ZWFkIG9mIHRha2luZyBhIHNpbmdsZSBpbnNlcnRlciBwYXJhbWV0ZXIsCnx0cmFuc2Zvcm1hdGlvbiBhbGdvcml0aG1zfCBjb3VsZCBhY2NlcHQgdGhlIHN0YXRlIGFuZCB0aGUgIm91dHB1dCIKb3BlcmF0aW9uIHNlcGFyYXRlbHkuIEdyb3VwaW5nIHRoZXNlIGluIGEgc2luZ2xlIHBhcmFtZXRlciBlbnRpdHksIApob3dldmVyLCBicmluZ3MgdGhlIGFsZ29yaXRobXMgc2VtYW50aWNhbGx5IGFuZCBzeW50YWN0aWNhbGx5IGNsb3NlciB0byAKdGhlaXIgU1RMIGNvdW50ZXJwYXJ0cywgc2lnbmlmaWNhbnRseSBzaW1wbGlmeWluZyBtYW55IG9mIHRoZSBjb21tb24gCnVzZSBjYXNlcy4KCgpWYWxpZCBleHByZXNzaW9ucwotLS0tLS0tLS0tLS0tLS0tLQoKfEluIHRoZSBmb2xsb3dpbmcgdGFibGUuLi58IGBgaW5gYCBpcyBhIG1vZGVsIG9mIHxJbnNlcnRlcnwuCgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IGBgaW46OnN0YXRlYGAgICAgICAgICB8IEFueSB0eXBlICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgYGBpbjo6b3BlcmF0aW9uYGAgICAgIHwgQmluYXJ5IHxMYW1iZGEgRXhwcmVzc2lvbnwgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgRXhwcmVzc2lvbiAgICAgICAgICAgIHwgU2VtYW50aWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorPT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYGluOjpzdGF0ZWBgICAgICAgICAgfCBUaGUgaW5zZXJ0ZXIncyBpbml0aWFsIHN0YXRlLiAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IGBgaW46Om9wZXJhdGlvbmBgICAgICB8IFRoZSBpbnNlcnRlcidzICJvdXRwdXQiIG9wZXJhdGlvbi4gICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKRXhhbXBsZQotLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CgogICAgdHlwZWRlZiB0cmFuc2Zvcm08CiAgICAgICAgICByYW5nZV9jPGludCwwLDEwPgogICAgICAgICwgcGx1czxfMSxfMT4KICAgICAgICAsIGJhY2tfaW5zZXJ0ZXI8IHZlY3RvcjA8PiA+CiAgICAgICAgPjo6dHlwZSByZXN1bHQ7CgoKTW9kZWxzCi0tLS0tLQoKKiB8W2luc2VydGVyXXwKKiB8ZnJvbnRfaW5zZXJ0ZXJ8CiogfGJhY2tfaW5zZXJ0ZXJ8CgpTZWUgYWxzbwotLS0tLS0tLQoKfEFsZ29yaXRobXN8LCB8VHJhbnNmb3JtYXRpb24gQWxnb3JpdGhtc3wsIHxbaW5zZXJ0ZXJdfCwgfGZyb250X2luc2VydGVyfCwgfGJhY2tfaW5zZXJ0ZXJ8CgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=