From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AE81741DAD; Wed, 1 Mar 2023 18:06:31 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9046B4114B; Wed, 1 Mar 2023 18:06:31 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 997314114A for ; Wed, 1 Mar 2023 18:06:30 +0100 (CET) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [RFC 0/2] Add high-performance timer facility Date: Wed, 1 Mar 2023 18:06:27 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D8779F@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [RFC 0/2] Add high-performance timer facility Thread-Index: AQHZS1lW6P727zp9A0KQywOAZmHOZK7khRMAgAFDU4CAAAOj8IAASDiAgAAICpA= References: <20230228093916.87206-1-mattias.ronnblom@ericsson.com> <98CBD80474FA8B44BF855DF32C47DC35D87797@smartserver.smartshare.dk> <284a38c7-7f0d-8aab-e054-4e8c0b8274aa@ericsson.com> <98CBD80474FA8B44BF855DF32C47DC35D8779D@smartserver.smartshare.dk> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , Cc: "Erik Gabriel Carrillo" , "David Marchand" , "Maria Lingemark" , "Stefan Sundkvist" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBGcm9tOiBNYXR0aWFzIFLDtm5uYmxvbSBbbWFpbHRvOm1hdHRpYXMucm9ubmJsb21AZXJpY3Nz b24uY29tXQ0KPiBTZW50OiBXZWRuZXNkYXksIDEgTWFyY2ggMjAyMyAxNi41MA0KPiANCj4gT24g MjAyMy0wMy0wMSAxNDozMSwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+IEZyb206IE1hdHRp YXMgUsO2bm5ibG9tIFttYWlsdG86bWF0dGlhcy5yb25uYmxvbUBlcmljc3Nvbi5jb21dDQo+ID4+ IFNlbnQ6IFdlZG5lc2RheSwgMSBNYXJjaCAyMDIzIDEyLjE4DQo+ID4+DQo+ID4+IE9uIDIwMjMt MDItMjggMTc6MDEsIE1vcnRlbiBCcsO4cnVwIHdyb3RlOg0KPiA+Pj4+IEZyb206IE1hdHRpYXMg UsO2bm5ibG9tIFttYWlsdG86bWF0dGlhcy5yb25uYmxvbUBlcmljc3Nvbi5jb21dDQo+ID4+Pj4g U2VudDogVHVlc2RheSwgMjggRmVicnVhcnkgMjAyMyAxMC4zOQ0KPiA+Pj4NCj4gPj4+IEkgaGF2 ZSBiZWVuIGxvb2tpbmcgZm9yIGEgaGlnaCBwZXJmb3JtYW5jZSB0aW1lciBsaWJyYXJ5IChmb3Ig dXNlIGluDQo+IGEgZmFzdA0KPiA+PiBwYXRoIFRDUCBzdGFjayksIGFuZCB0aGlzIGxvb2tzIHZl cnkgdXNlZnVsLCBNYXR0aWFzLg0KPiA+Pj4NCj4gPj4+IE15IGluaXRpYWwgZmVlZGJhY2sgaXMg YmFzZWQgb24gcXVpY2tseSBza2ltbWluZyB0aGUgcGF0Y2ggc291cmNlDQo+IGNvZGUsIGFuZA0K PiA+PiByZWFkaW5nIHRoaXMgY292ZXIgbGV0dGVyLg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFRo aXMgcGF0Y2hzZXQgaXMgYW4gYXR0ZW1wdCB0byBpbnRyb2R1Y2UgYSBoaWdoLXBlcmZvcm1hbmNl LCBoaWdobHkNCj4gPj4+PiBzY2FsYWJsZSB0aW1lciBmYWNpbGl0eSBpbnRvIERQREsuDQo+ID4+ Pj4NCj4gPj4+PiBNb3JlIHNwZWNpZmljYWxseSwgdGhlIGdvYWxzIGZvciB0aGUgaHRpbWVyIGxp YnJhcnkgYXJlOg0KPiA+Pj4+DQo+ID4+Pj4gKiBFZmZpY2llbnQgaGFuZGxpbmcgb2YgYSBoYW5k ZnVsIHVwIHRvIGh1bmRyZWRzIG9mIHRob3VzYW5kcyBvZg0KPiA+Pj4+ICAgICBjb25jdXJyZW50 IHRpbWVycy4NCj4gPj4+PiAqIFJlZHVjZWQgb3ZlcmhlYWQgb2YgYWRkaW5nIGFuZCBjYW5jZWxp bmcgdGltZXJzLg0KPiA+Pj4+ICogUHJvdmlkZSBhIHNlcnZpY2UgZnVuY3Rpb25hbGx5IGVxdWl2 YWxlbnQgdG8gdGhhdCBvZg0KPiA+Pj4+ICAgICA8cnRlX3RpbWVyLmg+LiBBUEkvQUJJIGJhY2t3 YXJkIGNvbXBhdGliaWxpdHkgaXMgc2Vjb25kYXJ5Lg0KPiA+Pj4+DQo+ID4+Pj4gSW4gdGhlIGF1 dGhvcidzIG9waW5pb24sIHRoZXJlIGFyZSB0d28gbWFpbiBzaG9ydGNvbWluZ3Mgd2l0aCB0aGUN Cj4gPj4+PiBjdXJyZW50IERQREsgdGltZXIgbGlicmFyeSAoaS5lLiwgcnRlX3RpbWVyLltjaF0p Lg0KPiA+Pj4+DQo+ID4+Pj4gT25lIGlzIHRoZSBzeW5jaHJvbml6YXRpb24gb3ZlcmhlYWQsIHdo ZXJlIGhlYXZ5LXdlaWdodCBmdWxsLQ0KPiBiYXJyaWVyDQo+ID4+Pj4gdHlwZSBzeW5jaHJvbml6 YXRpb24gaXMgdXNlZC4gcnRlX3RpbWVyLmMgdXNlcyBwZXItRUFML2xjb3JlIHNraXANCj4gPj4+ PiBsaXN0cywgYnV0IGFueSB0aHJlYWQgbWF5IGFkZCBvciBjYW5jZWwgKG9yIG90aGVyd2lzZSBh Y2Nlc3MpDQo+IHRpbWVycw0KPiA+Pj4+IG1hbmFnZWQgYnkgYW5vdGhlciBsY29yZSAoYW5kIHRo dXMgcmVzaWRlcyBpbiBpdHMgdGltZXIgc2tpcCBsaXN0KS4NCj4gPj4+Pg0KPiA+Pj4+IFRoZSBv dGhlciBpcyBhbiBhbGdvcml0aG1pYyBzaG9ydGNvbWluZywgd2l0aCBydGVfdGltZXIuYydzDQo+ IHJlbGlhbmNlDQo+ID4+Pj4gb24gYSBza2lwIGxpc3QsIHdoaWNoLCBzZWVtaW5nbHksIGlzIGxl c3MgZWZmaWNpZW50IHRoYW4gY2VydGFpbg0KPiA+Pj4+IGFsdGVybmF0aXZlcy4NCj4gPj4+Pg0K PiA+Pj4+IFRoaXMgcGF0Y2hzZXQgaW1wbGVtZW50cyBhIGhpZXJhcmNoaWNhbCB0aW1lciB3aGVl bCAoSFdULCBpbg0KPiA+Pj4NCj4gPj4+IFR5cG86IEhXVCBvciBIVFc/DQo+ID4+DQo+ID4+IFll cy4gSSBkb24ndCB1bmRlcnN0YW5kIGhvdyBJIGNvdWxkIG1hbmFnZWQgdG8gbWFrZSBzbyBtYW55 IHN1Y2ggSFRXDQo+IC0+DQo+ID4+IEhXVCB0eXBvcy4gQXQgbGVhc3QgSSBnb3QgdGhlIGZpbGVu YW1lcyAocnRlX2h0dy5bY2hdKSBjb3JyZWN0Lg0KPiA+Pg0KPiA+Pj4NCj4gPj4+PiBydGVfaHR3 LmMpLCBhcyBwZXIgdGhlIFZhcmdoZXNlIGFuZCBMYXVjayBwYXBlciAiSGFzaGVkIGFuZA0KPiA+ Pj4+IEhpZXJhcmNoaWNhbCBUaW1pbmcgV2hlZWxzOiBEYXRhIFN0cnVjdHVyZXMgZm9yIHRoZSBF ZmZpY2llbnQNCj4gPj4+PiBJbXBsZW1lbnRhdGlvbiBvZiBhIFRpbWVyIEZhY2lsaXR5Ii4gQSBI V1QgaXMgYSBkYXRhIHN0cnVjdHVyZQ0KPiA+Pj4+IHB1cnBvc2VseSBkZXNpZ24gZm9yIHRoaXMg dGFzaywgYW5kIHVzZWQgYnkgbWFueSBvcGVyYXRpbmcgc3lzdGVtDQo+ID4+Pj4ga2VybmVsIHRp bWVyIGZhY2lsaXRpZXMuDQo+ID4+Pj4NCj4gPj4+PiBUbyBmdXJ0aGVyIGltcHJvdmUgdGhlIHNv bHV0aW9uIGRlc2NyaWJlZCBieSBWYXJnaGVzZSBhbmQgTGF1Y2ssIGENCj4gPj4+PiBiaXRzZXQg aXMgcGxhY2VkIGluIGZyb250IG9mIGVhY2ggb2YgdGhlIHRpbWVyIHdoZWVsIGluIHRoZSBIV1Qs DQo+ID4+Pj4gcmVkdWNpbmcgb3ZlcmhlYWQgb2YgcnRlX2h0aW1lcl9tZ3JfbWFuYWdlKCkgKGku ZS4sIHByb2dyZXNzaW5nDQo+IHRpbWUNCj4gPj4+PiBhbmQgZXhwaXJ5IHByb2Nlc3NpbmcpLg0K PiA+Pj4+DQo+ID4+Pj4gQ3ljbGUtZWZmaWNpZW50IHNjYW5uaW5nIGFuZCBtYW5pcHVsYXRpb24g b2YgdGhlc2UgYml0c2V0cyBhcmUNCj4gY3J1Y2lhbA0KPiA+Pj4+IGZvciB0aGUgSFdUJ3MgcGVy Zm9ybWFuY2UuDQo+ID4+Pj4NCj4gPj4+PiBUaGUgaHRpbWVyIG1vZHVsZSBrZWVwcyBhIHBlci1s Y29yZSAob3IgcGVyLXJlZ2lzdGVyZWQgRUFMIHRocmVhZCkNCj4gSFdUDQo+ID4+Pj4gaW5zdGFu Y2UsIG11Y2ggbGlrZSBydGVfdGltZXIuYyBrZWVwcyBhIHBlci1sY29yZSBza2lwIGxpc3QuDQo+ ID4+Pj4NCj4gPj4+PiBUbyBhdm9pZCBleHBlbnNpdmUgc3luY2hyb25pemF0aW9uIG92ZXJoZWFk IGZvciB0aHJlYWQtbG9jYWwgdGltZXINCj4gPj4+PiBtYW5hZ2VtZW50LCB0aGUgSFdUcyBhcmUg YWNjZXNzZWQgb25seSBmcm9tIHRoZSAib3duaW5nIiB0aHJlYWQuDQo+IEFueQ0KPiA+Pj4+IGlu dGVyYWN0aW9uIGFueSBvdGhlciB0aHJlYWQgaGFzIHdpdGggYSBwYXJ0aWN1bGFyIGxjb3JlJ3Mg dGltZXINCj4gPj4+PiB3aGVlbCBnb2VzIG92ZXIgYSBzZXQgb2YgRFBESyByaW5ncy4gQSBzaWRl LWVmZmVjdCBvZiB0aGlzIGRlc2lnbg0KPiBpcw0KPiA+Pj4+IHRoYXQgYWxsIG9wZXJhdGlvbnMg d29ya2luZyB0b3dhcmQgYSAicmVtb3RlIiBIV1QgbXVzdCBiZQ0KPiA+Pj4+IGFzeW5jaHJvbm91 cy4NCj4gPj4+Pg0KPiA+Pj4+IFRoZSA8cnRlX2h0aW1lci5oPiBBUEkgaXMgYXZhaWxhYmxlIG9u bHkgdG8gRUFMIHRocmVhZHMgYW5kDQo+IHJlZ2lzdGVyZWQNCj4gPj4+PiBub24tRUFMIHRocmVh ZHMuDQo+ID4+Pj4NCj4gPj4+PiBUaGUgaHRpbWVyIEFQSSBhbGxvd3MgdGhlIGFwcGxpY2F0aW9u IHRvIHN1cHBseSB0aGUgY3VycmVudCB0aW1lLA0KPiA+Pj4+IHVzZWZ1bCBpbiBjYXNlIGl0IGFs cmVhZHkgaGFzIHJldHJpZXZlZCB0aGlzIGZvciBvdGhlciBwdXJwb3NlcywNCj4gPj4+PiBzYXZp bmcgdGhlIGNvc3Qgb2YgYSByZHRzYyBpbnN0cnVjdGlvbiAob3IgaXRzIGVxdWl2YWxlbnQpLg0K PiA+Pj4+DQo+ID4+Pj4gUmVsYXRpdmUgaHRpbWVyIGRvZXMgbm90IHJldHJpZXZlIGEgbmV3IHRp bWUsIGJ1dCByZXVzZSB0aGUgY3VycmVudA0KPiA+Pj4+IHRpbWUgKGFzIGtub3duIHZpYS9hdC10 aGUtdGltZSBvZiB0aGUgbWFuYWdlLWNhbGwpLCBhZ2FpbiB0byBzaGF2ZQ0KPiBvZmYNCj4gPj4+ PiBzb21lIGN5Y2xlcyBvZiBvdmVyaGVhZC4NCj4gPj4+DQo+ID4+PiBJIGhhdmUgYSBjb21tZW50 IHRvIHRoZSB0d28gcG9pbnRzIGFib3ZlLg0KPiA+Pj4NCj4gPj4+IEkgYWdyZWUgdGhhdCB0aGUg YXBwbGljYXRpb24gc2hvdWxkIHN1cHBseSB0aGUgY3VycmVudCB0aW1lLg0KPiA+Pj4NCj4gPj4+ IFRoaXMgc2hvdWxkIGJlIHRoZSBjb25jZXB0IHRocm91Z2hvdXQgdGhlIGxpYnJhcnkuIEkgZG9u J3QNCj4gdW5kZXJzdGFuZCB3aHkNCj4gPj4gVFNDIGlzIHVzZWQgaW4gdGhlIGxpYnJhcnkgYXQg YWxsPw0KPiA+Pj4NCj4gPj4+IFBsZWFzZSB1c2UgYSB1bml0LWxlc3MgdGljaywgYW5kIGxldCB0 aGUgYXBwbGljYXRpb24gZGVjaWRlIHdoYXQgb25lDQo+IHRpY2sNCj4gPj4gbWVhbnMuDQo+ID4+ Pg0KPiA+Pg0KPiA+PiBJIHN1c3BlY3QgdGhlIGRlc2lnbiBvZiBydGVfaHRpbWVyX21nci5oIChh bmQgcnRlX3RpbWVyLmgpIG1ha2VzIG1vcmUNCj4gPj4gc2Vuc2UgaWYgeW91IHRoaW5rIG9mIHRo ZSB1c2VyIG9mIHRoZSBBUEkgYXMgbm90IGp1c3QgYSAibW9ub2xpdGhpYyINCj4gPj4gYXBwbGlj YXRpb24sIGJ1dCByYXRoZXIgYSBzZXQgb2YgZGlmZmVyZW50IG1vZHVsZXMsIGRldmVsb3BlZCBi eQ0KPiA+PiBkaWZmZXJlbnQgb3JnYW5pemF0aW9ucywgYW5kIHJldXNlZCBhY3Jvc3MgYSBzZXQg b2YgYXBwbGljYXRpb25zLiBUaGUNCj4gPj4gaWRlYSBiZWhpbmQgdGhlIEFQSSBkZXNpZ24gaXMg dGhleSBzaG91bGQgYWxsIGJlIGFibGUgdG8gc2hhcmUgb25lDQo+IHRpbWVyDQo+ID4+IHNlcnZp Y2UgaW5zdGFuY2UuDQo+ID4+DQo+ID4+IFRoZSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGFwcGxp Y2F0aW9uIGFuZCBhbnkgZnV0dXJlIERQREsgcGxhdGZvcm0NCj4gPj4gbW9kdWxlcyB0aGF0IHVz ZSB0aGUgaHRpbWVyIHNlcnZpY2UgbmVlZHMgdG8gYWdyZWUgd2hhdCBhIHRpY2sgbWVhbnMNCj4g aW4NCj4gPj4gdGVybXMgb2YgYWN0dWFsIHdhbGwtdGltZSwgaWYgaXQncyBub3QgbWFuZGF0ZWQg YnkgdGhlIEFQSS4NCj4gPg0KPiA+IEkgc2VlLiBUaGVuIHRob3NlIG5vbi1tb25vbGl0aGljIGFw cGxpY2F0aW9ucyBjYW4gYWdyZWUgdGhhdCB0aGUgdW5pdA0KPiBvZiB0aW1lIGlzIG5hbm9zZWNv bmRzLCBvciB3aGF0ZXZlciBtYWtlcyBzZW5zZSBmb3IgdGhvc2UgYXBwbGljYXRpb25zLg0KPiBB bmQgdGhlbiB0aGV5IGNhbiBpbnN0YW50aWF0ZSBvbmUgc2hhcmVkIEhUVyBmb3IgdGhhdCBwdXJw b3NlLg0KPiA+DQo+IA0KPiA8cnRlX2h0aW1lcl9tZ3IuaD4gY29udGFpbnMgbm90aGluZyBidXQg c2hhcmVkIEhUV3MuDQo+IA0KPiA+IFRoZXJlIGlzIG5vIG5lZWQgdG8gaW1wb3NlIHN1Y2ggYW4g QVBJIGxpbWl0IG9uIG90aGVyIHVzZXJzIG9mIHRoZQ0KPiBsaWJyYXJ5Lg0KPiA+DQo+ID4+DQo+ ID4+IFRoZXJlIG1pZ2h0IGJlIHJvb20gZm9yIG1vZHVsZS1zcGVjaWZpYyB0aW1lciB3aGVlbHMg YXMgd2VsbCwgd2l0aA0KPiA+PiBkaWZmZXJlbnQgcmVzb2x1dGlvbiBvciBvdGhlciBjaGFyYWN0 ZXJpc3RpY3MuIFRoZSBldmVudCB0aW1lcg0KPiBhZGFwdGVyJ3MNCj4gPj4gdXNlIG9mIGEgdGlt ZXIgd2hlZWwgY291bGQgYmUgb25lIGV4YW1wbGUgKGFsdGhvdWdoIEknbSBub3Qgc3VyZSBpdA0K PiBpcykuDQo+ID4NCj4gPiBXZSBhcmUgbm90IHVzaW5nIHRoZSBldmVudCBkZXZpY2UsIGFuZCBJ IGhhdmUgbm90IGxvb2tlZCBpbnRvIGl0LCBzbyBJDQo+IGhhdmUgbm8gcXVhbGlmaWVkIGNvbW1l bnRzIHRvIHRoaXMuDQo+ID4NCj4gPj4NCj4gPj4gSWYgdGltZXItd2hlZWwtYXMtYS1wcml2YXRl LWxlZ28tcGllY2UgaXMgYWxzbyBhIHZhbGlkIHVzZSBjYXNlLCB0aGVuDQo+ID4+IG9uZSBjb3Vs ZCBjb25zaWRlciBtYWtlIHRoZSA8cnRlX2h0dy5oPiBBUEkgcHVibGljIGFzIHdlbGwuIFRoYXQg aXMNCj4gd2hhdA0KPiA+PiBJIHRoaW5rIHlvdSBhcyBhc2tpbmcgZm9yIGhlcmU6IGEgZ2VuZXJp YyB0aW1lciB3aGVlbCB0aGF0IGRvZXNuJ3QNCj4ga25vdw0KPiA+PiBhbnl0aGluZyBhYm91dCB0 aW1lIHNvdXJjZXMsIHRpbWUgc291cmNlIHRpbWUgLT4gdGljayBjb252ZXJzaW9uLCBvcg0KPiA+ PiB0aW1lciBzb3VyY2UgdGltZSAtPiBtb25vdG9uaWMgd2FsbCB0aW1lIGNvbnZlcnNpb24sIGFu ZCBtYXliZSBpcw0KPiBhbHNvDQo+ID4+IG5vdCBib3VuZCB0byBhIHBhcnRpY3VsYXIgdGhyZWFk Lg0KPiA+DQo+ID4gWWVzLCB0aGF0IGlzIHdoYXQgSSBoYWQgYmVlbiBzZWFyY2hpbmcgdGhlIElu dGVybmV0IGZvci4NCj4gPg0KPiA+IChJJ20gbm90IHN1cmUgd2hhdCB5b3UgbWVhbiBieSAibm90 IGJvdW5kIHRvIGEgcGFydGljdWxhciB0aHJlYWQiLg0KPiBZb3VyIHBlci10aHJlYWQgZGVzaWdu IHNlZW1zIGdvb2QgdG8gbWUuKQ0KPiA+DQo+ID4gSSBkb24ndCB3YW50IG1vcmUgc3R1ZmYgaW4g dGhlIEVBTC4gV2hhdCBJIHdhbnQgaXMgaGlnaC1wZXJmb3JtYW5jZQ0KPiBEUERLIGxpYnJhcmll cyB3ZSBjYW4gdXNlIGluIG91ciBhcHBsaWNhdGlvbnMuDQo+ID4NCj4gPj4NCj4gPj4gSSBwaWNr ZWQgVFNDIGJlY2F1c2UgaXQgc2VlbWVkIGxpa2UgYSBnb29kICJ1bml2ZXJzYWwgdGltZSB1bml0 IiBmb3INCj4gPj4gRFBESy4gcmR0c2MgKGFuZCBpdHMgZXF1aXZhbGVudCkgaXMgYWxzbyBhIHZl cnkgcHJlY2lzZSAoZXNwZWNpYWxseQ0KPiBvbg0KPiA+PiB4ODYpIGFuZCBjaGVhcC10by1yZXRy aWV2ZSAoZXNwZWNpYWxseSBvbiBBUk0sIGZyb20gd2hhdCBJDQo+IHVuZGVyc3RhbmQpLg0KPiA+ DQo+ID4gVGhlIFRTQyBkb2VzIGhhdmUgZXhjZWxsZW50IHBlcmZvcm1hbmNlLCBidXQgb24gYWxs IG90aGVyIHBhcmFtZXRlcnMNCj4gaXQgaXMgYSBob3JyaWJsZSB0aW1lIGtlZXBlcjogVGhlIG1l YXN1cmVtZW50IHVuaXQgZGVwZW5kcyBvbiB0aGUNCj4gdW5kZXJseWluZyBoYXJkd2FyZSwgdGhl IFRTQyBkcmlmdHMgZGVwZW5kaW5nIG9uIHRlbXBlcmF0dXJlLCBpdCBjYW5ub3QNCj4gYmUgUFRQ IHN5bmNocm9uaXplZCwgdGhlIGxpc3QgaXMgZW5kbGVzcyENCj4gPg0KPiA+Pg0KPiA+PiBUaGF0 IHNhaWQsIGF0IHRoZSBtb21lbnQsIEknbSBsZWFuaW5nIHRvd2FyZCBuYW5vc2Vjb25kcyAodWlu dDY0X3QNCj4gPj4gZm9ybWF0KSBzaG91bGQgYmUgdGhlIGRlZmF1bHQgZm9yIHRpbWVyIGV4cGly YXRpb24gdGltZSBpbnN0ZWFkIG9mDQo+IFRTQy4NCj4gPj4gVFNDIGNvdWxkIHN0aWxsIGJlIGFu IG9wdGlvbiBmb3IgcGFzc2luZyB0aGUgY3VycmVudCB0aW1lLCBzaW5jZSBUU0MNCj4gPj4gd2ls bCBiZSBhIGNvbW1vbiB0aW1lIHNvdXJjZSwgYW5kIGl0IHNoYXZlcyBvZmYgb25lIGNvbnZlcnNp b24uDQo+ID4NCj4gPiBUaGVyZSBhcmUgbWFueSByZWFzb25zIHdoeSBuYW5vc2Vjb25kcyBpcyBh IG11Y2ggYmV0dGVyIGNob2ljZSB0aGFuDQo+IFRTQy4NCj4gPg0KPiA+Pg0KPiA+Pj4gQSB1bml0 LWxlc3MgdGljayB3aWxsIGFsc28gbGV0IHRoZSBhcHBsaWNhdGlvbiBpbnN0YW50aWF0ZSBhIEhU Vw0KPiB3aXRoIGhpZ2hlcg0KPiA+PiByZXNvbHV0aW9uIHRoYW4gdGhlIFRTQy4gKEUuZy4gdGhp bmsgYWJvdXQgb3ZlcnNhbXBsaW5nIGluIGF1ZGlvDQo+IHByb2Nlc3NpbmcsDQo+ID4+IG9yIEJy ZXplbmhhbSdzIGxpbmUgZHJhd2luZyBhbGdvcml0aG0gZm9yIDJEIHZpc3VhbHMgLSBvdmVyc2Ft cGxpbmcNCj4gY2FuIHNvdW5kDQo+ID4+IGFuZCBsb29rIGJldHRlci4pDQo+ID4NCj4gPiBTb21l IG9mIHRoZSB0aW1pbmcgZGF0YSBpbiBvdXIgYXBwbGljYXRpb24gaGF2ZSBhIHJlc29sdXRpb24g b3JkZXJzIG9mDQo+IG1hZ25pdHVkZSBoaWdoZXIgdGhhbiBvbmUgbmFub3NlY29uZC4gSWYgd2Ug Y29tYmluZWQgdGhhdCB3aXRoIGEgSFRXDQo+IGxpYnJhcnkgd2l0aCBuYW5vc2Vjb25kIHJlc29s dXRpb24sIHdlIHdvdWxkIG5lZWQgdG8ga2VlcCB0aGVzZSB0aW1lcg0KPiB2YWx1ZXMgaW4gdHdv IGxvY2F0aW9uczogVGhlIG9yaWdpbmFsIGhpZ2gtcmVzIHRpbWVyIGluIG91ciBkYXRhDQo+IHN0 cnVjdHVyZSwgYW5kIHRoZSBzaGFkb3cgbG93LXJlcyAobmFub3NlY29uZCkgdGltZXIgaW4gdGhl IEhUVy4NCj4gPg0KPiANCj4gVGhlcmUgaXMgbm8gd2F5IHlvdSB3aWxsIG1lZXQgdGltZXJzIHdp dGggYW55dGhpbmcgYXBwcm9hY2hpbmcNCj4gcGljby1zZWNvbmQtbGV2ZWwgcHJlY2lzaW9uLg0K DQpDb3JyZWN0LiBPdXIgc3ViLW5hbm9zZWNvbmQgdGltZXJzIGRvbid0IG5lZWQgdG8gbWVldCB0 aGUgZXhhY3QgdGltZSwgYnV0IHRoZSBoaWdoZXIgcmVzb2x1dGlvbiBwcmV2ZW50cyBsb3NzIG9m IGFjY3VyYWN5IHdoZW4gYSBudW1iZXIgaGFzIGJlZW4gYWRkZWQgdG8gaXQgbWFueSB0aW1lcy4g VGhpbmsgb2YgaXQgbGlrZSBhIHNwZWNpYWwgZml4ZWQtcG9pbnQgbnVtYmVyLCB3aGVyZSB0aGUg bGVhc3Qgc2lnbmlmaWNhbnQgcGFydCBpcyBpbmNsdWRlZCB0byBlbnN1cmUgYWNjdXJhY3kgaW4g Y2FsY3VsYXRpb25zLCB3aGlsZSB0aGUgYWN0dWFsIHRpbWVyIG9ubHkgY29uc2lkZXJzIHRoZSBt b3N0IHNpZ25pZmljYW50IHBhcnQgb2YgdGhlIG51bWJlci4NCg0KPiBZb3Ugd2lsbCBhbHNvIGdl dCBpbnRvIGEgdmFsdWUgcmFuZ2UgaXNzdWUsDQo+IHNpbmNlIHlvdSB3aWxsIHdyYXAgYXJvdW5k IGEgNjQtYml0IGludGVnZXIgaW4gYSBtYXR0ZXIgb2YgZGF5cy4NCg0KWWVzLiBXZSB1c2UgdGlt ZXJzIHdpdGggZGlmZmVyZW50IHNjYWxlcyBmb3IgaW5kaXZpZHVhbCBwdXJwb3Nlcy4gT3VyIGhp Z2hlc3QgcmVzb2x1dGlvbiBhcmUgc3ViLW5hbm9zZWNvbmQuDQoNCj4gDQo+IFRoZSBIVFcgb25s eSBzdG9yZXMgdGhlIHRpbWVvdXQgaW4gdGlja3MsIG5vdCBUU0MsIG5hbm9zZWNvbmRzIG9yDQo+ IHBpY29zZWNvbmRzLg0KDQpFeGNlbGxlbnQuIFRoZW4gSSdtIGhhcHB5Lg0KDQo+IEdlbmVyYWxs eSwgeW91IGRvbid0IHdhbnQgcGljby1zZWNvbmQtbGV2ZWwgdGljaw0KPiBncmFudWxhcml0eSwg c2luY2UgaXQgaW5jcmVhc2VzIHRoZSBvdmVyaGVhZCBvZiBhZHZhbmNpbmcgdGhlIHdoZWVsKHMp Lg0KDQpXZSBjdXJyZW50bHkgdXNlIHByb3ByaWV0YXJ5IGFsZ29yaXRobXMgZm9yIG91ciBiYW5k d2lkdGggc2NoZWR1bGluZy4gSXQgc2VlbXMgdGhhdCBhIEhUVyBpcyBub3QgYSBnb29kIGZpdCBm b3IgdGhpcyBwdXJwb3NlLiBQZXJoYXBzIHlvdSBhcmUgb2ZmZXJpbmcgYSBoYW1tZXIsIGFuZCBp dCdzIG5vdCBhIGdvb2QgcmVwbGFjZW1lbnQgZm9yIG15IHNjcmV3ZHJpdmVyLg0KDQpJIHN1cHBv c2UgdGhhdCBuYW5vc2Vjb25kIHJlc29sdXRpb24gc3VmZmljZXMgZm9yIGEgVENQIHN0YWNrLCB3 aGljaCBpcyB0aGUgdXNlIGNhc2UgSSBoYXZlIGJlZW4gb24gdGhlIGxvb2tvdXQgZm9yIGEgdGlt ZXIgbGlicmFyeSBmb3IuIDotKQ0KDQo+IFRoZSBmaXJzdCAobG93ZXN0LXNpZ25pZmljYW5jZSkg ZmV3IHdoZWVscyB3aWxsIHByZXR0eSBtdWNoIGFsd2F5cyBiZQ0KPiBlbXB0eS4NCj4gDQo+ID4g V2UgbWlnaHQgYWxzbyBuZWVkIHRvIGZyZXF1ZW50bHkgdXBkYXRlIHRoZSBIVFcgdGltZXJzIHRv IHByZXZlbnQNCj4gZHJpZnRpbmcgYXdheSBmcm9tIHRoZSBoaWdoLXJlcyB0aW1lcnMuIEUuZy4g MS4yICsgMS4yIGlzIHN0aWxsIDIgd2hlbg0KPiByb3VuZGVkLCBidXQgKyAxLjIgYmVjb21lcyAz IHdoZW4gaXQgc2hvdWxkIGhhdmUgYmVlbiA0ICgzICogMS4yID0gMy42KQ0KPiByb3VuZGVkLiBU aGlzIGxldmVsIG9mIGRyaWZ0aW5nIHdvdWxkIGFsc28gbWFrZSBwZXJpb2RpYyB0aW1lcnMgaW4g dGhlDQo+IEhUVyB1c2VsZXNzLg0KPiA+DQo+IA0KPiBVc2VsZXNzLCBmb3IgYSBjZXJ0YWluIGNs YXNzIG9mIGFwcGxpY2F0aW9ucy4gV2hhdCBhcHBsaWNhdGlvbiB3b3VsZA0KPiB0aGF0IGJlPw0K DQpTb3JyeSBhYm91dCBiZWluZyB1bmNsZWFyIHRoZXJlLiBZZXMsIEkgb25seSBtZWFudCB0aGUg c3BlY2lmaWMgYXBwbGljYXRpb24gSSB3YXMgdGFsa2luZyBhYm91dCwgaS5lLiBvdXIgYXBwbGlj YXRpb24gZm9yIGhpZ2ggcHJlY2lzaW9uIGJhbmR3aWR0aCBtYW5hZ2VtZW50LiBGb3IgcmVmZXJl bmNlLCAxIGJpdCBhdCAxMDAgR2JpdC9zIGlzIDEwIHBpY29zZWNvbmRzLg0KDQo+IA0KPiA+IFBs ZWFzZSBub3RlOiBJIGhhdmVuJ3QgcmVhbGx5IGNvbnNpZGVyZWQgbWVyZ2luZyB0aGUgaGlnaC1y ZXMgdGltaW5nDQo+IGluIG91ciBhcHBsaWNhdGlvbiB3aXRoIHRoaXMgSFRXLCBhbmQgSSdtIGFs c28gbm90IHNheWluZyB0aGF0IFBFUklPRElDDQo+IHRpbWVycyBpbiB0aGUgSFRXIGFyZSByZXF1 aXJlZCBvciBldmVuIHVzZWZ1bCBmb3Igb3VyIGFwcGxpY2F0aW9uLiBJJ20NCj4gb25seSBwcm92 aWRpbmcgYXJndW1lbnRzIGZvciBhIHVuaXQtbGVzcyB0aW1lIQ0KPiA+DQo+ID4+Pg0KPiA+Pj4g Rm9yIHJlZmVyZW5jZSAoc3VwcG9ydGluZyBteSBzdWdnZXN0aW9uKSwgdGhlIGR5bmFtaWMgdGlt ZXN0YW1wDQo+IGZpZWxkIGluIHRoZQ0KPiA+PiBydGVfbWJ1ZiBzdHJ1Y3R1cmUgaXMgYWxzbyBk ZWZpbmVkIGFzIGJlaW5nIHVuaXQtbGVzcy4gKEkgdGhpbmsNCj4gTlZJRElBDQo+ID4+IGltcGxl bWVudHMgaXQgYXMgbmFub3NlY29uZHMsIGJ1dCB0aGF0J3MgYW4gaW1wbGVtZW50YXRpb24gc3Bl Y2lmaWMNCj4gY2hvaWNlLikNCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiBBIHNlbWFudGljIGltcHJv dmVtZW50IGNvbXBhcmVkIHRvIHRoZSA8cnRlX3RpbWVyLmg+IEFQSSBpcyB0aGF0DQo+IHRoZQ0K PiA+Pj4+IGh0aW1lciBsaWJyYXJ5IGNhbiBnaXZlIGEgZGVmaW5pdGUgYW5zd2VyIG9uIHRoZSBx dWVzdGlvbiBpZiB0aGUNCj4gdGltZXINCj4gPj4+PiBleHBpcnkgY2FsbGJhY2sgd2FzIGNhbGxl ZCwgYWZ0ZXIgYSB0aW1lciBoYXMgYmVlbiBjYW5jZWxlZC4NCj4gPj4+Pg0KPiA+Pj4+IEJlbG93 IGlzIGEgcGVyZm9ybWFuY2UgZGF0YSBmcm9tIERQREsncyAnYXBwL3Rlc3QnIG1pY3JvDQo+IGJl bmNobWFya3MsDQo+ID4+Pj4gdXNpbmcgMTBrIGNvbmN1cnJlbnQgdGltZXJzLiBUaGUgYmVuY2ht YXJrcyAodGVzdF90aW1lcl9wZXJmLmMgYW5kDQo+ID4+Pj4gdGVzdF9odGltZXJfbWdyX3BlcmYu YykgYXJlbid0IGlkZW50aWNhbCBpbiB0aGVpciBzdHJ1Y3R1cmUsIGJ1dA0KPiB0aGUNCj4gPj4+ PiBudW1iZXJzIGdpdmUgc29tZSBpbmRpY2F0aW9uIG9mIHRoZSBkaWZmZXJlbmNlLg0KPiA+Pj4+ DQo+ID4+Pj4gVXNlIGNhc2UgICAgICAgICAgICAgICBodGltZXIgIHRpbWVyDQo+ID4+Pj4gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4+Pj4gQWRkIHRpbWVyICAgICAg ICAgICAgICAgICAyOCAgICAyNTMNCj4gPj4+PiBDYW5jZWwgdGltZXIgICAgICAgICAgICAgIDEw ICAgIDQxMg0KPiA+Pj4+IEFzeW5jIGFkZCAoc291cmNlIGxjb3JlKSAgNjQNCj4gPj4+PiBBc3lu YyBhZGQgKHRhcmdldCBsY29yZSkgIDEzDQo+ID4+Pj4NCj4gPj4+PiAoQU1EIDU5MDBYIENQVS4g VGltZSBpbiBUU0MuKQ0KPiA+Pj4+DQo+ID4+Pj4gUHJvdG90eXBlIGludGVncmF0aW9uIG9mIHRo ZSBodGltZXIgbGlicmFyeSBpbnRvIHJlYWwsIHRpbWVyLWhlYXZ5LA0KPiA+Pj4+IGFwcGxpY2F0 aW9ucyBpbmRpY2F0ZXMgdGhhdCBodGltZXIgbWF5IHJlc3VsdCBpbiBzaWduaWZpY2FudA0KPiA+ Pj4+IGFwcGxpY2F0aW9uLWxldmVsIHBlcmZvcm1hbmNlIGdhaW5zLg0KPiA+Pj4+DQo+ID4+Pj4g VGhlIGJpdHNldCBpbXBsZW1lbnRhdGlvbiB3aGljaCB0aGUgSFdUIGltcGxlbWVudGF0aW9uIGRl cGVuZHMgdXBvbg0KPiA+Pj4+IHNlZW1lZCBnZW5lcmljLWVub3VnaCBhbmQgcG90ZW50aWFsbHkg dXNlZnVsIG91dHNpZGUgdGhlIHdvcmxkIG9mDQo+ID4+Pj4gSFdUcywgdG8ganVzdGlmeSBiZWlu ZyBsb2NhdGVkIGluIHRoZSBFQUwuDQo+ID4+Pj4NCj4gPj4+PiBUaGlzIHBhdGNoc2V0IGlzIHZl cnkgbXVjaCBhbiBSRkMsIGFuZCB0aGUgYXV0aG9yIGlzIHlldCB0byBmb3JtIGFuDQo+ID4+Pj4g b3BpbmlvbiBvbiBtYW55IGltcG9ydGFudCBpc3N1ZXMuDQo+ID4+Pj4NCj4gPj4+PiAqIElmIGRl ZW1lZCBhIHN1aXRhYmxlIHJlcGxhY2VtZW50LCBzaG91bGQgdGhlIGh0aW1lciByZXBsYWNlIHRo ZQ0KPiA+Pj4+ICAgICBjdXJyZW50IERQREsgdGltZXIgbGlicmFyeSBpbiBzb21lIHBhcnRpY3Vs YXIgKEFCSS1icmVha2luZykNCj4gPj4+PiAgICAgcmVsZWFzZSwgb3Igc2hvdWxkIGl0IGxpdmUg c2lkZS1ieS1zaWRlIHdpdGggdGhlIHRoZW4tbGVnYWN5DQo+ID4+Pj4gICAgIDxydGVfdGltZXIu aD4gQVBJPyBBIGxvdCBvZiB0aGluZ3MgaW4gYW5kIG91dHNpZGUgRFBESyBkZXBlbmQNCj4gb24N Cj4gPj4+PiAgICAgPHJ0ZV90aW1lci5oPiwgc28gY29leGlzdGVuY2UgbWF5IGJlIHJlcXVpcmVk IHRvIGZhY2lsaXRhdGUgYQ0KPiBzbW9vdGgNCj4gPj4+PiAgICAgdHJhbnNpdGlvbi4NCj4gPj4+ DQo+ID4+PiBJdCdzIG15IGltbWVkaWF0ZSBpbXByZXNzaW9uIHRoYXQgdGhleSBhcmUgdG90YWxs eSBkaWZmZXJlbnQgaW4gYm90aA0KPiBkZXNpZ24NCj4gPj4gcGhpbG9zb3BoeSBhbmQgQVBJLg0K PiA+Pj4NCj4gPj4+IFBlcnNvbmFsIG9waW5pb246IEkgd291bGQgY2FsbCBpdCBhbiBlbnRpcmVs eSBkaWZmZXJlbnQgbGlicmFyeS4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiAqIFNob3VsZCB0aGUg aHRpbWVyIGFuZCBodHctcmVsYXRlZCBmaWxlcyBiZSBjb2xvY2F0ZWQgd2l0aA0KPiBydGVfdGlt ZXIuYw0KPiA+Pj4+ICAgICBpbiB0aGUgdGltZXIgbGlicmFyeT8NCj4gPj4+DQo+ID4+PiBQZXJz b25hbCBvcGluaW9uOiBOby4gVGhpcyBpcyBhbiBlbnRpcmVseSBkaWZmZXJlbnQgbGlicmFyeSwg YW5kDQo+IHNob3VsZCBsaXZlDQo+ID4+IGZvciBpdHNlbGYgaW4gYSBkaXJlY3Rvcnkgb2YgaXRz IG93bi4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiAqIFdvdWxkIGl0IGJlIHVzZWZ1bCBmb3IgYXBw bGljYXRpb25zIHVzaW5nIGFzeW5jaHJvbm91cyBjYW5jZWwgdG8NCj4gPj4+PiAgICAgaGF2ZSB0 aGUgb3B0aW9uIG9mIGhhdmluZyB0aGUgdGltZXIgY2FsbGJhY2sgcnVuIG5vdCBvbmx5IGluDQo+ IGNhc2Ugb2YNCj4gPj4+PiAgICAgdGltZXIgZXhwaXJhdGlvbiwgYnV0IGFsc28gY2FuY2VsbGF0 aW9uIChvbiB0aGUgdGFyZ2V0IGxjb3JlKT8NCj4gVGhlDQo+ID4+Pj4gICAgIHRpbWVyIGNiIHNp Z25hdHVyZSB3b3VsZCBuZWVkIHRvIGluY2x1ZGUgYW4gYWRkaXRpb25hbA0KPiBwYXJhbWV0ZXIg aW4NCj4gPj4+PiAgICAgdGhhdCBjYXNlLg0KPiA+Pj4NCj4gPj4+IElmIG9uZSB0aHJlYWQgY2Fu Y2VscyBzb21ldGhpbmcgaW4gYW5vdGhlciB0aHJlYWQsIHNvbWUNCj4gc3luY2hyb25pemF0aW9u DQo+ID4+IGJldHdlZW4gdGhlIHRocmVhZHMgaXMgZ29pbmcgdG8gYmUgcmVxdWlyZWQgYW55d2F5 LiBTbyB3ZSBjb3VsZA0KPiByZXByYXNlIHlvdXINCj4gPj4gcXVlc3Rpb246IFdpbGwgdGhlIGJ1 cmRlbiBvZiB0aGUgb3RoZXJ3aXNlIHJlcXVpcmVkIHN5bmNocm9uaXphdGlvbg0KPiBiZXR3ZWVu DQo+ID4+IHRoZSB0d28gdGhyZWFkcyBiZSBzaWduaWZpY2FudGx5IHJlZHVjZWQgaWYgdGhlIGxp YnJhcnkgaGFzIHRoZQ0KPiBhYmlsaXR5IHRvIHJ1bg0KPiA+PiB0aGUgY2FsbGJhY2sgb24gYXN5 bmNocm9ub3VzIGNhbmNlbD8NCj4gPj4+DQo+ID4+DQo+ID4+IFllcy4NCj4gPj4NCj4gPj4gSW50 dWl0aXZlbHksIGl0IHNlZW1zIGNvbnZlbmllbnQgdGhhdCBpZiB5b3UgaGFuZCBvZmYgYSB0aW1l ciB0byBhDQo+ID4+IGRpZmZlcmVudCBsY29yZSwgdGhlIHRpbWVyIGNhbGxiYWNrIHdpbGwgYmUg Y2FsbGVkIGV4YWN0bHkgb25jZSwNCj4gPj4gcmVnYXJkbGVzcyBpZiB0aGUgdGltZXIgd2FzIGNh bmNlbGVkIG9yIGV4cGlyZWQuDQo+ID4+DQo+ID4+IEJ1dCwgYXMgeW91IGluZGljYXRlLCB5b3Ug bWF5IHN0aWxsIG5lZWQgc3luY2hyb25pemF0aW9uIHRvIHNvbHZlIHRoZQ0KPiA+PiByZXNvdXJj ZSByZWNsYW1hdGlvbiBpc3N1ZS4NCj4gPj4NCj4gPj4+IElzIHN1Y2ggYSBmZWF0dXJlIG1vc3Rs eSAiTXVzdCBoYXZlIiBvciAiTmljZSB0byBoYXZlIj8NCj4gPj4+DQo+ID4+PiBNb3JlIHRob3Vn aHRzIGluIHRoaXMgYXJlYS4uLg0KPiA+Pj4NCj4gPj4+IElmIGFkZGluZyBhbmQgYWRkaXRpb25h bCBjYWxsYmFjayBwYXJhbWV0ZXIsIGl0IGNvdWxkIGJlIGFuIGVudW0sIHNvDQo+IHRoZQ0KPiA+ PiBjYWxsYmFjayBjb3VsZCBiZSBleHBhbmRlZCB0byBzdXBwb3J0ICJ0aW1lb3V0IChhLmsuYS4g dGltZXIgZmlyZWQpIiwNCj4gImNhbmNlbCINCj4gPj4gYW5kIG1vcmUgZXZlbnRzIHdlIGhhdmUg bm90IHlldCBjb21lIHVwIHdpdGgsIGUuZy4gImVhcmx5IGtpY2siLg0KPiA+Pj4NCj4gPj4NCj4g Pj4gWWVzLCBvciBhbiBpbnQuDQo+ID4+DQo+ID4+PiBIZXJlJ3MgYW4gaWRlYSBvZmYgdGhlIHRv cCBvZiBteSBoZWFkOiBBbiBhZGRpdGlvbmFsIGNhbGxiYWNrDQo+IHBhcmFtZXRlciBoYXMNCj4g Pj4gYSAoc21hbGwpIHBlcmZvcm1hbmNlIGNvc3QgaW5jdXJyZWQgd2l0aCBldmVyeSB0aW1lciBm aXJlZCAod2hpY2ggaXMNCj4gYSB2ZXJ5DQo+ID4+IGxhcmdlIG11bHRpcGxpZXIpLiBJdCBtaWdo dCBub3QgYmUgcmVxdWlyZWQuIEFzIGFuIGFsdGVybmF0aXZlIHRvIGFuDQo+ICJ3aGF0DQo+ID4+ IGhhcHBlbmVkIiBwYXJhbWV0ZXIgdG8gdGhlIGNhbGxiYWNrLCB0aGUgY2FsbGJhY2sgY291bGQg aW52ZXN0aWdhdGUNCj4gdGhlIHN0YXRlDQo+ID4+IG9mIHRoZSBvYmplY3QgZm9yIHdoaWNoIHRo ZSB0aW1lciBmaXJlZCwgYW5kIGRyYXcgaXRzIG93biBjb25jbHVzaW9uDQo+IG9uIGhvdyB0bw0K PiA+PiBwcm9jZWVkLiBPYnZpb3VzbHksIHRoaXMgYWxzbyBoYXMgYSBwZXJmb3JtYW5jZSBjb3N0 LCBidXQgcGVyaGFwcyB0aGUNCj4gY2FsbGJhY2sNCj4gPj4gd29ya3Mgb24gdGhlIG9iamVjdCdz IHN0YXRlIGFueXdheSwgbWFraW5nIHRoaXMgY29zdCBpbnNpZ25pZmljYW50Lg0KPiA+Pj4NCj4g Pj4NCj4gPj4gSXQncyBub3Qgb2J2aW91cyB0byBtZSB0aGF0IHlvdSwgaW4gdGhlIHRpbWVyIGNh bGxiYWNrLCBjYW4gZGV0ZXJtaW5lDQo+ID4+IHdoYXQgaGFwcGVuZWQsIGlmIHRoZSBzYW1lIGNh bGxiYWNrIGlzIGNhbGxlZCBib3RoIGluIHRoZSBjYW5jZWwgYW5kDQo+IHRoZQ0KPiA+PiBleHBp cmVkIGNhc2UuDQo+ID4+DQo+ID4+IFRoZSBjb3N0IG9mIGFuIGV4dHJhIGludGVnZXIgcGFzc2Vk IGluIGEgcmVnaXN0ZXIgKG9yIGNoZWNraW5nIGENCj4gZmxhZywNCj4gPj4gaWYgdGhlIHRpbWVy IGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQgYXQgYWxsIGF0IGNhbmNlbGxhdGlvbikgdGhhdA0K PiBpcw0KPiA+PiB0aGUgY29uY2VybiBmb3IgbWU7IGl0J3MgZXh0cmEgYml0IG9mIEFQSSBjb21w bGV4aXR5Lg0KPiA+DQo+ID4gVGhlbiBpbnRyb2R1Y2UgdGhlIGxpYnJhcnkgd2l0aG91dCB0aGlz IGZlYXR1cmUuIE1vcmUgZmVhdHVyZXMgY2FuIGJlDQo+IGFkZGVkIGxhdGVyLg0KPiA+DQo+ID4g VGhlIGxpYnJhcnkgd2lsbCBiZSBpbnRyb2R1Y2VkIGFzICJleHBlcmltZW50YWwiLCBzbyB3ZSBh cmUgZnJlZSB0bw0KPiBpbXByb3ZlIGl0IGFuZCBtb2RpZnkgdGhlIEFCSSBhbG9uZyB0aGUgd2F5 Lg0KPiA+DQo+ID4+DQo+ID4+PiBIZXJlJ3MgYW5vdGhlciBhbHRlcm5hdGl2ZSB0byBhZGRpbmcg YSAid2hhdCBoYXBwZW5lZCIgcGFyYW1ldGVyIHRvDQo+IHRoZQ0KPiA+PiBjYWxsYmFjazoNCj4g Pj4+DQo+ID4+PiBUaGUgcnRlX2h0aW1lciBjb3VsZCBoYXZlIG9uZSBtb3JlIGNhbGxiYWNrIHBv aW50ZXIsIHdoaWNoIChpZiBzZXQpDQo+IHdpbGwgYmUNCj4gPj4gY2FsbGVkIG9uIGNhbmNlbGxh dGlvbiBvZiB0aGUgdGltZXIuDQo+ID4+Pg0KPiA+Pg0KPiA+PiBUaGlzIHdpbGwgZ3JvdyB0aGUg dGltZXIgc3RydWN0IHdpdGggMTYgYnl0ZXMuDQo+ID4NCj4gPiBJZiB0aGUgcnRlX2h0aW1lciBz dHJ1Y3Qgc3RheXMgd2l0aGluIG9uZSBjYWNoZSBsaW5lLCBpdCBzaG91bGQgYmUNCj4gYWNjZXB0 YWJsZS4NCj4gPg0KPiANCj4gVGltZXIgc3RydWN0cyBhcmUgb2Z0ZW4gZW1iZWRkZWQgaW4gb3Ro ZXIgc3RydWN0dXJlcywgYW5kIG5lZWQgbm90DQo+IHRoZW1zZWx2ZXMgYmUgY2FjaGUgbGluZSBh bGlnbmVkIChhbHRob3VnaCB0aGUgInBhcmVudCIgc3RydWN0IG1heSBuZWVkDQo+IHRvIGJlLCBl LmcuIGlmIGl0J3MgZHluYW1pY2FsbHkgYWxsb2NhdGVkKS4NCj4gDQo+IFNvIHNtYWxsZXIgaXMg YmV0dGVyLiBKdXN0IGNvbnNpZGVyIGlmIHlvdSB3YW50IHlvdXIgYXR0b3NlY29uZC1sZXZlbA0K PiB0aW1lIHN0YW1wIGluIGEgc3RydWN0Og0KPiANCj4gc3RydWN0IG15X3RpbWVyIHsNCj4gICAg ICB1aW50NjRfdCBoaWdoX3ByZWNpc2lvbl90aW1lX2hpZ2hfYml0czsNCj4gICAgICB1aW50NjRf dCBoaWdoX3ByZWNpc2lvbl90aW1lX2xvd19iaXRzOw0KPiAgICAgIHN0cnVjdCBydGVfaHRpbWVy IHRpbWVyOw0KPiB9Ow0KPiANCj4gLi4uYW5kIHlvdSBhbGxvY2F0ZSB0aG9zZSBzdHJ1Y3RzIGZy b20gYSBtZW1wb29sLiBJZiBydGVfaHRpbWVyIGlzIHNtYWxsDQo+IGVub3VnaCwgeW91IHdpbGwg Zml0IG9uIG9uZSBjYWNoZSBsaW5lLg0KDQpBaGguLi4gSSBzb21laG93IGFzc3VtZWQgdGhleSBv bmx5IGV4aXN0ZWQgYXMgc3RhbmQtYWxvbmUgZWxlbWVudHMgaW5zaWRlIHRoZSBIVFcuDQoNClRo ZW4gSSBvYnZpb3VzbHkgYWdyZWUgdGhhdCBzaG9ydGVyIGlzIGJldHRlci4NCg0KPiANCj4gPiBP biB0aGUgb3RoZXIgaGFuZCwgdGhpcyBhcHByb2FjaCBpcyBsZXNzIGdlbmVyaWMgdGhhbiBwYXNz aW5nIGFuDQo+IGFkZGl0aW9uYWwgcGFyYW1ldGVyLiAoRS5nLiBhZGQgeWV0IGFub3RoZXIgY2Fs bGJhY2sgcG9pbnRlciBmb3IgImVhcmx5DQo+IGtpY2siPykNCj4gPg0KPiA+IEJUVywgYXN5bmMg Y2FuY2VsIGlzIGEgZm9ybSBvZiBpbnRlci10aHJlYWQgY29tbXVuaWNhdGlvbi4gRG9lcyB0aGlz DQo+IGxpYnJhcnkgcmVhbGx5IG5lZWQgdG8gcHJvdmlkZSBhbnkgaW50ZXItdGhyZWFkIGNvbW11 bmljYXRpb24NCj4gbWVjaGFuaXNtcz8gRG9lc24ndCBhbiBpbnRlci10aHJlYWQgY29tbXVuaWNh dGlvbiBtZWNoYW5pc20gYmVsb25nIGluIGENCj4gc2VwYXJhdGUgbGlicmFyeT8NCj4gPg0KPiAN Cj4gWWVzLCA8cnRlX2h0aW1lcl9tZ3IuaD4gbmVlZHMgdGhpcyBiZWNhdXNlOg0KPiAxKSBCZWlu ZyBhYmxlIHRvIHNjaGVkdWxlIHRpbWVycyBvbiBhIHJlbW90ZSBsY29yZSBpcyBhIHVzZWZ1bCBm ZWF0dXJlDQo+IChlc3BlY2lhbGx5IHNpbmNlIHdlIGRvbid0IGhhdmUgbXVjaCBlbHNlIGluIHRl cm1zIG9mIGRlZmVycmVkIHdvcmsNCj4gbWVjaGFuaXNtcyBpbiBEUERLKS4NCg0KQWx0aG91Z2gg cmVtb3RlIHByb2NlZHVyZXMgaXMgYSB1c2VmdWwgZmVhdHVyZSwgcHJvdmlkaW5nIHN1Y2ggYSBm ZWF0dXJlIGRvZXNuJ3QgbmVjZXNzYXJpbHkgYmVsb25nIGluIGEgbGlicmFyeSB0aGF0IHVzZXMg cmVtb3RlIHByb2NlZHVyZXMuDQoNCj4gMikgaHRpbWVyIGFzcGlyZXMgdG8gYmUgYSBwbHVnLWlu IHJlcGxhY2VtZW50IGZvciA8cnRlX3RpbWVyLmg+IChhbGJlaXQNCj4gYW4gQUJJLWJyZWFraW5n IG9uZSkuDQoNClRoaXMgaXMgYSBnb29kIGFyZ3VtZW50Lg0KDQpCdXQgSSB3b3VsZCBtdWNoIHJh dGhlciBoYXZlIGEgaGlnaGx5IHR1bmVkIHN0YW5kLWFsb25lIEhUVyBsaWJyYXJ5IHRoYW4gYSBw bHVnLWluIHJlcGxhY2VtZW50IG9mIHRoZSBvbGQgPHJ0ZV90aW1lci5oPi4NCg0KPiANCj4gVGhl IHB1cmUgSFRXIGlzIGluIHJ0ZV9odHcuW2NoXS4NCj4gDQo+IFBsdXMsIHdpdGggdGhlIGN1cnJl bnQgZGVzaWduLCBhc3luYyBvcGVyYXRpb25zIGJhc2ljYWxseSBjb21lIGZvciBmcmVlDQo+IChp ZiB5b3UgZG9uJ3QgdXNlIHRoZW0pLCBmcm9tIGEgcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUuIFRo ZSBleHRyYQ0KPiBvdmVyaGVhZCBib2lscyBkb3duIHRvIG9jY2FzaW9uYWxseSBwb2xsaW5nIGFu IGVtcHR5IHJpbmcsIHdoaWNoIGlzIGFuDQo+IGluZXhwZW5zaXZlIG9wZXJhdGlvbi4NCg0KT0su IFRoZW4gbm8gd29ycmllcy4NCg0KPiANCj4gPj4NCj4gPj4+Pg0KPiA+Pj4+ICogU2hvdWxkIHRo ZSBydGVfaHRpbWVyIGJlIGEgbmVzdGVkIHN0cnVjdCwgc28gdGhlIGh0dyBwYXJ0cyBiZQ0KPiBz ZXBhcmF0ZWQNCj4gPj4+PiAgICAgZnJvbSB0aGUgaHRpbWVyIHBhcnRzPw0KPiA+Pj4+DQo+ID4+ Pj4gKiA8cnRlX2h0aW1lci5oPiBpcyBrZXB0IHNlcGFyYXRlIGZyb20gPHJ0ZV9odGltZXJfbWdy Lmg+LCBzbyB0aGF0DQo+ID4+Pj4gICAgIDxydGVfaHR3Lmg+IG1heSBhdm9pZCBhIGRlcGVkZW5j eSB0byA8cnRlX2h0aW1lcl9tZ3IuaD4uIFNob3VsZA0KPiBpdA0KPiA+Pj4+ICAgICBiZSBzbz8N Cj4gPj4+Pg0KPiA+Pj4+ICogcnRlX2h0aW1lciBzdHJ1Y3QgaXMgb25seSBzdXBwb3NlZCB0byBi ZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbg0KPiB0bw0KPiA+Pj4+ICAgICBnaXZlIGFuIGluZGlj YXRpb24gb2YgaG93IG11Y2ggbWVtb3J5IGl0IG5lZWRzIHRvIGFsbG9jYXRlLCBhbmQNCj4gaXMN Cj4gPj4+PiAgICAgaXRzIG1lbWJlciBhcmUgbm90IHN1cHBvc2VkIHRvIGJlIGRpcmVjdGx5IGFj Y2Vzc2VkICh3LyB0aGUNCj4gcG9zc2libGUNCj4gPj4+PiAgICAgZXhjZXB0aW9uIG9mIHRoZSBv d25lcl9sY29yZV9pZCBmaWVsZCkuIFNob3VsZCB0aGVyZSBiZSBhIGR1bW15DQo+ID4+Pj4gICAg IHN0cnVjdCwgb3IgYSAjZGVmaW5lIFJURV9IVElNRVJfTUVNU0laRSBvciBhDQo+IHJ0ZV9odGlt ZXJfZ2V0X21lbXNpemUoKQ0KPiA+Pj4+ICAgICBmdW5jdGlvbiBpbnN0ZWFkLCBzZXJ2aW5nIHRo ZSBzYW1lIHB1cnBvc2U/IEJldHRlcg0KPiBlbmNhcHN1bGF0aW9uLA0KPiA+Pj4+ICAgICBidXQg bW9yZSBpbmNvbnZlbmllbnQgZm9yIGFwcGxpY2F0aW9ucy4gUnVuLXRpbWUgZHluYW1pYyBzaXpp bmcNCj4gPj4+PiAgICAgd291bGQgZm9yY2UgYXBwbGljYXRpb24tbGV2ZWwgZHluYW1pYyBhbGxv Y2F0aW9ucy4NCj4gPj4+Pg0KPiA+Pj4+ICogQXN5bmNocm9ub3VzIGNhbmNlbGxhdGlvbiBpcyBh IGxpdHRsZSB0cmlja3kgdG8gdXNlIGZvciB0aGUNCj4gPj4+PiAgICAgYXBwbGljYXRpb24gKHBy aW1hcmlseSBkdWUgdG8gdGltZXIgbWVtb3J5IHJlY2xhbWF0aW9uL3JhY2UNCj4gPj4+PiAgICAg aXNzdWVzKS4gU2hvdWxkIHRoaXMgZnVuY3Rpb25hbGl0eSBiZSByZW1vdmVkPw0KPiA+Pj4+DQo+ ID4+Pj4gKiBTaG91bGQgcnRlX2h0aW1lcl9tZ3JfaW5pdCgpIGFsc28gcmV0cmlldmUgdGhlIGN1 cnJlbnQgdGltZT8gSWYNCj4gc28sDQo+ID4+Pj4gICAgIHRoZXJlIHNob3VsZCB0byBiZSBhIHZh cmlhbnQgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkNCj4gdGhlDQo+ID4+Pj4gICAg IHRpbWUgKHRvIG1hdGNoIHJ0ZV9odGltZXJfbWdyX21hbmFnZV90aW1lKCkpLiBPbmUgcGl0ZmFs bCB3aXRoDQo+IHRoZQ0KPiA+Pj4+ICAgICBjdXJyZW50IHByb3Bvc2VkIEFQSSBpcyBhbiBhcHBs aWNhdGlvbiBjYWxsaW5nDQo+IHJ0ZV9odGltZXJfbWdyX2luaXQoKQ0KPiA+Pj4+ICAgICBhbmQg dGhlbiBpbW1lZGlhdGVseSBhZGRpbmcgYSB0aW1lciB3aXRoIGEgcmVsYXRpdmUgdGltZW91dCwg aW4NCj4gPj4+PiAgICAgd2hpY2ggY2FzZSB0aGUgY3VycmVudCBhYnNvbHV0ZSB0aW1lIHVzZWQg aXMgMCwgd2hpY2ggbWlnaHQgYmUNCj4gYQ0KPiA+Pj4+ICAgICBzdXJwcmlzZS4NCj4gPj4+Pg0K PiA+Pj4+ICogU2hvdWxkIGxpYmRpdmlkZSAob3B0aW9uYWxseSkgYmUgdXNlZCB0byBhdm9pZCB0 aGUgZGl2IGluIHRoZSBUU0MNCj4gLT4NCj4gPj4+PiAgICAgdGljayBjb252ZXJzaW9uPyAoRG9l c24ndCBpbXByb3ZlIHBlcmZvcm1hbmNlIG9uIFplbiAzLCBidXQgbWF5DQo+ID4+Pj4gICAgIGRv IG9uIG90aGVyIENQVXMuKSBDb25zaWRlciA8cnRlX3JlY2lwcm9jYWwuaD4gYXMgd2VsbC4NCj4g Pj4+Pg0KPiA+Pj4+ICogU2hvdWxkIHRoZSBUU0MtcGVyLXRpY2sgYmUgcm91bmRlZCB1cCB0byBh IHBvd2VyIG9mIDIsIHNvIHNoaWZ0cw0KPiBjYW4gYmUNCj4gPj4+PiAgICAgdXNlZCBmb3IgY29u dmVyc2lvbj8gVmVyeSBtaW5vciBwZXJmb3JtYW5jZSBnYWlucyB0byBiZSBmb3VuZA0KPiB0aGVy ZSwNCj4gPj4+PiAgICAgYXQgbGVhc3Qgb24gWmVuIDMgY29yZXMuDQo+ID4+Pj4NCj4gPj4+PiAq IFNob3VsZCBpdCBiZSBwb3NzaWJsZSB0byBzdXBwbHkgdGhlIHRpbWUgaW4gcnRlX2h0aW1lcl9t Z3JfYWRkKCkNCj4gPj4+PiAgICAgYW5kL29yIHJ0ZV9odGltZXJfbWdyX21hbmFnZV90aW1lKCkg ZnVuY3Rpb25zIGFzIHRpY2tzLCByYXRoZXINCj4gdGhhbg0KPiA+Pj4+ICAgICBhcyBUU0M/IFNo b3VsZCBpdCBiZSBwb3NzaWJsZSB0byBhbHNvIHVzZSBuYW5vc2Vjb25kcz8NCj4gPj4+PiAgICAg cnRlX2h0aW1lcl9tZ3JfbWFuYWdlX3RpbWUoKSB3b3VsZCBuZWVkIGEgZmxhZ3MgcGFyYW1ldGVy IGluDQo+IHRoYXQNCj4gPj4+PiAgICAgY2FzZS4NCj4gPj4+DQo+ID4+PiBEbyBub3QgdXNlIFRT QyBhbnl3aGVyZSBpbiB0aGlzIGxpYnJhcnkuIExldCB0aGUgYXBwbGljYXRpb24gZGVjaWRlDQo+ IHRoZQ0KPiA+PiBtZWFuaW5nIG9mIGEgdGljay4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiAqIFdv dWxkIHRoZSBldmVudCB0aW1lciBhZGFwdGVyIGJlIGJlc3Qgb2ZmIHVzaW5nIDxydGVfaHR3Lmg+ DQo+ID4+Pj4gICAgIGRpcmVjdGx5LCBvciA8cnRlX2h0aW1lci5oPj8gSW4gdGhlIGxhdHRlciBj YXNlLCB0aGVyZSBuZWVkcyB0bw0KPiBiZSBhDQo+ID4+Pj4gICAgIHdheSB0byBpbnN0YW50aWF0 ZSBtb3JlIEhXVHMgKHNpbWlsYXIgdG8gdGhlICJhbHQiIGZ1bmN0aW9ucyBvZg0KPiA+Pj4+ICAg ICA8cnRlX3RpbWVyLmg+KT8NCj4gPj4+Pg0KPiA+Pj4+ICogU2hvdWxkIHRoZSBQRVJJT0RJQ0FM IGZsYWcgKGFuZCB0aGUgY29tcGxleGl0eSBpdCBicmluZ3MpIGJlDQo+ID4+Pj4gICAgIHJlbW92 ZWQ/IEFuZCBsZWF2ZSB0aGUgYXBwbGljYXRpb24gd2l0aCBvbmx5IHNpbmdsZS1zaG90DQo+IHRp bWVycywgYW5kDQo+ID4+Pj4gICAgIHRoZSBvcHRpb24gdG8gcmUtYWRkIHRoZW0gaW4gdGhlIHRp bWVyIGNhbGxiYWNrLg0KPiA+Pj4NCj4gPj4+IEZpcnN0IHRob3VnaHQ6IFllcywga2VlcCBpdCBs ZWFuIGFuZCByZW1vdmUgdGhlIHBlcmlvZGljYWwgc3R1ZmYuDQo+ID4+Pg0KPiA+Pj4gU2Vjb25k IHRob3VnaHQ6IFRoaXMgbmVlZHMgYSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzLg0KPiA+Pj4NCj4g Pj4+ICAgRnJvbSBvbmUgYW5nbGU6DQo+ID4+Pg0KPiA+Pj4gSG93IG1hbnkgUEVSSU9ESUNBTCB2 ZXJzdXMgT05FU0hPVCB0aW1lcnMgZG8gd2UgZXhwZWN0Pw0KPiA+Pj4NCj4gPj4NCj4gPj4gSSBz dXNwZWN0IHlvdSBzaG91bGQgYmUgcHJlcGFyZWQgZm9yIHRoZSByYXRpbyBiZWluZyBhbnl0aGlu Zy4NCj4gPg0KPiA+IEluIHRoZW9yeSwgYW55dGhpbmcgaXMgcG9zc2libGUuIEJ1dCBJJ20gYXNr aW5nIHRoYXQgd2UgY29uc2lkZXINCj4gcmVhbGlzdGljIHVzZSBjYXNlcy4NCj4gPg0KPiA+Pg0K PiA+Pj4gSW50dWl0aXZlbHksIEkgd291bGQgdXNlIHRoaXMgbGlicmFyeSBmb3IgT05FU0hPVCB0 aW1lcnMsIGFuZA0KPiBwZXJoYXBzDQo+ID4+IGltcGxlbWVudCBteSBwZXJpb2RpY2FsIHRpbWVy cyBieSBvdGhlciBtZWFucy4NCj4gPj4+DQo+ID4+PiBJZiB0aGUgUEVSSU9ESUNBTDpPTkVTSE9U IHJhdGlvIGlzIGxvdywgd2UgY2FuIHByb2JhYmx5IGxpdmUgd2l0aA0KPiB0aGUgZXh0cmENCj4g Pj4gY29zdCBvZiBjYW5jZWwrYWRkIGZvciBhIGZldyBwZXJpb2RpY2FsIHRpbWVycy4NCj4gPj4+ DQo+ID4+PiAgIEZyb20gYW5vdGhlciBhbmdsZToNCj4gPj4+DQo+ID4+PiBXaGF0IGlzIHRoZSBw ZXJmb3JtYW5jZSBnYWluIHdpdGggdGhlIFBFUklPRElDQUwgZmxhZz8NCj4gPj4+DQo+ID4+DQo+ ID4+IE5vbmUsIHByZXR0eSBtdWNoLiBJdCdzIGp1c3QgdGhlcmUgZm9yIGNvbnZlbmllbmNlLg0K PiA+DQo+ID4gT0ssIHRoZW4gSSBzdWdnZXN0IHRoYXQgeW91IHJlbW92ZSBpdCwgdW5sZXNzIHlv dSBnZXQgb2JqZWN0aW9ucy4NCj4gPg0KPiA+IFRoZSBsaWJyYXJ5IGNhbiBiZSBleHBhbmRlZCB3 aXRoIHVzZWZ1bCBmZWF0dXJlcyBhdCBhbnkgdGltZSBsYXRlci4NCj4gVXNlbGVzcyBmZWF0dXJl cyBhcmUgKG5lYXJseSkgaW1wb3NzaWJsZSB0byByZW1vdmUsIG9uY2UgdGhleSBhcmUgaW4NCj4g dGhlcmUgLSB0aGV5IGFyZSBqdXN0ICJ0ZWNobmljYWwgZGVidCIgd2l0aCBhc3NvY2lhdGVkIG1h aW50ZW5hbmNlDQo+IGNvc3RzLCBhZGRlZCBjb21wbGV4aXR5IHdlYXZpbmcgaW50byBvdGhlciBm ZWF0dXJlcywgZXRjLi4NCj4gPg0KPiA+Pg0KPiA+Pj4gV2l0aG91dCBhIHBlcmlvZGljYWwgdGlt ZXIsIGNhbmNlbCthZGQgY29zdHMgMTArMjggY3ljbGVzLiBIb3cgbWFueQ0KPiBjeWNsZXMNCj4g Pj4gd291bGQgYSAibW92ZSIgZnVuY3Rpb24sIHBlcmZvcm1pbmcgYm90aCBjYW5jZWwgYW5kIGFk ZCwgdXNlPw0KPiA+Pj4NCj4gPj4+IEFuZCB0aGVuIGNvbXBhcmUgdGhhdCB0byB0aGUgY29zdCAo aW4gY3ljbGVzKSBvZiByZXBlYXRpbmcgYSB0aW1lcg0KPiB3aXRoDQo+ID4+IFBFUklPRElDQUw/ DQo+ID4+Pg0KPiA+Pj4gRnVydGhlcm1vcmUsIG5vdCBoYXZpbmcgdGhlIFBFUklPRElDQUwgZmxh ZyBwcm9iYWJseSBpbXByb3ZlcyB0aGUNCj4gPj4gcGVyZm9ybWFuY2UgZm9yIG5vbi1wZXJpb2Rp Y2FsIHRpbWVycy4gSG93IG1hbnkgY3ljbGVzIGNvdWxkIHdlIGdhaW4NCj4gaGVyZT8NCj4gPj4+ DQo+ID4+Pg0KPiA+Pj4gQW5vdGhlciwgdmFndWVseSByZWxhdGVkLCBpZGVhOg0KPiA+Pj4NCj4g Pj4+IFRoZSBjYWxsYmFjayBwb2ludGVyIG1pZ2h0IG5vdCBuZWVkIHRvIGJlIHN0b3JlZCBwZXIg cnRlX2h0aW1lciwgYnV0DQo+IGNvdWxkDQo+ID4+IGluc3RlYWQgYmUgY29tbW9uIGZvciB0aGUg cnRlX2h0dy4NCj4gPj4+DQo+ID4+DQo+ID4+IERvIHlvdSBtZWFuIHJ0ZV9odHcsIG9yIHJ0ZV9o dGltZXJfbWdyPw0KPiA+Pg0KPiA+PiBJZiB5b3UgbWFrZSBvbmUgY29tbW9uIGNhbGxiYWNrLCBh bGwgdGhlIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUNCj4gPj4gYXBwbGljYXRpb24gbmVlZHMgdG8g YmUgY29vcmRpbmF0ZWQgKGluIGEgYmlnIHN3aXRjaC1zdGF0ZW1lbnQsIG9yDQo+ID4+IHNvbWV0 aGluZyBvZiB0aGF0IHNvcnQpLCBvciBoYXZlIHNvbWUgY29udmVudGlvbiBmb3IgdXNpbmcgYW4N Cj4gPj4gYXBwbGljYXRpb24tc3BlY2lmaWMgd3JhcHBlciBzdHJ1Y3R1cmUgKGFjY2Vzc2VkIHZp YSBjb250YWluZXJfb2YoKSkuDQo+ID4+DQo+ID4+IFRoaXMgaXMgYSBwcm9ibGVtIGlmIHRoZSB0 aW1lciBzZXJ2aWNlIEFQSSBjb25zdW1lciBpcyBhIHNldCBvZg0KPiBsYXJnZWx5DQo+ID4+IHVu Y29vcmRpbmF0ZWQgc29mdHdhcmUgbW9kdWxlcy4NCj4gPj4NCj4gPj4gQnR3LCB0aGUgZXZlbnRk ZXYgQVBJIGhhcyB0aGUgc2FtZSBpc3N1ZSwgYW5kIHRoZSBwcm9wb3NlZCBldmVudA0KPiA+PiBk aXNwYXRjaGVyIGlzIG9uZSB3YXkgdG8gaGVscCBmYWNpbGl0YXRlIGFwcGxpY2F0aW9uLWludGVy bmFsDQo+IGRlY291cGxpbmcuDQo+ID4+DQo+ID4+IEZvciBhIG1vZHVsZS1wcml2YXRlIHJ0ZV9o dHcgaW5zdGFuY2UgeW91ciBzdWdnZXN0aW9uIG1heSB3b3JrLCBidXQNCj4gbm90DQo+ID4+IGZv ciA8cnRlX2h0aW1lcl9tZ3IuaD4uDQo+ID4NCj4gPiBJIHdhcyBzcGVjdWxhdGluZyB0aGF0IGEg Y29tbW9uIGNhbGxiYWNrIHBvaW50ZXIgbWlnaHQgcHJvdmlkZSBhDQo+IHBlcmZvcm1hbmNlIGJl bmVmaXQgZm9yIHNpbmdsZS1wdXJwb3NlIEhUVyBpbnN0YW5jZXMuIChUaGUgc2FtZSBjb25jZXB0 DQo+IGFwcGxpZXMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGNhbGxiYWNrcywgZS5nLiBhICJUaW1l ciBGaXJlZCIsIGEgIlRpbWVyDQo+IENhbmNlbGxlZCIsIGFuZCBhbiAiRWFybHkgS2ljayIgY2Fs bGJhY2sgcG9pbnRlciAtIGkuZS4gaGF2aW5nIHRoZQ0KPiBjYWxsYmFjayBwb2ludGVycyBwZXIg SFRXIGluc3RhbmNlLCBpbnN0ZWFkIG9mIHBlciB0aW1lci4pDQo+ID4NCj4gPj4NCj4gPj4+IFdo ZW4gYSB0aW1lciBmaXJlcywgdGhlIGNhbGxiYWNrIHByb2JhYmx5IG5lZWRzIHRvIGNoZWNrL3Vw ZGF0ZSB0aGUNCj4gc3RhdGUgb2YNCj4gPj4gdGhlIG9iamVjdCBmb3Igd2hpY2ggdGhlIHRpbWVy IGZpcmVkIGFueXdheSwgc28gd2h5IG5vdCBqdXN0IGxldCB0aGUNCj4gPj4gYXBwbGljYXRpb24g dXNlIHRoYXQgc3RhdGUgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uIFRoaXMN Cj4gbWlnaHQNCj4gPj4gcHJvdmlkZSBzb21lIHBlcmZvcm1hbmNlIGJlbmVmaXQuDQo+ID4+Pg0K PiA+Pj4gSXQgbWlnaHQgY29tcGxpY2F0ZSB1c2luZyBvbmUgSFRXIGZvciBtdWx0aXBsZSBkaWZm ZXJlbnQgcHVycG9zZXMsDQo+IHRob3VnaC4NCj4gPj4gUHJvYmFibHkgYSB1c2VsZXNzIGlkZWEs IGJ1dCBJIHdhbnRlZCB0byBzaGFyZSB0aGUgaWRlYSBhbnl3YXkuIEl0DQo+IG1pZ2h0DQo+ID4+ IHRyaWdnZXIgb3RoZXIsIGJldHRlciBpZGVhcyBpbiB0aGUgY29tbXVuaXR5Lg0KPiA+Pj4NCj4g Pj4+Pg0KPiA+Pj4+ICogU2hvdWxkIHRoZSBhc3luYyByZXN1bHQgY29kZXMgYW5kIHRoZSBzeW5j IGNhbmNlbCBlcnJvciBjb2RlcyBiZQ0KPiBtZXJnZWQNCj4gPj4+PiAgICAgaW50byBvbmUgc2V0 IG9mIHJlc3VsdCBjb2Rlcz8NCj4gPj4+Pg0KPiA+Pj4+ICogU2hvdWxkIHRoZSBydGVfaHRpbWVy X21ncl9hc3luY19hZGQoKSBoYXZlIGEgZmxhZyB3aGljaCBhbGxvdw0KPiA+Pj4+ICAgICBidWZm ZXJpbmcgYWRkIHJlcXVlc3QgbWVzc2FnZXMgdW50aWwgcnRlX2h0aW1lcl9tZ3JfcHJvY2Vzcygp DQo+IGlzDQo+ID4+Pj4gICAgIGNhbGxlZD8gT3IgYW55IG1hbmFnZSBmdW5jdGlvbi4gV291bGQg cmVkdWNlIHJpbmcgc2lnbmFsaW5nDQo+IG92ZXJoZWFkDQo+ID4+Pj4gICAgIChpLmUuLCBidXJz dCBlbnF1ZXVlIG9wZXJhdGlvbnMgaW5zdGVhZCBvZiBzaW5nbGUtZWxlbWVudA0KPiA+Pj4+ICAg ICBlbnF1ZXVlKS4gQ291bGQgYWxzbyBiZSBhIHJ0ZV9odGltZXJfbWdyX2FzeW5jX2FkZF9idXJz dCgpDQo+IGZ1bmN0aW9uLA0KPiA+Pj4+ICAgICBzb2x2aW5nIHRoZSBzYW1lICJwcm9ibGVtIiBh IGRpZmZlcmVudCB3YXkuIChUaGUgc2lnbmF0dXJlIG9mDQo+IHN1Y2gNCj4gPj4+PiAgICAgYSBm dW5jdGlvbiB3b3VsZCBub3QgYmUgcHJldHR5LikNCj4gPj4+Pg0KPiA+Pj4+ICogRG9lcyB0aGUg ZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSB0aGUgcnRlX2h0aW1lcl9tZ3JfcHJvY2VzcygpDQo+ ID4+Pj4gICAgIGZ1bmN0aW9uIG1hdGNoIGl0cyB0aGUgdXNlIGNhc2VzPyBTaG91bGQgdGhlcmUg bWUgYSBtb3JlIGNsZWFyDQo+ID4+Pj4gICAgIHNlcGFyYXRpb24gYmV0d2VlbiBleHBpcnkgcHJv Y2Vzc2luZyBhbmQgYXN5bmNocm9ub3VzIG9wZXJhdGlvbg0KPiA+Pj4+ICAgICBwcm9jZXNzaW5n Pw0KPiA+Pj4+DQo+ID4+Pj4gKiBTaG91bGQgdGhlIHBhdGNoc2V0IGJlIHNwbGl0IGludG8gbW9y ZSBjb21taXRzPyBJZiBzbywgaG93Pw0KPiA+Pj4+DQo+ID4+Pj4gVGhhbmtzIHRvIEVyaWsgQ2Fy cmlsbG8gZm9yIGhpcyBhc3Npc3RhbmNlLg0KPiA+Pj4+DQo+ID4+Pj4gTWF0dGlhcyBSw7ZubmJs b20gKDIpOg0KPiA+Pj4+ICAgICBlYWw6IGFkZCBiaXRzZXQgdHlwZQ0KPiA+Pj4+ICAgICBlYWw6 IGFkZCBoaWdoLXBlcmZvcm1hbmNlIHRpbWVyIGZhY2lsaXR5DQo+ID4NCg0K