From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Yrr4h-0003kY-Ln for user-mode-linux-devel@lists.sourceforge.net; Mon, 11 May 2015 17:01:03 +0000 Received: from www17.your-server.de ([213.133.104.17]) by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) id 1Yrr4b-0000tC-K4 for user-mode-linux-devel@lists.sourceforge.net; Mon, 11 May 2015 17:01:03 +0000 Date: Mon, 11 May 2015 19:00:42 +0200 Message-ID: <672e7d23-295e-42eb-a92a-d13faa966927@email.android.com> In-Reply-To: <5550CE0F.40504@kot-begemot.co.uk> From: Thomas Meyer MIME-Version: 1.0 List-Id: The user-mode Linux development list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: user-mode-linux-devel-bounces@lists.sourceforge.net Subject: Re: [uml-devel] [PATCH v6] um: Add a high resolution timer subsystem To: Anton Ivanov Cc: user-mode-linux-devel@lists.sourceforge.net SGksCgptYXliZSB0aGVyZSBpcyBhIGJ1ZyBpbiBob3cgdGhlIHRpbWVycyBhcmUgY3JlYXRlZCBm b3IgYWxsIHVzZXIgc3BhY2UgcHJvY2Vzc2VzLgpJbiB0aGUgbGF0ZXN0IHBhdGNoIEkgdXNlIG9z X190aW1lcl9yZW1haW4gZm9yIHRoZSBpbml0aWFsIGludGVydmFsLgpUaGUgaWRlYSB3YXMgdG8g bGF1bmNoIGFsbCB0aW1lcnMgYXQgdGhlIHNhbWUgdGltZS4gQnV0IEkgbm93IHRoaW5rIHRoaXMg Y2FuIG5ldmVyIHdvcmsgdXNpbmcgcmVsYXRpdmUgdGltZXMsIGVzcGVjaWFsbHkgd2hlbiBvc19f dGltZXJfcmVtYWluIHJldHVybnMgMCwgdGhlbiB0aGUgbmV3IHRpbWVyIGlzIG5ldmVyIGxhdW5j aGVkLgoKVGhhdCBtYXkgZXhwbGFpbiB0aGUgaGFuZ3MgeW91IHNlZS4KIFlvdSBjb3VsZCB0cnkg dG8gcmVwbGFjZSBvc19fdGltZXJfcmVtYWluIHdpdGggdGhlIGN1cnJlbnQgSFogdmFsdWUgaW4g bmFub3NlY29uZHMuCgpLaW5kIHJlZ2FyZHMKVGhvbWFkCgpBbSAxMS4wNS4yMDE1IDU6NDMgbmFj aG0uIHNjaHJpZWIgQW50b24gSXZhbm92IDxhbnRvbi5pdmFub3ZAa290LWJlZ2Vtb3QuY28udWs+ Ogo+Cj4gVGhlIGxpa2VseSBzdXNwZWN0IGlzIGFyY2gvdW0vb3MtTGludXgvc2thcy9wcm9jZXNz LmMgCj4KPiBJdCBpcyBzcGlubmluZyBpbiB0aGUgd2hpbGUoMSkgbG9vcC4gCj4KPiBIb3dldmVy LCB0aGUgY3VycmVudCBjb2RlIGxvb2tzIGNvcnJlY3QgYW5kIHRoZSBvcmlnaW5hbCBjb2RlIGRv ZXMgbm90IAo+IG1ha2UgYW55IHNlbnNlIGF0IGxlYXN0IHRvIG1lOiAKPgo+IE9yaWdpbmFsIGNv ZGUgZ2V0cyB0aGUgX1ZBTFVFXyBvZiB0aGUgY3VycmVudCB1c2Vyc3BhY2UgaXRpbWVyKCkgYW5k IGl0IAo+IGVuc3VyZXMgdGhhdCB0aGUgc2lnbmFsIGlzIGRlbGl2ZXJlZCB0aGUgZmlyc3QgdGlt ZSAob25seSB0aGUgZmlyc3QgCj4gdGltZSkgaXQgc2tpcHMgdnRhbHJtIHNpZ25hbHMgdW50aWwg dGhhdCB0aW1lIGhhcyBsYXBzZWQuIFNvIGZhciBzbyBnb29kIAo+IC0gd2UgYXJlIGFwcHJveGlt YXRpbmcgcmVhbCBjbG9jayB1c2luZyBhIGNsb2NrIHdob3NlIHZhbHVlIGRlcGVuZHMgb24gQ1BV LiAKPgo+Cj4KPiDCoMKgwqDCoCBpZiAoZ2V0aXRpbWVyKElUSU1FUl9WSVJUVUFMLCAmdGltZXIp KSAKPiDCoMKgwqDCoMKgwqDCoMKgIHByaW50ayhVTV9LRVJOX0VSUiAiRmFpbGVkIHRvIGdldCBp dGltZXIsIGVycm5vID0gJWRcbiIsIGVycm5vKTsgCj4gwqDCoMKgwqAgbnNlY3MgPSB0aW1lci5p dF92YWx1ZS50dl9zZWMgKiBVTV9OU0VDX1BFUl9TRUMgKyAKPiDCoMKgwqDCoMKgwqDCoMKgIHRp bWVyLml0X3ZhbHVlLnR2X3VzZWMgKiBVTV9OU0VDX1BFUl9VU0VDOyAKPiDCoMKgwqDCoCBuc2Vj cyArPSBvc19uc2VjcygpOyAKPgo+IEhvd2V2ZXIsIGluc3RlYWQgb2YgcmVzZXR0aW5nIHRoZSBu ZXh0IGNoZWNrIHZhbHVlIHRvIHRoZSBfSU5URVJWQUxfIAo+IHZhbHVlIHdoaWNoIHdvdWxkIGhh dmUgYmVlbiB0aGUgb2J2aW91cyB0aGluZyB0byBkbyBpbiB0aGUgY2hlY2sgaXQgCj4gcmVzZXRz IGl0IGJ5IGluY3JlbWVudGluZyBpdCB3aXRoIHRoZSBfVkFMVUVfIAo+Cj4KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuc2VjcyA9IHRpbWVyLml0X3ZhbHVlLnR2X3NlYyAqIAo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVU1fTlNFQ19QRVJfU0VD ICsgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aW1lci5pdF92 YWx1ZS50dl91c2VjICogCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBVTV9OU0VDX1BFUl9VU0VDOyAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBu c2VjcyArPSBvc19uc2VjcygpOyAKPgo+IFRoaXMgaXMgaW5zaWRlIHRoZSB3aGlsZSgxKSBsb29w IHNvIHRoZXJlIGlzIG5vIHJlLWFkanVzdG1lbnQgb2YgdGhlIAo+IHZhbHVlcy4gU28gaW4gZmFj dCwgaW4gdGhlIG9yaWdpbmFsIGNvZGUgaXQgZmlyZXMgYXQgc29tZSBmZWVkYmFjayBsb29wIAo+ IHJhdGUgZGVwZW5kaW5nIG9uIENQVSB1c2FnZSBieSB0aGlzIFVNTCBpbnN0YW5jZS4gV2VpcmQu IAo+Cj4gSW4gYW55IGNhc2UsIGluIG9yZGVyIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgcmVw bGFjZW1lbnQgaGVyZSwgd2UgCj4gbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyAob3IgdGhl IGJ1ZykgaW4gdGhlIG9yaWdpbmFsLiBRdWl0ZSBjbGVhcmx5IAo+IHRoZSAibG9naWNhbCIgcmVw bGFjZW1lbnQgd2hlcmUgdGhlIHRpbWVyIGZpcmVzIGV4YWN0bHkgd2hlbiBpdCBpcyAKPiBleHBl Y3RlZCB0byBmaXJlIGRvZXMgbm90IHF1aXRlIHdvcmsuIFNvIHdoYXQgaXMgdGhlIGlkZWEgaGVy ZT8gCj4KPiBBLiAKPgo+IE9uIDExLzA1LzE1IDE2OjA1LCBBbnRvbiBJdmFub3Ygd3JvdGU6IAo+ ID4gSGkgVGhvbWFzLCBoaSBSaWNoYXJkLCAKPiA+IAo+ID4gSXQgaXMgbm93IHBvc3NpYmxlIHRv IHJlcHJvZHVjaWJseSBoYW5nIGl0LiBJIGhhdmUgbm90IGJlZW4gYWJsZSB0byAKPiA+IGNvbmNv Y3QgYSBzeW50aGV0aWMgdGVzdCAoeWV0KSwgYnV0IGEgbm9uLXN5bnRoZXRpYyBvbmUsIG5hbWVs eSAKPiA+IGluc3RhbGxpbmcgYW4gdXBkYXRlIHRvIGJhc2UtZmlsZXMgb24gRGViaWFuIGlzIGEg Z3VhcmFudGVlZCBoYW5nLiBTbyBJTyAKPiA+IG9uIGl0c2VsZiBkb2VzIG5vdCBoYW5nIGl0LCBD UFUgb24gaXRzZWxmIGRvZXMgbm90LCBhIG1peCBvZiB0d28gZG9lcy4gCj4gPiAKPiA+IEl0IGhh bmdzIGluIHVzZXJzcGFjZSwgc3Bpbm5pbmcgYXQgMTAwJSBDUFUgb24gdGhhdCB0aHJlYWQuIElm IHlvdSB3aGFjayAKPiA+IHRoZSBvZmZlbmRpbmcgdGhyZWFkIHdpdGggLTExIGZyb20gdGhlIGhv c3QsIFVNTCByZWNvdmVycywga2lsbGluZyB0aGUgCj4gPiBhZmZlY3RlZCBwcm9jZXNzLiBJIGNh bm5vdCBsb29rIGF0IHRoaXMgaW4gZGV0YWlsIGZvciBhIGZldyBkYXlzIHRob3VnaCAKPiA+IC0g dGhlIGVhcmxpZXN0IEkgY2FuIHBpY2sgaXQgdXAgaXMgb24gU2F0IChpbiBteSBmcmVlIHRpbWUp LiAKPiA+IAo+ID4gT24gdGhlIHBvc2l0aXZlIHNpZGUgLSB0aGUgYmVoYXZpb3Igd2UgYXJlIGdl dHRpbmcgbm93IGlzIGJldHRlciwgc28gd2UgCj4gPiBqdXN0IG5lZWQgdG8gZmlndXJlIG91dCB0 aGUgcm9vdCBjYXVzZSBmb3IgdGhlIGhhbmcocykgYW5kIHN0YWJpbGl6ZSBpdC4gCj4gPiAKPiA+ IEEuIAo+ID4gCj4gPiAKPiA+IE9uIDExLzA1LzE1IDEzOjUyLCBBbnRvbiBJdmFub3Ygd3JvdGU6 IAo+ID4+IEh1cnJheSwgSG91c3RvbiB3ZSBoYXZlIGlnbml0aW9uLiAKPiA+PiAKPiA+PiBXZSBu b3cgaGF2ZSB3b3JraW5nIHVzZXJzcGFjZSB0aW1lcnMuIAo+ID4+IAo+ID4+IEl0IGlzIHN0aWxs IHNjaGl6b3BocmVuaWMgLSB1c2Vyc3BhY2UgaXMgSFosIGtlcm5lbCBpcyBOT0haIGJlY2F1c2Ug dGhlIAo+ID4+IHVzZXJwYWNlIGhhcyB0byBrZWVwIGNoZWNraW5nICJkaWQgdGhlIGtlcm5lbCB0 aW1lciBmaXJlIHlldCIgYXQgYSBIWiAKPiA+PiBpbnRlcnZhbC4gSG93ZXZlciwgZXZlbiB0aGF0 IGlzIGEgbWFqb3IgcHJvZ3Jlc3MgY29tcGFyZWQgdG8gaGF2aW5nIAo+ID4+IHVzZXJzcGFjZSB0 aW1lciBiZWhhdmlvciBkZXRlcm1pbmVkIGJ5IHRoZSBwaGFzZSBvZiB0aGUgbW9vbiwgdGhlIAo+ ID4+IHBvc2l0aW9uIG9mIGEgYmxhY2sgZ29hdCByZWxhdGl2ZSB0byBhIHNpbHZlciBrbmlmZSwg ZXRjLiBJdCBpcyBub3cgCj4gPj4gInNwb3Qgb24iIC0geW91IHNldCBIWj0xMDAgaW4gdGhlIC5j b25maWcsIHlvdSBnZXQgMTAwLiBCZWZvcmUgeW91IHVzZWQgCj4gPj4gdG8gZ2V0IHNvbWV0aGlu Zy4uLiBsaWtlIDM5LTQ1IGRlcGVuZGluZyBvbiB0aGUgd2VhdGhlci4gCj4gPj4gCj4gPj4gVGhl IHVzZXJzcGFjZSBpcyBub3cgc2lnbmlmaWNhbnRseSBtb3JlIHJlc3BvbnNpdmUgYW5kIHNuYXBw eSAodGhhdCBpcyAKPiA+PiBleHBlY3RlZCBhcyBpdCBub3cgZ2V0cyBkZWNlbnQgY2xvY2spLiBL ZXJuZWwgYmVoYXZpb3Igb24gdGltZXJzIGluIAo+ID4+IGZpcnN0IGluc3RhbmNlIGFsc28gbG9v a3MgY29ycmVjdCBhbmQgTk9IWi1pc2ggKHRyYWZmaWMgc2hhcGVycyB3b3JrKS4gCj4gPj4gCj4g Pj4gSSBhbSBnb2luZyB0byBoaXQgaXQgd2l0aCB0aGUgInRvcnR1cmUiIHN1aXRlIG5vdyB0byBz ZWUgaWYgdGhlcmUgaXMgCj4gPj4gc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSB3aXRoIHJlbGF0aW9u IHRvIG90aGVyIGtub3duIGJ1Z3MgbGlrZSB0aGUgZXh0NCAKPiA+PiB3cml0ZW91dCAobXkgb3Jp Z2luYWwgcGF0Y2ggdmVyc2lvbnMgc2VlbWVkIHRvIGFnZ3JhdmF0ZSBpdCkuIAo+ID4+IAo+ID4+ IEkgd2lsbCB0cnkgdG8gZ2V0IGFyb3VuZCB0byByZXN0b3JlIG15IHZpcnR1YWwgZGVza3RvcCBz ZXR1cCBvdmVyIFggdG8gCj4gPj4gc2VlIHdoYXQgZGlmZmVyZW5jZSBkb2VzIGl0IG1ha2UuIEp1 ZGdpbmcgYnkgdGhlIHdheSB1c2Vyc3BhY2UgYmVoYXZlcyAKPiA+PiBhZnRlciB0aGUgY2hhbmdl cyBpdCBzaG91bGQgYmUgYmV0dGVyIHRoYW4gYmVmb3JlLiAKPiA+PiAKPiA+PiBBLiAKPiA+PiAK PiA+PiAKPiA+PiBPbiAxMC8wNS8xNSAxNTozNCwgVGhvbWFzIE1leWVyIHdyb3RlOiAKPiA+Pj4+ IEFtIDEwLjA1LjIwMTUgdW0gMTQ6MzUgc2NocmllYiBSaWNoYXJkIFdlaW5iZXJnZXIgPHJpY2hh cmQud2VpbmJlcmdlckBnbWFpbC5jb20+OiAKPiA+Pj4+IAo+ID4+Pj4+IE9uIFN1biwgTWF5IDEw LCAyMDE1IGF0IDE6MTQgQU0sIFRob21hcyBNZXllciA8dGhvbWFzQG0zeTNyLmRlPiB3cm90ZTog Cj4gPj4+Pj4gSGksIAo+ID4+Pj4+IAo+ID4+Pj4+IENoYW5nZXM6IAo+ID4+Pj4+IC0gYWxzbyBj cmVhdGUgcG9zaXggdGltZXIgaW4gc3R1Yl9jbG9uZV9oYW5kbGVyKCkgCj4gPj4+Pj4gLSBpbmNv cnBvcmF0ZWQgYW50b25zIHJlbWFya3MgCj4gPj4+PiBIbSwgdGhpcyBwYXRjaCBkb2VzIGEgKmxv dCogbW9yZSB0aGFuIHRoZSBjaGFuZ2Vsb2cgc2F5cy4gCj4gPj4+IEhpLCB5ZXMgUEFUQ0ggd2Fz IHByb2JhYmx5IHRoZSB3cm9uZyBrZXl3b3JkIGluIHRoZSBzdWJqZWN0IGxpbmUuIEl0IHNob3Vs ZCBoYXZlIGJlZW4gUkZDLiAKPiA+Pj4gSSBqdXN0IHdhbnRlZCB0byBoYXZlIGZlZWRiYWNrIG9m IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaXMgcGF0Y2gvd29yay4gCj4gPj4+IAo+ID4+PiBJJ20g Y3VycmVudGx5IHdvcmtpbmcgb24gY2xlYW5pbmcgdXAgdGhlIHBhdGNoIGFuZCBzd2l0Y2ggZnJv bSBTSUdVU1IyIHRvIFNJR05BTFJNLCB3aGljaCBzZWVtcyB0byBiZSB0aGUgbmF0dXJhbCB0aGlu ZyBmb3IgcG9zaXggdGltZXJzLiAKPiA+Pj4gSSB3aWxsIHNlbmQgdGhpcyBuZXh0IHBhdGNoIGFz IHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSBpbmNsdWRhYmxlIGludG8gdGhlIGtlcm5lbCwgaS5l LiBXaXRoIGNvcnJlY3QgZGVzY3JpcHRpb24gYW5kIHNpZ25lZCBvZmYgbGluZSBhbmQgc28gb24u IAo+ID4+PiAKPiA+Pj4gQnV0IGZlZWwgZnJlZSB0byBoYXZlIGEgbG9vayBhdCB2NiBhbmQgZ2l2 ZSBmZWVkYmFjay4gCj4gPj4+IAo+ID4+PiBXaXRoIGtpbmQgcmVnYXJkcyAKPiA+Pj4gVGhvbWFz IAo+ID4+PiAKPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9NYWtlZmlsZSBiL2FyY2gvdW0v TWFrZWZpbGUgCj4gPj4+Pj4gaW5kZXggMTdkNDQ2MC4uYTRhNDM0ZiAxMDA2NDQgCj4gPj4+Pj4g LS0tIGEvYXJjaC91bS9NYWtlZmlsZSAKPiA+Pj4+PiArKysgYi9hcmNoL3VtL01ha2VmaWxlIAo+ ID4+Pj4+IEBAIC0xMzAsNyArMTMwLDcgQEAgZXhwb3J0IExEU19FTEZfRk9STUFUIDo9ICQoRUxG X0ZPUk1BVCkgCj4gPj4+Pj4gIyBUaGUgd3JhcHBlcnMgd2lsbCBzZWxlY3Qgd2hldGhlciB1c2lu ZyAibWFsbG9jIiBvciB0aGUga2VybmVsIGFsbG9jYXRvci4gCj4gPj4+Pj4gTElOS19XUkFQUyA9 IC1XbCwtLXdyYXAsbWFsbG9jIC1XbCwtLXdyYXAsZnJlZSAtV2wsLS13cmFwLGNhbGxvYyAKPiA+ Pj4+PiAKPiA+Pj4+PiAtTERfRkxBR1NfQ01ETElORSA9ICQoZm9yZWFjaCBvcHQsJChMREZMQUdT KSwtV2wsJChvcHQpKSAKPiA+Pj4+PiArTERfRkxBR1NfQ01ETElORSA9ICQoZm9yZWFjaCBvcHQs JChMREZMQUdTKSwtV2wsJChvcHQpKSAtbHJ0IAo+ID4+Pj4+IAo+ID4+Pj4+ICMgVXNlZCBieSBs aW5rLXZtbGludXguc2ggd2hpY2ggaGFzIHNwZWNpYWwgc3VwcG9ydCBmb3IgdW0gbGluayAKPiA+ Pj4+PiBleHBvcnQgQ0ZMQUdTX3ZtbGludXggOj0gJChMSU5LLXkpICQoTElOS19XUkFQUykgJChM RF9GTEFHU19DTURMSU5FKSAKPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9pbmNsdWRlL2Fz bS9pcnEuaCBiL2FyY2gvdW0vaW5jbHVkZS9hc20vaXJxLmggCj4gPj4+Pj4gaW5kZXggNGEyMDM3 Zi4uMGYyYTViMSAxMDA2NDQgCj4gPj4+Pj4gLS0tIGEvYXJjaC91bS9pbmNsdWRlL2FzbS9pcnEu aCAKPiA+Pj4+PiArKysgYi9hcmNoL3VtL2luY2x1ZGUvYXNtL2lycS5oIAo+ID4+Pj4+IEBAIC0x Niw4ICsxNiw5IEBAIAo+ID4+Pj4+ICNkZWZpbmUgVEVMTkVURF9JUlHCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDEyIAo+ID4+Pj4+ICNkZWZpbmUgWFRFUk1fSVJRwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMTMgCj4gPj4+Pj4gI2RlZmluZSBSQU5ET01fSVJRwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDE0IAo+ID4+Pj4+ICsjZGVmaW5lIEhSVElNRVJfSVJRwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAxNSAKPiA+Pj4+PiAKPiA+Pj4+PiAtI2RlZmluZSBMQVNUX0lSUSBSQU5ET01fSVJRIAo+ID4+ Pj4+ICsjZGVmaW5lIExBU1RfSVJRIEhSVElNRVJfSVJRIAo+ID4+Pj4+ICNkZWZpbmUgTlJfSVJR UyAoTEFTVF9JUlEgKyAxKSAKPiA+Pj4+PiAKPiA+Pj4+PiAjZW5kaWYgCj4gPj4+Pj4gZGlmZiAt LWdpdCBhL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvYXMtbGF5b3V0LmggYi9hcmNoL3VtL2luY2x1 ZGUvc2hhcmVkL2FzLWxheW91dC5oIAo+ID4+Pj4+IGluZGV4IGNhMTg0M2UuLjc5OGFhNmUgMTAw NjQ0IAo+ID4+Pj4+IC0tLSBhL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvYXMtbGF5b3V0LmggCj4g Pj4+Pj4gKysrIGIvYXJjaC91bS9pbmNsdWRlL3NoYXJlZC9hcy1sYXlvdXQuaCAKPiA+Pj4+PiBA QCAtMTcsNyArMTcsNyBAQCAKPiA+Pj4+PiAKPiA+Pj4+PiAvKiBTb21lIGNvbnN0YW50IG1hY3Jv cyBhcmUgdXNlZCBpbiBib3RoIGFzc2VtYmxlciBhbmQgCj4gPj4+Pj7CoMKgwqDCoCAqIEMgY29k ZS7CoCBUaGVyZWZvcmUgd2UgY2Fubm90IGFubm90YXRlIHRoZW0gYWx3YXlzIHdpdGggCj4gPj4+ Pj4gLSAqICdVTCcgYW5kIG90aGVyIHR5cGUgc3BlY2lmaWVycyB1bmlsYXRlcmFsbHkuwqAgV2Ug Cj4gPj4+Pj4gKyAqICdVTCcgYW5kIG90aGVyIHR5cGUgc3BlY2lmaWVycyB1bmlsYXRlcmFsbHku IFdlIAo+ID4+Pj4+wqDCoMKgwqAgKiB1c2UgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gZGVhbCB3 aXRoIHRoaXMuIAo+ID4+Pj4+wqDCoMKgwqAgKi8gCj4gPj4+Pj4gCj4gPj4+Pj4gQEAgLTI4LDYg KzI4LDEzIEBAIAo+ID4+Pj4+ICNkZWZpbmUgX1VNTF9BQyhYLCBZKcKgIF9fVU1MX0FDKFgsIFkp IAo+ID4+Pj4+ICNlbmRpZiAKPiA+Pj4+PiAKPiA+Pj4+PiArLyoqIAo+ID4+Pj4+ICsgKiB1c2Vy c3BhY2Ugc3R1YiBhZGRyZXNzIHNwYWNlIGxheW91dDogCj4gPj4+Pj4gKyAqIEJlbG93IG1hY3Jv cyBkZWZpbmUgdGhlIGxheW91dCBvZiB0aGUgc3R1YiBjb2RlIGFuZCBkYXRhIAo+ID4+Pj4+ICsg KiB3aGljaCBhcmUgbWFwcGVkIGluIGVhY2ggdXNlcnNwYWNlIHByb2Nlc3M6IAo+ID4+Pj4+ICsg KsKgIC0gb25lIHBhZ2Ugb2YgY29kZSBsb2NhdGVkIGF0IDB4MTAwMDAwIGZvbGxvd2VkIGJ5IAo+ ID4+Pj4+ICsgKsKgIC0gb25lIHBhZ2Ugb2YgZGF0YSAKPiA+Pj4+PiArICovIAo+ID4+Pj4+ICNk ZWZpbmUgU1RVQl9TVEFSVCBfVU1MX0FDKCwgMHgxMDAwMDApIAo+ID4+Pj4+ICNkZWZpbmUgU1RV Ql9DT0RFIF9VTUxfQUMoKHVuc2lnbmVkIGxvbmcpLCBTVFVCX1NUQVJUKSAKPiA+Pj4+PiAjZGVm aW5lIFNUVUJfREFUQSBfVU1MX0FDKCh1bnNpZ25lZCBsb25nKSwgU1RVQl9DT0RFICsgVU1fS0VS Tl9QQUdFX1NJWkUpIAo+ID4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3VtL2luY2x1ZGUvc2hhcmVk L2tlcm5fdXRpbC5oIGIvYXJjaC91bS9pbmNsdWRlL3NoYXJlZC9rZXJuX3V0aWwuaCAKPiA+Pj4+ PiBpbmRleCA4M2E5MWY5Li4wMjgyYjM2IDEwMDY0NCAKPiA+Pj4+PiAtLS0gYS9hcmNoL3VtL2lu Y2x1ZGUvc2hhcmVkL2tlcm5fdXRpbC5oIAo+ID4+Pj4+ICsrKyBiL2FyY2gvdW0vaW5jbHVkZS9z aGFyZWQva2Vybl91dGlsLmggCj4gPj4+Pj4gQEAgLTM3LDYgKzM3LDcgQEAgZXh0ZXJuIHZvaWQg aW5pdGlhbF90aHJlYWRfY2Iodm9pZCAoKnByb2MpKHZvaWQgKiksIHZvaWQgKmFyZyk7IAo+ID4+ Pj4+IGV4dGVybiBpbnQgaXNfc3lzY2FsbCh1bnNpZ25lZCBsb25nIGFkZHIpOyAKPiA+Pj4+PiAK PiA+Pj4+PiBleHRlcm4gdm9pZCB0aW1lcl9oYW5kbGVyKGludCBzaWcsIHN0cnVjdCBzaWdpbmZv ICp1bnVzZWRfc2ksIHN0cnVjdCB1bWxfcHRfcmVncyAqcmVncyk7IAo+ID4+Pj4+ICtleHRlcm4g dm9pZCBocnRpbWVyX2hhbmRsZXIoaW50IHNpZywgc3RydWN0IHNpZ2luZm8gKnVudXNlZF9zaSwg c3RydWN0IHVtbF9wdF9yZWdzICpyZWdzKTsgCj4gPj4+Pj4gCj4gPj4+Pj4gZXh0ZXJuIGludCBz dGFydF91bWwodm9pZCk7IAo+ID4+Pj4+IGV4dGVybiB2b2lkIHBhZ2luZ19pbml0KHZvaWQpOyAK PiA+Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9pbmNsdWRlL3NoYXJlZC9vcy5oIGIvYXJjaC91 bS9pbmNsdWRlL3NoYXJlZC9vcy5oIAo+ID4+Pj4+IGluZGV4IGQ4MjQ1MjguLjdmNzM2OGIgMTAw NjQ0IAo+ID4+Pj4+IC0tLSBhL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvb3MuaCAKPiA+Pj4+PiAr KysgYi9hcmNoL3VtL2luY2x1ZGUvc2hhcmVkL29zLmggCj4gPj4+Pj4gQEAgLTIxNyw3ICsyMTcs OCBAQCBleHRlcm4gaW50IHNldF91bWlkKGNoYXIgKm5hbWUpOyAKPiA+Pj4+PiBleHRlcm4gY2hh ciAqZ2V0X3VtaWQodm9pZCk7IAo+ID4+Pj4+IAo+ID4+Pj4+IC8qIHNpZ25hbC5jICovIAo+ID4+ Pj4+IC1leHRlcm4gdm9pZCB0aW1lcl9pbml0KHZvaWQpOyAKPiA+Pj4+PiArZXh0ZXJuIHZvaWQg dW1sX3RpbWVyX3NldF9zaWduYWxfaGFuZGxlcih2b2lkKTsgCj4gPj4+Pj4gK2V4dGVybiB2b2lk IHVtbF9ocnRpbWVyX3NldF9zaWduYWxfaGFuZGxlcih2b2lkKTsgCj4gPj4+Pj4gZXh0ZXJuIHZv aWQgc2V0X3NpZ3N0YWNrKHZvaWQgKnNpZ19zdGFjaywgaW50IHNpemUpOyAKPiA+Pj4+PiBleHRl cm4gdm9pZCByZW1vdmVfc2lnc3RhY2sodm9pZCk7IAo+ID4+Pj4+IGV4dGVybiB2b2lkIHNldF9o YW5kbGVyKGludCBzaWcpOyAKPiA+Pj4+PiBAQCAtMjM4LDEyICsyMzksMTYgQEAgZXh0ZXJuIHZv aWQgdW1fZWFybHlfcHJpbnRrKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBuKTsgCj4gPj4+ Pj4gZXh0ZXJuIHZvaWQgb3NfZml4X2hlbHBlcl9zaWduYWxzKHZvaWQpOyAKPiA+Pj4+PiAKPiA+ Pj4+PiAvKiB0aW1lLmMgKi8gCj4gPj4+Pj4gLWV4dGVybiB2b2lkIGlkbGVfc2xlZXAodW5zaWdu ZWQgbG9uZyBsb25nIG5zZWNzKTsgCj4gPj4+Pj4gLWV4dGVybiBpbnQgc2V0X2ludGVydmFsKHZv aWQpOyAKPiA+Pj4+PiAtZXh0ZXJuIGludCB0aW1lcl9vbmVfc2hvdChpbnQgdGlja3MpOyAKPiA+ Pj4+PiAtZXh0ZXJuIGxvbmcgbG9uZyBkaXNhYmxlX3RpbWVyKHZvaWQpOyAKPiA+Pj4+PiArZXh0 ZXJuIHZvaWQgb3NfaWRsZV9zbGVlcCh1bnNpZ25lZCBsb25nIGxvbmcgbnNlY3MpOyAKPiA+Pj4+ PiArZXh0ZXJuIGludCBvc190aW1lcl9jcmVhdGUodm9pZCogdGltZXIpOyAKPiA+Pj4+PiArZXh0 ZXJuIGludCBvc190aW1lcl9zZXRfaW50ZXJ2YWwodm9pZCogdGltZXIsIHZvaWQqIGl0cyk7IAo+ ID4+Pj4+ICtleHRlcm4gaW50IG9zX3RpbWVyX29uZV9zaG90KGludCB0aWNrcyk7IAo+ID4+Pj4+ ICtleHRlcm4gbG9uZyBsb25nIG9zX3RpbWVyX2Rpc2FibGUodm9pZCk7IAo+ID4+Pj4+ICtleHRl cm4gbG9uZyBvc190aW1lcl9yZW1haW4odm9pZCogdGltZXIpOyAKPiA+Pj4+PiBleHRlcm4gdm9p ZCB1bWxfaWRsZV90aW1lcih2b2lkKTsgCj4gPj4+Pj4gK2V4dGVybiBsb25nIGxvbmcgb3NfcGVy c2lzdGVudF9jbG9ja19lbXVsYXRpb24odm9pZCk7IAo+ID4+Pj4+IGV4dGVybiBsb25nIGxvbmcg b3NfbnNlY3Modm9pZCk7IAo+ID4+Pj4+ICtleHRlcm4gbG9uZyBsb25nIG9zX3Zuc2Vjcyh2b2lk KTsgCj4gPj4+Pj4gCj4gPj4+Pj4gLyogc2thcy9tZW0uYyAqLyAKPiA+Pj4+PiBleHRlcm4gbG9u ZyBydW5fc3lzY2FsbF9zdHViKHN0cnVjdCBtbV9pZCAqIG1tX2lkcCwgCj4gPj4+Pj4gZGlmZiAt LWdpdCBhL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvc2thcy9zdHViLWRhdGEuaCBiL2FyY2gvdW0v aW5jbHVkZS9zaGFyZWQvc2thcy9zdHViLWRhdGEuaCAKPiA+Pj4+PiBpbmRleCBmNmVkOTJjLi5m OThiOWUyIDEwMDY0NCAKPiA+Pj4+PiAtLS0gYS9hcmNoL3VtL2luY2x1ZGUvc2hhcmVkL3NrYXMv c3R1Yi1kYXRhLmggCj4gPj4+Pj4gKysrIGIvYXJjaC91bS9pbmNsdWRlL3NoYXJlZC9za2FzL3N0 dWItZGF0YS5oIAo+ID4+Pj4+IEBAIC02LDEyICs2LDEyIEBAIAo+ID4+Pj4+ICNpZm5kZWYgX19T VFVCX0RBVEFfSCAKPiA+Pj4+PiAjZGVmaW5lIF9fU1RVQl9EQVRBX0ggCj4gPj4+Pj4gCj4gPj4+ Pj4gLSNpbmNsdWRlIDxzeXMvdGltZS5oPiAKPiA+Pj4+PiArI2luY2x1ZGUgPHRpbWUuaD4gCj4g Pj4+Pj4gCj4gPj4+Pj4gc3RydWN0IHN0dWJfZGF0YSB7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAg bG9uZyBvZmZzZXQ7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7 IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGZkOyAKPiA+Pj4+PiAtwqDCoMKgwqDC oMKgIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgc3RydWN0 IGl0aW1lcnNwZWMgdGltZXI7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgbG9uZyBlcnI7 IAo+ID4+Pj4+IH07IAo+ID4+Pj4+IAo+ID4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3VtL2luY2x1 ZGUvc2hhcmVkL3RpbWVyLWludGVybmFsLmggYi9hcmNoL3VtL2luY2x1ZGUvc2hhcmVkL3RpbWVy LWludGVybmFsLmggCj4gPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQgCj4gPj4+Pj4gaW5kZXgg MDAwMDAwMC4uYWZkYzZkYyAKPiA+Pj4+PiAtLS0gL2Rldi9udWxsIAo+ID4+Pj4+ICsrKyBiL2Fy Y2gvdW0vaW5jbHVkZS9zaGFyZWQvdGltZXItaW50ZXJuYWwuaCAKPiA+Pj4+PiBAQCAtMCwwICsx LDE4IEBAIAo+ID4+Pj4+ICsvKiAKPiA+Pj4+PiArICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAx NCBDaXNjbyBTeXN0ZW1zIAo+ID4+Pj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDAgLSAyMDA3IEpl ZmYgRGlrZSAoamRpa2VAe2FkZHRvaXQsbGludXguaW50ZWx9LmNvbSkgCj4gPj4+Pj4gKyAqIExp Y2Vuc2VkIHVuZGVyIHRoZSBHUEwgCj4gPj4+Pj4gKyAqLyAKPiA+Pj4+PiArIAo+ID4+Pj4+ICsj aWZuZGVmIF9fVElNRVJfSU5URVJOQUxfSF9fIAo+ID4+Pj4+ICsjZGVmaW5lIF9fVElNRVJfSU5U RVJOQUxfSF9fIAo+ID4+Pj4+ICsgCj4gPj4+Pj4gKyNkZWZpbmUgVElNRVJfTVVMVElQTElFUiAy NTYgCj4gPj4+Pj4gKyNkZWZpbmUgVElNRVJfTUlOX0RFTFRBwqAgNTAwIAo+ID4+Pj4+ICsgCj4g Pj4+Pj4gK2V4dGVybiB2b2lkIHRpbWVyX2xvY2sodm9pZCk7IAo+ID4+Pj4+ICtleHRlcm4gdm9p ZCB0aW1lcl91bmxvY2sodm9pZCk7IAo+ID4+Pj4+ICsgCj4gPj4+Pj4gK2V4dGVybiBsb25nIGxv bmcgaHJ0aW1lcl9kaXNhYmxlKHZvaWQpOyAKPiA+Pj4+PiArIAo+ID4+Pj4+ICsjZW5kaWYgCj4g Pj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvdW0va2VybmVsL2lycS5jIGIvYXJjaC91bS9rZXJuZWwv aXJxLmMgCj4gPj4+Pj4gaW5kZXggMjNjYjkzNS4uNGMxOTY2YSAxMDA2NDQgCj4gPj4+Pj4gLS0t IGEvYXJjaC91bS9rZXJuZWwvaXJxLmMgCj4gPj4+Pj4gKysrIGIvYXJjaC91bS9rZXJuZWwvaXJx LmMgCj4gPj4+Pj4gQEAgLTMzOCwyMCArMzM4LDIwIEBAIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAg bm9ybWFsX2lycV90eXBlID0geyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIC5pcnFfdW5t YXNrID0gZHVtbXksIAo+ID4+Pj4+IH07IAo+ID4+Pj4+IAo+ID4+Pj4+IC1zdGF0aWMgc3RydWN0 IGlycV9jaGlwIFNJR1ZUQUxSTV9pcnFfdHlwZSA9IHsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCAu bmFtZSA9ICJTSUdWVEFMUk0iLCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIC5pcnFfZGlzYWJsZSA9 IGR1bW15LCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIC5pcnFfZW5hYmxlID0gZHVtbXksIAo+ID4+ Pj4+IC3CoMKgwqDCoMKgwqAgLmlycV9hY2sgPSBkdW1teSwgCj4gPj4+Pj4gLcKgwqDCoMKgwqDC oCAuaXJxX21hc2sgPSBkdW1teSwgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCAuaXJxX3VubWFzayA9 IGR1bW15LCAKPiA+Pj4+PiArc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBTSUdVU1IyX2lycV90eXBl ID0geyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIC5uYW1lID0gIlNJR1VTUjIiLCAKPiA+Pj4+PiAr wqDCoMKgwqDCoMKgIC5pcnFfZGlzYWJsZSA9IGR1bW15LCAKPiA+Pj4+PiArwqDCoMKgwqDCoMKg IC5pcnFfZW5hYmxlID0gZHVtbXksIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgLmlycV9hY2sgPSBk dW1teSwgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCAuaXJxX21hc2sgPSBkdW1teSwgCj4gPj4+Pj4g K8KgwqDCoMKgwqDCoCAuaXJxX3VubWFzayA9IGR1bW15LCAKPiA+Pj4+PiB9OyAKPiA+Pj4+PiAK PiA+Pj4+PiB2b2lkIF9faW5pdCBpbml0X0lSUSh2b2lkKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+wqDC oMKgwqDCoMKgwqDCoMKgwqAgaW50IGk7IAo+ID4+Pj4+IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAg aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKFRJTUVSX0lSUSwgJlNJR1ZUQUxSTV9pcnFfdHlwZSwg aGFuZGxlX2VkZ2VfaXJxKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBpcnFfc2V0X2NoaXBfYW5k X2hhbmRsZXIoSFJUSU1FUl9JUlEsICZTSUdVU1IyX2lycV90eXBlLCBoYW5kbGVfZWRnZV9pcnEp OyAKPiA+Pj4+PiAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IDE7IGkgPCBO Ul9JUlFTOyBpKyspIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcihpLCAmbm9ybWFsX2lycV90eXBlLCBoYW5kbGVfZWRn ZV9pcnEpOyAKPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvcGh5c21lbS5jIGIv YXJjaC91bS9rZXJuZWwvcGh5c21lbS5jIAo+ID4+Pj4+IGluZGV4IDkwMzRmYzguLjVmNjY0MmQg MTAwNjQ0IAo+ID4+Pj4+IC0tLSBhL2FyY2gvdW0va2VybmVsL3BoeXNtZW0uYyAKPiA+Pj4+PiAr KysgYi9hcmNoL3VtL2tlcm5lbC9waHlzbWVtLmMgCj4gPj4+Pj4gQEAgLTExOSwxNCArMTE5LDIz IEBAIHZvaWQgX19pbml0IHNldHVwX3BoeXNtZW0odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWdu ZWQgbG9uZyByZXNlcnZlX2VuZCwgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGxlbiAtIGJvb3RtYXBfc2l6ZSAtIHJlc2VydmUpOyAKPiA+Pj4+ PiB9IAo+ID4+Pj4+IAo+ID4+Pj4+ICsvKiogCj4gPj4+Pj4gKyAqIHBoeXNfbWFwcGluZygpIC0g bWFwcyBhIHBoeXNpY2FsIGFkZHJlc3MgdG8gYW4gb2Zmc2V0IGFkZHJlc3MgCj4gPj4+Pj4gKyAq IHBoeXM6wqDCoMKgIHRoZSBwaHlzaWNhbCBhZGRyZXNzIAo+ID4+Pj4+ICsgKiBvZmZzZXRfb3V0 OsKgIHRoZSBvZmZzZXQgaW4gdGhlIG1lbW9yeSBtYXAgYXJlYSAKPiA+Pj4+PiArICogCj4gPj4+ Pj4gKyAqIFJldHVybnMgYW4gZmlsZSBkZXNjcmlwdG9yLCBvciAtMSB3aGVuIHVua25vd24gcGh5 c2ljYWwgYWRkcmVzcyAKPiA+Pj4+PiArICovIAo+ID4+Pj4+IGludCBwaHlzX21hcHBpbmcodW5z aWduZWQgbG9uZyBwaHlzLCB1bnNpZ25lZCBsb25nIGxvbmcgKm9mZnNldF9vdXQpIAo+ID4+Pj4+ IHsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgZmQgPSAtMTsgCj4gPj4+Pj4gCj4g Pj4+Pj4gK8KgwqDCoMKgwqDCoCAvKiBmaXJzdCBjaGVjayBub3JtYWwgbWVtb3J5ICovIAo+ID4+ Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBoeXMgPCBwaHlzbWVtX3NpemUpIHsgCj4gPj4+ Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmQgPSBwaHlzbWVtX2ZkOyAK PiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqb2Zmc2V0X291dCA9 IHBoeXM7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgfSAKPiA+Pj4+PiArwqDCoMKgwqDC oMKgIC8qIHRoYW4gY2hlY2sgaW8gbWVtb3J5ICovIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKg wqAgZWxzZSBpZiAocGh5cyA8IF9fcGEoZW5kX2lvbWVtKSkgeyAKPiA+Pj4+PsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaW9tZW1fcmVnaW9uICpyZWdpb24gPSBp b21lbV9yZWdpb25zOyAKPiA+Pj4+PiAKPiA+Pj4+PiBAQCAtMTQwLDYgKzE0OSw3IEBAIGludCBw aHlzX21hcHBpbmcodW5zaWduZWQgbG9uZyBwaHlzLCB1bnNpZ25lZCBsb25nIGxvbmcgKm9mZnNl dF9vdXQpIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZWdpb24gPSByZWdpb24tPm5leHQ7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCB9IAo+ ID4+Pj4+ICvCoMKgwqDCoMKgwqAgLyogbGFzdCBjaGVjayBoaWdobWVtICovIAo+ID4+Pj4+wqDC oMKgwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAocGh5cyA8IF9fcGEoZW5kX2lvbWVtKSArIGhpZ2ht ZW0pIHsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmQgPSBw aHlzbWVtX2ZkOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq b2Zmc2V0X291dCA9IHBoeXMgLSBpb21lbV9zaXplOyAKPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvYXJj aC91bS9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC91bS9rZXJuZWwvcHJvY2Vzcy5jIAo+ID4+Pj4+ IGluZGV4IDY4YjkxMTkuLmI4YThkMTAgMTAwNjQ0IAo+ID4+Pj4+IC0tLSBhL2FyY2gvdW0va2Vy bmVsL3Byb2Nlc3MuYyAKPiA+Pj4+PiArKysgYi9hcmNoL3VtL2tlcm5lbC9wcm9jZXNzLmMgCj4g Pj4+Pj4gQEAgLTI3LDYgKzI3LDcgQEAgCj4gPj4+Pj4gI2luY2x1ZGUgPGtlcm5fdXRpbC5oPiAK PiA+Pj4+PiAjaW5jbHVkZSA8b3MuaD4gCj4gPj4+Pj4gI2luY2x1ZGUgPHNrYXMuaD4gCj4gPj4+ Pj4gKyNpbmNsdWRlIDx0aW1lci1pbnRlcm5hbC5oPiAKPiA+Pj4+PiAKPiA+Pj4+PiAvKiAKPiA+ Pj4+PsKgwqDCoMKgICogVGhpcyBpcyBhIHBlci1jcHUgYXJyYXkuwqAgQSBwcm9jZXNzb3Igb25s eSBtb2RpZmllcyBpdHMgZW50cnkgYW5kIGl0IG9ubHkgCj4gPj4+Pj4gQEAgLTIwMSwxMiArMjAy LDggQEAgdm9pZCBpbml0aWFsX3RocmVhZF9jYih2b2lkICgqcHJvYykodm9pZCAqKSwgdm9pZCAq YXJnKSAKPiA+Pj4+PiAKPiA+Pj4+PiB2b2lkIGFyY2hfY3B1X2lkbGUodm9pZCkgCj4gPj4+Pj4g eyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgbG9uZyBuc2VjczsgCj4gPj4+ Pj4gLSAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGNwdV90YXNrc1tjdXJyZW50X3RocmVh ZF9pbmZvKCktPmNwdV0ucGlkID0gb3NfZ2V0cGlkKCk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAg bnNlY3MgPSBkaXNhYmxlX3RpbWVyKCk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgaWRsZV9zbGVl cChuc2Vjcyk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgbG9jYWxfaXJxX2VuYWJsZSgpOyAKPiA+ Pj4+PiArwqDCoMKgwqDCoMKgIG9zX2lkbGVfc2xlZXAoVU1fTlNFQ19QRVJfU0VDIC8gVU1fSFop OyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IAo+ID4+Pj4+IGludCBfX2NhbnRfc2xlZXAodm9pZCkgeyAK PiA+Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvc2thcy9jbG9uZS5jIGIvYXJjaC91 bS9rZXJuZWwvc2thcy9jbG9uZS5jIAo+ID4+Pj4+IGluZGV4IDI4OTc3MWQuLjVmMjgzYjEgMTAw NjQ0IAo+ID4+Pj4+IC0tLSBhL2FyY2gvdW0va2VybmVsL3NrYXMvY2xvbmUuYyAKPiA+Pj4+PiAr KysgYi9hcmNoL3VtL2tlcm5lbC9za2FzL2Nsb25lLmMgCj4gPj4+Pj4gQEAgLTIwLDM3ICsyMCw2 MyBAQCAKPiA+Pj4+PsKgwqDCoMKgICogb24gc29tZSBzeXN0ZW1zLiAKPiA+Pj4+PsKgwqDCoMKg ICovIAo+ID4+Pj4+IAo+ID4+Pj4+ICsvKiogCj4gPj4+Pj4gKyAqIHN0dWJfY2xvbmVfaGFuZGxl cigpIC0gdXNlcnNwYWNlIGNsb25lIGhhbmRsZXIgc3R1YiAKPiA+Pj4+PiArICogCj4gPj4+Pj4g KyAqIHRoaXMgc3R1YiBjbG9uZSBoYW5sZGVyIGlzIG1tYXBlZCg/KS9hdmFpbGFibGUgaW4gYWxs IHVzZXJzcGFjZSAKPiA+Pj4+PiArICogcHJvY2Vzc2VzLiBJdCdzIHVzZWQgdG8gY29weSBhbiBt bSBjb250ZXh0IGZyb20gYW4gZm9yayBzeXNjYWxsIGluIHRoZSAKPiA+Pj4+PiArICogdHJhY2Vk IHVzZXJzcGFjZSBwcm9jZXNzIAo+ID4+Pj4+ICsgKi8gCj4gPj4+Pj4gdm9pZCBfX2F0dHJpYnV0 ZV9fICgoX19zZWN0aW9uX18gKCIuX19zeXNjYWxsX3N0dWIiKSkpIAo+ID4+Pj4+IHN0dWJfY2xv bmVfaGFuZGxlcih2b2lkKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IHN0dWJfZGF0YSAqZGF0YSA9IChzdHJ1Y3Qgc3R1Yl9kYXRhICopIFNUVUJfREFUQTsg Cj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBzdHJ1Y3Qgc2lnZXZlbnQgc2V2OyAKPiA+Pj4+PiArwqDC oMKgwqDCoMKgIHRpbWVyX3QgdGltZXJpZDsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBs b25nIGVycjsgCj4gPj4+Pj4gCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCAvKiBjbG9uZSAiZnJvbSIg cHJvY2VzcyAqLyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGVyciA9IHN0dWJfc3lzY2Fs bDIoX19OUl9jbG9uZSwgQ0xPTkVfUEFSRU5UIHwgQ0xPTkVfRklMRVMgfCBTSUdDSExELCAKPiA+ Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBTVFVCX0RBVEEgKyBVTV9LRVJOX1BBR0VfU0laRSAvIDIgLSBzaXplb2Yodm9pZCAq KSk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgaWYgKGVyciAhPSAwKSAKPiA+Pj4+PiArwqDCoMKg wqDCoMKgIC8qIFBhcmVudDogZXhpdCBoZXJlLCBjaGlsZCwgY29udGludWUgKi8gCj4gPj4+Pj4g K8KgwqDCoMKgwqDCoCBpZiAoZXJyICE9IDApIHsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgfSAKPiA+ Pj4+PiAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIC8qIHNldCBjaGlsZCB0byBwdHJhY2UgKi8gCj4g Pj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIgPSBzdHViX3N5c2NhbGw0KF9fTlJfcHRyYWNl LCBQVFJBQ0VfVFJBQ0VNRSwgMCwgMCwgMCk7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKGVycikgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290 byBvdXQ7IAo+ID4+Pj4+IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgZXJyID0gc3R1Yl9zeXNjYWxs MyhfX05SX3NldGl0aW1lciwgSVRJTUVSX1ZJUlRVQUwsIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsb25nKSAmZGF0YS0+dGlt ZXIsIDApOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIC8qIGNyZWF0ZSBhIG5ldyBwb3NpeCBpbnRl cnZhbCB0aW1lciAqLyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHNldi5zaWdldl9ub3RpZnkgPSBT SUdFVl9TSUdOQUw7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgc2V2LnNpZ2V2X3NpZ25vID0gU0lH VVNSMjsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBzZXYuc2lnZXZfdmFsdWUuc2l2YWxfcHRyID0g TlVMTDsgCj4gPj4+Pj4gKyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGVyciA9IHN0dWJfc3lzY2Fs bDMoX19OUl90aW1lcl9jcmVhdGUsIENMT0NLX01PTk9UT05JQywgCj4gPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAobG9u ZykgJnNldiwgKGxvbmcpICZ0aW1lcmlkKTsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoZXJyKSAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3Rv IG91dDsgCj4gPj4+Pj4gCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCAvKiBzZXQgaW50ZXJ2YWwgdG8g dGhlIGdpdmVuIHZhbHVlIGZyb20gY29weV9jb250ZXh0X3NrYXMwKCkgKi8gCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoCBlcnIgPSBzdHViX3N5c2NhbGw0KF9fTlJfdGltZXJfc2V0dGltZSwgKGxvbmcp IHRpbWVyaWQsIDBsLCAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKGxvbmcpICZkYXRhLT50aW1lciwgMGwpOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGlmIChl cnIpIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0OyAKPiA+ Pj4+PiArIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgLyogc3dpdGNoIHRvIG5ldyBzdGFjayAqLyAK PiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlbWFwX3N0YWNrKGRhdGEtPmZkLCBkYXRhLT5v ZmZzZXQpOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZG9uZTsgCj4gPj4+Pj4g Cj4gPj4+Pj7CoMKgwqDCoCBvdXQ6IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogCj4g Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgICogc2F2ZSBjdXJyZW50IHJlc3VsdC4gCj4gPj4+Pj4gLcKg wqDCoMKgwqDCoMKgICogUGFyZW50OiBwaWQ7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoCAqIGNo aWxkOiByZXRjb2RlIG9mIG1tYXAgYWxyZWFkeSBzYXZlZCBhbmQgaXQganVtcHMgYXJvdW5kIHRo aXMgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgICogYXNzaWdubWVudCAKPiA+Pj4+PiArwqDCoMKg wqDCoMKgwqAgKiBTYXZlIGN1cnJlbnQgcmVzdWx0LiAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAg KiAtIFBhcmVudDogcGlkIGZyb20gY2xvbmUoKSBjYWxsIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDC oCAqIC0gQ2hpbGQ6wqAgInJldGNvZGUgb2YgbW1hcCBhbHJlYWR5IHNhdmVkIGFuZCBpdCBqdW1w cyBhcm91bmQgdGhpcyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYXNzaWdubWVudCI/Pz8gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovIAo+ ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YS0+ZXJyID0gZXJyOyAKPiA+Pj4+PiArIAo+ ID4+Pj4+wqDCoMKgwqAgZG9uZTogCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCB0cmFwX215 c2VsZigpOyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3VtL2tlcm5lbC9z a2FzL21tdS5jIGIvYXJjaC91bS9rZXJuZWwvc2thcy9tbXUuYyAKPiA+Pj4+PiBpbmRleCA5NGFi ZGNjLi5kZjljOWFiIDEwMDY0NCAKPiA+Pj4+PiAtLS0gYS9hcmNoL3VtL2tlcm5lbC9za2FzL21t dS5jIAo+ID4+Pj4+ICsrKyBiL2FyY2gvdW0va2VybmVsL3NrYXMvbW11LmMgCj4gPj4+Pj4gQEAg LTQ3LDYgKzQ3LDEzIEBAIHN0YXRpYyBpbnQgaW5pdF9zdHViX3B0ZShzdHJ1Y3QgbW1fc3RydWN0 ICptbSwgdW5zaWduZWQgbG9uZyBwcm9jLCAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiAtRU5PTUVNOyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IAo+ID4+Pj4+ICsvKiogCj4gPj4+Pj4g KyAqIGluaXRfbmV3X2NvbnRleHQoKSAtIGNyZWF0ZXMgb3IgY29waWVzIGFuIG1tIGNvbnRleHQg Cj4gPj4+Pj4gKyAqIEB0YXNrOsKgwqDCoMKgwqAgdGhlIGJlbG9uZ2luZyB0YXNrIAo+ID4+Pj4+ ICsgKiBAbW06wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRoZSBtbSBzdHJ1Y3QgdG8g YmUgc2V0dXAvYWxsb2NhdGVkIAo+ID4+Pj4+ICsgKiAKPiA+Pj4+PiArICogY2FsbGVkIGJ5IG1t X2luaXQoKSAoa2VybmVsL2ZvcmsuYykgCj4gPj4+Pj4gKyAqLyAKPiA+Pj4+PiBpbnQgaW5pdF9u ZXdfY29udGV4dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1t KSAKPiA+Pj4+PiB7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IG1tX2NvbnRl eHQgKmZyb21fbW0gPSBOVUxMOyAKPiA+Pj4+PiBAQCAtNTksMTMgKzY2LDE1IEBAIGludCBpbml0 X25ld19jb250ZXh0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IG1tX3N0cnVjdCAq bW0pIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0 OyAKPiA+Pj4+PiAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIHRvX21tLT5pZC5zdGFjayA9 IHN0YWNrOyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGlmIChjdXJyZW50LT5tbSAhPSBOVUxMICYm IGN1cnJlbnQtPm1tICE9ICZpbml0X21tKSAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGlmIChjdXJy ZW50LT5tbSAhPSBOVUxMICYmIGN1cnJlbnQtPm1tICE9ICZpbml0X21tKSB7IAo+ID4+Pj4+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyb21fbW0gPSAmY3VycmVudC0+bW0t PmNvbnRleHQ7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgfSAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDC oMKgwqDCoMKgIGlmIChmcm9tX21tKSAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB0b19tbS0+aWQudS5waWQgPSBjb3B5X2NvbnRleHRfc2thczAoc3RhY2ssIAo+ID4+Pj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJvbV9tbS0+ aWQudS5waWQpOyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGVsc2UgdG9fbW0tPmlkLnUucGlkID0g c3RhcnRfdXNlcnNwYWNlKHN0YWNrKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBpZiAoZnJvbV9t bSkgeyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0b19tbS0+aWQudS5w aWQgPSBjb3B5X2NvbnRleHRfc2thczAoc3RhY2ssIGZyb21fbW0tPmlkLnUucGlkKTsgCj4gPj4+ Pj4gK8KgwqDCoMKgwqDCoCB9IGVsc2UgeyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB0b19tbS0+aWQudS5waWQgPSBzdGFydF91c2Vyc3BhY2Uoc3RhY2spOyAKPiA+Pj4+ PiArwqDCoMKgwqDCoMKgIH0gCj4gPj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAodG9fbW0tPmlkLnUucGlkIDwgMCkgeyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXQgPSB0b19tbS0+aWQudS5waWQ7IAo+ID4+Pj4+IGRpZmYgLS1naXQg YS9hcmNoL3VtL2tlcm5lbC9za2FzL3Byb2Nlc3MuYyBiL2FyY2gvdW0va2VybmVsL3NrYXMvcHJv Y2Vzcy5jIAo+ID4+Pj4+IGluZGV4IDUyN2ZhNTguLjJiMGMzNWEgMTAwNjQ0IAo+ID4+Pj4+IC0t LSBhL2FyY2gvdW0va2VybmVsL3NrYXMvcHJvY2Vzcy5jIAo+ID4+Pj4+ICsrKyBiL2FyY2gvdW0v a2VybmVsL3NrYXMvcHJvY2Vzcy5jIAo+ID4+Pj4+IEBAIC00Myw2ICs0Myw5IEBAIGludCBfX2lu aXQgc3RhcnRfdW1sKHZvaWQpIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmaW5pdF90YXNrLnRocmVh ZC5zd2l0Y2hfYnVmKTsgCj4gPj4+Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+PiArLyoqIAo+ID4+Pj4+ ICsgKiBjdXJyZW50X3N0dWJfc3RhY2soKSAtIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIGN1 cnJlbnQgbW0gc3RhY2sgCj4gPj4+Pj4gKyAqLyAKPiA+Pj4+PiB1bnNpZ25lZCBsb25nIGN1cnJl bnRfc3R1Yl9zdGFjayh2b2lkKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKGN1cnJlbnQtPm1tID09IE5VTEwpIAo+ID4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Vt L2tlcm5lbC90aW1lLmMgYi9hcmNoL3VtL2tlcm5lbC90aW1lLmMgCj4gPj4+Pj4gaW5kZXggMTE3 NTY4ZC4uZWQ2NDAzNyAxMDA2NDQgCj4gPj4+Pj4gLS0tIGEvYXJjaC91bS9rZXJuZWwvdGltZS5j IAo+ID4+Pj4+ICsrKyBiL2FyY2gvdW0va2VybmVsL3RpbWUuYyAKPiA+Pj4+PiBAQCAtMSw0ICsx LDUgQEAgCj4gPj4+Pj4gLyogCj4gPj4+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IENp c2NvIFN5c3RlbXMgCj4gPj4+Pj7CoMKgwqDCoCAqIENvcHlyaWdodCAoQykgMjAwMCAtIDIwMDcg SmVmZiBEaWtlIChqZGlrZUB7YWRkdG9pdCxsaW51eC5pbnRlbH0uY29tKSAKPiA+Pj4+PsKgwqDC oMKgICogTGljZW5zZWQgdW5kZXIgdGhlIEdQTCAKPiA+Pj4+PsKgwqDCoMKgICovIAo+ID4+Pj4+ IEBAIC04LDMyICs5LDM2IEBAIAo+ID4+Pj4+ICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4g Cj4gPj4+Pj4gI2luY2x1ZGUgPGxpbnV4L2ppZmZpZXMuaD4gCj4gPj4+Pj4gI2luY2x1ZGUgPGxp bnV4L3RocmVhZHMuaD4gCj4gPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPiAKPiA+ Pj4+PiAjaW5jbHVkZSA8YXNtL2lycS5oPiAKPiA+Pj4+PiAjaW5jbHVkZSA8YXNtL3BhcmFtLmg+ IAo+ID4+Pj4+ICNpbmNsdWRlIDxrZXJuX3V0aWwuaD4gCj4gPj4+Pj4gI2luY2x1ZGUgPG9zLmg+ IAo+ID4+Pj4+ICsjaW5jbHVkZSA8dGltZXItaW50ZXJuYWwuaD4gCj4gPj4+Pj4gCj4gPj4+Pj4g LXZvaWQgdGltZXJfaGFuZGxlcihpbnQgc2lnLCBzdHJ1Y3Qgc2lnaW5mbyAqdW51c2VkX3NpLCBz dHJ1Y3QgdW1sX3B0X3JlZ3MgKnJlZ3MpIAo+ID4+Pj4+ICt2b2lkIGhydGltZXJfaGFuZGxlcihp bnQgc2lnLCBzdHJ1Y3Qgc2lnaW5mbyAqdW51c2VkX3NpLCBzdHJ1Y3QgdW1sX3B0X3JlZ3MgKnJl Z3MpIAo+ID4+Pj4+IHsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25n IGZsYWdzOyAKPiA+Pj4+PiAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2FsX2lycV9z YXZlKGZsYWdzKTsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBkb19JUlEoVElNRVJfSVJRLCByZWdz KTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBkb19JUlEoSFJUSU1FUl9JUlEsIHJlZ3MpOyAKPiA+ Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsgCj4gPj4+ Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+PiAtc3RhdGljIHZvaWQgaXRpbWVyX3NldF9tb2RlKGVudW0g Y2xvY2tfZXZlbnRfbW9kZSBtb2RlLCAKPiA+Pj4+PiArc3RhdGljIHZvaWQgdGltZXJfc2V0X21v ZGUoZW51bSBjbG9ja19ldmVudF9tb2RlIG1vZGUsIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBjbG9ja19l dmVudF9kZXZpY2UgKmV2dCkgCj4gPj4+Pj4geyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKg IHN3aXRjaCAobW9kZSkgeyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgQ0xPQ0tf RVZUX01PREVfUEVSSU9ESUM6IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNldF9pbnRlcnZhbCgpOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBv c190aW1lcl9zZXRfaW50ZXJ2YWwoTlVMTCwgTlVMTCk7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOyAKPiA+Pj4+PiAKPiA+Pj4+PiArwqDCoMKgwqDC oMKgIGNhc2UgQ0xPQ0tfRVZUX01PREVfT05FU0hPVDogCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgb3NfdGltZXJfb25lX3Nob3QoMSk7IAo+ID4+Pj4+ICsgCj4gPj4+Pj7C oMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIENMT0NLX0VWVF9NT0RFX1NIVVRET1dOOiAKPiA+Pj4+ PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgQ0xPQ0tfRVZUX01PREVfVU5VU0VEOiAKPiA+Pj4+ PiAtwqDCoMKgwqDCoMKgIGNhc2UgQ0xPQ0tfRVZUX01PREVfT05FU0hPVDogCj4gPj4+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGlzYWJsZV90aW1lcigpOyAKPiA+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvc190aW1lcl9kaXNhYmxlKCk7IAo+ID4+Pj4+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOyAKPiA+Pj4+PiAKPiA+Pj4+ PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgQ0xPQ0tfRVZUX01PREVfUkVTVU1FOiAKPiA+Pj4+ PiBAQCAtNDEsNjggKzQ2LDc0IEBAIHN0YXRpYyB2b2lkIGl0aW1lcl9zZXRfbW9kZShlbnVtIGNs b2NrX2V2ZW50X21vZGUgbW9kZSwgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCB9IAo+ID4+ Pj4+IH0gCj4gPj4+Pj4gCj4gPj4+Pj4gLXN0YXRpYyBpbnQgaXRpbWVyX25leHRfZXZlbnQodW5z aWduZWQgbG9uZyBkZWx0YSwgCj4gPj4+Pj4gK3N0YXRpYyBpbnQgdGltZXJfbmV4dF9ldmVudCh1 bnNpZ25lZCBsb25nIGRlbHRhLCAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBjbG9ja19ldmVudF9kZXZp Y2UgKmV2dCkgCj4gPj4+Pj4geyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIHJldHVybiB0aW1lcl9v bmVfc2hvdChkZWx0YSArIDEpOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHJldHVybiBvc190aW1l cl9vbmVfc2hvdChkZWx0YSk7IAo+ID4+Pj4+IH0gCj4gPj4+Pj4gCj4gPj4+Pj4gLXN0YXRpYyBz dHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlIGl0aW1lcl9jbG9ja2V2ZW50ID0geyAKPiA+Pj4+PiAt wqDCoMKgwqDCoMKgIC5uYW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAiaXRpbWVyIiwgCj4gPj4+ Pj4gK3N0YXRpYyBzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlIHRpbWVyX2Nsb2NrZXZlbnQgPSB7 IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgLm5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoCA9ICJ0aW1l ciIsIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgLnJhdGluZ8KgwqDCoMKgwqDCoMKgwqAg PSAyNTAsIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNwdW1hc2vCoMKgwqDCoMKgwqDC oCA9IGNwdV9hbGxfbWFzaywgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCAuZmVhdHVyZXPC oMKgwqDCoMKgwqAgPSBDTE9DS19FVlRfRkVBVF9QRVJJT0RJQyB8IENMT0NLX0VWVF9GRUFUX09O RVNIT1QsIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgLnNldF9tb2RlwqDCoMKgwqDCoMKgID0gaXRp bWVyX3NldF9tb2RlLCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIC5zZXRfbmV4dF9ldmVudCA9IGl0 aW1lcl9uZXh0X2V2ZW50LCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIC5zaGlmdMKgwqDCoMKgwqDC oMKgwqDCoCA9IDMyLCAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIC5zZXRfbW9kZcKgwqDCoMKgwqDC oCA9IHRpbWVyX3NldF9tb2RlLCAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIC5zZXRfbmV4dF9ldmVu dCA9IHRpbWVyX25leHRfZXZlbnQsIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgLnNoaWZ0wqDCoMKg wqDCoMKgwqDCoMKgID0gMCwgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCAubWF4X2RlbHRhX25zwqDC oCA9IDB4ZmZmZmZmZmYsIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgLm1pbl9kZWx0YV9uc8KgwqAg PSBUSU1FUl9NSU5fREVMVEEsIC8vbWljcm9zZWNvbmQgcmVzb2x1dGlvbiBzaG91bGQgYmUgZW5v dWdoIGZvciBhbnlvbmUsIHNhbWUgYXMgNjQwSyBSQU0gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoCAuaXJxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IDAsIAo+ID4+Pj4+ICvCoMKgwqDCoMKg wqAgLm11bHTCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IDEsIAo+ID4+Pj4+IH07IAo+ID4+Pj4+IAo+ ID4+Pj4+IC1zdGF0aWMgaXJxcmV0dXJuX3QgdW1fdGltZXIoaW50IGlycSwgdm9pZCAqZGV2KSAK PiA+Pj4+PiArc3RhdGljIGlycXJldHVybl90IHVtX3RpbWVyX2lycShpbnQgaXJxLCB2b2lkICpk ZXYpIAo+ID4+Pj4+IHsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCAoKml0aW1lcl9jbG9ja2V2ZW50 LmV2ZW50X2hhbmRsZXIpKCZpdGltZXJfY2xvY2tldmVudCk7IAo+ID4+Pj4+ICvCoMKgwqDCoMKg wqAgKCp0aW1lcl9jbG9ja2V2ZW50LmV2ZW50X2hhbmRsZXIpKCZ0aW1lcl9jbG9ja2V2ZW50KTsg Cj4gPj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gSVJRX0hBTkRMRUQ7 IAo+ID4+Pj4+IH0gCj4gPj4+Pj4gCj4gPj4+Pj4gLXN0YXRpYyBjeWNsZV90IGl0aW1lcl9yZWFk KHN0cnVjdCBjbG9ja3NvdXJjZSAqY3MpIAo+ID4+Pj4+ICtzdGF0aWMgY3ljbGVfdCB0aW1lcl9y ZWFkKHN0cnVjdCBjbG9ja3NvdXJjZSAqY3MpIAo+ID4+Pj4+IHsgCj4gPj4+Pj4gLcKgwqDCoMKg wqDCoCByZXR1cm4gb3NfbnNlY3MoKSAvIDEwMDA7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgcmV0 dXJuIG9zX25zZWNzKCkgLyBUSU1FUl9NVUxUSVBMSUVSOyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IAo+ ID4+Pj4+IC1zdGF0aWMgc3RydWN0IGNsb2Nrc291cmNlIGl0aW1lcl9jbG9ja3NvdXJjZSA9IHsg Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCAubmFtZcKgwqDCoMKgwqDCoMKgwqDCoMKgID0gIml0aW1l ciIsIAo+ID4+Pj4+ICtzdGF0aWMgc3RydWN0IGNsb2Nrc291cmNlIHRpbWVyX2Nsb2Nrc291cmNl ID0geyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIC5uYW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAi dGltZXIiLCAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIC5yYXRpbmfCoMKgwqDCoMKgwqDC oMKgID0gMzAwLCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIC5yZWFkwqDCoMKgwqDCoMKgwqDCoMKg wqAgPSBpdGltZXJfcmVhZCwgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCAucmVhZMKgwqDCoMKgwqDC oMKgwqDCoMKgID0gdGltZXJfcmVhZCwgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCAubWFz a8KgwqDCoMKgwqDCoMKgwqDCoMKgID0gQ0xPQ0tTT1VSQ0VfTUFTSyg2NCksIAo+ID4+Pj4+wqDC oMKgwqDCoMKgwqDCoMKgwqAgLmZsYWdzwqDCoMKgwqDCoMKgwqDCoMKgID0gQ0xPQ0tfU09VUkNF X0lTX0NPTlRJTlVPVVMsIAo+ID4+Pj4+IH07IAo+ID4+Pj4+IAo+ID4+Pj4+IC1zdGF0aWMgdm9p ZCBfX2luaXQgc2V0dXBfaXRpbWVyKHZvaWQpIAo+ID4+Pj4+ICtzdGF0aWMgdm9pZCBfX2luaXQg dGltZXJfc2V0dXAodm9pZCkgCj4gPj4+Pj4geyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKg IGludCBlcnI7IAo+ID4+Pj4+IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgZXJyID0gcmVxdWVzdF9p cnEoVElNRVJfSVJRLCB1bV90aW1lciwgMCwgInRpbWVyIiwgTlVMTCk7IAo+ID4+Pj4+IC3CoMKg wqDCoMKgwqAgaWYgKGVyciAhPSAwKSAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGVyciA9IHJlcXVl c3RfaXJxKEhSVElNRVJfSVJRLCB1bV90aW1lcl9pcnEsIElSUUZfVElNRVIsICJociB0aW1lciIs IE5VTEwpOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGlmIChlcnIgIT0gMCkgeyAKPiA+Pj4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludGsoS0VSTl9FUlIgInJlZ2lz dGVyX3RpbWVyIDogcmVxdWVzdF9pcnEgZmFpbGVkIC0gIiAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJlcnJubyA9ICVkXG4iLCAtZXJy KTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOyAKPiA+Pj4+ PiArwqDCoMKgIH0gCj4gPj4+Pj4gKyAKPiA+Pj4+PiArwqDCoMKgIGVyciA9IG9zX3RpbWVyX2Ny ZWF0ZShOVUxMKTsgCj4gPj4+Pj4gK8KgwqDCoCBpZiAoZXJyICE9IDApIHsgCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIHByaW50ayhLRVJOX0VSUiAiY3JlYXRpb24gb2YgdGltZXIgZmFpbGVkIC0g ZXJybm8gPSAlZFxuIiwgLWVycik7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47IAo+ ID4+Pj4+ICvCoMKgwqAgfSAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGl0aW1lcl9j bG9ja2V2ZW50Lm11bHQgPSBkaXZfc2MoSFosIE5TRUNfUEVSX1NFQywgMzIpOyAKPiA+Pj4+PiAt wqDCoMKgwqDCoMKgIGl0aW1lcl9jbG9ja2V2ZW50Lm1heF9kZWx0YV9ucyA9IAo+ID4+Pj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsb2NrZXZlbnRfZGVsdGEybnMoNjAgKiBIWiwg Jml0aW1lcl9jbG9ja2V2ZW50KTsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBpdGltZXJfY2xvY2tl dmVudC5taW5fZGVsdGFfbnMgPSAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjbG9ja2V2ZW50X2RlbHRhMm5zKDEsICZpdGltZXJfY2xvY2tldmVudCk7IAo+ID4+Pj4+IC3C oMKgwqDCoMKgwqAgZXJyID0gY2xvY2tzb3VyY2VfcmVnaXN0ZXJfaHooJml0aW1lcl9jbG9ja3Nv dXJjZSwgVVNFQ19QRVJfU0VDKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBlcnIgPSBjbG9ja3Nv dXJjZV9yZWdpc3Rlcl9oeigmdGltZXJfY2xvY2tzb3VyY2UsIE5TRUNfUEVSX1NFQy9USU1FUl9N VUxUSVBMSUVSKTsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZXJyKSB7IAo+ID4+ Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW50ayhLRVJOX0VSUiAi Y2xvY2tzb3VyY2VfcmVnaXN0ZXJfaHogcmV0dXJuZWQgJWRcbiIsIGVycik7IAo+ID4+Pj4+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsgCj4gPj4+Pj7CoMKgwqDC oMKgwqDCoMKgwqDCoCB9IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgY2xvY2tldmVudHNfcmVnaXN0 ZXJfZGV2aWNlKCZpdGltZXJfY2xvY2tldmVudCk7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgY2xv Y2tldmVudHNfcmVnaXN0ZXJfZGV2aWNlKCZ0aW1lcl9jbG9ja2V2ZW50KTsgCj4gPj4+Pj4gfSAK PiA+Pj4+PiAKPiA+Pj4+PiB2b2lkIHJlYWRfcGVyc2lzdGVudF9jbG9jayhzdHJ1Y3QgdGltZXNw ZWMgKnRzKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgbG9uZyBsb25nIG5zZWNz ID0gb3NfbnNlY3MoKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBsb25nIGxvbmcgbnNlY3MgPSBv c19wZXJzaXN0ZW50X2Nsb2NrX2VtdWxhdGlvbigpOyAKPiA+Pj4+PiAKPiA+Pj4+PsKgwqDCoMKg wqDCoMKgwqDCoMKgIHNldF9ub3JtYWxpemVkX3RpbWVzcGVjKHRzLCBuc2VjcyAvIE5TRUNfUEVS X1NFQywgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuc2VjcyAlIE5TRUNfUEVSX1NFQyk7IAo+ID4+Pj4+ IEBAIC0xMTAsNiArMTIxLDYgQEAgdm9pZCByZWFkX3BlcnNpc3RlbnRfY2xvY2soc3RydWN0IHRp bWVzcGVjICp0cykgCj4gPj4+Pj4gCj4gPj4+Pj4gdm9pZCBfX2luaXQgdGltZV9pbml0KHZvaWQp IAo+ID4+Pj4+IHsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCB0aW1lcl9pbml0KCk7IAo+ID4+Pj4+ IC3CoMKgwqDCoMKgwqAgbGF0ZV90aW1lX2luaXQgPSBzZXR1cF9pdGltZXI7IAo+ID4+Pj4+ICvC oMKgwqDCoMKgwqAgdW1sX2hydGltZXJfc2V0X3NpZ25hbF9oYW5kbGVyKCk7IAo+ID4+Pj4+ICvC oMKgwqDCoMKgwqAgbGF0ZV90aW1lX2luaXQgPSB0aW1lcl9zZXR1cDsgCj4gPj4+Pj4gfSAKPiA+ Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9vcy1MaW51eC9pbnRlcm5hbC5oIGIvYXJjaC91bS9v cy1MaW51eC9pbnRlcm5hbC5oIAo+ID4+Pj4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NCAKPiA+ Pj4+PiBpbmRleCAwZGMyYzlmLi4wMDAwMDAwIAo+ID4+Pj4+IC0tLSBhL2FyY2gvdW0vb3MtTGlu dXgvaW50ZXJuYWwuaCAKPiA+Pj4+PiArKysgL2Rldi9udWxsIAo+ID4+Pj4+IEBAIC0xICswLDAg QEAgCj4gPj4+Pj4gLXZvaWQgYWxhcm1faGFuZGxlcihpbnQgc2lnLCBzdHJ1Y3Qgc2lnaW5mbyAq dW51c2VkX3NpLCBtY29udGV4dF90ICptYyk7IAo+ID4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Vt L29zLUxpbnV4L21haW4uYyBiL2FyY2gvdW0vb3MtTGludXgvbWFpbi5jIAo+ID4+Pj4+IGluZGV4 IGRmOTE5MWEuLmJkNTkwN2UgMTAwNjQ0IAo+ID4+Pj4+IC0tLSBhL2FyY2gvdW0vb3MtTGludXgv bWFpbi5jIAo+ID4+Pj4+ICsrKyBiL2FyY2gvdW0vb3MtTGludXgvbWFpbi5jIAo+ID4+Pj4+IEBA IC0xNjgsOCArMTY4LDggQEAgaW50IF9faW5pdCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndiwg Y2hhciAqKmVudnApIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHNvbWUgdGltZSkg YW5kIGNhdXNlIGEgc2VnZmF1bHQuIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLyAK PiA+Pj4+PiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIC8qIHN0b3AgdGltZXJzIGFuZCBzZXQgU0lH VlRBTFJNIHRvIGJlIGlnbm9yZWQgKi8gCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBkaXNhYmxlX3Rp bWVyKCk7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgLyogc3RvcCB0aW1lcnMgYW5kIHNldCB0aW1l ciBzaWduYWwgdG8gYmUgaWdub3JlZCAqLyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIG9zX3RpbWVy X2Rpc2FibGUoKTsgCj4gPj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBkaXNh YmxlIFNJR0lPIGZvciB0aGUgZmRzIGFuZCBzZXQgU0lHSU8gdG8gYmUgaWdub3JlZCAqLyAKPiA+ Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGVyciA9IGRlYWN0aXZhdGVfYWxsX2ZkcygpOyAKPiA+ Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9vcy1MaW51eC9zaWduYWwuYyBiL2FyY2gvdW0vb3Mt TGludXgvc2lnbmFsLmMgCj4gPj4+Pj4gaW5kZXggN2I2MDVlNC4uZWU2ZGIyZSAxMDA2NDQgCj4g Pj4+Pj4gLS0tIGEvYXJjaC91bS9vcy1MaW51eC9zaWduYWwuYyAKPiA+Pj4+PiArKysgYi9hcmNo L3VtL29zLUxpbnV4L3NpZ25hbC5jIAo+ID4+Pj4+IEBAIC0xMyw3ICsxMyw2IEBAIAo+ID4+Pj4+ ICNpbmNsdWRlIDxrZXJuX3V0aWwuaD4gCj4gPj4+Pj4gI2luY2x1ZGUgPG9zLmg+IAo+ID4+Pj4+ ICNpbmNsdWRlIDxzeXNkZXAvbWNvbnRleHQuaD4gCj4gPj4+Pj4gLSNpbmNsdWRlICJpbnRlcm5h bC5oIiAKPiA+Pj4+PiAKPiA+Pj4+PiB2b2lkICgqc2lnX2luZm9bTlNJR10pKGludCwgc3RydWN0 IHNpZ2luZm8gKiwgc3RydWN0IHVtbF9wdF9yZWdzICopID0geyAKPiA+Pj4+PsKgwqDCoMKgwqDC oMKgwqDCoMKgIFtTSUdUUkFQXcKgwqDCoMKgwqDCoCA9IHJlbGF5X3NpZ25hbCwgCj4gPj4+Pj4g QEAgLTIzLDcgKzIyLDggQEAgdm9pZCAoKnNpZ19pbmZvW05TSUddKShpbnQsIHN0cnVjdCBzaWdp bmZvICosIHN0cnVjdCB1bWxfcHRfcmVncyAqKSA9IHsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoCBbU0lHQlVTXcKgwqDCoMKgwqDCoMKgID0gYnVzX2hhbmRsZXIsIAo+ID4+Pj4+wqDCoMKg wqDCoMKgwqDCoMKgwqAgW1NJR1NFR1ZdwqDCoMKgwqDCoMKgID0gc2Vndl9oYW5kbGVyLCAKPiA+ Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIFtTSUdJT13CoMKgwqDCoMKgwqDCoMKgID0gc2lnaW9f aGFuZGxlciwgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBbU0lHVlRBTFJNXcKgwqDCoMKgID0gdGlt ZXJfaGFuZGxlciB9OyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIFtTSUdVU1IyXcKgwqDCoMKgwqDC oCA9IGhydGltZXJfaGFuZGxlciAKPiA+Pj4+PiArfTsgCj4gPj4+Pj4gCj4gPj4+Pj4gc3RhdGlj IHZvaWQgc2lnX2hhbmRsZXJfY29tbW9uKGludCBzaWcsIHN0cnVjdCBzaWdpbmZvICpzaSwgbWNv bnRleHRfdCAqbWMpIAo+ID4+Pj4+IHsgCj4gPj4+Pj4gQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGlj IHZvaWQgc2lnX2hhbmRsZXJfY29tbW9uKGludCBzaWcsIHN0cnVjdCBzaWdpbmZvICpzaSwgbWNv bnRleHRfdCAqbWMpIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgfSAKPiA+Pj4+PiAKPiA+ Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGVuYWJsZSBzaWduYWxzIGlmIHNpZyBpc24ndCBJ UlEgc2lnbmFsICovIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgaWYgKChzaWcgIT0gU0lHSU8pICYm IChzaWcgIT0gU0lHV0lOQ0gpICYmIChzaWcgIT0gU0lHVlRBTFJNKSkgCj4gPj4+Pj4gK8KgwqDC oMKgwqDCoCBpZiAoKHNpZyAhPSBTSUdJTykgJiYgKHNpZyAhPSBTSUdXSU5DSCkgJiYgKHNpZyAh PSBTSUdWVEFMUk0pICYmIChzaWcgIT0gU0lHVVNSMikpIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuYmxvY2tfc2lnbmFscygpOyAKPiA+Pj4+PiAKPiA+Pj4+ PsKgwqDCoMKgwqDCoMKgwqDCoMKgICgqc2lnX2luZm9bc2lnXSkoc2lnLCBzaSwgJnIpOyAKPiA+ Pj4+PiBAQCAtNTUsOCArNTUsOCBAQCBzdGF0aWMgdm9pZCBzaWdfaGFuZGxlcl9jb21tb24oaW50 IHNpZywgc3RydWN0IHNpZ2luZm8gKnNpLCBtY29udGV4dF90ICptYykgCj4gPj4+Pj4gI2RlZmlu ZSBTSUdJT19CSVQgMCAKPiA+Pj4+PiAjZGVmaW5lIFNJR0lPX01BU0sgKDEgPDwgU0lHSU9fQklU KSAKPiA+Pj4+PiAKPiA+Pj4+PiAtI2RlZmluZSBTSUdWVEFMUk1fQklUIDEgCj4gPj4+Pj4gLSNk ZWZpbmUgU0lHVlRBTFJNX01BU0sgKDEgPDwgU0lHVlRBTFJNX0JJVCkgCj4gPj4+Pj4gKyNkZWZp bmUgU0lHVVNSMl9CSVQgMiAKPiA+Pj4+PiArI2RlZmluZSBTSUdVU1IyX01BU0sgKDEgPDwgU0lH VVNSMl9CSVQpIAo+ID4+Pj4+IAo+ID4+Pj4+IHN0YXRpYyBpbnQgc2lnbmFsc19lbmFibGVkOyAK PiA+Pj4+PiBzdGF0aWMgdW5zaWduZWQgaW50IHNpZ25hbHNfcGVuZGluZzsgCj4gPj4+Pj4gQEAg LTc4LDQ2ICs3OCw0NyBAQCB2b2lkIHNpZ19oYW5kbGVyKGludCBzaWcsIHN0cnVjdCBzaWdpbmZv ICpzaSwgbWNvbnRleHRfdCAqbWMpIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgc2V0X3Np Z25hbHMoZW5hYmxlZCk7IAo+ID4+Pj4+IH0gCj4gPj4+Pj4gCj4gPj4+Pj4gLXN0YXRpYyB2b2lk IHJlYWxfYWxhcm1faGFuZGxlcihtY29udGV4dF90ICptYykgCj4gPj4+Pj4gK3N0YXRpYyB2b2lk IHJlYWxfaHJhbGFybV9oYW5kbGVyKG1jb250ZXh0X3QgKm1jKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+ wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHVtbF9wdF9yZWdzIHJlZ3M7IAo+ID4+Pj4+IAo+ ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKG1jICE9IE5VTEwpIAo+ID4+Pj4+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9yZWdzX2Zyb21fbWMoJnJlZ3MsIG1j KTsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCByZWdzLmlzX3VzZXIgPSAwOyAKPiA+Pj4+ PiAtwqDCoMKgwqDCoMKgIHVuYmxvY2tfc2lnbmFscygpOyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKg IHRpbWVyX2hhbmRsZXIoU0lHVlRBTFJNLCBOVUxMLCAmcmVncyk7IAo+ID4+Pj4+ICvCoMKgwqDC oMKgwqAgaHJ0aW1lcl9oYW5kbGVyKFNJR1VTUjIsIE5VTEwsICZyZWdzKTsgCj4gPj4+Pj4gfSAK PiA+Pj4+PiAKPiA+Pj4+PiAtdm9pZCBhbGFybV9oYW5kbGVyKGludCBzaWcsIHN0cnVjdCBzaWdp bmZvICp1bnVzZWRfc2ksIG1jb250ZXh0X3QgKm1jKSAKPiA+Pj4+PiArdm9pZCBocmFsYXJtX2hh bmRsZXIoaW50IHNpZywgc3RydWN0IHNpZ2luZm8gKnVudXNlZF9zaSwgbWNvbnRleHRfdCAqbWMp IAo+ID4+Pj4+IHsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgZW5hYmxlZDsgCj4g Pj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBlbmFibGVkID0gc2lnbmFsc19lbmFi bGVkOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghc2lnbmFsc19lbmFibGVkKSB7 IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpZ25hbHNfcGVuZGluZyB8 PSBTSUdWVEFMUk1fTUFTSzsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c2lnbmFsc19wZW5kaW5nIHw9IFNJR1VTUjJfTUFTSzsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKg IH0gCj4gPj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBibG9ja19zaWduYWxzKCk7 IAo+ID4+Pj4+IC0gCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCByZWFsX2FsYXJtX2hhbmRsZXIobWMp OyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHJlYWxfaHJhbGFybV9oYW5kbGVyKG1jKTsgCj4gPj4+ Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXRfc2lnbmFscyhlbmFibGVkKTsgCj4gPj4+Pj4gfSAK PiA+Pj4+PiAKPiA+Pj4+PiAtdm9pZCB0aW1lcl9pbml0KHZvaWQpIAo+ID4+Pj4+ICt2b2lkIHVt bF9ocnRpbWVyX3NldF9zaWduYWxfaGFuZGxlcih2b2lkKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+IC3C oMKgwqDCoMKgwqAgc2V0X2hhbmRsZXIoU0lHVlRBTFJNKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDC oCBzZXRfaGFuZGxlcihTSUdVU1IyKTsgCj4gPj4+Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+PiB2b2lk IHNldF9zaWdzdGFjayh2b2lkICpzaWdfc3RhY2ssIGludCBzaXplKSAKPiA+Pj4+PiB7IAo+ID4+ Pj4+IC3CoMKgwqDCoMKgwqAgc3RhY2tfdCBzdGFjayA9ICgoc3RhY2tfdCkgeyAuc3NfZmxhZ3PC oCA9IDAsIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5zc19zcMKgwqDCoMKgID0gKF9fcHRyX3Qp IHNpZ19zdGFjaywgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnNzX3NpemXCoMKgID0gc2l6ZSAt IHNpemVvZih2b2lkICopIH0pOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHN0YWNrX3Qgc3RhY2sg PSAoKHN0YWNrX3QpIHsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAuc3NfZmxhZ3MgPSAwLCAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5zc19zcMKgwqDCoCA9IChfX3B0cl90 KSBzaWdfc3RhY2ssIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnNzX3NpemXCoCA9IHNpemUgLSBzaXplb2Yodm9p ZCAqKSAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIH0pOyAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDCoMKg wqDCoMKgIGlmIChzaWdhbHRzdGFjaygmc3RhY2ssIE5VTEwpICE9IDApIAo+ID4+Pj4+ICvCoMKg wqDCoMKgwqAgaWYgKHNpZ2FsdHN0YWNrKCZzdGFjaywgTlVMTCkgIT0gMCkgeyAKPiA+Pj4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYW5pYygiZW5hYmxpbmcgc2lnbmFs IHN0YWNrIGZhaWxlZCwgZXJybm8gPSAlZFxuIiwgZXJybm8pOyAKPiA+Pj4+PiArwqDCoMKgwqDC oMKgIH0gCj4gPj4+Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+PiBzdGF0aWMgdm9pZCAoKmhhbmRsZXJz W19OU0lHXSkoaW50IHNpZywgc3RydWN0IHNpZ2luZm8gKnNpLCBtY29udGV4dF90ICptYykgPSB7 IAo+ID4+Pj4+IEBAIC0xMjksMTAgKzEzMCw5IEBAIHN0YXRpYyB2b2lkICgqaGFuZGxlcnNbX05T SUddKShpbnQgc2lnLCBzdHJ1Y3Qgc2lnaW5mbyAqc2ksIG1jb250ZXh0X3QgKm1jKSA9IHsgCj4g Pj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBbU0lHSU9dID0gc2lnX2hhbmRsZXIs IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgW1NJR1dJTkNIXSA9IHNpZ19oYW5kbGVyLCAK PiA+Pj4+PiAtwqDCoMKgwqDCoMKgIFtTSUdWVEFMUk1dID0gYWxhcm1faGFuZGxlciAKPiA+Pj4+ PiArwqDCoMKgwqDCoMKgIFtTSUdVU1IyXSA9IGhyYWxhcm1faGFuZGxlciAKPiA+Pj4+PiB9OyAK PiA+Pj4+PiAKPiA+Pj4+PiAtIAo+ID4+Pj4+IHN0YXRpYyB2b2lkIGhhcmRfaGFuZGxlcihpbnQg c2lnLCBzaWdpbmZvX3QgKnNpLCB2b2lkICpwKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+wqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHA7IAo+ID4+Pj4+IEBAIC0xNzYsNiAr MTc2LDEzIEBAIHN0YXRpYyB2b2lkIGhhcmRfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKnNp LCB2b2lkICpwKSAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gd2hpbGUgKHBlbmRpbmcp OyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IAo+ID4+Pj4+ICsvKiogCj4gPj4+Pj4gKyAqIHNldF9oYW5k bGVyKCkgLSBlbmFibGUgc2lnbmFsIGluIHByb2Nlc3MnIHNpZ25hbCBtYXNrIAo+ID4+Pj4+ICsg KiBAc2lnOsKgwqDCoCBUaGUgc2lnbmFsIHRvIGVuYWJsZSAKPiA+Pj4+PiArICogCj4gPj4+Pj4g KyAqIEVuYWJsZSB0aGUgZ2l2ZW4gc2lnbmFsIGluIHRoZSBwcm9jZXNzJyBzaWduYWwgbWFzayBh bmQgCj4gPj4+Pj4gKyAqIGF0dGFjaCBoYXJkX2hhbmRsZXIoKSBhcyBoYW5kbGVyIHJvdXRpbmUg Cj4gPj4+Pj4gKyAqLyAKPiA+Pj4+PiB2b2lkIHNldF9oYW5kbGVyKGludCBzaWcpIAo+ID4+Pj4+ IHsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsg Cj4gPj4+Pj4gQEAgLTE4Niw5ICsxOTMsOSBAQCB2b2lkIHNldF9oYW5kbGVyKGludCBzaWcpIAo+ ID4+Pj4+IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYmxvY2sgaXJxIG9uZXMgKi8g Cj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2sp OyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIHNpZ2FkZHNldCgmYWN0aW9uLnNhX21hc2ssIFNJR1ZU QUxSTSk7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgc2lnYWRkc2V0KCZhY3Rpb24uc2Ff bWFzaywgU0lHSU8pOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpZ2FkZHNldCgmYWN0 aW9uLnNhX21hc2ssIFNJR1dJTkNIKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBzaWdhZGRzZXQo JmFjdGlvbi5zYV9tYXNrLCBTSUdVU1IyKTsgCj4gPj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoc2lnID09IFNJR1NFR1YpIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGZsYWdzIHw9IFNBX05PREVGRVI7IAo+ID4+Pj4+IEBAIC0yODEsOCAr Mjg4LDggQEAgdm9pZCB1bmJsb2NrX3NpZ25hbHModm9pZCkgCj4gPj4+Pj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHNhdmVfcGVuZGluZyAmIFNJR0lPX01BU0spIAo+ ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzaWdfaGFuZGxlcl9jb21tb24oU0lHSU8sIE5VTEwsIE5VTEwpOyAKPiA+Pj4+PiAKPiA+Pj4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc2F2ZV9wZW5kaW5nICYgU0lHVlRB TFJNX01BU0spIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZWFsX2FsYXJtX2hhbmRsZXIoTlVMTCk7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChzYXZlX3BlbmRpbmcgJiBTSUdVU1IyX01BU0spIAo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWFsX2hyYWxh cm1faGFuZGxlcihOVUxMKTsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCB9IAo+ID4+Pj4+ IH0gCj4gPj4+Pj4gCj4gPj4+Pj4gQEAgLTI5OCw5ICszMDUsMTEgQEAgaW50IHNldF9zaWduYWxz KGludCBlbmFibGUpIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiBlbmFibGU7IAo+ID4+Pj4+IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 ID0gc2lnbmFsc19lbmFibGVkOyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGlmIChlbmFibGUpIAo+ ID4+Pj4+ICvCoMKgwqDCoMKgwqAgaWYgKGVuYWJsZSkgeyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bmJsb2NrX3NpZ25hbHMoKTsgCj4gPj4+Pj4gLcKgwqDC oMKgwqDCoCBlbHNlIGJsb2NrX3NpZ25hbHMoKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCB9IGVs c2UgeyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmxvY2tfc2lnbmFscygpOyAKPiA+ Pj4+PiArwqDCoMKgIH0gCj4gPj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcmV0OyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3VtL29zLUxpbnV4 L3NrYXMvcHJvY2Vzcy5jIGIvYXJjaC91bS9vcy1MaW51eC9za2FzL3Byb2Nlc3MuYyAKPiA+Pj4+ PiBpbmRleCA3YTk3Nzc1Li4zMDA2NWUxIDEwMDY0NCAKPiA+Pj4+PiAtLS0gYS9hcmNoL3VtL29z LUxpbnV4L3NrYXMvcHJvY2Vzcy5jIAo+ID4+Pj4+ICsrKyBiL2FyY2gvdW0vb3MtTGludXgvc2th cy9wcm9jZXNzLmMgCj4gPj4+Pj4gQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGludCBwdHJhY2Vf ZHVtcF9yZWdzKGludCBwaWQpIAo+ID4+Pj4+wqDCoMKgwqAgKiBTaWduYWxzIHRoYXQgYXJlIE9L IHRvIHJlY2VpdmUgaW4gdGhlIHN0dWIgLSB3ZSdsbCBqdXN0IGNvbnRpbnVlIGl0LiAKPiA+Pj4+ PsKgwqDCoMKgICogU0lHV0lOQ0ggd2lsbCBoYXBwZW4gd2hlbiBVTUwgaXMgaW5zaWRlIGEgZGV0 YWNoZWQgc2NyZWVuLiAKPiA+Pj4+PsKgwqDCoMKgICovIAo+ID4+Pj4+IC0jZGVmaW5lIFNUVUJf U0lHX01BU0sgKCgxIDw8IFNJR1ZUQUxSTSkgfCAoMSA8PCBTSUdXSU5DSCkpIAo+ID4+Pj4+ICsj ZGVmaW5lIFNUVUJfU0lHX01BU0sgKCgxIDw8IFNJR1ZUQUxSTSkgfCAoMSA8PCBTSUdXSU5DSCkg fCAoMSA8PCBTSUdVU1IyKSkgCj4gPj4+Pj4gCj4gPj4+Pj4gLyogU2lnbmFscyB0aGF0IHRoZSBz dHViIHdpbGwgZmluaXNoIHdpdGggLSBhbnl0aGluZyBlbHNlIGlzIGFuIGVycm9yICovIAo+ID4+ Pj4+ICNkZWZpbmUgU1RVQl9ET05FX01BU0sgKDEgPDwgU0lHVFJBUCkgCj4gPj4+Pj4gQEAgLTE3 NiwxNyArMTc2LDU5IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV90cmFwKGludCBwaWQsIHN0cnVjdCB1 bWxfcHRfcmVncyAqcmVncywgCj4gPj4+Pj4gCj4gPj4+Pj4gZXh0ZXJuIGludCBfX3N5c2NhbGxf c3R1Yl9zdGFydDsgCj4gPj4+Pj4gCj4gPj4+Pj4gKy8qKiAKPiA+Pj4+PiArICogdXNlcnNwYWNl X3RyYW1wKCkgLSB1c2Vyc3BhY2UgdHJhbXBvbGluZSAKPiA+Pj4+PiArICogQHN0YWNrOsKgIFRo ZSBhZGRyZXNzIG9mIHRoZSBzdHViIHN0YWNrIHVzZWQgZm9yIHRoZSBuZXcgcHJvY2VzcyAKPiA+ Pj4+PiArICrCoMKgwqDCoMKgwqDCoMKgwqAgKHVzZWQgZm9yIFNJR1NFR1YgaGFuZGxpbmcpLiAK PiA+Pj4+PiArICogCj4gPj4+Pj4gKyAqIFRoZSB0cmFtcG9saW5lIGRvZXMgZXhlY3V0ZSBhcyBh IG5ldyBwcm9jZXNzIGFmdGVyIGNsb25lKCkgCj4gPj4+Pj4gKyAqIEZvciBlYWNoIG5ldyB1c2Vy c3BhY2UgcHJvY2VzcyB0aGUgYmVsb3cgY29kZSBzZXRzIHVwIAo+ID4+Pj4+ICsgKiBhbGwgbmVj ZXNzYXJ5IGRhdGE6IAo+ID4+Pj4+ICsgKiAxLikgZW5hYmxlIHB0cmFjZSBmcm9tIHBhcmVudCAo dGhlIHVtbCBrZXJuZWwpIAo+ID4+Pj4+ICsgKiAyLikgU2V0dXAgc2lnbmFsIGhhbmRsaW5nLiBT aWduYWxzIGFyZSBpbmhlcml0ZWQgYnkgdGhlIHBhcmVudCwgaS5lIAo+ID4+Pj4+ICsgKsKgwqDC oMKgIHRoZSB1bWwga2VybmVsIAo+ID4+Pj4+ICsgKiAzLikgQ3JlYXRlIGFuZCBzdGFydCBhbiBw b3NpeCAoaW50ZXJ2YWwpIHRpbWVyIGZvciB0aGlzIHByb2Nlc3MuIAo+ID4+Pj4+ICsgKsKgwqDC oMKgIFRoaXMgdGltZXIgd2lsbCBlbXVsYXRlIHRoZSBrZXJuZWwgdGltZXIgdGlja3MuIAo+ID4+ Pj4+ICsgKsKgwqDCoMKgIFRoZSB0aW1lciBzaWduYWwgd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhl IGtlcm5lbCBwcm9jZXNzIGluIHVzZXJzcGFjZSgpIAo+ID4+Pj4+ICsgKiA0LikgTWFwIHN0dWIg Y29kZSBwYWdlIGluIHRoZSBuZXcgcHJvY2VzcywgaS5lLiB0aGUgCj4gPj4+Pj4gKyAqwqDCoMKg wqAgdXNlcnNwYWNlIHByb2Nlc3M6IAo+ID4+Pj4+ICsgKsKgwqDCoMKgIFRoZSBzdHViIGNvZGVz IGlzIHVzZWQgdG8gY2F0Y2ggc3lzY2FsbHMgZnJvbSB0aGUgdXNlcnNwYWNlIHRvIAo+ID4+Pj4+ ICsgKsKgwqDCoMKgIHRoZSBrZXJuZWwuIAo+ID4+Pj4+ICsgKsKgwqDCoMKgIFNlZSBsaW5rZXIg c2NyaXB0cyBhcmNoL3VtL2tlcm5lbC9keW4ubGRzLlMgKGR5bmFtaWMpIHJlc3AuIAo+ID4+Pj4+ ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXJjaC91 bS9rZXJuZWwvdW1sLmxkcy5TIChzdGF0aWMpIAo+ID4+Pj4+ICsgKsKgwqDCoMKgIGZvciBfX3N5 c2NhbGxfc3R1Yl9zdGFydCBkZWZpbnRpb24gYW5kIAo+ID4+Pj4+ICsgKsKgwqDCoMKgIGFyY2gv dW0va2VybmVsL3NrYXMvY2xvbmUuYyBmb3IgdGhlIHN0dWJfaGFuZGxlciBpdHNlbGYuIAo+ID4+ Pj4+ICsgKiA1LikgTWFwIHN0dWIgZGF0YSBwYWdlIGluIHRoZSBuZXcgcHJvY2VzcywgaS5lLiB0 aGUgCj4gPj4+Pj4gKyAqwqDCoMKgwqAgdXNlcnNwYWNlIHByb2Nlc3M6IAo+ID4+Pj4+ICsgKsKg wqDCoMKgIFNldHVwIGFuIFNJR1NFR1YgaGFuZGxlciBpbnRvIHRoZSBuZXcgcHJvY2Vzcy4gCj4g Pj4+Pj4gKyAqwqDCoMKgwqAgUGFnZSBmYXVsdHMgd2lsbCBiZSBjYXRjaGVkIGFuZCBzaWduYWxl ZCB0byB0aGUga2VybmVsIHZpYSB0aGlzIAo+ID4+Pj4+ICsgKsKgwqDCoMKgIG1lY2hhbmlzbS4g Cj4gPj4+Pj4gKyAqwqDCoMKgwqAgU2VlIGFyY2gveDg2L3VtL3N0dWJfc2Vndi5jIGZvciB0aGUg aGFuZGxlciBpdHNlbGYuIAo+ID4+Pj4+ICsgKiA2LikgU3RvcCB0aGUgbmV3IHByb2Nlc3MgYW5k IHdhaXQgZm9yIHRoZSBrZXJuZWwgdG8gU0lHQ09OVCBpdCBhZ2lhbiAKPiA+Pj4+PiArICrCoMKg wqDCoCB3aGVuIGl0IHdpbGwgZ2V0IHNjaGVkdWxlZCgpIAo+ID4+Pj4+ICsgKi8gCj4gPj4+Pj4g c3RhdGljIGludCB1c2Vyc3BhY2VfdHJhbXAodm9pZCAqc3RhY2spIAo+ID4+Pj4+IHsgCj4gPj4+ Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICphZGRyOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKg wqDCoMKgIGludCBlcnIsIGZkOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVk IGxvbmcgbG9uZyBvZmZzZXQ7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgdGltZXJfdCB0aW1lcjsg Cj4gPj4+Pj4gKyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHN0cnVjdCBzdHViX2RhdGEgKmRhdGEg PSAoc3RydWN0IHN0dWJfZGF0YSAqKSBzdGFjazsgCj4gPj4+Pj4gCj4gPj4+Pj7CoMKgwqDCoMKg wqDCoMKgwqDCoCBwdHJhY2UoUFRSQUNFX1RSQUNFTUUsIDAsIDAsIDApOyAKPiA+Pj4+PiAKPiA+ Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpZ25hbChTSUdURVJNLCBTSUdfREZMKTsgCj4gPj4+ Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBzaWduYWwoU0lHV0lOQ0gsIFNJR19JR04pOyAKPiA+Pj4+ PiAtwqDCoMKgwqDCoMKgIGVyciA9IHNldF9pbnRlcnZhbCgpOyAKPiA+Pj4+PiArIAo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqAgZXJyID0gb3NfdGltZXJfY3JlYXRlKCZ0aW1lcik7IAo+ID4+Pj4+ICvC oMKgwqDCoMKgwqAgaWYgKGVycikgeyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwcmludGsoVU1fS0VSTl9FUlIgInVzZXJzcGFjZV90cmFtcCAtIGNyZWF0aW9uIG9mIHRp bWVyIGZhaWxlZCwgIiAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICJlcnJubyA9ICVkXG4iLCBlcnIpOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBleGl0KDEpOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIH0gCj4gPj4+Pj4g KyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGVyciA9IG9zX3RpbWVyX3NldF9pbnRlcnZhbCgmdGlt ZXIsICZkYXRhLT50aW1lcik7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGVycikg eyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludGsoVU1f S0VSTl9FUlIgInVzZXJzcGFjZV90cmFtcCAtIHNldHRpbmcgdGltZXIgZmFpbGVkLCAiIAo+ID4+ Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImVy cm5vID0gJWRcbiIsIGVycik7IAo+ID4+Pj4+IEBAIC0yNDYsMTEgKzI4OCwxOCBAQCBzdGF0aWMg aW50IHVzZXJzcGFjZV90cmFtcCh2b2lkICpzdGFjaykgCj4gPj4+Pj4gI2RlZmluZSBOUl9DUFVT IDEgCj4gPj4+Pj4gaW50IHVzZXJzcGFjZV9waWRbTlJfQ1BVU107IAo+ID4+Pj4+IAo+ID4+Pj4+ ICsvKiogCj4gPj4+Pj4gKyAqIHN0YXJ0X3VzZXJzcGFjZSgpIC0gc3RhcnQgYSBuZXcgdXNlcnNw YWNlIHByb2Nlc3Mgd2l0aCBhIG5ldyBtbSBjb250ZXh0IAo+ID4+Pj4+ICsgKiBAc3R1Yl9zdGFj azogQWRkcmVzcyBvZiB0aGUgbmV3IHByb2Nlc3MnIHN0YWNrIAo+ID4+Pj4+ICsgKiAKPiA+Pj4+ PiArICogY2FsbGVkIGJ5IGluaXRfbmV3X2NvbnRleHQoKSAKPiA+Pj4+PiArICovIAo+ID4+Pj4+ IGludCBzdGFydF91c2Vyc3BhY2UodW5zaWduZWQgbG9uZyBzdHViX3N0YWNrKSAKPiA+Pj4+PiB7 IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9pZCAqc3RhY2s7IAo+ID4+Pj4+wqDCoMKg wqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBzcDsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoCBpbnQgcGlkLCBzdGF0dXMsIG4sIGZsYWdzLCBlcnI7IAo+ID4+Pj4+ICvCoMKgwqDCoMKg wqAgc3RydWN0IHN0dWJfZGF0YSAqZGF0YSA9IChzdHJ1Y3Qgc3R1Yl9kYXRhICopIHN0dWJfc3Rh Y2s7IAo+ID4+Pj4+IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhY2sgPSBtbWFwKE5V TEwsIFVNX0tFUk5fUEFHRV9TSVpFLCAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQywg Cj4gPj4+Pj4gQEAgLTI2Niw2ICszMTUsMTQgQEAgaW50IHN0YXJ0X3VzZXJzcGFjZSh1bnNpZ25l ZCBsb25nIHN0dWJfc3RhY2spIAo+ID4+Pj4+IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAg ZmxhZ3MgPSBDTE9ORV9GSUxFUyB8IFNJR0NITEQ7IAo+ID4+Pj4+IAo+ID4+Pj4+ICvCoMKgwqDC oMKgwqAgKmRhdGEgPSAoKHN0cnVjdCBzdHViX2RhdGEpIHsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC50aW1lcsKgID0gKChzdHJ1Y3QgaXRp bWVyc3BlYykgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7IC5pdF92YWx1ZS50dl9zZWPCoCA9IDAsIAo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC5pdF92YWx1ZS50dl9uc2VjID0gb3NfdGltZXJfcmVtYWluKE5VTEwpLCAKPiA+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAuaXRfaW50ZXJ2YWwudHZfc2VjwqAgPSAwLCAKPiA+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IFVNX05TRUNfUEVSX1NFQyAvIFVNX0haIH0pIAo+ID4+ Pj4+ICvCoMKgwqDCoMKgwqAgfSk7IAo+ID4+Pj4+ICsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoCBwaWQgPSBjbG9uZSh1c2Vyc3BhY2VfdHJhbXAsICh2b2lkICopIHNwLCBmbGFncywgKHZv aWQgKikgc3R1Yl9zdGFjayk7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBpZCA8 IDApIHsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyID0g LWVycm5vOyAKPiA+Pj4+PiBAQCAtMzEzLDEwICszNzAsMTUgQEAgaW50IHN0YXJ0X3VzZXJzcGFj ZSh1bnNpZ25lZCBsb25nIHN0dWJfc3RhY2spIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIGVycjsgCj4gPj4+Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+PiArLyoqIAo+ID4+Pj4+ICsg KiB1c2Vyc3BhY2UoKSAtIHVzZXIgc3BhY2UgY29udHJvbCBsb29wIAo+ID4+Pj4+ICsgKiBAcmVn czrCoMKgwqDCoMKgIHRoZSByZWdpc3RlcidzIHNhdmUgbWVtb3J5IAo+ID4+Pj4+ICsgKiAKPiA+ Pj4+PiArICogVGhlIG1haW4gbG9vcCB0aGF0IHRyYWNlcyBhbmQgY29udHJvbHMgZWFjaCBzcHdh bmVkIHVzZXJzcGFjZSAKPiA+Pj4+PiArICogcHJvY2VzcyAKPiA+Pj4+PiArICovIAo+ID4+Pj4+ IHZvaWQgdXNlcnNwYWNlKHN0cnVjdCB1bWxfcHRfcmVncyAqcmVncykgCj4gPj4+Pj4geyAKPiA+ Pj4+PiAtwqDCoMKgwqDCoMKgIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7IAo+ID4+Pj4+IC3CoMKg wqDCoMKgwqAgdW5zaWduZWQgbG9uZyBsb25nIG5zZWNzLCBub3c7IAo+ID4+Pj4+wqDCoMKgwqDC oMKgwqDCoMKgwqAgaW50IGVyciwgc3RhdHVzLCBvcCwgcGlkID0gdXNlcnNwYWNlX3BpZFswXTsg Cj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBUbyBwcmV2ZW50IHJhY2VzIGlmIHVzaW5n X3N5c2VtdSBjaGFuZ2VzIHVuZGVyIHVzLiovIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAg aW50IGxvY2FsX3VzaW5nX3N5c2VtdTsgCj4gPj4+Pj4gQEAgLTMyNSwxMyArMzg3LDggQEAgdm9p ZCB1c2Vyc3BhY2Uoc3RydWN0IHVtbF9wdF9yZWdzICpyZWdzKSAKPiA+Pj4+PsKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qIEhhbmRsZSBhbnkgaW1tZWRpYXRlIHJlc2NoZWR1bGVzIG9yIHNpZ25hbHMg Ki8gCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlcnJ1cHRfZW5kKCk7IAo+ID4+Pj4+ IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgaWYgKGdldGl0aW1lcihJVElNRVJfVklSVFVBTCwgJnRp bWVyKSkgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpbnRrKFVNX0tF Uk5fRVJSICJGYWlsZWQgdG8gZ2V0IGl0aW1lciwgZXJybm8gPSAlZFxuIiwgZXJybm8pOyAKPiA+ Pj4+PiAtwqDCoMKgwqDCoMKgIG5zZWNzID0gdGltZXIuaXRfdmFsdWUudHZfc2VjICogVU1fTlNF Q19QRVJfU0VDICsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGltZXIu aXRfdmFsdWUudHZfdXNlYyAqIFVNX05TRUNfUEVSX1VTRUM7IAo+ID4+Pj4+IC3CoMKgwqDCoMKg wqAgbnNlY3MgKz0gb3NfbnNlY3MoKTsgCj4gPj4+Pj4gLSAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKg wqDCoMKgIHdoaWxlICgxKSB7IAo+ID4+Pj4+ICsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLyogCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIFRoaXMgY2FuIGxlZ2l0aW1hdGVseSBmYWlsIGlmIHRoZSBwcm9jZXNzIGxv YWRzIGEgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGJv Z3VzIHZhbHVlIGludG8gYSBzZWdtZW50IHJlZ2lzdGVyLsKgIEl0IHdpbGwgCj4gPj4+Pj4gQEAg LTM4OCwzMiArNDQ1LDE5IEBAIHZvaWQgdXNlcnNwYWNlKHN0cnVjdCB1bWxfcHRfcmVncyAqcmVn cykgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN3aXRjaCAoc2lnKSB7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIFNJR1NFR1Y6IAo+ID4+Pj4+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKFBUUkFDRV9GVUxMX0ZBVUxUSU5GTykgeyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnZXRfc2thc19mYXVsdGluZm8ocGlkLCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZyZWdzLT5mYXVsdGluZm8p OyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKnNpZ19pbmZvW1NJR1NFR1ZdKShTSUdT RUdWLCAoc3RydWN0IHNpZ2luZm8gKikmc2ksIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZ3MpOyAKPiA+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfc2thc19mYXVsdGluZm8ocGlkLCZyZWdzLT5mYXVs dGluZm8pOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKnNpZ19pbmZvW1NJR1NFR1Zd KShTSUdTRUdWLCAoc3RydWN0IHNpZ2luZm8gKikmc2ksIHJlZ3MpOyAKPiA+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0g ZWxzZSB7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhhbmRsZV9zZWd2KHBpZCwgcmVn cyk7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaGFuZGxlX3NlZ3Yo cGlkLCByZWdzKTsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsgCj4gPj4+Pj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgU0lHVFJBUCAr IDB4ODA6IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaGFuZGxlX3RyYXAocGlkLCByZWdzLCBsb2NhbF91c2luZ19z eXNlbXUpOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhhbmRsZV90cmFwKHBpZCwgcmVncywgbG9jYWxfdXNpbmdf c3lzZW11KTsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgU0lHVFJBUDogCj4g Pj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZWxheV9zaWduYWwoU0lHVFJBUCwgKHN0cnVjdCBzaWdpbmZvICop JnNpLCByZWdzKTsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsgCj4gPj4+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgU0lHVlRBTFJNOiAKPiA+ Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIG5vdyA9IG9zX25zZWNzKCk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKG5vdyA8IG5zZWNz KSAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsgCj4gPj4+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBibG9j a19zaWduYWxzKCk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCpzaWdfaW5mb1tzaWddKShzaWcsIChzdHJ1Y3Qg c2lnaW5mbyAqKSZzaSwgcmVncyk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5ibG9ja19zaWduYWxzKCk7IAo+ ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbnNlY3MgPSB0aW1lci5pdF92YWx1ZS50dl9zZWMgKiAKPiA+Pj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBVTV9OU0VDX1BFUl9TRUMgKyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB0aW1lci5pdF92YWx1ZS50dl91c2VjICogCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgVU1fTlNFQ19QRVJfVVNFQzsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuc2VjcyArPSBvc19uc2Vjcygp OyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBTSUdVU1IyOiAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBTSUdJTzogCj4gPj4+ Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNh c2UgU0lHSUxMOiAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY2FzZSBTSUdCVVM6IAo+ID4+Pj4+IEBAIC00NDgsOCArNDkyLDcgQEAg c3RhdGljIGludCBfX2luaXQgaW5pdF90aHJlYWRfcmVncyh2b2lkKSAKPiA+Pj4+PsKgwqDCoMKg wqDCoMKgwqDCoMKgIHRocmVhZF9yZWdzW1JFR1NfSVBfSU5ERVhdID0gU1RVQl9DT0RFICsgCj4g Pj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAodW5zaWduZWQgbG9uZykgc3R1Yl9jbG9uZV9oYW5kbGVyIC0gCj4g Pj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAodW5zaWduZWQgbG9uZykgJl9fc3lzY2FsbF9zdHViX3N0YXJ0OyAK PiA+Pj4+PiAtwqDCoMKgwqDCoMKgIHRocmVhZF9yZWdzW1JFR1NfU1BfSU5ERVhdID0gU1RVQl9E QVRBICsgVU1fS0VSTl9QQUdFX1NJWkUgLSAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzaXplb2Yodm9pZCAqKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCB0aHJlYWRfcmVn c1tSRUdTX1NQX0lOREVYXSA9IFNUVUJfREFUQSArIFVNX0tFUk5fUEFHRV9TSVpFIC0gc2l6ZW9m KHZvaWQgKik7IAo+ID4+Pj4+ICNpZmRlZiBfX1NJR05BTF9GUkFNRVNJWkUgCj4gPj4+Pj7CoMKg wqDCoMKgwqDCoMKgwqDCoCB0aHJlYWRfcmVnc1tSRUdTX1NQX0lOREVYXSAtPSBfX1NJR05BTF9G UkFNRVNJWkU7IAo+ID4+Pj4+ICNlbmRpZiAKPiA+Pj4+PiBAQCAtNDU4LDI2ICs1MDEsNTEgQEAg c3RhdGljIGludCBfX2luaXQgaW5pdF90aHJlYWRfcmVncyh2b2lkKSAKPiA+Pj4+PiAKPiA+Pj4+ PiBfX2luaXRjYWxsKGluaXRfdGhyZWFkX3JlZ3MpOyAKPiA+Pj4+PiAKPiA+Pj4+PiArLyoqIAo+ ID4+Pj4+ICsgKiBjb3B5X2NvbnRleHRfc2thczAoKSAtIGNvcHkgYW4gbW0gY29udGV4dCAKPiA+ Pj4+PiArICogbmV3X3N0YWNrOsKgIHZvaWQgcG9pbnRlciBvZiBuZXcgc3RhY2ssIGEgemVyb2Vk IHBhZ2UgCj4gPj4+Pj4gKyAqIHBpZDrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHRoZSBwaWQgb2YgdGhlIG1tIHBhcmVudCwgdGhpcyBwcm9jZXMgaXMgY2xv bmVkIAo+ID4+Pj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGludG8gYSBuZXcgb25lIAo+ID4+Pj4+ICsgKiAKPiA+Pj4+PiArICog Q29weSBhbiBtbSBjb250ZXh0IGZyb20gYW4gZXhpc3RpbmcgdGFzayAKPiA+Pj4+PiArICogMS4p IGdldCBmaWxlIGRlc2NyaXB0b3IgYW5kIG9mZnNldCBvZiB0aGUgbW1hcGVkIG5ld19zdGFjayAK PiA+Pj4+PiArICogMi4pIHNldCBjdXJyZW50IHN0dWIgc3RhY2sncyBkYXRhOiBmaWxlIGRlc2Ny aXB0b3IsIG9mZnNldCBhbmQgdGltZXIgZGF0YSAKPiA+Pj4+PiArICogMy4pIFJlc3RvcmUgcGFy ZW50cyByZWdpc3RlcnMgdG8gaW5pdF90aHJlYWRfcmVncygpIAo+ID4+Pj4+ICsgKiA0LikgQ29u dGludWUgcGFyZW50ICg9PWZyb21fbW0pIGluIHN0dWJfY2xvbmVfaGFuZGxlcigpLCBzZWUgYWxz byAKPiA+Pj4+PiArICrCoMKgwqDCoCBpbml0X3RocmVhZF9yZWdzKCkuIFRoaXMgd2lsbCBjbG9u ZSBhIG5ldyBwcm9jZXNzIHdpdGggc2FtZSAKPiA+Pj4+PiArICrCoMKgwqDCoCBtbS4gCj4gPj4+ Pj4gKyAqIDUuKSAKPiA+Pj4+PiArICogCj4gPj4+Pj4gKyAqIFJldHVybnMgdGhlIFBJRCBvZiB0 aGUgbmV3IHByb2Nlc3MgCj4gPj4+Pj4gKyAqLyAKPiA+Pj4+PiBpbnQgY29weV9jb250ZXh0X3Nr YXMwKHVuc2lnbmVkIGxvbmcgbmV3X3N0YWNrLCBpbnQgcGlkKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+ IC3CoMKgwqDCoMKgwqAgc3RydWN0IHRpbWV2YWwgdHYgPSB7IC50dl9zZWMgPSAwLCAudHZfdXNl YyA9IFVNX1VTRUNfUEVSX1NFQyAvIFVNX0haIH07IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKg wqAgaW50IGVycjsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGN1 cnJlbnRfc3RhY2sgPSBjdXJyZW50X3N0dWJfc3RhY2soKTsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3Qgc3R1Yl9kYXRhICpkYXRhID0gKHN0cnVjdCBzdHViX2RhdGEgKikgY3Vy cmVudF9zdGFjazsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc3R1Yl9kYXRh ICpjaGlsZF9kYXRhID0gKHN0cnVjdCBzdHViX2RhdGEgKikgbmV3X3N0YWNrOyAKPiA+Pj4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdfb2Zmc2V0OyAKPiA+Pj4+ PiArIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IG5ld19mZCA9IHBoeXNfbWFwcGlu Zyh0b19waHlzKCh2b2lkICopbmV3X3N0YWNrKSwgJm5ld19vZmZzZXQpOyAKPiA+Pj4+PiAKPiA+ Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqIHByZXBhcmUgb2Zmc2V0IGFuZCBmZCBvZiBjaGlsZCdzIHN0YWNrIGFzIGFyZ3VtZW50IGZv ciBwYXJlbnQncyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBhbmQgY2hpbGQncyBt bWFwMiBjYWxscyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8gCj4gPj4+Pj4gLcKg wqDCoMKgwqDCoCAqZGF0YSA9ICgoc3RydWN0IHN0dWJfZGF0YSkgeyAub2Zmc2V0wqDCoCA9IE1N QVBfT0ZGU0VUKG5ld19vZmZzZXQpLCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5mZMKgwqDC oMKgwqDCoCA9IG5ld19mZCwgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAudGltZXLCoMKgwqAg PSAoKHN0cnVjdCBpdGltZXJ2YWwpIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB7IC5pdF92YWx1ZSA9IHR2LCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5pdF9pbnRlcnZhbCA9IHR2IH0pIH0p OyAKPiA+Pj4+PiAtIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgKmRhdGEgPSAoKHN0cnVjdCBzdHVi X2RhdGEpIHsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC5vZmZzZXQgPSBNTUFQX09GRlNFVChuZXdfb2Zmc2V0KSwgCj4gPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5mZMKgwqDCoMKgID0gbmV3 X2ZkLCAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLnRpbWVywqAgPSAoKHN0cnVjdCBpdGltZXJzcGVjKSAKPiA+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgeyAuaXRfdmFsdWUudHZfc2VjwqAgPSAwLCAKPiA+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5pdF92YWx1ZS50dl9uc2VjID0gb3NfdGlt ZXJfcmVtYWluKE5VTEwpLCAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIC5pdF9pbnRlcnZhbC50dl9zZWPCoCA9IDAsIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLml0X2ludGVydmFsLnR2X25zZWMgPSBVTV9OU0VDX1BFUl9TRUMg LyBVTV9IWiB9KSAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIH0pOyAKPiA+Pj4+PiArIAo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqAgLyogc2V0IHBhcmVudHMgcmVncyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKg wqAgKiB0aGlzIHNldCB0aGUgcmVnaXN0ZXJzIHRvIHRoZSBzYXZlZCByZWdpc3RlcnMgZG9uZSBp biB0aGUgaW5pdGNhbGwgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgICogaW5pdF90aHJlYWRfcmVn cygpIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAqLyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDC oMKgIGVyciA9IHB0cmFjZV9zZXRyZWdzKHBpZCwgdGhyZWFkX3JlZ3MpOyAKPiA+Pj4+PsKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChlcnIgPCAwKSB7IAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGVyciA9IC1lcnJubzsgCj4gPj4+Pj4gQEAgLTQ4Niw2ICs1NTQs NyBAQCBpbnQgY29weV9jb250ZXh0X3NrYXMwKHVuc2lnbmVkIGxvbmcgbmV3X3N0YWNrLCBpbnQg cGlkKSAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g ZXJyOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gCj4gPj4+Pj4gCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoCAvKiBzZXQgcGFyZW50cyBmcCByZWdpc3RlcnMgKi8gCj4gPj4+Pj7CoMKgwqDC oMKgwqDCoMKgwqDCoCBlcnIgPSBwdXRfZnBfcmVnaXN0ZXJzKHBpZCwgdGhyZWFkX2ZwX3JlZ3Mp OyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChlcnIgPCAwKSB7IAo+ID4+Pj4+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW50ayhVTV9LRVJOX0VSUiAiY29w eV9jb250ZXh0X3NrYXMwIDogcHV0X2ZwX3JlZ2lzdGVycyAiIAo+ID4+Pj4+IEBAIC00OTMsNyAr NTYyLDkgQEAgaW50IGNvcHlfY29udGV4dF9za2FzMCh1bnNpZ25lZCBsb25nIG5ld19zdGFjaywg aW50IHBpZCkgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIGVycjsgCj4gPj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCB9IAo+ID4+Pj4+IAo+ID4+Pj4+ IC3CoMKgwqDCoMKgwqAgLyogc2V0IGEgd2VsbCBrbm93biByZXR1cm4gY29kZSBmb3IgZGV0ZWN0 aW9uIG9mIGNoaWxkIHdyaXRlIGZhaWx1cmUgKi8gCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCAvKiBz ZXQgYSB3ZWxsIGtub3duIHJldHVybiBjb2RlIGZvciBkZXRlY3Rpb24gb2YgY2hpbGQgd3JpdGUg ZmFpbHVyZSwgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgICogaS5lLiBvbiB0aGUgbmV3IHN0YWNr IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAqLyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKg IGNoaWxkX2RhdGEtPmVyciA9IDEyMzQ1Njc4OyAKPiA+Pj4+PiAKPiA+Pj4+PsKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qIAo+ID4+Pj4+IEBAIC01MDgsOCArNTc5LDEwIEBAIGludCBjb3B5X2NvbnRl eHRfc2thczAodW5zaWduZWQgbG9uZyBuZXdfc3RhY2ssIGludCBwaWQpIAo+ID4+Pj4+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBlcnI7IAo+ID4+Pj4+wqDCoMKg wqDCoMKgwqDCoMKgwqAgfSAKPiA+Pj4+PiAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIC8qIHdhaXQg Zm9yIHBhcmVudHMgc3R1Yl9jbG9uZV9oYW5kbGVyKCkgdG8gZmluaXNoICovIAo+ID4+Pj4+wqDC oMKgwqDCoMKgwqDCoMKgwqAgd2FpdF9zdHViX2RvbmUocGlkKTsgCj4gPj4+Pj4gCj4gPj4+Pj4g K8KgwqDCoMKgwqDCoCAvKiBnZXQgY2hpbGRzIHBpZCwgdGhlIHBpZCBvZiB0aGUgY2xvbmVkIHBh cmVudCBwcm9jZXNzICovIAo+ID4+Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgcGlkID0gZGF0YS0+ ZXJyOyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChwaWQgPCAwKSB7IAo+ID4+Pj4+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW50ayhVTV9LRVJOX0VSUiAi Y29weV9jb250ZXh0X3NrYXMwIC0gc3R1Yi1wYXJlbnQgcmVwb3J0cyAiIAo+ID4+Pj4+IGRpZmYg LS1naXQgYS9hcmNoL3VtL29zLUxpbnV4L3RpbWUuYyBiL2FyY2gvdW0vb3MtTGludXgvdGltZS5j IAo+ID4+Pj4+IGluZGV4IGU5ODI0ZDUuLjVhN2Y0OWMgMTAwNjQ0IAo+ID4+Pj4+IC0tLSBhL2Fy Y2gvdW0vb3MtTGludXgvdGltZS5jIAo+ID4+Pj4+ICsrKyBiL2FyY2gvdW0vb3MtTGludXgvdGlt ZS5jIAo+ID4+Pj4+IEBAIC0xLDQgKzEsNSBAQCAKPiA+Pj4+PiAvKiAKPiA+Pj4+PiArICogQ29w eXJpZ2h0IChDKSAyMDEyLTIwMTQgQ2lzY28gU3lzdGVtcyAKPiA+Pj4+PsKgwqDCoMKgICogQ29w eXJpZ2h0IChDKSAyMDAwIC0gMjAwNyBKZWZmIERpa2UgKGpkaWtle2FkZHRvaXQsbGludXguaW50 ZWx9LmNvbSkgCj4gPj4+Pj7CoMKgwqDCoCAqIExpY2Vuc2VkIHVuZGVyIHRoZSBHUEwgCj4gPj4+ Pj7CoMKgwqDCoCAqLyAKPiA+Pj4+PiBAQCAtMTAsMTc3ICsxMSwxNzcgQEAgCj4gPj4+Pj4gI2lu Y2x1ZGUgPHN5cy90aW1lLmg+IAo+ID4+Pj4+ICNpbmNsdWRlIDxrZXJuX3V0aWwuaD4gCj4gPj4+ Pj4gI2luY2x1ZGUgPG9zLmg+IAo+ID4+Pj4+IC0jaW5jbHVkZSAiaW50ZXJuYWwuaCIgCj4gPj4+ Pj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4gCj4gPj4+Pj4gKyNpbmNsdWRlIDx0aW1lci1pbnRlcm5h bC5oPiAKPiA+Pj4+PiAKPiA+Pj4+PiAtaW50IHNldF9pbnRlcnZhbCh2b2lkKSAKPiA+Pj4+PiAt eyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGludCB1c2VjID0gVU1fVVNFQ19QRVJfU0VDIC8gVU1f SFo7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgc3RydWN0IGl0aW1lcnZhbCBpbnRlcnZhbCA9ICgo c3RydWN0IGl0aW1lcnZhbCkgeyB7IDAsIHVzZWMgfSwgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeyAwLCB1c2VjIH0gfSk7 IAo+ID4+Pj4+IC0gCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBpZiAoc2V0aXRpbWVyKElUSU1FUl9W SVJUVUFMLCAmaW50ZXJ2YWwsIE5VTEwpID09IC0xKSAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gLWVycm5vOyAKPiA+Pj4+PiArc3RhdGljIHRpbWVyX3QgZXZl bnRfaGlnaF9yZXNfdGltZXIgPSAwOyAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIHJl dHVybiAwOyAKPiA+Pj4+PiArc3RhdGljIGlubGluZSBsb25nIGxvbmcgdGltZXZhbF90b19ucyhj b25zdCBzdHJ1Y3QgdGltZXZhbCAqdHYpIAo+ID4+Pj4+ICt7IAo+ID4+Pj4+ICvCoMKgwqDCoMKg wqAgcmV0dXJuICgobG9uZyBsb25nKSB0di0+dHZfc2VjICogVU1fTlNFQ19QRVJfU0VDKSArIAo+ ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR2LT50dl91c2VjICogVU1fTlNF Q19QRVJfVVNFQzsgCj4gPj4+Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+PiAtaW50IHRpbWVyX29uZV9z aG90KGludCB0aWNrcykgCj4gPj4+Pj4gK3N0YXRpYyBpbmxpbmUgbG9uZyBsb25nIHRpbWVzcGVj X3RvX25zKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqdHMpIAo+ID4+Pj4+IHsgCj4gPj4+Pj4gLcKg wqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHVzZWMgPSB0aWNrcyAqIFVNX1VTRUNfUEVSX1NFQyAv IFVNX0haOyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgc2VjID0gdXNlYyAv IFVNX1VTRUNfUEVSX1NFQzsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3QgaXRpbWVydmFs IGludGVydmFsOyAKPiA+Pj4+PiAtIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgdXNlYyAlPSBVTV9V U0VDX1BFUl9TRUM7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgaW50ZXJ2YWwgPSAoKHN0cnVjdCBp dGltZXJ2YWwpIHsgeyAwLCAwIH0sIHsgc2VjLCB1c2VjIH0gfSk7IAo+ID4+Pj4+ICvCoMKgwqDC oMKgwqAgcmV0dXJuICgobG9uZyBsb25nKSB0cy0+dHZfc2VjICogVU1fTlNFQ19QRVJfU0VDKSAr IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRzLT50dl9uc2VjOyAKPiA+ Pj4+PiArfSAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGlmIChzZXRpdGltZXIoSVRJ TUVSX1ZJUlRVQUwsICZpbnRlcnZhbCwgTlVMTCkgPT0gLTEpIAo+ID4+Pj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtZXJybm87IAo+ID4+Pj4+ICtsb25nIGxvbmcgb3Nf cGVyc2lzdGVudF9jbG9ja19lbXVsYXRpb24gKHZvaWQpIHsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDC oCBzdHJ1Y3QgdGltZXNwZWMgcmVhbHRpbWVfdHA7IAo+ID4+Pj4+IAo+ID4+Pj4+IC3CoMKgwqDC oMKgwqAgcmV0dXJuIDA7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgY2xvY2tfZ2V0dGltZShDTE9D S19SRUFMVElNRSwgJnJlYWx0aW1lX3RwKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCByZXR1cm4g dGltZXNwZWNfdG9fbnMoJnJlYWx0aW1lX3RwKTsgCj4gPj4+Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+ PiAvKiogCj4gPj4+Pj4gLSAqIHRpbWV2YWxfdG9fbnMgLSBDb252ZXJ0IHRpbWV2YWwgdG8gbmFu b3NlY29uZHMgCj4gPj4+Pj4gLSAqIEB0czrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cG9pbnRlciB0byB0aGUgdGltZXZhbCB2YXJpYWJsZSB0byBiZSBjb252ZXJ0ZWQgCj4gPj4+Pj4g LSAqIAo+ID4+Pj4+IC0gKiBSZXR1cm5zIHRoZSBzY2FsYXIgbmFub3NlY29uZCByZXByZXNlbnRh dGlvbiBvZiB0aGUgdGltZXZhbCAKPiA+Pj4+PiAtICogcGFyYW1ldGVyLiAKPiA+Pj4+PiAtICog Cj4gPj4+Pj4gLSAqIFJpcHBlZCBmcm9tIGxpbnV4L3RpbWUuaCBiZWNhdXNlIGl0J3MgYSBrZXJu ZWwgaGVhZGVyLCBhbmQgdGh1cyAKPiA+Pj4+PiAtICogdW51c2FibGUgZnJvbSBoZXJlLiAKPiA+ Pj4+PiArICogb3NfdGltZXJfY3JlYXRlKCkgLSBjcmVhdGUgYW4gbmV3IHBvc2l4IChpbnRlcnZh bCkgdGltZXIgCj4gPj4+Pj7CoMKgwqDCoCAqLyAKPiA+Pj4+PiAtc3RhdGljIGlubGluZSBsb25n IGxvbmcgdGltZXZhbF90b19ucyhjb25zdCBzdHJ1Y3QgdGltZXZhbCAqdHYpIAo+ID4+Pj4+IC17 IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgcmV0dXJuICgobG9uZyBsb25nKSB0di0+dHZfc2VjICog VU1fTlNFQ19QRVJfU0VDKSArIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHR2LT50dl91c2VjICogVU1fTlNFQ19QRVJfVVNFQzsgCj4gPj4+Pj4gLX0gCj4gPj4+Pj4gK2lu dCBvc190aW1lcl9jcmVhdGUodm9pZCogdGltZXIpIHsgCj4gPj4+Pj4gCj4gPj4+Pj4gLWxvbmcg bG9uZyBkaXNhYmxlX3RpbWVyKHZvaWQpIAo+ID4+Pj4+IC17IAo+ID4+Pj4+IC3CoMKgwqDCoMKg wqAgc3RydWN0IGl0aW1lcnZhbCB0aW1lID0gKChzdHJ1Y3QgaXRpbWVydmFsKSB7IHsgMCwgMCB9 LCB7IDAsIDAgfSB9KTsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBsb25nIGxvbmcgcmVtYWluLCBt YXggPSBVTV9OU0VDX1BFUl9TRUMgLyBVTV9IWjsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBzdHJ1 Y3Qgc2lnZXZlbnQgc2V2OyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHRpbWVyX3QqIHQgPSB0aW1l cjsgCj4gPj4+Pj4gCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBpZiAoc2V0aXRpbWVyKElUSU1FUl9W SVJUVUFMLCAmdGltZSwgJnRpbWUpIDwgMCkgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcHJpbnRrKFVNX0tFUk5fRVJSICJkaXNhYmxlX3RpbWVyIC0gc2V0aXRpbWVyIGZh aWxlZCwgIiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJlcnJubyA9ICVkXG4iLCBlcnJubyk7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgaWYodCA9 PSBOVUxMKSB7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHQgPSAmZXZl bnRfaGlnaF9yZXNfdGltZXI7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgfSAKPiA+Pj4+PiAKPiA+ Pj4+PiAtwqDCoMKgwqDCoMKgIHJlbWFpbiA9IHRpbWV2YWxfdG9fbnMoJnRpbWUuaXRfdmFsdWUp OyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGlmIChyZW1haW4gPiBtYXgpIAo+ID4+Pj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlbWFpbiA9IG1heDsgCj4gPj4+Pj4gK8KgwqDCoMKg wqDCoCBzZXYuc2lnZXZfbm90aWZ5ID0gU0lHRVZfU0lHTkFMOyAKPiA+Pj4+PiArwqDCoMKgwqDC oMKgIHNldi5zaWdldl9zaWdubyA9IFNJR1VTUjI7IC8qIG5vdGUgLSBocnRpbWVyIG5vdyBoYXMg aXRzIG93biBzaWduYWwgKi8gCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBzZXYuc2lnZXZfdmFsdWUu c2l2YWxfcHRyID0gJmV2ZW50X2hpZ2hfcmVzX3RpbWVyOyAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDC oMKgwqDCoMKgIHJldHVybiByZW1haW47IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgaWYgKHRpbWVy X2NyZWF0ZSggCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0xPQ0tfTU9O T1RPTklDLCAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc2V2LCAKPiA+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0KSA9PSAtMSkgeyAKPiA+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7IAo+ID4+Pj4+ICvCoMKgwqDC oMKgwqAgfSAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHJldHVybiAwOyAKPiA+Pj4+PiB9IAo+ID4+ Pj4+IAo+ID4+Pj4+IC1sb25nIGxvbmcgb3NfbnNlY3Modm9pZCkgCj4gPj4+Pj4gK2ludCBvc190 aW1lcl9zZXRfaW50ZXJ2YWwodm9pZCogdGltZXIsIHZvaWQqIGkpIAo+ID4+Pj4+IHsgCj4gPj4+ Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3QgdGltZXZhbCB0djsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDC oCBzdHJ1Y3QgaXRpbWVyc3BlYyBpdHM7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgdW5zaWduZWQg bG9uZyBsb25nIG5zZWM7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgdGltZXJfdCogdCA9IHRpbWVy OyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHN0cnVjdCBpdGltZXJzcGVjKiBpdHNfaW4gPSBpOyAK PiA+Pj4+PiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGdldHRpbWVvZmRheSgmdHYsIE5VTEwpOyAK PiA+Pj4+PiAtwqDCoMKgwqDCoMKgIHJldHVybiB0aW1ldmFsX3RvX25zKCZ0dik7IAo+ID4+Pj4+ IC19IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgaWYodCA9PSBOVUxMKSB7IAo+ID4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHQgPSAmZXZlbnRfaGlnaF9yZXNfdGltZXI7IAo+ID4+ Pj4+ICvCoMKgwqDCoMKgwqAgfSAKPiA+Pj4+PiArIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgbnNl YyA9IFVNX05TRUNfUEVSX1NFQyAvIFVNX0haOyAKPiA+Pj4+PiArIAo+ID4+Pj4+ICvCoMKgwqDC oMKgwqAgaWYoaXRzX2luICE9IE5VTEwpIHsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaXRzLml0X3ZhbHVlLnR2X3NlYyA9IGl0c19pbi0+aXRfdmFsdWUudHZfc2VjOyAK PiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpdHMuaXRfdmFsdWUudHZfbnNl YyA9IGl0c19pbi0+aXRfdmFsdWUudHZfbnNlYzsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCB9IGVs c2UgeyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpdHMuaXRfdmFsdWUu dHZfc2VjID0gMDsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXRzLml0 X3ZhbHVlLnR2X25zZWMgPSBuc2VjOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIH0gCj4gPj4+Pj4g KyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGl0cy5pdF9pbnRlcnZhbC50dl9zZWMgPSAwOyAKPiA+ Pj4+PiArwqDCoMKgwqDCoMKgIGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gbnNlYzsgCj4gPj4+ Pj4gKyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGlmKHRpbWVyX3NldHRpbWUoKnQsIDAsICZpdHMs IE5VTEwpID09IC0xKSB7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiAtZXJybm87IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgfSAKPiA+Pj4+PiAKPiA+Pj4+PiAt I2lmZGVmIFVNTF9DT05GSUdfTk9fSFpfQ09NTU9OIAo+ID4+Pj4+IC1zdGF0aWMgaW50IGFmdGVy X3NsZWVwX2ludGVydmFsKHN0cnVjdCB0aW1lc3BlYyAqdHMpIAo+ID4+Pj4+IC17IAo+ID4+Pj4+ wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7IAo+ID4+Pj4+IH0gCj4gPj4+Pj4gCj4gPj4+ Pj4gLXN0YXRpYyB2b2lkIGRlbGl2ZXJfYWxhcm0odm9pZCkgCj4gPj4+Pj4gKy8qKiAKPiA+Pj4+ PiArICogb3NfdGltZXJfcmVtYWluKCkgLSByZXR1cm5zIHRoZSByZW1haW5pbmcgbmFubyBzZWNv bmRzIG9mIHRoZSBnaXZlbiBpbnRlcnZhbCAKPiA+Pj4+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRpbWVyIAo+ID4+Pj4+ICsgKiBCZWNhdXNlIHRoaXMgaXMg dGhlIHJlbWFpbmluZyB0aW1lIG9mIGFuIGludGVydmFsIHRpbWVyLCB3aGljaCBjb3JyZXNwb25k ZW5kcyAKPiA+Pj4+PiArICogdG8gSFosIHRoaXMgdmFsdWUgY2FuIG5ldmVyIGJlIGJpZ2dlciB0 aGFuIG9uZSBzZWNvbmQuIEp1c3QgCj4gPj4+Pj4gKyAqIHRoZSBuYW5vc2Vjb25kIHBhcnQgb2Yg dGhlIHRpbWVyIGlzIHJldHVybmVkLiAKPiA+Pj4+PiArICogVGhlIHJldHVybmVkIHRpbWUgaXMg cmVsYXRpdmUgdG8gdGhlIHN0YXJ0IHRpbWUgb2YgdGhlIGludGVydmFsIHRpbWVyLiAKPiA+Pj4+ PiArICogUmV0dXJuIGFuIG5lZ2F0aXZlIHZhbHVlIGluIGFuIGVycm9yIGNhc2UuIAo+ID4+Pj4+ ICsgKi8gCj4gPj4+Pj4gK2xvbmcgb3NfdGltZXJfcmVtYWluKHZvaWQqIHRpbWVyKSAKPiA+Pj4+ PiB7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgYWxhcm1faGFuZGxlcihTSUdWVEFMUk0sIE5VTEws IE5VTEwpOyAKPiA+Pj4+PiAtfSAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHN0cnVjdCBpdGltZXJz cGVjIGl0czsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCB0aW1lcl90KiB0ID0gdGltZXI7IAo+ID4+ Pj4+IAo+ID4+Pj4+IC1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHNsZWVwX3RpbWUodW5zaWdu ZWQgbG9uZyBsb25nIG5zZWNzKSAKPiA+Pj4+PiAteyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIHJl dHVybiBuc2VjczsgCj4gPj4+Pj4gLX0gCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBpZih0ID09IE5V TEwpIHsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdCA9ICZldmVudF9o aWdoX3Jlc190aW1lcjsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCB9IAo+ID4+Pj4+IAo+ID4+Pj4+ IC0jZWxzZSAKPiA+Pj4+PiAtdW5zaWduZWQgbG9uZyBsb25nIGxhc3RfdGljazsgCj4gPj4+Pj4g LXVuc2lnbmVkIGxvbmcgbG9uZyBza2V3OyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIGlmKHRpbWVy X2dldHRpbWUodCwgJml0cykgPT0gLTEpIHsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1lcnJubzsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCB9IAo+ID4+Pj4+ IAo+ID4+Pj4+IC1zdGF0aWMgdm9pZCBkZWxpdmVyX2FsYXJtKHZvaWQpIAo+ID4+Pj4+IC17IAo+ ID4+Pj4+IC3CoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBsb25nIHRoaXNfdGljayA9IG9zX25z ZWNzKCk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgaW50IG9uZV90aWNrID0gVU1fTlNFQ19QRVJf U0VDIC8gVU1fSFo7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIGl0cy5pdF92YWx1ZS50 dl9uc2VjOyAKPiA+Pj4+PiArfSAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIC8qIFBy b3RlY3Rpb24gYWdhaW5zdCB0aGUgaG9zdCdzIHRpbWUgZ29pbmcgYmFja3dhcmRzICovIAo+ID4+ Pj4+IC3CoMKgwqDCoMKgwqAgaWYgKChsYXN0X3RpY2sgIT0gMCkgJiYgKHRoaXNfdGljayA8IGxh c3RfdGljaykpIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRoaXNfdGlj ayA9IGxhc3RfdGljazsgCj4gPj4+Pj4gK2ludCBvc190aW1lcl9vbmVfc2hvdChpbnQgdGlja3Mp IAo+ID4+Pj4+ICt7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgc3RydWN0IGl0aW1lcnNwZWMgaXRz OyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgbG9uZyBuc2VjOyAKPiA+Pj4+ PiArwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgc2VjOyAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDC oMKgwqDCoMKgIGlmIChsYXN0X3RpY2sgPT0gMCkgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbGFzdF90aWNrID0gdGhpc190aWNrIC0gb25lX3RpY2s7IAo+ID4+Pj4+ICvC oMKgwqAgbnNlYyA9ICh0aWNrcyArIDEpOyAKPiA+Pj4+PiArwqDCoMKgIHNlYyA9IG5zZWMgLyBV TV9OU0VDX1BFUl9TRUM7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgbnNlYyA9IG5zZWMgJSBVTV9O U0VDX1BFUl9TRUM7IAo+ID4+Pj4+IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgc2tldyArPSB0aGlz X3RpY2sgLSBsYXN0X3RpY2s7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgaXRzLml0X3ZhbHVlLnR2 X3NlYyA9IG5zZWMgLyBVTV9OU0VDX1BFUl9TRUM7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgaXRz Lml0X3ZhbHVlLnR2X25zZWMgPSBuc2VjOyAKPiA+Pj4+PiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKg IHdoaWxlIChza2V3ID49IG9uZV90aWNrKSB7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFsYXJtX2hhbmRsZXIoU0lHVlRBTFJNLCBOVUxMLCBOVUxMKTsgCj4gPj4+Pj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2tldyAtPSBvbmVfdGljazsgCj4gPj4+Pj4g LcKgwqDCoMKgwqDCoCB9IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgaXRzLml0X2ludGVydmFsLnR2 X3NlYyA9IDA7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgaXRzLml0X2ludGVydmFsLnR2X25zZWMg PSAwOyAvLyB3ZSBjaGVhdCBoZXJlIAo+ID4+Pj4+IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgbGFz dF90aWNrID0gdGhpc190aWNrOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHRpbWVyX3NldHRpbWUo ZXZlbnRfaGlnaF9yZXNfdGltZXIsIDAsICZpdHMsIE5VTEwpOyAKPiA+Pj4+PiArwqDCoMKgwqDC oMKgIHJldHVybiAwOyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IAo+ID4+Pj4+IC1zdGF0aWMgdW5zaWdu ZWQgbG9uZyBsb25nIHNsZWVwX3RpbWUodW5zaWduZWQgbG9uZyBsb25nIG5zZWNzKSAKPiA+Pj4+ PiArLyoqIAo+ID4+Pj4+ICsgKiBvc190aW1lcl9kaXNhYmxlKCkgLSBkaXNhYmxlIHRoZSBwb3Np eCAoaW50ZXJ2YWwpIHRpbWVyIAo+ID4+Pj4+ICsgKiBSZXR1cm5zIHRoZSByZW1haW5pbmcgaW50 ZXJ2YWwgdGltZXIgdGltZSBpbiBuYW5vc2Vjb25kcyAKPiA+Pj4+PiArICovIAo+ID4+Pj4+ICts b25nIGxvbmcgb3NfdGltZXJfZGlzYWJsZSh2b2lkKSAKPiA+Pj4+PiB7IAo+ID4+Pj4+IC3CoMKg wqDCoMKgwqAgcmV0dXJuIG5zZWNzID4gc2tldyA/IG5zZWNzIC0gc2tldyA6IDA7IAo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqAgc3RydWN0IGl0aW1lcnNwZWMgaXRzOyAKPiA+Pj4+PiArIAo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqAgbWVtc2V0KCZpdHMsIDAsIHNpemVvZihzdHJ1Y3QgaXRpbWVyc3BlYykp OyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHRpbWVyX3NldHRpbWUoZXZlbnRfaGlnaF9yZXNfdGlt ZXIsIDAsICZpdHMsICZpdHMpOyAKPiA+Pj4+PiArIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgcmV0 dXJuIGl0cy5pdF92YWx1ZS50dl9zZWMgKiBVTV9OU0VDX1BFUl9TRUMgKyBpdHMuaXRfdmFsdWUu dHZfbnNlYzsgCj4gPj4+Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+PiAtc3RhdGljIGlubGluZSBsb25n IGxvbmcgdGltZXNwZWNfdG9fdXMoY29uc3Qgc3RydWN0IHRpbWVzcGVjICp0cykgCj4gPj4+Pj4g K2xvbmcgbG9uZyBvc192bnNlY3Modm9pZCkgCj4gPj4+Pj4geyAKPiA+Pj4+PiAtwqDCoMKgwqDC oMKgIHJldHVybiAoKGxvbmcgbG9uZykgdHMtPnR2X3NlYyAqIFVNX1VTRUNfUEVSX1NFQykgKyAK PiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cy0+dHZfbnNlYyAvIFVNX05T RUNfUEVSX1VTRUM7IAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgc3RydWN0IHRpbWVzcGVjIHRzOyAK PiA+Pj4+PiArIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgY2xvY2tfZ2V0dGltZShDTE9DS19QUk9D RVNTX0NQVVRJTUVfSUQsJnRzKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gdGltZXNw ZWNfdG9fbnMoJnRzKTsgCj4gPj4+Pj4gfSAKPiA+Pj4+PiAKPiA+Pj4+PiAtc3RhdGljIGludCBh ZnRlcl9zbGVlcF9pbnRlcnZhbChzdHJ1Y3QgdGltZXNwZWMgKnRzKSAKPiA+Pj4+PiArbG9uZyBs b25nIG9zX25zZWNzKHZvaWQpIAo+ID4+Pj4+IHsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBpbnQg dXNlYyA9IFVNX1VTRUNfUEVSX1NFQyAvIFVNX0haOyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGxv bmcgbG9uZyBzdGFydF91c2VjcyA9IHRpbWVzcGVjX3RvX3VzKHRzKTsgCj4gPj4+Pj4gLcKgwqDC oMKgwqDCoCBzdHJ1Y3QgdGltZXZhbCB0djsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3Qg aXRpbWVydmFsIGludGVydmFsOyAKPiA+Pj4+PiAtIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgLyog Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgICogSXQgc2VlbXMgdGhhdCByb3VuZGluZyBjYW4gaW5j cmVhc2UgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgICog c2V0aXRpbWVyIHRvIGxhcmdlciB0aGFuIHRoZSBvbmUgcGFzc2VkIGluLsKgIE92ZXIgdGltZSwg Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgICogdGhpcyB3aWxsIGNhdXNlIHRoZSByZW1haW5pbmcg dGltZSB0byBiZSBncmVhdGVyIHRoYW4gdGhlIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoCAqIHRp Y2sgaW50ZXJ2YWwuwqAgSWYgdGhpcyBoYXBwZW5zLCB0aGVuIGp1c3QgcmVkdWNlIHRoZSBmaXJz dCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgKiB0aWNrIHRvIHRoZSBpbnRlcnZhbCB2YWx1ZS4g Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgICovIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgaWYgKHN0 YXJ0X3VzZWNzID4gdXNlYykgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RhcnRfdXNlY3MgPSB1c2VjOyAKPiA+Pj4+PiAtIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgc3Rh cnRfdXNlY3MgLT0gc2tldyAvIFVNX05TRUNfUEVSX1VTRUM7IAo+ID4+Pj4+IC3CoMKgwqDCoMKg wqAgaWYgKHN0YXJ0X3VzZWNzIDwgMCkgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RhcnRfdXNlY3MgPSAwOyAKPiA+Pj4+PiAtIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAg dHYgPSAoKHN0cnVjdCB0aW1ldmFsKSB7IC50dl9zZWPCoCA9IHN0YXJ0X3VzZWNzIC8gVU1fVVNF Q19QRVJfU0VDLCAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnR2X3VzZWMgPSBzdGFydF91c2VjcyAlIFVNX1VT RUNfUEVSX1NFQyB9KTsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBpbnRlcnZhbCA9ICgoc3RydWN0 IGl0aW1lcnZhbCkgeyB7IDAsIHVzZWMgfSwgdHYgfSk7IAo+ID4+Pj4+IC0gCj4gPj4+Pj4gLcKg wqDCoMKgwqDCoCBpZiAoc2V0aXRpbWVyKElUSU1FUl9WSVJUVUFMLCAmaW50ZXJ2YWwsIE5VTEwp ID09IC0xKSAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLWVy cm5vOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgIHN0cnVjdCB0aW1lc3BlYyB0czsgCj4gPj4+Pj4g Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCByZXR1cm4gMDsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBj bG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywmdHMpOyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKg IHJldHVybiB0aW1lc3BlY190b19ucygmdHMpOyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IC0jZW5kaWYg Cj4gPj4+Pj4gCj4gPj4+Pj4gLXZvaWQgaWRsZV9zbGVlcCh1bnNpZ25lZCBsb25nIGxvbmcgbnNl Y3MpIAo+ID4+Pj4+ICsvKiogCj4gPj4+Pj4gKyAqIG9zX2lkbGVfc2xlZXAoKSAtIHNsZWVwIGZv ciBhIGdpdmVuIHRpbWUgb2YgbnNlY3MgCj4gPj4+Pj4gKyAqIEBuc2VjczogbmFub3NlY29uZHMg dG8gc2xlZXAgCj4gPj4+Pj4gKyAqLyAKPiA+Pj4+PiArdm9pZCBvc19pZGxlX3NsZWVwKHVuc2ln bmVkIGxvbmcgbG9uZyBuc2VjcykgCj4gPj4+Pj4geyAKPiA+Pj4+PsKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCB0aW1lc3BlYyB0czsgCj4gPj4+Pj4gCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCAv KiAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgKiBuc2VjcyBjYW4gY29tZSBpbiBhcyB6ZXJvLCBp biB3aGljaCBjYXNlLCB0aGlzIHN0YXJ0cyBhIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoCAqIGJ1 c3kgbG9vcC7CoCBUbyBwcmV2ZW50IHRoaXMsIHJlc2V0IG5zZWNzIHRvIHRoZSB0aWNrIAo+ID4+ Pj4+IC3CoMKgwqDCoMKgwqDCoCAqIGludGVydmFsIGlmIGl0IGlzIHplcm8uIAo+ID4+Pj4+IC3C oMKgwqDCoMKgwqDCoCAqLyAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgIGlmIChuc2VjcyA9PSAwKSAK PiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuc2VjcyA9IFVNX05TRUNfUEVS X1NFQyAvIFVNX0haOyAKPiA+Pj4+PiAtIAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgbnNlY3MgPSBz bGVlcF90aW1lKG5zZWNzKTsgCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCB0cyA9ICgoc3RydWN0IHRp bWVzcGVjKSB7IC50dl9zZWPCoMKgwqDCoMKgwqAgPSBuc2VjcyAvIFVNX05TRUNfUEVSX1NFQywg Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLnR2X25zZWPCoMKgwqDCoMKgID0gbnNlY3MgJSBVTV9OU0VDX1BF Ul9TRUMgfSk7IAo+ID4+Pj4+IC0gCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoCBpZiAobmFub3NsZWVw KCZ0cywgJnRzKSA9PSAwKSAKPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk ZWxpdmVyX2FsYXJtKCk7IAo+ID4+Pj4+IC3CoMKgwqDCoMKgwqAgYWZ0ZXJfc2xlZXBfaW50ZXJ2 YWwoJnRzKTsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBpZiAobnNlY3MgPD0gMCkgeyAKPiA+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47IAo+ID4+Pj4+ICvCoMKgwqDC oMKgwqAgfSAKPiA+Pj4+PiArIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgdHMgPSAoKHN0cnVjdCB0 aW1lc3BlYykgeyAKPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLnR2X3NlY8KgID0gbnNlY3MgLyBVTV9OU0VDX1BFUl9TRUMsIAo+ID4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAudHZfbnNlYyA9IG5z ZWNzICUgVU1fTlNFQ19QRVJfU0VDIAo+ID4+Pj4+ICvCoMKgwqDCoMKgwqAgfSk7IAo+ID4+Pj4+ ICsgCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoCBjbG9ja19uYW5vc2xlZXAoQ0xPQ0tfTU9OT1RPTklD LCAwLCAmdHMsIE5VTEwpOyAKPiA+Pj4+PiB9IAo+ID4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Vt L29zLUxpbnV4L3V0aWwuYyBiL2FyY2gvdW0vb3MtTGludXgvdXRpbC5jIAo+ID4+Pj4+IGluZGV4 IGZhZWU1NWUuLjEwZWNjMDYgMTAwNjQ0IAo+ID4+Pj4+IC0tLSBhL2FyY2gvdW0vb3MtTGludXgv dXRpbC5jIAo+ID4+Pj4+ICsrKyBiL2FyY2gvdW0vb3MtTGludXgvdXRpbC5jIAo+ID4+Pj4+IEBA IC0xMDIsNiArMTAyLDcgQEAgdm9pZCBvc19maXhfaGVscGVyX3NpZ25hbHModm9pZCkgCj4gPj4+ Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoCBzaWduYWwoU0lHV0lOQ0gsIFNJR19JR04pOyAKPiA+Pj4+ PsKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpZ25hbChTSUdJTlQsIFNJR19ERkwpOyAKPiA+Pj4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgIHNpZ25hbChTSUdURVJNLCBTSUdfREZMKTsgCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoCBzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7IAo+ID4+Pj4+IH0gCj4gPj4+Pj4g Cj4gPj4+Pj4gdm9pZCBvc19kdW1wX2NvcmUodm9pZCkgCj4gPj4+Pj4gCj4gPj4+Pj4gCj4gPj4+ Pj4gCj4gPj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAo+ID4+Pj4+IE9uZSBkYXNoYm9hcmQg Zm9yIHNlcnZlcnMgYW5kIGFwcGxpY2F0aW9ucyBhY3Jvc3MgUGh5c2ljYWwtVmlydHVhbC1DbG91 ZCAKPiA+Pj4+PiBXaWRlc3Qgb3V0LW9mLXRoZS1ib3ggbW9uaXRvcmluZyBzdXBwb3J0IHdpdGgg NTArIGFwcGxpY2F0aW9ucyAKPiA+Pj4+PiBQZXJmb3JtYW5jZSBtZXRyaWNzLCBzdGF0cyBhbmQg cmVwb3J0cyB0aGF0IGdpdmUgeW91IEFjdGlvbmFibGUgSW5zaWdodHMgCj4gPj4+Pj4gRGVlcCBk aXZlIHZpc2liaWxpdHkgd2l0aCB0cmFuc2FjdGlvbiB0cmFjaW5nIHVzaW5nIEFQTSBJbnNpZ2h0 LiAKPiA+Pj4+PiBodHRwOi8vYWQuZG91YmxlY2xpY2submV0L2RkbS9jbGsvMjkwNDIwNTEwOzEx NzU2NzI5Mjt5IAo+ID4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fIAo+ID4+Pj4+IFVzZXItbW9kZS1saW51eC1kZXZlbCBtYWlsaW5nIGxpc3QgCj4g Pj4+Pj4gVXNlci1tb2RlLWxpbnV4LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCAKPiA+Pj4+ PiBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby91c2VyLW1vZGUt bGludXgtZGV2ZWwgCj4gPj4+PiAtLSAKPiA+Pj4+IFRoYW5rcywgCj4gPj4+PiAvL3JpY2hhcmQg Cj4gPj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKPiA+Pj4gT25lIGRhc2hib2FyZCBmb3Igc2Vy dmVycyBhbmQgYXBwbGljYXRpb25zIGFjcm9zcyBQaHlzaWNhbC1WaXJ0dWFsLUNsb3VkIAo+ID4+ PiBXaWRlc3Qgb3V0LW9mLXRoZS1ib3ggbW9uaXRvcmluZyBzdXBwb3J0IHdpdGggNTArIGFwcGxp Y2F0aW9ucyAKPiA+Pj4gUGVyZm9ybWFuY2UgbWV0cmljcywgc3RhdHMgYW5kIHJlcG9ydHMgdGhh dCBnaXZlIHlvdSBBY3Rpb25hYmxlIEluc2lnaHRzIAo+ID4+PiBEZWVwIGRpdmUgdmlzaWJpbGl0 eSB3aXRoIHRyYW5zYWN0aW9uIHRyYWNpbmcgdXNpbmcgQVBNIEluc2lnaHQuIAo+ID4+PiBodHRw Oi8vYWQuZG91YmxlY2xpY2submV0L2RkbS9jbGsvMjkwNDIwNTEwOzExNzU2NzI5Mjt5IAo+ID4+ PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAKPiA+Pj4g VXNlci1tb2RlLWxpbnV4LWRldmVsIG1haWxpbmcgbGlzdCAKPiA+Pj4gVXNlci1tb2RlLWxpbnV4 LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCAKPiA+Pj4gaHR0cHM6Ly9saXN0cy5zb3VyY2Vm b3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vdXNlci1tb2RlLWxpbnV4LWRldmVsIAo+ID4+PiAKPiA+ PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCj4gPj4gT25lIGRhc2hib2FyZCBmb3Igc2VydmVycyBh bmQgYXBwbGljYXRpb25zIGFjcm9zcyBQaHlzaWNhbC1WaXJ0dWFsLUNsb3VkIAo+ID4+IFdpZGVz dCBvdXQtb2YtdGhlLWJveCBtb25pdG9yaW5nIHN1cHBvcnQgd2l0aCA1MCsgYXBwbGljYXRpb25z IAo+ID4+IFBlcmZvcm1hbmNlIG1ldHJpY3MsIHN0YXRzIGFuZCByZXBvcnRzIHRoYXQgZ2l2ZSB5 b3UgQWN0aW9uYWJsZSBJbnNpZ2h0cyAKPiA+PiBEZWVwIGRpdmUgdmlzaWJpbGl0eSB3aXRoIHRy YW5zYWN0aW9uIHRyYWNpbmcgdXNpbmcgQVBNIEluc2lnaHQuIAo+ID4+IGh0dHA6Ly9hZC5kb3Vi bGVjbGljay5uZXQvZGRtL2Nsay8yOTA0MjA1MTA7MTE3NTY3MjkyO3kgCj4gPj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gCj4gPj4gVXNlci1tb2RlLWxp bnV4LWRldmVsIG1haWxpbmcgbGlzdCAKPiA+PiBVc2VyLW1vZGUtbGludXgtZGV2ZWxAbGlzdHMu c291cmNlZm9yZ2UubmV0IAo+ID4+IGh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3Rz L2xpc3RpbmZvL3VzZXItbW9kZS1saW51eC1kZXZlbCAKPiA+PiAKPiA+IAo+ID4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIAo+ID4gT25lIGRhc2hib2FyZCBmb3Igc2VydmVycyBhbmQgYXBwbGljYXRp b25zIGFjcm9zcyBQaHlzaWNhbC1WaXJ0dWFsLUNsb3VkIAo+ID4gV2lkZXN0IG91dC1vZi10aGUt Ym94IG1vbml0b3Jpbmcgc3VwcG9ydCB3aXRoIDUwKyBhcHBsaWNhdGlvbnMgCj4gPiBQZXJmb3Jt YW5jZSBtZXRyaWNzLCBzdGF0cyBhbmQgcmVwb3J0cyB0aGF0IGdpdmUgeW91IEFjdGlvbmFibGUg SW5zaWdodHMgCj4gPiBEZWVwIGRpdmUgdmlzaWJpbGl0eSB3aXRoIHRyYW5zYWN0aW9uIHRyYWNp bmcgdXNpbmcgQVBNIEluc2lnaHQuIAo+ID4gaHR0cDovL2FkLmRvdWJsZWNsaWNrLm5ldC9kZG0v Y2xrLzI5MDQyMDUxMDsxMTc1NjcyOTI7eSAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fIAo+ID4gVXNlci1tb2RlLWxpbnV4LWRldmVsIG1haWxpbmcg bGlzdCAKPiA+IFVzZXItbW9kZS1saW51eC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgCj4g PiBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby91c2VyLW1vZGUt bGludXgtZGV2ZWwgCj4gPiAKPgo+Cj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAo+IE9uZSBkYXNo Ym9hcmQgZm9yIHNlcnZlcnMgYW5kIGFwcGxpY2F0aW9ucyBhY3Jvc3MgUGh5c2ljYWwtVmlydHVh bC1DbG91ZCAKPiBXaWRlc3Qgb3V0LW9mLXRoZS1ib3ggbW9uaXRvcmluZyBzdXBwb3J0IHdpdGgg NTArIGFwcGxpY2F0aW9ucyAKPiBQZXJmb3JtYW5jZSBtZXRyaWNzLCBzdGF0cyBhbmQgcmVwb3J0 cyB0aGF0IGdpdmUgeW91IEFjdGlvbmFibGUgSW5zaWdodHMgCj4gRGVlcCBkaXZlIHZpc2liaWxp dHkgd2l0aCB0cmFuc2FjdGlvbiB0cmFjaW5nIHVzaW5nIEFQTSBJbnNpZ2h0LiAKPiBodHRwOi8v YWQuZG91YmxlY2xpY2submV0L2RkbS9jbGsvMjkwNDIwNTEwOzExNzU2NzI5Mjt5IAo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIAo+IFVzZXItbW9kZS1s aW51eC1kZXZlbCBtYWlsaW5nIGxpc3QgCj4gVXNlci1tb2RlLWxpbnV4LWRldmVsQGxpc3RzLnNv dXJjZWZvcmdlLm5ldCAKPiBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0 aW5mby91c2VyLW1vZGUtbGludXgtZGV2ZWwgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpPbmUgZGFz aGJvYXJkIGZvciBzZXJ2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgYWNyb3NzIFBoeXNpY2FsLVZpcnR1 YWwtQ2xvdWQgCldpZGVzdCBvdXQtb2YtdGhlLWJveCBtb25pdG9yaW5nIHN1cHBvcnQgd2l0aCA1 MCsgYXBwbGljYXRpb25zClBlcmZvcm1hbmNlIG1ldHJpY3MsIHN0YXRzIGFuZCByZXBvcnRzIHRo YXQgZ2l2ZSB5b3UgQWN0aW9uYWJsZSBJbnNpZ2h0cwpEZWVwIGRpdmUgdmlzaWJpbGl0eSB3aXRo IHRyYW5zYWN0aW9uIHRyYWNpbmcgdXNpbmcgQVBNIEluc2lnaHQuCmh0dHA6Ly9hZC5kb3VibGVj bGljay5uZXQvZGRtL2Nsay8yOTA0MjA1MTA7MTE3NTY3MjkyO3kKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVXNlci1tb2RlLWxpbnV4LWRldmVsIG1haWxp bmcgbGlzdApVc2VyLW1vZGUtbGludXgtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBz Oi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3VzZXItbW9kZS1saW51eC1k ZXZlbAo=