From mint-bounce@lists.fishpool.fi Mon Jan 11 14:50:07 2010 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=Qe2SwHJtI/zQ+isHzGKxJ9qMwlEzc4i0AEZZHhcFaQM=; b=HyavyKUzNDvYQ0UhY+1LXciZdU1o/XX7NnxaSjGIH6S+/3ZDTHThKuqB5camsKIHlj hErokHd1s10QCeRQlcpLY51EySXvU/gdP0UVvGgyVM31fAnV93IXrNuE29d6/rve0hKX z3RXIMy5dlgeQuPZhzQ0xdIAD0NSW0LRc+UQM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=iLS2/1d8l0XyXMdEhUol5fLP0jTtsuzlfuxkaO9OSnh1eIVpcLDP+SOPvIduebL9/f Hj0Ob+z2ZIaINnLd2RD5W7g8x+N0ay1HEdN3yHE+pxAq34jw/0tu2x1ghiDt46vjYzT+ ll+gr3utsdNkohbdu93P66rhFXs8E7cJTSoNk= MIME-Version: 1.0 In-Reply-To: <4B4B7E78.9090703@freesbee.fr> References: <4B4B7E78.9090703@freesbee.fr> Date: Mon, 11 Jan 2010 20:47:36 +0100 Message-ID: Subject: Re: [MiNT] how to compile stik/sting stuff with gcc4 From: Miro Kropacek To: =?ISO-8859-1?Q?Vincent_Rivi=E8re?= Cc: mint@lists.fishpool.fi Content-Type: multipart/mixed; boundary=000325558ab624374b047ce8cf51 X-ecartis-version: Ecartis v1.0.0 Sender: mint-bounce@lists.fishpool.fi Errors-to: mint-bounce@lists.fishpool.fi X-original-sender: miro.kropacek@gmail.com Precedence: bulk List-help: List-unsubscribe: List-Id: X-List-ID: List-subscribe: List-owner: List-post: --000325558ab624374b047ce8cf51 Content-Type: multipart/alternative; boundary=000325558ab6243743047ce8cf4f --000325558ab6243743047ce8cf4f Content-Type: text/plain; charset=ISO-8859-1 > These errors are usually easy to fix. > Post it and we will see. > Thanks, let's hope so: inet.c: In function 'inet_send': inet.c:137: error: asm-specifier for variable 'retv' conflicts with asm clobber list inet.c: In function 'inet_recv': inet.c:154: error: asm-specifier for variable 'retv' conflicts with asm clobber list inet.c:154: error: asm-specifier for variable 'retv' conflicts with asm clobber list inet.c:164: error: asm-specifier for variable 'retv' conflicts with asm clobber list inet.c: In function 'inet_connect': inet.c:93: error: asm-specifier for variable 'retv' conflicts with asm clobber list inet.c: In function 'inet_close': inet.c:46: error: asm-specifier for variable 'retv' conflicts with asm clobber list inet.c: In function 'inet_host_addr': inet.c:61: error: asm-specifier for variable 'retv' conflicts with asm clobber list I attached inet.c and transprt.h, as you can see, trouble is function STinG_wf_wpw and friends, in my eyes it seems quite similar to what we use in mintlib. Hopefully you'll see some easy way how to fix it. -- MiKRO / Mystic Bytes http://mikro.atari.org --000325558ab6243743047ce8cf4f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable =A0
These errors are usually easy to fix.
Post it and we will see.
Thanks, let's hope so:
inet.c: In function 'inet_send':
inet.c:137: = error: asm-specifier for variable 'retv' conflicts with asm clobber= list
inet.c: In function 'inet_recv':
inet.c:154: error: asm-specifie= r for variable 'retv' conflicts with asm clobber list
inet.c:154= : error: asm-specifier for variable 'retv' conflicts with asm clobb= er list
inet.c:164: error: asm-specifier for variable 'retv' conflicts with= asm clobber list
inet.c: In function 'inet_connect':
inet.c:= 93: error: asm-specifier for variable 'retv' conflicts with asm clo= bber list
inet.c: In function 'inet_close':
inet.c:46: error: asm-specifie= r for variable 'retv' conflicts with asm clobber list
inet.c: In= function 'inet_host_addr':
inet.c:61: error: asm-specifier for = variable 'retv' conflicts with asm clobber list

I attached inet.c and transprt.h, as you can see, trouble is function S= TinG_wf_wpw and friends, in my eyes it seems quite similar to what we use i= n mintlib. Hopefully you'll see some easy way how to fix it.

