VGhlIG1lY2hhbmlzbSBvZiB0aGUgc2VxdWVuY2UgY291bnQgd29ya3MgZGlmZmVyZW50bHkgdGhh biB0aGUgdGltZQpyb2xsLW92ZXIuCgpXaXRoIHR3byBieXRlcyB5b3Ugd2lsbCBoYXZlIDY1NTM2 IHBvc3NpYmxlIHZhbHVlcywgYnV0IHlvdXIgRUVQUk9NCm1lbW9yeSBoYXMgcm9vbSBmb3IsIHNh eSwgMTI4IHJlY29yZHMuCgpTbyBpZiBhbnkgcmVjb3JkIGhhcyBzZXF1ZW5jZSBudW1iZXIgbW9y ZSB0aGFuIDEyOCBjb3VudHMgQUhFQUQgb2YgdGhlCm9uZSB5b3UgaGF2ZSwgaXQgaXMgb2xkZXIu IFdlIGNvdWxkIGluY3JlYXNlIChkb3VibGUgaXQsIGZvciBpbnN0YW5jZSkKdGhpcyB0aHJlc2hv bGQgdG8gYWNjb3VudCBmb3Igc29tZSBsb3N0IHJlY29yZCBpbi1iZXR3ZWVuLgoKWW91IGNvbXBh cmUgc2VxdWVuY2UgbnVtYmVycyBieSBzdWJ0cmFjdGluZyB0aGVtIGFuZCBkb2luZyBhbiB1bnNp Z25lZApjb21wYXJlOgoKaWYoICh1aW50MTZfdCkoIFNlcTIgLSBTZXExICkgPCBUSFJFU0hPTEQg KQrCoMKgwqAgewrCoMKgwqAgLyogUmVjb3JkIHdpdGggc2VxdWVuY2UgU2VxMiBpcyBuZXdlciB0 aGFuIHJlY29yZCB3aXRoIHNlcXVlbmNlIFNlcTEgKi8KwqDCoMKgIH0KClRoaXMgbWV0aG9kIHRh a2VzIGNhcmUgb2Ygcm9sbC1vdmVyLCB5b3Ugd2lsbCBuZXZlciBuZWVkIHRvIGNoZWNrIGZvcgpv dmVyZmxvdy4KCgpFeGFtcGxlOgoKI2RlZmluZSBUSFJFU0hPTETCoMKgwqAgMjU2CgppbnTCoMKg wqAgTmV3ZXN0UmVjb3JkwqDCoMKgID0gLTE7CmZvciggaW50IGkgPSAwOyBpIDwgTnVtUmVjb3Jk czsgaSsrICkKwqDCoMKgIHsKwqDCoMKgIGlmKCBWYWxpZGF0ZVJlY29yZCggaSApKQrCoMKgwqAg wqDCoMKgIHsKwqDCoMKgIMKgwqDCoCBpZiggTmV3ZXN0UmVjb3JkIDwgMCB8fCAodWludDE2X3Qp KCBHZXRTZXF1ZW5jZSggaSApIC0KR2V0U2VxdWVuY2UoIE5ld2VzdFJlY29yZCApKSA8IFRIUkVT SE9MRCApCsKgwqDCoCDCoMKgwqAgwqDCoMKgIE5ld2VzdFJlY29yZMKgwqDCoCA9IGk7CsKgwqDC oCDCoMKgwqAgfQrCoMKgwqAgfQoKaWYoIE5ld2VzdFJlY29yZCA8IDAgKQrCoMKgwqAgewrCoMKg wqAgLyogVGhlcmUgaXMgbm8gdmFsaWQgcmVjb3JkLiAqLwrCoMKgwqAgfQplbHNlCsKgwqDCoCB7 CsKgwqDCoCAvKiBUaGlzIGlzIHRoZSByZWNvcmQgd2l0aCB0aGUgbGF0ZXN0IHNhdmVkIHZhbHVl LiAqLwrCoMKgwqAgfQoKCkNoZWVycywKSXNhYWMKCgoKRW0gMTIvMTIvMjAxNyAxMTowMSwgQnJl bnQgQnJvd24gZXNjcmV2ZXU6Cj4gT24gMTIgRGVjIDIwMTcgYXQgOTo0NCwgSXNhYWMgTS4gQmF2 YXJlc2NvIHdyb3RlOgo+Cj4+PiBGb3IgbXkgcHJldmlvdXNseSBtZW50aW9uZWQgcmVxdWlyZW1l bnQgb2YgdGhlIGNoZWNrIHZhbHVlIG5vdCBlcXVhbGxpbmcgMHhGRiwgSSAKPj4+IHRoaW5rIEkg Y2FuIGxpdmUgd2l0aCB0ZXN0aW5nIGZvciBhbmQgcmVwbGFjaW5nIHRoYXQgb2NjdXJlbmNlIHdp dGggYSBkaWZmZXJlbnQgY29kZS4KPj4gRGlkIHlvdSBzZWUgbXkgb3RoZXIgcmVwbHkgYWJvdXQg c3ByZWFkaW5nIHRoZSBDUkMgb3IgY2hlY2tzdW0gb3ZlciB0d28KPj4gYnl0ZXM/IFRoYXQgd2F5 IHlvdSBjYW4gZW5zdXJlIHlvdSB3aWxsIG5ldmVyIGhhdmUgYSAweGZmLgo+PiBCdXQgYnkgdXNp bmcgdGhlIENSQyB5b3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBoYXZpbmcgYSAweGZmIHZh bHVlCj4+IGZvciBDUkMgb3IgZXZlbiBmb3IgdGhlIGRhdGEsIGJlY2F1c2UgQ1JDIHdpbGwgY2F0 Y2ggdmlydHVhbGx5IGFueSBkYXRhCj4+IGNvcnJ1cHRpb24uCj4+IElmIHlvdSB1c2UgQkNEIGZv ciB5b3VyIGRhdGEgeW91IHdpbGwgdXNlIGhhbGYgdGhlIHN0b3JhZ2Ugc3BhY2UsIHdoaWNoCj4+ IGVxdWFscyB0byBoYWxmIEVFUFJPTSB3cml0aW5nIHRpbWUgdG9vLgo+IEkgY291bGQgc3ByZWFk IHRoZSBDUkM4IHZhbHVlIG92ZXIgMiBieXRlcywgc2ltaWxhciB0byB3aGF0IEkndmUgZG9uZSB3 aXRoIHRoZSBkaWdpdHMuIAo+IFRob3VnaCBJIGRvbid0IHNlZSBhbnkgbWFqb3IgcHJvYmxlbSB3 aXRoIHN0aWNraW5nIHRvIDEgYnl0ZSBhbmQgdHJhbnNsYXRpbmcgYSBDUkMgCj4gb2YgMHhGRiBp bnRvIHNheSAweDVBLiBJdCBkb2VzIGZlZWwgYSBsaXR0bGUgY2hlZWt5LCBidXQgaXQncyBub3Qg bGlrZSBJJ20gdHJhbnNtaXR0aW5nIHRoZSAKPiBkYXRhIGJldHdlZW4gZGV2aWNlcy4uLiB0aGUg Q1JDIGZ1bmN0aW9uIHdpbGwgYmUgbGl0ZXJhbGx5IHRoZSBzYW1lIGNvZGUgb24gdGhlIAo+IHNh bWUgZGV2aWNlIGZvciBib3RoIHJlYWRpbmcgYW5kIHdyaXRpbmcuCj4KPiBZZXMgSSBjb3VsZCBo YXZlIHBhY2tlZCAyIEJDRCBkaWdpdHMgaW50byBvbmUgYnl0ZSwgYnV0IGhhdmUgb3B0ZWQgdG8g c3ByZWFkIHRoZSAKPiBkYXRhIHdpZGVyIHRvIGdpdmUgbWUgYW4gZXh0cmEgbWV0aG9kIG9mIGNv cnJ1cHRpb24gZGV0ZWN0aW9uLiBJIGNhbiB0ZXN0IDMgd2F5cyAKPiBub3c6IGNoZWNrIHRoZSBo aWdoL2xvdyBuaWJibGVzIHRvIHNlZSBpZiBhIHN5bWJvbCBmb3IgYSBzaW5nbGUgZGlnaXQgaXMg dmFsaWQsIGNoZWNrIAo+IHRoZSBDUkMgb3ZlciBhbGwgNiBkaWdpdHMsIGFuZCBJIGNhbiBhbHNv IGNoZWNrIGFnYWluc3QgdGhlIHByZXZpb3VzIHJlY29yZCB0byAKPiBlbnN1cmUgaXQgaGFzIGlu Y3JlbWVudGVkIGJ5IG9ubHkgMSBjb3VudC4KPgo+PiBBbmQgbXVjaCBiZXR0ZXIgdGhhbiB1c2lu ZyBqdXN0IGEgImRpcnR5IiBmbGFnLCBhZGRpbmcgYSBzZXF1ZW5jZSBjb3VudAo+PiB0byBlYWNo IHJlY29yZCBhbGxvd3MgeW91IHRvIGZpbmQgdGhlIGxhdGVzdCB2YWxpZCBvbmUuCj4+IFlvdSBj b3VsZCB1c2UgYSByZWNvcmQgd2l0aCAyLWJ5dGUgc2VxdWVuY2UgY291bnRlciwgMy1ieXRlIEJD RCB2YWx1ZQo+PiBwbHVzIDEtYnl0ZSBDUkMuIFRoZSBDUkMgY2FsY3VsYXRlZCBvdmVyIHRoZSBz ZXF1ZW5jZSBjb3VudGVyIGFuZCBkYXRhLAo+PiBzbyBpdCB3b3VsZCBiZSBlYXN5IHRvIHNwb3Qg Y29ycnVwdGVkIHJlY29yZHMuCj4gSSdtIG5vdCBzdXJlIHRoYXQgSSdsbCB1c2UgYSBkaXJ0eSBm bGFnLi4uIGlmIG5lZWQgYmUgSSBjYW4gY2hhbmdlIGRhdGEgc28gdGhlIGNoZWNrcyBmYWlsIAo+ IGFuZCB0aGF0IHdheSBtYXJrIHRoZSByZWNvcmQgYXMgYmFkL2RpcnR5L2RlbGV0ZWQuCj4KPiBB IHNlcXVlbmNlIGNvdW50IHdvdWxkIGluY3JlYXNlIGp1c3QgbGlrZSB0aGUgaG91cnMgY291bnQg ZG9lcywgYW5kIGF0IHNvbWUgcG9pbnQgCj4gaXQgd2lsbCByb2xsIG92ZXIgYXMgd2VsbC4gU28g aWYgSSBoYXZlIHRvIGhhbmRsZSBhIHJvbGxvdmVyIGV2ZW50dWFsbHksIHRoZW4gSSBtYXkgYXMg d2VsbCAKPiBqdXN0IGhhbmRsZSB0aGF0IGZvciB0aGUgaG91cnMgY291bnQgYWxvbmUuIFRoZSB0 aG91Z2h0IGlzIHRoYXQgbWFya2luZyBvbGQgcmVjb3JkcyAKPiAiZGlydHkiIG9uIHJvbGwtb3Zl ciB3b3VsZCBiZSBvbmUgd2F5IG9mIGhhbmRsaW5nIGl0Lgo+Cj4gVGhhbmtzLgo+CgoKLS0tCkVz dGUgZW1haWwgZm9pIGVzY2FuZWFkbyBwZWxvIEF2YXN0IGFudGl2w61ydXMuCmh0dHBzOi8vd3d3 LmF2YXN0LmNvbS9hbnRpdmlydXMKCi0tIApodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYv cGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlClZpZXcvY2hhbmdlIHlvdXIgbWVtYmVy c2hpcCBvcHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9w aWNsaXN0Cg== .