--
MiKRO / Mystic Bytes
http://mikro.atari.org
--000325558ab6243743047ce8cf4f-- --000325558ab624374b047ce8cf51 Content-Type: text/x-chdr; charset=US-ASCII; name="transprt.h" Content-Disposition: attachment; filename="transprt.h" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g4bnufy20 LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKglGaWxlIG5hbWU6CVRSQU5TUFJULkgJCQkJCQlSZXZp c2lvbiBkYXRlOgkyMDAwLjA2LjE0CSovDQovKglSZXZpc2VkIGJ5OglVbGYgUm9uYWxkIEFuZGVy c3NvbgkJCVJldmlzaW9uIHN0YXJ0OgkxOTk5LjA5LjIxCSovDQovKglDcmVhdGVkIGJ5OglQZXRl ciBSb3R0ZW5nYXR0ZXIJCQkJQ3JlYXRpb24gZGF0ZToJMTk5Ni54eC54eAkqLw0KLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSovDQovKiBIZWFkZXIgZmlsZSBmb3IgYWxsIFNUaW5HIHJlbGF0ZWQgc291cmNl IGZpbGVzLCBleGNlcHQgdGhvc2Ugb2Yga2VybmVsLgkqLw0KLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov DQojaWZuZGVmIFNUSU5HX1RSQU5TUFJUX0gNCiNkZWZpbmUgU1RJTkdfVFJBTlNQUlRfSA0KLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSovDQovKglOQjogRm9yIHJlYWRhYmlsaXR5LCB1c2UgYSB0YWIgc2l6 ZSBvZiA0IHdoZW4gdmlld2luZyB0aGlzIGZpbGUuCQkqLw0KLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov DQovKiBIZXJlIGZvbGxvd3MgYSBzZWN0aW9uIHdoZXJlIHlvdSBjYW4gYWRkIHRlc3RzIGZvciBj b21waWxlciB0eXBlLCBhbmQJKi8NCi8qIHVzZSB0aGlzIHRvIHJlYWQgaW4gYW55IGV4dHJhIGhl YWRlciBmaWxlcyB0aGF0IG1heSBiZSBuZWVkZWQgdG8gZ2l2ZQkqLw0KLyogU1RpbkcgYXBwbGlj YXRpb25zIHNvbWUgdXNlZnVsIHN5c3RlbSB0eXBlcy4JCQkJCQkJCSovDQovKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8NCi8qIE5COiBPbmx5IHVzZSBhZHZhbmNlZCBjb21waWxlciBvciBwcmVwcm9jZXNz b3IgZmVhdHVyZXMgaW4gY29uZGl0aW9uYWwJKi8NCi8qICAgICBjbGF1c2VzLCBhZnRlciBpZGVu dGlmeWluZyBhIGNvbXBpbGVyIHRoYXQgc3VwcG9ydHMgdGhvc2UgZmVhdHVyZXMuCSovDQovKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKi8NCiNpZmRlZglfX1RVUkJPQ19fCQkvKiBOQjogVGhpcyBpcyBzZXQg Ym90aCBmb3IgVHVyYm9DIGFuZCBmb3IgUHVyZUMgKi8NCiNpbmNsdWRlCTxUT1MuSD4NCiNlbHNl DQojaWZkZWYJX19HTlVDX18NCiNpbmNsdWRlCTxtaW50L2Jhc2VwYWdlLmg+DQojZGVmaW5lCUJB U1BBRyBCQVNFUEFHRQ0KI2Vsc2UNCiNpZmRlZglMQVRUSUNFDQojaW5jbHVkZQk8YmFzZXBhZ2Uu aD4NCiNkZWZpbmUJQkFTUEFHIEJBU0VQQUdFDQojZW5kaWYNCiNlbmRpZg0KI2VuZGlmDQovKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKi8NCi8qCURlZmluaXRpb25zIG9mIGRhdGEgdHlwZXMgdXNlZCB0aHJv dWdob3V0IFNUaW5HIGZvciBwb3J0YWJpbGl0eS4JCSovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8N CnR5cGVkZWYJICBzaWduZWQJY2hhcgkgaW50ODsJCS8qICAgU2lnbmVkICA4IGJpdCAqLw0KdHlw ZWRlZgl1bnNpZ25lZAljaGFyCXVpbnQ4OwkJLyogVW5zaWduZWQgIDggYml0ICovDQp0eXBlZGVm CSAgc2lnbmVkCXNob3J0CSBpbnQxNjsJCS8qICAgU2lnbmVkIDE2IGJpdCAqLw0KdHlwZWRlZgl1 bnNpZ25lZAlzaG9ydAl1aW50MTY7CQkvKiBVbnNpZ25lZCAxNiBiaXQgKi8NCnR5cGVkZWYJICBz aWduZWQJbG9uZwkgaW50MzI7CQkvKiAgIFNpZ25lZCAzMiBiaXQgKi8NCnR5cGVkZWYJdW5zaWdu ZWQJbG9uZwl1aW50MzI7CQkvKiBVbnNpZ25lZCAzMiBiaXQgKi8NCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLw0KLyoJRGVmaW5pdGlvbnMgb2YgZGF0YSB0eXBlcyB1c2VmdWwgd2hlbiAncG9ydGluZycg bmV0d29yayBzb2Z0d2FyZS4JCSovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNpZm5kZWYJVFJV RQ0KI2RlZmluZQlUUlVFCTENCiNlbmRpZg0KI2lmbmRlZglGQUxTRQ0KI2RlZmluZQlGQUxTRQkw DQojZW5kaWYNCiNpZm5kZWYJbnRvaHMNCiNkZWZpbmUJbnRvaHMoeCkJKHgpDQojZW5kaWYNCiNp Zm5kZWYJbnRvaGwNCiNkZWZpbmUJbnRvaGwoeCkJKHgpDQojZW5kaWYNCiNpZm5kZWYJaHRvbnMN CiNkZWZpbmUJaHRvbnMoeCkJKHgpDQojZW5kaWYNCiNpZm5kZWYJaHRvbmwNCiNkZWZpbmUJaHRv bmwoeCkJKHgpDQojZW5kaWYNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogVGhlIGxhc3QgNCBt YXkgbG9vayBzaWxseSwgYnV0IGFyZSB1c2VkIGEgbG90IGJ5IGxvdHMgb2Ygc291cmNlcywgc28g aXQJKi8NCi8qIGVhc2llciB0byBkZWNsYXJlIHRoZW0gdGhpcyB3YXkgdGhhbiB0byBlZGl0IHRo ZW0gb3V0IG9mIHRob3NlIHNvdXJjZXMuCSovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIFRo ZSBmb2xsb3dpbmcgbWFjcm8gaXMgdG8gY2F0ZXIgdG8gY29tcGlsZXJzIHRoYXQgbGlrZS9kaXNs aWtlICdjZGVjbCcuCSovDQovKiBBZGQgbW9yZSB0ZXN0cyBmb3Igb3RoZXIgY29tcGlsZXJzIGFz IGFuZCB3aGVuIG5lZWRlZC4gIFRoZSBkZWZhdWx0IGlzCSovDQovKiB0byBtYWtlICdjZGVjbCcg dHJhbnNwYXJlbnQsIHRvIGFjY29tb2RhdGUgQU5TSSBjb21wYXRpYmxlIGNvbXBpbGVycy4JKi8N Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2lmbmRlZgljZGVjbA0KI2lmCQlkZWZpbmVkKF9fUFVS RUNfXykNCiNlbGlmCWRlZmluZWQoX19UVVJCT0NfXykNCiNlbGlmCWRlZmluZWQoTEFUVElDRSkN CiNkZWZpbmUJY2RlY2wgX19zdGRhcmdzDQojZWxzZQ0KI2RlZmluZQljZGVjbA0KI2VuZGlmDQoj ZW5kaWYNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoJU1RpSy9TVGluRyBkcml2ZXIgYWNjZXNz IHN0cnVjdHVyZSAvIGZ1bmN0aW9ucy4JCQkJCQkJKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0K I2RlZmluZQlNQUdJQwkiU1RpS21hZ2ljIgkJCQkvKiBNYWdpYyBmb3IgRFJWX0xJU1QubWFnaWMJ Ki8NCiNkZWZpbmUJQ0pUQUcJIlNUaUsiCQkJCQkvKiBDb29raWUgSmFyIHRhZwkJCSovDQoNCnR5 cGVkZWYgc3RydWN0IGRydl9oZWFkZXINCnsJCQkJCQkJLyogSGVhZGVyIHBhcnQgb2YgVFBMIHN0 cnVjdHVyZQkJCQkqLw0KCWNoYXIgKm1vZHVsZTsJCQkvKiBTcGVjaWZpYyBzdHJpbmcgdGhhdCBj YW4gYmUgc2VhcmNoZWQgZm9yCSovDQoJY2hhciAqYXV0aG9yOwkJCS8qIEFueSBzdHJpbmcJCQkJ CQkJCSovDQoJY2hhciAqdmVyc2lvbjsJCQkvKiBGb3JtYXQgYDAwLjAwJyBWZXJzaW9uOlJldmlz aW9uCQkJKi8NCn0JRFJWX0hEUjsNCg0KdHlwZWRlZiBzdHJ1Y3QgZHJ2X2xpc3QNCnsNCgljaGFy CW1hZ2ljWzEwXTsJCQkJCQkvKiBNYWdpYyBzdHJpbmcsIGRlZmQgYXMgTUFHSUMJKi8NCglEUlZf SERSCSpjZGVjbAkoKmdldF9kZnRhYikgKGNoYXIgKik7CS8qIEdldCBEcml2ZXIgRnVuY3Rpb24g VGFibGUJKi8NCglpbnQxNgljZGVjbAkoKkVUTV9leGVjKSAoY2hhciAqKTsJLyogRXhlY3V0ZSBh IFNUaW5HIG1vZHVsZQkJKi8NCgl2b2lkCSpjZmc7CQkJCQkJCS8qIENvbmZpZyBzdHJ1Y3R1cmUJ CQkJKi8NCglCQVNQQUcJKnN0aW5nX2Jhc2VwYWdlOwkJCQkvKiBTVGluRyBiYXNlcGFnZSBhZGRy ZXNzCQkqLw0KfQlEUlZfTElTVDsNCg0KZXh0ZXJuIERSVl9MSVNUICpkcml2ZXJzOw0KDQojZGVm aW5lIGdldF9kZnRhYih4KQkoKmRyaXZlcnMtPmdldF9kZnRhYikoeCkNCiNkZWZpbmUgRVRNX2V4 ZWMoeCkJCSgqZHJpdmVycy0+RVRNX2V4ZWMpKHgpDQoNCiNkZWZpbmUJVFJBTlNQT1JUX0RSSVZF UgkiVFJBTlNQT1JUX1RDUElQIg0KI2RlZmluZQlUQ1BfRFJJVkVSX1ZFUlNJT04JIjAxLjAwIg0K DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoJVENQIGFuZCBVRFAg cG9ydCBlc2NhcGUgZmxhZ3MuCSovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLw0KI2RlZmluZQlUQ1BfQUNUSVZFCQkweDAwMDAJLyogSW5pdGlhdGUgYWN0aXZlIGNvbm5l Y3Rpb24JKi8NCiNkZWZpbmUJVENQX1BBU1NJVkUJCTB4ZmZmZgkvKiBJbml0aWF0ZSBwYXNzaXZl IGNvbm5lY3Rpb24JKi8NCiNkZWZpbmUgIFVEUF9FWFRFTkQJCTB4MDAwMAkvKiBFeHRlbmRlZCBh ZGRyZXNzaW5nIHNjaGVtZQkqLw0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLw0KLyoJVENQIG1pc2NlbGxhbmVvdXMgZmxhZ3MuCQkqLw0KLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUgIFRDUF9VUkdFTlQJCQkoKHZvaWQgKikgLTEp CS8qIE1hcmsgdXJnZW50IHBvc2l0aW9uCQkqLw0KI2RlZmluZSAgVENQX0hBTEZEVVBMRVgJCSgt MSkJCQkvKiBUQ1BfY2xvc2UoKSBoYWxmIGR1cGxleAkqLw0KI2RlZmluZSAgVENQX0lNTUVESUFU RQkJKDApCQkJCS8qIFRDUF9jbG9zZSgpIGltbWVkaWF0ZQkqLw0KDQovKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoJVENQIGNvbm5lY3Rpb24gc3RhdGVzLgkJCSovDQov Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZQlUQ0xPU0VECQkw CS8qIE5vIGNvbm5lY3Rpb24uICBOdWxsLCB2b2lkLCBhYnNlbnQsIC4uLgkJKi8NCiNkZWZpbmUJ VExJU1RFTgkJMQkvKiBXYWl0IGZvciByZW1vdGUgcmVxdWVzdAkJCQkJCSovDQojZGVmaW5lCVRT WU5fU0VOVAkyCS8qIENvbm5lY3QgcmVxdWVzdCBzZW50LCBhd2FpdCBtYXRjaGluZyByZXF1ZXN0 CSovDQojZGVmaW5lCVRTWU5fUkVDVgkzCS8qIFdhaXQgZm9yIGNvbm5lY3Rpb24gYWNrCQkJCQkJ Ki8NCiNkZWZpbmUJVEVTVEFCTElTSAk0CS8qIENvbm5lY3Rpb24gZXN0YWJsaXNoZWQsIGhhbmRz aGFrZSBjb21wbGV0ZWQJKi8NCiNkZWZpbmUJVEZJTl9XQUlUMQk1CS8qIEF3YWl0IHRlcm1pbmF0 aW9uIHJlcXVlc3Qgb3IgYWNrCQkJCSovDQojZGVmaW5lCVRGSU5fV0FJVDIJNgkvKiBBd2FpdCB0 ZXJtaW5hdGlvbiByZXF1ZXN0CQkJCQkqLw0KI2RlZmluZQlUQ0xPU0VfV0FJVAk3CS8qIEF3YWl0 IHRlcm1pbmF0aW9uIHJlcXVlc3QgZnJvbSBsb2NhbCB1c2VyCSovDQojZGVmaW5lCVRDTE9TSU5H CTgJLyogQXdhaXQgdGVybWluYXRpb24gYWNrIGZyb20gcmVtb3RlIFRDUAkJKi8NCiNkZWZpbmUJ VExBU1RfQUNLCTkJLyogQXdhaXQgYWNrIG9mIHRlcm1pbmF0ZSByZXF1ZXN0IHNlbnQJCQkqLw0K I2RlZmluZQlUVElNRV9XQUlUCTEwCS8qIERlbGF5LCBlbnN1cmVzIHJlbW90ZSBoYXMgcmVjZWl2 ZWQgdGVybScgYWNrCSovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0K LyoJVURQIGNvbm5lY3Rpb24gcHNldWRvIHN0YXRlcy4JKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lCVVDTE9TRUQJCTAJLyogTm8gY29ubmVjdGlvbi4g IE51bGwsIHZvaWQsIGFic2VudCwgLi4uCQkqLw0KI2RlZmluZQlVTElTVEVOCQkxCS8qIFdhaXQg Zm9yIHJlbW90ZSByZXF1ZXN0CQkJCQkJKi8NCiNkZWZpbmUJVUVTVEFCTElTSAk0CS8qIENvbm5l Y3Rpb24gZXN0YWJsaXNoZWQsIHBhY2tldCByZWNlaXZlZC9zZW50CSovDQovKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8NCi8qCVRDUCBpbmZvcm1hdGlvbiBibG9jay4JCQkJCQkJCQkJCQkJKi8NCi8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLw0KdHlwZWRlZiBzdHJ1Y3QgdGNwaWINCnsJdWludDMyCXJlcXVlc3Q7 CS8qIDMyIGJpdCBmbGFncyByZXF1ZXN0aW5nIHZhcmlvdXMgaW5mbyAoZm9sbG93aW5nKQkqLw0K CXVpbnQxNglzdGF0ZTsJCS8qIGN1cnJlbnQgVENQIHN0YXRlIAkJCQkJCQkJKi8NCgl1aW50MzIJ dW5hY2tlZDsJLyogdW5hY2tlZCBvdXRnb2luZyBzZXF1ZW5jZSBsZW5ndGggKGluY2wgU1lOL0ZJ TikJKi8NCgl1aW50MzIJc3J0dDsJCS8qIHNtb290aGVkIHJvdW5kIHRyaXAgdGltZSBvZiB0aGlz IGNvbm5lY3Rpb24JCSovDQp9CVRDUElCOw0KDQojZGVmaW5lCVRDUElfc3RhdGUJCTB4MDAwMDAw MDFMCS8qIHJlcXVlc3QgY3VycmVudCBUQ1Agc3RhdGUJCQkqLw0KI2RlZmluZQlUQ1BJX3VuYWNr ZWQJMHgwMDAwMDAwMkwJLyogcmVxdWVzdCBsZW5ndGggb2YgdW5hY2tlZCBzZXF1ZW5jZQkqLw0K I2RlZmluZQlUQ1BJX3NydHQJCTB4MDAwMDAwMDRMCS8qIHJlcXVlc3Qgc21vb3RoZWQgcm91bmQg dHJpcCB0aW1lCQkqLw0KI2RlZmluZQlUQ1BJX2RlZmVyCQkweDAwMDAwMDA4TAkvKiByZXF1ZXN0 IHN3aXRjaCB0byBERUZFUiBtb2RlCQkJKi8NCg0KI2RlZmluZSBUQ1BJX2JpdHMJCTQJCQkvKiBU aGUgbnVtYmVyIG9mIGJpdHMgd2hpY2ggYXJlIGRlZmluZWQJKi8NCiNkZWZpbmUJVENQSV9tYXNr CQkweDAwMDAwMDBGTAkvKiBjdXJyZW50IHN1bSBvZiBkZWZpbmVkIHJlcXVlc3QgYml0cwkqLw0K LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiBOQjogQSBUQ1BfaW5mbyByZXF1ZXN0IHVzaW5nIHVu ZGVmaW5lZCBiaXRzIHdpbGwgcmVzdWx0IGluIEVfUEFSQU1FVEVSLgkqLw0KLyogICAgIGVsc2Ug dGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIFRDUElfYml0cywgc28gdXNlciBrbm93cyB3aGF0IHdl IGhhdmUuCSovDQovKiAgICAgRnV0dXJlIGFkZGl0aW9ucyB3aWxsIHVzZSByaXNpbmcgYml0cyBp biBzZXF1ZW5jZSwgYW5kIGFkZGl0aW9ucyB0bwkqLw0KLyogICAgIHRoZSBUQ1BJQiBzdHJ1Y3Qg d2lsbCBhbHdheXMgYmUgbWFkZSBhdCBpdHMgcHJldmlvdXMgZW5kLgkJCSovDQovKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8NCi8qICEhISBCeSBUQ1BfaW5mbyB3aXRoIFRDUElfZGVmZXIsIGNvbm5lY3Rp b24gaXMgc3dpdGNoZWQgdG8gJ0RFRkVSJyBtb2RlLgkqLw0KLyogICAgIFRoaXMgbWVhbnMgdGhh dCBhbGwgc2l0dWF0aW9ucyB3aGVyZSBpbnRlcm5hbCBsb29waW5nIHdvdWxkIG9jY3VyCSovDQov KiAgICAgd2lsbCBpbnN0ZWFkIGxlYWQgdG8gZXhpdCB0byB0aGUgY2FsbGVyIHdpdGggcmV0dXJu IHZhbHVlIEVfTE9DS0VELgkqLw0KLyogICAgIFVzaW5nIHRoaXMgbW9kZSBjb25zdGl0dXRlcyBh Z3JlZW1lbnQgdG8gYWx3YXlzIGNoZWNrIGZvciB0aGF0IGVycm9yCSovDQovKiAgICAgY29kZSwg d2hpY2ggaXMgbWFpbmx5IHVzZWQgZm9yIGNvbm5lY3Rpb25zIHVzaW5nIERFRkVSIG1vZGUuIEl0 IG1heQkqLw0KLyogICAgIGFsc28gYmUgdXNlZCBpbiBzb21lIG90aGVyIGluc3RhbmNlcywgd2hl cmUgYSBmdW5jdGlvbiBpcyBibG9ja2VkIGluCSovDQovKiAgICAgc3VjaCBhIHdheSB0aGF0IGlu dGVybmFsIGxvb3BpbmcgaXMgbm90IHBvc3NpYmxlLgkJCQkJKi8NCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLw0KLyoJVURQIGluZm9ybWF0aW9uIGJsb2NrLgkJCQkJCQkJCQkJCQkqLw0KLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSovDQp0eXBlZGVmIHN0cnVjdCB1ZHBpYg0Kewl1aW50MzIJcmVxdWVzdDsJLyog MzIgYml0IGZsYWdzIHJlcXVlc3RpbmcgdmFyaW91cyBpbmZvIChmb2xsb3dpbmcpCSovDQoJdWlu dDE2CXN0YXRlOwkJLyogY3VycmVudCBVRFAgcHNldWRvIHN0YXRlIAkJCQkJCSovDQoJdWludDMy CXJlc2VydmUxOwkvKiByZXNlcnZlZCAqLw0KCXVpbnQzMglyZXNlcnZlMjsJLyogcmVzZXJ2ZWQg Ki8NCn0JVURQSUI7DQoNCiNkZWZpbmUJVURQSV9zdGF0ZQkJMHgwMDAwMDAwMUwJLyogcmVxdWVz dCBjdXJyZW50IFVEUCBwc2V1ZG8gc3RhdGUJCSovDQojZGVmaW5lCVVEUElfcmVzZXJ2ZTEJMHgw MDAwMDAwMkwJLyogcmVzZXJ2ZWQJKi8NCiNkZWZpbmUJVURQSV9yZXNlcnZlMgkweDAwMDAwMDA0 TAkvKiByZXNlcnZlZCAqLw0KI2RlZmluZQlVRFBJX2RlZmVyCQkweDAwMDAwMDA4TAkvKiByZXF1 ZXN0IHN3aXRjaCB0byBERUZFUiBtb2RlCQkJKi8NCg0KI2RlZmluZSBVRFBJX2JpdHMJCTQJCQkv KiBUaGUgbnVtYmVyIG9mIGJpdHMgd2hpY2ggYXJlIGRlZmluZWQJKi8NCiNkZWZpbmUJVURQSV9t YXNrCQkweDAwMDAwMDBGTAkvKiBjdXJyZW50IHN1bSBvZiBkZWZpbmVkIHJlcXVlc3QgYml0cwkq Lw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiBOQjogQSBVRFBfaW5mbyByZXF1ZXN0IHVzaW5n IHVuZGVmaW5lZCBiaXRzIHdpbGwgcmVzdWx0IGluIEVfUEFSQU1FVEVSLgkqLw0KLyogICAgIGVs c2UgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIFVEUElfYml0cywgc28gdXNlciBrbm93cyB3aGF0 IHdlIGhhdmUuCSovDQovKiAgICAgRnV0dXJlIGFkZGl0aW9ucyB3aWxsIHVzZSByaXNpbmcgYml0 cyBpbiBzZXF1ZW5jZSwgYW5kIGFkZGl0aW9ucyB0bwkqLw0KLyogICAgIHRoZSBVRFBJQiBzdHJ1 Y3Qgd2lsbCBhbHdheXMgYmUgbWFkZSBhdCBpdHMgcHJldmlvdXMgZW5kLgkJCSovDQovKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8NCi8qICEhISBCeSBVRFBfaW5mbyB3aXRoIFVEUElfZGVmZXIsIGNvbm5l Y3Rpb24gaXMgc3dpdGNoZWQgdG8gJ0RFRkVSJyBtb2RlLgkqLw0KLyogICAgIFRoaXMgbWVhbnMg dGhhdCBhbGwgc2l0dWF0aW9ucyB3aGVyZSBpbnRlcm5hbCBsb29waW5nIHdvdWxkIG9jY3VyCSov DQovKiAgICAgd2lsbCBpbnN0ZWFkIGxlYWQgdG8gZXhpdCB0byB0aGUgY2FsbGVyIHdpdGggcmV0 dXJuIHZhbHVlIEVfTE9DS0VELgkqLw0KLyogICAgIFVzaW5nIHRoaXMgbW9kZSBjb25zdGl0dXRl cyBhZ3JlZW1lbnQgdG8gYWx3YXlzIGNoZWNrIGZvciB0aGF0IGVycm9yCSovDQovKiAgICAgY29k ZSwgd2hpY2ggaXMgbWFpbmx5IHVzZWQgZm9yIGNvbm5lY3Rpb25zIHVzaW5nIERFRkVSIG1vZGUu CUl0IG1heQkqLw0KLyogICAgIGFsc28gYmUgdXNlZCBpbiBzb21lIG90aGVyIGluc3RhbmNlcywg d2hlcmUgYSBmdW5jdGlvbiBpcyBibG9ja2VkIGluCSovDQovKiAgICAgc3VjaCBhIHdheSB0aGF0 IGludGVybmFsIGxvb3BpbmcgaXMgbm90IHBvc3NpYmxlLgkJCQkJKi8NCi8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLw0KLyoJQnVmZmVyIGZvciBpbnF1aXJpbmcgcG9ydCBuYW1lcy4JCQkJCQkJCQkJKi8N Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KdHlwZWRlZglzdHJ1Y3QJcG50YQ0Kewl1aW50MzIJb3Bh cXVlOwkJCS8qIEtlcm5lbCBpbnRlcm5hbCBkYXRhCQkJKi8NCglpbnQxNgluYW1lX2xlbjsJCS8q IExlbmd0aCBvZiBwb3J0IG5hbWUgYnVmZmVyCSovDQoJY2hhcgkqcG9ydF9uYW1lOwkJLyogQnVm ZmVyIGFkZHJlc3MJCQkJKi8NCn0JUE5UQTsNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoJQ29t bWFuZCBvcGNvZGVzIGZvciBjbnRybF9wb3J0KCkuCQkJCQkJCQkJCSovDQovKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8NCiNkZWZpbmUJQ1RMX0tFUk5fRklSU1RfUE9SVAkJKCgnSycgPDwgOCkgfCAnRicp ICAgLyogS2VybmVsICAgICAgICAgICAgKi8NCiNkZWZpbmUJQ1RMX0tFUk5fTkVYVF9QT1JUCQko KCdLJyA8PCA4KSB8ICdOJykgICAvKiBLZXJuZWwgICAgICAgICAgICAqLw0KI2RlZmluZQlDVExf S0VSTl9GSU5EX1BPUlQJCSgoJ0snIDw8IDgpIHwgJ0cnKSAgIC8qIEtlcm5lbCAgICAgICAgICAg ICovDQoNCiNkZWZpbmUJQ1RMX0dFTkVSSUNfU0VUX0lQCQkoKCdHJyA8PCA4KSB8ICdIJykgICAv KiBLZXJuZWwsIGFsbCBwb3J0cyAqLw0KI2RlZmluZQlDVExfR0VORVJJQ19HRVRfSVAJCSgoJ0cn IDw8IDgpIHwgJ0knKSAgIC8qIEtlcm5lbCwgYWxsIHBvcnRzICovDQojZGVmaW5lCUNUTF9HRU5F UklDX1NFVF9NQVNLCSgoJ0cnIDw8IDgpIHwgJ0wnKSAgIC8qIEtlcm5lbCwgYWxsIHBvcnRzICov DQojZGVmaW5lCUNUTF9HRU5FUklDX0dFVF9NQVNLCSgoJ0cnIDw8IDgpIHwgJ00nKSAgIC8qIEtl cm5lbCwgYWxsIHBvcnRzICovDQojZGVmaW5lCUNUTF9HRU5FUklDX1NFVF9NVFUJCSgoJ0cnIDw8 IDgpIHwgJ04nKSAgIC8qIEtlcm5lbCwgYWxsIHBvcnRzICovDQojZGVmaW5lCUNUTF9HRU5FUklD X0dFVF9NVFUJCSgoJ0cnIDw8IDgpIHwgJ08nKSAgIC8qIEtlcm5lbCwgYWxsIHBvcnRzICovDQoj ZGVmaW5lCUNUTF9HRU5FUklDX0dFVF9NTVRVCSgoJ0cnIDw8IDgpIHwgJ1AnKSAgIC8qIEtlcm5l bCwgYWxsIHBvcnRzICovDQojZGVmaW5lCUNUTF9HRU5FUklDX0dFVF9UWVBFCSgoJ0cnIDw8IDgp IHwgJ1QnKSAgIC8qIEtlcm5lbCwgYWxsIHBvcnRzICovDQojZGVmaW5lCUNUTF9HRU5FUklDX0dF VF9TVEFUCSgoJ0cnIDw8IDgpIHwgJ1MnKSAgIC8qIEtlcm5lbCwgYWxsIHBvcnRzICovDQojZGVm aW5lCUNUTF9HRU5FUklDX0NMUl9TVEFUCSgoJ0cnIDw8IDgpIHwgJ0MnKSAgIC8qIEtlcm5lbCwg YWxsIHBvcnRzICovDQoNCiNkZWZpbmUJQ1RMX1NFUklBTF9TRVRfUFJUQ0wJKCgnUycgPDwgOCkg fCAnUCcpICAgLyogU2VyaWFsIERyaXZlciAgICAgKi8NCiNkZWZpbmUJQ1RMX1NFUklBTF9HRVRf UFJUQ0wJKCgnUycgPDwgOCkgfCAnUScpICAgLyogU2VyaWFsIERyaXZlciAgICAgKi8NCiNkZWZp bmUJQ1RMX1NFUklBTF9TRVRfTE9HQlVGRgkoJ1MnIDw8IDggfCAnTCcpICAgICAvKiBTZXJpYWwg RHJpdmVyICAgICAqLw0KI2RlZmluZQlDVExfU0VSSUFMX1NFVF9MT0dHSU5HCSgnUycgPDwgOCB8 ICdGJykgICAgIC8qIFNlcmlhbCBEcml2ZXIgICAgICovDQojZGVmaW5lCUNUTF9TRVJJQUxfU0VU X0FVVEgJCSgoJ1MnIDw8IDgpIHwgJ0EnKSAgIC8qIFNlcmlhbCBEcml2ZXIgICAgICovDQojZGVm aW5lCUNUTF9TRVJJQUxfU0VUX1BBUAkJKCgnUycgPDwgOCkgfCAnQicpICAgLyogU2VyaWFsIERy aXZlciAgICAgKi8NCiNkZWZpbmUJQ1RMX1NFUklBTF9JTlFfU1RBVEUJKCgnUycgPDwgOCkgfCAn UycpICAgLyogU2VyaWFsIERyaXZlciAgICAgKi8NCg0KI2RlZmluZQlDVExfRVRIRVJfU0VUX01B QwkJKCgnRScgPDwgOCkgfCAnTScpICAgLyogRXRoZXJOZXQgICAgICAgICAgKi8NCiNkZWZpbmUJ Q1RMX0VUSEVSX0dFVF9NQUMJCSgoJ0UnIDw8IDgpIHwgJ04nKSAgIC8qIEV0aGVyTmV0ICAgICAg ICAgICovDQojZGVmaW5lCUNUTF9FVEhFUl9JTlFfU1VQUFRZUEUJKCgnRScgPDwgOCkgfCAnUScp ICAgLyogRXRoZXJOZXQgICAgICAgICAgKi8NCiNkZWZpbmUJQ1RMX0VUSEVSX1NFVF9UWVBFCQko KCdFJyA8PCA4KSB8ICdUJykgICAvKiBFdGhlck5ldCAgICAgICAgICAqLw0KI2RlZmluZQlDVExf RVRIRVJfR0VUX1RZUEUJCSgoJ0UnIDw8IDgpIHwgJ1UnKSAgIC8qIEV0aGVyTmV0ICAgICAgICAg ICovDQoNCiNkZWZpbmUJQ1RMX01BU1FVRV9TRVRfUE9SVAkJKCgnTScgPDwgOCkgfCAnUCcpICAg LyogTWFzcXVlcmFkZSAgICAgICAgKi8NCiNkZWZpbmUJQ1RMX01BU1FVRV9HRVRfUE9SVAkJKCgn TScgPDwgOCkgfCAnUScpICAgLyogTWFzcXVlcmFkZSAgICAgICAgKi8NCiNkZWZpbmUJQ1RMX01B U1FVRV9TRVRfTUFTS0lQCSgoJ00nIDw8IDgpIHwgJ00nKSAgIC8qIE1hc3F1ZXJhZGUgICAgICAg ICovDQojZGVmaW5lCUNUTF9NQVNRVUVfR0VUX01BU0tJUAkoKCdNJyA8PCA4KSB8ICdOJykgICAv KiBNYXNxdWVyYWRlICAgICAgICAqLw0KI2RlZmluZQlDVExfTUFTUVVFX0dFVF9SRUFMSVAJKCgn TScgPDwgOCkgfCAnUicpICAgLyogTWFzcXVlcmFkZSAgICAgICAgKi8NCi8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLw0KLyoJSGFuZGxlciBmbGFnIHZhbHVlcy4JCQkJCQkJCQkJCQkJKi8NCi8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLw0KI2RlZmluZSAgSE5ETFJfU0VUICAgICAgICAwICAgICAgICAgLyogU2V0 IG5ldyBoYW5kbGVyIGlmIHNwYWNlCQkqLw0KI2RlZmluZSAgSE5ETFJfRk9SQ0UgICAgICAxICAg ICAgICAgLyogRm9yY2UgbmV3IGhhbmRsZXIgdG8gYmUgc2V0CSovDQojZGVmaW5lICBITkRMUl9S RU1PVkUgICAgIDIgICAgICAgICAvKiBSZW1vdmUgaGFuZGxlciBlbnRyeQkJCSovDQojZGVmaW5l ICBITkRMUl9RVUVSWSAgICAgIDMgICAgICAgICAvKiBJbnF1aXJlIGFib3V0IGhhbmRsZXIgZW50 cnkJKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoJSVAgcGFja2V0IGhlYWRlci4JCQkJCQkJ CQkJCQkJCSovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCnR5cGVkZWYgIHN0cnVjdCBpcF9oZWFk ZXINCnsJdW5zaWduZWQJdmVyc2lvbiAgIDogNDsJLyogSVAgVmVyc2lvbgkJCQkJCQkJKi8NCgl1 bnNpZ25lZAloZF9sZW4gICAgOiA0OwkvKiBJbnRlcm5ldCBIZWFkZXIgTGVuZ3RoCQkJCQkqLw0K CXVuc2lnbmVkCXRvcyAgICAgICA6IDg7CS8qIFR5cGUgb2YgU2VydmljZQkJCQkJCQkqLw0KCXVp bnQxNgkJbGVuZ3RoOwkJCS8qIFRvdGFsIG9mIGFsbCBoZWFkZXIsIG9wdGlvbnMgYW5kIGRhdGEJ Ki8NCgl1aW50MTYJCWlkZW50OwkJCS8qIElkZW50aWZpY2F0aW9uIGZvciBmcmFnbWVudGF0aW9u CQkJKi8NCgl1bnNpZ25lZAlyZXNlcnZlZCAgOiAxOwkvKiBSZXNlcnZlZCA6IE11c3QgYmUgemVy bwkJCQkJKi8NCgl1bnNpZ25lZAlkb250X2ZyZyAgOiAxOwkvKiBEb24ndCBmcmFnbWVudCBmbGFn CQkJCQkJKi8NCgl1bnNpZ25lZAltb3JlX2ZyZyAgOiAxOwkvKiBNb3JlIGZyYWdtZW50cyBmbGFn CQkJCQkJKi8NCgl1bnNpZ25lZAlmcmFnX29mc3QgOiAxMzsJLyogRnJhZ21lbnQgb2Zmc2V0CQkJ CQkJCSovDQoJdWludDgJCXR0bDsJCQkvKiBUaW1lIHRvIGxpdmUJCQkJCQkJCSovDQoJdWludDgJ CXByb3RvY29sOwkJLyogUHJvdG9jb2wJCQkJCQkJCQkqLw0KCXVpbnQxNgkJaGRyX2Noa3N1bTsJ CS8qIEhlYWRlciBjaGVja3N1bQkJCQkJCQkqLw0KCXVpbnQzMgkJaXBfc3JjOwkJCS8qIFNvdXJj ZSBJUCBhZGRyZXNzCQkJCQkJKi8NCgl1aW50MzIJCWlwX2Rlc3Q7CQkvKiBEZXN0aW5hdGlvbiBJ UCBhZGRyZXNzCQkJCQkqLw0KfQlJUF9IRFI7DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qCUlu dGVybmFsIElQIHBhY2tldCByZXByZXNlbnRhdGlvbi4JCQkJCQkJCQkJKi8NCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0qLw0KdHlwZWRlZiAgc3RydWN0IGlwX3BhY2tldA0KewlJUF9IRFIJaGRyOwkJCQkv KiBIZWFkZXIgb2YgSVAgcGFja2V0CQkJCQkJKi8NCgl2b2lkCSpvcHRpb25zOwkJCS8qIE9wdGlv bnMgZGF0YSBibG9jawkJCQkJCSovDQoJaW50MTYJb3B0X2xlbmd0aDsJCQkvKiBMZW5ndGggb2Yg b3B0aW9ucyBkYXRhIGJsb2NrCQkJCSovDQoJdm9pZAkqcGt0X2RhdGE7CQkJLyogSVAgcGFja2V0 IGRhdGEgYmxvY2sJCQkJCQkqLw0KCWludDE2CXBrdF9sZW5ndGg7CQkJLyogTGVuZ3RoIG9mIElQ IHBhY2tldCBkYXRhIGJsb2NrCQkJKi8NCgl1aW50MzIJdGltZW91dDsJCQkvKiBUaW1lb3V0IG9m IHBhY2tldCBsaWZlCQkJCQkqLw0KCXVpbnQzMglpcF9nYXRld2F5OwkJCS8qIEdhdGV3YXkgZm9y IGZvcndhcmRpbmcgdGhpcyBwYWNrZXQJCSovDQoJdm9pZAkqcmVjdmQ7CQkJCS8qIFJlY2Vpdmlu ZyBwb3J0CQkJCQkJCSovDQoJc3RydWN0CWlwX3BhY2tldAkqbmV4dDsJLyogTmV4dCBJUCBwYWNr ZXQgaW4gSVAgcGFja2V0IHF1ZXVlCQkqLw0KfQlJUF9ER1JBTTsNCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLw0KLyoJVmFsdWVzIGZvciBwcm90b2NvbCBmaWVsZCBpbiBJUCBoZWFkZXJzCQkJCQkJCQkJ Ki8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZQlQX0lDTVAJMQkJCQkvKiBJUCBhc3Np Z25lZCBudW1iZXIgZm9yIElDTVAJKi8NCiNkZWZpbmUJUF9UQ1AJNgkJCQkvKiBJUCBhc3NpZ25l ZCBudW1iZXIgZm9yIFRDUAkqLw0KI2RlZmluZQlQX1VEUAkxNwkJCQkvKiBJUCBhc3NpZ25lZCBu dW1iZXIgZm9yIFVEUAkqLw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKglJbnB1dCBxdWV1ZSBz dHJ1Y3R1cmUuCQkJCQkJCQkJCQkJCSovDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCnR5cGVkZWYg c3RydWN0IG5kYgkJCS8qIE5ldHdvcmsgRGF0YSBCbG9jay4gIEZvciBkYXRhIGRlbGl2ZXJ5CQkq Lw0KewljaGFyCQkqcHRyOwkJLyogUG9pbnRlciB0byBiYXNlIG9mIGJsb2NrLiAoRm9yIEtSZnJl ZSgpOykJKi8NCgljaGFyCQkqbmRhdGE7CQkvKiBQb2ludGVyIHRvIG5leHQgZGF0YSB0byBkZWxp dmVyCQkJCSovDQoJdWludDE2CQlsZW47CQkvKiBMZW5ndGggb2YgcmVtYWluaW5nIGRhdGEJCQkJ CQkqLw0KCXN0cnVjdAluZGIJKm5leHQ7CQkvKiBOZXh0IE5EQiBpbiBjaGFpbiBvciBOVUxMCQkJ CQkqLw0KfQlOREI7DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qCUFkZHJlc3NpbmcgaW5mb3Jt YXRpb24gYmxvY2suCQkJCQkJCQkJCQkqLw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQp0eXBlZGVm ICBzdHJ1Y3QgY2FiDQp7CXVpbnQxNgkJbHBvcnQ7CQkvKiBUQ1AgbG9jYWwgIHBvcnQgICAgIChp ZTogbG9jYWwgbWFjaGluZSkJCSovDQoJdWludDE2CQlycG9ydDsJCS8qIFRDUCByZW1vdGUgcG9y dCAgICAgKGllOiByZW1vdGUgbWFjaGluZSkJCSovDQoJdWludDMyCQlyaG9zdDsJCS8qIFRDUCBy ZW1vdGUgSVAgYWRkciAgKGllOiByZW1vdGUgbWFjaGluZSkJCSovDQoJdWludDMyCQlsaG9zdDsJ CS8qIFRDUCBsb2NhbCAgSVAgYWRkciAgKGllOiBsb2NhbCBtYWNoaW5lKQkJKi8NCn0JQ0FCOw0K LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKglDb25uZWN0aW9uIGluZm9ybWF0aW9uIGJsb2NrLgkJ CQkJCQkJCQkJKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KdHlwZWRlZiBzdHJ1Y3QgY2liCQkJ LyogQ29ubmVjdGlvbiBJbmZvcm1hdGlvbiBCbG9jawkJCQkJKi8NCnsJdWludDE2CQlwcm90b2Nv bDsJLyogVENQIG9yIFVEUCBvciAuLi4gMCBtZWFucyBDSUIgaXMgbm90IGluIHVzZQkqLw0KCUNB QgkJCWFkZHJlc3M7CS8qIEFkcmVzcyBpbmZvcm1hdGlvbgkJCQkJCQkqLw0KCXVpbnQxNgkJc3Rh dHVzOwkJLyogTmV0IHN0YXR1cy4gMCBtZWFucyBub3JtYWwJCQkJCSovDQp9CUNJQjsNCi8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLw0KLyoJVHJhbnNwb3J0IHN0cnVjdHVyZSAvIGZ1bmN0aW9ucy4JCQkJ CQkJCQkJKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KdHlwZWRlZiAgc3RydWN0IHRwbA0Kewlj aGFyICoJbW9kdWxlOwkJLyogU3BlY2lmaWMgc3RyaW5nIHRoYXQgY2FuIGJlIHNlYXJjaGVkIGZv cgkJKi8NCgljaGFyICoJYXV0aG9yOwkJLyogQW55IHN0cmluZwkJCQkJCQkJCSovDQoJY2hhciAq CXZlcnNpb247CS8qIEZvcm1hdCBgMDAuMDAnIFZlcnNpb246UmV2aXNpb24JCQkJKi8NCgl2b2lk ICoJY2RlY2wJKCogS1JtYWxsb2MpIChpbnQzMik7DQoJdm9pZAljZGVjbAkoKiBLUmZyZWUpICh2 b2lkICopOw0KCWludDMyCWNkZWNsCSgqIEtSZ2V0ZnJlZSkgKGludDE2KTsNCgl2b2lkICoJY2Rl Y2wJKCogS1JyZWFsbG9jKSAodm9pZCAqLCBpbnQzMik7DQoJY2hhciAqCWNkZWNsCSgqIGdldF9l cnJfdGV4dCkgKGludDE2KTsNCgljaGFyICoJY2RlY2wJKCogZ2V0dnN0cikgKGNoYXIgKik7DQoJ aW50MTYJY2RlY2wJKCogY2Fycmllcl9kZXRlY3QpICh2b2lkKTsNCglpbnQxNgljZGVjbAkoKiBU Q1Bfb3BlbikgKHVpbnQzMiwgdWludDE2LCB1aW50MTYsIHVpbnQxNik7DQoJaW50MTYJY2RlY2wJ KCogVENQX2Nsb3NlKSAoaW50MTYsIGludDE2LCBpbnQxNiAqKTsNCglpbnQxNgljZGVjbAkoKiBU Q1Bfc2VuZCkgKGludDE2LCB2b2lkICosIGludDE2KTsNCglpbnQxNgljZGVjbAkoKiBUQ1Bfd2Fp dF9zdGF0ZSkgKGludDE2LCBpbnQxNiwgaW50MTYpOw0KCWludDE2CWNkZWNsCSgqIFRDUF9hY2tf d2FpdCkgKGludDE2LCBpbnQxNik7DQoJaW50MTYJY2RlY2wJKCogVURQX29wZW4pICh1aW50MzIs IHVpbnQxNik7DQoJaW50MTYJY2RlY2wJKCogVURQX2Nsb3NlKSAoaW50MTYpOw0KCWludDE2CWNk ZWNsCSgqIFVEUF9zZW5kKSAoaW50MTYsIHZvaWQgKiwgaW50MTYpOw0KCWludDE2CWNkZWNsCSgq IENOa2ljaykgKGludDE2KTsNCglpbnQxNgljZGVjbAkoKiBDTmJ5dGVfY291bnQpIChpbnQxNik7 DQoJaW50MTYJY2RlY2wJKCogQ05nZXRfY2hhcikgKGludDE2KTsNCglOREIgKgljZGVjbAkoKiBD TmdldF9OREIpIChpbnQxNik7DQoJaW50MTYJY2RlY2wJKCogQ05nZXRfYmxvY2spIChpbnQxNiwg dm9pZCAqLCBpbnQxNik7DQoJdm9pZAljZGVjbAkoKiBob3VzZWtlZXApICh2b2lkKTsNCglpbnQx NgljZGVjbAkoKiByZXNvbHZlKSAoY2hhciAqLCBjaGFyICoqLCB1aW50MzIgKiwgaW50MTYpOw0K CXZvaWQJY2RlY2wJKCogc2VyX2Rpc2FibGUpICh2b2lkKTsNCgl2b2lkCWNkZWNsCSgqIHNlcl9l bmFibGUpICh2b2lkKTsNCglpbnQxNgljZGVjbAkoKiBzZXRfZmxhZykgKGludDE2KTsNCgl2b2lk CWNkZWNsCSgqIGNsZWFyX2ZsYWcpIChpbnQxNik7DQoJQ0lCICoJY2RlY2wJKCogQ05nZXRpbmZv KSAoaW50MTYpOw0KCWludDE2CWNkZWNsCSgqIG9uX3BvcnQpIChjaGFyICopOw0KCXZvaWQJY2Rl Y2wJKCogb2ZmX3BvcnQpIChjaGFyICopOw0KCWludDE2CWNkZWNsCSgqIHNldHZzdHIpIChjaGFy ICosIGNoYXIgKik7DQoJaW50MTYJY2RlY2wJKCogcXVlcnlfcG9ydCkgKGNoYXIgKik7DQoJaW50 MTYJY2RlY2wJKCogQ05nZXRzKSAoaW50MTYsIGNoYXIgKiwgaW50MTYsIGNoYXIpOw0KCWludDE2 CWNkZWNsCSgqIElDTVBfc2VuZCkgKHVpbnQzMiwgdWludDgsIHVpbnQ4LCB2b2lkICosIHVpbnQx Nik7DQoJaW50MTYJY2RlY2wJKCogSUNNUF9oYW5kbGVyKSAoaW50MTYgY2RlY2wgKCopIChJUF9E R1JBTSAqKSwgaW50MTYpOw0KCXZvaWQJY2RlY2wJKCogSUNNUF9kaXNjYXJkKSAoSVBfREdSQU0g Kik7DQoJaW50MTYJY2RlY2wJKCogVENQX2luZm8pIChpbnQxNiwgVENQSUIgKik7DQoJaW50MTYJ Y2RlY2wJKCogY250cmxfcG9ydCkgKGNoYXIgKiwgdWludDMyLCBpbnQxNik7DQoJaW50MTYJY2Rl Y2wJKCogVURQX2luZm8pIChpbnQxNiwgVURQSUIgKik7DQoJaW50MTYJY2RlY2wJKCogUkFXX29w ZW4pKHVpbnQzMik7DQoJaW50MTYJY2RlY2wJKCogUkFXX2Nsb3NlKShpbnQxNik7DQoJaW50MTYJ Y2RlY2wJKCogUkFXX291dCkoaW50MTYsIHZvaWQgKiwgaW50MTYsIHVpbnQzMik7DQoJaW50MTYg CWNkZWNsCSgqIENOX3NldG9wdCkoaW50MTYsIGludDE2LCBjb25zdCB2b2lkICosIGludDE2KTsN CglpbnQxNiAJY2RlY2wJKCogQ05fZ2V0b3B0KShpbnQxNiwgaW50MTYsIHZvaWQgKiwgaW50MTYg Kik7DQoJdm9pZAljZGVjbAkoKiBDTmZyZWVfTkRCKShpbnQxNiwgTkRCICopOw0KfQlUUEw7DQoN CmV4dGVybglUUEwJKnRwbDsNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoJRGVmaW5pdGlvbnMg b2YgaW50ZXJuYWwgc3VibWFjcm9zIG5lZWRlZCBmb3IgbWFjcm9zIGZ1cnRoZXIgYmVsb3cuCQkq Lw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojaWZuZGVmCV9fR05VQ19fDQovKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8NCi8qIFRoZSBtYWNyb3MgaW4gdGhpcyBjbGF1c2UgYXJlIGZvciBQdXJlX0MgYW5k IG90aGVyIG5vcm1hbCBjb21waWxlcnMgdGhhdAkqLw0KLyogYXJlIGF3YXJlIG9mIHRoZSBBdGFy aSBzdGFuZGFyZCBvZiBwYXNzaW5nIGFyZ3VtZW50cyBpbiBmaXR0aW5nIHNpemVzIG9uICovDQov KiBzdGFjaywgc28gYSBzaG9ydCBpbnQgd2lsbCB1c2UgYSBzaW5nbGUgMTYgYml0IHdvcmQsIGV2 ZW4gaWYgdGhlIGRlZmF1bHQgKi8NCi8qICdpbnQnIHNpemUgZm9yIHRoYXQgY29tcGlsZXIgaXMg c2V0IHRvIDMyLWJpdCBsZW5ndGguCQkJCQkqLw0KLyogVGhvc2UgYXJlIGRpZmZlcmVudCB0aGlu Z3MsIGFuZCBzaG91bGQgYmUgc2VwYXJhdGVseSBjb250cm9sbGVkIG9wdGlvbnMuCSovDQovKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1RpbkdfdmZfdihmdW5jKQkJCQkoKGZ1bmMpKCkp DQojZGVmaW5lCVNUaW5HX3dmX3YoZnVuYykJCQkJKChmdW5jKSgpKQ0KI2RlZmluZQlTVGluR192 Zl9wKGZ1bmMsIHgpCQkJCSgoZnVuYykoeCkpDQojZGVmaW5lCVNUaW5HX3ZmX3MoZnVuYywgeCkJ CQkJKChmdW5jKSh4KSkNCiNkZWZpbmUJU1RpbkdfdmZfRChmdW5jLCB4KQkJCQkoKGZ1bmMpKHgp KQ0KI2RlZmluZQlTVGluR193Zl93KGZ1bmMsIHgpCQkJCSgoZnVuYykoeCkpDQojZGVmaW5lCVNU aW5HX3dmX0woZnVuYywgeCkJCQkJKChmdW5jKSh4KSkNCiNkZWZpbmUJU1RpbkdfQ2ZfdyhmdW5j LCB4KQkJCQkoKGZ1bmMpKHgpKQ0KI2RlZmluZQlTVGluR19OZl93KGZ1bmMsIHgpCQkJCSgoZnVu YykoeCkpDQojZGVmaW5lCVNUaW5HX3dmX3MoZnVuYywgeCkJCQkJKChmdW5jKSh4KSkNCiNkZWZp bmUJU1RpbkdfbGZfdyhmdW5jLCB4KQkJCQkoKGZ1bmMpKHgpKQ0KI2RlZmluZQlTVGluR19zZl93 KGZ1bmMsIHgpCQkJCSgoZnVuYykoeCkpDQojZGVmaW5lCVNUaW5HX3NmX3MoZnVuYywgeCkJCQkJ KChmdW5jKSh4KSkNCiNkZWZpbmUJU1RpbkdfcGZfbChmdW5jLCB4KQkJCQkoKGZ1bmMpKHgpKQ0K I2RlZmluZQlTVGluR192Zl93TihmdW5jLCB4MSx4MikJCSgoZnVuYykoKHgxKSwoeDIpKSkNCiNk ZWZpbmUJU1Rpbkdfd2Zfd3coZnVuYywgeDEseDIpCQkoKGZ1bmMpKCh4MSksKHgyKSkpDQojZGVm aW5lCVNUaW5HX3dmX3d5KGZ1bmMsIHgxLHgyKQkJKChmdW5jKSgoeDEpLCh4MikpKQ0KI2RlZmlu ZQlTVGluR193Zl93eihmdW5jLCB4MSx4MikJCSgoZnVuYykoKHgxKSwoeDIpKSkNCiNkZWZpbmUJ U1Rpbkdfd2ZfeHcoZnVuYywgeDEseDIpCQkoKGZ1bmMpKCh4MSksKHgyKSkpDQojZGVmaW5lCVNU aW5HX3dmX0xXKGZ1bmMsIHgxLHgyKQkJKChmdW5jKSgoeDEpLCh4MikpKQ0KI2RlZmluZQlTVGlu R193Zl9zcyhmdW5jLCB4MSx4MikJCSgoZnVuYykoKHgxKSwoeDIpKSkNCiNkZWZpbmUJU1Rpbkdf cGZfcGwoZnVuYywgeDEsIHgyKQkJKChmdW5jKSgoeDEpLCh4MikpKQ0KI2RlZmluZQlTVGluR193 Zl93d3coZnVuYywgeDEseDIseDMpCSgoZnVuYykoKHgxKSwoeDIpLCh4MykpKQ0KI2RlZmluZQlT VGluR193Zl93d1AoZnVuYywgeDEseDIseDMpCSgoZnVuYykoKHgxKSwoeDIpLCh4MykpKQ0KI2Rl ZmluZQlTVGluR193Zl93cHcoZnVuYywgeDEseDIseDMpCSgoZnVuYykoKHgxKSwoeDIpLCh4Mykp KQ0KI2RlZmluZQlTVGluR193Zl9zTHcoZnVuYywgeDEseDIseDMpCSgoZnVuYykoKHgxKSwoeDIp LCh4MykpKQ0KI2RlZmluZQlTVGluR193Zl9MV1dXKGZ1bmMsIHgxLHgyLHgzLHg0KQkoKGZ1bmMp KCh4MSksKHgyKSwoeDMpLCh4NCkpKQ0KI2RlZmluZQlTVGluR193Zl93c3diKGZ1bmMsIHgxLHgy LHgzLHg0KQkoKGZ1bmMpKCh4MSksKHgyKSwoeDMpLCh4NCkpKQ0KI2RlZmluZQlTVGluR193Zl9z U1J3KGZ1bmMsIHgxLHgyLHgzLHg0KQkoKGZ1bmMpKCh4MSksKHgyKSwoeDMpLCh4NCkpKQ0KI2Rl ZmluZQlTVGluR193Zl93d3B3KGZ1bmMsIHgxLHgyLHgzLHg0KQkoKGZ1bmMpKCh4MSksKHgyKSwo eDMpLCh4NCkpKQ0KI2RlZmluZQlTVGluR193Zl93d3BXKGZ1bmMsIHgxLHgyLHgzLHg0KQkoKGZ1 bmMpKCh4MSksKHgyKSwoeDMpLCh4NCkpKQ0KI2RlZmluZQlTVGluR193Zl93cHdsKGZ1bmMsIHgx LHgyLHgzLHg0KQkoKGZ1bmMpKCh4MSksKHgyKSwoeDMpLCh4NCkpKQ0KI2RlZmluZQlTVGluR193 Zl9MQkJwVyhmdW5jLCB4MSx4Mix4Myx4NCx4NSkJKChmdW5jKSgoeDEpLCh4MiksKHgzKSwoeDQp LCh4NSkpKQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZWxzZQkvKiBlbHNlIF9fR05VQ19fIGlz IGRlZmluZWQgKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogVGhlIG1hY3JvcyBiZWxvdyBh bGxvdyBHbnUgQyB0byBmdW5jdGlvbiB3aXRoIFNUaW5HIEFQSSByZWdhcmRsZXNzIG9mCSovDQov KiB3aGV0aGVyIGRlZmF1bHQgJ2ludCcgc2l6ZSBpcyAxNiBvciAzMiBiaXRzLCBkZXNwaXRlIHRo ZSBmYWN0IHRoYXQgdGhlCSovDQovKiBsYXR0ZXIgc2V0dGluZyBub3JtYWxseSBjYXVzZXMgR251 IEMgdG8gcGFzcyBzaG9ydCBhcmd1bWVudHMgd3JvbmdseS4JKi8NCi8qIChBcyBkZWZpbmVkIGJ5 IHRoZSBzdGFuZGFyZHMgc2V0IGJ5IEF0YXJpIGZvciBUT1MgY29tcGF0aWJsZSBzeXN0ZW1zLikJ Ki8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2lmbmRlZglBTkRfTUVNT1JZCQkvKiBiZWNhdXNl ICdvc2JpbmQuaCcgdXNlcyBzaW1pbGFyIG1ldGhvZHMuLi4gKi8NCiNpZgkJKChfX0dOVUNfXyA+ IDIpIHx8IChfX0dOVUNfTUlOT1JfXyA+IDUpKQ0KI2RlZmluZQlBTkRfTUVNT1JZICwgIm1lbW9y eSINCiNlbHNlCQkJCQkJLyogZWxzZSBmb3IgYW5jaWVudCBjb21waWxlciB2ZXJzaW9ucyAqLw0K I2RlZmluZQlBTkRfTUVNT1JZDQojZGVmaW5lCV9fZXh0ZW5zaW9uX18NCiNlbmRpZg0KI2VuZGlm DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1RpbkdfdmZfdihmdW5jKQkJCQlcDQpf X2V4dGVuc2lvbl9fCQkJCQkJCVwNCih7CV9fYXNtX18gdm9sYXRpbGUJCQkJCVwNCgkoIgltb3Zs CSUwLGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkiCS8qIGVuZCBvZiBjb2RlICovCQkJ CVwNCgk6CS8qIG5vIG91dHB1dHMgKi8JCQkJXA0KCToJImciCQkoZnVuYykJCQkJCVwNCgk6CSJk MCIsImQxIiwiZDIiLCJhMCIsImExIgkJXA0KCUFORF9NRU1PUlkJCQkJCQkJXA0KCSk7CQkJCQkJ CQkJXA0KCTsJLyogVGhpcyBtYWtlcyB2YWx1ZSAndm9pZCcgKi8JXA0KfSkNCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0qLw0KI2RlZmluZQlTVGluR193Zl92KGZ1bmMpCQkJCVwNCl9fZXh0ZW5zaW9uX18J CQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50MTYgcmV0diBfX2FzbV9fKCJkMCIpOwlcDQoJX19hc21f XyB2b2xhdGlsZQkJCQkJXA0KCSgiCW1vdmwJJTEsYTA7CQkJCQlcDQoJCWpzcgkJYTBACQkJCQkJ XA0KCSIJLyogZW5kIG9mIGNvZGUgKi8JCQkJXA0KCToJIj1yIgkocmV0dikJCS8qIG91dCAqLwlc DQoJOgkiZyIJCShmdW5jKQkJLyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEi CQlcDQoJQU5EX01FTU9SWQkJCQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwN Cn0pDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1RpbkdfdmZfcChmdW5jLCBhcmcx KQkJCVwNCl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJdm9pZCAqX2FyZzEgPSAodm9pZCAqKShh cmcxKTsJCVwNCglfX2FzbV9fIHZvbGF0aWxlCQkJCQlcDQoJKCIJbW92bAklMSxzcEAtOwkJCQlc DQoJCW1vdmwJJTAsYTA7CQkJCQlcDQoJCWpzcgkJYTBAOwkJCQkJXA0KCQlhZGRxdwkjNCxzcAkJ CQkJXA0KCSIJLyogZW5kIG9mIGNvZGUgKi8JCQkJXA0KCToJLyogbm8gb3V0cHV0cyAqLwkJCQlc DQoJOgkiZyIJCShmdW5jKQkJCQkJXA0KCSwJInIiCQkoX2FyZzEpCQkJCQlcDQoJOgkiZDAiLCJk MSIsImQyIiwiYTAiLCJhMSIJCVwNCglBTkRfTUVNT1JZCQkJCQkJCVwNCgkpOwkJCQkJCQkJCVwN Cgk7CS8qIFRoaXMgbWFrZXMgdmFsdWUgJ3ZvaWQnICovCVwNCn0pDQovKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8NCiNkZWZpbmUJU1RpbkdfdmZfcyhmdW5jLCBhcmcxKQkJCVwNCl9fZXh0ZW5zaW9uX18J CQkJCQkJXA0KKHsJY2hhciAqX2FyZzEgPSAoY2hhciAqKShhcmcxKTsJCVwNCglfX2FzbV9fIHZv bGF0aWxlCQkJCQlcDQoJKCIJbW92bAklMSxzcEAtOwkJCQlcDQoJCW1vdmwJJTAsYTA7CQkJCQlc DQoJCWpzcgkJYTBAOwkJCQkJXA0KCQlhZGRxdwkjNCxzcAkJCQkJXA0KCSIJLyogZW5kIG9mIGNv ZGUgKi8JCQkJXA0KCToJLyogbm8gb3V0cHV0cyAqLwkJCQlcDQoJOgkiZyIJCShmdW5jKQkJCQkJ XA0KCSwJInIiCQkoX2FyZzEpCQkJCQlcDQoJOgkiZDAiLCJkMSIsImQyIiwiYTAiLCJhMSIJCVwN CglBTkRfTUVNT1JZCQkJCQkJCVwNCgkpOwkJCQkJCQkJCVwNCgk7CS8qIFRoaXMgbWFrZXMgdmFs dWUgJ3ZvaWQnICovCVwNCn0pDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1Rpbkdf dmZfRChmdW5jLCBhcmcxKQkJCVwNCl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJSVBfREdSQU0g Kl9hcmcxID0gKElQX0RHUkFNICopKGFyZzEpOwlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJXA0K CSgiCW1vdmwJJTEsc3BALTsJCQkJXA0KCQltb3ZsCSUwLGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJ CQkJCVwNCgkJYWRkcXcJIzQsc3AJCQkJCVwNCgkiCS8qIGVuZCBvZiBjb2RlICovCQkJCVwNCgk6 CS8qIG5vIG91dHB1dHMgKi8JCQkJXA0KCToJImciCQkoZnVuYykJCQkJCVwNCgksCSJyIgkJKF9h cmcxKQkJCQkJXA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJQU5EX01FTU9SWQkJ CQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJOwkvKiBUaGlzIG1ha2VzIHZhbHVlICd2b2lkJyAqLwlc DQp9KQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lCVNUaW5HX3dmX3coZnVuYywgYXJn MSkJCQlcDQpfX2V4dGVuc2lvbl9fCQkJCQkJCVwNCih7CXJlZ2lzdGVyIGludDE2IHJldHYgX19h c21fXygiZDAiKTsJXA0KCWludDE2IF9hcmcxID0gKGludDE2KShhcmcxKTsJCVwNCglfX2FzbV9f IHZvbGF0aWxlCQkJCQlcDQoJKCIJbW92dwklMixzcEAtOwkJCQlcDQoJCW1vdmwJJTEsYTA7CQkJ CQlcDQoJCWpzcgkJYTBAOwkJCQkJXA0KCQlhZGRxdwkjMixzcAkJCQkJXA0KCSIJLyogZW5kIG9m IGNvZGUgKi8JCQkJXA0KCToJIj1yIgkocmV0dikJCS8qIG91dCAqLwlcDQoJOgkiZyIJCShmdW5j KQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzEpCQkvKiBpbiAqLwlcDQoJOgkiZDAiLCJkMSIs ImQyIiwiYTAiLCJhMSIJCVwNCglBTkRfTUVNT1JZCQkJCQkJCVwNCgkpOwkJCQkJCQkJCVwNCgly ZXR2OwkJCQkJCQkJXA0KfSkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZQlTVGluR193 Zl9MKGZ1bmMsIGFyZzEpCQkJXA0KX19leHRlbnNpb25fXwkJCQkJCQlcDQooewlyZWdpc3RlciBp bnQxNiByZXR2IF9fYXNtX18oImQwIik7CVwNCglpbnQzMiBfYXJnMSA9IChpbnQzMikoYXJnMSk7 CQlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJXA0KCSgiCW1vdmwJJTIsc3BALTsJCQkJXA0KCQlt b3ZsCSUxLGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkcXcJIzIsc3AJCQkJCVwN CgkiCS8qIGVuZCBvZiBjb2RlICovCQkJCVwNCgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0K CToJImciCQkoZnVuYykJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8JXA0K CToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJQU5EX01FTU9SWQkJCQkJCQlcDQoJKTsJ CQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwNCn0pDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNk ZWZpbmUJU1RpbkdfQ2ZfdyhmdW5jLCBhcmcxKQkJCVwNCl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0K KHsJcmVnaXN0ZXIgQ0lCICpyZXR2IF9fYXNtX18oImQwIik7CVwNCglpbnQxNiBfYXJnMSA9IChp bnQxNikoYXJnMSk7CQlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJXA0KCSgiCW1vdncJJTIsc3BA LTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkcXcJ IzIsc3AJCQkJCVwNCgkiCS8qIGVuZCBvZiBjb2RlICovCQkJCVwNCgk6CSI9ciIJKHJldHYpCQkv KiBvdXQgKi8JXA0KCToJImciCQkoZnVuYykJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcxKQkJ LyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJQU5EX01FTU9SWQkJ CQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwNCn0pDQovKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8NCiNkZWZpbmUJU1RpbkdfTmZfdyhmdW5jLCBhcmcxKQkJCVwNCl9fZXh0ZW5zaW9u X18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgTkRCICpyZXR2IF9fYXNtX18oImQwIik7CVwNCglpbnQx NiBfYXJnMSA9IChpbnQxNikoYXJnMSk7CQlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJXA0KCSgi CW1vdncJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJ CVwNCgkJYWRkcXcJIzIsc3AJCQkJCVwNCgkiCS8qIGVuZCBvZiBjb2RlICovCQkJCVwNCgk6CSI9 ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0KCToJImciCQkoZnVuYykJCS8qIGluICovCVwNCgksCSJy IgkJKF9hcmcxKQkJLyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJ QU5EX01FTU9SWQkJCQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwNCn0pDQov Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1Rpbkdfd2ZfcyhmdW5jLCBhcmcxKQkJCVwN Cl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50MTYgcmV0diBfX2FzbV9fKCJk MCIpOwlcDQoJY2hhciAqX2FyZzEgPSAoY2hhciAqKShhcmcxKTsJCVwNCglfX2FzbV9fIHZvbGF0 aWxlCQkJCQlcDQoJKCIJbW92bAklMixzcEAtOwkJCQlcDQoJCW1vdmwJJTEsYTA7CQkJCQlcDQoJ CWpzcgkJYTBAOwkJCQkJXA0KCQlhZGRxdwkjNCxzcAkJCQkJXA0KCSIJLyogZW5kIG9mIGNvZGUg Ki8JCQkJXA0KCToJIj1yIgkocmV0dikJCS8qIG91dCAqLwlcDQoJOgkiZyIJCShmdW5jKQkJLyog aW4gKi8JXA0KCSwJInIiCQkoX2FyZzEpCQkvKiBpbiAqLwlcDQoJOgkiZDAiLCJkMSIsImQyIiwi YTAiLCJhMSIJCVwNCglBTkRfTUVNT1JZCQkJCQkJCVwNCgkpOwkJCQkJCQkJCVwNCglyZXR2OwkJ CQkJCQkJXA0KfSkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZQlTVGluR19sZl93KGZ1 bmMsIGFyZzEpCQkJXA0KX19leHRlbnNpb25fXwkJCQkJCQlcDQooewlyZWdpc3RlciBpbnQzMiBy ZXR2IF9fYXNtX18oImQwIik7CVwNCglpbnQxNiBfYXJnMSA9IChpbnQxNikoYXJnMSk7CQlcDQoJ X19hc21fXyB2b2xhdGlsZQkJCQkJXA0KCSgiCW1vdncJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUx LGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkcXcJIzIsc3AJCQkJCVwNCgkiCS8q IGVuZCBvZiBjb2RlICovCQkJCVwNCgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0KCToJImci CQkoZnVuYykJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8JXA0KCToJImQw IiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJQU5EX01FTU9SWQkJCQkJCQlcDQoJKTsJCQkJCQkJ CQlcDQoJcmV0djsJCQkJCQkJCVwNCn0pDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJ U1Rpbkdfc2ZfdyhmdW5jLCBhcmcxKQkJCVwNCl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJcmVn aXN0ZXIgY2hhciAqcmV0diBfX2FzbV9fKCJkMCIpOwlcDQoJaW50MTYgX2FyZzEgPSAoaW50MTYp KGFyZzEpOwkJXA0KCV9fYXNtX18gdm9sYXRpbGUJCQkJCVwNCgkoIgltb3Z3CSUyLHNwQC07CQkJ CVwNCgkJbW92bAklMSxhMDsJCQkJCVwNCgkJanNyCQlhMEA7CQkJCQlcDQoJCWFkZHF3CSMyLHNw CQkJCQlcDQoJIgkvKiBlbmQgb2YgY29kZSAqLwkJCQlcDQoJOgkiPXIiCShyZXR2KQkJLyogb3V0 ICovCVwNCgk6CSJnIgkJKGZ1bmMpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMSkJCS8qIGlu ICovCVwNCgk6CSJkMCIsImQxIiwiZDIiLCJhMCIsImExIgkJXA0KCUFORF9NRU1PUlkJCQkJCQkJ XA0KCSk7CQkJCQkJCQkJXA0KCXJldHY7CQkJCQkJCQlcDQp9KQ0KLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSovDQojZGVmaW5lCVNUaW5HX3NmX3MoZnVuYywgYXJnMSkJCQlcDQpfX2V4dGVuc2lvbl9fCQkJ CQkJCVwNCih7CXJlZ2lzdGVyIGNoYXIgKnJldHYgX19hc21fXygiZDAiKTsJXA0KCWNoYXIgKl9h cmcxID0gKGNoYXIgKikoYXJnMSk7CQlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJXA0KCSgiCW1v dmwJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwN CgkJYWRkcXcJIzQsc3AJCQkJCVwNCgkiCS8qIGVuZCBvZiBjb2RlICovCQkJCVwNCgk6CSI9ciIJ KHJldHYpCQkvKiBvdXQgKi8JXA0KCToJImciCQkoZnVuYykJCS8qIGluICovCVwNCgksCSJyIgkJ KF9hcmcxKQkJLyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJQU5E X01FTU9SWQkJCQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwNCn0pDQovKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1RpbkdfcGZfbChmdW5jLCBhcmcxKQkJCVwNCl9f ZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgdm9pZCogcmV0diBfX2FzbV9fKCJkMCIp OwlcDQoJaW50MzIgX2FyZzEgPSAoaW50MzIpKGFyZzEpOwkJXA0KCV9fYXNtX18gdm9sYXRpbGUJ CQkJCVwNCgkoIgltb3ZsCSUyLHNwQC07CQkJCVwNCgkJbW92bAklMSxhMDsJCQkJCVwNCgkJanNy CQlhMEA7CQkJCQlcDQoJCWFkZHF3CSM0LHNwCQkJCQlcDQoJIgkvKiBlbmQgb2YgY29kZSAqLwkJ CQlcDQoJOgkiPXIiCShyZXR2KQkJLyogb3V0ICovCVwNCgk6CSJnIgkJKGZ1bmMpCQkvKiBpbiAq LwlcDQoJLAkiciIJCShfYXJnMSkJCS8qIGluICovCVwNCgk6CSJkMCIsImQxIiwiZDIiLCJhMCIs ImExIgkJXA0KCUFORF9NRU1PUlkJCQkJCQkJXA0KCSk7CQkJCQkJCQkJXA0KCXJldHY7CQkJCQkJ CQlcDQp9KQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lCVNUaW5HX3ZmX3dOKGZ1bmMs IGFyZzEsYXJnMikJXA0KX19leHRlbnNpb25fXwkJCQkJCQlcDQooewlpbnQxNiBfYXJnMSA9IChp bnQxNikoYXJnMSk7CQlcDQoJTkRCICAqX2FyZzIgPSAoTkRCICopKGFyZzIpOwkJXA0KCV9fYXNt X18gdm9sYXRpbGUJCQkJCVwNCgkoIgltb3ZsCSUyLHNwQC07CQkJCVwNCgkJbW92dwklMSxzcEAt OwkJCQlcDQoJCW1vdmwJJTAsYTA7CQkJCQlcDQoJCWpzcgkJYTBAOwkJCQkJXA0KCQlhZGRxdwkj NCxzcAkJCQkJXA0KCSIJLyogZW5kIG9mIGNvZGUgKi8JCQkJXA0KCToJLyogbm8gb3V0cHV0cyAq LwkJCQlcDQoJOgkiZyIJCShmdW5jKQkJCQkJXA0KCSwJInIiCQkoX2FyZzEpCQkJCQlcDQoJLAki ciIJCShfYXJnMikJCQkJCVwNCgk6CSJkMCIsImQxIiwiZDIiLCJhMCIsImExIgkJXA0KCUFORF9N RU1PUlkJCQkJCQkJXA0KCSk7CQkJCQkJCQkJXA0KCTsJLyogVGhpcyBtYWtlcyB2YWx1ZSAndm9p ZCcgKi8JXA0KfSkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZQlTVGluR193Zl93dyhm dW5jLCBhcmcxLGFyZzIpCVwNCl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50 MTYgcmV0diBfX2FzbV9fKCJkMCIpOwlcDQoJaW50MTYgX2FyZzEgPSAoaW50MTYpKGFyZzEpOwkJ XA0KCWludDE2IF9hcmcyID0gKGludDE2KShhcmcyKTsJCVwNCglfX2FzbV9fIHZvbGF0aWxlCQkJ CQlcDQoJKCIJbW92dwklMyxzcEAtOwkJCQlcDQoJCW1vdncJJTIsc3BALTsJCQkJXA0KCQltb3Zs CSUxLGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkcXcJIzQsc3AJCQkJCVwNCgki CS8qIGVuZCBvZiBjb2RlICovCQkJCVwNCgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0KCToJ ImciCQkoZnVuYykJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8JXA0KCSwJ InIiCQkoX2FyZzIpCQkvKiBpbiAqLwlcDQoJOgkiZDAiLCJkMSIsImQyIiwiYTAiLCJhMSIJCVwN CglBTkRfTUVNT1JZCQkJCQkJCVwNCgkpOwkJCQkJCQkJCVwNCglyZXR2OwkJCQkJCQkJXA0KfSkN Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmluZQlTVGluR193Zl93eShmdW5jLCBhcmcxLGFy ZzIpCVwNCl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50MTYgcmV0diBfX2Fz bV9fKCJkMCIpOwlcDQoJaW50MTYgX2FyZzEgPSAoaW50MTYpKGFyZzEpOwkJXA0KCVRDUElCICpf YXJnMiA9IChUQ1BJQiAqKShhcmcyKTsJCVwNCglfX2FzbV9fIHZvbGF0aWxlCQkJCQlcDQoJKCIJ bW92bAklMyxzcEAtOwkJCQlcDQoJCW1vdncJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJ CQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkcXcJIzYsc3AJCQkJCVwNCgkiCS8qIGVuZCBv ZiBjb2RlICovCQkJCVwNCgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0KCToJImciCQkoZnVu YykJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2Fy ZzIpCQkvKiBpbiAqLwlcDQoJOgkiZDAiLCJkMSIsImQyIiwiYTAiLCJhMSIJCVwNCglBTkRfTUVN T1JZCQkJCQkJCVwNCgkpOwkJCQkJCQkJCVwNCglyZXR2OwkJCQkJCQkJXA0KfSkNCi8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLw0KI2RlZmluZQlTVGluR193Zl93eihmdW5jLCBhcmcxLGFyZzIpCVwNCl9f ZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50MTYgcmV0diBfX2FzbV9fKCJkMCIp OwlcDQoJaW50MTYgX2FyZzEgPSAoaW50MTYpKGFyZzEpOwkJXA0KCVVEUElCICpfYXJnMiA9IChV RFBJQiAqKShhcmcyKTsJCVwNCglfX2FzbV9fIHZvbGF0aWxlCQkJCQlcDQoJKCIJbW92bAklMyxz cEAtOwkJCQlcDQoJCW1vdncJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJCQkJXA0KCQlq c3IJCWEwQDsJCQkJCVwNCgkJYWRkcXcJIzYsc3AJCQkJCVwNCgkiCS8qIGVuZCBvZiBjb2RlICov CQkJCVwNCgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0KCToJImciCQkoZnVuYykJCS8qIGlu ICovCVwNCgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzIpCQkvKiBp biAqLwlcDQoJOgkiZDAiLCJkMSIsImQyIiwiYTAiLCJhMSIJCVwNCglBTkRfTUVNT1JZCQkJCQkJ CVwNCgkpOwkJCQkJCQkJCVwNCglyZXR2OwkJCQkJCQkJXA0KfSkNCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLw0KI2RlZmluZQlTVGluR193Zl94dyhmdW5jLCBhcmcxLGFyZzIpCVwNCl9fZXh0ZW5zaW9u X18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50MTYgcmV0diBfX2FzbV9fKCJkMCIpOwlcDQoJaW50 MTYgY2RlY2wgKCopIChJUF9ER1JBTSAqKSBfYXJnMSA9IChpbnQxNiBjZGVjbCAoKikgKElQX0RH UkFNICopKShhcmcxKTsJCVwNCglpbnQxNiBfYXJnMiA9IChpbnQxNikoYXJnMik7CQlcDQoJX19h c21fXyB2b2xhdGlsZQkJCQkJXA0KCSgiCW1vdncJJTMsc3BALTsJCQkJXA0KCQltb3ZsCSUyLHNw QC07CQkJCVwNCgkJbW92bAklMSxhMDsJCQkJCVwNCgkJanNyCQlhMEA7CQkJCQlcDQoJCWFkZHF3 CSM2LHNwCQkJCQlcDQoJIgkvKiBlbmQgb2YgY29kZSAqLwkJCQlcDQoJOgkiPXIiCShyZXR2KQkJ Lyogb3V0ICovCVwNCgk6CSJnIgkJKGZ1bmMpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMSkJ CS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcyKQkJLyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJk MiIsImEwIiwiYTEiCQlcDQoJQU5EX01FTU9SWQkJCQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0 djsJCQkJCQkJCVwNCn0pDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1Rpbkdfd2Zf TFcoZnVuYywgYXJnMSxhcmcyKQlcDQpfX2V4dGVuc2lvbl9fCQkJCQkJCVwNCih7CXJlZ2lzdGVy IGludDE2IHJldHYgX19hc21fXygiZDAiKTsJXA0KCXVpbnQzMiBfYXJnMSA9ICh1aW50MzIpKGFy ZzEpOwkJXA0KCXVpbnQxNiBfYXJnMiA9ICh1aW50MTYpKGFyZzIpOwkJXA0KCV9fYXNtX18gdm9s YXRpbGUJCQkJCVwNCgkoIgltb3Z3CSUzLHNwQC07CQkJCVwNCgkJbW92bAklMixzcEAtOwkJCQlc DQoJCW1vdmwJJTEsYTA7CQkJCQlcDQoJCWpzcgkJYTBAOwkJCQkJXA0KCQlhZGRxdwkjNixzcAkJ CQkJXA0KCSIJLyogZW5kIG9mIGNvZGUgKi8JCQkJXA0KCToJIj1yIgkocmV0dikJCS8qIG91dCAq LwlcDQoJOgkiZyIJCShmdW5jKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzEpCQkvKiBpbiAq LwlcDQoJLAkiciIJCShfYXJnMikJCS8qIGluICovCVwNCgk6CSJkMCIsImQxIiwiZDIiLCJhMCIs ImExIgkJXA0KCUFORF9NRU1PUlkJCQkJCQkJXA0KCSk7CQkJCQkJCQkJXA0KCXJldHY7CQkJCQkJ CQlcDQp9KQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lCVNUaW5HX3dmX3NzKGZ1bmMs IGFyZzEsYXJnMikJXA0KX19leHRlbnNpb25fXwkJCQkJCQlcDQooewlyZWdpc3RlciBpbnQxNiBy ZXR2IF9fYXNtX18oImQwIik7CVwNCgljaGFyICpfYXJnMSA9IChjaGFyICopKGFyZzEpOwkJXA0K CWNoYXIgKl9hcmcyID0gKGNoYXIgKikoYXJnMik7CQlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJ XA0KCSgiCW1vdmwJJTMsc3BALTsJCQkJXA0KCQltb3ZsCSUyLHNwQC07CQkJCVwNCgkJbW92bAkl MSxhMDsJCQkJCVwNCgkJanNyCQlhMEA7CQkJCQlcDQoJCWFkZHF3CSM4LHNwCQkJCQlcDQoJIgkv KiBlbmQgb2YgY29kZSAqLwkJCQlcDQoJOgkiPXIiCShyZXR2KQkJLyogb3V0ICovCVwNCgk6CSJn IgkJKGZ1bmMpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMSkJCS8qIGluICovCVwNCgksCSJy IgkJKF9hcmcyKQkJLyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJ QU5EX01FTU9SWQkJCQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwNCn0pDQov Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1RpbkdfcGZfcGwoZnVuYywgYXJnMSwgYXJn MikJXA0KX19leHRlbnNpb25fXwkJCQkJCQlcDQooewlyZWdpc3RlciB2b2lkKiByZXR2IF9fYXNt X18oImQwIik7CVwNCgl2b2lkICpfYXJnMSA9ICh2b2lkICopKGFyZzEpOwkJXA0KCWludDMyIF9h cmcyID0gKGludDMyKShhcmcyKTsJCVwNCglfX2FzbV9fIHZvbGF0aWxlCQkJCQlcDQoJKCIJbW92 bAklMyxzcEAtOwkJCQlcDQoJCW1vdmwJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJCQkJ XA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkcXcJIzgsc3AJCQkJCVwNCgkiCS8qIGVuZCBvZiBj b2RlICovCQkJCVwNCgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0KCToJImciCQkoZnVuYykJ CS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzIp CQkvKiBpbiAqLwlcDQoJOgkiZDAiLCJkMSIsImQyIiwiYTAiLCJhMSIJCVwNCglBTkRfTUVNT1JZ CQkJCQkJCVwNCgkpOwkJCQkJCQkJCVwNCglyZXR2OwkJCQkJCQkJXA0KfSkNCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0qLw0KI2RlZmluZQlTVGluR193Zl93d3coZnVuYywgYXJnMSxhcmcyLGFyZzMpCVwN Cl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50MTYgcmV0diBfX2FzbV9fKCJk MCIpOwlcDQoJaW50MTYgX2FyZzEgPSAoaW50MTYpKGFyZzEpOwkJXA0KCWludDE2IF9hcmcyID0g KGludDE2KShhcmcyKTsJCVwNCglpbnQxNiBfYXJnMyA9IChpbnQxNikoYXJnMyk7CQlcDQoJX19h c21fXyB2b2xhdGlsZQkJCQkJXA0KCSgiCW1vdncJJTQsc3BALTsJCQkJXA0KCQltb3Z3CSUzLHNw QC07CQkJCVwNCgkJbW92dwklMixzcEAtOwkJCQlcDQoJCW1vdmwJJTEsYTA7CQkJCQlcDQoJCWpz cgkJYTBAOwkJCQkJXA0KCQlhZGRxdwkjNixzcAkJCQkJXA0KCSIJLyogZW5kIG9mIGNvZGUgKi8J CQkJXA0KCToJIj1yIgkocmV0dikJCS8qIG91dCAqLwlcDQoJOgkiZyIJCShmdW5jKQkJLyogaW4g Ki8JXA0KCSwJInIiCQkoX2FyZzEpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMikJCS8qIGlu ICovCVwNCgksCSJyIgkJKF9hcmczKQkJLyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJkMiIsImEw IiwiYTEiCQlcDQoJQU5EX01FTU9SWQkJCQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJ CQkJCVwNCn0pDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1Rpbkdfd2Zfd3dQKGZ1 bmMsIGFyZzEsYXJnMixhcmczKQlcDQpfX2V4dGVuc2lvbl9fCQkJCQkJCVwNCih7CXJlZ2lzdGVy IGludDE2IHJldHYgX19hc21fXygiZDAiKTsJXA0KCWludDE2IF9hcmcxID0gKGludDE2KShhcmcx KTsJCVwNCglpbnQxNiBfYXJnMiA9IChpbnQxNikoYXJnMik7CQlcDQoJaW50MTYgKl9hcmczID0g KGludDE2ICopKGFyZzMpOwkJXA0KCV9fYXNtX18gdm9sYXRpbGUJCQkJCVwNCgkoIgltb3ZsCSU0 LHNwQC07CQkJCVwNCgkJbW92dwklMyxzcEAtOwkJCQlcDQoJCW1vdncJJTIsc3BALTsJCQkJXA0K CQltb3ZsCSUxLGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkcXcJIzgsc3AJCQkJ CVwNCgkiCS8qIGVuZCBvZiBjb2RlICovCQkJCVwNCgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8J XA0KCToJImciCQkoZnVuYykJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8J XA0KCSwJInIiCQkoX2FyZzIpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMykJCS8qIGluICov CVwNCgk6CSJkMCIsImQxIiwiZDIiLCJhMCIsImExIgkJXA0KCUFORF9NRU1PUlkJCQkJCQkJXA0K CSk7CQkJCQkJCQkJXA0KCXJldHY7CQkJCQkJCQlcDQp9KQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov DQojZGVmaW5lCVNUaW5HX3dmX3dwdyhmdW5jLCBhcmcxLGFyZzIsYXJnMykJXA0KX19leHRlbnNp b25fXwkJCQkJCQlcDQooewlyZWdpc3RlciBpbnQxNiByZXR2IF9fYXNtX18oImQwIik7CVwNCglp bnQxNiBfYXJnMSA9IChpbnQxNikoYXJnMSk7CQlcDQoJdm9pZCAqX2FyZzIgPSAodm9pZCAqKShh cmcyKTsJCVwNCglpbnQxNiBfYXJnMyA9IChpbnQxNikoYXJnMyk7CQlcDQoJX19hc21fXyB2b2xh dGlsZQkJCQkJXA0KCSgiCW1vdncJJTQsc3BALTsJCQkJXA0KCQltb3ZsCSUzLHNwQC07CQkJCVwN CgkJbW92dwklMixzcEAtOwkJCQlcDQoJCW1vdmwJJTEsYTA7CQkJCQlcDQoJCWpzcgkJYTBAOwkJ CQkJXA0KCQlhZGRxdwkjOCxzcAkJCQkJXA0KCSIJLyogZW5kIG9mIGNvZGUgKi8JCQkJXA0KCToJ Ij1yIgkocmV0dikJCS8qIG91dCAqLwlcDQoJOgkiZyIJCShmdW5jKQkJLyogaW4gKi8JXA0KCSwJ InIiCQkoX2FyZzEpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMikJCS8qIGluICovCVwNCgks CSJyIgkJKF9hcmczKQkJLyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlc DQoJQU5EX01FTU9SWQkJCQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwNCn0p DQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiNkZWZpbmUJU1Rpbkdfd2Zfc0x3KGZ1bmMsIGFyZzEs YXJnMixhcmczKQlcDQpfX2V4dGVuc2lvbl9fCQkJCQkJCVwNCih7CXJlZ2lzdGVyIGludDE2IHJl dHYgX19hc21fXygiZDAiKTsJXA0KCWNoYXIgKl9hcmcxID0gKGNoYXIgKikoYXJnMSk7CQlcDQoJ dWludDMyIF9hcmcyID0gKHVpbnQzMikoYXJnMik7CQlcDQoJaW50MTYgX2FyZzMgPSAoaW50MTYp KGFyZzMpOwkJXA0KCV9fYXNtX18gdm9sYXRpbGUJCQkJCVwNCgkoIgltb3Z3CSU0LHNwQC07CQkJ CVwNCgkJbW92bAklMyxzcEAtOwkJCQlcDQoJCW1vdmwJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUx LGEwOwkJCQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkYXcJIzEwLHNwCQkJCQlcDQoJIgkv KiBlbmQgb2YgY29kZSAqLwkJCQlcDQoJOgkiPXIiCShyZXR2KQkJLyogb3V0ICovCVwNCgk6CSJn IgkJKGZ1bmMpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMSkJCS8qIGluICovCVwNCgksCSJy IgkJKF9hcmcyKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzMpCQkvKiBpbiAqLwlcDQoJOgki ZDAiLCJkMSIsImQyIiwiYTAiLCJhMSIJCVwNCglBTkRfTUVNT1JZCQkJCQkJCVwNCgkpOwkJCQkJ CQkJCVwNCglyZXR2OwkJCQkJCQkJXA0KfSkNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2RlZmlu ZQlTVGluR193Zl9MV1dXKGZ1bmMsIGFyZzEsYXJnMixhcmczLGFyZzQpCVwNCl9fZXh0ZW5zaW9u X18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50MTYgcmV0diBfX2FzbV9fKCJkMCIpOwlcDQoJdWlu dDMyIF9hcmcxID0gKHVpbnQzMikoYXJnMSk7CQlcDQoJdWludDE2IF9hcmcyID0gKHVpbnQxNiko YXJnMik7CQlcDQoJdWludDE2IF9hcmczID0gKHVpbnQxNikoYXJnMyk7CQlcDQoJdWludDE2IF9h cmc0ID0gKHVpbnQxNikoYXJnNCk7CQlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJXA0KCSgiCW1v dncJJTUsc3BALTsJCQkJXA0KCQltb3Z3CSU0LHNwQC07CQkJCVwNCgkJbW92dwklMyxzcEAtOwkJ CQlcDQoJCW1vdmwJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJCQkJXA0KCQlqc3IJCWEw QDsJCQkJCVwNCgkJYWRkYXcJIzEwLHNwCQkJCQlcDQoJIgkvKiBlbmQgb2YgY29kZSAqLwkJCQlc DQoJOgkiPXIiCShyZXR2KQkJLyogb3V0ICovCVwNCgk6CSJnIgkJKGZ1bmMpCQkvKiBpbiAqLwlc DQoJLAkiciIJCShfYXJnMSkJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcyKQkJLyogaW4gKi8J XA0KCSwJInIiCQkoX2FyZzMpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnNCkJCS8qIGluICov CVwNCgk6CSJkMCIsImQxIiwiZDIiLCJhMCIsImExIgkJXA0KCUFORF9NRU1PUlkJCQkJCQkJXA0K CSk7CQkJCQkJCQkJXA0KCXJldHY7CQkJCQkJCQlcDQp9KQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov DQojZGVmaW5lCVNUaW5HX3dmX3dzd2IoZnVuYywgYXJnMSxhcmcyLGFyZzMsYXJnNCkJXA0KX19l eHRlbnNpb25fXwkJCQkJCQlcDQooewlyZWdpc3RlciBpbnQxNiByZXR2IF9fYXNtX18oImQwIik7 CVwNCglpbnQxNiBfYXJnMSA9IChpbnQxNikoYXJnMSk7CQlcDQoJY2hhciAqX2FyZzIgPSAoY2hh ciAqKShhcmcyKTsJCVwNCglpbnQxNiBfYXJnMyA9IChpbnQxNikoYXJnMyk7CQlcDQoJY2hhciBf YXJnNCA9IChjaGFyKShhcmc0KTsJCVwNCglfX2FzbV9fIHZvbGF0aWxlCQkJCQlcDQoJKCIJbW92 YgklNSxzcEAtOwkJCQlcDQoJCW1vdncJJTQsc3BALTsJCQkJXA0KCQltb3ZsCSUzLHNwQC07CQkJ CVwNCgkJbW92dwklMixzcEAtOwkJCQlcDQoJCW1vdmwJJTEsYTA7CQkJCQlcDQoJCWpzcgkJYTBA OwkJCQkJXA0KCQlhZGRhdwkjMTAsc3AJCQkJCVwNCgkiCS8qIGVuZCBvZiBjb2RlICovCQkJCVwN Cgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0KCToJImciCQkoZnVuYykJCS8qIGluICovCVwN CgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzIpCQkvKiBpbiAqLwlc DQoJLAkiciIJCShfYXJnMykJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmc0KQkJLyogaW4gKi8J XA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJQU5EX01FTU9SWQkJCQkJCQlcDQoJ KTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwNCn0pDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8N CiNkZWZpbmUJU1Rpbkdfd2Zfc1NSdyhmdW5jLCBhcmcxLGFyZzIsYXJnMyxhcmc0KQlcDQpfX2V4 dGVuc2lvbl9fCQkJCQkJCVwNCih7CXJlZ2lzdGVyIGludDE2IHJldHYgX19hc21fXygiZDAiKTsJ XA0KCWNoYXIgKl9hcmcxID0gKGNoYXIgKikoYXJnMSk7CQlcDQoJY2hhciAqKl9hcmcyID0gKGNo YXIgKiopKGFyZzIpOwkJXA0KCXVpbnQzMiAqX2FyZzMgPSAodWludDMyICopKGFyZzMpOwkJXA0K CWludDE2IF9hcmc0ID0gKGludDE2KShhcmc0KTsJCVwNCglfX2FzbV9fIHZvbGF0aWxlCQkJCQlc DQoJKCIJbW92dwklNSxzcEAtOwkJCQlcDQoJCW1vdmwJJTQsc3BALTsJCQkJXA0KCQltb3ZsCSUz LHNwQC07CQkJCVwNCgkJbW92bAklMixzcEAtOwkJCQlcDQoJCW1vdmwJJTEsYTA7CQkJCQlcDQoJ CWpzcgkJYTBAOwkJCQkJXA0KCQlhZGRhdwkjMTQsc3AJCQkJCVwNCgkiCS8qIGVuZCBvZiBjb2Rl ICovCQkJCVwNCgk6CSI9ciIJKHJldHYpCQkvKiBvdXQgKi8JXA0KCToJImciCQkoZnVuYykJCS8q IGluICovCVwNCgksCSJyIgkJKF9hcmcxKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzIpCQkv KiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMykJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmc0KQkJ LyogaW4gKi8JXA0KCToJImQwIiwiZDEiLCJkMiIsImEwIiwiYTEiCQlcDQoJQU5EX01FTU9SWQkJ CQkJCQlcDQoJKTsJCQkJCQkJCQlcDQoJcmV0djsJCQkJCQkJCVwNCn0pDQovKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8NCiNkZWZpbmUJU1Rpbkdfd2Zfd3dwdyhmdW5jLCBhcmcxLGFyZzIsYXJnMyxhcmc0 KQlcDQpfX2V4dGVuc2lvbl9fCQkJCQkJCVwNCih7CXJlZ2lzdGVyIGludDE2IHJldHYgX19hc21f XygiZDAiKTsJXA0KCWludDE2IF9hcmcxID0gKGludDE2KShhcmcxKTsJCVwNCglpbnQxNiBfYXJn MiA9IChpbnQxNikoYXJnMik7CQlcDQoJdm9pZCAqX2FyZzMgPSAodm9pZCAqKShhcmczKTsJCVwN CglpbnQxNiBfYXJnNCA9IChpbnQxNikoYXJnNCk7CQlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJ XA0KCSgiCW1vdncJJTUsc3BALTsJCQkJXA0KCQltb3ZsCSU0LHNwQC07CQkJCVwNCgkJbW92dwkl MyxzcEAtOwkJCQlcDQoJCW1vdncJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJCQkJXA0K CQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkYXcJIzEwLHNwCQkJCQlcDQoJIgkvKiBlbmQgb2YgY29k ZSAqLwkJCQlcDQoJOgkiPXIiCShyZXR2KQkJLyogb3V0ICovCVwNCgk6CSJnIgkJKGZ1bmMpCQkv KiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMSkJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmcyKQkJ LyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzMpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnNCkJ CS8qIGluICovCVwNCgk6CSJkMCIsImQxIiwiZDIiLCJhMCIsImExIgkJXA0KCUFORF9NRU1PUlkJ CQkJCQkJXA0KCSk7CQkJCQkJCQkJXA0KCXJldHY7CQkJCQkJCQlcDQp9KQ0KLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSovDQojZGVmaW5lCVNUaW5HX3dmX3d3cFcoZnVuYywgYXJnMSxhcmcyLGFyZzMsYXJn NCkJXA0KX19leHRlbnNpb25fXwkJCQkJCQlcDQooewlyZWdpc3RlciBpbnQxNiByZXR2IF9fYXNt X18oImQwIik7CVwNCglpbnQxNiBfYXJnMSA9IChpbnQxNikoYXJnMSk7CQlcDQoJaW50MTYgX2Fy ZzIgPSAoaW50MTYpKGFyZzIpOwkJXA0KCXZvaWQgKl9hcmczID0gKHZvaWQgKikoYXJnMyk7CQlc DQoJaW50MTYgKl9hcmc0ID0gKGludDE2ICopKGFyZzQpOwkJXA0KCV9fYXNtX18gdm9sYXRpbGUJ CQkJCVwNCgkoIgltb3ZsCSU1LHNwQC07CQkJCVwNCgkJbW92bAklNCxzcEAtOwkJCQlcDQoJCW1v dncJJTMsc3BALTsJCQkJXA0KCQltb3Z3CSUyLHNwQC07CQkJCVwNCgkJbW92bAklMSxhMDsJCQkJ CVwNCgkJanNyCQlhMEA7CQkJCQlcDQoJCWFkZGF3CSMxMCxzcAkJCQkJXA0KCSIJLyogZW5kIG9m IGNvZGUgKi8JCQkJXA0KCToJIj1yIgkocmV0dikJCS8qIG91dCAqLwlcDQoJOgkiZyIJCShmdW5j KQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzEpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJn MikJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmczKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2Fy ZzQpCQkvKiBpbiAqLwlcDQoJOgkiZDAiLCJkMSIsImQyIiwiYTAiLCJhMSIJCVwNCglBTkRfTUVN T1JZCQkJCQkJCVwNCgkpOwkJCQkJCQkJCVwNCglyZXR2OwkJCQkJCQkJXA0KfSkNCi8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLw0KI2RlZmluZQlTVGluR193Zl93cHdsKGZ1bmMsIGFyZzEsYXJnMixhcmcz LGFyZzQpCVwNCl9fZXh0ZW5zaW9uX18JCQkJCQkJXA0KKHsJcmVnaXN0ZXIgaW50MTYgcmV0diBf X2FzbV9fKCJkMCIpOwlcDQoJaW50MTYgX2FyZzEgPSAoaW50MTYpKGFyZzEpOwkJXA0KCXZvaWQg KiBfYXJnMiA9ICh2b2lkICopKGFyZzIpOwkJXA0KCWludDE2IF9hcmczID0gKGludDE2KShhcmcz KTsJCVwNCglpbnQzMiBfYXJnNCA9IChpbnQzMikoYXJnNCk7CQlcDQoJX19hc21fXyB2b2xhdGls ZQkJCQkJXA0KCSgiCW1vdmwJJTUsc3BALTsJCQkJXA0KCQltb3Z3CSU0LHNwQC07CQkJCVwNCgkJ bW92bAklMyxzcEAtOwkJCQlcDQoJCW1vdncJJTIsc3BALTsJCQkJXA0KCQltb3ZsCSUxLGEwOwkJ CQkJXA0KCQlqc3IJCWEwQDsJCQkJCVwNCgkJYWRkYXcJIzEwLHNwCQkJCQlcDQoJIgkvKiBlbmQg b2YgY29kZSAqLwkJCQlcDQoJOgkiPXIiCShyZXR2KQkJLyogb3V0ICovCVwNCgk6CSJnIgkJKGZ1 bmMpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnMSkJCS8qIGluICovCVwNCgksCSJyIgkJKF9h cmcyKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzMpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShf YXJnNCkJCS8qIGluICovCVwNCgk6CSJkMCIsImQxIiwiZDIiLCJhMCIsImExIgkJXA0KCUFORF9N RU1PUlkJCQkJCQkJXA0KCSk7CQkJCQkJCQkJXA0KCXJldHY7CQkJCQkJCQlcDQp9KQ0KLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSovDQojZGVmaW5lCVNUaW5HX3dmX0xCQnBXKGZ1bmMsIGFyZzEsYXJnMixh cmczLGFyZzQsYXJnNSkJXA0KX19leHRlbnNpb25fXwkJCQkJCQlcDQooewlyZWdpc3RlciBpbnQx NiByZXR2IF9fYXNtX18oImQwIik7CVwNCgl1aW50MzIgX2FyZzEgPSAodWludDMyKShhcmcxKTsJ CVwNCgl1aW50OCBfYXJnMiA9ICh1aW50OCkoYXJnMik7CQlcDQoJdWludDggX2FyZzMgPSAodWlu dDgpKGFyZzMpOwkJXA0KCXZvaWQgKl9hcmc0ID0gKHZvaWQgKikoYXJnNCk7CQlcDQoJdWludDE2 IF9hcmc1ID0gKHVpbnQxNikoYXJnNSk7CQlcDQoJX19hc21fXyB2b2xhdGlsZQkJCQkJXA0KCSgi CW1vdncJJTYsc3BALTsJCQkJXA0KCQltb3ZsCSU1LHNwQC07CQkJCVwNCgkJbW92YgklNCxzcEAt OwkJCQlcDQoJCW1vdmIJJTMsc3BALTsJCQkJXA0KCQltb3ZsCSUyLHNwQC07CQkJCVwNCgkJbW92 bAklMSxhMDsJCQkJCVwNCgkJanNyCQlhMEA7CQkJCQlcDQoJCWFkZGF3CSMxNCxzcAkJCQkJXA0K CSIJLyogZW5kIG9mIGNvZGUgKi8JCQkJXA0KCToJIj1yIgkocmV0dikJCS8qIG91dCAqLwlcDQoJ OgkiZyIJCShmdW5jKQkJLyogaW4gKi8JXA0KCSwJInIiCQkoX2FyZzEpCQkvKiBpbiAqLwlcDQoJ LAkiciIJCShfYXJnMikJCS8qIGluICovCVwNCgksCSJyIgkJKF9hcmczKQkJLyogaW4gKi8JXA0K CSwJInIiCQkoX2FyZzQpCQkvKiBpbiAqLwlcDQoJLAkiciIJCShfYXJnNSkJCS8qIGluICovCVwN Cgk6CSJkMCIsImQxIiwiZDIiLCJhMCIsImExIgkJXA0KCUFORF9NRU1PUlkJCQkJCQkJXA0KCSk7 CQkJCQkJCQkJXA0KCXJldHY7CQkJCQkJCQlcDQp9KQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoj ZW5kaWYJLyogX19HTlVDX18gKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoJRGVmaW5pdGlv bnMgb2YgdHJhbnNwb3J0IG1hY3JvcyBmb3IgZGlyZWN0IHVzZS4JCQkJCQkJKi8NCi8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLw0KI2RlZmluZSBLUm1hbGxvYyh4KQkJCQlTVGluR19wZl9sKHRwbC0+S1Jt YWxsb2MsICh4KSkNCiNkZWZpbmUgS1JmcmVlKHgpCQkJCVNUaW5HX3ZmX3AodHBsLT5LUmZyZWUs ICh4KSkNCiNkZWZpbmUgS1JnZXRmcmVlKHgpCQkJU1RpbkdfbGZfdyh0cGwtPktSZ2V0ZnJlZSwg KHgpKQ0KI2RlZmluZSBLUnJlYWxsb2MoeCx5KQkJCVNUaW5HX3BmX3BsKHRwbC0+S1JyZWFsbG9j LCAoeCksICh5KSkNCiNkZWZpbmUgZ2V0X2Vycl90ZXh0KHgpCQkJU1Rpbkdfc2Zfdyh0cGwtPmdl dF9lcnJfdGV4dCwgKHgpKQ0KI2RlZmluZSBnZXR2c3RyKHgpCQkJCVNUaW5HX3NmX3ModHBsLT5n ZXR2c3RyLCAoeCkpDQojZGVmaW5lIGNhcnJpZXJfZGV0ZWN0KCkJCVNUaW5HX3dmX3YodHBsLT5j YXJyaWVyX2RldGVjdCwgKHgpKQ0KI2RlZmluZSBUQ1Bfb3Blbih3LHgseSx6KQkJU1Rpbkdfd2Zf TFdXVyh0cGwtPlRDUF9vcGVuLCAodyksKHgpLCh5KSwoeikpDQojZGVmaW5lIFRDUF9jbG9zZSh4 LHkseikJCVNUaW5HX3dmX3d3UCh0cGwtPlRDUF9jbG9zZSwgKHgpLCh5KSwoeikpDQojZGVmaW5l IFRDUF9zZW5kKHgseSx6KQkJCVNUaW5HX3dmX3dwdyh0cGwtPlRDUF9zZW5kLCAoeCksKHkpLCh6 KSkNCiNkZWZpbmUgVENQX3dhaXRfc3RhdGUoeCx5LHopCVNUaW5HX3dmX3d3dyh0cGwtPlRDUF93 YWl0X3N0YXRlLCAoeCksKHkpLCh6KSkNCiNkZWZpbmUgVENQX2Fja193YWl0KHgseSkJCVNUaW5H X3dmX3d3KHRwbC0+VENQX2Fja193YWl0LCAoeCksKHkpKQ0KI2RlZmluZSBVRFBfb3Blbih4LHkp CQkJU1Rpbkdfd2ZfTFcodHBsLT5VRFBfb3BlbiwgKHgpLCh5KSkNCiNkZWZpbmUgVURQX2Nsb3Nl KHgpCQkJU1Rpbkdfd2Zfdyh0cGwtPlVEUF9jbG9zZSwgKHgpKQ0KI2RlZmluZSBVRFBfc2VuZCh4 LHkseikJCQlTVGluR193Zl93cHcodHBsLT5VRFBfc2VuZCwgKHgpLCh5KSwoeikpDQojZGVmaW5l IENOa2ljayh4KQkJCQlTVGluR193Zl93KHRwbC0+Q05raWNrLCAoeCkpDQojZGVmaW5lCUNOYnl0 ZV9jb3VudCh4KQkJCVNUaW5HX3dmX3codHBsLT5DTmJ5dGVfY291bnQsICh4KSkNCiNkZWZpbmUg Q05nZXRfY2hhcih4KQkJCVNUaW5HX3dmX3codHBsLT5DTmdldF9jaGFyLCAoeCkpDQojZGVmaW5l IENOZ2V0X05EQih4KQkJCVNUaW5HX05mX3codHBsLT5DTmdldF9OREIsICh4KSkNCiNkZWZpbmUg Q05nZXRfYmxvY2soeCx5LHopCQlTVGluR193Zl93cHcodHBsLT5DTmdldF9ibG9jaywgKHgpLCh5 KSwoeikpDQojZGVmaW5lIGhvdXNla2VlcCgpCQkJCVNUaW5HX3ZmX3YodHBsLT5ob3VzZWtlZXAp DQojZGVmaW5lIHJlc29sdmUodyx4LHkseikJCVNUaW5HX3dmX3NTUncodHBsLT5yZXNvbHZlLCAo dyksKHgpLCh5KSwoeikpDQojZGVmaW5lIHNlcl9kaXNhYmxlKCkJCQlTVGluR192Zl92KHRwbC0+ c2VyX2Rpc2FibGUpDQojZGVmaW5lIHNlcl9lbmFibGUoKQkJCVNUaW5HX3ZmX3YodHBsLT5zZXJf ZW5hYmxlKQ0KI2RlZmluZSBzZXRfZmxhZyh4KQkJCQlTVGluR193Zl93KHRwbC0+c2V0X2ZsYWcs ICh4KSkNCiNkZWZpbmUgY2xlYXJfZmxhZyh4KQkJCVNUaW5HX3dmX3codHBsLT5jbGVhcl9mbGFn LCAoeCkpDQojZGVmaW5lIENOZ2V0aW5mbyh4KQkJCVNUaW5HX0NmX3codHBsLT5DTmdldGluZm8s ICh4KSkNCiNkZWZpbmUgb25fcG9ydCh4KQkJCQlTVGluR193Zl9zKHRwbC0+b25fcG9ydCwgKHgp KQ0KI2RlZmluZSBvZmZfcG9ydCh4KQkJCQlTVGluR192Zl9zKHRwbC0+b2ZmX3BvcnQsICh4KSkN CiNkZWZpbmUgc2V0dnN0cih4LHkpCQkJU1Rpbkdfd2Zfc3ModHBsLT5zZXR2c3RyLCAoeCksKHkp KQ0KI2RlZmluZSBxdWVyeV9wb3J0KHgpCQkJU1Rpbkdfd2Zfcyh0cGwtPnF1ZXJ5X3BvcnQsICh4 KSkNCiNkZWZpbmUgQ05nZXRzKHcseCx5LHopCQkJU1Rpbkdfd2Zfd3N3Yih0cGwtPkNOZ2V0cywg KHgpKQ0KI2RlZmluZSBJQ01QX3NlbmQodix3LHgseSx6KQlTVGluR193Zl9MQkJwVyh0cGwtPklD TVBfc2VuZCwgKHYpLCh3KSwoeCksKHkpLCh6KSkNCiNkZWZpbmUgSUNNUF9oYW5kbGVyKHgseSkJ CVNUaW5HX3dmX3h3KHRwbC0+SUNNUF9oYW5kbGVyLCAoeCksKHkpKQ0KI2RlZmluZSBJQ01QX2Rp c2NhcmQoeCkJCQlTVGluR192Zl9EKHRwbC0+SUNNUF9kaXNjYXJkLCAoeCkpDQojZGVmaW5lIFRD UF9pbmZvKHgseSkJCQlTVGluR193Zl93eSh0cGwtPlRDUF9pbmZvLCAoeCksKHkpKQ0KI2RlZmlu ZSBjbnRybF9wb3J0KHgseSx6KQkJU1Rpbkdfd2Zfc0x3KHRwbC0+Y250cmxfcG9ydCwgKHgpLCh5 KSwoeikpDQojZGVmaW5lIFVEUF9pbmZvKHgseSkJCQlTVGluR193Zl93eCh0cGwtPlVEUF9pbmZv LCAoeCksKHkpKQ0KI2RlZmluZSBSQVdfb3Blbih4KQkJCQlTVGluR193Zl9MKHRwbC0+UkFXX29w ZW4sICh4KSkNCiNkZWZpbmUgUkFXX2Nsb3NlKHgpCQkJU1Rpbkdfd2Zfdyh0cGwtPlJBV19jbG9z ZSwgKHgpKQ0KI2RlZmluZQlSQVdfb3V0KHcseCx5LHopCQlTVGluR193Zl93cHdsKHRwbC0+UkFX X291dCwodyksKHgpLCh5KSwoeikpDQojZGVmaW5lCUNOX3NldG9wdCh3LHgseSx6KQkJU1Rpbkdf d2Zfd3dwdyh0cGwtPkNOX3NldG9wdCwodyksKHgpLCh5KSwoeikpDQojZGVmaW5lCUNOX2dldG9w dCh3LHgseSx6KQkJU1Rpbkdfd2Zfd3dwVyh0cGwtPkNOX2dldG9wdCwodyksKHgpLCh5KSwoeikp DQojZGVmaW5lCUNOZnJlZV9OREIoeCx5KQkJCVNUaW5HX3ZmX3dOKHRwbC0+Q05mcmVlX05EQiwo eCksKHkpKQ0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKglFcnJvciByZXR1cm4gdmFsdWVzLgkJ CQkJCQkJCQkJCQkqLw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojZGVmaW5lCUVfTk9STUFMCQkw CQkvKiBObyBlcnJvciBvY2N1cmVkIC4uLgkJCQkJCSovDQojZGVmaW5lCUVfT0JVRkZVTEwJCS0x CQkvKiBPdXRwdXQgYnVmZmVyIGlzIGZ1bGwJCQkJCSovDQojZGVmaW5lCUVfTk9EQVRBCQktMgkJ LyogTm8gZGF0YSBhdmFpbGFibGUJCQkJCQkqLw0KI2RlZmluZQlFX0VPRgkJCS0zCQkvKiBFT0Yg ZnJvbSByZW1vdGUJCQkJCQkJKi8NCiNkZWZpbmUJRV9SUkVTRVQJCS00CQkvKiBSZXNldCByZWNl aXZlZCBmcm9tIHJlbW90ZQkJCQkqLw0KI2RlZmluZQlFX1VBCQkJLTUJCS8qIFVuYWNjZXB0YWJs ZSBwYWNrZXQgcmVjZWl2ZWQsIHJlc2V0CQkqLw0KI2RlZmluZQlFX05PTUVNCQkJLTYJCS8qIFNv bWV0aGluZyBmYWlsZWQgZHVlIHRvIGxhY2sgb2YgbWVtb3J5CSovDQojZGVmaW5lCUVfUkVGVVNF CQktNwkJLyogQ29ubmVjdGlvbiByZWZ1c2VkIGJ5IHJlbW90ZQkJCQkqLw0KI2RlZmluZQlFX0JB RFNZTgkJLTgJCS8qIEEgU1lOIHdhcyByZWNlaXZlZCBpbiB0aGUgd2luZG93CQkJKi8NCiNkZWZp bmUJRV9CQURIQU5ETEUJCS05CQkvKiBCYWQgY29ubmVjdGlvbiBoYW5kbGUgdXNlZC4JCQkJKi8N CiNkZWZpbmUJRV9MSVNURU4JCS0xMAkJLyogVGhlIGNvbm5lY3Rpb24gaXMgaW4gTElTVEVOIHN0 YXRlCQkqLw0KI2RlZmluZQlFX05PQ0NCCQkJLTExCQkvKiBObyBmcmVlIENDQidzIGF2YWlsYWJs ZQkJCQkJKi8NCiNkZWZpbmUJRV9OT0NPTk5FQ1RJT04JLTEyCQkvKiBObyBjb25uZWN0aW9uIG1h dGNoZXMgdGhpcyBwYWNrZXQgKFRDUCkJKi8NCiNkZWZpbmUJRV9DT05ORUNURkFJTAktMTMJCS8q IEZhaWx1cmUgdG8gY29ubmVjdCB0byByZW1vdGUgcG9ydCAoVENQKQkqLw0KI2RlZmluZQlFX0JB RENMT1NFCQktMTQJCS8qIEludmFsaWQgVENQX2Nsb3NlKCkgcmVxdWVzdGVkCQkJKi8NCiNkZWZp bmUJRV9VU0VSVElNRU9VVAktMTUJCS8qIEEgdXNlciBmdW5jdGlvbiB0aW1lZCBvdXQJCQkJKi8N CiNkZWZpbmUJRV9DTlRJTUVPVVQJCS0xNgkJLyogQSBjb25uZWN0aW9uIHRpbWVkIG91dAkJCQkJ Ki8NCiNkZWZpbmUJRV9DQU5UUkVTT0xWRQktMTcJCS8qIENhbid0IHJlc29sdmUgdGhlIGhvc3Ru YW1lCQkJCSovDQojZGVmaW5lCUVfQkFERE5BTUUJCS0xOAkJLyogRG9tYWluIG5hbWUgb3IgZG90 dGVkIGRlYy4gYmFkIGZvcm1hdAkqLw0KI2RlZmluZQlFX0xPU1RDQVJSSUVSCS0xOQkJLyogVGhl IG1vZGVtIGRpc2Nvbm5lY3RlZAkJCQkJKi8NCiNkZWZpbmUJRV9OT0hPU1ROQU1FCS0yMAkJLyog SG9zdG5hbWUgZG9lcyBub3QgZXhpc3QJCQkJCSovDQojZGVmaW5lCUVfRE5TV09SS0xJTUlUCS0y MQkJLyogUmVzb2x2ZXIgV29yayBsaW1pdCByZWFjaGVkCQkJCSovDQojZGVmaW5lCUVfTk9OQU1F U0VSVkVSCS0yMgkJLyogTm8gbmFtZXNlcnZlcnMgY291bGQgYmUgZm91bmQgZm9yIHF1ZXJ5CSov DQojZGVmaW5lCUVfRE5TQkFERk9STUFUCS0yMwkJLyogQmFkIGZvcm1hdCBvZiBETlMgcXVlcnkJ CQkJCSovDQojZGVmaW5lCUVfVU5SRUFDSEFCTEUJLTI0CQkvKiBEZXN0aW5hdGlvbiB1bnJlYWNo YWJsZQkJCQkJKi8NCiNkZWZpbmUJRV9ETlNOT0FERFIJCS0yNQkJLyogTm8gYWRkcmVzcyByZWNv cmRzIGV4aXN0IGZvciBob3N0CQkqLw0KI2RlZmluZQlFX05PUk9VVElORQkJLTI2CQkvKiBSb3V0 aW5lIHVuYXZhaWxhYmxlCQkJCQkJKi8NCiNkZWZpbmUJRV9MT0NLRUQJCS0yNwkJLyogTG9ja2Vk IGJ5IGFub3RoZXIgYXBwbGljYXRpb24JCQkqLw0KI2RlZmluZQlFX0ZSQUdNRU5UCQktMjgJCS8q IEVycm9yIGR1cmluZyBmcmFnbWVudGF0aW9uCQkJCSovDQojZGVmaW5lCUVfVFRMRVhDRUVECQkt MjkJCS8qIFRpbWUgVG8gTGl2ZSBvZiBhbiBJUCBwYWNrZXQgZXhjZWVkZWQJKi8NCiNkZWZpbmUJ RV9QQVJBTUVURVIJCS0zMAkJLyogUHJvYmxlbSB3aXRoIGEgcGFyYW1ldGVyCQkJCQkqLw0KI2Rl ZmluZQlFX0JJR0JVRgkJLTMxCQkvKiBJbnB1dCBidWZmZXIgaXMgdG9vIHNtYWxsIGZvciBkYXRh CQkqLw0KI2RlZmluZQlFX0ZOQVZBSUwJCS0zMgkJLyogRnVuY3Rpb24gbm90IGF2YWlsYWJsZQkJ CQkJKi8NCiNkZWZpbmUJRV9MQVNURVJST1IJCTMyCQkvKiBBQlMgb2YgbGFzdCBlcnJvciBjb2Rl IGluIHRoaXMgbGlzdAkJKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI2VuZGlmIC8qIFNUSU5H X1RSQU5TUFJUX0ggKi8NCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoJRW5kIG9mIGZpbGU6CVRS QU5TUFJULkgJCQkJCQkJCQkJCQkqLw0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQo= --000325558ab624374b047ce8cf51 Content-Type: text/x-csrc; charset=US-ASCII; name="inet.c" Content-Disposition: attachment; filename="inet.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g4bnvgy51 I2luY2x1ZGUgImdlbmVyYWwuaCIKI2luY2x1ZGUgPHRyYW5zcHJ0Lmg+CgpzdGF0aWMgYm9vbGVh biB0aW1lb3V0ID0gRkFMU0U7ClRQTCAqdHBsID0gTlVMTDsKRFJWX0xJU1QgKmRyaXZlcnMgPSBO VUxMOwoKCnN0YXRpYyB2b2lkIHNpZ19hbHJtIChsb25nIHNpZykKewoJKHZvaWQpc2lnOwoJdGlt ZW91dCA9IFRSVUU7Cn0KCgp2b2lkIGluaXRfc3RpayAodm9pZCkKewoJaWYgKCAhdHBsKSAKCXsK CQlzdHJ1Y3QgewoJCQlsb25nIGNrdGFnOwoJCQlsb25nIGNrdmFsdWU7CgkJfSAgKiBqYXIgPSAo dm9pZCopU2V0ZXhjICgweDVBMCAvNCwgKHZvaWQgKCopKCkpLTEpOwoJCWxvbmcgdGFnID0gJ1NU aUsnOwoJCgkJd2hpbGUgKGphci0+Y2t0YWcpIHsKCQkJaWYgKGphci0+Y2t0YWcgPT0gdGFnKSB7 CgkJCQlkcml2ZXJzID0gKERSVl9MSVNUKilqYXItPmNrdmFsdWU7CgkJCQlpZiAoc3RyY21wIChN QUdJQywgZHJpdmVycy0+bWFnaWMpID09IDApIHsKCQkJCQl0cGwgPSAoVFBMKilnZXRfZGZ0YWIo VFJBTlNQT1JUX0RSSVZFUik7CgkJCQl9CgkJCQlicmVhazsKCQkJfQoJCQlqYXIrKzsKCQl9Cgl9 Cn0KCgoKdm9pZCBpbmV0X2Nsb3NlIChsb25nIGZoKQp7CglpZiggZmggPj0gMCkgCgl7CgkJaWYg KCB0cGwgJiYgdXNlX3N0aW5nKSAKCQkJVENQX2Nsb3NlICgoaW50MTYpZmgsIDAsIE5VTEwpOwoJ CWVsc2UKCQkJY2xvc2UgKGZoKTsKCX0KfQoKCnNob3J0IGluZXRfaG9zdF9hZGRyICggY29uc3Qg Y2hhciAqIG5hbWUsIGxvbmcgKiBhZGRyKQp7CglzaG9ydCByZXQgPSAtMTsKCglpZiAoIHRwbCAm JiB1c2Vfc3RpbmcpIAoJewoJLy8JemRlYnVnKCAiU1RJTkciKTsKCQoJCWlmICggcmVzb2x2ZSAo KGNoYXIqKW5hbWUsIE5VTEwsICggdWludDMyKilhZGRyLCAxKSA+IDApCgkJCXJldCA9IEVfT0s7 Cgl9CgllbHNlCgl7CQoJLy8JemRlYnVnKCAiTWludE5ldCIpOwkKCgkJc3RydWN0IGhvc3RlbnQg Kmhvc3QgPSBnZXRob3N0YnluYW1lIChuYW1lKTsKCgkJaWYgKGhvc3QpIAoJCXsKCQkJKmFkZHIg PSAqKGxvbmcqKWhvc3QtPmhfYWRkcjsKCQkJcmV0ICAgPSBFX09LOwoJCX0gCgkJZWxzZQoJCQly ZXQgICA9IC1lcnJubzsKCX0JCgoJcmV0dXJuIHJldDsKfQoKbG9uZyBpbmV0X2Nvbm5lY3QgKGxv bmcgYWRkciwgbG9uZyBwb3J0LCBsb25nIHRvdXRfc2VjKQp7Cglsb25nIGZoID0gLTE7CgoJaWYg KCB0cGwgJiYgdXNlX3N0aW5nKSAKCXsKCQlsb25nIGFscm0gPSBQc2lnbmFsICgxNC8qU0lHQUxS TSovLCAobG9uZylzaWdfYWxybSk7CgkJaWYgKGFscm0gPj0gMCkgewoJCQl0aW1lb3V0ID0gRkFM U0U7CgkJCVRhbGFybSAodG91dF9zZWMpOwoJCX0KCQlpZiAoKGZoID0gVENQX29wZW4gKGFkZHIs IChpbnQxNilwb3J0LCAwLCAxMDI0KSkgPCAwKSB7CgkJCWZoID0gLSggZmggPT0gLTEwMDFMID8g RVRJTUVET1VUIDogMSk7CgkJfQoJCWlmIChhbHJtID49IDApIHsKCQkJVGFsYXJtICgwKTsKCQkJ UHNpZ25hbCAoMTQvKlNJR0FMUk0qLywgYWxybSk7CgkJfQoJfQoJZWxzZQoJewoJCXN0cnVjdCBz b2NrYWRkcl9pbiBzX2luOwoJCXNfaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CgkJc19pbi5zaW5f cG9ydCAgID0gaHRvbnMgKChzaG9ydClwb3J0KTsKCQlzX2luLnNpbl9hZGRyICAgPSAqKHN0cnVj dCBpbl9hZGRyICopJmFkZHI7CgkJaWYgKChmaCA9IHNvY2tldCggUEZfSU5FVCwgU09DS19TVFJF QU0sIDApKSA8IDApIHsKCQkJZmggPSAtZXJybm87CgkJfSBlbHNlIHsKCQkJbG9uZyBhbHJtID0g UHNpZ25hbCAoMTQvKlNJR0FMUk0qLywgKGxvbmcpc2lnX2Fscm0pOwkKCQkJaWYgKGFscm0gPj0g MCkgewoJCQkJdGltZW91dCA9IEZBTFNFOwoJCQkJVGFsYXJtICh0b3V0X3NlYyk7CgkJCX0KCQkJ aWYgKGNvbm5lY3QgKGZoLCAoc3RydWN0IHNvY2thZGRyICopJnNfaW4sIHNpemVvZiAoc19pbikp IDwgMCkgewoJCQkJY2xvc2UgKGZoKTsKCQkJCWZoID0gLSggdGltZW91dCAmJiBlcnJubyA9PSBF SU5UUiA/IEVUSU1FRE9VVCA6IGVycm5vKTsKCQkJCX0KCQkJaWYgKGFscm0gPj0gMCkgewoJCQkJ VGFsYXJtICgwKTsKCQkJCVBzaWduYWwgKDE0LypTSUdBTFJNKi8sIGFscm0pOwoJCQl9CgkJfQoJ fQoJCglyZXR1cm4gZmg7Cn0KCgpsb25nIGluZXRfc2VuZCggbG9uZyBmaCwgY29uc3QgY2hhciAq IGJ1Ziwgc2l6ZV90IGxlbikKewoJbG9uZyByZXQgPSAtMTsKCgoJaWYgKCB0cGwgJiYgdXNlX3N0 aW5nKSAKCXsKCQlpZiAoKHJldCA9IFRDUF9zZW5kICgoaW50MTYpZmgsIChjaGFyKilidWYsIChp bnQxNilsZW4pKSA9PSAwKQoJCQlyZXQgPSBsZW47Cgl9CgllbHNlCgkJcmV0ID0gRndyaXRlKCBm aCwgbGVuLCBidWYpOwoKCXJldHVybiByZXQ7Cn0KCmxvbmcgaW5ldF9yZWN2IChsb25nIGZoLCBj aGFyICpidWYsIHNpemVfdCBsZW4pCnsKCWxvbmcgcmV0ID0gMDsKCglpZiAoIHRwbCAmJiB1c2Vf c3RpbmcpIAoJewoJCXdoaWxlIChsZW4pIAoJCXsKCQkJc2hvcnQgbiA9IENOYnl0ZV9jb3VudCAo KGludDE2KWZoKTsKCgkJCWlmIChuIDwgRV9OT0RBVEEpIAoJCQl7CgkJCQlpZiAoICFyZXQpIHJl dCA9IChuID09IEVfRU9GIHx8IG4gPT0gRV9SUkVTRVQgPyAtMzE2IDogLTEpOwoJCQkJYnJlYWs7 CgkJCX0gCgkJCWVsc2UgaWYgKG4gPiAwKSAKCQkJewoJCQkJaWYgKG4gPiBsZW4pIG4gPSBsZW47 CgkJCQlpZiAoKG4gPSBDTmdldF9ibG9jayAoKGludDE2KWZoLCBidWYsIG4pKSA8IDApIAoJCQkJ ewoJCQkJCWlmICghcmV0KSByZXQgPSAtMTsKCQkJCQlicmVhazsKCQkJCX0gCgkJCQllbHNlIAoJ CQkJewoJCQkJCXJldCArPSBuOwoJCQkJCWJ1ZiArPSBuOwoJCQkJCWxlbiAtPSBuOwoJCQkJfQoJ CQl9IGVsc2UgYnJlYWs7CgoJCX0KCX0KCWVsc2UKCXsKCQl3aGlsZSAobGVuKSAKCQl7CgkJCWxv bmcgbiA9IEZpbnN0YXQgKGZoKTsKCQkJaWYgKG4gPCAwKSB7CgkJCQlpZiAoIXJldCkgcmV0ID0g bjsKCQkJCWJyZWFrOwoJCQl9IGVsc2UgaWYgKG4gPT0gMHg3RkZGRkZGRikgeyAvKiBjb25uZWN0 aW9uIGNsb3NlZCAqLwoJCQkJaWYgKCAhcmV0KSByZXQgPSAtMzE2OwoJCQkJYnJlYWs7CgkJCX0g ZWxzZSBpZiAobiAmJiAobiA9IEZyZWFkIChmaCwgKCBuIDwgbGVuID8gbiA6IGxlbiksIGJ1Zikp IDwgMCkgewoJCQkJaWYgKCFyZXQpIHJldCA9IC1lcnJubzsKCQkJCWJyZWFrOwoJCQl9IGVsc2Ug aWYgKG4pIHsKCQkJCXJldCArPSBuOwoJCQkJYnVmICs9IG47CgkJCQlsZW4gLT0gbjsKCQkJfSBl bHNlIGJyZWFrOwoJCX0KCX0KCXJldHVybiByZXQ7Cn0KCg== --000325558ab624374b047ce8cf51--