Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tBvbi-0070pr-7j for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Nov 2024 12:39:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tBvbf-009SLL-42 for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Nov 2024 12:39:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tBvbe-009SLB-D5 for pgsql-hackers@lists.postgresql.org; Fri, 15 Nov 2024 12:39:23 +0000 Received: from meesny.iki.fi ([195.140.195.201]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tBvbY-0024PW-Vl for pgsql-hackers@postgresql.org; Fri, 15 Nov 2024 12:39:22 +0000 Received: from [192.168.1.110] (dsl-hkibng22-50ddb7-241.dhcp.inet.fi [80.221.183.241]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by meesny.iki.fi (Postfix) with ESMTPSA id 4Xqc5v6gsMzyNR; Fri, 15 Nov 2024 14:39:15 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1731674356; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=EIrBgrEk0Q8sHn83Ge3/CRyRIHCzTrq/eVc10ttnuYs=; b=LLx9HFhpNlybXnCwSnpkUYKXuebKhpVB3oUtxUCnCzV5wxuyOaqztW+NGvwVIBLZS4ksLS M/1/Cl4U1nB4ZGYfTQ47AvyYeiExikxUnmQ05B+X2XT9AyfS09ZbCahefv8+P/ybIJtP+k FTTcY6SmGdLvjdEIStIxxDICdUwvbfg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1731674356; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=EIrBgrEk0Q8sHn83Ge3/CRyRIHCzTrq/eVc10ttnuYs=; b=DN51O5MXQtoLiCFfdLxjY/4YTRVo4vfLOyU812TL8vWGfrDAit//qLo0eZnQ+KXd6MJ4kY wUOnkJBznPK1Cs8zBRjJ/ifMxnBX3MPf9l9GAZyqA0w44YqhLmcLZUof0dr27/fHb/oMNL KWKeTYgxHGoWUSLxyWpjF7QQaFu35s0= ARC-Seal: i=1; s=meesny; d=iki.fi; t=1731674356; a=rsa-sha256; cv=none; b=ieZxq2gMoMrcyH/UtnXKO727U3t9W/zaLNBYPbi1ypxep14mYOaPQw3GGTXV90MohWi6CQ m59OXMXoLYSFjQ/yjSCEiLLMZa0cyO6B/WoDhg2OdnrAKhgseiGSU0wqG7CLQcFkxNfWhs tWB+7n5XJJeCCuezh+LJBteLkQ42b84= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------VerE4Lm7eJBFFHNIufM5R041" Message-ID: Date: Fri, 15 Nov 2024 14:39:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Interrupts vs signals From: Heikki Linnakangas To: Michael Paquier , Robert Haas Cc: Thomas Munro , Fujii Masao , pgsql-hackers , Andres Freund References: <3b996d73-2a10-4072-a58d-0386af0cbb78@iki.fi> <46f047a1-bfd5-406a-a0f3-97205d9529ad@iki.fi> <476672e7-62f1-4cab-a822-f3a8e949dd3f@iki.fi> <391abe21-413e-4d91-a650-b663af49500c@iki.fi> Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------VerE4Lm7eJBFFHNIufM5R041 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 04/11/2024 21:41, Heikki Linnakangas wrote: > I pushed the preliminary cleanup patches from this patch set earlier, > only the main patches remain. Attached is a new version of those, with > mostly comment cleanups. Another rebased version attached, no other changes. I think this is pretty much ready to be committed, but I'd love to get some review. After this, some work remains to publish the compatibility header on the wiki, along with some instructions on how to upgrade your extension code. -- Heikki Linnakangas Neon (https://neon.tech) --------------VerE4Lm7eJBFFHNIufM5R041 Content-Type: text/x-patch; charset=UTF-8; name="v4-0001-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="v4-0001-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSAxNTE4Mjg2YWMzNjg1NTRjOWM4MjllODU1NzBlY2U1ZDhkYWFiODRkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgNCBOb3YgMjAyNCAyMTowMDowMyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjQgMS8zXSBSZXBsYWNlIExhdGNoZXMgd2l0aCBJbnRlcnJ1cHRz CgpUaGUgTGF0Y2ggd2FzIGEgZmxhZywgd2l0aCBhbiBpbnRlci1wcm9jZXNzIHNpZ25hbGxp bmcgbWVjaGFuaXNtIHRoYXQKYWxsb3dlZCBhIHByb2Nlc3MgdG8gd2FpdCBmb3IgdGhlIExh dGNoIHRvIGJlIHNldC4gTXkgb3JpZ2luYWwgdmlzaW9uCmZvciBMYXRjaGVzIHdhcyB0aGF0 IHlvdSBjb3VsZCBoYXZlIGRpZmZlcmVudCBsYXRjaGVzIGZvciBkaWZmZXJlbnQKdGhpbmdz IHRoYXQgeW91IG5lZWQgdG8gd2FpdCBmb3IsIGJ1dCBidXQgaW4gcHJhY3RpY2UsIGFsbW9z dCBhbGwgY29kZQp1c2VkIG9uZSAicHJvY2VzcyBsYXRjaCIgdGhhdCB3YXMgc2hhcmVkIGZv ciBhbGwgd2FrZXVwcy4gVGhlIG9ubHkKZXhjZXB0aW9uIHdhcyB0aGUgInJlY292ZXJ5V2Fr ZXVwTGF0Y2giLiBJIHRoaW5rIHRoZSByZWFzb24gdGhhdCB3ZQplbmRlZCB1cCBqdXN0IHNo YXJpbmcgdGhlIHNhbWUgbGF0Y2ggZm9yIGFsbCB3YWtldXBzIGlzIHRoYXQgaXQgd2FzCmN1 bWJlcnNvbWUgaW4gcHJhY3RpY2UgdG8gZGVhbCB3aXRoIG11bHRpcGxlIGxhdGNoZXMuIEZv ciBzdGFydGVycywKdGhlcmUgd2FzIG5vIG1hY2hpbmVyeSBmb3Igd2FpdGluZyBmb3IgbXVs dGlwbGUgbGF0Y2hlcyBhdCB0aGUgc2FtZQp0aW1lLiBTZWNvbmRseSwgY2hhbmdpbmcgdGhl ICJvd25lcnNoaXAiIG9mIGEgbGF0Y2ggbmVlZGVkIGV4dHJhCmxvY2tpbmcgb3Igb3RoZXIg Y29vcmRpbmF0aW9uLiBUaGlyZGx5LCBlYWNoIGludGVyLXByb2Nlc3MgbGF0Y2gKbmVlZGVk IHRvIGJlIGluaXRpYWxpemVkIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCB0aW1lLgoKVGhpcyBw YXRjaCBlbWJyYWNlcyB0aGUgcmVhbGl0eSBvZiBob3cgTGF0Y2hlcyB3ZXJlIHVzZWQsIGFu ZCByZXBsYWNlcwp0aGUgTGF0Y2hlcyB3aXRoIHBlci1wcm9jZXNzIGludGVycnVwdCBtYXNr LiBZb3UgY2FuIG5vIGxvbmdlcgphbGxvY2F0ZSBMYXRjaGVzIGluIGFyYml0cmFyeSBzaGFy ZWQgbWVtb3J5IHN0cnVjdHMsIGFuIGludGVycnVwdCBpcwphbHdheXMgZGlyZWN0ZWQgYXQg YSBwYXJ0aWN1bGFyIHByb2Nlc3MsIGFkZHJlc3NlZCBieSBpdHMgUHJvY051bWJlci4KRWFj aCBwcm9jZXNzIGhhcyBhIGJpdG1hc2sgb2YgcGVuZGluZyBpbnRlcnJ1cHRzIGluIFBHUFJP Qy4KClRoaXMgY29tbWl0IGludHJvZHVjZXMgdHdvIGludGVycnVwdCBiaXRzLiBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAKcmVwbGFjZXMgdGhlIGdlbmVyYWwgcHVycG9zZSBwZXItcHJv Y2VzcyBsYXRjaC4gQWxsIGNvZGUgdGhhdApwcmV2aW91c2x5IHNldCBhIHByb2Nlc3MncyBw cm9jZXNzIGxhdGNoIG5vdyBzZXRzIGl0cwpJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAgaW50 ZXJydXB0IGJpdCBpbnN0ZWFkLgoKVGhlIG90aGVyIGludGVycnVwdCBiaXQsIElOVEVSUlVQ VF9SRUNPVkVSWV9DT05USU5VRSwgcmVwbGFjZXMKcmVjb3ZlcnlXYWtldXBMYXRjaC4gV2l0 aCB0aGlzIG5ldyBpbnRlcmZhY2UsIHRoZSBjb2RlIGNhbiBlYXNpbHkgd2FpdApmb3IgdGhl IHJlZ3VsYXIgaW50ZXJydXB0cyAoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKSBhdCB0aGUg c2FtZSB0aW1lCmFzIElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRS4gUHJldmlvdXNseSwg dGhlIGNvZGUgdGhhdCB3YWl0ZWQgb24KcmVjb3ZlcnlXYWtldXBMYXRjaCBoYWQgdG8gcmVz b3J0IHRvIHRpbWVvdXRzIHRvIHJlYWN0IHRvIG90aGVyCnNpZ25hbHMsIGJlY2F1c2UgaXQg d2FzIG5vdCBwb3NzaWJsZSB0byB3YWl0IGZvciB0d28gbGF0Y2hlcyBhdCB0aGUKc2FtZSB0 aW1lLiBQcmV2aW91cyBhdHRlbXB0IGF0IHVuaWZ5aW5nIHRob3NlIHdha2V1cHMgd2FzIGlu IGNvbW1pdAphYzIyOTI5YTI2LCBidXQgdGhhdCB3YXMgcmV2ZXJ0ZWQgaW4gY29tbWl0IDAw ZjY5MGEyMzkgYmVjYXVzZSBpdApjYXVzZWQgYSBsb3Qgb2Ygc3B1cmlvdXMgd2FrZXVwcyB3 aGVuIHN0YXJ0dXAgcHJvY2VzcyB3YXMgd2FpdGluZyBmb3IKcmVjb3ZlcnkgY29uZmxpY3Rz LiBUaGUgbmV3IG1hY2hpbmVyeSBhdm9pZHMgdGhhdCBwcm9ibGVtLCBieSBtYWtpbmcKaXQg ZWFzeSB0byB3YWl0IGZvciB0d28gaW50ZXJydXB0cyBhdCB0aGUgc2FtZSB0aW1lLgoKTW9y ZSBpbnRlcnJ1cHQgYml0cyBhcmUgcGxhbm5lZCBmb3IgZm9sbG93dXAgcGF0Y2hlcywgdG8g cmVwbGFjZSB0aGUKdmFyaW91cyBQcm9jU2lnbmFsIGJpdHMsIGFzIHdlbGwgYXMgQ29uZmln UmVsb2FkUGVuZGluZyBhbmQKU2h1dGRvd25SZXF1ZXN0UGVuZGluZy4KClRoaXMgYWxzbyBt b3ZlcyB0aGUgV2FpdEV2ZW50U2V0IGZ1bmN0aW9ucyB0byBhIGRpZmZlcmVudCBzb3VyY2Ug ZmlsZSwKd2FpdGV2ZW50c2V0LmMuIFRoaXMgc2VwYXJhdGVzIHRoZSBwbGF0Zm9ybS1kZXBl bmRlbnQgY29kZSB3YWl0aW5nIGFuZApzaWduYWxsaW5nIGNvZGUgZnJvbSB0aGUgcGxhdGZv cm0taW5kZXBlbmRlbnQgcGFydHMuCgpSZXZpZXdlZC1ieTogVGhvbWFzIE11bnJvCkRpc2N1 c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvNDc2NjcyZTct NjJmMS00Y2FiLWE4MjItZjNhOGU5NDlkZDNmQGlraS5maQotLS0KIGNvbnRyaWIvcGdfcHJl d2FybS9hdXRvcHJld2FybS5jICAgICAgICAgICAgICB8ICAyMCArLQogY29udHJpYi9wb3N0 Z3Jlc19mZHcvY29ubmVjdGlvbi5jICAgICAgICAgICAgIHwgIDIyICstCiBjb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMv c2dtbC9iZ3dvcmtlci5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZG9jL3Ny Yy9zZ21sL3NvdXJjZXMuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgMTEgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRSAgICAgICAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgIDMxICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgICAgICAgfCAgMTQg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jICAgICAgICB8ICAx MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgICAgIHwg IDkxICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAgICAg IHwgICA2ICstCiBzcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jICAg ICAgfCAgMTggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAg ICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAg ICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAg ICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyAg ICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jICAgICAgICAg ICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3Nz YXBpLmMgICAgICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1v cGVuc3NsLmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJl LmMgICAgICAgICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2VuZC9saWJwcS9wcWNvbW0u YyAgICAgICAgICAgICAgICAgICAgfCAgMjkgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL3BxbXEu YyAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFz aWduYWwuYyAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAgICAgICB8ICAzNyArLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgIDI0ICstCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgICAgICAgICAgICAgICB8ICAyNyArLQogc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAgICAgICAgIHwgIDMzICstCiBzcmMv YmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYyAgICAgICAgICAgICAgfCAgMTEgKy0KIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgICAgICAgICAgICB8ICAxOCArLQog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgICAgICAgIHwgIDI0ICst CiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jICAgICAgICAgICAgfCAgMjMg Ky0KIC4uLi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyAgICAgICB8ICAz MiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwg IDM5ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAg fCAgNTQgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAg ICB8ICAyMyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMu YyAgIHwgIDM1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j ICAgICAgfCAgMjUgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYyAgICAg ICAgICAgICB8ICAyOSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIu YyAgICAgICAgIHwgIDQ3ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl cmZ1bmNzLmMgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jICAgICAgICAgICB8ICAyNyArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm bWdyLmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9m cmVlbGlzdC5jICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01h a2VmaWxlICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv aW50ZXJydXB0LmMgICAgICAgICAgIHwgMTE0ICsrKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zaG1fbXEuYyAgICAgICAgICAgICAgfCAxMDIgKy0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NpbnZhbC5jICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgIDIyICstCiAuLi4vc3Rv cmFnZS9pcGMve2xhdGNoLmMgPT4gd2FpdGV2ZW50c2V0LmN9ICAgfCA2MTYgKysrKysrKy0t LS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxl LmMgfCAgMzQgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAg ICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAg ICAgICAgIHwgMTI3ICsrLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMgICAg ICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAg ICAgICAgICAgICAgIHwgIDI1ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jICAg ICAgICAgICAgICAgICAgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3Rh bXAuYyAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9i YWxzLmMgICAgICAgICAgICAgIHwgICA5IC0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlz Y2luaXQuYyAgICAgICAgICAgICB8ICA2MCArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9w b3N0aW5pdC5jICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC91dGlscy9taXNj L3RpbWVvdXQuYyAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21t Z3IvbWN4dC5jICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2xpYnBx L2xpYnBxLWJlLWZlLWhlbHBlcnMuaCAgICAgICB8ICA0NSArLQogc3JjL2luY2x1ZGUvbGli cHEvbGlicHEuaCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogc3JjL2luY2x1ZGUv c3RvcmFnZS9pbnRlcnJ1cHQuaCAgICAgICAgICAgICAgIHwgMTU5ICsrKysrCiBzcmMvaW5j bHVkZS9zdG9yYWdlL2xhdGNoLmggICAgICAgICAgICAgICAgICAgfCAxOTYgLS0tLS0tCiBz cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0K IHNyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmggICAgICAgICAgICB8IDExOSAr KysrCiBzcmMvcG9ydC9wZ3NsZWVwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDggKy0KIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYyAgICAgICAgICB8 ICAgMiArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jICAgICAgICAg IHwgICA5ICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYyAgICAgICAg ICAgfCAgMTMgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMgICAg ICAgICB8ICAgMyArLQogc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGku YyAgICAgIHwgIDIwICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAg ICAgICAgICAgfCAgIDIgKy0KIDg0IGZpbGVzIGNoYW5nZWQsIDEzOTQgaW5zZXJ0aW9ucygr KSwgMTM4MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9pbnRlcnJ1cHQuYwogcmVuYW1lIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3tsYXRjaC5jID0+IHdhaXRldmVudHNldC5jfSAoNzclKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9pbmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5j bHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5oCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19w cmV3YXJtL2F1dG9wcmV3YXJtLmMgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0u YwppbmRleCBmYWM0MDUxZTFhYS4uNjVhNDIzYzdkZGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfcHJld2FybS9hdXRvcHJld2FybS5jCisrKyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRv cHJld2FybS5jCkBAIC0zNyw4ICszNyw4IEBACiAjaW5jbHVkZSAic3RvcmFnZS9kc20uaCIK ICNpbmNsdWRlICJzdG9yYWdlL2RzbV9yZWdpc3RyeS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv ZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9zbWdyLmgiCkBAIC0yMTYsMTAgKzIxNiwxMCBAQCBhdXRvcHJld2FybV9t YWluKERhdHVtIG1haW5fYXJnKQogCQlpZiAoYXV0b3ByZXdhcm1faW50ZXJ2YWwgPD0gMCkK IAkJewogCQkJLyogV2UncmUgb25seSBkdW1waW5nIGF0IHNodXRkb3duLCBzbyBqdXN0IHdh aXQgZm9yZXZlci4gKi8KLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkg V0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgLTFMLAotCQkJ CQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8 IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAtMUwsCisJCQkJCQkJCSBQR19XQUlUX0VY VEVOU0lPTik7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0yNDMsMTQgKzI0MywxNCBAQCBhdXRv cHJld2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCQkJfQogCiAJCQkvKiBTbGVlcCB1bnRp bCB0aGUgbmV4dCBkdW1wIHRpbWUuICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJCSBkZWxheV9pbl9tcywKLQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04p OworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKKwkJCQkJCQkJIGRlbGF5X2luX21zLAorCQkJCQkJCQkgUEdfV0FJVF9FWFRF TlNJT04pOwogCQl9CiAKIAkJLyogUmVzZXQgdGhlIGxhdGNoLCBsb29wLiAqLwotCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVApOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9j b25uZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXgg MjMyNmYzOTFkMzQuLjRiNDZhN2NjOGNjIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlv bi5jCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdGdyZXNfZmR3LmgiCi0jaW5jbHVkZSAic3Rv cmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKQEAgLTczMSw4ICs3MzEsOCBAQCBkb19zcWxfY29tbWFu ZF9lbmQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzcWwsIGJvb2wgY29uc3VtZV9pbnB1 dCkKIAkvKgogCSAqIElmIHJlcXVlc3RlZCwgY29uc3VtZSB3aGF0ZXZlciBkYXRhIGlzIGF2 YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQuIChOb3RlCiAJICogdGhhdCBpZiBhbGwgZGF0YSBp cyBhdmFpbGFibGUsIHRoaXMgYWxsb3dzIHBnZmR3X2dldF9yZXN1bHQgdG8gY2FsbAotCSAq IFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdExhdGNo T3JTb2NrZXQsIHdoaWNoCi0JICogd291bGQgYmUgbGFyZ2UgY29tcGFyZWQgdG8gdGhlIG92 ZXJoZWFkIG9mIFBRY29uc3VtZUlucHV0LikKKwkgKiBQUWdldFJlc3VsdCB3aXRob3V0IGZv cmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCwKKwkgKiB3aGlj aCB3b3VsZCBiZSBsYXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1l SW5wdXQuKQogCSAqLwogCWlmIChjb25zdW1lX2lucHV0ICYmICFQUWNvbnN1bWVJbnB1dChj b25uKSkKIAkJcGdmZHdfcmVwb3J0X2Vycm9yKEVSUk9SLCBOVUxMLCBjb25uLCBmYWxzZSwg c3FsKTsKQEAgLTEzNjcsNyArMTM2Nyw3IEBAIHBnZmR3X2NhbmNlbF9xdWVyeV9lbmQoUEdj b25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lLCBib29sIGNvbnN1bWVfaW5wdXQpCiAJ LyoKIAkgKiBJZiByZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFi bGUgZnJvbSB0aGUgc29ja2V0LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEgaXMgYXZh aWxhYmxlLCB0aGlzIGFsbG93cyBwZ2Zkd19nZXRfY2xlYW51cF9yZXN1bHQgdG8KLQkgKiBj YWxsIFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdExh dGNoT3JTb2NrZXQsCisJICogY2FsbCBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNpbmcgdGhl IG92ZXJoZWFkIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCwKIAkgKiB3aGljaCB3b3VsZCBi ZSBsYXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1lSW5wdXQuKQog CSAqLwogCWlmIChjb25zdW1lX2lucHV0ICYmICFQUWNvbnN1bWVJbnB1dChjb25uKSkKQEAg LTE0NjEsNyArMTQ2MSw3IEBAIHBnZmR3X2V4ZWNfY2xlYW51cF9xdWVyeV9lbmQoUEdjb25u ICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAkvKgogCSAqIElmIHJlcXVlc3RlZCwgY29u c3VtZSB3aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQuIChOb3Rl CiAJICogdGhhdCBpZiBhbGwgZGF0YSBpcyBhdmFpbGFibGUsIHRoaXMgYWxsb3dzIHBnZmR3 X2dldF9jbGVhbnVwX3Jlc3VsdCB0bwotCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91dCBm b3JjaW5nIHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwKKwkgKiBjYWxsIFBR Z2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdEludGVycnVw dE9yU29ja2V0LAogCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBv dmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVfaW5wdXQg JiYgIVBRY29uc3VtZUlucHV0KGNvbm4pKQpAQCAtMTU0MSwxMiArMTU0MSwxMiBAQCBwZ2Zk d19nZXRfY2xlYW51cF9yZXN1bHQoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1l LCBQR3Jlc3VsdCAqKnJlc3VsdCwKIAkJCQkJcGdmZHdfd2VfY2xlYW51cF9yZXN1bHQgPSBX YWl0RXZlbnRFeHRlbnNpb25OZXcoIlBvc3RncmVzRmR3Q2xlYW51cFJlc3VsdCIpOwogCiAJ CQkJLyogU2xlZXAgdW50aWwgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8KLQkJCQl3YyA9 IFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJCQkgICBXTF9MQVRDSF9TRVQg fCBXTF9TT0NLRVRfUkVBREFCTEUgfAotCQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKLQkJCQkJCQkJ CSAgIGN1cl90aW1lb3V0LCBwZ2Zkd193ZV9jbGVhbnVwX3Jlc3VsdCk7Ci0JCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJCQl3YyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBX TF9TT0NLRVRfUkVBREFCTEUgfAorCQkJCQkJCQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAorCQkJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLAorCQkJCQkJCQkJ CSAgIGN1cl90aW1lb3V0LCBwZ2Zkd193ZV9jbGVhbnVwX3Jlc3VsdCk7CisJCQkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3Rn cmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXgg NTM3MzNkNjQyZDAuLjJkZGZlMTMwMmYyIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuYwpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci90bGlzdC5o IgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwb3N0Z3Jlc19m ZHcuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93 YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCkBAIC03MzU0LDcgKzcz NTQsNyBAQCBwb3N0Z3Jlc0ZvcmVpZ25Bc3luY0NvbmZpZ3VyZVdhaXQoQXN5bmNSZXF1ZXN0 ICphcmVxKQogCQlBc3NlcnQocGVuZGluZ0FyZXEgPT0gYXJlcSk7CiAKIAlBZGRXYWl0RXZl bnRUb1NldChzZXQsIFdMX1NPQ0tFVF9SRUFEQUJMRSwgUFFzb2NrZXQoZnNzdGF0ZS0+Y29u biksCi0JCQkJCSAgTlVMTCwgYXJlcSk7CisJCQkJCSAgMCwgYXJlcSk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9i Z3dvcmtlci5zZ21sCmluZGV4IDJjMzkzMzg1YTkxLi4zMTcxMDU0ZTU1ZCAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Jnd29y a2VyLnNnbWwKQEAgLTIyNyw3ICsyMjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3JvdW5k V29ya2VyCiAgICByZWluaXRpYWxpemVzIHRoZSBjbHVzdGVyIGR1ZSB0byBhIGJhY2tlbmQg ZmFpbHVyZS4gIEJhY2tlbmRzIHdoaWNoIG5lZWQKICAgIHRvIHN1c3BlbmQgZXhlY3V0aW9u IG9ubHkgdGVtcG9yYXJpbHkgc2hvdWxkIHVzZSBhbiBpbnRlcnJ1cHRpYmxlIHNsZWVwCiAg ICByYXRoZXIgdGhhbiBleGl0aW5nOyB0aGlzIGNhbiBiZSBhY2hpZXZlZCBieSBjYWxsaW5n Ci0gICA8ZnVuY3Rpb24+V2FpdExhdGNoKCk8L2Z1bmN0aW9uPi4gTWFrZSBzdXJlIHRoZQor ICAgPGZ1bmN0aW9uPldhaXRJbnRlcnJ1cHQoKTwvZnVuY3Rpb24+LiBNYWtlIHN1cmUgdGhl CiAgICA8bGl0ZXJhbD5XTF9QT1NUTUFTVEVSX0RFQVRIPC9saXRlcmFsPiBmbGFnIGlzIHNl dCB3aGVuIGNhbGxpbmcgdGhhdCBmdW5jdGlvbiwgYW5kCiAgICB2ZXJpZnkgdGhlIHJldHVy biBjb2RlIGZvciBhIHByb21wdCBleGl0IGluIHRoZSBlbWVyZ2VuY3kgY2FzZSB0aGF0CiAg ICA8Y29tbWFuZD5wb3N0Z3JlczwvY29tbWFuZD4gaXRzZWxmIGhhcyB0ZXJtaW5hdGVkLgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dtbCBiL2RvYy9zcmMvc2dtbC9z b3VyY2VzLnNnbWwKaW5kZXggZmE2OGQ0ZDAyNGEuLjliMWZlMTQ3ZDZjIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zb3VyY2Vz LnNnbWwKQEAgLTk4OSwxOSArOTg5LDE5IEBAIE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhNZW1v cnlDb250ZXh0IGNvbnRleHQpCiAgICAgIGNhbGwgYXN5bmMtc2lnbmFsIHNhZmUgZnVuY3Rp b25zIChhcyBkZWZpbmVkIGluIFBPU0lYKSBhbmQgYWNjZXNzCiAgICAgIHZhcmlhYmxlcyBv ZiB0eXBlIDxsaXRlcmFsPnZvbGF0aWxlIHNpZ19hdG9taWNfdDwvbGl0ZXJhbD4uIEEgZmV3 CiAgICAgIGZ1bmN0aW9ucyBpbiA8Y29tbWFuZD5wb3N0Z3JlczwvY29tbWFuZD4gYXJlIGFs c28gZGVlbWVkIHNpZ25hbCBzYWZlLCBpbXBvcnRhbnRseQotICAgICA8ZnVuY3Rpb24+U2V0 TGF0Y2goKTwvZnVuY3Rpb24+LgorICAgICA8ZnVuY3Rpb24+UmFpc2VJbnRlcnJ1cHQoKTwv ZnVuY3Rpb24+LgogICAgIDwvcGFyYT4KICAgICA8cGFyYT4KICAgICAgSW4gbW9zdCBjYXNl cyBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIGRvIG5vdGhpbmcgbW9yZSB0aGFuIG5vdGUKICAg ICAgdGhhdCBhIHNpZ25hbCBoYXMgYXJyaXZlZCwgYW5kIHdha2UgdXAgY29kZSBydW5uaW5n IG91dHNpZGUgb2YKLSAgICAgdGhlIGhhbmRsZXIgdXNpbmcgYSBsYXRjaC4gQW4gZXhhbXBs ZSBvZiBzdWNoIGEgaGFuZGxlciBpcyB0aGUKKyAgICAgdGhlIGhhbmRsZXIgdXNpbmcgUmFp c2VJbnRlcnJ1cHQoKS4gQW4gZXhhbXBsZSBvZiBzdWNoIGEgaGFuZGxlciBpcyB0aGUKICAg ICAgZm9sbG93aW5nOgogPHByb2dyYW1saXN0aW5nPgogc3RhdGljIHZvaWQKIGhhbmRsZV9z aWdodXAoU0lHTkFMX0FSR1MpCiB7CiAgICAgZ290X1NJR0hVUCA9IHRydWU7Ci0gICAgU2V0 TGF0Y2goTXlMYXRjaCk7CisgICAgUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQKTsKIH0KIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDc5M2JkMzNjYjRkLi45ZjU0ZDdhMTJl OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNTMsNiArNTMs NyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mcmVlc3BhY2UuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3BnX3J1c2Fn ZS5oIgpAQCAtMjYwNywxMSArMjYwOCwxMSBAQCBsYXp5X3RydW5jYXRlX2hlYXAoTFZSZWxT dGF0ZSAqdmFjcmVsKQogCQkJCXJldHVybjsKIAkJCX0KIAotCQkJKHZvaWQpIFdhaXRMYXRj aChNeUxhdGNoLAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgVkFDVVVNX1RSVU5DQVRFX0xPQ0tfV0FJVF9JTlRF UlZBTCwKLQkJCQkJCQkgV0FJVF9FVkVOVF9WQUNVVU1fVFJVTkNBVEUpOwotCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSBWQUNVVU1fVFJVTkNBVEVfTE9DS19X QUlUX0lOVEVSVkFMLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9WQUNVVU1fVFJVTkNBVEUpOwor CQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJfQogCiAJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUKaW5kZXggNmU0NzExZGFjZTcuLmIx MmQ4YmU2NDdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFE TUUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1FCkBAIC03OTQsNyAr Nzk0LDcgQEAgY29tbWl0IHRvIG1pbmltaXplIHRoZSB3aW5kb3cgaW4gd2hpY2ggdGhlIGZp bGVzeXN0ZW0gY2hhbmdlIGhhcyBiZWVuIG1hZGUKIGJ1dCB0aGUgdHJhbnNhY3Rpb24gaXNu J3QgZ3VhcmFudGVlZCBjb21taXR0ZWQuCiAKIFRoZSB3YWx3cml0ZXIgcmVndWxhcmx5IHdh a2VzIHVwICh2aWEgd2FsX3dyaXRlcl9kZWxheSkgb3IgaXMgd29rZW4gdXAKLSh2aWEgaXRz IGxhdGNoLCB3aGljaCBpcyBzZXQgYnkgYmFja2VuZHMgY29tbWl0dGluZyBhc3luY2hyb25v dXNseSkgYW5kCisodmlhIGFuIGludGVycnVwdCwgd2hpY2ggaXMgc2V0IGJ5IGJhY2tlbmRz IGNvbW1pdHRpbmcgYXN5bmNocm9ub3VzbHkpIGFuZAogcGVyZm9ybXMgYW4gWExvZ0JhY2tn cm91bmRGbHVzaCgpLiAgVGhpcyBjaGVja3MgdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0CiBj b21wbGV0ZWx5IGZpbGxlZCBXQUwgcGFnZS4gIElmIHRoYXQgaGFzIG1vdmVkIGZvcndhcmRz LCB0aGVuIHdlIHdyaXRlIGFsbAogdGhlIGNoYW5nZWQgYnVmZmVycyB1cCB0byB0aGF0IHBv aW50LCBzbyB0aGF0IHVuZGVyIGZ1bGwgbG9hZCB3ZSB3cml0ZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggMGExZTA4OWVjMWQuLmUxOTcwZmY5NzE0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTMzLDYgKzMzLDcg QEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1p emVyLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJl ZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCkBAIC03NTUsMTYgKzc1Niwx NiBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogCQkJewogCQkJCS8qCiAJCQkJICogV29ya2VyIG5vdCB5ZXQgc3RhcnRlZCwgc28g d2UgbXVzdCB3YWl0LiAgVGhlIHBvc3RtYXN0ZXIKLQkJCQkgKiB3aWxsIG5vdGlmeSB1cyBp ZiB0aGUgd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4gIE91ciBsYXRjaAotCQkJCSAqIG1pZ2h0 IGFsc28gZ2V0IHNldCBmb3Igc29tZSBvdGhlciByZWFzb24sIGJ1dCBpZiBzbyB3ZSdsbAot CQkJCSAqIGp1c3QgZW5kIHVwIHdhaXRpbmcgZm9yIHRoZSBzYW1lIHdvcmtlciBhZ2Fpbi4K KwkJCQkgKiB3aWxsIG5vdGlmeSB1cyBpZiB0aGUgd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4g IFRoZQorCQkJCSAqIGludGVycnVwdCBtaWdodCBhbHNvIGdldCBzZXQgZm9yIHNvbWUgb3Ro ZXIgcmVhc29uLCBidXQgaWYKKwkJCQkgKiBzbyB3ZSdsbCBqdXN0IGVuZCB1cCB3YWl0aW5n IGZvciB0aGUgc2FtZSB3b3JrZXIgYWdhaW4uCiAJCQkJICovCi0JCQkJcmMgPSBXYWl0TGF0 Y2goTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJCSAgIC0xLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOworCQkJ CXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJ CQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJ ICAgLTEsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CiAKLQkJCQlpZiAocmMgJiBX TF9MQVRDSF9TRVQpCi0JCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJaWYgKHJjICYg V0xfSU5URVJSVVBUKQorCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVApOwogCQkJfQogCQl9CiAKQEAgLTg3MywxNSArODc0LDE3IEBAIFdhaXRGb3JQYXJh bGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJICogdGhl IHdvcmtlciB3cml0ZXMgbWVzc2FnZXMgYW5kIHRlcm1pbmF0ZXMgYWZ0ZXIgdGhlCiAJCQkJ ICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBuZWFyIHRoZSB0b3Agb2YgdGhpcyBmdW5jdGlv biBhbmQKIAkJCQkgKiBiZWZvcmUgdGhlIGNhbGwgdG8gR2V0QmFja2dyb3VuZFdvcmtlclBp ZCgpLiAgSW4gdGhhdCBjYXNlLAotCQkJCSAqIG9yIGxhdGNoIHNob3VsZCBoYXZlIGJlZW4g c2V0IGFzIHdlbGwgYW5kIHRoZSByaWdodCB0aGluZ3MKLQkJCQkgKiB3aWxsIGhhcHBlbiBv biB0aGUgbmV4dCBwYXNzIHRocm91Z2ggdGhlIGxvb3AuCisJCQkJICogSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQIHNob3VsZCBoYXZlIGJlZW4gc2V0IGFzIHdlbGwgYW5kCisJCQkJICog dGhlIHJpZ2h0IHRoaW5ncyB3aWxsIGhhcHBlbiBvbiB0aGUgbmV4dCBwYXNzIHRocm91Z2gg dGhlCisJCQkJICogbG9vcC4KIAkJCQkgKi8KIAkJCX0KIAkJfQogCi0JCSh2b2lkKSBXYWl0 TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgLTEs Ci0JCQkJCQkgV0FJVF9FVkVOVF9QQVJBTExFTF9GSU5JU0gpOwotCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFM X1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg LTEsCisJCQkJCQkJIFdBSVRfRVZFTlRfUEFSQUxMRUxfRklOSVNIKTsKKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAl9CiAKIAlpZiAocGN4dC0+dG9j ICE9IE5VTEwpCkBAIC0xMDM0LDcgKzEwMzcsNyBAQCBIYW5kbGVQYXJhbGxlbE1lc3NhZ2VJ bnRlcnJ1cHQodm9pZCkKIHsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKIAlQYXJhbGxl bE1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUlu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDZmNTg0MTJiY2FiLi4wYTk5MjBhNjFmNSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtODQsOSArODQsOSBAQAogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xh cmdlX29iamVjdC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJz dG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCkBAIC0yNjc2LDcgKzI2NzYsNyBAQCBYTG9nU2V0 QXN5bmNYYWN0TFNOKFhMb2dSZWNQdHIgYXN5bmNYYWN0TFNOKQogCQlQcm9jTnVtYmVyCXdh bHdyaXRlclByb2MgPSBwcm9jZ2xvYmFsLT53YWx3cml0ZXJQcm9jOwogCiAJCWlmICh3YWx3 cml0ZXJQcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCQlTZXRMYXRjaCgmR2V0UEdQ cm9jQnlOdW1iZXIod2Fsd3JpdGVyUHJvYyktPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgUHJvY0dsb2JhbC0+d2Fsd3JpdGVyUHJv Yyk7CiAJfQogfQogCkBAIC05MzQ3LDExICs5MzQ3LDExIEBAIGRvX3BnX2JhY2t1cF9zdG9w KEJhY2t1cFN0YXRlICpzdGF0ZSwgYm9vbCB3YWl0Zm9yYXJjaGl2ZSkKIAkJCQlyZXBvcnRl ZF93YWl0aW5nID0gdHJ1ZTsKIAkJCX0KIAotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCQkgMTAwMEwsCi0JCQkJCQkJIFdBSVRfRVZFTlRfQkFDS1VQX1dBSVRf V0FMX0FSQ0hJVkUpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCSh2b2lkKSBXYWl0 SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCQkgV0xf SU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJ CSAxMDAwTCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfQkFDS1VQX1dBSVRfV0FMX0FSQ0hJVkUp OworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkJ aWYgKCsrd2FpdHMgPj0gc2Vjb25kc19iZWZvcmVfd2FybmluZykKIAkJCXsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggYjBjNmQ3YzY4NzUuLjc3ZDI1 NDQ3ZTk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAt MjgsNyArMjgsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgotI2luY2x1ZGUg InN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTcxOCwxNyArNzE4LDE3IEBAIHBn X3Byb21vdGUoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWludAkJCXJjOwogCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCk7CiAKIAkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJCVBHX1JFVFVSTl9C T09MKHRydWUpOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X1BPU1RNQVNURVJfREVBVEgsCi0JCQkJCSAgIDEwMDBMIC8gV0FJVFNfUEVSX1NFQ09ORCwK LQkJCQkJICAgV0FJVF9FVkVOVF9QUk9NT1RFKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEg PDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwg V0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCisJCQkJCQkgICAxMDAwTCAvIFdB SVRTX1BFUl9TRUNPTkQsCisJCQkJCQkgICBXQUlUX0VWRU5UX1BST01PVEUpOwogCiAJCS8q CiAJCSAqIEVtZXJnZW5jeSBiYWlsb3V0IGlmIHBvc3RtYXN0ZXIgaGFzIGRpZWQuICBUaGlz IGlzIHRvIGF2b2lkIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVj b3ZlcnkuYwppbmRleCAwNWM3MzhkNjYxNC4uMjFmMmQ1NzAzNmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC01Miw5ICs1MiwxMCBAQAog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRlICJ1dGlscy9kYXRldGlt ZS5oIgpAQCAtMzE1LDIzICszMTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3ZlcnlD dGxEYXRhCiAJICovCiAJYm9vbAkJU2hhcmVkUHJvbW90ZUlzVHJpZ2dlcmVkOwogCi0JLyoK LQkgKiByZWNvdmVyeVdha2V1cExhdGNoIGlzIHVzZWQgdG8gd2FrZSB1cCB0aGUgc3RhcnR1 cCBwcm9jZXNzIHRvIGNvbnRpbnVlCi0JICogV0FMIHJlcGxheSwgaWYgaXQgaXMgd2FpdGlu ZyBmb3IgV0FMIHRvIGFycml2ZSBvciBwcm9tb3Rpb24gdG8gYmUKLQkgKiByZXF1ZXN0ZWQu Ci0JICoKLQkgKiBOb3RlIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbHNvIHVzZXMgYW5v dGhlciBsYXRjaCwgaXRzIHByb2NMYXRjaCwKLQkgKiB0byB3YWl0IGZvciByZWNvdmVyeSBj b25mbGljdC4gSWYgd2UgZ2V0IHJpZCBvZiByZWNvdmVyeVdha2V1cExhdGNoIGZvcgotCSAq IHNpZ25hbGluZyB0aGUgc3RhcnR1cCBwcm9jZXNzIGluIGZhdm9yIG9mIHVzaW5nIGl0cyBw cm9jTGF0Y2gsIHdoaWNoCi0JICogY29tcG9ydHMgYmV0dGVyIHdpdGggcG9zc2libGUgZ2Vu ZXJpYyBzaWduYWwgaGFuZGxlcnMgdXNpbmcgdGhhdCBsYXRjaC4KLQkgKiBCdXQgd2Ugc2hv dWxkIG5vdCBkbyB0aGF0IGJlY2F1c2UgdGhlIHN0YXJ0dXAgcHJvY2VzcyBkb2Vzbid0IGFz c3VtZQotCSAqIHRoYXQgaXQncyB3YWtlbiB1cCBieSB3YWxyZWNlaXZlciBwcm9jZXNzIG9y IFNJR0hVUCBzaWduYWwgaGFuZGxlcgotCSAqIHdoaWxlIGl0J3Mgd2FpdGluZyBmb3IgcmVj b3ZlcnkgY29uZmxpY3QuIFRoZSBzZXBhcmF0ZSBsYXRjaGVzLAotCSAqIHJlY292ZXJ5V2Fr ZXVwTGF0Y2ggYW5kIHByb2NMYXRjaCwgc2hvdWxkIGJlIHVzZWQgZm9yIGludGVyLXByb2Nl c3MKLQkgKiBjb21tdW5pY2F0aW9uIGZvciBXQUwgcmVwbGF5IGFuZCByZWNvdmVyeSBjb25m bGljdCwgcmVzcGVjdGl2ZWx5LgotCSAqLwotCUxhdGNoCQlyZWNvdmVyeVdha2V1cExhdGNo OwotCiAJLyoKIAkgKiBMYXN0IHJlY29yZCBzdWNjZXNzZnVsbHkgcmVwbGF5ZWQuCiAJICov CkBAIC00NjYsNyArNDUwLDYgQEAgWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZvaWQpCiAJbWVt c2V0KFhMb2dSZWNvdmVyeUN0bCwgMCwgc2l6ZW9mKFhMb2dSZWNvdmVyeUN0bERhdGEpKTsK IAogCVNwaW5Mb2NrSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7Ci0JSW5pdFNo YXJlZExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNv bmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeU5vdFBhdXNl ZENWKTsKIH0KIApAQCAtNTQwLDEzICs1MjMsNiBAQCBJbml0V2FsUmVjb3ZlcnkoQ29udHJv bEZpbGVEYXRhICpDb250cm9sRmlsZSwgYm9vbCAqd2FzU2h1dGRvd25fcHRyLAogCXJlYWRS ZWNvdmVyeVNpZ25hbEZpbGUoKTsKIAl2YWxpZGF0ZVJlY292ZXJ5UGFyYW1ldGVycygpOwog Ci0JLyoKLQkgKiBUYWtlIG93bmVyc2hpcCBvZiB0aGUgd2FrZXVwIGxhdGNoIGlmIHdlJ3Jl IGdvaW5nIHRvIHNsZWVwIGR1cmluZwotCSAqIHJlY292ZXJ5LCBpZiByZXF1aXJlZC4KLQkg Ki8KLQlpZiAoQXJjaGl2ZVJlY292ZXJ5UmVxdWVzdGVkKQotCQlPd25MYXRjaCgmWExvZ1Jl Y292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKLQogCS8qCiAJICogU2V0IHRoZSBX QUwgcmVhZGluZyBwcm9jZXNzb3Igbm93LCBhcyBpdCB3aWxsIGJlIG5lZWRlZCB3aGVuIHJl YWRpbmcKIAkgKiB0aGUgY2hlY2twb2ludCByZWNvcmQgcmVxdWlyZWQgKGJhY2t1cF9sYWJl bCBvciBub3QpLgpAQCAtMTYzNCwxMyArMTYxMCw2IEBAIFNodXRkb3duV2FsUmVjb3Zlcnko dm9pZCkKIAkJc25wcmludGYocmVjb3ZlcnlQYXRoLCBNQVhQR1BBVEgsIFhMT0dESVIgIi9S RUNPVkVSWUhJU1RPUlkiKTsKIAkJdW5saW5rKHJlY292ZXJ5UGF0aCk7CS8qIGlnbm9yZSBh bnkgZXJyb3IgKi8KIAl9Ci0KLQkvKgotCSAqIFdlIGRvbid0IG5lZWQgdGhlIGxhdGNoIGFu eW1vcmUuIEl0J3Mgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSB0byBkaXNvd24KLQkgKiBpdCwg YnV0IGxldCdzIGRvIGl0IGZvciB0aGUgc2FrZSBvZiB0aWRpbmVzcy4KLQkgKi8KLQlpZiAo QXJjaGl2ZVJlY292ZXJ5UmVxdWVzdGVkKQotCQlEaXNvd25MYXRjaCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKIH0KIAogLyoKQEAgLTE4MDAsNyArMTc2OSw3 IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lkKQogCQkJfQogCiAJCQkvKgotCQkJICogSWYg d2UndmUgYmVlbiBhc2tlZCB0byBsYWcgdGhlIHByaW1hcnksIHdhaXQgb24gbGF0Y2ggdW50 aWwKKwkJCSAqIElmIHdlJ3ZlIGJlZW4gYXNrZWQgdG8gbGFnIHRoZSBwcmltYXJ5LCB3YWl0 IG9uIGludGVycnVwdCB1bnRpbAogCQkJICogZW5vdWdoIHRpbWUgaGFzIHBhc3NlZC4KIAkJ CSAqLwogCQkJaWYgKHJlY292ZXJ5QXBwbHlEZWxheSh4bG9ncmVhZGVyKSkKQEAgLTMwMjMs OCArMjk5Miw4IEBAIHJlY292ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAlkZWxheVVudGlsID0gVGltZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRzKHh0aW1lLCBy ZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkpOwogCiAJLyoKLQkgKiBFeGl0IHdpdGhvdXQgYXJt aW5nIHRoZSBsYXRjaCBpZiBpdCdzIGFscmVhZHkgcGFzdCB0aW1lIHRvIGFwcGx5IHRoaXMK LQkgKiByZWNvcmQKKwkgKiBFeGl0IHdpdGhvdXQgY2xlYXJpbmcgdGhlIGludGVycnVwdCBp ZiBpdCdzIGFscmVhZHkgcGFzdCB0aW1lIHRvIGFwcGx5CisJICogdGhpcyByZWNvcmQKIAkg Ki8KIAltc2VjcyA9IFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoR2V0Q3VycmVu dFRpbWVzdGFtcCgpLCBkZWxheVVudGlsKTsKIAlpZiAobXNlY3MgPD0gMCkKQEAgLTMwMzIs MTEgKzMwMDEsMTkgQEAgcmVjb3ZlcnlBcHBseURlbGF5KFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKQogCiAJd2hpbGUgKHRydWUpCiAJewotCQlSZXNldExhdGNoKCZYTG9nUmVjb3ZlcnlD dGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCQkvKgorCQkgKiBJTlRFUlJVUFRfR0VORVJB TF9XQUtVUCBpcyB1c2VkIGZvciBhbGwgdGhlIHVzdWFsIGludGVycnVwdHMsIGxpa2UKKwkJ ICogY29uZmlnIHJlbG9hZHMuICBUaGUgd2FrZXVwcyB3aGVuIG1vcmUgV0FMIGFycml2ZSB1 c2UgYSBkaWZmZXJlbnQKKwkJICogaW50ZXJydXB0IG51bWJlciAoSU5URVJSVVBUX1JFQ09W RVJZX0NPTlRJTlVFKSBzbyB0aGF0IG1vcmUgV0FMCisJCSAqIGFycml2aW5nIGRvbid0IHdh a2UgdXAgdGhlIHN0YXJ0dXAgcHJvY2VzcyBleGNlc3NpdmVseSwgd2hlbiB3ZSdyZQorCQkg KiB3YWl0aW5nIGluIG90aGVyIHBsYWNlcywgbGlrZSBmb3IgcmVjb3ZlcnkgY29uZmxpY3Rz LgorCQkgKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAogCQkvKiBUaGlzIG1pZ2h0IGNoYW5nZSByZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkuICov CiAJCUhhbmRsZVN0YXJ0dXBQcm9jSW50ZXJydXB0cygpOwogCisJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSk7CiAJCWlmIChDaGVja0ZvclN0YW5kYnlU cmlnZ2VyKCkpCiAJCQlicmVhazsKIApAQCAtMzA1NywxMCArMzAzNCwxMSBAQCByZWNvdmVy eUFwcGx5RGVsYXkoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZWxvZyhERUJVRzIs ICJyZWNvdmVyeSBhcHBseSBkZWxheSAlbGQgbWlsbGlzZWNvbmRzIiwgbXNlY3MpOwogCi0J CSh2b2lkKSBXYWl0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRj aCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCSBtc2VjcywKLQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZ X0RFTEFZKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfUkVDT1ZF UllfQ09OVElOVUUgfAorCQkJCQkJCSAxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwK KwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCQkJIG1zZWNzLAorCQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZ X0RFTEFZKTsKIAl9CiAJcmV0dXJuIHRydWU7CiB9CkBAIC0zNzAzLDE1ICszNjgxLDE3IEBA IFdhaXRGb3JXQUxUb0JlY29tZUF2YWlsYWJsZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCBy YW5kQWNjZXNzLAogCQkJCQkJLyogRG8gYmFja2dyb3VuZCB0YXNrcyB0aGF0IG1pZ2h0IGJl bmVmaXQgdXMgbGF0ZXIuICovCiAJCQkJCQlLbm93bkFzc2lnbmVkVHJhbnNhY3Rpb25JZHNJ ZGxlTWFpbnRlbmFuY2UoKTsKIAotCQkJCQkJKHZvaWQpIFdhaXRMYXRjaCgmWExvZ1JlY292 ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoLAotCQkJCQkJCQkJCSBXTF9MQVRDSF9TRVQg fCBXTF9USU1FT1VUIHwKLQkJCQkJCQkJCQkgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CQkJCQkgd2FpdF90aW1lLAotCQkJCQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1JFVFJJ RVZFX1JFVFJZX0lOVEVSVkFMKTsKLQkJCQkJCVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0 bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CisJCQkJCQkodm9pZCkgV2FpdEludGVycnVwdCgx IDw8IElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSB8CisJCQkJCQkJCQkJCSAxIDw8IElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdM X1RJTUVPVVQgfAorCQkJCQkJCQkJCQkgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJ CQkJIHdhaXRfdGltZSwKKwkJCQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllfUkVUUklF VkVfUkVUUllfSU5URVJWQUwpOworCQkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1JF Q09WRVJZX0NPTlRJTlVFKTsKIAkJCQkJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsK IAogCQkJCQkJLyogSGFuZGxlIGludGVycnVwdCBzaWduYWxzIG9mIHN0YXJ0dXAgcHJvY2Vz cyAqLworCQkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAkJCQkJCUhhbmRsZVN0YXJ0dXBQcm9jSW50ZXJydXB0cygpOwogCQkJCQl9CiAJCQkJCWxh c3RfZmFpbF90aW1lID0gbm93OwpAQCAtMzk3OCwxMSArMzk1OCwxMiBAQCBXYWl0Rm9yV0FM VG9CZWNvbWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQdHIsIGJvb2wgcmFuZEFjY2VzcywK IAkJCQkJICogV2FpdCBmb3IgbW9yZSBXQUwgdG8gYXJyaXZlLCB3aGVuIHdlIHdpbGwgYmUg d29rZW4KIAkJCQkJICogaW1tZWRpYXRlbHkgYnkgdGhlIFdBTCByZWNlaXZlci4KIAkJCQkJ ICovCi0JCQkJCSh2b2lkKSBXYWl0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlX YWtldXBMYXRjaCwKLQkJCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJCQkJIC0xTCwKLQkJCQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dB TF9TVFJFQU0pOwotCQkJCQlSZXNldExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5 V2FrZXVwTGF0Y2gpOworCQkJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQ VF9SRUNPVkVSWV9DT05USU5VRSB8CisJCQkJCQkJCQkJIDEgPDwgSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQLAorCQkJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RF QVRILAorCQkJCQkJCQkJCSAtMUwsCisJCQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllf V0FMX1NUUkVBTSk7CisJCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9D T05USU5VRSk7CiAJCQkJCWJyZWFrOwogCQkJCX0KIApAQCAtNDAwMiw2ICszOTgzLDcgQEAg V2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBib29sIHJh bmRBY2Nlc3MsCiAJCSAqIFRoaXMgcG9zc2libHktbG9uZyBsb29wIG5lZWRzIHRvIGhhbmRs ZSBpbnRlcnJ1cHRzIG9mIHN0YXJ0dXAKIAkJICogcHJvY2Vzcy4KIAkJICovCisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCUhhbmRsZVN0YXJ0dXBQ cm9jSW50ZXJydXB0cygpOwogCX0KIApAQCAtNDQ3Niw3ICs0NDU4LDEwIEBAIENoZWNrUHJv bW90ZVNpZ25hbCh2b2lkKQogdm9pZAogV2FrZXVwUmVjb3Zlcnkodm9pZCkKIHsKLQlTZXRM YXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKKwlQcm9jTnVt YmVyCXByb2NubyA9ICgodm9sYXRpbGUgUFJPQ19IRFIgKikgUHJvY0dsb2JhbCktPnN0YXJ0 dXBQcm9jOworCisJaWYgKHByb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlTZW5k SW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSwgcHJvY25vKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggNTI5NWI4 NWZlMDcuLjQxZjBjZGU2MjcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ndXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n dXRpbHMuYwpAQCAtODUzLDkgKzg1Myw5IEBAIHdhbF9zZWdtZW50X2Nsb3NlKFhMb2dSZWFk ZXJTdGF0ZSAqc3RhdGUpCiAgKiBvdXRwdXQgbWV0aG9kIG91dHNpZGUgd2Fsc2VuZGVyLCBl LmcuIGluIGEgYmd3b3JrZXIuCiAgKgogICogVE9ETzogVGhlIHdhbHNlbmRlciBoYXMgaXRz IG93biB2ZXJzaW9uIG9mIHRoaXMsIGJ1dCBpdCByZWxpZXMgb24gdGhlCi0gKiB3YWxzZW5k ZXIncyBsYXRjaCBiZWluZyBzZXQgd2hlbmV2ZXIgV0FMIGlzIGZsdXNoZWQuIE5vIHN1Y2gg aW5mcmFzdHJ1Y3R1cmUKLSAqIGV4aXN0cyBmb3Igbm9ybWFsIGJhY2tlbmRzLCBzbyB3ZSBo YXZlIHRvIGRvIGEgY2hlY2svc2xlZXAvcmVwZWF0IHN0eWxlIG9mCi0gKiBsb29wIGZvciBu b3cuCisgKiB3YWxzZW5kZXIncyBpbnRlcnJ1cHQgYmVpbmcgc2V0IHdoZW5ldmVyIFdBTCBp cyBmbHVzaGVkLiBObyBzdWNoCisgKiBpbmZyYXN0cnVjdHVyZSBleGlzdHMgZm9yIG5vcm1h bCBiYWNrZW5kcywgc28gd2UgaGF2ZSB0byBkbyBhCisgKiBjaGVjay9zbGVlcC9yZXBlYXQg c3R5bGUgb2YgbG9vcCBmb3Igbm93LgogICovCiBpbnQKIHJlYWRfbG9jYWxfeGxvZ19wYWdl KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMgYi9z cmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jCmluZGV4IDQ0Nzc5NDVl NjEzLi5iMWMwMmY3NDczYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2Vi YWNrdXBfdGhyb3R0bGUuYworKysgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90 aHJvdHRsZS5jCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNr dXBfc2luay5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5o IgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogCiB0eXBlZGVmIHN0cnVj dCBiYnNpbmtfdGhyb3R0bGUKQEAgLTE0Niw3ICsxNDYsNyBAQCB0aHJvdHRsZShiYnNpbmtf dGhyb3R0bGUgKnNpbmssIHNpemVfdCBpbmNyZW1lbnQpCiAJCShzaW5rLT50aHJvdHRsaW5n X2NvdW50ZXIgLyBzaW5rLT50aHJvdHRsaW5nX3NhbXBsZSk7CiAKIAkvKgotCSAqIFNpbmNl IHRoZSBsYXRjaCBjb3VsZCBiZSBzZXQgcmVwZWF0ZWRseSBiZWNhdXNlIG9mIGNvbmN1cnJl bnRseSBXQUwKKwkgKiBTaW5jZSB0aGUgaW50ZXJydXB0IGNvdWxkIGJlIHNldCByZXBlYXRl ZGx5IGJlY2F1c2Ugb2YgY29uY3VycmVudGx5IFdBTAogCSAqIGFjdGl2aXR5LCBzbGVlcCBp biBhIGxvb3AgdG8gZW5zdXJlIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQuCiAJICovCiAJZm9y ICg7OykKQEAgLTE2MywyMSArMTYzLDIxIEBAIHRocm90dGxlKGJic2lua190aHJvdHRsZSAq c2luaywgc2l6ZV90IGluY3JlbWVudCkKIAkJaWYgKHNsZWVwIDw9IDApCiAJCQlicmVhazsK IAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVApOwogCi0JCS8qIFdlJ3JlIGVhdGluZyBhIHBvdGVudGlhbGx5IHNl dCBsYXRjaCwgc28gY2hlY2sgZm9yIGludGVycnVwdHMgKi8KKwkJLyogV2UncmUgZWF0aW5n IGEgd2FrZXVwLCBzbyBjaGVjayBmb3IgaW50ZXJydXB0cyAqLwogCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOwogCiAJCS8qCiAJCSAqIChUQVJfU0VORF9TSVpFIC8gdGhyb3R0bGluZ19z YW1wbGUgKiBlbGFwc2VkX21pbl91bml0KSBzaG91bGQgYmUKIAkJICogdGhlIG1heGltdW0g dGltZSB0byBzbGVlcC4gVGh1cyB0aGUgY2FzdCB0byBsb25nIGlzIHNhZmUuCiAJCSAqLwot CQl3YWl0X3Jlc3VsdCA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCQlXTF9MQVRDSF9T RVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJKGxvbmcp IChzbGVlcCAvIDEwMDApLAotCQkJCQkJCQlXQUlUX0VWRU5UX0JBU0VfQkFDS1VQX1RIUk9U VExFKTsKKwkJd2FpdF9yZXN1bHQgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQLAorCQkJCQkJCQkJV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkobG9uZykgKHNsZWVwIC8gMTAwMCksCisJ CQkJCQkJCQlXQUlUX0VWRU5UX0JBU0VfQkFDS1VQX1RIUk9UVExFKTsKIAotCQlpZiAod2Fp dF9yZXN1bHQgJiBXTF9MQVRDSF9TRVQpCisJCWlmICh3YWl0X3Jlc3VsdCAmIFdMX0lOVEVS UlVQVCkKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyogRG9uZSB3YWl0aW5n PyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggOGVkNTAzZTFjMWIuLmUwYjE0ZjQ5NzQ0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTkxLDcgKzkxLDcgQEAKICAqCSAgc2hvdWxk IGdvIG91dCBpbW1lZGlhdGVseSBhZnRlciBlYWNoIGNvbW1pdC4KICAqCiAgKiA1LiBVcG9u IHJlY2VpcHQgb2YgYSBQUk9DU0lHX05PVElGWV9JTlRFUlJVUFQgc2lnbmFsLCB0aGUgc2ln bmFsIGhhbmRsZXIKLSAqCSAgc2V0cyB0aGUgcHJvY2VzcydzIGxhdGNoLCB3aGljaCB0cmln Z2VycyB0aGUgZXZlbnQgdG8gYmUgcHJvY2Vzc2VkCisgKgkgIHJhaXNlcyBJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVAsIHdoaWNoIHRyaWdnZXJzIHRoZSBldmVudCB0byBiZSBwcm9jZXNz ZWQKICAqCSAgaW1tZWRpYXRlbHkgaWYgdGhpcyBiYWNrZW5kIGlzIGlkbGUgKGkuZS4sIGl0 IGlzIHdhaXRpbmcgZm9yIGEgZnJvbnRlbmQKICAqCSAgY29tbWFuZCBhbmQgaXMgbm90IHdp dGhpbiBhIHRyYW5zYWN0aW9uIGJsb2NrLiBDLmYuCiAgKgkgIFByb2Nlc3NDbGllbnRSZWFk SW50ZXJydXB0KCkpLiAgT3RoZXJ3aXNlIHRoZSBoYW5kbGVyIG1heSBvbmx5IHNldCBhCkBA IC0xNDAsNiArMTQwLDcgQEAKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUg ImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgpA QCAtNDA2LDkgKzQwNyw5IEBAIHN0YXRpYyBOb3RpZmljYXRpb25MaXN0ICpwZW5kaW5nTm90 aWZpZXMgPSBOVUxMOwogLyoKICAqIEluYm91bmQgbm90aWZpY2F0aW9ucyBhcmUgaW5pdGlh bGx5IHByb2Nlc3NlZCBieSBIYW5kbGVOb3RpZnlJbnRlcnJ1cHQoKSwKICAqIGNhbGxlZCBm cm9tIGluc2lkZSBhIHNpZ25hbCBoYW5kbGVyLiBUaGF0IGp1c3Qgc2V0cyB0aGUKLSAqIG5v dGlmeUludGVycnVwdFBlbmRpbmcgZmxhZyBhbmQgc2V0cyB0aGUgcHJvY2VzcwotICogbGF0 Y2guIFByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQoKSB3aWxsIHRoZW4gYmUgY2FsbGVkIHdoZW5l dmVyIGl0J3Mgc2FmZSB0bwotICogYWN0dWFsbHkgZGVhbCB3aXRoIHRoZSBpbnRlcnJ1cHQu CisgKiBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nIGZsYWcgYW5kIHJhaXNlcyB0aGUgSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQCisgKiBpbnRlcnJ1cHQuICBQcm9jZXNzTm90aWZ5SW50ZXJy dXB0KCkgd2lsbCB0aGVuIGJlIGNhbGxlZCB3aGVuZXZlciBpdCdzIHNhZmUKKyAqIHRvIGFj dHVhbGx5IGRlYWwgd2l0aCB0aGUgaW50ZXJydXB0LgogICovCiB2b2xhdGlsZSBzaWdfYXRv bWljX3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwogCkBAIC0xODEyLDcgKzE4 MTMsNyBAQCBIYW5kbGVOb3RpZnlJbnRlcnJ1cHQodm9pZCkKIAlub3RpZnlJbnRlcnJ1cHRQ ZW5kaW5nID0gdHJ1ZTsKIAogCS8qIG1ha2Ugc3VyZSB0aGUgZXZlbnQgaXMgcHJvY2Vzc2Vk IGluIGR1ZSBjb3Vyc2UgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQogCiAvKgpAQCAtMTgyMiw3ICsxODIz LDcgQEAgSGFuZGxlTm90aWZ5SW50ZXJydXB0KHZvaWQpCiAgKgkJdHJhbnNtaXR0aW5nIFJl YWR5Rm9yUXVlcnkgYXQgdGhlIGVuZCBvZiBhIGZyb250ZW5kIGNvbW1hbmQsIGFuZAogICoJ CWFsc28gaWYgYSBub3RpZnkgc2lnbmFsIG9jY3VycyB3aGlsZSByZWFkaW5nIGZyb20gdGhl IGZyb250ZW5kLgogICoJCUhhbmRsZU5vdGlmeUludGVycnVwdCgpIHdpbGwgY2F1c2UgdGhl IHJlYWQgdG8gYmUgaW50ZXJydXB0ZWQKLSAqCQl2aWEgdGhlIHByb2Nlc3MncyBsYXRjaCwg YW5kIHRoaXMgcm91dGluZSB3aWxsIGdldCBjYWxsZWQuCisgKgkJd2l0aCBJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVAsIGFuZCB0aGlzIHJvdXRpbmUgd2lsbCBnZXQgY2FsbGVkLgogICoJ CUlmIHdlIGFyZSB0cnVseSBpZGxlIChpZSwgKm5vdCogaW5zaWRlIGEgdHJhbnNhY3Rpb24g YmxvY2spLAogICoJCXByb2Nlc3MgdGhlIGluY29taW5nIG5vdGlmaWVzLgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtLmMKaW5kZXggODZmMzZiMzY5NTQuLjQ4MDUzODg2ODdkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW0uYwpAQCAtMjQxMSw4ICsyNDExLDggQEAgdmFjdXVtX2RlbGF5X3Bv aW50KHZvaWQpCiAJCS8qCiAJCSAqIFdlIGRvbid0IHdhbnQgdG8gaWdub3JlIHBvc3RtYXN0 ZXIgZGVhdGggZHVyaW5nIHZlcnkgbG9uZyB2YWN1dW1zCiAJCSAqIHdpdGggdmFjdXVtX2Nv c3RfZGVsYXkgY29uZmlndXJlZC4gIFdlIGNhbid0IHVzZSB0aGUgdXN1YWwKLQkJICogV2Fp dExhdGNoKCkgYXBwcm9hY2ggaGVyZSBiZWNhdXNlIHdlIHdhbnQgbWljcm9zZWNvbmQtYmFz ZWQgc2xlZXAKLQkJICogZHVyYXRpb25zIGFib3ZlLgorCQkgKiBXYWl0SW50ZXJydXB0KCkg YXBwcm9hY2ggaGVyZSBiZWNhdXNlIHdlIHdhbnQgbWljcm9zZWNvbmQtYmFzZWQKKwkJICog c2xlZXAgZHVyYXRpb25zIGFib3ZlLgogCQkgKi8KIAkJaWYgKElzVW5kZXJQb3N0bWFzdGVy ICYmICFQb3N0bWFzdGVySXNBbGl2ZSgpKQogCQkJZXhpdCgxKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBcHBlbmQuYwppbmRleCBjYTBmNTRkNjc2Zi4uMzE0ZTNkOGZiYjIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTYxLDkgKzYxLDggQEAKICNpbmNsdWRlICJl eGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3Iu aCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQXBwZW5kLmgiCi0jaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCiAKIC8qIFNoYXJlZCBzdGF0 ZSBmb3IgcGFyYWxsZWwtYXdhcmUgQXBwZW5kLiAqLwogc3RydWN0IFBhcmFsbGVsQXBwZW5k U3RhdGUKQEAgLTEwMjgsNyArMTAyNyw3IEBAIEV4ZWNBcHBlbmRBc3luY0V2ZW50V2FpdChB cHBlbmRTdGF0ZSAqbm9kZSkKIAlBc3NlcnQobm9kZS0+YXNfZXZlbnRzZXQgPT0gTlVMTCk7 CiAJbm9kZS0+YXNfZXZlbnRzZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoQ3VycmVudFJlc291 cmNlT3duZXIsIG5ldmVudHMpOwogCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUtPmFzX2V2ZW50 c2V0LCBXTF9FWElUX09OX1BNX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkgIE5V TEwsIE5VTEwpOworCQkJCQkgIDAsIE5VTEwpOwogCiAJLyogR2l2ZSBlYWNoIHdhaXRpbmcg c3VicGxhbiBhIGNoYW5jZSB0byBhZGQgYW4gZXZlbnQuICovCiAJaSA9IC0xOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDdmN2VkYzdmOWZjLi5mYmJjMzk2Y2I0MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMzYsNiArMzYsNyBAQAogI2lu Y2x1ZGUgImV4ZWN1dG9yL3RxdWV1ZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogCkBAIC0zODIsOSAr MzgzLDEwIEBAIGdhdGhlcl9yZWFkbmV4dChHYXRoZXJTdGF0ZSAqZ2F0aGVyc3RhdGUpCiAJ CQkJcmV0dXJuIE5VTEw7CiAKIAkJCS8qIE5vdGhpbmcgdG8gZG8gZXhjZXB0IHdhaXQgZm9y IGRldmVsb3BtZW50cy4gKi8KLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFU Q0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCQkgV0FJVF9FVkVOVF9F WEVDVVRFX0dBVEhFUik7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgV0FJVF9F VkVOVF9FWEVDVVRFX0dBVEhFUik7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVApOwogCQkJbnZpc2l0ZWQgPSAwOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jCmlu ZGV4IDQ3ZThjOTE2MDYwLi5lZjdjYmE2NWU0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bGlicHEvYXV0aC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYwpAQCAtMTY2Myw4 ICsxNjYzLDkgQEAgaW50ZXJwcmV0X2lkZW50X3Jlc3BvbnNlKGNvbnN0IGNoYXIgKmlkZW50 X3Jlc3BvbnNlLAogICoJb3ducyB0aGUgdGNwIGNvbm5lY3Rpb24gdG8gImxvY2FsX2FkZHIi CiAgKglJZiB0aGUgdXNlcm5hbWUgaXMgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCwgY2hlY2sg dGhlIHVzZXJtYXAuCiAgKgotICoJWFhYOiBVc2luZyBXYWl0TGF0Y2hPclNvY2tldCgpIGFu ZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaWYgdGhlCi0gKglsYXRjaCB3YXMg c2V0IHdvdWxkIGltcHJvdmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvIHRpbWVvdXRzL2NhbmNl bGxhdGlvbnMuCisgKglYWFg6IFVzaW5nIFdhaXRJbnRlcnJ1cHRPclNvY2tldCgpIGFuZCBk b2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkKKyAqCWlmIHRoZSBpbnRlcnJ1cHQgd2Fz IHBlbmRpbmcgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8KKyAqCXRpbWVv dXRzL2NhbmNlbGxhdGlvbnMuCiAgKi8KIHN0YXRpYyBpbnQKIGlkZW50X2luZXQoaGJhUG9y dCAqcG9ydCkKQEAgLTMwOTgsOCArMzA5OSw4IEBAIFBlcmZvcm1SYWRpdXNUcmFuc2FjdGlv bihjb25zdCBjaGFyICpzZXJ2ZXIsIGNvbnN0IGNoYXIgKnNlY3JldCwgY29uc3QgY2hhciAq cG9yCiAJICogcGFja2V0cyB0byBvdXIgcG9ydCB0aHVzIGNhdXNpbmcgdXMgdG8gcmV0cnkg aW4gYSBsb29wIGFuZCBuZXZlciB0aW1lCiAJICogb3V0LgogCSAqCi0JICogWFhYOiBVc2lu ZyBXYWl0TGF0Y2hPclNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRT KCkgaWYKLQkgKiB0aGUgbGF0Y2ggd2FzIHNldCB3b3VsZCBpbXByb3ZlIHRoZSByZXNwb25z aXZlbmVzcyB0bworCSAqIFhYWDogVXNpbmcgV2FpdEludGVycnVwdE9yU29ja2V0KCkgYW5k IGRvaW5nIGEgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorCSAqIGlmIHRoZSBpbnRlcnJ1cHQg d2FzIHBlbmRpbmcgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8KIAkgKiB0 aW1lb3V0cy9jYW5jZWxsYXRpb25zLgogCSAqLwogCWdldHRpbWVvZmRheSgmZW5kdGltZSwg TlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBp LmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMKaW5kZXggNWEwMDk3 NzZkMTIuLjIzODJlYTA4YThmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9iZS1z ZWN1cmUtZ3NzYXBpLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2Fw aS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50Lmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIApAQCAtNDE0LDcgKzQxNSw3IEBAIGJl X2dzc2FwaV9yZWFkKFBvcnQgKnBvcnQsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAogLyoK ICAqIFJlYWQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgb2ZmIHRoZSB3aXJlLCB3 YWl0aW5nIHVzaW5nCi0gKiBXYWl0TGF0Y2hPclNvY2tldCBpZiB3ZSB3b3VsZCBibG9jay4K KyAqIFdhaXRJbnRlcnJ1cHRPclNvY2tldCBpZiB3ZSB3b3VsZCBibG9jay4KICAqCiAgKiBS ZXN1bHRzIGFyZSByZWFkIGludG8gUHFHU1NSZWN2QnVmZmVyLgogICoKQEAgLTQ1MCw5ICs0 NTEsOCBAQCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAJCSAqLwog CQlpZiAocmV0IDw9IDApCiAJCXsKLQkJCVdhaXRMYXRjaE9yU29ja2V0KE5VTEwsCi0JCQkJ CQkJICBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJ CSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIpOworCQkJV2Fp dEludGVycnVwdE9yU29ja2V0KDAsIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BF Tl9TRVJWRVIpOwogCiAJCQkvKgogCQkJICogSWYgd2UgZ290IGJhY2sgemVybyBieXRlcywg YW5kIHRoZW4gd2FpdGVkIG9uIHRoZSBzb2NrZXQgdG8gYmUKQEAgLTQ4OSw3ICs0ODksNyBA QCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAgKgogICogTm90ZSB0 aGF0IHVubGlrZSB0aGUgYmVfZ3NzYXBpX3JlYWQvYmVfZ3NzYXBpX3dyaXRlIGZ1bmN0aW9u cywgdGhpcwogICogZnVuY3Rpb24gV0lMTCBibG9jayBvbiB0aGUgc29ja2V0IHRvIGJlIHJl YWR5IGZvciByZWFkL3dyaXRlICh1c2luZwotICogV2FpdExhdGNoT3JTb2NrZXQpIGFzIGFw cHJvcHJpYXRlIHdoaWxlIGVzdGFibGlzaGluZyB0aGUgR1NTQVBJCisgKiBXYWl0SW50ZXJy dXB0T3JTb2NrZXQpIGFzIGFwcHJvcHJpYXRlIHdoaWxlIGVzdGFibGlzaGluZyB0aGUgR1NT QVBJCiAgKiBzZXNzaW9uLgogICovCiBzc2l6ZV90CkBAIC02NjgsOSArNjY4LDggQEAgc2Vj dXJlX29wZW5fZ3NzYXBpKFBvcnQgKnBvcnQpCiAJCQkJLyogV2FpdCBhbmQgcmV0cnkgaWYg d2UgY291bGRuJ3Qgd3JpdGUgeWV0ICovCiAJCQkJaWYgKHJldCA8PSAwKQogCQkJCXsKLQkJ CQkJV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwKLQkJCQkJCQkJCSAgV0xfU09DS0VUX1dSSVRF QUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkgIHBvcnQtPnNvY2ssIDAs IFdBSVRfRVZFTlRfR1NTX09QRU5fU0VSVkVSKTsKKwkJCQkJV2FpdEludGVycnVwdE9yU29j a2V0KDAsIFdMX1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJ CQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIpOwog CQkJCQljb250aW51ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBx L2JlLXNlY3VyZS1vcGVuc3NsLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3Bl bnNzbC5jCmluZGV4IDkxYTg2ZDYyYTM1Li5jZGFiNmIwZjU5NSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMvYmFja2VuZC9s aWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jCkBAIC0zMiw3ICszMiw4IEBACiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9m ZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lu dGVycnVwdC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIApAQCAtNTIyLDggKzUy Myw4IEBAIGFsb29wOgogCQkJCWVsc2UKIAkJCQkJd2FpdGZvciA9IFdMX1NPQ0tFVF9XUklU RUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRIOwogCi0JCQkJKHZvaWQpIFdhaXRMYXRjaE9y U29ja2V0KE5VTEwsIHdhaXRmb3IsIHBvcnQtPnNvY2ssIDAsCi0JCQkJCQkJCQkJIFdBSVRf RVZFTlRfU1NMX09QRU5fU0VSVkVSKTsKKwkJCQkodm9pZCkgV2FpdEludGVycnVwdE9yU29j a2V0KDAsIHdhaXRmb3IsIHBvcnQtPnNvY2ssIDAsCisJCQkJCQkJCQkJCSBXQUlUX0VWRU5U X1NTTF9PUEVOX1NFUlZFUik7CiAJCQkJZ290byBhbG9vcDsKIAkJCWNhc2UgU1NMX0VSUk9S X1NZU0NBTEw6CiAJCQkJaWYgKHIgPCAwICYmIGVycm5vICE9IDApCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNl Y3VyZS5jCmluZGV4IDIxMzlmODFmMjQxLi42ZWNjYTZhMGRhYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUt c2VjdXJlLmMKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KIAog I2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90Lmgi CiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMv d2FpdF9ldmVudC5oIgpAQCAtMjEzLDcgKzIxMyw3IEBAIHJldHJ5OgogCiAJCUFzc2VydCh3 YWl0Zm9yKTsKIAotCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0 U29ja2V0UG9zLCB3YWl0Zm9yLCBOVUxMKTsKKwkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0 U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgd2FpdGZvciwgMCk7CiAKIAkJV2FpdEV2ZW50 U2V0V2FpdChGZUJlV2FpdFNldCwgLTEgLyogbm8gdGltZW91dCAqLyAsICZldmVudCwgMSwK IAkJCQkJCSBXQUlUX0VWRU5UX0NMSUVOVF9SRUFEKTsKQEAgLTIyOCwxMiArMjI4LDEyIEBA IHJldHJ5OgogCQkgKiBuZXcgY29ubmVjdGlvbnMgY2FuIGJlIGFjY2VwdGVkLiAgRXhpdGlu ZyBjbGVhcnMgdGhlIGRlY2sgZm9yIGEKIAkJICogcG9zdG1hc3RlciByZXN0YXJ0LgogCQkg KgotCQkgKiAoTm90ZSB0aGF0IHdlIG9ubHkgbWFrZSB0aGlzIGNoZWNrIHdoZW4gd2Ugd291 bGQgb3RoZXJ3aXNlIHNsZWVwIG9uCi0JCSAqIG91ciBsYXRjaC4gIFdlIG1pZ2h0IHN0aWxs IGNvbnRpbnVlIHJ1bm5pbmcgZm9yIGEgd2hpbGUgaWYgdGhlCi0JCSAqIHBvc3RtYXN0ZXIg aXMga2lsbGVkIGluIG1pZC1xdWVyeSwgb3IgZXZlbiB0aHJvdWdoIG11bHRpcGxlIHF1ZXJp ZXMKLQkJICogaWYgd2UgbmV2ZXIgaGF2ZSB0byB3YWl0IGZvciByZWFkLiAgV2UgZG9uJ3Qg d2FudCB0byBidXJuIHRvbyBtYW55Ci0JCSAqIGN5Y2xlcyBjaGVja2luZyBmb3IgdGhpcyB2 ZXJ5IHJhcmUgY29uZGl0aW9uLCBhbmQgdGhpcyBzaG91bGQgY2F1c2UKLQkJICogdXMgdG8g ZXhpdCBxdWlja2x5IGluIG1vc3QgY2FzZXMuKQorCQkgKiAoTm90ZSB0aGF0IHdlIG9ubHkg bWFrZSB0aGlzIGNoZWNrIHdoZW4gd2Ugd291bGQgb3RoZXJ3aXNlIHNsZWVwCisJCSAqIHdh aXRpbmcgZm9yIGludGVycnVwdC4gIFdlIG1pZ2h0IHN0aWxsIGNvbnRpbnVlIHJ1bm5pbmcg Zm9yIGEgd2hpbGUKKwkJICogaWYgdGhlIHBvc3RtYXN0ZXIgaXMga2lsbGVkIGluIG1pZC1x dWVyeSwgb3IgZXZlbiB0aHJvdWdoIG11bHRpcGxlCisJCSAqIHF1ZXJpZXMgaWYgd2UgbmV2 ZXIgaGF2ZSB0byB3YWl0IGZvciByZWFkLiAgV2UgZG9uJ3Qgd2FudCB0byBidXJuCisJCSAq IHRvbyBtYW55IGN5Y2xlcyBjaGVja2luZyBmb3IgdGhpcyB2ZXJ5IHJhcmUgY29uZGl0aW9u LCBhbmQgdGhpcworCQkgKiBzaG91bGQgY2F1c2UgdXMgdG8gZXhpdCBxdWlja2x5IGluIG1v c3QgY2FzZXMuKQogCQkgKi8KIAkJaWYgKGV2ZW50LmV2ZW50cyAmIFdMX1BPU1RNQVNURVJf REVBVEgpCiAJCQllcmVwb3J0KEZBVEFMLApAQCAtMjQxLDkgKzI0MSw5IEBAIHJldHJ5Ogog CQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byB1bmV4cGVjdGVk IHBvc3RtYXN0ZXIgZXhpdCIpKSk7CiAKIAkJLyogSGFuZGxlIGludGVycnVwdC4gKi8KLQkJ aWYgKGV2ZW50LmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKGV2ZW50LmV2ZW50cyAm IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCQlQcm9jZXNzQ2xpZW50 UmVhZEludGVycnVwdCh0cnVlKTsKIAogCQkJLyoKQEAgLTI4NCw3ICsyODQsOCBAQCBzZWN1 cmVfcmF3X3JlYWQoUG9ydCAqcG9ydCwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogCiAJLyoK IAkgKiBUcnkgdG8gcmVhZCBmcm9tIHRoZSBzb2NrZXQgd2l0aG91dCBibG9ja2luZy4gSWYg aXQgc3VjY2VlZHMgd2UncmUKLQkgKiBkb25lLCBvdGhlcndpc2Ugd2UnbGwgd2FpdCBmb3Ig dGhlIHNvY2tldCB1c2luZyB0aGUgbGF0Y2ggbWVjaGFuaXNtLgorCSAqIGRvbmUsIG90aGVy d2lzZSB3ZSdsbCB3YWl0IGZvciB0aGUgc29ja2V0IHVzaW5nIHRoZSBpbnRlcnJ1cHQKKwkg KiBtZWNoYW5pc20uCiAJICovCiAjaWZkZWYgV0lOMzIKIAlwZ3dpbjMyX25vYmxvY2sgPSB0 cnVlOwpAQCAtMzM4LDcgKzMzOSw3IEBAIHJldHJ5OgogCiAJCUFzc2VydCh3YWl0Zm9yKTsK IAotCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9z LCB3YWl0Zm9yLCBOVUxMKTsKKwkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJl V2FpdFNldFNvY2tldFBvcywgd2FpdGZvciwgMCk7CiAKIAkJV2FpdEV2ZW50U2V0V2FpdChG ZUJlV2FpdFNldCwgLTEgLyogbm8gdGltZW91dCAqLyAsICZldmVudCwgMSwKIAkJCQkJCSBX QUlUX0VWRU5UX0NMSUVOVF9XUklURSk7CkBAIC0zNTAsOSArMzUxLDkgQEAgcmV0cnk6CiAJ CQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIHVuZXhwZWN0ZWQg cG9zdG1hc3RlciBleGl0IikpKTsKIAogCQkvKiBIYW5kbGUgaW50ZXJydXB0LiAqLwotCQlp ZiAoZXZlbnQuZXZlbnRzICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAoZXZlbnQuZXZlbnRzICYg V0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCVByb2Nlc3NDbGllbnRX cml0ZUludGVycnVwdCh0cnVlKTsKIAogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2xpYnBxL3BxY29tbS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKaW5kZXggODk2 ZTE0NzZiNTAuLjNiN2JjOTljYTcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9w cWNvbW0uYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwpAQCAtNzcsNiArNzcs NyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAu aCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKKyNpbmNsdWRlICJzdG9y YWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAi dXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTE3 NSw3ICsxNzYsNyBAQCBwcV9pbml0KENsaWVudFNvY2tldCAqY2xpZW50X3NvY2spCiB7CiAJ UG9ydAkgICAqcG9ydDsKIAlpbnQJCQlzb2NrZXRfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNf T05MWTsKLQlpbnQJCQlsYXRjaF9wb3MgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCWlu dAkJCWludGVycnVwdF9wb3MgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwogCiAJLyogYWxs b2NhdGUgdGhlIFBvcnQgc3RydWN0IGFuZCBjb3B5IHRoZSBDbGllbnRTb2NrZXQgY29udGVu dHMgdG8gaXQgKi8KIAlwb3J0ID0gcGFsbG9jMChzaXplb2YoUG9ydCkpOwpAQCAtMjg3LDgg KzI4OCw4IEBAIHBxX2luaXQoQ2xpZW50U29ja2V0ICpjbGllbnRfc29jaykKIAogCS8qCiAJ ICogSW4gYmFja2VuZHMgKGFzIHNvb24gYXMgZm9ya2VkKSB3ZSBvcGVyYXRlIHRoZSB1bmRl cmx5aW5nIHNvY2tldCBpbgotCSAqIG5vbmJsb2NraW5nIG1vZGUgYW5kIHVzZSBsYXRjaGVz IHRvIGltcGxlbWVudCBibG9ja2luZyBzZW1hbnRpY3MgaWYKLQkgKiBuZWVkZWQuIFRoYXQg YWxsb3dzIHVzIHRvIHByb3ZpZGUgc2FmZWx5IGludGVycnVwdGlibGUgcmVhZHMgYW5kCisJ ICogbm9uYmxvY2tpbmcgbW9kZSBhbmQgdXNlIFdhaXRFdmVudFNldCB0byBpbXBsZW1lbnQg YmxvY2tpbmcgc2VtYW50aWNzCisJICogaWYgbmVlZGVkLiBUaGF0IGFsbG93cyB1cyB0byBw cm92aWRlIHNhZmVseSBpbnRlcnJ1cHRpYmxlIHJlYWRzIGFuZAogCSAqIHdyaXRlcy4KIAkg Ki8KICNpZm5kZWYgV0lOMzIKQEAgLTMwNiwxOCArMzA3LDE4IEBAIHBxX2luaXQoQ2xpZW50 U29ja2V0ICpjbGllbnRfc29jaykKIAogCUZlQmVXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50 U2V0KE5VTEwsIEZlQmVXYWl0U2V0TkV2ZW50cyk7CiAJc29ja2V0X3BvcyA9IEFkZFdhaXRF dmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9TT0NLRVRfV1JJVEVBQkxFLAotCQkJCQkJCQkg ICBwb3J0LT5zb2NrLCBOVUxMLCBOVUxMKTsKLQlsYXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRU b1NldChGZUJlV2FpdFNldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJ CQkJCQkgIE15TGF0Y2gsIE5VTEwpOworCQkJCQkJCQkgICBwb3J0LT5zb2NrLCAwLCBOVUxM KTsKKwlpbnRlcnJ1cHRfcG9zID0gQWRkV2FpdEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdM X0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJCQkJCSAgMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsIE5VTEwpOwogCUFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0 U2V0LCBXTF9QT1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkgIE5V TEwsIE5VTEwpOworCQkJCQkgIDAsIE5VTEwpOwogCiAJLyoKIAkgKiBUaGUgZXZlbnQgcG9z aXRpb25zIG1hdGNoIHRoZSBvcmRlciB3ZSBhZGRlZCB0aGVtLCBidXQgbGV0J3Mgc2FuaXR5 CiAJICogY2hlY2sgdGhlbSB0byBiZSBzdXJlLgogCSAqLwogCUFzc2VydChzb2NrZXRfcG9z ID09IEZlQmVXYWl0U2V0U29ja2V0UG9zKTsKLQlBc3NlcnQobGF0Y2hfcG9zID09IEZlQmVX YWl0U2V0TGF0Y2hQb3MpOworCUFzc2VydChpbnRlcnJ1cHRfcG9zID09IEZlQmVXYWl0U2V0 SW50ZXJydXB0UG9zKTsKIAogCXJldHVybiBwb3J0OwogfQpAQCAtMjA2MCw3ICsyMDYxLDcg QEAgcHFfY2hlY2tfY29ubmVjdGlvbih2b2lkKQogCSAqIEl0J3MgT0sgdG8gbW9kaWZ5IHRo ZSBzb2NrZXQgZXZlbnQgZmlsdGVyIHdpdGhvdXQgcmVzdG9yaW5nLCBiZWNhdXNlCiAJICog YWxsIEZlQmVXYWl0U2V0IHNvY2tldCB3YWl0IHNpdGVzIGRvIHRoZSBzYW1lLgogCSAqLwot CU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIFdM X1NPQ0tFVF9DTE9TRUQsIE5VTEwpOworCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwg RmVCZVdhaXRTZXRTb2NrZXRQb3MsIFdMX1NPQ0tFVF9DTE9TRUQsIDApOwogCiByZXRyeToK IAlyYyA9IFdhaXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIDAsIGV2ZW50cywgbGVuZ3Ro b2YoZXZlbnRzKSwgMCk7CkBAIC0yMDY4LDE1ICsyMDY5LDE1IEBAIHJldHJ5OgogCXsKIAkJ aWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9TT0NLRVRfQ0xPU0VEKQogCQkJcmV0dXJuIGZh bHNlOwotCQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKGV2 ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKIAkJCS8qCi0JCQkgKiBBIGxh dGNoIGV2ZW50IG1pZ2h0IGJlIHByZXZlbnRpbmcgb3RoZXIgZXZlbnRzIGZyb20gYmVpbmcK KwkJCSAqIEFuIGludGVycnVwdCBldmVudCBtaWdodCBiZSBwcmV2ZW50aW5nIG90aGVyIGV2 ZW50cyBmcm9tIGJlaW5nCiAJCQkgKiByZXBvcnRlZC4gIFJlc2V0IGl0IGFuZCBwb2xsIGFn YWluLiAgTm8gbmVlZCB0byByZXN0b3JlIGl0Ci0JCQkgKiBiZWNhdXNlIG5vIGNvZGUgc2hv dWxkIGV4cGVjdCBsYXRjaGVzIHRvIHN1cnZpdmUgYWNyb3NzCi0JCQkgKiBDSEVDS19GT1Jf SU5URVJSVVBUUygpLgorCQkJICogYmVjYXVzZSBubyBjb2RlIHNob3VsZCBleHBlY3QgSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQIHRvCisJCQkgKiBzdXJ2aXZlIGFjcm9zcyBDSEVDS19G T1JfSU5URVJSVVBUUygpLgogCQkJICovCi0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCWdvdG8gcmV0 cnk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgYi9z cmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggZmQ3MzVlMmZlYTkuLjliMjk5ZTIxNDAw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKKysrIGIvc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAKQEAgLTE4 MSw5ICsxODIsMTAgQEAgbXFfcHV0bWVzc2FnZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIg KnMsIHNpemVfdCBsZW4pCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQog CQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQg fCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9R VUVVRV9QVVRfTUVTU0FHRSk7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCSh2b2lkKSBX YWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCSBXQUlUX0VW RU5UX01FU1NBR0VfUVVFVUVfUFVUX01FU1NBR0UpOworCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFzaWduYWwuYyBiL3NyYy9iYWNr ZW5kL2xpYnBxL3Bxc2lnbmFsLmMKaW5kZXggMjJhMTZjNTBiMjEuLjJmNWVlYmRmZWM0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcXNpZ25hbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2xpYnBxL3Bxc2lnbmFsLmMKQEAgLTQyLDcgKzQyLDcgQEAgcHFpbml0bWFzayh2b2lk KQogewogCXNpZ2VtcHR5c2V0KCZVbkJsb2NrU2lnKTsKIAotCS8qIE5vdGU6IEluaXRpYWxp emVMYXRjaFN1cHBvcnQoKSBtb2RpZmllcyBVbkJsb2NrU2lnLiAqLworCS8qIE5vdGU6IElu aXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KCkgbW9kaWZpZXMgVW5CbG9ja1NpZy4gKi8KIAog CS8qIEZpcnN0IHNldCBhbGwgc2lnbmFscywgdGhlbiBjbGVhciBzb21lLiAqLwogCXNpZ2Zp bGxzZXQoJkJsb2NrU2lnKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5k ZXggZGMzY2Y4N2FiYWIuLjllZjRhNGNjZDExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYwpAQCAtODksOCArODksOCBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTU3MSwxMCArNTcxLDEwIEBAIEF1 dG9WYWNMYXVuY2hlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAkJYm9vbAkJY2FuX2xhdW5jaDsKIAogCQkvKgotCQkgKiBUaGlzIGxvb3Ag aXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ugb2YgV2FpdExhdGNoLAor CQkgKiBUaGlzIGxvb3AgaXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ug b2YgV2FpdEludGVycnVwdCwKIAkJICogYmVjYXVzZSB3ZSdkIGxpa2UgdG8gc2xlZXAgYmVm b3JlIHRoZSBmaXJzdCBsYXVuY2ggb2YgYSBjaGlsZAotCQkgKiBwcm9jZXNzLiAgU28gaXQn cyBXYWl0TGF0Y2gsIHRoZW4gUmVzZXRMYXRjaCwgdGhlbiBjaGVjayBmb3IKLQkJICogd2Fr ZW5pbmcgY29uZGl0aW9ucy4KKwkJICogcHJvY2Vzcy4gIFNvIGl0J3MgV2FpdEludGVycnVw dCwgdGhlbiBDbGVhckludGVycnVwdCwgdGhlbiBjaGVjaworCQkgKiBmb3Igd2FrZW5pbmcg Y29uZGl0aW9ucy4KIAkJICovCiAKIAkJbGF1bmNoZXJfZGV0ZXJtaW5lX3NsZWVwKCFkbGlz dF9pc19lbXB0eSgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2VycyksCkBAIC01ODIs MTQgKzU4MiwxNCBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwg c2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJLyoKIAkJICogV2FpdCB1bnRpbCBuYXB0 aW1lIGV4cGlyZXMgb3Igd2UgZ2V0IHNvbWUgdHlwZSBvZiBzaWduYWwgKGFsbCB0aGUKLQkJ ICogc2lnbmFsIGhhbmRsZXJzIHdpbGwgd2FrZSB1cyBieSBjYWxsaW5nIFNldExhdGNoKS4K KwkJICogc2lnbmFsIGhhbmRsZXJzIHdpbGwgd2FrZSB1cyBieSBjYWxsaW5nIFJhaXNlSW50 ZXJydXB0KS4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CSAobmFwLnR2X3NlYyAqIDEwMDBMKSArIChuYXAudHZfdXNlYyAvIDEwMDBMKSwKLQkJCQkJ CSBXQUlUX0VWRU5UX0FVVE9WQUNVVU1fTUFJTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0 KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgKG5hcC50dl9z ZWMgKiAxMDAwTCkgKyAobmFwLnR2X3VzZWMgLyAxMDAwTCksCisJCQkJCQkJIFdBSVRfRVZF TlRfQVVUT1ZBQ1VVTV9NQUlOKTsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCUhhbmRsZUF1dG9W YWNMYXVuY2hlckludGVycnVwdHMoKTsKIApAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgc3RhdGlj IHZvaWQKIGF2bF9zaWd1c3IyX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiB7CiAJZ290X1NJR1VT UjIgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHBy b2Nlc3MuYwppbmRleCBkMTkxNzRiZGEzOS4uNWNjMDU2Y2Q1YWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogI2lu Y2x1ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3Jr ZXIuYwppbmRleCAwN2JjNTUxN2ZjMi4uOWVkMThmODQwN2EgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJwb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIK QEAgLTEyMjYsOSArMTIyNiw5IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU3RhcnR1cChC YWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRwKQogCQlpZiAoc3Rh dHVzICE9IEJHV0hfTk9UX1lFVF9TVEFSVEVEKQogCQkJYnJlYWs7CiAKLQkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfUE9TVE1BU1RFUl9E RUFUSCwgMCwKLQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKKwkJcmMg PSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJ ICAgV0xfSU5URVJSVVBUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwgMCwKKwkJCQkJCSAgIFdB SVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CiAKIAkJaWYgKHJjICYgV0xfUE9TVE1BU1RF Ul9ERUFUSCkKIAkJewpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgV2FpdEZvckJhY2tncm91bmRX b3JrZXJTdGFydHVwKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSwgcGlkX3QgKnBp ZHApCiAJCQlicmVhazsKIAkJfQogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJcmV0dXJuIHN0 YXR1czsKQEAgLTEyNjksOSArMTI2OSw5IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU2h1 dGRvd24oQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQogCQlpZiAoc3RhdHVzID09 IEJHV0hfU1RPUFBFRCkKIAkJCWJyZWFrOwogCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCi0JCQkJ CSAgIFdBSVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOworCQlyYyA9IFdhaXRJbnRlcnJ1 cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJV UFQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAorCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dP UktFUl9TSFVURE9XTik7CiAKIAkJaWYgKHJjICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJ ewpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgV2FpdEZvckJhY2tncm91bmRXb3JrZXJTaHV0ZG93 bihCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCQlicmVhazsKIAkJfQogCi0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCk7CiAJfQogCiAJcmV0dXJuIHN0YXR1czsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Ymd3cml0ZXIuYwppbmRleCAwZjc1NTQ4NzU5YS4uYzU5NDgwNTY1YWMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYworKysgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2Jnd3JpdGVyLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKQEAgLTIyNCw3ICsyMjUs NyBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCQlpbnQJCQlyYzsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFk eS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQlIYW5kbGVNYWluTG9v cEludGVycnVwdHMoKTsKIApAQCAtMjk5LDIyICszMDAsMjIgQEAgQmFja2dyb3VuZFdyaXRl ck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJ ICogd2lsbCBjYWxsIGl0IGV2ZXJ5IEJnV3JpdGVyRGVsYXkgbXNlYy4gIFdoaWxlIGl0J3Mg bm90IGNyaXRpY2FsIGZvcgogCQkgKiBjb3JyZWN0bmVzcyB0aGF0IHRoYXQgYmUgZXhhY3Qs IHRoZSBmZWVkYmFjayBsb29wIG1pZ2h0IG1pc2JlaGF2ZQogCQkgKiBpZiB3ZSBzdHJheSB0 b28gZmFyIGZyb20gdGhhdC4gIEhlbmNlLCBhdm9pZCBsb2FkaW5nIHRoaXMgcHJvY2Vzcwot CQkgKiBkb3duIHdpdGggbGF0Y2ggZXZlbnRzIHRoYXQgYXJlIGxpa2VseSB0byBoYXBwZW4g ZnJlcXVlbnRseSBkdXJpbmcKLQkJICogbm9ybWFsIG9wZXJhdGlvbi4KKwkJICogZG93biB3 aXRoIGludGVycnVwdCBldmVudHMgdGhhdCBhcmUgbGlrZWx5IHRvIGhhcHBlbiBmcmVxdWVu dGx5CisJCSAqIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLgogCQkgKi8KLQkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIEJnV3JpdGVyRGVsYXkgLyogbXMgKi8gLCBX QUlUX0VWRU5UX0JHV1JJVEVSX01BSU4pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIEJnV3JpdGVyRGVsYXkg LyogbXMgKi8gLCBXQUlUX0VWRU5UX0JHV1JJVEVSX01BSU4pOwogCiAJCS8qCi0JCSAqIElm IG5vIGxhdGNoIGV2ZW50IGFuZCBCZ0J1ZmZlclN5bmMgc2F5cyBub3RoaW5nJ3MgaGFwcGVu aW5nLCBleHRlbmQKLQkJICogdGhlIHNsZWVwIGluICJoaWJlcm5hdGlvbiIgbW9kZSwgd2hl cmUgd2Ugc2xlZXAgZm9yIG11Y2ggbG9uZ2VyCi0JCSAqIHRoYW4gYmd3cml0ZXJfZGVsYXkg c2F5cy4gIEZld2VyIHdha2V1cHMgc2F2ZSBlbGVjdHJpY2l0eS4gIFdoZW4gYQotCQkgKiBi YWNrZW5kIHN0YXJ0cyB1c2luZyBidWZmZXJzIGFnYWluLCBpdCB3aWxsIHdha2UgdXMgdXAg Ynkgc2V0dGluZwotCQkgKiBvdXIgbGF0Y2guICBCZWNhdXNlIHRoZSBleHRyYSBzbGVlcCB3 aWxsIHBlcnNpc3Qgb25seSBhcyBsb25nIGFzIG5vCi0JCSAqIGJ1ZmZlciBhbGxvY2F0aW9u cyBoYXBwZW4sIHRoaXMgc2hvdWxkIG5vdCBkaXN0b3J0IHRoZSBiZWhhdmlvciBvZgotCQkg KiBCZ0J1ZmZlclN5bmMncyBjb250cm9sIGxvb3AgdG9vIGJhZGx5OyBlc3NlbnRpYWxseSwg aXQgd2lsbCB0aGluawotCQkgKiB0aGF0IHRoZSBzeXN0ZW0td2lkZSBpZGxlIGludGVydmFs IGRpZG4ndCBleGlzdC4KKwkJICogSWYgbm8gaW50ZXJydXB0IGV2ZW50IGFuZCBCZ0J1ZmZl clN5bmMgc2F5cyBub3RoaW5nJ3MgaGFwcGVuaW5nLAorCQkgKiBleHRlbmQgdGhlIHNsZWVw IGluICJoaWJlcm5hdGlvbiIgbW9kZSwgd2hlcmUgd2Ugc2xlZXAgZm9yIG11Y2gKKwkJICog bG9uZ2VyIHRoYW4gYmd3cml0ZXJfZGVsYXkgc2F5cy4gIEZld2VyIHdha2V1cHMgc2F2ZSBl bGVjdHJpY2l0eS4KKwkJICogV2hlbiBhIGJhY2tlbmQgc3RhcnRzIHVzaW5nIGJ1ZmZlcnMg YWdhaW4sIGl0IHdpbGwgd2FrZSB1cyB1cCBieQorCQkgKiBzZW5kaW5nIHVzIGFuIGludGVy cnVwdC4gIEJlY2F1c2UgdGhlIGV4dHJhIHNsZWVwIHdpbGwgcGVyc2lzdCBvbmx5CisJCSAq IGFzIGxvbmcgYXMgbm8gYnVmZmVyIGFsbG9jYXRpb25zIGhhcHBlbiwgdGhpcyBzaG91bGQg bm90IGRpc3RvcnQKKwkJICogdGhlIGJlaGF2aW9yIG9mIEJnQnVmZmVyU3luYydzIGNvbnRy b2wgbG9vcCB0b28gYmFkbHk7IGVzc2VudGlhbGx5LAorCQkgKiBpdCB3aWxsIHRoaW5rIHRo YXQgdGhlIHN5c3RlbS13aWRlIGlkbGUgaW50ZXJ2YWwgZGlkbid0IGV4aXN0LgogCQkgKgog CQkgKiBUaGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGhlcmUsIGluIHRoYXQgYSBiYWNrZW5k IG1pZ2h0IGFsbG9jYXRlIGEKIAkJICogYnVmZmVyIGJldHdlZW4gdGhlIHRpbWUgQmdCdWZm ZXJTeW5jIHNhdyB0aGUgYWxsb2MgY291bnQgYXMgemVybwpAQCAtMzI5LDEwICszMzAsMTAg QEAgQmFja2dyb3VuZFdyaXRlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAkJCS8qIEFzayBmb3Igbm90aWZpY2F0aW9uIGF0IG5leHQgYnVm ZmVyIGFsbG9jYXRpb24gKi8KIAkJCVN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIoTXlQcm9jTnVt YmVyKTsKIAkJCS8qIFNsZWVwIC4uLiAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCQkgQmdXcml0ZXJEZWxheSAqIEhJQkVSTkFURV9GQUNUT1IsCi0JCQkJ CQkJIFdBSVRfRVZFTlRfQkdXUklURVJfSElCRVJOQVRFKTsKKwkJCSh2b2lkKSBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCQkgV0xfSU5U RVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSBC Z1dyaXRlckRlbGF5ICogSElCRVJOQVRFX0ZBQ1RPUiwKKwkJCQkJCQkJIFdBSVRfRVZFTlRf QkdXUklURVJfSElCRVJOQVRFKTsKIAkJCS8qIFJlc2V0IHRoZSBub3RpZmljYXRpb24gcmVx dWVzdCBpbiBjYXNlIHdlIHRpbWVkIG91dCAqLwogCQkJU3RyYXRlZ3lOb3RpZnlCZ1dyaXRl cigtMSk7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4 IDk4MjU3MmE3NWRiLi4xYWU0ODQxYWQyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2No ZWNrcG9pbnRlci5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZt Z3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTM0Myw3ICszNDQsNyBAQCBDaGVja3BvaW50 ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJ CWJvb2wJCWNoa3B0X29yX3JzdHB0X3RpbWVkID0gZmFsc2U7CiAKIAkJLyogQ2xlYXIgYW55 IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyoKIAkJ ICogUHJvY2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4K QEAgLTU1NSwxMCArNTU2LDEwIEBAIENoZWNrcG9pbnRlck1haW4oY2hhciAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCWN1cl90aW1lb3V0ID0gTWluKGN1 cl90aW1lb3V0LCBYTG9nQXJjaGl2ZVRpbWVvdXQgLSBlbGFwc2VkX3NlY3MpOwogCQl9CiAK LQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIGN1cl90aW1lb3V0ICog MTAwMEwgLyogY29udmVydCB0byBtcyAqLyAsCi0JCQkJCQkgV0FJVF9FVkVOVF9DSEVDS1BP SU5URVJfTUFJTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgY3VyX3RpbWVvdXQgKiAxMDAwTCAvKiBjb252 ZXJ0IHRvIG1zICovICwKKwkJCQkJCQkgV0FJVF9FVkVOVF9DSEVDS1BPSU5URVJfTUFJTik7 CiAJfQogfQogCkBAIC03NTgsMTAgKzc1OSwxMSBAQCBDaGVja3BvaW50V3JpdGVEZWxheShp bnQgZmxhZ3MsIGRvdWJsZSBwcm9ncmVzcykKIAkJICogQ2hlY2twb2ludGVyIGFuZCBiZ3dy aXRlciBhcmUgbm8gbG9uZ2VyIHJlbGF0ZWQgc28gdGFrZSB0aGUgQmlnCiAJCSAqIFNsZWVw LgogCQkgKi8KLQkJV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRf T05fUE1fREVBVEggfCBXTF9USU1FT1VULAotCQkJCSAgMTAwLAotCQkJCSAgV0FJVF9FVkVO VF9DSEVDS1BPSU5UX1dSSVRFX0RFTEFZKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ V2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJICBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwKKwkJCQkJ ICAxMDAsCisJCQkJCSAgV0FJVF9FVkVOVF9DSEVDS1BPSU5UX1dSSVRFX0RFTEFZKTsKKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAl9CiAJZWxzZSBp ZiAoLS1hYnNvcmJfY291bnRlciA8PSAwKQogCXsKQEAgLTg3Myw3ICs4NzUsNyBAQCBSZXFD aGVja3BvaW50SGFuZGxlcihTSUdOQUxfQVJHUykKIAkgKiBUaGUgc2lnbmFsaW5nIHByb2Nl c3Mgc2hvdWxkIGhhdmUgc2V0IGNrcHRfZmxhZ3Mgbm9uemVybywgc28gYWxsIHdlCiAJICog bmVlZCBkbyBpcyBlbnN1cmUgdGhhdCBvdXIgbWFpbiBsb29wIGdldHMga2lja2VkIG91dCBv ZiBhbnkgd2FpdC4KIAkgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQogCiAKQEAgLTExNDUsNyArMTE0Nyw3 IEBAIEZvcndhcmRTeW5jUmVxdWVzdChjb25zdCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVz dFR5cGUgdHlwZSkKIAkJUHJvY051bWJlcgljaGVja3BvaW50ZXJQcm9jID0gcHJvY2dsb2Jh bC0+Y2hlY2twb2ludGVyUHJvYzsKIAogCQlpZiAoY2hlY2twb2ludGVyUHJvYyAhPSBJTlZB TElEX1BST0NfTlVNQkVSKQotCQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKGNoZWNr cG9pbnRlclByb2MpLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVAsIFByb2NHbG9iYWwtPmNoZWNrcG9pbnRlclByb2MpOwogCX0KIAog CXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRl cnJ1cHQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKaW5kZXggZWVk YzA5ODBjZjEuLjhjYmRlMDY5OGMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2ludGVycnVwdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0 LmMKQEAgLTE4LDggKzE4LDggQEAKIAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0 Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJ1dGls cy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNjEsNyArNjEsNyBA QCB2b2lkCiBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKFNJR05BTF9BUkdTKQogewog CUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJh aXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0x MDUsNSArMTA1LDUgQEAgdm9pZAogU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdChT SUdOQUxfQVJHUykKIHsKIAlTaHV0ZG93blJlcXVlc3RQZW5kaW5nID0gdHJ1ZTsKLQlTZXRM YXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVApOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKaW5kZXggMDJmOTE0MzFmNWYuLjAx NDA1YmYyYTA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5j CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKQEAgLTQxLDggKzQxLDgg QEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3BnYXJjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv Y29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNp bmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3Np Z25hbC5oIgpAQCAtMjQ3LDggKzI0Nyw4IEBAIFBnQXJjaGl2ZXJNYWluKGNoYXIgKnN0YXJ0 dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJb25fc2htZW1fZXhpdChwZ2Fy Y2hfZGllLCAwKTsKIAogCS8qCi0JICogQWR2ZXJ0aXNlIG91ciBwcm9jIG51bWJlciBzbyB0 aGF0IGJhY2tlbmRzIGNhbiB1c2Ugb3VyIGxhdGNoIHRvIHdha2UgdXMKLQkgKiB1cCB3aGls ZSB3ZSdyZSBzbGVlcGluZy4KKwkgKiBBZHZlcnRpc2Ugb3VyIHByb2MgbnVtYmVyIHNvIHRo YXQgYmFja2VuZHMgY2FuIHdha2UgdXMgdXAgd2hpbGUgd2UncmUKKwkgKiBzbGVlcGluZy4K IAkgKi8KIAlQZ0FyY2gtPnBncHJvY25vID0gTXlQcm9jTnVtYmVyOwogCkBAIC0yODIsMTMg KzI4MiwxMiBAQCBQZ0FyY2hXYWtldXAodm9pZCkKIAlpbnQJCQlhcmNoX3BncHJvY25vID0g UGdBcmNoLT5wZ3Byb2NubzsKIAogCS8qCi0JICogV2UgZG9uJ3QgYWNxdWlyZSBQcm9jQXJy YXlMb2NrIGhlcmUuICBJdCdzIGFjdHVhbGx5IGZpbmUgYmVjYXVzZQotCSAqIHByb2NMYXRj aCBpc24ndCBldmVyIGZyZWVkLCBzbyB3ZSBqdXN0IGNhbiBwb3RlbnRpYWxseSBzZXQgdGhl IHdyb25nCi0JICogcHJvY2VzcycgKG9yIG5vIHByb2Nlc3MnKSBsYXRjaC4gIEV2ZW4gaW4g dGhhdCBjYXNlIHRoZSBhcmNoaXZlciB3aWxsCi0JICogYmUgcmVsYXVuY2hlZCBzaG9ydGx5 IGFuZCB3aWxsIHN0YXJ0IGFyY2hpdmluZy4KKwkgKiBXZSBkb24ndCBhY3F1aXJlIFByb2NB cnJheUxvY2sgaGVyZSwgc28gd2UgbWF5IHNlbmQgdGhlIGludGVycnVwdCB0bworCSAqIHdy b25nIHByb2Nlc3MsIGJ1dCB0aGF0J3MgaGFybWxlc3MuICBFdmVuIGluIHRoYXQgY2FzZSB0 aGUgYXJjaGl2ZXIKKwkgKiB3aWxsIGJlIHJlbGF1bmNoZWQgc2hvcnRseSBhbmQgd2lsbCBz dGFydCBhcmNoaXZpbmcuCiAJICovCiAJaWYgKGFyY2hfcGdwcm9jbm8gIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW2FyY2hfcGdw cm9jbm9dLnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQLCBhcmNoX3BncHJvY25vKTsKIH0KIAogCkBAIC0yOTgsNyArMjk3LDcgQEAgcGdh cmNoX3dha2VuX3N0b3AoU0lHTkFMX0FSR1MpCiB7CiAJLyogc2V0IGZsYWcgdG8gZG8gYSBm aW5hbCBjeWNsZSBhbmQgc2h1dCBkb3duIGFmdGVyd2FyZHMgKi8KIAlyZWFkeV90b19zdG9w ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVApOwogfQogCiAvKgpAQCAtMzE4LDcgKzMxNyw3IEBAIHBnYXJj aF9NYWluTG9vcCh2b2lkKQogCSAqLwogCWRvCiAJewotCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCS8q IFdoZW4gd2UgZ2V0IFNJR1VTUjIsIHdlIGRvIG9uZSBtb3JlIGFyY2hpdmUgY3ljbGUsIHRo ZW4gZXhpdCAqLwogCQl0aW1lX3RvX3N0b3AgPSByZWFkeV90b19zdG9wOwpAQCAtMzU1LDEw ICszNTQsMTAgQEAgcGdhcmNoX01haW5Mb29wKHZvaWQpCiAJCXsKIAkJCWludAkJCXJjOwog Ci0JCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwg V0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCi0JCQkJCQkgICBQR0FSQ0hfQVVU T1dBS0VfSU5URVJWQUwgKiAxMDAwTCwKLQkJCQkJCSAgIFdBSVRfRVZFTlRfQVJDSElWRVJf TUFJTik7CisJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVAsCisJCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX1BPU1RN QVNURVJfREVBVEgsCisJCQkJCQkJICAgUEdBUkNIX0FVVE9XQUtFX0lOVEVSVkFMICogMTAw MEwsCisJCQkJCQkJICAgV0FJVF9FVkVOVF9BUkNISVZFUl9NQUlOKTsKIAkJCWlmIChyYyAm IFdMX1BPU1RNQVNURVJfREVBVEgpCiAJCQkJdGltZV90b19zdG9wID0gdHJ1ZTsKIAkJfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCA3OGU2NmEwNmFjNS4uNjg3 YzhlNzY3MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0xMDks NiArMTA5LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBj LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInRjb3AvYmFj a2VuZF9zdGFydHVwLmgiCkBAIC01MzUsOCArNTM2LDcgQEAgUG9zdG1hc3Rlck1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlwcXNpZ25hbChTSUdDSExELCBoYW5kbGVfcG1fY2hp bGRfZXhpdF9zaWduYWwpOwogCiAJLyogVGhpcyBtYXkgY29uZmlndXJlIFNJR1VSRywgZGVw ZW5kaW5nIG9uIHBsYXRmb3JtLiAqLwotCUluaXRpYWxpemVMYXRjaFN1cHBvcnQoKTsKLQlJ bml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKKwlJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCgp OwogCiAJLyoKIAkgKiBObyBvdGhlciBwbGFjZSBpbiBQb3N0Z3JlcyBzaG91bGQgdG91Y2gg U0lHVFRJTi9TSUdUVE9VIGhhbmRsaW5nLiAgV2UKQEAgLTE1OTUsMTQgKzE1OTUsMTQgQEAg Q29uZmlndXJlUG9zdG1hc3RlcldhaXRTZXQoYm9vbCBhY2NlcHRfY29ubmVjdGlvbnMpCiAK IAlwbV93YWl0X3NldCA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLAogCQkJCQkJCQkJIGFj Y2VwdF9jb25uZWN0aW9ucyA/ICgxICsgTnVtTGlzdGVuU29ja2V0cykgOiAxKTsKLQlBZGRX YWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09D S0VULCBNeUxhdGNoLAotCQkJCQkgIE5VTEwpOworCUFkZFdhaXRFdmVudFRvU2V0KHBtX3dh aXRfc2V0LCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCSAgMSA8PCBJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIE5VTEwpOwogCiAJaWYgKGFjY2VwdF9jb25uZWN0 aW9ucykKIAl7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgTnVtTGlzdGVuU29ja2V0czsgaSsr KQogCQkJQWRkV2FpdEV2ZW50VG9TZXQocG1fd2FpdF9zZXQsIFdMX1NPQ0tFVF9BQ0NFUFQs IExpc3RlblNvY2tldHNbaV0sCi0JCQkJCQkJICBOVUxMLCBOVUxMKTsKKwkJCQkJCQkgIDAs IE5VTEwpOwogCX0KIH0KIApAQCAtMTYzMSwxOSArMTYzMSwyMCBAQCBTZXJ2ZXJMb29wKHZv aWQpCiAJCQkJCQkJCSAgIDAgLyogcG9zdG1hc3RlciBwb3N0cyBubyB3YWl0X2V2ZW50cyAq LyApOwogCiAJCS8qCi0JCSAqIExhdGNoIHNldCBieSBzaWduYWwgaGFuZGxlciwgb3IgbmV3 IGNvbm5lY3Rpb24gcGVuZGluZyBvbiBhbnkgb2YKLQkJICogb3VyIHNvY2tldHM/IElmIHRo ZSBsYXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9jZXNzIHRvIGRlYWwgd2l0aCBpdC4KKwkJICog SW50ZXJydXB0IHJhaXNlZCBieSBzaWduYWwgaGFuZGxlciwgb3IgbmV3IGNvbm5lY3Rpb24g cGVuZGluZyBvbgorCQkgKiBhbnkgb2Ygb3VyIHNvY2tldHM/ICBJZiB0aGUgbGF0dGVyLCBm b3JrIGEgY2hpbGQgcHJvY2VzcyB0byBkZWFsCisJCSAqIHdpdGggaXQuCiAJCSAqLwogCQlm b3IgKGludCBpID0gMDsgaSA8IG5ldmVudHM7IGkrKykKIAkJewotCQkJaWYgKGV2ZW50c1tp XS5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCi0JCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ CWlmIChldmVudHNbaV0uZXZlbnRzICYgV0xfSU5URVJSVVBUKQorCQkJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJCS8qCiAJCQkgKiBUaGUgZm9s bG93aW5nIHJlcXVlc3RzIGFyZSBoYW5kbGVkIHVuY29uZGl0aW9uYWxseSwgZXZlbiBpZiB3 ZQotCQkJICogZGlkbid0IHNlZSBXTF9MQVRDSF9TRVQuICBUaGlzIGdpdmVzIGhpZ2ggcHJp b3JpdHkgdG8gc2h1dGRvd24KLQkJCSAqIGFuZCByZWxvYWQgcmVxdWVzdHMgd2hlcmUgdGhl IGxhdGNoIGhhcHBlbnMgdG8gYXBwZWFyIGxhdGVyIGluCi0JCQkgKiBldmVudHNbXSBvciB3 aWxsIGJlIHJlcG9ydGVkIGJ5IGEgbGF0ZXIgY2FsbCB0bworCQkJICogZGlkbid0IHNlZSBX TF9JTlRFUlJVUFQuICBUaGlzIGdpdmVzIGhpZ2ggcHJpb3JpdHkgdG8gc2h1dGRvd24KKwkJ CSAqIGFuZCByZWxvYWQgcmVxdWVzdHMgd2hlcmUgdGhlIGludGVycnVwdCBldmVudCBoYXBw ZW5zIHRvIGFwcGVhcgorCQkJICogbGF0ZXIgaW4gZXZlbnRzW10gb3Igd2lsbCBiZSByZXBv cnRlZCBieSBhIGxhdGVyIGNhbGwgdG8KIAkJCSAqIFdhaXRFdmVudFNldFdhaXQoKS4KIAkJ CSAqLwogCQkJaWYgKHBlbmRpbmdfcG1fc2h1dGRvd25fcmVxdWVzdCkKQEAgLTE5MzcsNyAr MTkzOCw3IEBAIHN0YXRpYyB2b2lkCiBoYW5kbGVfcG1fcG1zaWduYWxfc2lnbmFsKFNJR05B TF9BUkdTKQogewogCXBlbmRpbmdfcG1fcG1zaWduYWwgPSB0cnVlOwotCVNldExhdGNoKE15 TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9 CiAKIC8qCkBAIC0xOTQ3LDcgKzE5NDgsNyBAQCBzdGF0aWMgdm9pZAogaGFuZGxlX3BtX3Jl bG9hZF9yZXF1ZXN0X3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlwZW5kaW5nX3BtX3JlbG9h ZF9yZXF1ZXN0ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQogCiAvKgpAQCAtMjAyNCw3ICsyMDI1 LDcgQEAgaGFuZGxlX3BtX3NodXRkb3duX3JlcXVlc3Rfc2lnbmFsKFNJR05BTF9BUkdTKQog CQkJcGVuZGluZ19wbV9zaHV0ZG93bl9yZXF1ZXN0ID0gdHJ1ZTsKIAkJCWJyZWFrOwogCX0K LQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TF9XQUtFVVApOwogfQogCiAvKgpAQCAtMjE4NSw3ICsyMTg2LDcgQEAgc3RhdGljIHZvaWQK IGhhbmRsZV9wbV9jaGlsZF9leGl0X3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlwZW5kaW5n X3BtX2NoaWxkX2V4aXQgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvc3RhcnR1cC5jCmluZGV4IGVmNmY5OGViY2Q3Li4yMDIwZjE3MGQwMCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9zdGFydHVwLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJw b3N0bWFzdGVyL3N0YXJ0dXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5k YnkuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTQwLDcgKzQxLDcgQEAKICAqIE9u IHN5c3RlbXMgdGhhdCBuZWVkIHRvIG1ha2UgYSBzeXN0ZW0gY2FsbCB0byBmaW5kIG91dCBp ZiB0aGUgcG9zdG1hc3RlciBoYXMKICAqIGdvbmUgYXdheSwgd2UnbGwgZG8gc28gb25seSBl dmVyeSBOdGggY2FsbCB0byBIYW5kbGVTdGFydHVwUHJvY0ludGVycnVwdHMoKS4KICAqIFRo aXMgb25seSBhZmZlY3RzIGhvdyBsb25nIGl0IHRha2VzIHVzIHRvIGRldGVjdCB0aGUgY29u ZGl0aW9uIHdoaWxlIHdlJ3JlCi0gKiBidXN5IHJlcGxheWluZyBXQUwuICBMYXRjaCB3YWl0 cyBhbmQgc2ltaWxhciB3aGljaCBzaG91bGQgcmVhY3QgaW1tZWRpYXRlbHkKKyAqIGJ1c3kg cmVwbGF5aW5nIFdBTC4gIEludGVycnVwdCB3YWl0cyBhbmQgc2ltaWxhciBzaG91bGQgcmVh Y3QgaW1tZWRpYXRlbHkKICAqIHRocm91Z2ggdGhlIHVzdWFsIHRlY2huaXF1ZXMuCiAgKi8K ICNkZWZpbmUgUE9TVE1BU1RFUl9QT0xMX1JBVEVfTElNSVQgMTAyNApAQCAtMjA1LDYgKzIw Niw4IEBAIFN0YXJ0dXBQcm9jRXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQogCS8qIFNodXRk b3duIHRoZSByZWNvdmVyeSBlbnZpcm9ubWVudCAqLwogCWlmIChzdGFuZGJ5U3RhdGUgIT0g U1RBTkRCWV9ESVNBQkxFRCkKIAkJU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJv bm1lbnQoKTsKKworCVByb2NHbG9iYWwtPnN0YXJ0dXBQcm9jID0gSU5WQUxJRF9QUk9DX05V TUJFUjsKIH0KIAogCkBAIC0yMjAsNiArMjIzLDEyIEBAIFN0YXJ0dXBQcm9jZXNzTWFpbihj aGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCU15QmFja2Vu ZFR5cGUgPSBCX1NUQVJUVVA7CiAJQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb24oKTsKIAor CS8qCisJICogQWR2ZXJ0aXNlIG91ciBwcm9jIG51bWJlciBzbyB0aGF0IGJhY2tlbmRzIGNh biB3YWtlIHVzIHVwLCB3aGVuIHRoZQorCSAqIHNlcnZlciBpcyBwcm9tb3RlZCBvciByZWNv dmVyeSBpcyBwYXVzZWQvcmVzdW1lZC4KKwkgKi8KKwlQcm9jR2xvYmFsLT5zdGFydHVwUHJv YyA9IE15UHJvY051bWJlcjsKKwogCS8qIEFycmFuZ2UgdG8gY2xlYW4gdXAgYXQgc3RhcnR1 cCBwcm9jZXNzIGV4aXQgKi8KIAlvbl9zaG1lbV9leGl0KFN0YXJ0dXBQcm9jRXhpdCwgMCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCmluZGV4IGYxMjYzOTA1NmYyLi4y ZWEyNzEzNDRiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dn ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCkBAIC00NCw4 ICs0NCw4IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dnZXIuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCkBAIC0z MjgsNyArMzI4LDcgQEAgU3lzTG9nZ2VyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVf dCBzdGFydHVwX2RhdGFfbGVuKQogCXdoZXJlVG9TZW5kT3V0cHV0ID0gRGVzdE5vbmU7CiAK IAkvKgotCSAqIFNldCB1cCBhIHJldXNhYmxlIFdhaXRFdmVudFNldCBvYmplY3Qgd2UnbGwg dXNlIHRvIHdhaXQgZm9yIG91ciBsYXRjaCwKKwkgKiBTZXQgdXAgYSByZXVzYWJsZSBXYWl0 RXZlbnRTZXQgb2JqZWN0IHdlJ2xsIHVzZSB0byB3YWl0IGZvciBpbnRlcnJ1cHRzLAogCSAq IGFuZCAoZXhjZXB0IG9uIFdpbmRvd3MpIG91ciBzb2NrZXQuCiAJICoKIAkgKiBVbmxpa2Ug YWxsIG90aGVyIHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2Vzc2VzLCB3ZSdsbCBpZ25vcmUgcG9z dG1hc3RlcgpAQCAtMzM4LDkgKzMzOCw5IEBAIFN5c0xvZ2dlck1haW4oY2hhciAqc3RhcnR1 cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkgKiAoaW5jbHVkaW5nIHRoZSBw b3N0bWFzdGVyKS4KIAkgKi8KIAl3ZXMgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7 Ci0JQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NL RVQsIE15TGF0Y2gsIE5VTEwpOworCUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfSU5URVJS VVBULCBQR0lOVkFMSURfU09DS0VULCAxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwg TlVMTCk7CiAjaWZuZGVmIFdJTjMyCi0JQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9TT0NL RVRfUkVBREFCTEUsIHN5c2xvZ1BpcGVbMF0sIE5VTEwsIE5VTEwpOworCUFkZFdhaXRFdmVu dFRvU2V0KHdlcywgV0xfU09DS0VUX1JFQURBQkxFLCBzeXNsb2dQaXBlWzBdLCAwLCBOVUxM KTsKICNlbmRpZgogCiAJLyogbWFpbiB3b3JrZXIgbG9vcCAqLwpAQCAtMzU2LDcgKzM1Niw3 IEBAIFN5c0xvZ2dlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKICNlbmRpZgogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2Fr ZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCS8qCiAJCSAqIFByb2Nlc3MgYW55IHJlcXVl c3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkuCkBAIC0xMTg2LDcgKzExODYsNyBA QCBwaXBlVGhyZWFkKHZvaWQgKmFyZykKIAkJCWlmIChmdGVsbChzeXNsb2dGaWxlKSA+PSBM b2dfUm90YXRpb25TaXplICogMTAyNEwgfHwKIAkJCQkoY3N2bG9nRmlsZSAhPSBOVUxMICYm IGZ0ZWxsKGNzdmxvZ0ZpbGUpID49IExvZ19Sb3RhdGlvblNpemUgKiAxMDI0TCkgfHwKIAkJ CQkoanNvbmxvZ0ZpbGUgIT0gTlVMTCAmJiBmdGVsbChqc29ubG9nRmlsZSkgPj0gTG9nX1Jv dGF0aW9uU2l6ZSAqIDEwMjRMKSkKLQkJCQlTZXRMYXRjaChNeUxhdGNoKTsKKwkJCQlSYWlz ZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQl9CiAJCUxlYXZlQ3Jp dGljYWxTZWN0aW9uKCZzeXNsb2dnZXJTZWN0aW9uKTsKIAl9CkBAIC0xMTk3LDggKzExOTcs OCBAQCBwaXBlVGhyZWFkKHZvaWQgKmFyZykKIAkvKiBpZiB0aGVyZSdzIGFueSBkYXRhIGxl ZnQgdGhlbiBmb3JjZSBpdCBvdXQgbm93ICovCiAJZmx1c2hfcGlwZV9pbnB1dChsb2didWZm ZXIsICZieXRlc19pbl9sb2didWZmZXIpOwogCi0JLyogc2V0IHRoZSBsYXRjaCB0byB3YWtl biB0aGUgbWFpbiB0aHJlYWQsIHdoaWNoIHdpbGwgcXVpdCAqLwotCVNldExhdGNoKE15TGF0 Y2gpOworCS8qIHJhaXNlIHRoZSBpbnRlcnJ1cHQgdG8gd2FrZW4gdGhlIG1haW4gdGhyZWFk LCB3aGljaCB3aWxsIHF1aXQgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TF9XQUtFVVApOwogCiAJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnN5c2xvZ2dlclNlY3Rpb24p OwogCV9lbmR0aHJlYWQoKTsKQEAgLTE1OTMsNSArMTU5Myw1IEBAIHN0YXRpYyB2b2lkCiBz aWdVc3IxSGFuZGxlcihTSUdOQUxfQVJHUykKIHsKIAlyb3RhdGlvbl9yZXF1ZXN0ZWQgPSB0 cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3dhbHN1bW1hcml6ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXpl ci5jCmluZGV4IDQ4MzUwYmVjNTI0Li5mNzhmMDExYzJiMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci93YWxzdW1tYXJpemVyLmMKQEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlICJw b3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3Rv cmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBAIC0z MTUsMTAgKzMxNSw4IEBAIFdhbFN1bW1hcml6ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwg c2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIFNvIGEgcmVhbGx5IGZhc3QgcmV0cnkg dGltZSBkb2Vzbid0IHNlZW0gdG8gYmUgZXNwZWNpYWxseQogCQkgKiBiZW5lZmljaWFsLCBh bmQgaXQgd2lsbCBjbHV0dGVyIHRoZSBsb2dzLgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRj aChOVUxMLAotCQkJCQkJIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJ CQkJIDEwMDAwLAotCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1BUklaRVJfRVJST1IpOwor CQkodm9pZCkgV2FpdEludGVycnVwdCgwLCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMTAwMDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1BUklaRVJfRVJST1Ip OwogCX0KIAogCS8qIFdlIGNhbiBub3cgaGFuZGxlIGVyZXBvcnQoRVJST1IpICovCkBAIC02 MzAsOCArNjI4LDggQEAgR2V0T2xkZXN0VW5zdW1tYXJpemVkTFNOKFRpbWVMaW5lSUQgKnRs aSwgYm9vbCAqbHNuX2lzX2V4YWN0KQogICoKICAqIFRoaXMgbWlnaHQgbm90IHdvcmssIGJl Y2F1c2UgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUgV0FMIHN1bW1hcml6ZXIKICAq IHByb2Nlc3Mgd2FzIHN1Y2Nlc3NmdWxseSBzdGFydGVkLCBhbmQgaXQgYWxzbyBtaWdodCBo YXZlIHN0YXJ0ZWQgYnV0Ci0gKiBzdWJzZXF1ZW50bHkgdGVybWluYXRlZC4gU28sIHVuZGVy IG5vcm1hbCBjaXJjdW1zdGFuY2VzLCB0aGlzIHdpbGwgZ2V0IHRoZQotICogbGF0Y2ggc2V0 LCBidXQgdGhlcmUncyBubyBndWFyYW50ZWUuCisgKiBzdWJzZXF1ZW50bHkgdGVybWluYXRl ZC4gU28sIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCB0aGlzIHdpbGwgc2VuZAorICog dGhlIGludGVycnVwdCwgYnV0IHRoZXJlJ3Mgbm8gZ3VhcmFudGVlLgogICovCiB2b2lkCiBX YWtldXBXYWxTdW1tYXJpemVyKHZvaWQpCkBAIC02NDYsNyArNjQ0LDcgQEAgV2FrZXVwV2Fs U3VtbWFyaXplcih2b2lkKQogCUxXTG9ja1JlbGVhc2UoV0FMU3VtbWFyaXplckxvY2spOwog CiAJaWYgKHBncHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCVNldExhdGNoKCZQ cm9jR2xvYmFsLT5hbGxQcm9jc1twZ3Byb2Nub10ucHJvY0xhdGNoKTsKKwkJU2VuZEludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHBncHJvY25vKTsKIH0KIAogLyoKQEAg LTE2MzcsMTEgKzE2MzUsMTEgQEAgc3VtbWFyaXplcl93YWl0X2Zvcl93YWwodm9pZCkKIAl9 CiAKIAkvKiBPSywgbm93IHNsZWVwLiAqLwotCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwK LQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAotCQkJCQkgc2xlZXBfcXVhbnRhICogTVNfUEVSX1NMRUVQX1FVQU5UVU0sCi0JCQkJCSBX QUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX1dBTCk7Ci0JUmVzZXRMYXRjaChNeUxhdGNoKTsK Kwkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwK KwkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCSBzbGVlcF9xdWFudGEgKiBNU19QRVJfU0xFRVBfUVVBTlRVTSwKKwkJCQkJ CSBXQUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX1dBTCk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCS8qIFJlc2V0IGNvdW50IG9mIHBhZ2VzIHJl YWQuICovCiAJcGFnZXNfcmVhZF9zaW5jZV9sYXN0X3NsZWVwID0gMDsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3dhbHdyaXRlci5jCmluZGV4IDVhM2NiODk0NjUyLi5mYWJjZjNiYjdmOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92 YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBAIC0y MjIsMTIgKzIyMywxMiBAQCBXYWxXcml0ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6 ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJLyoKIAkJICogQWR2ZXJ0aXNlIHdoZXRoZXIg d2UgbWlnaHQgaGliZXJuYXRlIGluIHRoaXMgY3ljbGUuICBXZSBkbyB0aGlzCi0JCSAqIGJl Zm9yZSByZXNldHRpbmcgdGhlIGxhdGNoIHRvIGVuc3VyZSB0aGF0IGFueSBhc3luYyBjb21t aXRzIHdpbGwKLQkJICogc2VlIHRoZSBmbGFnIHNldCBpZiB0aGV5IG1pZ2h0IHBvc3NpYmx5 IG5lZWQgdG8gd2FrZSB1cyB1cCwgYW5kCi0JCSAqIHRoYXQgd2Ugd29uJ3QgbWlzcyBhbnkg c2lnbmFsIHRoZXkgc2VuZCB1cy4gIChJZiB3ZSBkaXNjb3ZlciB3b3JrCi0JCSAqIHRvIGRv IGluIHRoZSBsYXN0IGN5Y2xlIGJlZm9yZSB3ZSB3b3VsZCBoaWJlcm5hdGUsIHRoZSBnbG9i YWwgZmxhZwotCQkgKiB3aWxsIGJlIHNldCB1bm5lY2Vzc2FyaWx5LCBidXQgbGl0dGxlIGhh cm0gaXMgZG9uZS4pICBCdXQgYXZvaWQKLQkJICogdG91Y2hpbmcgdGhlIGdsb2JhbCBmbGFn IGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBjaGFuZ2UuCisJCSAqIGJlZm9yZSBjbGVhcmluZyB0 aGUgaW50ZXJydXB0IGZsYWcgdG8gZW5zdXJlIHRoYXQgYW55IGFzeW5jIGNvbW1pdHMKKwkJ ICogd2lsbCBzZWUgdGhlIGZsYWcgc2V0IGlmIHRoZXkgbWlnaHQgcG9zc2libHkgbmVlZCB0 byB3YWtlIHVzIHVwLAorCQkgKiBhbmQgdGhhdCB3ZSB3b24ndCBtaXNzIGFueSBzaWduYWwg dGhleSBzZW5kIHVzLiAgKElmIHdlIGRpc2NvdmVyCisJCSAqIHdvcmsgdG8gZG8gaW4gdGhl IGxhc3QgY3ljbGUgYmVmb3JlIHdlIHdvdWxkIGhpYmVybmF0ZSwgdGhlIGdsb2JhbAorCQkg KiBmbGFnIHdpbGwgYmUgc2V0IHVubmVjZXNzYXJpbHksIGJ1dCBsaXR0bGUgaGFybSBpcyBk b25lLikgIEJ1dAorCQkgKiBhdm9pZCB0b3VjaGluZyB0aGUgZ2xvYmFsIGZsYWcgaWYgaXQg ZG9lc24ndCBuZWVkIHRvIGNoYW5nZS4KIAkJICovCiAJCWlmIChoaWJlcm5hdGluZyAhPSAo bGVmdF90aWxsX2hpYmVybmF0ZSA8PSAxKSkKIAkJewpAQCAtMjM2LDcgKzIzNyw3IEBAIFdh bFdyaXRlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAkJfQogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwot CQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVApOwogCiAJCS8qIFByb2Nlc3MgYW55IHNpZ25hbHMgcmVjZWl2ZWQgcmVj ZW50bHkgKi8KIAkJSGFuZGxlTWFpbkxvb3BJbnRlcnJ1cHRzKCk7CkBAIC0yNjMsOSArMjY0 LDkgQEAgV2FsV3JpdGVyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCQllbHNlCiAJCQljdXJfdGltZW91dCA9IFdhbFdyaXRlckRlbGF5ICog SElCRVJOQVRFX0ZBQ1RPUjsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJ CQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0J CQkJCQkgY3VyX3RpbWVvdXQsCi0JCQkJCQkgV0FJVF9FVkVOVF9XQUxfV1JJVEVSX01BSU4p OworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkJIGN1cl90aW1lb3V0LAorCQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9X UklURVJfTUFJTik7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCBj NzQzNjk5NTNmOC4uMjI5NGQ1ZDQzNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5j CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicHFl eHBidWZmZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgotI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKQEAgLTIzNywxNiArMjM3LDE2IEBA IGxpYnBxcmN2X2Nvbm5lY3QoY29uc3QgY2hhciAqY29ubmluZm8sIGJvb2wgcmVwbGljYXRp b24sIGJvb2wgbG9naWNhbCwKIAkJZWxzZQogCQkJaW9fZmxhZyA9IFdMX1NPQ0tFVF9XUklU RUFCTEU7CiAKLQkJcmMgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAg IFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9MQVRDSF9TRVQgfCBpb19mbGFnLAotCQkJCQkJ CSAgIFBRc29ja2V0KGNvbm4tPnN0cmVhbUNvbm4pLAotCQkJCQkJCSAgIDAsCi0JCQkJCQkJ ICAgV0FJVF9FVkVOVF9MSUJQUVdBTFJFQ0VJVkVSX0NPTk5FQ1QpOworCQlyYyA9IFdhaXRJ bnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJ CQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8IGlvX2ZsYWcsCisJ CQkJCQkJCSAgIFBRc29ja2V0KGNvbm4tPnN0cmVhbUNvbm4pLAorCQkJCQkJCQkgICAwLAor CQkJCQkJCQkgICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfQ09OTkVDVCk7CiAKIAkJ LyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJj ICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCVByb2Nlc3NXYWxS Y3ZJbnRlcnJ1cHRzKCk7CiAJCX0KIApAQCAtODQ4LDE3ICs4NDgsMTcgQEAgbGlicHFyY3Zf UFFnZXRSZXN1bHQoUEdjb25uICpzdHJlYW1Db25uKQogCQkgKiBzaW5jZSB3ZSdsbCBnZXQg aW50ZXJydXB0ZWQgYnkgc2lnbmFscyBhbmQgY2FuIGhhbmRsZSBhbnkKIAkJICogaW50ZXJy dXB0cyBoZXJlLgogCQkgKi8KLQkJcmMgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAot CQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAot CQkJCQkJCSAgIFdMX0xBVENIX1NFVCwKLQkJCQkJCQkgICBQUXNvY2tldChzdHJlYW1Db25u KSwKLQkJCQkJCQkgICAwLAotCQkJCQkJCSAgIFdBSVRfRVZFTlRfTElCUFFXQUxSRUNFSVZF Ul9SRUNFSVZFKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBX TF9TT0NLRVRfUkVBREFCTEUgfAorCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQsCisJCQkJCQkJ CSAgIFBRc29ja2V0KHN0cmVhbUNvbm4pLAorCQkJCQkJCQkgICAwLAorCQkJCQkJCQkgICBX QUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfUkVDRUlWRSk7CiAKIAkJLyogSW50ZXJydXB0 ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJS VVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCVByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRz KCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCBlN2Y3ZDRjNWU0Yi4uYWQ5OTc5Yzli OGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xNjUsNiArMTY1LDcgQEAKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3Jp Z2luLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIK QEAgLTgwNCwxMyArODA1LDEzIEBAIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFf aGFuZGxlICptcWgpCiAJCQkJaW50CQkJcmM7CiAKIAkJCQkvKiBXYWl0IGZvciBtb3JlIHdv cmsuICovCi0JCQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9MQVRD SF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgICAx MDAwTCwKLQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJ Tik7CisJCQkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FL RVVQLAorCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJCQkJICAgMTAwMEwsCisJCQkJCQkJCSAgIFdBSVRfRVZFTlRf TE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOKTsKIAotCQkJCWlmIChyYyAmIFdMX0xBVENI X1NFVCkKLQkJCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRF UlJVUFQpCisJCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7 CiAJCQl9CiAJCX0KIAkJZWxzZQpAQCAtOTkwLDcgKzk5MSw3IEBAIEhhbmRsZVBhcmFsbGVs QXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRy dWU7CiAJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChN eUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwog fQogCiAvKgpAQCAtMTE4MiwxNCArMTE4MywxNCBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkK IAkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1fTVFfV09VTERfQkxPQ0spOwogCiAJCS8qIFdhaXQg YmVmb3JlIHJldHJ5aW5nLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkg ICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkJICAgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMsCi0JCQkJCSAgIFdBSVRfRVZFTlRf TE9HSUNBTF9BUFBMWV9TRU5EX0RBVEEpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIFNITV9TRU5EX1JFVFJZ X0lOVEVSVkFMX01TLAorCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1NFTkRf REFUQSk7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRF UlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAkJfQogCkBAIC0xMjU0LDEzICsxMjU1LDEzIEBAIHBhX3dhaXRfZm9yX3hhY3Rfc3Rh dGUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAogCQkJYnJlYWs7CiAKIAkJLyog V2FpdCB0byBiZSBzaWduYWxsZWQuICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwK LQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKLQkJCQkJCSAxMEwsCi0JCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQ UExZX1NUQVRFX0NIQU5HRSk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgMTBMLAorCQkJCQkJCSBXQUlUX0VW RU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKIAotCQkvKiBSZXNl dCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJLyogQ2xlYXIgdGhlIGludGVycnVwdCBmbGFnIHNvIHdlIGRvbid0IHNwaW4uICov CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyog QW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4g Ki8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBlNWZkY2E4YmJmNi4uMWZiODc5MGYyMTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAg LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKQEAgLTIxOCwxNiArMjE5LDE3IEBAIFdhaXRG b3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJ CX0KIAogCQkvKgotCQkgKiBXZSBuZWVkIHRpbWVvdXQgYmVjYXVzZSB3ZSBnZW5lcmFsbHkg ZG9uJ3QgZ2V0IG5vdGlmaWVkIHZpYSBsYXRjaAotCQkgKiBhYm91dCB0aGUgd29ya2VyIGF0 dGFjaC4gIEJ1dCB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuCisJCSAq IFdlIG5lZWQgdGltZW91dCBiZWNhdXNlIHdlIGdlbmVyYWxseSBkb24ndCBnZXQgbm90aWZp ZWQgdmlhIGFuCisJCSAqIGludGVycnVwdCBhYm91dCB0aGUgd29ya2VyIGF0dGFjaC4gIEJ1 dCB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0bworCQkgKiB3YWl0IGxvbmcuCiAJCSAqLwot CQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5U X0JHV09SS0VSX1NUQVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dP UktFUl9TVEFSVFVQKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAm IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOwogCQl9CiAJfQpAQCAtNTUzLDEzICs1NTUsMTMgQEAgbG9naWNhbHJlcF93 b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdu bykKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAKIAkJLyogV2Fp dCBhIGJpdCAtLS0gd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25nLiAqLwot CQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5U X0JHV09SS0VSX1NUQVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dP UktFUl9TVEFSVFVQKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAm IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOwogCQl9CiAKQEAgLTU5NCwxMyArNTk2LDEzIEBAIGxvZ2ljYWxyZXBfd29y a2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLCBpbnQgc2lnbm8p CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogCiAJCS8qIFdhaXQg YSBiaXQgLS0tIHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvIHdhaXQgbG9uZy4gKi8KLQkJ cmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9C R1dPUktFUl9TSFVURE9XTik7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX0JHV09S S0VSX1NIVVRET1dOKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAm IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOwogCQl9CiAKQEAgLTY3Niw3ICs2NzgsNyBAQCBsb2dpY2FscmVwX3BhX3dv cmtlcl9zdG9wKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIH0KIAogLyoKLSAq IFdha2UgdXAgKHVzaW5nIGxhdGNoKSBhbnkgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIg Zm9yIHNwZWNpZmllZCBzdWIvcmVsLgorICogV2FrZSB1cCAodXNpbmcgaW50ZXJydXB0KSBh bnkgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHNwZWNpZmllZCBzdWIvcmVsLgog ICovCiB2b2lkCiBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVs aWQpCkBAIC02OTQsNyArNjk2LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBz dWJpZCwgT2lkIHJlbGlkKQogfQogCiAvKgotICogV2FrZSB1cCAodXNpbmcgbGF0Y2gpIHRo ZSBzcGVjaWZpZWQgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKiBXYWtlIHVwICh1 c2luZyBpbnRlcnJ1cHQpIHRoZSBzcGVjaWZpZWQgbG9naWNhbCByZXBsaWNhdGlvbiB3b3Jr ZXIuCiAgKgogICogQ2FsbGVyIG11c3QgaG9sZCBsb2NrLCBlbHNlIHdvcmtlci0+cHJvYyBj b3VsZCBjaGFuZ2UgdW5kZXIgdXMuCiAgKi8KQEAgLTcwMyw3ICs3MDUsNyBAQCBsb2dpY2Fs cmVwX3dvcmtlcl93YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIHsKIAlB c3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKIAotCVNldExh dGNoKCZ3b3JrZXItPnByb2MtPnByb2NMYXRjaCk7CisJU2VuZEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2Mod29ya2VyLT5wcm9jKSk7 CiB9CiAKIC8qCkBAIC0xMjIxLDE0ICsxMjIzLDE0IEBAIEFwcGx5TGF1bmNoZXJNYWluKERh dHVtIG1haW5fYXJnKQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKHN1YmN0eCk7CiAKIAkJLyog V2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJ CQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK LQkJCQkJICAgd2FpdF90aW1lLAotCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNI RVJfTUFJTik7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFM X1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAorCQkJCQkJICAgd2FpdF90aW1lLAorCQkJCQkJICAgV0FJVF9FVkVO VF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4pOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkK KwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IGQ2MjE4NmE1MTA3Li45MThjYzY2Nzc1MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAt NTksNiArNTksNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nu YXBidWlsZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKQEAgLTEyNTIsMTMgKzEyNTMsMTMgQEAgd2FpdF9mb3Jfc2xvdF9h Y3Rpdml0eShib29sIHNvbWVfc2xvdF91cGRhdGVkKQogCQlzbGVlcF9tcyA9IE1JTl9TTE9U U1lOQ19XT1JLRVJfTkFQVElNRV9NUzsKIAl9CiAKLQlyYyA9IFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCSAgIHNsZWVwX21zLAotCQkJCSAgIFdBSVRfRVZFTlRfUkVQTElDQVRJT05f U0xPVFNZTkNfTUFJTik7CisJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQLAorCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJICAgc2xlZXBfbXMsCisJCQkJCSAgIFdBSVRfRVZF TlRfUkVQTElDQVRJT05fU0xPVFNZTkNfTUFJTik7CiAKLQlpZiAocmMgJiBXTF9MQVRDSF9T RVQpCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJaWYgKHJjICYgV0xfSU5URVJSVVBUKQor CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQogCiAvKgpA QCAtMTU5MCwxMyArMTU5MSwxMyBAQCBTaHV0RG93blNsb3RTeW5jKHZvaWQpCiAJCWludAkJ CXJjOwogCiAJCS8qIFdhaXQgYSBiaXQsIHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvIHdh aXQgbG9uZyAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRD SF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgMTBM LCBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX1NIVVRET1dOKTsKKwkJcmMgPSBX YWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJICAg V0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkgICAxMEwsIFdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfU0hVVERPV04pOwog Ci0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQog CQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5k ZXggMTE4NTAzZmNiNzYuLjY1YzdmMzQ3NTk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTExMSw2ICsxMTEsNyBAQAogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNl aXZlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKQEAg LTIxMCwxMSArMjExLDExIEBAIHdhaXRfZm9yX3JlbGF0aW9uX3N0YXRlX2NoYW5nZShPaWQg cmVsaWQsIGNoYXIgZXhwZWN0ZWRfc3RhdGUpCiAJCWlmICghd29ya2VyKQogCQkJYnJlYWs7 CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIDEwMDBMLCBXQUlU X0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UpOworCQkodm9pZCkgV2FpdEludGVy cnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJS VVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIDEwMDBM LCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UpOwogCi0JCVJlc2V0TGF0 Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCk7CiAJfQogCiAJcmV0dXJuIGZhbHNlOwpAQCAtMjYwLDE1ICsyNjEsMTUgQEAgd2FpdF9m b3Jfd29ya2VyX3N0YXRlX2NoYW5nZShjaGFyIGV4cGVjdGVkX3N0YXRlKQogCQkJYnJlYWs7 CiAKIAkJLyoKLQkJICogV2FpdC4gIFdlIGV4cGVjdCB0byBnZXQgYSBsYXRjaCBzaWduYWwg YmFjayBmcm9tIHRoZSBhcHBseSB3b3JrZXIsCisJCSAqIFdhaXQuICBXZSBleHBlY3QgdG8g Z2V0IGFuIGludGVycnVwdCB3YWtldXAgZnJvbSB0aGUgYXBwbHkgd29ya2VyLAogCQkgKiBi dXQgdXNlIGEgdGltZW91dCBpbiBjYXNlIGl0IGRpZXMgd2l0aG91dCBzZW5kaW5nIG9uZS4K IAkJICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NF VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAxMDAwTCwg V0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKKwkJcmMgPSBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5U RVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICAx MDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKIAotCQlpZiAo cmMgJiBXTF9MQVRDSF9TRVQpCi0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlpZiAocmMg JiBXTF9JTlRFUlJVUFQpCisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVApOwogCX0KIAogCXJldHVybiBmYWxzZTsKQEAgLTU1NSw3ICs1NTYsNyBAQCBwcm9j ZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQog CQkJCQkJICogdGhlIGV4aXN0aW5nIGxvY2tzIGJlZm9yZSBlbnRlcmluZyBhIGJ1c3kgbG9v cC4KIAkJCQkJCSAqIFRoaXMgaXMgcmVxdWlyZWQgdG8gYXZvaWQgYW55IHVuZGV0ZWN0ZWQg ZGVhZGxvY2tzCiAJCQkJCQkgKiBkdWUgdG8gYW55IGV4aXN0aW5nIGxvY2sgYXMgZGVhZGxv Y2sgZGV0ZWN0b3Igd29uJ3QKLQkJCQkJCSAqIGJlIGFibGUgdG8gZGV0ZWN0IHRoZSB3YWl0 cyBvbiB0aGUgbGF0Y2guCisJCQkJCQkgKiBiZSBhYmxlIHRvIGRldGVjdCB0aGUgd2FpdHMg b24gdGhlIGludGVycnVwdAogCQkJCQkJICovCiAJCQkJCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAkJCQkJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CkBAIC03NzEsMTQg Kzc3MiwxNCBAQCBjb3B5X3JlYWRfZGF0YSh2b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBp bnQgbWF4cmVhZCkKIAkJfQogCiAJCS8qCi0JCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBvciBs YXRjaC4KKwkJICogV2FpdCBmb3IgbW9yZSBkYXRhIG9yIGludGVycnVwdC4KIAkJICovCi0J CSh2b2lkKSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCQkgV0xfU09DS0VU X1JFQURBQkxFIHwgV0xfTEFUQ0hfU0VUIHwKLQkJCQkJCQkJIFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkgZmQsIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lD QUxfU1lOQ19EQVRBKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJCSBXTF9TT0NLRVRfUkVBREFCTEUg fCBXTF9JTlRFUlJVUFQgfAorCQkJCQkJCQkJIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BN X0RFQVRILAorCQkJCQkJCQkJIGZkLCAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNf REFUQSk7CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAl9CiAKIAlyZXR1cm4gYnl0ZXNyZWFkOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggOTI1ZGZmOWNj NDQuLjNkZWI0MzZiZWUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKQEAgLTE3Nyw2ICsxNzcsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s bWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgpAQCAtMzcyOSwyNiArMzczMCwy NiBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJ CWJyZWFrOwogCiAJCS8qCi0JCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBvciBsYXRjaC4gIElm IHdlIGhhdmUgdW5mbHVzaGVkIHRyYW5zYWN0aW9ucywKLQkJICogd2FrZSB1cCBhZnRlciBX YWxXcml0ZXJEZWxheSB0byBzZWUgaWYgdGhleSd2ZSBiZWVuIGZsdXNoZWQgeWV0IChpbgot CQkgKiB3aGljaCBjYXNlIHdlIHNob3VsZCBzZW5kIGEgZmVlZGJhY2sgbWVzc2FnZSkuICBP dGhlcndpc2UsIHRoZXJlJ3MKLQkJICogbm8gcGFydGljdWxhciB1cmdlbmN5IGFib3V0IHdh a2luZyB1cCB1bmxlc3Mgd2UgZ2V0IGRhdGEgb3IgYQotCQkgKiBzaWduYWwuCisJCSAqIFdh aXQgZm9yIG1vcmUgZGF0YSBvciBpbnRlcnJ1cHQuICBJZiB3ZSBoYXZlIHVuZmx1c2hlZAor CQkgKiB0cmFuc2FjdGlvbnMsIHdha2UgdXAgYWZ0ZXIgV2FsV3JpdGVyRGVsYXkgdG8gc2Vl IGlmIHRoZXkndmUgYmVlbgorCQkgKiBmbHVzaGVkIHlldCAoaW4gd2hpY2ggY2FzZSB3ZSBz aG91bGQgc2VuZCBhIGZlZWRiYWNrIG1lc3NhZ2UpLgorCQkgKiBPdGhlcndpc2UsIHRoZXJl J3Mgbm8gcGFydGljdWxhciB1cmdlbmN5IGFib3V0IHdha2luZyB1cCB1bmxlc3Mgd2UKKwkJ ICogZ2V0IGRhdGEgb3IgYSBzaWduYWwuCiAJCSAqLwogCQlpZiAoIWRsaXN0X2lzX2VtcHR5 KCZsc25fbWFwcGluZykpCiAJCQl3YWl0X3RpbWUgPSBXYWxXcml0ZXJEZWxheTsKIAkJZWxz ZQogCQkJd2FpdF90aW1lID0gTkFQVElNRV9QRVJfQ1lDTEU7CiAKLQkJcmMgPSBXYWl0TGF0 Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdM X0xBVENIX1NFVCB8Ci0JCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCi0JCQkJCQkJICAgZmQsIHdhaXRfdGltZSwKLQkJCQkJCQkgICBXQUlUX0VWRU5UX0xP R0lDQUxfQVBQTFlfTUFJTik7CisJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KDEgPDwg SU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCQkgICBXTF9TT0NLRVRfUkVBREFC TEUgfCBXTF9JTlRFUlJVUFQgfAorCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJCQkJICAgZmQsIHdhaXRfdGltZSwKKwkJCQkJCQkJICAgV0FJ VF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4pOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NF VCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc3luY3JlcC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3lu Y3JlcC5jCmluZGV4IGZhNTk4OGM4MjRlLi5iMWVmZGEyZTVmNCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3N5bmNyZXAuYwpAQCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3N5bmNyZXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVk ZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgpAQCAt MjIyLDIyICsyMjMsMjIgQEAgU3luY1JlcFdhaXRGb3JMU04oWExvZ1JlY1B0ciBsc24sIGJv b2wgY29tbWl0KQogCS8qCiAJICogV2FpdCBmb3Igc3BlY2lmaWVkIExTTiB0byBiZSBjb25m aXJtZWQuCiAJICoKLQkgKiBFYWNoIHByb2MgaGFzIGl0cyBvd24gd2FpdCBsYXRjaCwgc28g d2UgcGVyZm9ybSBhIG5vcm1hbCBsYXRjaAorCSAqIEVhY2ggcHJvYyBoYXMgaXRzIG93biB3 YWl0IGludGVycnVwdCB2ZWN0b3IsIHNvIHdlIHBlcmZvcm0gYSBub3JtYWwKIAkgKiBjaGVj ay93YWl0IGxvb3AgaGVyZS4KIAkgKi8KIAlmb3IgKDs7KQogCXsKIAkJaW50CQkJcmM7CiAK LQkJLyogTXVzdCByZXNldCB0aGUgbGF0Y2ggYmVmb3JlIHRlc3Rpbmcgc3RhdGUuICovCi0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCS8qIE11c3QgY2xlYXIgdGhlIGludGVycnVwdCBm bGFnIGJlZm9yZSB0ZXN0aW5nIHN0YXRlLiAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVApOwogCiAJCS8qCi0JCSAqIEFjcXVpcmluZyB0aGUgbG9jayBp cyBub3QgbmVlZGVkLCB0aGUgbGF0Y2ggZW5zdXJlcyBwcm9wZXIKLQkJICogYmFycmllcnMu IElmIGl0IGxvb2tzIGxpa2Ugd2UncmUgZG9uZSwgd2UgbXVzdCByZWFsbHkgYmUgZG9uZSwK LQkJICogYmVjYXVzZSBvbmNlIHdhbHNlbmRlciBjaGFuZ2VzIHRoZSBzdGF0ZSB0byBTWU5D X1JFUF9XQUlUX0NPTVBMRVRFLAotCQkgKiBpdCB3aWxsIG5ldmVyIHVwZGF0ZSBpdCBhZ2Fp biwgc28gd2UgY2FuJ3QgYmUgc2VlaW5nIGEgc3RhbGUgdmFsdWUKLQkJICogaW4gdGhhdCBj YXNlLgorCQkgKiBBY3F1aXJpbmcgdGhlIGxvY2sgaXMgbm90IG5lZWRlZCwgdGhlIGludGVy cnVwdCBlbnN1cmVzIHByb3BlcgorCQkgKiBiYXJyaWVycyAoRklYTUU6IGlzIHRoYXQgc28/ KS4gSWYgaXQgbG9va3MgbGlrZSB3ZSdyZSBkb25lLCB3ZSBtdXN0CisJCSAqIHJlYWxseSBi ZSBkb25lLCBiZWNhdXNlIG9uY2Ugd2Fsc2VuZGVyIGNoYW5nZXMgdGhlIHN0YXRlIHRvCisJ CSAqIFNZTkNfUkVQX1dBSVRfQ09NUExFVEUsIGl0IHdpbGwgbmV2ZXIgdXBkYXRlIGl0IGFn YWluLCBzbyB3ZSBjYW4ndAorCQkgKiBiZSBzZWVpbmcgYSBzdGFsZSB2YWx1ZSBpbiB0aGF0 IGNhc2UuCiAJCSAqLwogCQlpZiAoTXlQcm9jLT5zeW5jUmVwU3RhdGUgPT0gU1lOQ19SRVBf V0FJVF9DT01QTEVURSkKIAkJCWJyZWFrOwpAQCAtMjgyLDExICsyODMsMTMgQEAgU3luY1Jl cFdhaXRGb3JMU04oWExvZ1JlY1B0ciBsc24sIGJvb2wgY29tbWl0KQogCQl9CiAKIAkJLyoK LQkJICogV2FpdCBvbiBsYXRjaC4gIEFueSBjb25kaXRpb24gdGhhdCBzaG91bGQgd2FrZSB1 cyB1cCB3aWxsIHNldCB0aGUKLQkJICogbGF0Y2gsIHNvIG5vIG5lZWQgZm9yIHRpbWVvdXQu CisJCSAqIFdhaXQgb24gaW50ZXJydXB0LiAgQW55IGNvbmRpdGlvbiB0aGF0IHNob3VsZCB3 YWtlIHVzIHVwIHdpbGwgc2V0CisJCSAqIHRoZSBpbnRlcnJ1cHQsIHNvIG5vIG5lZWQgZm9y IHRpbWVvdXQuCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9T RVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAtMSwKLQkJCQkJICAgV0FJVF9FVkVOVF9TWU5D X1JFUCk7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCisJ CQkJCQkgICAtMSwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfU1lOQ19SRVApOwogCiAJCS8qCiAJ CSAqIElmIHRoZSBwb3N0bWFzdGVyIGRpZXMsIHdlJ2xsIHByb2JhYmx5IG5ldmVyIGdldCBh biBhY2tub3dsZWRnbWVudCwKQEAgLTkwMiw3ICs5MDUsNyBAQCBTeW5jUmVwV2FrZVF1ZXVl KGJvb2wgYWxsLCBpbnQgbW9kZSkKIAkJLyoKIAkJICogV2FrZSBvbmx5IHdoZW4gd2UgaGF2 ZSBzZXQgc3RhdGUgYW5kIHJlbW92ZWQgZnJvbSBxdWV1ZS4KIAkJICovCi0JCVNldExhdGNo KCYocHJvYy0+cHJvY0xhdGNoKSk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAogCQludW1wcm9jcysr OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IDVmNjQx ZDI3OTA1Li4zOWZhOWZhM2UyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNl aXZlci5jCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpAQCAtMTQ3LDE1ICsxNDgsMTcg QEAgc3RhdGljIHZvaWQgV2FsUmN2Q29tcHV0ZU5leHRXYWtldXAoV2FsUmN2V2FrZXVwUmVh c29uIHJlYXNvbiwgVGltZXN0YW1wVHogbm93KTsKIAogLyoKICAqIFByb2Nlc3MgYW55IGlu dGVycnVwdHMgdGhlIHdhbHJlY2VpdmVyIHByb2Nlc3MgbWF5IGhhdmUgcmVjZWl2ZWQuCi0g KiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYW55IHRpbWUgdGhlIHByb2Nlc3MncyBsYXRjaCBo YXMgYmVjb21lIHNldC4KKyAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBhbnkgdGltZSB0aGUg SU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQIGludGVycnVwdAorICogaGFzIGJlY29tZSBzZXQu CiAgKgogICogQ3VycmVudGx5LCBvbmx5IFNJR1RFUk0gaXMgb2YgaW50ZXJlc3QuICBXZSBj YW4ndCBqdXN0IGV4aXQoMSkgd2l0aGluIHRoZQogICogU0lHVEVSTSBzaWduYWwgaGFuZGxl ciwgYmVjYXVzZSB0aGUgc2lnbmFsIG1pZ2h0IGFycml2ZSBpbiB0aGUgbWlkZGxlIG9mCiAg KiBzb21lIGNyaXRpY2FsIG9wZXJhdGlvbiwgbGlrZSB3aGlsZSB3ZSdyZSBob2xkaW5nIGEg c3BpbmxvY2suICBJbnN0ZWFkLCB0aGUKLSAqIHNpZ25hbCBoYW5kbGVyIHNldHMgYSBmbGFn IHZhcmlhYmxlIGFzIHdlbGwgYXMgc2V0dGluZyB0aGUgcHJvY2VzcydzIGxhdGNoLgotICog V2UgbXVzdCBjaGVjayB0aGUgZmxhZyAoYnkgY2FsbGluZyBQcm9jZXNzV2FsUmN2SW50ZXJy dXB0cykgYW55dGltZSB0aGUKLSAqIGxhdGNoIGhhcyBiZWNvbWUgc2V0LiAgT3BlcmF0aW9u cyB0aGF0IGNvdWxkIGJsb2NrIGZvciBhIGxvbmcgdGltZSwgc3VjaCBhcwotICogcmVhZGlu ZyBmcm9tIGEgcmVtb3RlIHNlcnZlciwgbXVzdCBwYXkgYXR0ZW50aW9uIHRvIHRoZSBsYXRj aCB0b287IHNlZQorICogc2lnbmFsIGhhbmRsZXIgc2V0cyBhIGZsYWcgdmFyaWFibGUgYXMg d2VsbCBhcyByYWlzaW5nCisgKiBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAuICBXZSBtdXN0 IGNoZWNrIHRoZSBmbGFnIChieSBjYWxsaW5nCisgKiBQcm9jZXNzV2FsUmN2SW50ZXJydXB0 cykgYW55dGltZSB0aGUgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQIGhhcyBiZWNvbWUKKyAq IHNldC4gIE9wZXJhdGlvbnMgdGhhdCBjb3VsZCBibG9jayBmb3IgYSBsb25nIHRpbWUsIHN1 Y2ggYXMgcmVhZGluZyBmcm9tIGEKKyAqIHJlbW90ZSBzZXJ2ZXIsIG11c3QgcGF5IGF0dGVu dGlvbiB0byB0aGUgaW50ZXJydXB0IHRvbzsgc2VlCiAgKiBsaWJwcXJjdl9QUWdldFJlc3Vs dCBmb3IgZXhhbXBsZS4KICAqLwogdm9pZApAQCAtNTM2LDI1ICs1MzksMjUgQEAgV2FsUmVj ZWl2ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4p CiAKIAkJCQkvKgogCQkJCSAqIElkZWFsbHkgd2Ugd291bGQgcmV1c2UgYSBXYWl0RXZlbnRT ZXQgb2JqZWN0IHJlcGVhdGVkbHkKLQkJCQkgKiBoZXJlIHRvIGF2b2lkIHRoZSBvdmVyaGVh ZHMgb2YgV2FpdExhdGNoT3JTb2NrZXQgb24gZXBvbGwKLQkJCQkgKiBzeXN0ZW1zLCBidXQg d2UgY2FuJ3QgYmUgc3VyZSB0aGF0IGxpYnBxIChvciBhbnkgb3RoZXIKLQkJCQkgKiB3YWxy ZWNlaXZlciBpbXBsZW1lbnRhdGlvbikgaGFzIHRoZSBzYW1lIHNvY2tldCAoZXZlbiBpZgot CQkJCSAqIHRoZSBmZCBpcyB0aGUgc2FtZSBudW1iZXIsIGl0IG1heSBoYXZlIGJlZW4gY2xv c2VkIGFuZAorCQkJCSAqIGhlcmUgdG8gYXZvaWQgdGhlIG92ZXJoZWFkcyBvZiBXYWl0SW50 ZXJydXB0T3JTb2NrZXQgb24KKwkJCQkgKiBlcG9sbCBzeXN0ZW1zLCBidXQgd2UgY2FuJ3Qg YmUgc3VyZSB0aGF0IGxpYnBxIChvciBhbnkKKwkJCQkgKiBvdGhlciB3YWxyZWNlaXZlciBp bXBsZW1lbnRhdGlvbikgaGFzIHRoZSBzYW1lIHNvY2tldCAoZXZlbgorCQkJCSAqIGlmIHRo ZSBmZCBpcyB0aGUgc2FtZSBudW1iZXIsIGl0IG1heSBoYXZlIGJlZW4gY2xvc2VkIGFuZAog CQkJCSAqIHJlb3BlbmVkIHNpbmNlIHRoZSBsYXN0IHRpbWUpLiAgSW4gZnV0dXJlLCBpZiB0 aGVyZSBpcyBhCiAJCQkJICogZnVuY3Rpb24gZm9yIHJlbW92aW5nIHNvY2tldHMgZnJvbSBX YWl0RXZlbnRTZXQsIHRoZW4gd2UKIAkJCQkgKiBjb3VsZCBhZGQgYW5kIHJlbW92ZSBqdXN0 IHRoZSBzb2NrZXQgZWFjaCB0aW1lLCBwb3RlbnRpYWxseQogCQkJCSAqIGF2b2lkaW5nIHNv bWUgc3lzdGVtIGNhbGxzLgogCQkJCSAqLwogCQkJCUFzc2VydCh3YWl0X2ZkICE9IFBHSU5W QUxJRF9TT0NLRVQpOwotCQkJCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJ CQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAot CQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0xBVENIX1NFVCwKLQkJCQkJCQkJCSAgIHdh aXRfZmQsCi0JCQkJCQkJCQkgICBuYXAsCi0JCQkJCQkJCQkgICBXQUlUX0VWRU5UX1dBTF9S RUNFSVZFUl9NQUlOKTsKLQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJcmMgPSBX YWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJ CQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8 CisJCQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0lOVEVSUlVQVCwKKwkJCQkJCQkJCQkg ICB3YWl0X2ZkLAorCQkJCQkJCQkJCSAgIG5hcCwKKwkJCQkJCQkJCQkgICBXQUlUX0VWRU5U X1dBTF9SRUNFSVZFUl9NQUlOKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCQkJ ewotCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJCQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygp OwogCiAJCQkJCWlmICh3YWxyY3YtPmZvcmNlX3JlcGx5KQpAQCAtNjkyLDcgKzY5NSw3IEBA IFdhbFJjdldhaXRGb3JTdGFydFBvc2l0aW9uKFhMb2dSZWNQdHIgKnN0YXJ0cG9pbnQsIFRp bWVMaW5lSUQgKnN0YXJ0cG9pbnRUTEkpCiAJV2FrZXVwUmVjb3ZlcnkoKTsKIAlmb3IgKDs7 KQogCXsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygpOwog CkBAIC03MjQsOCArNzI3LDEwIEBAIFdhbFJjdldhaXRGb3JTdGFydFBvc2l0aW9uKFhMb2dS ZWNQdHIgKnN0YXJ0cG9pbnQsIFRpbWVMaW5lSUQgKnN0YXJ0cG9pbnRUTEkpCiAJCX0KIAkJ U3BpbkxvY2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsKIAotCQkodm9pZCkgV2FpdExhdGNo KE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJ CQkgV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfV0FJVF9TVEFSVCk7CisJCSh2b2lkKSBXYWl0 SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCSBXTF9J TlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAwLAorCQkJCQkJCSBX QUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9XQUlUX1NUQVJUKTsKIAl9CiAKIAlpZiAodXBkYXRl X3Byb2Nlc3NfdGl0bGUpCkBAIC0xMzY2LDcgKzEzNzEsNyBAQCBXYWxSY3ZGb3JjZVJlcGx5 KHZvaWQpCiAJcHJvY25vID0gV2FsUmN2LT5wcm9jbm87CiAJU3BpbkxvY2tSZWxlYXNlKCZX YWxSY3YtPm11dGV4KTsKIAlpZiAocHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0J CVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihwcm9jbm8pLT5wcm9jTGF0Y2gpOworCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgcHJvY25vKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwppbmRl eCA4NTU3ZDEwY2Y5ZC4uNjIxMmU4MjU3NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCkBAIC0zMTcsNyArMzE4LDcg QEAgUmVxdWVzdFhMb2dTdHJlYW1pbmcoVGltZUxpbmVJRCB0bGksIFhMb2dSZWNQdHIgcmVj cHRyLCBjb25zdCBjaGFyICpjb25uaW5mbywKIAlpZiAobGF1bmNoKQogCQlTZW5kUG9zdG1h c3RlclNpZ25hbChQTVNJR05BTF9TVEFSVF9XQUxSRUNFSVZFUik7CiAJZWxzZSBpZiAod2Fs cmN2X3Byb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJkdldFBHUHJv Y0J5TnVtYmVyKHdhbHJjdl9wcm9jKS0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHdhbHJjdl9wcm9jKTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggMzcxZWVmM2RkZGMuLjI1YzViZDhl MzA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtODAsNiArODAs NyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKQEAgLTEwMTMsOCArMTAxNCw4IEBAIFN0YXJ0UmVwbGljYXRpb24o U3RhcnRSZXBsaWNhdGlvbkNtZCAqY21kKQogICogWExvZ1JlYWRlclJvdXRpbmUtPnBhZ2Vf cmVhZCBjYWxsYmFjayBmb3IgbG9naWNhbCBkZWNvZGluZyBjb250ZXh0cywgYXMgYQogICog d2Fsc2VuZGVyIHByb2Nlc3MuCiAgKgotICogSW5zaWRlIHRoZSB3YWxzZW5kZXIgd2UgY2Fu IGRvIGJldHRlciB0aGFuIHJlYWRfbG9jYWxfeGxvZ19wYWdlLAotICogd2hpY2ggaGFzIHRv IGRvIGEgcGxhaW4gc2xlZXAvYnVzeSBsb29wLCBiZWNhdXNlIHRoZSB3YWxzZW5kZXIncyBs YXRjaCBnZXRzCisgKiBJbnNpZGUgdGhlIHdhbHNlbmRlciB3ZSBjYW4gZG8gYmV0dGVyIHRo YW4gcmVhZF9sb2NhbF94bG9nX3BhZ2UsIHdoaWNoCisgKiBoYXMgdG8gZG8gYSBwbGFpbiBz bGVlcC9idXN5IGxvb3AsIGJlY2F1c2UgdGhlIHdhbHNlbmRlcidzIGludGVycnVwdCBnZXRz CiAgKiBzZXQgZXZlcnkgdGltZSBXQUwgaXMgZmx1c2hlZC4KICAqLwogc3RhdGljIGludApA QCAtMTYxMSw3ICsxNjEyLDcgQEAgUHJvY2Vzc1BlbmRpbmdXcml0ZXModm9pZCkKIAkJCQkg ICBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV1JJVEVfREFUQSk7CiAKIAkJLyogQ2xlYXIgYW55 IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIApAQCAtMTYyOCw4ICsxNjI5LDggQEAgUHJvY2Vzc1BlbmRp bmdXcml0ZXModm9pZCkKIAkJCVdhbFNuZFNodXRkb3duKCk7CiAJfQogCi0JLyogcmVhY3Rp dmF0ZSBsYXRjaCBzbyBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICovCi0JU2V0TGF0 Y2goTXlMYXRjaCk7CisJLyogcmVhY3RpdmF0ZSBpbnRlcnJ1cHQgc28gV2FsU25kTG9vcCBr bm93cyB0byBjb250aW51ZSAqLworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM X1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0xODE3LDcgKzE4MTgsNyBAQCBXYWxTbmRXYWl0Rm9y V2FsKFhMb2dSZWNQdHIgbG9jKQogCQlsb25nCQlzbGVlcHRpbWU7CiAKIAkJLyogQ2xlYXIg YW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKIApAQCAtMTkzNyw4ICsxOTM4LDggQEAgV2FsU25kV2Fp dEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVl cHRpbWUsIHdhaXRfZXZlbnQpOwogCX0KIAotCS8qIHJlYWN0aXZhdGUgbGF0Y2ggc28gV2Fs U25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCS8q IHJlYWN0aXZhdGUgaW50ZXJydXB0IGZsYWcgc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250 aW51ZSAqLworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJ cmV0dXJuIFJlY2VudEZsdXNoUHRyOwogfQogCkBAIC0yNzU1LDcgKzI3NTYsNyBAQCBXYWxT bmRMb29wKFdhbFNuZFNlbmREYXRhQ2FsbGJhY2sgc2VuZF9kYXRhKQogCWZvciAoOzspCiAJ ewogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FL RVVQKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0zNTU0LDcgKzM1NTUs NyBAQCBzdGF0aWMgdm9pZAogV2FsU25kTGFzdEN5Y2xlSGFuZGxlcihTSUdOQUxfQVJHUykK IHsKIAlnb3RfU0lHVVNSMiA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyogU2V0IHVwIHNp Z25hbCBoYW5kbGVycyAqLwpAQCAtMzY2MCw3ICszNjYxLDcgQEAgV2FsU25kV2FpdCh1aW50 MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudCkKIHsK IAlXYWl0RXZlbnQJZXZlbnQ7CiAKLQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZl QmVXYWl0U2V0U29ja2V0UG9zLCBzb2NrZXRfZXZlbnRzLCBOVUxMKTsKKwlNb2RpZnlXYWl0 RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCBzb2NrZXRfZXZlbnRz LCAwKTsKIAogCS8qCiAJICogV2UgdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHRvIGVmZmlj aWVudGx5IHdha2UgdXAgd2Fsc2VuZGVycyBpbgpAQCAtMzY3Miw4ICszNjczLDggQEAgV2Fs U25kV2FpdCh1aW50MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2Fp dF9ldmVudCkKIAkgKiBDb25kaXRpb25WYXJpYWJsZVNsZWVwKCkpLiBJdCBzdGlsbCB1c2Vz IFdhaXRFdmVudFNldFdhaXQoKSBmb3IKIAkgKiB3YWl0aW5nLCBiZWNhdXNlIHdlIGFsc28g bmVlZCB0byB3YWl0IGZvciBzb2NrZXQgZXZlbnRzLiBUaGUgcHJvY2Vzc2VzCiAJICogKHN0 YXJ0dXAgcHJvY2Vzcywgd2FscmVjZWl2ZXIgZXRjLikgd2FudGluZyB0byB3YWtlIHVwIHdh bHNlbmRlcnMgdXNlCi0JICogQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoKSwgd2hpY2gg aW4gdHVybiBjYWxscyBTZXRMYXRjaCgpLCBoZWxwaW5nCi0JICogd2Fsc2VuZGVycyBjb21l IG91dCBvZiBXYWl0RXZlbnRTZXRXYWl0KCkuCisJICogQ29uZGl0aW9uVmFyaWFibGVCcm9h ZGNhc3QoKSwgd2hpY2ggaW4gdHVybiBjYWxscyBTZW5kSW50ZXJydXB0KCksCisJICogaGVs cGluZyB3YWxzZW5kZXJzIGNvbWUgb3V0IG9mIFdhaXRFdmVudFNldFdhaXQoKS4KIAkgKgog CSAqIFRoaXMgYXBwcm9hY2ggaXMgc2ltcGxlIGFuZCBlZmZpY2llbnQgYmVjYXVzZSwgb25l IGRvZXNuJ3QgaGF2ZSB0byBsb29wCiAJICogdGhyb3VnaCBhbGwgdGhlIHdhbHNlbmRlcnMg c2xvdHMsIHdpdGggYSBzcGlubG9jayBhY3F1aXNpdGlvbiBhbmQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggMGYwMmJmNjJmYTMuLjk5OTJiODM3YzVkIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAtNTEsNiArNTEsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmX2ludGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVm bWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTI4ODIsNyArMjg4Myw3 IEBAIFVucGluQnVmZmVyTm9Pd25lcihCdWZmZXJEZXNjICpidWYpCiAKIAkJCQlidWZfc3Rh dGUgJj0gfkJNX1BJTl9DT1VOVF9XQUlURVI7CiAJCQkJVW5sb2NrQnVmSGRyKGJ1ZiwgYnVm X3N0YXRlKTsKLQkJCQlQcm9jU2VuZFNpZ25hbCh3YWl0X2JhY2tlbmRfcGdwcm9jbm8pOwor CQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCB3YWl0X2JhY2tl bmRfcGdwcm9jbm8pOwogCQkJfQogCQkJZWxzZQogCQkJCVVubG9ja0J1ZkhkcihidWYsIGJ1 Zl9zdGF0ZSk7CkBAIC01MzQ0LDcgKzUzNDUsMTIgQEAgTG9ja0J1ZmZlckZvckNsZWFudXAo QnVmZmVyIGJ1ZmZlcikKIAkJCVNldFN0YXJ0dXBCdWZmZXJQaW5XYWl0QnVmSWQoLTEpOwog CQl9CiAJCWVsc2UKLQkJCVByb2NXYWl0Rm9yU2lnbmFsKFdBSVRfRVZFTlRfQlVGRkVSX1BJ Tik7CisJCXsKKwkJCVdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVAsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkgIFdB SVRfRVZFTlRfQlVGRkVSX1BJTik7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVApOworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQogCiAJCS8q CiAJCSAqIFJlbW92ZSBmbGFnIG1hcmtpbmcgdXMgYXMgd2FpdGVyLiBOb3JtYWxseSB0aGlz IHdpbGwgbm90IGJlIHNldApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMK aW5kZXggZGZmZGQ1N2U5YjUuLjU3NzMzYjAzZDIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2ZyZWVsaXN0LmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJwb3J0L2F0 b21pY3MuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKICNkZWZpbmUgSU5UX0FDQ0VTU19PTkNFKHZh cikJKChpbnQpKCooKHZvbGF0aWxlIGludCAqKSYodmFyKSkpKQpAQCAtMjE5LDI3ICsyMjAs MjUgQEAgU3RyYXRlZ3lHZXRCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ks IHVpbnQzMiAqYnVmX3N0YXRlLCBib29sICpmcm9tX3IKIAkvKgogCSAqIElmIGFza2VkLCB3 ZSBuZWVkIHRvIHdha2VuIHRoZSBiZ3dyaXRlci4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBy ZWx5IG9uCiAJICogYSBzcGlubG9jayBmb3IgdGhpcyB3ZSBmb3JjZSBhIHJlYWQgZnJvbSBz aGFyZWQgbWVtb3J5IG9uY2UsIGFuZCB0aGVuCi0JICogc2V0IHRoZSBsYXRjaCBiYXNlZCBv biB0aGF0IHZhbHVlLiBXZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhhdCBsZW5ndGgKLQkgKiBi ZWNhdXNlIG90aGVyd2lzZSBiZ3dwcm9jbm8gbWlnaHQgYmUgcmVzZXQgd2hpbGUvYWZ0ZXIg d2UgY2hlY2sgYmVjYXVzZQotCSAqIHRoZSBjb21waWxlciBtaWdodCBqdXN0IHJlcmVhZCBm cm9tIG1lbW9yeS4KKwkgKiBzZW5kIHRoZSBpbnRlcnJ1cHQgYmFzZWQgb24gdGhhdCB2YWx1 ZS4gV2UgbmVlZCB0byBnbyB0aHJvdWdoIHRoYXQKKwkgKiBsZW5ndGggYmVjYXVzZSBvdGhl cndpc2UgYmd3cHJvY25vIG1pZ2h0IGJlIHJlc2V0IHdoaWxlL2FmdGVyIHdlIGNoZWNrCisJ ICogYmVjYXVzZSB0aGUgY29tcGlsZXIgbWlnaHQganVzdCByZXJlYWQgZnJvbSBtZW1vcnku CiAJICoKLQkgKiBUaGlzIGNhbiBwb3NzaWJseSBzZXQgdGhlIGxhdGNoIG9mIHRoZSB3cm9u ZyBwcm9jZXNzIGlmIHRoZSBiZ3dyaXRlcgotCSAqIGRpZXMgaW4gdGhlIHdyb25nIG1vbWVu dC4gQnV0IHNpbmNlIFBHUFJPQy0+cHJvY0xhdGNoIGlzIG5ldmVyCi0JICogZGVhbGxvY2F0 ZWQgdGhlIHdvcnN0IGNvbnNlcXVlbmNlIG9mIHRoYXQgaXMgdGhhdCB3ZSBzZXQgdGhlIGxh dGNoIG9mCi0JICogc29tZSBhcmJpdHJhcnkgcHJvY2Vzcy4KKwkgKiBUaGlzIGNhbiBwb3Nz aWJseSBzZW5kIHRoZSBpbnRlcnJ1cHQgdG8gdGhlIHdyb25nIHByb2Nlc3MgaWYgdGhlCisJ ICogYmd3cml0ZXIgZGllcyBpbiB0aGUgd3JvbmcgbW9tZW50LCBidXQgdGhhdCdzIGhhcm1s ZXNzLgogCSAqLwogCWJnd3Byb2NubyA9IElOVF9BQ0NFU1NfT05DRShTdHJhdGVneUNvbnRy b2wtPmJnd3Byb2Nubyk7CiAJaWYgKGJnd3Byb2NubyAhPSAtMSkKIAl7Ci0JCS8qIHJlc2V0 IGJnd3Byb2NubyBmaXJzdCwgYmVmb3JlIHNldHRpbmcgdGhlIGxhdGNoICovCisJCS8qIHJl c2V0IGJnd3Byb2NubyBmaXJzdCwgYmVmb3JlIHNlbmRpbmcgdGhlIGludGVycnVwdCAqLwog CQlTdHJhdGVneUNvbnRyb2wtPmJnd3Byb2NubyA9IC0xOwogCiAJCS8qCi0JCSAqIE5vdCBh Y3F1aXJpbmcgUHJvY0FycmF5TG9jayBoZXJlIHdoaWNoIGlzIHNsaWdodGx5IGlja3kuIEl0 J3MKLQkJICogYWN0dWFsbHkgZmluZSBiZWNhdXNlIHByb2NMYXRjaCBpc24ndCBldmVyIGZy ZWVkLCBzbyB3ZSBqdXN0IGNhbgotCQkgKiBwb3RlbnRpYWxseSBzZXQgdGhlIHdyb25nIHBy b2Nlc3MnIChvciBubyBwcm9jZXNzJykgbGF0Y2guCisJCSAqIE5vdCBhY3F1aXJpbmcgUHJv Y0FycmF5TG9jayBoZXJlIHdoaWNoIGlzIHNsaWdodGx5IGlja3ksIGJlY2F1c2Ugd2UKKwkJ ICogY2FuIHBvdGVudGlhbGx5IHNlbmQgdGhlIGludGVycnVwdCB0byB0aGUgd3JvbmcgcHJv Y2VzcyAob3Igbm8KKwkJICogcHJvY2VzcyksIGJ1dCBpdCdzIGhhcm1sZXNzLgogCQkgKi8K LQkJU2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW2Jnd3Byb2Nub10ucHJvY0xhdGNo KTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIGJnd3Byb2Nu byk7CiAJfQogCiAJLyoKQEAgLTQyMCwxMCArNDE5LDEwIEBAIFN0cmF0ZWd5U3luY1N0YXJ0 KHVpbnQzMiAqY29tcGxldGVfcGFzc2VzLCB1aW50MzIgKm51bV9idWZfYWxsb2MpCiB9CiAK IC8qCi0gKiBTdHJhdGVneU5vdGlmeUJnV3JpdGVyIC0tIHNldCBvciBjbGVhciBhbGxvY2F0 aW9uIG5vdGlmaWNhdGlvbiBsYXRjaAorICogU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlciAtLSBz ZXQgb3IgY2xlYXIgYWxsb2NhdGlvbiBub3RpZmljYXRpb24gcHJvY2VzcwogICoKICAqIElm IGJnd3Byb2NubyBpc24ndCAtMSwgdGhlIG5leHQgaW52b2NhdGlvbiBvZiBTdHJhdGVneUdl dEJ1ZmZlciB3aWxsCi0gKiBzZXQgdGhhdCBsYXRjaC4gIFBhc3MgLTEgdG8gY2xlYXIgdGhl IHBlbmRpbmcgbm90aWZpY2F0aW9uIGJlZm9yZSBpdAorICogaW50ZXJydXB0IHRoYXQgcHJv Y2Vzcy4gIFBhc3MgLTEgdG8gY2xlYXIgdGhlIHBlbmRpbmcgbm90aWZpY2F0aW9uIGJlZm9y ZSBpdAogICogaGFwcGVucy4gIFRoaXMgZmVhdHVyZSBpcyB1c2VkIGJ5IHRoZSBiZ3dyaXRl ciBwcm9jZXNzIHRvIHdha2UgaXRzZWxmIHVwCiAgKiBmcm9tIGhpYmVybmF0aW9uLCBhbmQg aXMgbm90IG1lYW50IGZvciBhbnlib2R5IGVsc2UgdG8gdXNlLgogICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL01ha2VmaWxlCmluZGV4IGQ4YTE2NTNlYjZhLi41YzdjNzJmOTAyYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUKQEAgLTEzLDkgKzEzLDkgQEAgT0JKUyA9IFwKIAlk c20ubyBcCiAJZHNtX2ltcGwubyBcCiAJZHNtX3JlZ2lzdHJ5Lm8gXAorCWludGVycnVwdC5v IFwKIAlpcGMubyBcCiAJaXBjaS5vIFwKLQlsYXRjaC5vIFwKIAlwbXNpZ25hbC5vIFwKIAlw cm9jYXJyYXkubyBcCiAJcHJvY3NpZ25hbC5vIFwKQEAgLTI1LDYgKzI1LDcgQEAgT0JKUyA9 IFwKIAlzaWduYWxmdW5jcy5vIFwKIAlzaW52YWwubyBcCiAJc2ludmFsYWR0Lm8gXAotCXN0 YW5kYnkubworCXN0YW5kYnkubyBcCisJd2FpdGV2ZW50c2V0Lm8KIAogaW5jbHVkZSAkKHRv cF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvaW50ZXJydXB0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9p bnRlcnJ1cHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjk0 ZWQzNDNkYzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9p bnRlcnJ1cHQuYwpAQCAtMCwwICsxLDExNCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogaW50ZXJydXB0LmMKKyAqCSAgSW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmVzLgor ICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0 LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVO VElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pbnRlcnJ1cHQuYwor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNp bmNsdWRlICJwb3J0L2F0b21pY3MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS93 YWl0ZXZlbnRzZXQuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgorCitzdGF0aWMgcGdfYXRvbWljX3VpbnQzMiBMb2NhbFBlbmRpbmdJ bnRlcnJ1cHRzOworc3RhdGljIHBnX2F0b21pY191aW50MzIgTG9jYWxNYXliZVNsZWVwaW5n T25JbnRlcnJ1cHRzOworCitwZ19hdG9taWNfdWludDMyICpNeVBlbmRpbmdJbnRlcnJ1cHRz ID0gJkxvY2FsUGVuZGluZ0ludGVycnVwdHM7CitwZ19hdG9taWNfdWludDMyICpNeU1heWJl U2xlZXBpbmdPbkludGVycnVwdHMgPSAmTG9jYWxNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRz OworCisvKgorICogU3dpdGNoIHRvIGxvY2FsIGludGVycnVwdHMuICBPdGhlciBiYWNrZW5k cyBjYW4ndCBzZW5kIGludGVycnVwdHMgdG8gdGhpcworICogb25lLiAgT25seSBSYWlzZUlu dGVycnVwdCgpIGNhbiBzZXQgdGhlbSwgZnJvbSBpbnNpZGUgdGhpcyBwcm9jZXNzLgorICov Cit2b2lkCitTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cyh2b2lkKQoreworCWlmIChNeVBlbmRp bmdJbnRlcnJ1cHRzID09ICZMb2NhbFBlbmRpbmdJbnRlcnJ1cHRzKQorCQlyZXR1cm47CisK KwlNeVBlbmRpbmdJbnRlcnJ1cHRzID0gJkxvY2FsUGVuZGluZ0ludGVycnVwdHM7CisJTXlN YXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzID0gJkxvY2FsTWF5YmVTbGVlcGluZ09uSW50ZXJy dXB0czsKKworCS8qCisJICogTWFrZSBzdXJlIHRoYXQgU0lHQUxSTSBoYW5kbGVycyB0aGF0 IGNhbGwgUmFpc2VJbnRlcnJ1cHQoKSBhcmUgbm93CisJICogc2VlaW5nIHRoZSBuZXcgTXlQ ZW5kaW5nSW50ZXJydXB0cyBkZXN0aW5hdGlvbi4KKwkgKi8KKwlwZ19tZW1vcnlfYmFycmll cigpOworCisJLyoKKwkgKiBNaXggaW4gdGhlIGludGVycnVwdHMgdGhhdCB3ZSBoYXZlIHJl Y2VpdmVkIGFscmVhZHkgaW4gb3VyIHNoYXJlZAorCSAqIGludGVycnVwdCB2ZWN0b3IsIHdo aWxlIGF0b21pY2FsbHkgY2xlYXJpbmcgaXQuICBPdGhlciBiYWNrZW5kcyBtYXkKKwkgKiBj b250aW51ZSB0byBzZXQgYml0cyBpbiBpdCBhZnRlciB0aGlzIHBvaW50LCBidXQgd2UndmUg YXRvbWljYWxseQorCSAqIHRyYW5zZmVycmVkIHRoZSBleGlzdGluZyBiaXRzIHRvIG91ciBs b2NhbCB2ZWN0b3Igc28gd2Ugd29uJ3QgZ2V0CisJICogZHVwbGljYXRlZCBpbnRlcnJ1cHRz IGxhdGVyIGlmIHdlIHN3aXRjaCBiYWNreC4KKwkgKi8KKwlwZ19hdG9taWNfZmV0Y2hfb3Jf dTMyKE15UGVuZGluZ0ludGVycnVwdHMsCisJCQkJCQkgICBwZ19hdG9taWNfZXhjaGFuZ2Vf dTMyKCZNeVByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzLCAwKSk7Cit9CisKKy8qCisgKiBTd2l0 Y2ggdG8gc2hhcmVkIG1lbW9yeSBpbnRlcnJ1cHRzLiAgT3RoZXIgYmFja2VuZHMgY2FuIHNl bmQgaW50ZXJydXB0cyB0bworICogdGhpcyBvbmUgaWYgdGhleSBrbm93IGl0cyBQcm9jTnVt YmVyLCBhbmQgd2UnbGwgbm93IHNlZSBhbnkgdGhhdCB3ZSBtaXNzZWQuCisgKi8KK3ZvaWQK K1N3aXRjaFRvU2hhcmVkSW50ZXJydXB0cyh2b2lkKQoreworCWlmIChNeVBlbmRpbmdJbnRl cnJ1cHRzID09ICZNeVByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzKQorCQlyZXR1cm47CisKKwlN eVBlbmRpbmdJbnRlcnJ1cHRzID0gJk15UHJvYy0+cGVuZGluZ0ludGVycnVwdHM7CisJTXlN YXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzID0gJk15UHJvYy0+bWF5YmVTbGVlcGluZ09uSW50 ZXJydXB0czsKKworCS8qCisJICogTWFrZSBzdXJlIHRoYXQgU0lHQUxSTSBoYW5kbGVycyB0 aGF0IGNhbGwgUmFpc2VJbnRlcnJ1cHQoKSBhcmUgbm93CisJICogc2VlaW5nIHRoZSBuZXcg TXlQZW5kaW5nSW50ZXJydXB0cyBkZXN0aW5hdGlvbi4KKwkgKi8KKwlwZ19tZW1vcnlfYmFy cmllcigpOworCisJLyogTWl4IGluIGFueSB1bmhhbmRsZWQgYml0cyBmcm9tIExvY2FsUGVu ZGluZ0ludGVycnVwdHMuICovCisJcGdfYXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRpbmdJ bnRlcnJ1cHRzLAorCQkJCQkJICAgcGdfYXRvbWljX2V4Y2hhbmdlX3UzMigmTG9jYWxQZW5k aW5nSW50ZXJydXB0cywgMCkpOworfQorCisvKgorICogU2V0IGFuIGludGVycnVwdCBmbGFn IGluIHRoaXMgYmFja2VuZC4KKyAqLwordm9pZAorUmFpc2VJbnRlcnJ1cHQoSW50ZXJydXB0 VHlwZSByZWFzb24pCit7CisJcGdfYXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRpbmdJbnRl cnJ1cHRzLCAxIDw8IHJlYXNvbik7CisJV2FrZXVwTXlQcm9jKCk7Cit9CisKKy8qCisgKiBT ZXQgYW4gaW50ZXJydXB0IGZsYWcgaW4gYW5vdGhlciBiYWNrZW5kLgorICovCit2b2lkCitT ZW5kSW50ZXJydXB0KEludGVycnVwdFR5cGUgcmVhc29uLCBQcm9jTnVtYmVyIHBncHJvY25v KQoreworCVBHUFJPQwkgICAqcHJvYzsKKworCUFzc2VydChwZ3Byb2NubyAhPSBJTlZBTElE X1BST0NfTlVNQkVSKTsKKwlBc3NlcnQocGdwcm9jbm8gPj0gMCk7CisJQXNzZXJ0KHBncHJv Y25vIDwgUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50KTsKKworCXByb2MgPSAmUHJvY0dsb2Jh bC0+YWxsUHJvY3NbcGdwcm9jbm9dOworCXBnX2F0b21pY19mZXRjaF9vcl91MzIoJnByb2Mt PnBlbmRpbmdJbnRlcnJ1cHRzLCAxIDw8IHJlYXNvbik7CisJV2FrZXVwT3RoZXJQcm9jKHBy b2MpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24uYnVp bGQgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZAppbmRleCA1YTkzNjE3 MWY3My4uNGViYTQxYjc4YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxk CkBAIC01LDkgKzUsOSBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdkc20uYycs CiAgICdkc21faW1wbC5jJywKICAgJ2RzbV9yZWdpc3RyeS5jJywKKyAgJ2ludGVycnVwdC5j JywKICAgJ2lwYy5jJywKICAgJ2lwY2kuYycsCi0gICdsYXRjaC5jJywKICAgJ3Btc2lnbmFs LmMnLAogICAncHJvY2FycmF5LmMnLAogICAncHJvY3NpZ25hbC5jJywKQEAgLTE4LDUgKzE4 LDYgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnc2ludmFsLmMnLAogICAnc2lu dmFsYWR0LmMnLAogICAnc3RhbmRieS5jJywKKyAgJ3dhaXRldmVudHNldC5jJywKIAogKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IDg3MDI3ZjI3ZWI3Li5m OTdmNGNhMWNlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAt MjUsOCArMjUsOCBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdl L2NvbmRpdGlvbl92YXJpYWJsZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFs LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCkBAIC00ODEsNyArNDgxLDcgQEAgSGFu ZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1cHQodm9pZCkKIHsKIAlJbnRlcnJ1cHRQZW5k aW5nID0gdHJ1ZTsKIAlQcm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSB0cnVlOwotCS8qIGxh dGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCisJLyog aW50ZXJydXB0IHdpbGwgYmUgcmFpc2VkIGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy ICovCiB9CiAKIC8qCkBAIC03MTIsNyArNzEyLDcgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0JVRkZFUlBJTikpCiAJCUhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJbnRl cnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4pOwogCi0JU2V0TGF0 Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9t cS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMKaW5kZXggOTIzNWZjZDA4 ZWMuLjc2MDVhY2ZkMGM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1fbXEuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYwpAQCAtNCw3 ICs0LDcgQEAKICAqCSAgc2luZ2xlLXJlYWRlciwgc2luZ2xlLXdyaXRlciBzaGFyZWQgbWVt b3J5IG1lc3NhZ2UgcXVldWUKICAqCiAgKiBCb3RoIHRoZSBzZW5kZXIgYW5kIHRoZSByZWNl aXZlciBtdXN0IGhhdmUgYSBQR1BST0M7IHRoZWlyIHJlc3BlY3RpdmUKLSAqIHByb2Nlc3Mg bGF0Y2hlcyBhcmUgdXNlZCBmb3Igc3luY2hyb25pemF0aW9uLiAgT25seSB0aGUgc2VuZGVy IG1heSBzZW5kLAorICogcHJvY2VzcyBpbnRlcnJ1cHRzIGFyZSB1c2VkIGZvciBzeW5jaHJv bml6YXRpb24uICBPbmx5IHRoZSBzZW5kZXIgbWF5IHNlbmQsCiAgKiBhbmQgb25seSB0aGUg cmVjZWl2ZXIgbWF5IHJlY2VpdmUuICBUaGlzIGlzIGludGVuZGVkIHRvIGFsbG93IGEgdXNl cgogICogYmFja2VuZCB0byBjb21tdW5pY2F0ZSB3aXRoIHdvcmtlciBiYWNrZW5kcyB0aGF0 IGl0IGhhcyByZWdpc3RlcmVkLgogICoKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9iZ3dvcmtlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIK ICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNDQsMTAgKzQ1LDExIEBACiAgKgog ICogbXFfZGV0YWNoZWQgbmVlZHMgbm8gbG9ja2luZy4gIEl0IGNhbiBiZSBzZXQgYnkgZWl0 aGVyIHRoZSBzZW5kZXIgb3IgdGhlCiAgKiByZWNlaXZlciwgYnV0IG9ubHkgZXZlciBmcm9t IGZhbHNlIHRvIHRydWUsIHNvIHJlZHVuZGFudCB3cml0ZXMgZG9uJ3QKLSAqIG1hdHRlci4g IEl0IGlzIGltcG9ydGFudCB0aGF0IGlmIHdlIHNldCBtcV9kZXRhY2hlZCBhbmQgdGhlbiBz ZXQgdGhlCi0gKiBjb3VudGVycGFydHkncyBsYXRjaCwgdGhlIGNvdW50ZXJwYXJ0eSBtdXN0 IGJlIGNlcnRhaW4gdG8gc2VlIHRoZSBjaGFuZ2UKLSAqIGFmdGVyIHdha2luZyB1cC4gIFNp bmNlIFNldExhdGNoIGJlZ2lucyB3aXRoIGEgbWVtb3J5IGJhcnJpZXIgYW5kIFJlc2V0TGF0 Y2gKLSAqIGVuZHMgd2l0aCBvbmUsIHRoaXMgc2hvdWxkIGJlIE9LLgorICogbWF0dGVyLiAg SXQgaXMgaW1wb3J0YW50IHRoYXQgaWYgd2Ugc2V0IG1xX2RldGFjaGVkIGFuZCB0aGVuIHNl bmQgdGhlCisgKiBpbnRlcnJ1cHQgdG8gdGhlIGNvdW50ZXJwYXJ0eSwgdGhlIGNvdW50ZXJw YXJ0eSBtdXN0IGJlIGNlcnRhaW4gdG8gc2VlIHRoZQorICogY2hhbmdlIGFmdGVyIHdha2lu ZyB1cC4gIFNpbmNlIFNlbmRJbnRlcnJ1cHQgYmVnaW5zIHdpdGggYSBtZW1vcnkgYmFycmll cgorICogYW5kIENsZWFySW50ZXJydXB0IGVuZHMgd2l0aCBvbmUsIHRoaXMgc2hvdWxkIGJl IE9LLgorICogWFhYOiBObyBleHBsaWNpdCBtZW1vcnkgYmFycmllcnMgaW4gU2VuZEludHRl cnVwdC9DbGVhckludGVycnVwdCwgZG8gd2UgbmVlZCB0byBhZGQgc29tZT8KICAqCiAgKiBt cV9yaW5nX3NpemUgYW5kIG1xX3Jpbmdfb2Zmc2V0IG5ldmVyIGNoYW5nZSBhZnRlciBpbml0 aWFsaXphdGlvbiwgYW5kCiAgKiBjYW4gdGhlcmVmb3JlIGJlIHJlYWQgd2l0aG91dCB0aGUg bG9jay4KQEAgLTExMiw3ICsxMTQsNyBAQCBzdHJ1Y3Qgc2htX21xCiAgKiB5ZXQgdXBkYXRl ZCBpbiB0aGUgc2hhcmVkIG1lbW9yeS4gIFdlIHdpbGwgbm90IHVwZGF0ZSBpdCB1bnRpbCB0 aGUgd3JpdHRlbgogICogZGF0YSBpcyAxLzR0aCBvZiB0aGUgcmluZyBzaXplIG9yIHRoZSB0 dXBsZSBxdWV1ZSBpcyBmdWxsLiAgVGhpcyB3aWxsCiAgKiBwcmV2ZW50IGZyZXF1ZW50IENQ VSBjYWNoZSBtaXNzZXMsIGFuZCBpdCB3aWxsIGFsc28gYXZvaWQgZnJlcXVlbnQKLSAqIFNl dExhdGNoKCkgY2FsbHMsIHdoaWNoIGFyZSBxdWl0ZSBleHBlbnNpdmUuCisgKiBTZW5kSW50 ZXJydXB0KCkgY2FsbHMsIHdoaWNoIGFyZSBxdWl0ZSBleHBlbnNpdmUuCiAgKgogICogbXFo X3BhcnRpYWxfYnl0ZXMsIG1xaF9leHBlY3RlZF9ieXRlcywgYW5kIG1xaF9sZW5ndGhfd29y ZF9jb21wbGV0ZQogICogYXJlIHVzZWQgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIG5vbi1ibG9j a2luZyBvcGVyYXRpb25zLiAgV2hlbiB0aGUgY2FsbGVyCkBAIC0yMTQsNyArMjE2LDcgQEAg c2htX21xX3NldF9yZWNlaXZlcihzaG1fbXEgKm1xLCBQR1BST0MgKnByb2MpCiAJU3Bpbkxv Y2tSZWxlYXNlKCZtcS0+bXFfbXV0ZXgpOwogCiAJaWYgKHNlbmRlciAhPSBOVUxMKQotCQlT ZXRMYXRjaCgmc2VuZGVyLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhzZW5kZXIpKTsKIH0KIAog LyoKQEAgLTIzMiw3ICsyMzQsNyBAQCBzaG1fbXFfc2V0X3NlbmRlcihzaG1fbXEgKm1xLCBQ R1BST0MgKnByb2MpCiAJU3BpbkxvY2tSZWxlYXNlKCZtcS0+bXFfbXV0ZXgpOwogCiAJaWYg KHJlY2VpdmVyICE9IE5VTEwpCi0JCVNldExhdGNoKCZyZWNlaXZlci0+cHJvY0xhdGNoKTsK KwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZy b21QR1Byb2MocmVjZWl2ZXIpKTsKIH0KIAogLyoKQEAgLTM0MSwxNCArMzQzLDE0IEBAIHNo bV9tcV9zZW5kKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQg KmRhdGEsIGJvb2wgbm93YWl0LAogICogV3JpdGUgYSBtZXNzYWdlIGludG8gYSBzaGFyZWQg bWVzc2FnZSBxdWV1ZSwgZ2F0aGVyZWQgZnJvbSBtdWx0aXBsZQogICogYWRkcmVzc2VzLgog ICoKLSAqIFdoZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdhaXQgb24gb3VyIHByb2Nlc3Mg bGF0Y2ggd2hlbiB0aGUgcmluZyBidWZmZXIKLSAqIGZpbGxzIHVwLCBhbmQgdGhlbiBjb250 aW51ZSB3cml0aW5nIG9uY2UgdGhlIHJlY2VpdmVyIGhhcyBkcmFpbmVkIHNvbWUgZGF0YS4K LSAqIFRoZSBwcm9jZXNzIGxhdGNoIGlzIHJlc2V0IGFmdGVyIGVhY2ggd2FpdC4KKyAqIFdo ZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdhaXQgb24gb3VyIHByb2Nlc3MgaW50ZXJydXB0 IHdoZW4gdGhlIHJpbmcKKyAqIGJ1ZmZlciBmaWxscyB1cCwgYW5kIHRoZW4gY29udGludWUg d3JpdGluZyBvbmNlIHRoZSByZWNlaXZlciBoYXMgZHJhaW5lZAorICogc29tZSBkYXRhLiAg VGhlIHByb2Nlc3MgaW50ZXJydXB0IGlzIGNsZWFyZWQgYWZ0ZXIgZWFjaCB3YWl0LgogICoK LSAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2UgZG8gbm90IG1hbmlwdWxhdGUgdGhlIHN0YXRl IG9mIHRoZSBwcm9jZXNzIGxhdGNoOworICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBkbyBu b3QgbWFuaXB1bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3MgaW50ZXJydXB0OwogICog aW5zdGVhZCwgaWYgdGhlIGJ1ZmZlciBiZWNvbWVzIGZ1bGwsIHdlIHJldHVybiBTSE1fTVFf V09VTERfQkxPQ0suICBJbgogICogdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBjYWxs IHRoaXMgZnVuY3Rpb24gYWdhaW4sIHdpdGggdGhlIHNhbWUKLSAqIGFyZ3VtZW50cywgZWFj aCB0aW1lIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldC4gIChPbmNlIGJlZ3VuLCB0aGUgc2Vu ZGluZworICogYXJndW1lbnRzLCBlYWNoIHRpbWUgdGhlIHByb2Nlc3MgaW50ZXJydXB0IGlz IHNldC4gIChPbmNlIGJlZ3VuLCB0aGUgc2VuZGluZwogICogb2YgYSBtZXNzYWdlIGNhbm5v dCBiZSBhYm9ydGVkIGV4Y2VwdCBieSBkZXRhY2hpbmcgZnJvbSB0aGUgcXVldWU7IGNoYW5n aW5nCiAgKiB0aGUgbGVuZ3RoIG9yIHBheWxvYWQgd2lsbCBjb3JydXB0IHRoZSBxdWV1ZS4p CiAgKgpAQCAtNTM5LDcgKzU0MSw3IEBAIHNobV9tcV9zZW5kdihzaG1fbXFfaGFuZGxlICpt cWgsIHNobV9tcV9pb3ZlYyAqaW92LCBpbnQgaW92Y250LCBib29sIG5vd2FpdCwKIAl7CiAJ CXNobV9tcV9pbmNfYnl0ZXNfd3JpdHRlbihtcSwgbXFoLT5tcWhfc2VuZF9wZW5kaW5nKTsK IAkJaWYgKHJlY2VpdmVyICE9IE5VTEwpCi0JCQlTZXRMYXRjaCgmcmVjZWl2ZXItPnByb2NM YXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgR2V0 TnVtYmVyRnJvbVBHUHJvYyhyZWNlaXZlcikpOwogCQltcWgtPm1xaF9zZW5kX3BlbmRpbmcg PSAwOwogCX0KIApAQCAtNTU3LDE2ICs1NTksMTYgQEAgc2htX21xX3NlbmR2KHNobV9tcV9o YW5kbGUgKm1xaCwgc2htX21xX2lvdmVjICppb3YsIGludCBpb3ZjbnQsIGJvb2wgbm93YWl0 LAogICogd2hpbGUgc3RpbGwgYWxsb3dpbmcgbG9uZ2VyIG1lc3NhZ2VzLiAgSW4gZWl0aGVy IGNhc2UsIHRoZSByZXR1cm4gdmFsdWUKICAqIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIG5l eHQgcmVjZWl2ZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBxdWV1ZS4KICAqCi0g KiBXaGVuIG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGxhdGNo IHdoZW4gdGhlIHJpbmcgYnVmZmVyCi0gKiBpcyBlbXB0eSBhbmQgd2UgaGF2ZSBub3QgeWV0 IHJlY2VpdmVkIGEgZnVsbCBtZXNzYWdlLiAgVGhlIHNlbmRlciB3aWxsCi0gKiBzZXQgb3Vy IHByb2Nlc3MgbGF0Y2ggYWZ0ZXIgbW9yZSBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIGFuZCB3 ZSdsbCByZXN1bWUKLSAqIHByb2Nlc3NpbmcuICBFYWNoIGNhbGwgd2lsbCB0aGVyZWZvcmUg cmV0dXJuIGEgY29tcGxldGUgbWVzc2FnZQorICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2Un bGwgd2FpdCBvbiBvdXIgcHJvY2VzcyBpbnRlcnJ1cHQgd2hlbiB0aGUgcmluZworICogYnVm ZmVyIGlzIGVtcHR5IGFuZCB3ZSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYSBmdWxsIG1lc3Nh Z2UuICBUaGUgc2VuZGVyCisgKiB3aWxsIHNldCBvdXIgcHJvY2VzcyBpbnRlcnJ1cHQgYWZ0 ZXIgbW9yZSBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIGFuZCB3ZSdsbAorICogcmVzdW1lIHBy b2Nlc3NpbmcuICBFYWNoIGNhbGwgd2lsbCB0aGVyZWZvcmUgcmV0dXJuIGEgY29tcGxldGUg bWVzc2FnZQogICogKHVubGVzcyB0aGUgc2VuZGVyIGRldGFjaGVzIHRoZSBxdWV1ZSkuCiAg KgotICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBkbyBub3QgbWFuaXB1bGF0ZSB0aGUgc3Rh dGUgb2YgdGhlIHByb2Nlc3MgbGF0Y2g7Ci0gKiBpbnN0ZWFkLCB3aGVuZXZlciB0aGUgYnVm ZmVyIGlzIGVtcHR5IGFuZCB3ZSBuZWVkIHRvIHJlYWQgZnJvbSBpdCwgd2UKLSAqIHJldHVy biBTSE1fTVFfV09VTERfQkxPQ0suICBJbiB0aGlzIGNhc2UsIHRoZSBjYWxsZXIgc2hvdWxk IGNhbGwgdGhpcwotICogZnVuY3Rpb24gYWdhaW4gYWZ0ZXIgdGhlIHByb2Nlc3MgbGF0Y2gg aGFzIGJlZW4gc2V0LgorICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBkbyBub3QgbWFuaXB1 bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3MKKyAqIGludGVycnVwdDsgaW5zdGVhZCwg d2hlbmV2ZXIgdGhlIGJ1ZmZlciBpcyBlbXB0eSBhbmQgd2UgbmVlZCB0byByZWFkIGZyb20K KyAqIGl0LCB3ZSByZXR1cm4gU0hNX01RX1dPVUxEX0JMT0NLLiAgSW4gdGhpcyBjYXNlLCB0 aGUgY2FsbGVyIHNob3VsZCBjYWxsCisgKiB0aGlzIGZ1bmN0aW9uIGFnYWluIGFmdGVyIHRo ZSBwcm9jZXNzIGludGVycnVwdCBoYXMgYmVlbiBzZXQuCiAgKi8KIHNobV9tcV9yZXN1bHQK IHNobV9tcV9yZWNlaXZlKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSAqbmJ5dGVzcCwgdm9p ZCAqKmRhdGFwLCBib29sIG5vd2FpdCkKQEAgLTYxOSw4ICs2MjEsOCBAQCBzaG1fbXFfcmVj ZWl2ZShzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgKm5ieXRlc3AsIHZvaWQgKipkYXRhcCwg Ym9vbCBub3dhaXQpCiAJICogSWYgd2UndmUgY29uc3VtZWQgYW4gYW1vdW50IG9mIGRhdGEg Z3JlYXRlciB0aGFuIDEvNHRoIG9mIHRoZSByaW5nCiAJICogc2l6ZSwgbWFyayBpdCBjb25z dW1lZCBpbiBzaGFyZWQgbWVtb3J5LiAgV2UgdHJ5IHRvIGF2b2lkIGRvaW5nIHRoaXMKIAkg KiB1bm5lY2Vzc2FyaWx5IHdoZW4gb25seSBhIHNtYWxsIGFtb3VudCBvZiBkYXRhIGhhcyBi ZWVuIGNvbnN1bWVkLAotCSAqIGJlY2F1c2UgU2V0TGF0Y2goKSBpcyBmYWlybHkgZXhwZW5z aXZlIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRvIGl0IHRvbwotCSAqIG9mdGVuLgorCSAqIGJl Y2F1c2UgU2VuZEludGVycnVwdCgpIGlzIGZhaXJseSBleHBlbnNpdmUgYW5kIHdlIGRvbid0 IHdhbnQgdG8gZG8gaXQKKwkgKiB0b28gb2Z0ZW4uCiAJICovCiAJaWYgKG1xaC0+bXFoX2Nv bnN1bWVfcGVuZGluZyA+IG1xLT5tcV9yaW5nX3NpemUgLyA0KQogCXsKQEAgLTg5NSw3ICs4 OTcsNyBAQCBzaG1fbXFfZGV0YWNoX2ludGVybmFsKHNobV9tcSAqbXEpCiAJU3BpbkxvY2tS ZWxlYXNlKCZtcS0+bXFfbXV0ZXgpOwogCiAJaWYgKHZpY3RpbSAhPSBOVUxMKQotCQlTZXRM YXRjaCgmdmljdGltLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh2aWN0aW0pKTsKIH0KIAogLyoK QEAgLTk5Myw3ICs5OTUsNyBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICpt cWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJICogVGhlcmVmb3JlLCB3 ZSBjYW4gcmVhZCBpdCB3aXRob3V0IGFjcXVpcmluZyB0aGUgc3BpbmxvY2suCiAJCQkgKi8K IAkJCUFzc2VydChtcWgtPm1xaF9jb3VudGVycGFydHlfYXR0YWNoZWQpOwotCQkJU2V0TGF0 Y2goJm1xLT5tcV9yZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKG1xLT5tcV9yZWNl aXZlcikpOwogCiAJCQkvKgogCQkJICogV2UgaGF2ZSBqdXN0IHVwZGF0ZWQgdGhlIG1xaF9z ZW5kX3BlbmRpbmcgYnl0ZXMgaW4gdGhlIHNoYXJlZApAQCAtMTAwMSw3ICsxMDAzLDcgQEAg c2htX21xX3NlbmRfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29u c3Qgdm9pZCAqZGF0YSwKIAkJCSAqLwogCQkJbXFoLT5tcWhfc2VuZF9wZW5kaW5nID0gMDsK IAotCQkJLyogU2tpcCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlmIG5vd2FpdCA9IHRy dWUuICovCisJCQkvKiBTa2lwIHdhaXRpbmcgaWYgbm93YWl0ID0gdHJ1ZS4gKi8KIAkJCWlm IChub3dhaXQpCiAJCQl7CiAJCQkJKmJ5dGVzX3dyaXR0ZW4gPSBzZW50OwpAQCAtMTAwOSwx NyArMTAxMSwxNyBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNp emUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJfQogCiAJCQkvKgotCQkJICogV2Fp dCBmb3Igb3VyIGxhdGNoIHRvIGJlIHNldC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZv ciBzb21lCisJCQkgKiBXYWl0IGZvciB0aGUgaW50ZXJydXB0LiAgSXQgbWlnaHQgYWxyZWFk eSBiZSBzZXQgZm9yIHNvbWUKIAkJCSAqIHVucmVsYXRlZCByZWFzb24sIGJ1dCB0aGF0J2xs IGp1c3QgcmVzdWx0IGluIG9uZSBleHRyYSB0cmlwCi0JCQkgKiB0aHJvdWdoIHRoZSBsb29w LiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGxhdGNoCi0JCQkgKiBh dCB0b3Agb2YgbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0IGxhdGNoIGlz IG11Y2gKLQkJCSAqIGNoZWFwZXIgdGhhbiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVuIHJl c2V0LgorCQkJICogdGhyb3VnaCB0aGUgbG9vcC4gIEl0J3Mgd29ydGggaXQgdG8gYXZvaWQg Y2xlYXJpbmcgdGhlCisJCQkgKiBpbnRlcnJ1cHQgYXQgdG9wIG9mIGxvb3AsIGJlY2F1c2Ug c2V0dGluZyBhbiBhbHJlYWR5LXNldAorCQkJICogaW50ZXJydXB0IGlzIG11Y2ggY2hlYXBl ciB0aGFuIHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gcmVzZXQuCiAJCQkgKi8KLQkJCSh2 b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMCwKLQkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1NFTkQpOworCQkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJCSBXQUlUX0VW RU5UX01FU1NBR0VfUVVFVUVfU0VORCk7CiAKLQkJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3 ZSBkb24ndCBzcGluLiAqLwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCS8qIENsZWFy IHRoZSBpbnRlcnJ1cHQgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJCS8qIEFuIGludGVycnVwdCBtYXkg aGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwpAQCAtMTA1NCw3ICsxMDU2LDcgQEAgc2htX21xX3NlbmRfYnl0ZXMo c2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAog CQkJLyoKIAkJCSAqIEZvciBlZmZpY2llbmN5LCB3ZSBkb24ndCB1cGRhdGUgdGhlIGJ5dGVz IHdyaXR0ZW4gaW4gdGhlIHNoYXJlZAotCQkJICogbWVtb3J5IGFuZCBhbHNvIGRvbid0IHNl dCB0aGUgcmVhZGVyJ3MgbGF0Y2ggaGVyZS4gIFJlZmVyIHRvCisJCQkgKiBtZW1vcnkgYW5k IGFsc28gZG9uJ3Qgc2VuZCB0aGUgcmVhZGVyIGludGVycnVwdCBoZXJlLiAgUmVmZXIgdG8K IAkJCSAqIHRoZSBjb21tZW50cyBhdG9wIHRoZSBzaG1fbXFfaGFuZGxlIHN0cnVjdHVyZSBm b3IgbW9yZQogCQkJICogaW5mb3JtYXRpb24uCiAJCQkgKi8KQEAgLTExNTAsMjIgKzExNTIs MjIgQEAgc2htX21xX3JlY2VpdmVfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIGJ5 dGVzX25lZWRlZCwgYm9vbCBub3dhaXQsCiAJCQltcWgtPm1xaF9jb25zdW1lX3BlbmRpbmcg PSAwOwogCQl9CiAKLQkJLyogU2tpcCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlmIG5v d2FpdCA9IHRydWUuICovCisJCS8qIFNraXAgd2FpdGluZyBpZiBub3dhaXQgPSB0cnVlLiAq LwogCQlpZiAobm93YWl0KQogCQkJcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSzsKIAogCQkv KgotCQkgKiBXYWl0IGZvciBvdXIgbGF0Y2ggdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxyZWFk eSBiZSBzZXQgZm9yIHNvbWUKKwkJICogV2FpdCBmb3IgdGhlIGludGVycnVwdCB0byBiZSBz ZXQuICBJdCBtaWdodCBhbHJlYWR5IGJlIHNldCBmb3Igc29tZQogCQkgKiB1bnJlbGF0ZWQg cmVhc29uLCBidXQgdGhhdCdsbCBqdXN0IHJlc3VsdCBpbiBvbmUgZXh0cmEgdHJpcCB0aHJv dWdoCi0JCSAqIHRoZSBsb29wLiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRpbmcg dGhlIGxhdGNoIGF0IHRvcCBvZgotCQkgKiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxy ZWFkeS1zZXQgbGF0Y2ggaXMgbXVjaCBjaGVhcGVyIHRoYW4KLQkJICogc2V0dGluZyBvbmUg dGhhdCBoYXMgYmVlbiByZXNldC4KKwkJICogdGhlIGxvb3AuICBJdCdzIHdvcnRoIGl0IHRv IGF2b2lkIGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQgYXQgdG9wIG9mCisJCSAqIGxvb3AsIGJl Y2F1c2Ugc2V0dGluZyBhbiBhbHJlYWR5LXNldCBpbnRlcnJ1cHQgaXMgbXVjaCBjaGVhcGVy IHRoYW4KKwkJICogc2V0dGluZyBvbmUgdGhhdCBoYXMgYmVlbiBjbGVhcmVkLgogCQkgKi8K LQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9SRUNFSVZF KTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVAsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJIFdB SVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9SRUNFSVZFKTsKIAotCQkvKiBSZXNldCB0aGUgbGF0 Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyog Q2xlYXIgdGhlIGludGVycnVwdCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCS8qIEFuIGludGVycnVwdCBt YXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CkBAIC0xMjUwLDExICsxMjUyLDExIEBAIHNobV9tcV93YWl0X2lu dGVybmFsKHNobV9tcSAqbXEsIFBHUFJPQyAqKnB0ciwgQmFja2dyb3VuZFdvcmtlckhhbmRs ZSAqaGFuZGxlKQogCQl9CiAKIAkJLyogV2FpdCB0byBiZSBzaWduYWxlZC4gKi8KLQkJKHZv aWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RF QVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9JTlRFUk5BTCk7CisJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCSBXQUlUX0VW RU5UX01FU1NBR0VfUVVFVUVfSU5URVJOQUwpOwogCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBz byB3ZSBkb24ndCBzcGluLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKiBDbGVh ciB0aGUgaW50ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4uICovCisJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyogQW4gaW50ZXJydXB0IG1heSBo YXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKQEAgLTEyOTMsNyArMTI5NSw3IEBAIHNobV9tcV9pbmNfYnl0ZXNfcmVh ZChzaG1fbXEgKm1xLCBTaXplIG4pCiAJICovCiAJc2VuZGVyID0gbXEtPm1xX3NlbmRlcjsK IAlBc3NlcnQoc2VuZGVyICE9IE5VTEwpOwotCVNldExhdGNoKCZzZW5kZXItPnByb2NMYXRj aCk7CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJl ckZyb21QR1Byb2Moc2VuZGVyKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c2lnbmFsZnVuY3MuYwppbmRleCBhYTcyOWEzNmUzOS4uYTM1NGE3ZDA2NTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwpAQCAtMjAsNiArMjAsNyBAQAogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvc3lzbG9nZ2VyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKQEAgLTIwNCwxMiArMjA1LDEy IEBAIHBnX3dhaXRfdW50aWxfdGVybWluYXRpb24oaW50IHBpZCwgaW50NjQgdGltZW91dCkK IAkJLyogUHJvY2VzcyBpbnRlcnJ1cHRzLCBpZiBhbnksIGJlZm9yZSB3YWl0aW5nICovCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJIHdhaXR0aW1lLAotCQkJCQkJIFdBSVRfRVZFTlRfQkFDS0VORF9URVJN SU5BVElPTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgd2FpdHRpbWUsCisJCQkJCQkJIFdBSVRfRVZFTlRf QkFDS0VORF9URVJNSU5BVElPTik7CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQlyZW1haW5pbmd0 aW1lIC09IHdhaXR0aW1lOwogCX0gd2hpbGUgKHJlbWFpbmluZ3RpbWUgPiAwKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2ludmFsLmMKaW5kZXggZDliMTZmODRkMTkuLmIxNTdiMWE5OTU4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYwpAQCAtMTYsNyArMTYsNyBAQAogCiAjaW5j bHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRl ICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CiAKQEAgLTMxLDkgKzMxLDkgQEAgdWludDY0CQlTaGFyZWRJbnZhbGlkTWVzc2FnZUNvdW50 ZXI7CiAgKiB0aHJvdWdoIGEgY2FjaGUgcmVzZXQgZXhlcmNpc2UuICBUaGlzIGlzIGRvbmUg Ynkgc2VuZGluZwogICogUFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVCB0byBhbnkgYmFja2Vu ZCB0aGF0IGdldHMgdG9vIGZhciBiZWhpbmQuCiAgKgotICogVGhlIHNpZ25hbCBoYW5kbGVy IHdpbGwgc2V0IGFuIGludGVycnVwdCBwZW5kaW5nIGZsYWcgYW5kIHdpbGwgc2V0IHRoZQot ICogcHJvY2Vzc2VzIGxhdGNoLiBXaGVuZXZlciBzdGFydGluZyB0byByZWFkIGZyb20gdGhl IGNsaWVudCwgb3Igd2hlbgotICogaW50ZXJydXB0ZWQgd2hpbGUgZG9pbmcgc28sIFByb2Nl c3NDbGllbnRSZWFkSW50ZXJydXB0KCkgd2lsbCBjYWxsCisgKiBUaGUgc2lnbmFsIGhhbmRs ZXIgd2lsbCBzZXQgYW4gaW50ZXJydXB0IHBlbmRpbmcgZmxhZyBhbmQgcmFpc2UgdGhlCisg KiBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAuIFdoZW5ldmVyIHN0YXJ0aW5nIHRvIHJlYWQg ZnJvbSB0aGUgY2xpZW50LCBvcgorICogd2hlbiBpbnRlcnJ1cHRlZCB3aGlsZSBkb2luZyBz bywgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSB3aWxsIGNhbGwKICAqIFByb2Nlc3ND YXRjaHVwRXZlbnQoKS4KICAqLwogdm9sYXRpbGUgc2lnX2F0b21pY190IGNhdGNodXBJbnRl cnJ1cHRQZW5kaW5nID0gZmFsc2U7CkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVjZWl2ZVNoYXJl ZEludmFsaWRNZXNzYWdlcyh2b2lkICgqaW52YWxGdW5jdGlvbikgKFNoYXJlZEludmFsaWRh dGlvbk1lc3NhZ2UgKm0KICAqCiAgKiBXZSB1c2VkIHRvIGRpcmVjdGx5IGNhbGwgUHJvY2Vz c0NhdGNodXBFdmVudCBkaXJlY3RseSB3aGVuIGlkbGUuIFRoZXNlIGRheXMKICAqIHdlIGp1 c3Qgc2V0IGEgZmxhZyB0byBkbyBpdCBsYXRlciBhbmQgbm90aWZ5IHRoZSBwcm9jZXNzIG9m IHRoYXQgZmFjdCBieQotICogc2V0dGluZyB0aGUgcHJvY2VzcydzIGxhdGNoLgorICogcmFp c2luZyBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAuCiAgKi8KIHZvaWQKIEhhbmRsZUNhdGNo dXBJbnRlcnJ1cHQodm9pZCkKQEAgLTE2MSw3ICsxNjEsNyBAQCBIYW5kbGVDYXRjaHVwSW50 ZXJydXB0KHZvaWQpCiAJY2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSB0cnVlOwogCiAJLyog bWFrZSBzdXJlIHRoZSBldmVudCBpcyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAqLwotCVNl dExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z dGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5kZXggMjUy NjdmMGY4NWQuLmU4ZTRkNzMxNDIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFs YWR0LmgiCkBAIC01OTQsNyArNTk1LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRo RGF0YWJhc2UoT2lkIGRiaWQpCiAgKiBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2Nr IGlzIGNhbGxlZCBmcm9tIFByb2NTbGVlcCgpCiAgKiB0byByZXNvbHZlIGNvbmZsaWN0cyB3 aXRoIG90aGVyIGJhY2tlbmRzIGhvbGRpbmcgcmVsYXRpb24gbG9ja3MuCiAgKgotICogVGhl IFdhaXRMYXRjaCBzbGVlcCBub3JtYWxseSBkb25lIGluIFByb2NTbGVlcCgpCisgKiBUaGUg V2FpdEludGVycnVwdCBzbGVlcCBub3JtYWxseSBkb25lIGluIFByb2NTbGVlcCgpCiAgKiAo d2hlbiBub3QgSW5Ib3RTdGFuZGJ5KSBpcyBwZXJmb3JtZWQgaGVyZSwgZm9yIGNvZGUgY2xh cml0eS4KICAqCiAgKiBXZSBlaXRoZXIgcmVzb2x2ZSBjb25mbGljdHMgaW1tZWRpYXRlbHkg b3Igc2V0IGEgdGltZW91dCB0byB3YWtlIHVzIGF0CkBAIC02OTYsNyArNjk3LDEwIEBAIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvY2soTE9DS1RBRyBsb2NrdGFnLCBib29sIGxv Z2dpbmdfY29uZmxpY3QpCiAJfQogCiAJLyogV2FpdCB0byBiZSBzaWduYWxlZCBieSB0aGUg cmVsZWFzZSBvZiB0aGUgUmVsYXRpb24gTG9jayAqLwotCVByb2NXYWl0Rm9yU2lnbmFsKFBH X1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwlXYWl0SW50ZXJydXB0KDEg PDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAorCQkJCSAgUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5 cGUpOworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CisJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCS8qCiAJICogRXhpdCBpZiBsdGltZSBpcyByZWFj aGVkLiBUaGVuIGFsbCB0aGUgYmFja2VuZHMgaG9sZGluZyBjb25mbGljdGluZwpAQCAtNzQ1 LDcgKzc0OSwxMCBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKExPQ0tUQUcg bG9ja3RhZywgYm9vbCBsb2dnaW5nX2NvbmZsaWN0KQogCQkgKiB1bnRpbCB0aGUgcmVsYXRp b24gbG9ja3MgYXJlIHJlbGVhc2VkIG9yIGx0aW1lIGlzIHJlYWNoZWQuCiAJCSAqLwogCQln b3Rfc3RhbmRieV9kZWFkbG9ja190aW1lb3V0ID0gZmFsc2U7Ci0JCVByb2NXYWl0Rm9yU2ln bmFsKFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwkJV2FpdEludGVy cnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJICBQR19XQUlUX0xPQ0sgfCBsb2NrdGFnLmxv Y2t0YWdfdHlwZSk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJfQogCiBjbGVhbnVwOgpAQCAtODM3 LDkgKzg0NCwxNCBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4odm9p ZCkKIAkgKiBXZSBhc3N1bWUgdGhhdCBvbmx5IFVucGluQnVmZmVyKCkgYW5kIHRoZSB0aW1l b3V0IHJlcXVlc3RzIGVzdGFibGlzaGVkCiAJICogYWJvdmUgY2FuIHdha2UgdXMgdXAgaGVy ZS4gV2FrZXVwUmVjb3ZlcnkoKSBjYWxsZWQgYnkgd2FscmVjZWl2ZXIgb3IKIAkgKiBTSUdI VVAgc2lnbmFsIGhhbmRsZXIsIGV0YyBjYW5ub3QgZG8gdGhhdCBiZWNhdXNlIGl0IHVzZXMg dGhlIGRpZmZlcmVudAotCSAqIGxhdGNoIGZyb20gdGhhdCBQcm9jV2FpdEZvclNpZ25hbCgp IHdhaXRzIG9uLgorCSAqIGludGVycnVwdCBmbGFnLiBGSVhNRTogc2VlbXMgbGlrZSBhIHNo YWt5IGFzc3VtcHRpb24uIFdha2V1cFJlY292ZXJ5KCkKKwkgKiBpbmRlZWQgdXNlcyBhIGRp ZmZlcmVudCBpbnRlcnJ1cHQgZmxhZyAoZGlmZmVyZW50IGxhdGNoIGVhcmxpZXIpLCBidXQK KwkgKiB0aGUgc2lnbmFsIGhhbmRsZXI/PwogCSAqLwotCVByb2NXYWl0Rm9yU2lnbmFsKFdB SVRfRVZFTlRfQlVGRkVSX1BJTik7CisJV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwK KwkJCQkgIFdBSVRfRVZFTlRfQlVGRkVSX1BJTik7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQKTsKKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJaWYg KGdvdF9zdGFuZGJ5X2RlbGF5X3RpbWVvdXQpCiAJCVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0 aEJ1ZmZlclBpbihQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTik7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKc2ltaWxhcml0eSBpbmRleCA3NyUKcmVuYW1l IGZyb20gc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYwpyZW5hbWUgdG8gc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKaW5kZXggNjA4ZWI2NmFiZWQuLjFi YmJhMDRlMzQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jCkBAIC0xLDE3 ICsxLDMyIEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCi0gKiBsYXRjaC5jCi0gKgkg IFJvdXRpbmVzIGZvciBpbnRlci1wcm9jZXNzIGxhdGNoZXMKKyAqIHdhaXRldmVudHNldC5j CisgKgkgIHBwb2xsKCkvcHNlbGVjdCgpIGxpa2UgYWJzdHJhY3Rpb24KICAqCi0gKiBUaGUg cG9sbCgpIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIHNvLWNhbGxlZCBzZWxmLXBpcGUgdHJp Y2sgdG8gb3ZlcmNvbWUgdGhlCi0gKiByYWNlIGNvbmRpdGlvbiBpbnZvbHZlZCB3aXRoIHBv bGwoKSBhbmQgc2V0dGluZyBhIGdsb2JhbCBmbGFnIGluIHRoZSBzaWduYWwKLSAqIGhhbmRs ZXIuIFdoZW4gYSBsYXRjaCBpcyBzZXQgYW5kIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgd2Fp dGluZyBmb3IgaXQsIHRoZQotICogc2lnbmFsIGhhbmRsZXIgd2FrZXMgdXAgdGhlIHBvbGwo KSBpbiBXYWl0TGF0Y2ggYnkgd3JpdGluZyBhIGJ5dGUgdG8gYSBwaXBlLgotICogQSBzaWdu YWwgYnkgaXRzZWxmIGRvZXNuJ3QgaW50ZXJydXB0IHBvbGwoKSBvbiBhbGwgcGxhdGZvcm1z LCBhbmQgZXZlbiBvbgotICogcGxhdGZvcm1zIHdoZXJlIGl0IGRvZXMsIGEgc2lnbmFsIHRo YXQgYXJyaXZlcyBqdXN0IGJlZm9yZSB0aGUgcG9sbCgpIGNhbGwKLSAqIGRvZXMgbm90IHBy ZXZlbnQgcG9sbCgpIGZyb20gZW50ZXJpbmcgc2xlZXAuIEFuIGluY29taW5nIGJ5dGUgb24g YSBwaXBlCi0gKiBob3dldmVyIHJlbGlhYmx5IGludGVycnVwdHMgdGhlIHNsZWVwLCBhbmQg Y2F1c2VzIHBvbGwoKSB0byByZXR1cm4KLSAqIGltbWVkaWF0ZWx5IGV2ZW4gaWYgdGhlIHNp Z25hbCBhcnJpdmVzIGJlZm9yZSBwb2xsKCkgYmVnaW5zLgorICogV2FpdEV2ZW50cyBhcmUg YW4gYWJzdHJhY3Rpb24gZm9yIHdhaXRpbmcgZm9yIG9uZSBvciBtb3JlIGV2ZW50cyBhdCBh IHRpbWUuCisgKiBUaGUgd2FpdGluZyBjYW4gYmUgZG9uZSBpbiBhIHJhY2UgZnJlZSBmYXNo aW9uLCBzaW1pbGFyIHBwb2xsKCkgb3IKKyAqIHBzZWxlY3QoKSAoYXMgb3Bwb3NlZCB0byBw bGFpbiBwb2xsKCkvc2VsZWN0KCkpLgorICoKKyAqIFlvdSBjYW4gd2FpdCBmb3I6CisgKiAt IGFuIGludGVycnVwdCBmcm9tIGFub3RoZXIgcHJvY2VzcyBvciBmcm9tIHNpZ25hbCBoYW5k bGVyIGluIHRoZSBzYW1lCisgKiAgIHByb2Nlc3MgKFdMX0lOVEVSUlVQVCkKKyAqIC0gZGF0 YSB0byBiZWNvbWUgcmVhZGFibGUgb3Igd3JpdGVhYmxlIG9uIGEgc29ja2V0IChXTF9TT0NL RVRfKikKKyAqIC0gcG9zdG1hc3RlciBkZWF0aCAoV0xfUE9TVE1BU1RFUl9ERUFUSCBvciBX TF9FWElUX09OX1BNX0RFQVRIKQorICogLSB0aW1lb3V0IChXTF9USU1FT1VUKQorICoKKyAq IEltcGxlbWVudGF0aW9uCisgKiAtLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoZSBwb2xsKCkg aW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc28tY2FsbGVkIHNlbGYtcGlwZSB0cmljayB0byBv dmVyY29tZQorICogdGhlIHJhY2UgY29uZGl0aW9uIGludm9sdmVkIHdpdGggcG9sbCgpIGFu ZCBzZXR0aW5nIGEgZ2xvYmFsIGZsYWcgaW4gdGhlCisgKiBzaWduYWwgaGFuZGxlci4gV2hl biBhbiBpbnRlcnJ1cHQgaXMgcmVjZWl2ZWQgYW5kIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMK KyAqIHdhaXRpbmcgZm9yIGl0LCB0aGUgc2lnbmFsIGhhbmRsZXIgd2FrZXMgdXAgdGhlIHBv bGwoKSBpbiBXYWl0SW50ZXJydXB0IGJ5CisgKiB3cml0aW5nIGEgYnl0ZSB0byBhIHBpcGUu ICBBIHNpZ25hbCBieSBpdHNlbGYgZG9lc24ndCBpbnRlcnJ1cHQgcG9sbCgpIG9uCisgKiBh bGwgcGxhdGZvcm1zLCBhbmQgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQgZG9lcywgYSBz aWduYWwgdGhhdCBhcnJpdmVzCisgKiBqdXN0IGJlZm9yZSB0aGUgcG9sbCgpIGNhbGwgZG9l cyBub3QgcHJldmVudCBwb2xsKCkgZnJvbSBlbnRlcmluZyBzbGVlcC4gQW4KKyAqIGluY29t aW5nIGJ5dGUgb24gYSBwaXBlIGhvd2V2ZXIgcmVsaWFibHkgaW50ZXJydXB0cyB0aGUgc2xl ZXAsIGFuZCBjYXVzZXMKKyAqIHBvbGwoKSB0byByZXR1cm4gaW1tZWRpYXRlbHkgZXZlbiBp ZiB0aGUgc2lnbmFsIGFycml2ZXMgYmVmb3JlIHBvbGwoKQorICogYmVnaW5zLgogICoKICAq IFRoZSBlcG9sbCgpIGltcGxlbWVudGF0aW9uIG92ZXJjb21lcyB0aGUgcmFjZSB3aXRoIGEg ZGlmZmVyZW50IHRlY2huaXF1ZTogaXQKICAqIGtlZXBzIFNJR1VSRyBibG9ja2VkIGFuZCBj b25zdW1lcyBmcm9tIGEgc2lnbmFsZmQoKSBkZXNjcmlwdG9yIGluc3RlYWQuICBXZQpAQCAt MjcsNyArNDIsNyBAQAogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRz IG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKICAqCiAgKiBJREVOVElGSUNBVElP TgotICoJICBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jCisgKgkgIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jCiAgKgogICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKi8KQEAgLTU3LDkgKzcyLDExIEBACiAjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5z dHJfdGltZS5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgogI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKIApAQCAtOTgsNyArMTE1 LDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLS8qIHR5cGVkZWYgaW4gbGF0Y2guaCAqLworLyog dHlwZWRlZiBpbiB3YWl0ZXZlbnRzZXQuaCAqLwogc3RydWN0IFdhaXRFdmVudFNldAogewog CVJlc291cmNlT3duZXIgb3duZXI7CkBAIC0xMTMsMTMgKzEzMCwxMyBAQCBzdHJ1Y3QgV2Fp dEV2ZW50U2V0CiAJV2FpdEV2ZW50ICAqZXZlbnRzOwogCiAJLyoKLQkgKiBJZiBXTF9MQVRD SF9TRVQgaXMgc3BlY2lmaWVkIGluIGFueSB3YWl0IGV2ZW50LCBsYXRjaCBpcyBhIHBvaW50 ZXIgdG8KLQkgKiBzYWlkIGxhdGNoLCBhbmQgbGF0Y2hfcG9zIHRoZSBvZmZzZXQgaW4gdGhl IC0+ZXZlbnRzIGFycmF5LiBUaGlzIGlzCi0JICogdXNlZnVsIGJlY2F1c2Ugd2UgY2hlY2sg dGhlIHN0YXRlIG9mIHRoZSBsYXRjaCBiZWZvcmUgcGVyZm9ybWluZyBkb2luZwotCSAqIHN5 c2NhbGxzIHJlbGF0ZWQgdG8gd2FpdGluZy4KKwkgKiBJZiBXTF9JTlRFUlJVUFQgaXMgc3Bl Y2lmaWVkIGluIGFueSB3YWl0IGV2ZW50LCBpbnRlcnJ1cHRNYXNrIGlzIHRoZQorCSAqIGlu dGVycnVwdHMgdG8gd2FpdCBmb3IsIGFuZCBpbnRlcnJ1cHRfcG9zIHRoZSBvZmZzZXQgaW4g dGhlIC0+ZXZlbnRzCisJICogYXJyYXkuIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2Ugd2UgY2hl Y2sgdGhlIHN0YXRlIG9mIHBlbmRpbmcgaW50ZXJydXB0cworCSAqIGJlZm9yZSBwZXJmb3Jt aW5nIGRvaW5nIHN5c2NhbGxzIHJlbGF0ZWQgdG8gd2FpdGluZy4KIAkgKi8KLQlMYXRjaAkg ICAqbGF0Y2g7Ci0JaW50CQkJbGF0Y2hfcG9zOworCXVpbnQzMgkJaW50ZXJydXB0X21hc2s7 CisJaW50CQkJaW50ZXJydXB0X3BvczsKIAogCS8qCiAJICogV0xfRVhJVF9PTl9QTV9ERUFU SCBpcyBjb252ZXJ0ZWQgdG8gV0xfUE9TVE1BU1RFUl9ERUFUSCwgYnV0IHRoaXMgZmxhZwpA QCAtMTUxLDE0ICsxNjgsMTQgQEAgc3RydWN0IFdhaXRFdmVudFNldAogI2VuZGlmCiB9Owog Ci0vKiBBIGNvbW1vbiBXYWl0RXZlbnRTZXQgdXNlZCB0byBpbXBsZW1lbnQgV2FpdExhdGNo KCkgKi8KLXN0YXRpYyBXYWl0RXZlbnRTZXQgKkxhdGNoV2FpdFNldDsKKy8qIEEgY29tbW9u IFdhaXRFdmVudFNldCB1c2VkIHRvIGltcGxlbWVudCBXYWl0SW50ZXJydXB0KCkgKi8KK3N0 YXRpYyBXYWl0RXZlbnRTZXQgKkludGVycnVwdFdhaXRTZXQ7CiAKLS8qIFRoZSBwb3NpdGlv biBvZiB0aGUgbGF0Y2ggaW4gTGF0Y2hXYWl0U2V0LiAqLwotI2RlZmluZSBMYXRjaFdhaXRT ZXRMYXRjaFBvcyAwCisvKiBUaGUgcG9zaXRpb24gb2YgdGhlIGludGVycnVwdCBpbiBJbnRl cnJ1cHRXYWl0U2V0LiAqLworI2RlZmluZSBJbnRlcnJ1cHRXYWl0U2V0SW50ZXJydXB0UG9z IDAKIAogI2lmbmRlZiBXSU4zMgotLyogQXJlIHdlIGN1cnJlbnRseSBpbiBXYWl0TGF0Y2g/ IFRoZSBzaWduYWwgaGFuZGxlciB3b3VsZCBsaWtlIHRvIGtub3cuICovCisvKiBBcmUgd2Ug Y3VycmVudGx5IGluIFdhaXRJbnRlcnJ1cHQ/IFRoZSBzaWduYWwgaGFuZGxlciB3b3VsZCBs aWtlIHRvIGtub3cuICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHdhaXRpbmcg PSBmYWxzZTsKICNlbmRpZgogCkBAIC0xNzQsOSArMTkxLDE2IEBAIHN0YXRpYyBpbnQJc2Vs ZnBpcGVfd3JpdGVmZCA9IC0xOwogCiAvKiBQcm9jZXNzIG93bmluZyB0aGUgc2VsZi1waXBl IC0tLSBuZWVkZWQgZm9yIGNoZWNraW5nIHB1cnBvc2VzICovCiBzdGF0aWMgaW50CXNlbGZw aXBlX293bmVyX3BpZCA9IDA7CisjZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCitz dGF0aWMgSEFORExFIExvY2FsSW50ZXJydXB0V2FrZXVwRXZlbnQ7CisjZW5kaWYKIAogLyog UHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzICovCi1zdGF0aWMgdm9pZCBsYXRjaF9zaWd1 cmdfaGFuZGxlcihTSUdOQUxfQVJHUyk7CisKKyNpZmRlZiBXQUlUX1VTRV9TRUxGX1BJUEUK K3N0YXRpYyB2b2lkIGludGVycnVwdF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBz dGF0aWMgdm9pZCBzZW5kU2VsZlBpcGVCeXRlKHZvaWQpOwogI2VuZGlmCiAKQEAgLTIyMywx MyArMjQ3LDEzIEBAIFJlc291cmNlT3duZXJGb3JnZXRXYWl0RXZlbnRTZXQoUmVzb3VyY2VP d25lciBvd25lciwgV2FpdEV2ZW50U2V0ICpzZXQpCiAKIAogLyoKLSAqIEluaXRpYWxpemUg dGhlIHByb2Nlc3MtbG9jYWwgbGF0Y2ggaW5mcmFzdHJ1Y3R1cmUuCisgKiBJbml0aWFsaXpl IHRoZSBwcm9jZXNzLWxvY2FsIHdhaXQgZXZlbnQgaW5mcmFzdHJ1Y3R1cmUuCiAgKgogICog VGhpcyBtdXN0IGJlIGNhbGxlZCBvbmNlIGR1cmluZyBzdGFydHVwIG9mIGFueSBwcm9jZXNz IHRoYXQgY2FuIHdhaXQgb24KLSAqIGxhdGNoZXMsIGJlZm9yZSBpdCBpc3N1ZXMgYW55IElu aXRMYXRjaCgpIG9yIE93bkxhdGNoKCkgY2FsbHMuCisgKiBpbnRlcnJ1cHRzLgogICovCiB2 b2lkCi1Jbml0aWFsaXplTGF0Y2hTdXBwb3J0KHZvaWQpCitJbml0aWFsaXplV2FpdEV2ZW50 U3VwcG9ydCh2b2lkKQogewogI2lmIGRlZmluZWQoV0FJVF9VU0VfU0VMRl9QSVBFKQogCWlu dAkJCXBpcGVmZFsyXTsKQEAgLTI3NiwxMiArMzAwLDEyIEBAIEluaXRpYWxpemVMYXRjaFN1 cHBvcnQodm9pZCkKIAogCS8qCiAJICogU2V0IHVwIHRoZSBzZWxmLXBpcGUgdGhhdCBhbGxv d3MgYSBzaWduYWwgaGFuZGxlciB0byB3YWtlIHVwIHRoZQotCSAqIHBvbGwoKS9lcG9sbF93 YWl0KCkgaW4gV2FpdExhdGNoLiBNYWtlIHRoZSB3cml0ZS1lbmQgbm9uLWJsb2NraW5nLCBz bwotCSAqIHRoYXQgU2V0TGF0Y2ggd29uJ3QgYmxvY2sgaWYgdGhlIGV2ZW50IGhhcyBhbHJl YWR5IGJlZW4gc2V0IG1hbnkgdGltZXMKLQkgKiBmaWxsaW5nIHRoZSBrZXJuZWwgYnVmZmVy LiBNYWtlIHRoZSByZWFkLWVuZCBub24tYmxvY2tpbmcgdG9vLCBzbyB0aGF0Ci0JICogd2Ug Y2FuIGVhc2lseSBjbGVhciB0aGUgcGlwZSBieSByZWFkaW5nIHVudGlsIEVBR0FJTiBvciBF V09VTERCTE9DSy4KLQkgKiBBbHNvLCBtYWtlIGJvdGggRkRzIGNsb3NlLW9uLWV4ZWMsIHNp bmNlIHdlIHN1cmVseSBkbyBub3Qgd2FudCBhbnkKLQkgKiBjaGlsZCBwcm9jZXNzZXMgbWVz c2luZyB3aXRoIHRoZW0uCisJICogcG9sbCgpL2Vwb2xsX3dhaXQoKSBpbiBXYWl0SW50ZXJy dXB0LiBNYWtlIHRoZSB3cml0ZS1lbmQgbm9uLWJsb2NraW5nLAorCSAqIHNvIHRoYXQgU2Vu ZEludGVycnVwdCB3b24ndCBibG9jayBpZiB0aGUgZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBz ZXQKKwkgKiBtYW55IHRpbWVzIGZpbGxpbmcgdGhlIGtlcm5lbCBidWZmZXIuIE1ha2UgdGhl IHJlYWQtZW5kIG5vbi1ibG9ja2luZworCSAqIHRvbywgc28gdGhhdCB3ZSBjYW4gZWFzaWx5 IGNsZWFyIHRoZSBwaXBlIGJ5IHJlYWRpbmcgdW50aWwgRUFHQUlOIG9yCisJICogRVdPVUxE QkxPQ0suIEFsc28sIG1ha2UgYm90aCBGRHMgY2xvc2Utb24tZXhlYywgc2luY2Ugd2Ugc3Vy ZWx5IGRvIG5vdAorCSAqIHdhbnQgYW55IGNoaWxkIHByb2Nlc3NlcyBtZXNzaW5nIHdpdGgg dGhlbS4KIAkgKi8KIAlpZiAocGlwZShwaXBlZmQpIDwgMCkKIAkJZWxvZyhGQVRBTCwgInBp cGUoKSBmYWlsZWQ6ICVtIik7CkBAIC0zMDIsNyArMzI2LDcgQEAgSW5pdGlhbGl6ZUxhdGNo U3VwcG9ydCh2b2lkKQogCVJlc2VydmVFeHRlcm5hbEZEKCk7CiAJUmVzZXJ2ZUV4dGVybmFs RkQoKTsKIAotCXBxc2lnbmFsKFNJR1VSRywgbGF0Y2hfc2lndXJnX2hhbmRsZXIpOworCXBx c2lnbmFsKFNJR1VSRywgaW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKTsKICNlbmRpZgogCiAj aWZkZWYgV0FJVF9VU0VfU0lHTkFMRkQKQEAgLTM0MCwzNyArMzY0LDQzIEBAIEluaXRpYWxp emVMYXRjaFN1cHBvcnQodm9pZCkKIAkvKiBJZ25vcmUgU0lHVVJHLCBiZWNhdXNlIHdlJ2xs IHJlY2VpdmUgaXQgdmlhIGtxdWV1ZS4gKi8KIAlwcXNpZ25hbChTSUdVUkcsIFNJR19JR04p OwogI2VuZGlmCisKKyNpZmRlZiBXQUlUX1VTRV9XSU4zMgorCUxvY2FsSW50ZXJydXB0V2Fr ZXVwRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7CisJaWYg KExvY2FsSW50ZXJydXB0V2FrZXVwRXZlbnQgPT0gTlVMTCkKKwkJZWxvZyhFUlJPUiwgIkNy ZWF0ZUV2ZW50IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7Cisj ZW5kaWYKIH0KIAogdm9pZAotSW5pdGlhbGl6ZUxhdGNoV2FpdFNldCh2b2lkKQorSW5pdGlh bGl6ZUludGVycnVwdFdhaXRTZXQodm9pZCkKIHsKLQlpbnQJCQlsYXRjaF9wb3MgUEdfVVNF RF9GT1JfQVNTRVJUU19PTkxZOworCWludAkJCWludGVycnVwdF9wb3MgUEdfVVNFRF9GT1Jf QVNTRVJUU19PTkxZOwogCi0JQXNzZXJ0KExhdGNoV2FpdFNldCA9PSBOVUxMKTsKKwlBc3Nl cnQoSW50ZXJydXB0V2FpdFNldCA9PSBOVUxMKTsKIAotCS8qIFNldCB1cCB0aGUgV2FpdEV2 ZW50U2V0IHVzZWQgYnkgV2FpdExhdGNoKCkuICovCi0JTGF0Y2hXYWl0U2V0ID0gQ3JlYXRl V2FpdEV2ZW50U2V0KE5VTEwsIDIpOwotCWxhdGNoX3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0 KExhdGNoV2FpdFNldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJ CQkgIE15TGF0Y2gsIE5VTEwpOworCS8qIFNldCB1cCB0aGUgV2FpdEV2ZW50U2V0IHVzZWQg YnkgV2FpdEludGVycnVwdCgpLiAqLworCUludGVycnVwdFdhaXRTZXQgPSBDcmVhdGVXYWl0 RXZlbnRTZXQoTlVMTCwgMik7CisJaW50ZXJydXB0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0 KEludGVycnVwdFdhaXRTZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJ CQkJCQkJCSAgMCwgTlVMTCk7CiAJaWYgKElzVW5kZXJQb3N0bWFzdGVyKQotCQlBZGRXYWl0 RXZlbnRUb1NldChMYXRjaFdhaXRTZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkg IFBHSU5WQUxJRF9TT0NLRVQsIE5VTEwsIE5VTEwpOworCQlBZGRXYWl0RXZlbnRUb1NldChJ bnRlcnJ1cHRXYWl0U2V0LCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICBQR0lOVkFM SURfU09DS0VULCAwLCBOVUxMKTsKIAotCUFzc2VydChsYXRjaF9wb3MgPT0gTGF0Y2hXYWl0 U2V0TGF0Y2hQb3MpOworCUFzc2VydChpbnRlcnJ1cHRfcG9zID09IEludGVycnVwdFdhaXRT ZXRJbnRlcnJ1cHRQb3MpOwogfQogCiB2b2lkCi1TaHV0ZG93bkxhdGNoU3VwcG9ydCh2b2lk KQorU2h1dGRvd25XYWl0RXZlbnRTdXBwb3J0KHZvaWQpCiB7CiAjaWYgZGVmaW5lZChXQUlU X1VTRV9QT0xMKQogCXBxc2lnbmFsKFNJR1VSRywgU0lHX0lHTik7CiAjZW5kaWYKIAotCWlm IChMYXRjaFdhaXRTZXQpCisJaWYgKEludGVycnVwdFdhaXRTZXQpCiAJewotCQlGcmVlV2Fp dEV2ZW50U2V0KExhdGNoV2FpdFNldCk7Ci0JCUxhdGNoV2FpdFNldCA9IE5VTEw7CisJCUZy ZWVXYWl0RXZlbnRTZXQoSW50ZXJydXB0V2FpdFNldCk7CisJCUludGVycnVwdFdhaXRTZXQg PSBOVUxMOwogCX0KIAogI2lmIGRlZmluZWQoV0FJVF9VU0VfU0VMRl9QSVBFKQpAQCAtMzg4 LDEzNCArNDE4LDI0IEBAIFNodXRkb3duTGF0Y2hTdXBwb3J0KHZvaWQpCiB9CiAKIC8qCi0g KiBJbml0aWFsaXplIGEgcHJvY2Vzcy1sb2NhbCBsYXRjaC4KLSAqLwotdm9pZAotSW5pdExh dGNoKExhdGNoICpsYXRjaCkKLXsKLQlsYXRjaC0+aXNfc2V0ID0gZmFsc2U7Ci0JbGF0Y2gt Pm1heWJlX3NsZWVwaW5nID0gZmFsc2U7Ci0JbGF0Y2gtPm93bmVyX3BpZCA9IE15UHJvY1Bp ZDsKLQlsYXRjaC0+aXNfc2hhcmVkID0gZmFsc2U7Ci0KLSNpZiBkZWZpbmVkKFdBSVRfVVNF X1NFTEZfUElQRSkKLQkvKiBBc3NlcnQgSW5pdGlhbGl6ZUxhdGNoU3VwcG9ydCBoYXMgYmVl biBjYWxsZWQgaW4gdGhpcyBwcm9jZXNzICovCi0JQXNzZXJ0KHNlbGZwaXBlX3JlYWRmZCA+ PSAwICYmIHNlbGZwaXBlX293bmVyX3BpZCA9PSBNeVByb2NQaWQpOwotI2VsaWYgZGVmaW5l ZChXQUlUX1VTRV9TSUdOQUxGRCkKLQkvKiBBc3NlcnQgSW5pdGlhbGl6ZUxhdGNoU3VwcG9y dCBoYXMgYmVlbiBjYWxsZWQgaW4gdGhpcyBwcm9jZXNzICovCi0JQXNzZXJ0KHNpZ25hbF9m ZCA+PSAwKTsKLSNlbGlmIGRlZmluZWQoV0FJVF9VU0VfV0lOMzIpCi0JbGF0Y2gtPmV2ZW50 ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOwotCWlmIChsYXRjaC0+ ZXZlbnQgPT0gTlVMTCkKLQkJZWxvZyhFUlJPUiwgIkNyZWF0ZUV2ZW50IGZhaWxlZDogZXJy b3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7Ci0jZW5kaWYJCQkJCQkJLyogV0lOMzIg Ki8KLX0KLQotLyoKLSAqIEluaXRpYWxpemUgYSBzaGFyZWQgbGF0Y2ggdGhhdCBjYW4gYmUg c2V0IGZyb20gb3RoZXIgcHJvY2Vzc2VzLiBUaGUgbGF0Y2gKLSAqIGlzIGluaXRpYWxseSBv d25lZCBieSBuby1vbmU7IHVzZSBPd25MYXRjaCB0byBhc3NvY2lhdGUgaXQgd2l0aCB0aGUK LSAqIGN1cnJlbnQgcHJvY2Vzcy4KLSAqCi0gKiBJbml0U2hhcmVkTGF0Y2ggbmVlZHMgdG8g YmUgY2FsbGVkIGluIHBvc3RtYXN0ZXIgYmVmb3JlIGZvcmtpbmcgY2hpbGQKLSAqIHByb2Nl c3NlcywgdXN1YWxseSByaWdodCBhZnRlciBhbGxvY2F0aW5nIHRoZSBzaGFyZWQgbWVtb3J5 IGJsb2NrCi0gKiBjb250YWluaW5nIHRoZSBsYXRjaCB3aXRoIFNobWVtSW5pdFN0cnVjdC4g KFRoZSBVbml4IGltcGxlbWVudGF0aW9uCi0gKiBkb2Vzbid0IGFjdHVhbGx5IHJlcXVpcmUg dGhhdCwgYnV0IHRoZSBXaW5kb3dzIG9uZSBkb2VzLikgQmVjYXVzZSBvZgotICogdGhpcyBy ZXN0cmljdGlvbiwgd2UgaGF2ZSBubyBjb25jdXJyZW5jeSBpc3N1ZXMgdG8gd29ycnkgYWJv dXQgaGVyZS4KLSAqCi0gKiBOb3RlIHRoYXQgb3RoZXIgaGFuZGxlcyBjcmVhdGVkIGluIHRo aXMgbW9kdWxlIGFyZSBuZXZlciBtYXJrZWQgYXMKLSAqIGluaGVyaXRhYmxlLiAgVGh1cyB3 ZSBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCBjbGVhbmluZyB1cCBjaGlsZAotICogcHJv Y2VzcyByZWZlcmVuY2VzIHRvIHBvc3RtYXN0ZXItcHJpdmF0ZSBsYXRjaGVzIG9yIFdhaXRF dmVudFNldHMuCi0gKi8KLXZvaWQKLUluaXRTaGFyZWRMYXRjaChMYXRjaCAqbGF0Y2gpCi17 Ci0jaWZkZWYgV0lOMzIKLQlTRUNVUklUWV9BVFRSSUJVVEVTIHNhOwotCi0JLyoKLQkgKiBT ZXQgdXAgc2VjdXJpdHkgYXR0cmlidXRlcyB0byBzcGVjaWZ5IHRoYXQgdGhlIGV2ZW50cyBh cmUgaW5oZXJpdGVkLgotCSAqLwotCVplcm9NZW1vcnkoJnNhLCBzaXplb2Yoc2EpKTsKLQlz YS5uTGVuZ3RoID0gc2l6ZW9mKHNhKTsKLQlzYS5iSW5oZXJpdEhhbmRsZSA9IFRSVUU7Ci0K LQlsYXRjaC0+ZXZlbnQgPSBDcmVhdGVFdmVudCgmc2EsIFRSVUUsIEZBTFNFLCBOVUxMKTsK LQlpZiAobGF0Y2gtPmV2ZW50ID09IE5VTEwpCi0JCWVsb2coRVJST1IsICJDcmVhdGVFdmVu dCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9yKCkpOwotI2VuZGlmCi0K LQlsYXRjaC0+aXNfc2V0ID0gZmFsc2U7Ci0JbGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gZmFs c2U7Ci0JbGF0Y2gtPm93bmVyX3BpZCA9IDA7Ci0JbGF0Y2gtPmlzX3NoYXJlZCA9IHRydWU7 Ci19Ci0KLS8qCi0gKiBBc3NvY2lhdGUgYSBzaGFyZWQgbGF0Y2ggd2l0aCB0aGUgY3VycmVu dCBwcm9jZXNzLCBhbGxvd2luZyBpdCB0bwotICogd2FpdCBvbiB0aGUgbGF0Y2guCi0gKgot ICogQWx0aG91Z2ggdGhlcmUgaXMgYSBzYW5pdHkgY2hlY2sgZm9yIGxhdGNoLWFscmVhZHkt b3duZWQsIHdlIGRvbid0IGRvCi0gKiBhbnkgc29ydCBvZiBsb2NraW5nIGhlcmUsIG1lYW5p bmcgdGhhdCB3ZSBjb3VsZCBmYWlsIHRvIGRldGVjdCB0aGUgZXJyb3IKLSAqIGlmIHR3byBw cm9jZXNzZXMgdHJ5IHRvIG93biB0aGUgc2FtZSBsYXRjaCBhdCBhYm91dCB0aGUgc2FtZSB0 aW1lLiAgSWYKLSAqIHRoZXJlIGlzIGFueSByaXNrIG9mIHRoYXQsIGNhbGxlciBtdXN0IHBy b3ZpZGUgYW4gaW50ZXJsb2NrIHRvIHByZXZlbnQgaXQuCi0gKi8KLXZvaWQKLU93bkxhdGNo KExhdGNoICpsYXRjaCkKLXsKLQlpbnQJCQlvd25lcl9waWQ7Ci0KLQkvKiBTYW5pdHkgY2hl Y2tzICovCi0JQXNzZXJ0KGxhdGNoLT5pc19zaGFyZWQpOwotCi0jaWYgZGVmaW5lZChXQUlU X1VTRV9TRUxGX1BJUEUpCi0JLyogQXNzZXJ0IEluaXRpYWxpemVMYXRjaFN1cHBvcnQgaGFz IGJlZW4gY2FsbGVkIGluIHRoaXMgcHJvY2VzcyAqLwotCUFzc2VydChzZWxmcGlwZV9yZWFk ZmQgPj0gMCAmJiBzZWxmcGlwZV9vd25lcl9waWQgPT0gTXlQcm9jUGlkKTsKLSNlbGlmIGRl ZmluZWQoV0FJVF9VU0VfU0lHTkFMRkQpCi0JLyogQXNzZXJ0IEluaXRpYWxpemVMYXRjaFN1 cHBvcnQgaGFzIGJlZW4gY2FsbGVkIGluIHRoaXMgcHJvY2VzcyAqLwotCUFzc2VydChzaWdu YWxfZmQgPj0gMCk7Ci0jZW5kaWYKLQotCW93bmVyX3BpZCA9IGxhdGNoLT5vd25lcl9waWQ7 Ci0JaWYgKG93bmVyX3BpZCAhPSAwKQotCQllbG9nKFBBTklDLCAibGF0Y2ggYWxyZWFkeSBv d25lZCBieSBQSUQgJWQiLCBvd25lcl9waWQpOwotCi0JbGF0Y2gtPm93bmVyX3BpZCA9IE15 UHJvY1BpZDsKLX0KLQotLyoKLSAqIERpc293biBhIHNoYXJlZCBsYXRjaCBjdXJyZW50bHkg b3duZWQgYnkgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KLSAqLwotdm9pZAotRGlzb3duTGF0Y2go TGF0Y2ggKmxhdGNoKQotewotCUFzc2VydChsYXRjaC0+aXNfc2hhcmVkKTsKLQlBc3NlcnQo bGF0Y2gtPm93bmVyX3BpZCA9PSBNeVByb2NQaWQpOwotCi0JbGF0Y2gtPm93bmVyX3BpZCA9 IDA7Ci19Ci0KLS8qCi0gKiBXYWl0IGZvciBhIGdpdmVuIGxhdGNoIHRvIGJlIHNldCwgb3Ig Zm9yIHBvc3RtYXN0ZXIgZGVhdGgsIG9yIHVudGlsIHRpbWVvdXQKLSAqIGlzIGV4Y2VlZGVk LiAnd2FrZUV2ZW50cycgaXMgYSBiaXRtYXNrIHRoYXQgc3BlY2lmaWVzIHdoaWNoIG9mIHRo b3NlIGV2ZW50cwotICogdG8gd2FpdCBmb3IuIElmIHRoZSBsYXRjaCBpcyBhbHJlYWR5IHNl dCAoYW5kIFdMX0xBVENIX1NFVCBpcyBnaXZlbiksIHRoZQotICogZnVuY3Rpb24gcmV0dXJu cyBpbW1lZGlhdGVseS4KKyAqIFdhaXQgZm9yIGFueSBvZiB0aGUgaW50ZXJydXB0cyBpbiBp bnRlcnJ1cHRNYXNrIHRvIGJlIHNldCwgb3IgZm9yCisgKiBwb3N0bWFzdGVyIGRlYXRoLCBv ciB1bnRpbCB0aW1lb3V0IGlzIGV4Y2VlZGVkLiAnd2FrZUV2ZW50cycgaXMgYSBiaXRtYXNr CisgKiB0aGF0IHNwZWNpZmllcyB3aGljaCBvZiB0aG9zZSBldmVudHMgdG8gd2FpdCBmb3Iu IElmIHRoZSBpbnRlcnJ1cHQgaXMKKyAqIGFscmVhZHkgcGVuZGluZyAoYW5kIFdMX0lOVEVS UlVQVCBpcyBnaXZlbiksIHRoZSBmdW5jdGlvbiByZXR1cm5zCisgKiBpbW1lZGlhdGVseS4K ICAqCiAgKiBUaGUgInRpbWVvdXQiIGlzIGdpdmVuIGluIG1pbGxpc2Vjb25kcy4gSXQgbXVz dCBiZSA+PSAwIGlmIFdMX1RJTUVPVVQgZmxhZwogICogaXMgZ2l2ZW4uICBBbHRob3VnaCBp dCBpcyBkZWNsYXJlZCBhcyAibG9uZyIsIHdlIGRvbid0IGFjdHVhbGx5IHN1cHBvcnQKICAq IHRpbWVvdXRzIGxvbmdlciB0aGFuIElOVF9NQVggbWlsbGlzZWNvbmRzLiAgTm90ZSB0aGF0 IHNvbWUgZXh0cmEgb3ZlcmhlYWQKICAqIGlzIGluY3VycmVkIHdoZW4gV0xfVElNRU9VVCBp cyBnaXZlbiwgc28gYXZvaWQgdXNpbmcgYSB0aW1lb3V0IGlmIHBvc3NpYmxlLgogICoKLSAq IFRoZSBsYXRjaCBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjdXJyZW50IHByb2Nlc3MsIGllLiBp dCBtdXN0IGJlIGEKLSAqIHByb2Nlc3MtbG9jYWwgbGF0Y2ggaW5pdGlhbGl6ZWQgd2l0aCBJ bml0TGF0Y2gsIG9yIGEgc2hhcmVkIGxhdGNoCi0gKiBhc3NvY2lhdGVkIHdpdGggdGhlIGN1 cnJlbnQgcHJvY2VzcyBieSBjYWxsaW5nIE93bkxhdGNoLgotICoKICAqIFJldHVybnMgYml0 IG1hc2sgaW5kaWNhdGluZyB3aGljaCBjb25kaXRpb24ocykgY2F1c2VkIHRoZSB3YWtlLXVw LiBOb3RlCiAgKiB0aGF0IGlmIG11bHRpcGxlIHdha2UtdXAgY29uZGl0aW9ucyBhcmUgdHJ1 ZSwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQKICAqIHdlIHJldHVybiBhbGwgb2YgdGhl bSBpbiBvbmUgY2FsbCwgYnV0IHdlIHdpbGwgcmV0dXJuIGF0IGxlYXN0IG9uZS4KICAqLwog aW50Ci1XYWl0TGF0Y2goTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1l b3V0LAotCQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCitXYWl0SW50ZXJydXB0KHVpbnQz MiBpbnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAorCQkJICB1 aW50MzIgd2FpdF9ldmVudF9pbmZvKQogewogCVdhaXRFdmVudAlldmVudDsKIApAQCAtNTI1 LDE3ICs0NDUsMTcgQEAgV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMs IGxvbmcgdGltZW91dCwKIAkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRI KSk7CiAKIAkvKgotCSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2ZSBhIGxhdGNoIG90aGVyIHRo YW4gTXlMYXRjaCwgb3Igbm8gbGF0Y2ggYXQgYWxsLAotCSAqIG9yIHdhbnQgdG8gaGFuZGxl IHBvc3RtYXN0ZXIgZGVhdGggZGlmZmVyZW50bHkuICBJdCdzIGNoZWFwIHRvIGFzc2lnbgot CSAqIHRob3NlLCBzbyBqdXN0IGRvIGl0IGV2ZXJ5IHRpbWUuCisJICogU29tZSBjYWxsZXJz IG1heSBoYXZlIGFuIGludGVycnVwdCBtYXNrIGRpZmZlcmVudCBmcm9tIGxhc3QgdGltZSwg b3Igbm8KKwkgKiBpbnRlcnJ1cHQgbWFzayBhdCBhbGwsIG9yIHdhbnQgdG8gaGFuZGxlIHBv c3RtYXN0ZXIgZGVhdGggZGlmZmVyZW50bHkuCisJICogSXQncyBjaGVhcCB0byBhc3NpZ24g dGhvc2UsIHNvIGp1c3QgZG8gaXQgZXZlcnkgdGltZS4KIAkgKi8KLQlpZiAoISh3YWtlRXZl bnRzICYgV0xfTEFUQ0hfU0VUKSkKLQkJbGF0Y2ggPSBOVUxMOwotCU1vZGlmeVdhaXRFdmVu dChMYXRjaFdhaXRTZXQsIExhdGNoV2FpdFNldExhdGNoUG9zLCBXTF9MQVRDSF9TRVQsIGxh dGNoKTsKLQlMYXRjaFdhaXRTZXQtPmV4aXRfb25fcG9zdG1hc3Rlcl9kZWF0aCA9CisJaWYg KCEod2FrZUV2ZW50cyAmIFdMX0lOVEVSUlVQVCkpCisJCWludGVycnVwdE1hc2sgPSAwOwor CU1vZGlmeVdhaXRFdmVudChJbnRlcnJ1cHRXYWl0U2V0LCBJbnRlcnJ1cHRXYWl0U2V0SW50 ZXJydXB0UG9zLCBXTF9JTlRFUlJVUFQsIGludGVycnVwdE1hc2spOworCUludGVycnVwdFdh aXRTZXQtPmV4aXRfb25fcG9zdG1hc3Rlcl9kZWF0aCA9CiAJCSgod2FrZUV2ZW50cyAmIFdM X0VYSVRfT05fUE1fREVBVEgpICE9IDApOwogCi0JaWYgKFdhaXRFdmVudFNldFdhaXQoTGF0 Y2hXYWl0U2V0LAorCWlmIChXYWl0RXZlbnRTZXRXYWl0KEludGVycnVwdFdhaXRTZXQsCiAJ CQkJCQkgKHdha2VFdmVudHMgJiBXTF9USU1FT1VUKSA/IHRpbWVvdXQgOiAtMSwKIAkJCQkJ CSAmZXZlbnQsIDEsCiAJCQkJCQkgd2FpdF9ldmVudF9pbmZvKSA9PSAwKQpAQCAtNTQ1LDcg KzQ2NSw3IEBAIFdhaXRMYXRjaChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBsb25n IHRpbWVvdXQsCiB9CiAKIC8qCi0gKiBMaWtlIFdhaXRMYXRjaCwgYnV0IHdpdGggYW4gZXh0 cmEgc29ja2V0IGFyZ3VtZW50IGZvciBXTF9TT0NLRVRfKgorICogTGlrZSBXYWl0SW50ZXJy dXB0LCBidXQgd2l0aCBhbiBleHRyYSBzb2NrZXQgYXJndW1lbnQgZm9yIFdMX1NPQ0tFVF8q CiAgKiBjb25kaXRpb25zLgogICoKICAqIFdoZW4gd2FpdGluZyBvbiBhIHNvY2tldCwgRU9G IGFuZCBlcnJvciBjb25kaXRpb25zIGFsd2F5cyBjYXVzZSB0aGUgc29ja2V0CkBAIC01NTgs MTIgKzQ3OCwxMiBAQCBXYWl0TGF0Y2goTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywg bG9uZyB0aW1lb3V0LAogICogd2hlcmUgc29tZSBiZWhhdmlvciBvdGhlciB0aGFuIGltbWVk aWF0ZSBleGl0IGlzIG5lZWRlZC4KICAqCiAgKiBOQjogVGhlc2UgZGF5cyB0aGlzIGlzIGp1 c3QgYSB3cmFwcGVyIGFyb3VuZCB0aGUgV2FpdEV2ZW50U2V0IEFQSS4gV2hlbgotICogdXNp bmcgYSBsYXRjaCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0aW5nIGEgbG9uZ2Vy IGxpdmluZworICogdXNpbmcgYW4gaW50ZXJydXB0IHZlcnkgZnJlcXVlbnRseSwgY29uc2lk ZXIgY3JlYXRpbmcgYSBsb25nZXIgbGl2aW5nCiAgKiBXYWl0RXZlbnRTZXQgaW5zdGVhZDsg dGhhdCdzIG1vcmUgZWZmaWNpZW50LgogICovCiBpbnQKLVdhaXRMYXRjaE9yU29ja2V0KExh dGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIHBnc29ja2V0IHNvY2ssCi0JCQkJICBsb25n IHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCitXYWl0SW50ZXJydXB0T3JTb2Nr ZXQodWludDMyIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2Nr LAorCQkJCQkgIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKIHsKIAlp bnQJCQlyZXQgPSAwOwogCWludAkJCXJjOwpAQCAtNTc1LDkgKzQ5NSw5IEBAIFdhaXRMYXRj aE9yU29ja2V0KExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIHBnc29ja2V0IHNvY2ss CiAJZWxzZQogCQl0aW1lb3V0ID0gLTE7CiAKLQlpZiAod2FrZUV2ZW50cyAmIFdMX0xBVENI X1NFVCkKLQkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJ RF9TT0NLRVQsCi0JCQkJCQkgIGxhdGNoLCBOVUxMKTsKKwlpZiAod2FrZUV2ZW50cyAmIFdM X0lOVEVSUlVQVCkKKwkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9JTlRFUlJVUFQsIFBH SU5WQUxJRF9TT0NLRVQsCisJCQkJCQkgIGludGVycnVwdE1hc2ssIE5VTEwpOwogCiAJLyog UG9zdG1hc3Rlci1tYW5hZ2VkIGNhbGxlcnMgbXVzdCBoYW5kbGUgcG9zdG1hc3RlciBkZWF0 aCBzb21laG93LiAqLwogCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIgfHwKQEAgLTU4Niwx OCArNTA2LDE4IEBAIFdhaXRMYXRjaE9yU29ja2V0KExhdGNoICpsYXRjaCwgaW50IHdha2VF dmVudHMsIHBnc29ja2V0IHNvY2ssCiAKIAlpZiAoKHdha2VFdmVudHMgJiBXTF9QT1NUTUFT VEVSX0RFQVRIKSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKIAkJQWRkV2FpdEV2ZW50VG9TZXQo c2V0LCBXTF9QT1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJICBO VUxMLCBOVUxMKTsKKwkJCQkJCSAgMCwgTlVMTCk7CiAKIAlpZiAoKHdha2VFdmVudHMgJiBX TF9FWElUX09OX1BNX0RFQVRIKSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKIAkJQWRkV2FpdEV2 ZW50VG9TZXQoc2V0LCBXTF9FWElUX09OX1BNX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAot CQkJCQkJICBOVUxMLCBOVUxMKTsKKwkJCQkJCSAgMCwgTlVMTCk7CiAKIAlpZiAod2FrZUV2 ZW50cyAmIFdMX1NPQ0tFVF9NQVNLKQogCXsKIAkJaW50CQkJZXY7CiAKIAkJZXYgPSB3YWtl RXZlbnRzICYgV0xfU09DS0VUX01BU0s7Ci0JCUFkZFdhaXRFdmVudFRvU2V0KHNldCwgZXYs IHNvY2ssIE5VTEwsIE5VTEwpOworCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBzb2Nr LCAwLCBOVUxMKTsKIAl9CiAKIAlyYyA9IFdhaXRFdmVudFNldFdhaXQoc2V0LCB0aW1lb3V0 LCAmZXZlbnQsIDEsIHdhaXRfZXZlbnRfaW5mbyk7CkBAIC02MDYsNyArNTI2LDcgQEAgV2Fp dExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQg c29jaywKIAkJcmV0IHw9IFdMX1RJTUVPVVQ7CiAJZWxzZQogCXsKLQkJcmV0IHw9IGV2ZW50 LmV2ZW50cyAmIChXTF9MQVRDSF9TRVQgfAorCQlyZXQgfD0gZXZlbnQuZXZlbnRzICYgKFdM X0lOVEVSUlVQVCB8CiAJCQkJCQkJICAgV0xfUE9TVE1BU1RFUl9ERUFUSCB8CiAJCQkJCQkJ ICAgV0xfU09DS0VUX01BU0spOwogCX0KQEAgLTYxNywxMjUgKzUzNyw0NyBAQCBXYWl0TGF0 Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2Nr LAogfQogCiAvKgotICogU2V0cyBhIGxhdGNoIGFuZCB3YWtlcyB1cCBhbnlvbmUgd2FpdGlu ZyBvbiBpdC4KLSAqCi0gKiBUaGlzIGlzIGNoZWFwIGlmIHRoZSBsYXRjaCBpcyBhbHJlYWR5 IHNldCwgb3RoZXJ3aXNlIG5vdCBzbyBtdWNoLgorICogV2FrZSB1cCBteSBwcm9jZXNzIGlm IGl0J3MgY3VycmVudGx5IHdhaXRpbmcuCiAgKgotICogTkI6IHdoZW4gY2FsbGluZyB0aGlz IGluIGEgc2lnbmFsIGhhbmRsZXIsIGJlIHN1cmUgdG8gc2F2ZSBhbmQgcmVzdG9yZQotICog ZXJybm8gYXJvdW5kIGl0LiAgKFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSBpbiBtb3N0IHNp Z25hbCBoYW5kbGVycywgb2YKLSAqIGNvdXJzZSwgYnV0IHdlIHVzZWQgdG8gb21pdCBpdCBp biBoYW5kbGVycyB0aGF0IG9ubHkgc2V0IGEgZmxhZy4pCisgKiBOQjogYmUgc3VyZSB0byBz YXZlIGFuZCByZXN0b3JlIGVycm5vIGFyb3VuZCBpdC4gIChUaGF0J3Mgc3RhbmRhcmQgcHJh Y3RpY2UKKyAqIGluIG1vc3Qgc2lnbmFsIGhhbmRsZXJzLCBvZiBjb3Vyc2UsIGJ1dCB3ZSB1 c2VkIHRvIG9taXQgaXQgaW4gaGFuZGxlcnMgdGhhdAorICogb25seSBzZXQgYSBmbGFnLikg WFhYCiAgKgogICogTkI6IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gY3JpdGljYWwg c2VjdGlvbnMgYW5kIHNpZ25hbCBoYW5kbGVycyBzbwogICogdGhyb3dpbmcgYW4gZXJyb3Ig aXMgbm90IGEgZ29vZCBpZGVhLgogICovCiB2b2lkCi1TZXRMYXRjaChMYXRjaCAqbGF0Y2gp CitXYWtldXBNeVByb2Modm9pZCkKIHsKICNpZm5kZWYgV0lOMzIKLQlwaWRfdAkJb3duZXJf cGlkOwotI2Vsc2UKLQlIQU5ETEUJCWhhbmRsZTsKLSNlbmRpZgotCi0JLyoKLQkgKiBUaGUg bWVtb3J5IGJhcnJpZXIgaGFzIHRvIGJlIHBsYWNlZCBoZXJlIHRvIGVuc3VyZSB0aGF0IGFu eSBmbGFnCi0JICogdmFyaWFibGVzIHBvc3NpYmx5IGNoYW5nZWQgYnkgdGhpcyBwcm9jZXNz IGhhdmUgYmVlbiBmbHVzaGVkIHRvIG1haW4KLQkgKiBtZW1vcnksIGJlZm9yZSB3ZSBjaGVj ay9zZXQgaXNfc2V0LgotCSAqLwotCXBnX21lbW9yeV9iYXJyaWVyKCk7Ci0KLQkvKiBRdWlj ayBleGl0IGlmIGFscmVhZHkgc2V0ICovCi0JaWYgKGxhdGNoLT5pc19zZXQpCi0JCXJldHVy bjsKLQotCWxhdGNoLT5pc19zZXQgPSB0cnVlOwotCi0JcGdfbWVtb3J5X2JhcnJpZXIoKTsK LQlpZiAoIWxhdGNoLT5tYXliZV9zbGVlcGluZykKLQkJcmV0dXJuOwotCi0jaWZuZGVmIFdJ TjMyCi0KLQkvKgotCSAqIFNlZSBpZiBhbnlvbmUncyB3YWl0aW5nIGZvciB0aGUgbGF0Y2gu IEl0IGNhbiBiZSB0aGUgY3VycmVudCBwcm9jZXNzIGlmCi0JICogd2UncmUgaW4gYSBzaWdu YWwgaGFuZGxlci4gV2UgdXNlIHRoZSBzZWxmLXBpcGUgb3IgU0lHVVJHIHRvIG91cnNlbHZl cwotCSAqIHRvIHdha2UgdXAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKCkgd2l0aG91dCByYWNl cyBpbiB0aGF0IGNhc2UuIElmIGl0J3MKLQkgKiBhbm90aGVyIHByb2Nlc3MsIHNlbmQgYSBz aWduYWwuCi0JICoKLQkgKiBGZXRjaCBvd25lcl9waWQgb25seSBvbmNlLCBpbiBjYXNlIHRo ZSBsYXRjaCBpcyBjb25jdXJyZW50bHkgZ2V0dGluZwotCSAqIG93bmVkIG9yIGRpc293bmVk LiBYWFg6IFRoaXMgYXNzdW1lcyB0aGF0IHBpZF90IGlzIGF0b21pYywgd2hpY2ggaXNuJ3QK LQkgKiBndWFyYW50ZWVkIHRvIGJlIHRydWUhIEluIHByYWN0aWNlLCB0aGUgZWZmZWN0aXZl IHJhbmdlIG9mIHBpZF90IGZpdHMKLQkgKiBpbiBhIDMyIGJpdCBpbnRlZ2VyLCBhbmQgc28g c2hvdWxkIGJlIGF0b21pYy4gSW4gdGhlIHdvcnN0IGNhc2UsIHdlCi0JICogbWlnaHQgZW5k IHVwIHNpZ25hbGluZyB0aGUgd3JvbmcgcHJvY2Vzcy4gRXZlbiB0aGVuLCB5b3UncmUgdmVy eQotCSAqIHVubHVja3kgaWYgYSBwcm9jZXNzIHdpdGggdGhhdCBib2d1cyBwaWQgZXhpc3Rz IGFuZCBiZWxvbmdzIHRvCi0JICogUG9zdGdyZXM7IGFuZCBQRyBkYXRhYmFzZSBwcm9jZXNz ZXMgc2hvdWxkIGhhbmRsZSBleGNlc3MgU0lHVVNSMQotCSAqIGludGVycnVwdHMgd2l0aG91 dCBhIHByb2JsZW0gYW55aG93LgotCSAqCi0JICogQW5vdGhlciBzb3J0IG9mIHJhY2UgY29u ZGl0aW9uIHRoYXQncyBwb3NzaWJsZSBoZXJlIGlzIGZvciBhIG5ldwotCSAqIHByb2Nlc3Mg dG8gb3duIHRoZSBsYXRjaCBpbW1lZGlhdGVseSBhZnRlciB3ZSBsb29rLCBzbyB3ZSBkb24n dCBzaWduYWwKLQkgKiBpdC4gVGhpcyBpcyBva2F5IHNvIGxvbmcgYXMgYWxsIGNhbGxlcnMg b2YgUmVzZXRMYXRjaC9XYWl0TGF0Y2ggZm9sbG93Ci0JICogdGhlIHN0YW5kYXJkIGNvZGlu ZyBjb252ZW50aW9uIG9mIHdhaXRpbmcgYXQgdGhlIGJvdHRvbSBvZiB0aGVpciBsb29wcywK LQkgKiBub3QgdGhlIHRvcCwgc28gdGhhdCB0aGV5J2xsIGNvcnJlY3RseSBwcm9jZXNzIGxh dGNoLXNldHRpbmcgZXZlbnRzCi0JICogdGhhdCBoYXBwZW4gYmVmb3JlIHRoZXkgZW50ZXIg dGhlIGxvb3AuCi0JICovCi0Jb3duZXJfcGlkID0gbGF0Y2gtPm93bmVyX3BpZDsKLQlpZiAo b3duZXJfcGlkID09IDApCi0JCXJldHVybjsKLQllbHNlIGlmIChvd25lcl9waWQgPT0gTXlQ cm9jUGlkKQotCXsKICNpZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZfUElQRSkKLQkJaWYgKHdh aXRpbmcpCi0JCQlzZW5kU2VsZlBpcGVCeXRlKCk7CisJaWYgKHdhaXRpbmcpCisJCXNlbmRT ZWxmUGlwZUJ5dGUoKTsKICNlbHNlCi0JCWlmICh3YWl0aW5nKQotCQkJa2lsbChNeVByb2NQ aWQsIFNJR1VSRyk7CisJaWYgKHdhaXRpbmcpCisJCWtpbGwoTXlQcm9jUGlkLCBTSUdVUkcp OwogI2VuZGlmCi0JfQotCWVsc2UKLQkJa2lsbChvd25lcl9waWQsIFNJR1VSRyk7Ci0KICNl bHNlCi0KLQkvKgotCSAqIFNlZSBpZiBhbnlvbmUncyB3YWl0aW5nIGZvciB0aGUgbGF0Y2gu IEl0IGNhbiBiZSB0aGUgY3VycmVudCBwcm9jZXNzIGlmCi0JICogd2UncmUgaW4gYSBzaWdu YWwgaGFuZGxlci4KLQkgKgotCSAqIFVzZSBhIGxvY2FsIHZhcmlhYmxlIGhlcmUganVzdCBp biBjYXNlIHNvbWVib2R5IGNoYW5nZXMgdGhlIGV2ZW50IGZpZWxkCi0JICogY29uY3VycmVu dGx5ICh3aGljaCByZWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4pLgotCSAqLwotCWhhbmRsZSA9 IGxhdGNoLT5ldmVudDsKLQlpZiAoaGFuZGxlKQotCXsKLQkJU2V0RXZlbnQoaGFuZGxlKTsK LQotCQkvKgotCQkgKiBOb3RlIHRoYXQgd2Ugc2lsZW50bHkgaWdub3JlIGFueSBlcnJvcnMu IFdlIG1pZ2h0IGJlIGluIGEgc2lnbmFsCi0JCSAqIGhhbmRsZXIgb3Igb3RoZXIgY3JpdGlj YWwgcGF0aCB3aGVyZSBpdCdzIG5vdCBzYWZlIHRvIGNhbGwgZWxvZygpLgotCQkgKi8KLQl9 CisJU2V0RXZlbnQoTXlQcm9jID8gTXlQcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA6IExv Y2FsSW50ZXJydXB0V2FrZXVwRXZlbnQpOwogI2VuZGlmCiB9CiAKIC8qCi0gKiBDbGVhciB0 aGUgbGF0Y2guIENhbGxpbmcgV2FpdExhdGNoIGFmdGVyIHRoaXMgd2lsbCBzbGVlcCwgdW5s ZXNzCi0gKiB0aGUgbGF0Y2ggaXMgc2V0IGFnYWluIGJlZm9yZSB0aGUgV2FpdExhdGNoIGNh bGwuCisgKiBXYWtlIHVwIGFub3RoZXIgcHJvY2VzcyBpZiBpdCdzIGN1cnJlbnRseSB3YWl0 aW5nLgogICovCiB2b2lkCi1SZXNldExhdGNoKExhdGNoICpsYXRjaCkKK1dha2V1cE90aGVy UHJvYyhQR1BST0MgKnByb2MpCiB7Ci0JLyogT25seSB0aGUgb3duZXIgc2hvdWxkIHJlc2V0 IHRoZSBsYXRjaCAqLwotCUFzc2VydChsYXRjaC0+b3duZXJfcGlkID09IE15UHJvY1BpZCk7 Ci0JQXNzZXJ0KGxhdGNoLT5tYXliZV9zbGVlcGluZyA9PSBmYWxzZSk7Ci0KLQlsYXRjaC0+ aXNfc2V0ID0gZmFsc2U7CisjaWZuZGVmIFdJTjMyCisJa2lsbChwcm9jLT5waWQsIFNJR1VS Ryk7CisjZWxzZQorCVNldEV2ZW50KHByb2MtPmludGVycnVwdFdha2V1cEV2ZW50KTsKIAog CS8qCi0JICogRW5zdXJlIHRoYXQgdGhlIHdyaXRlIHRvIGlzX3NldCBnZXRzIGZsdXNoZWQg dG8gbWFpbiBtZW1vcnkgYmVmb3JlIHdlCi0JICogZXhhbWluZSBhbnkgZmxhZyB2YXJpYWJs ZXMuICBPdGhlcndpc2UgYSBjb25jdXJyZW50IFNldExhdGNoIG1pZ2h0Ci0JICogZmFsc2Vs eSBjb25jbHVkZSB0aGF0IGl0IG5lZWRuJ3Qgc2lnbmFsIHVzLCBldmVuIHRob3VnaCB3ZSBo YXZlIG1pc3NlZAotCSAqIHNlZWluZyBzb21lIGZsYWcgdXBkYXRlcyB0aGF0IFNldExhdGNo IHdhcyBzdXBwb3NlZCB0byBpbmZvcm0gdXMgb2YuCisJICogTm90ZSB0aGF0IHdlIHNpbGVu dGx5IGlnbm9yZSBhbnkgZXJyb3JzLiBXZSBtaWdodCBiZSBpbiBhIHNpZ25hbAorCSAqIGhh bmRsZXIgb3Igb3RoZXIgY3JpdGljYWwgcGF0aCB3aGVyZSBpdCdzIG5vdCBzYWZlIHRvIGNh bGwgZWxvZygpLgogCSAqLwotCXBnX21lbW9yeV9iYXJyaWVyKCk7CisjZW5kaWYKIH0KIAog LyoKQEAgLTc5OSw3ICs2NDEsOCBAQCBDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25l ciByZXNvd25lciwgaW50IG5ldmVudHMpCiAJZGF0YSArPSBNQVhBTElHTihzaXplb2YoSEFO RExFKSAqIG5ldmVudHMpOwogI2VuZGlmCiAKLQlzZXQtPmxhdGNoID0gTlVMTDsKKwlzZXQt PmludGVycnVwdF9tYXNrID0gMDsKKwlzZXQtPmludGVycnVwdF9wb3MgPSAtMTsKIAlzZXQt Pm5ldmVudHNfc3BhY2UgPSBuZXZlbnRzOwogCXNldC0+ZXhpdF9vbl9wb3N0bWFzdGVyX2Rl YXRoID0gZmFsc2U7CiAKQEAgLTg5MCw5ICs3MzMsOSBAQCBGcmVlV2FpdEV2ZW50U2V0KFdh aXRFdmVudFNldCAqc2V0KQogCQkgY3VyX2V2ZW50IDwgKHNldC0+ZXZlbnRzICsgc2V0LT5u ZXZlbnRzKTsKIAkJIGN1cl9ldmVudCsrKQogCXsKLQkJaWYgKGN1cl9ldmVudC0+ZXZlbnRz ICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJV UFQpCiAJCXsKLQkJCS8qIHVzZXMgdGhlIGxhdGNoJ3MgSEFORExFICovCisJCQkvKiB1c2Vz IHRoZSBwcm9jZXNzJ3Mgd2FrZXVwIEhBTkRMRSAqLwogCQl9CiAJCWVsc2UgaWYgKGN1cl9l dmVudC0+ZXZlbnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJewpAQCAtOTI5LDcgKzc3 Miw3IEBAIEZyZWVXYWl0RXZlbnRTZXRBZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQpCiAK IC8qIC0tLQogICogQWRkIGFuIGV2ZW50IHRvIHRoZSBzZXQuIFBvc3NpYmxlIGV2ZW50cyBh cmU6Ci0gKiAtIFdMX0xBVENIX1NFVDogV2FpdCBmb3IgdGhlIGxhdGNoIHRvIGJlIHNldAor ICogLSBXTF9JTlRFUlJVUFQ6IFdhaXQgZm9yIHRoZSBpbnRlcnJ1cHQgdG8gYmUgc2V0CiAg KiAtIFdMX1BPU1RNQVNURVJfREVBVEg6IFdhaXQgZm9yIHBvc3RtYXN0ZXIgdG8gZGllCiAg KiAtIFdMX1NPQ0tFVF9SRUFEQUJMRTogV2FpdCBmb3Igc29ja2V0IHRvIGJlY29tZSByZWFk YWJsZSwKICAqCSBjYW4gYmUgY29tYmluZWQgaW4gb25lIGV2ZW50IHdpdGggb3RoZXIgV0xf U09DS0VUXyogZXZlbnRzCkBAIC05NDcsMTAgKzc5MCw2IEBAIEZyZWVXYWl0RXZlbnRTZXRB ZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQpCiAgKiBSZXR1cm5zIHRoZSBvZmZzZXQgaW4g V2FpdEV2ZW50U2V0LT5ldmVudHMgKHN0YXJ0aW5nIGZyb20gMCksIHdoaWNoIGNhbiBiZQog ICogdXNlZCB0byBtb2RpZnkgcHJldmlvdXNseSBhZGRlZCB3YWl0IGV2ZW50cyB1c2luZyBN b2RpZnlXYWl0RXZlbnQoKS4KICAqCi0gKiBJbiB0aGUgV0xfTEFUQ0hfU0VUIGNhc2UgdGhl IGxhdGNoIG11c3QgYmUgb3duZWQgYnkgdGhlIGN1cnJlbnQgcHJvY2VzcywKLSAqIGkuZS4g aXQgbXVzdCBiZSBhIHByb2Nlc3MtbG9jYWwgbGF0Y2ggaW5pdGlhbGl6ZWQgd2l0aCBJbml0 TGF0Y2gsIG9yIGEKLSAqIHNoYXJlZCBsYXRjaCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJl bnQgcHJvY2VzcyBieSBjYWxsaW5nIE93bkxhdGNoLgotICoKICAqIEluIHRoZSBXTF9TT0NL RVRfUkVBREFCTEUvV1JJVEVBQkxFL0NPTk5FQ1RFRC9BQ0NFUFQgY2FzZXMsIEVPRiBhbmQg ZXJyb3IKICAqIGNvbmRpdGlvbnMgY2F1c2UgdGhlIHNvY2tldCB0byBiZSByZXBvcnRlZCBh cyByZWFkYWJsZS93cml0YWJsZS9jb25uZWN0ZWQsCiAgKiBzbyB0aGF0IHRoZSBjYWxsZXIg Y2FuIGRlYWwgd2l0aCB0aGUgY29uZGl0aW9uLgpAQCAtOTYwLDcgKzc5OSw3IEBAIEZyZWVX YWl0RXZlbnRTZXRBZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQpCiAgKiBldmVudHMuCiAg Ki8KIGludAotQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBl dmVudHMsIHBnc29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCitBZGRXYWl0RXZlbnRUb1NldChX YWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIHVpbnQzMiBp bnRlcnJ1cHRNYXNrLAogCQkJCSAgdm9pZCAqdXNlcl9kYXRhKQogewogCVdhaXRFdmVudCAg KmV2ZW50OwpAQCAtOTc0LDE5ICs4MTMsMTYgQEAgQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2 ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gs CiAJCXNldC0+ZXhpdF9vbl9wb3N0bWFzdGVyX2RlYXRoID0gdHJ1ZTsKIAl9CiAKLQlpZiAo bGF0Y2gpCi0JewotCQlpZiAobGF0Y2gtPm93bmVyX3BpZCAhPSBNeVByb2NQaWQpCi0JCQll bG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gYSBsYXRjaCBvd25lZCBieSBhbm90aGVyIHBy b2Nlc3MiKTsKLQkJaWYgKHNldC0+bGF0Y2gpCi0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdh aXQgb24gbW9yZSB0aGFuIG9uZSBsYXRjaCIpOwotCQlpZiAoKGV2ZW50cyAmIFdMX0xBVENI X1NFVCkgIT0gV0xfTEFUQ0hfU0VUKQotCQkJZWxvZyhFUlJPUiwgImxhdGNoIGV2ZW50cyBv bmx5IHN1cHBvcnQgYmVpbmcgc2V0Iik7Ci0JfQotCWVsc2UKKwkvKgorCSAqIEl0IGRvZXNu J3QgbWFrZSBtdWNoIHNlbnNlIHRvIHdhaXQgZm9yIFdMX0lOVEVSUlVQVCB3aXRoIGVtcHR5 CisJICogaW50ZXJydXB0TWFzaywgYnV0IHdlIGFsbG93IGl0IHNvIHRoYXQgeW91IGNhbiB1 c2UgTW9kaWZ5RXZlbnQgdG8gc2V0CisJICogdGhlIGludGVycnVwdE1hc2sgbGF0ZXIuIE5v bi16ZXJvIGludGVycnVwdE1hc2sgZG9lc24ndCBtYWtlIHNlbnNlCisJICogd2l0aG91dCBX TF9JTlRFUlJVUFQsIGhvd2V2ZXIuCisJICovCisJaWYgKGludGVycnVwdE1hc2sgIT0gMCkK IAl7Ci0JCWlmIChldmVudHMgJiBXTF9MQVRDSF9TRVQpCi0JCQllbG9nKEVSUk9SLCAiY2Fu bm90IHdhaXQgb24gbGF0Y2ggd2l0aG91dCBhIHNwZWNpZmllZCBsYXRjaCIpOworCQlpZiAo KGV2ZW50cyAmIFdMX0lOVEVSUlVQVCkgIT0gV0xfSU5URVJSVVBUKQorCQkJZWxvZyhFUlJP UiwgImludGVycnVwdGVkIGV2ZW50cyBvbmx5IHN1cHBvcnQgYmVpbmcgc2V0Iik7CiAJfQog CiAJLyogd2FpdGluZyBmb3Igc29ja2V0IHJlYWRpbmVzcyB3aXRob3V0IGEgc29ja2V0IGlu ZGljYXRlcyBhIGJ1ZyAqLwpAQCAtMTAwMiwxMCArODM4LDEwIEBAIEFkZFdhaXRFdmVudFRv U2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBwZ3NvY2tldCBmZCwgTGF0 Y2ggKmxhdGNoLAogCWV2ZW50LT5yZXNldCA9IGZhbHNlOwogI2VuZGlmCiAKLQlpZiAoZXZl bnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnRzID09IFdMX0lOVEVSUlVQVCkKIAl7 Ci0JCXNldC0+bGF0Y2ggPSBsYXRjaDsKLQkJc2V0LT5sYXRjaF9wb3MgPSBldmVudC0+cG9z OworCQlzZXQtPmludGVycnVwdF9tYXNrID0gaW50ZXJydXB0TWFzazsKKwkJc2V0LT5pbnRl cnJ1cHRfcG9zID0gZXZlbnQtPnBvczsKICNpZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZfUElQ RSkKIAkJZXZlbnQtPmZkID0gc2VsZnBpcGVfcmVhZGZkOwogI2VsaWYgZGVmaW5lZChXQUlU X1VTRV9TSUdOQUxGRCkKQEAgLTEwMzksMTQgKzg3NSwxNCBAQCBBZGRXYWl0RXZlbnRUb1Nl dChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNo ICpsYXRjaCwKIH0KIAogLyoKLSAqIENoYW5nZSB0aGUgZXZlbnQgbWFzayBhbmQsIGluIHRo ZSBXTF9MQVRDSF9TRVQgY2FzZSwgdGhlIGxhdGNoIGFzc29jaWF0ZWQKLSAqIHdpdGggdGhl IFdhaXRFdmVudC4gIFRoZSBsYXRjaCBtYXkgYmUgY2hhbmdlZCB0byBOVUxMIHRvIGRpc2Fi bGUgdGhlIGxhdGNoCi0gKiB0ZW1wb3JhcmlseSwgYW5kIHRoZW4gc2V0IGJhY2sgdG8gYSBs YXRjaCBsYXRlci4KKyAqIENoYW5nZSB0aGUgZXZlbnQgbWFzayBhbmQsIGluIHRoZSBXTF9J TlRFUlJVUFQgY2FzZSwgdGhlIGludGVycnVwdCBtYXNrCisgKiBhc3NvY2lhdGVkIHdpdGgg dGhlIFdhaXRFdmVudC4gIFRoZSBpbnRlcnJ1cHQgbWFzayBtYXkgYmUgY2hhbmdlZCB0byAw IHRvCisgKiBkaXNhYmxlIHRoZSB3YWtldXBzIG9uIGludGVycnVwdHMgdGVtcG9yYXJpbHks IGFuZCB0aGVuIHNldCBiYWNrIGxhdGVyLgogICoKICAqICdwb3MnIGlzIHRoZSBpZCByZXR1 cm5lZCBieSBBZGRXYWl0RXZlbnRUb1NldC4KICAqLwogdm9pZAotTW9kaWZ5V2FpdEV2ZW50 KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAqbGF0 Y2gpCitNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQz MiBldmVudHMsIHVpbnQzMiBpbnRlcnJ1cHRNYXNrKQogewogCVdhaXRFdmVudCAgKmV2ZW50 OwogI2lmIGRlZmluZWQoV0FJVF9VU0VfS1FVRVVFKQpAQCAtMTA2MSwxOSArODk3LDE5IEBA IE1vZGlmeVdhaXRFdmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2 ZW50cywgTGF0Y2ggKmxhdGNoKQogI2VuZGlmCiAKIAkvKgotCSAqIElmIG5laXRoZXIgdGhl IGV2ZW50IG1hc2sgbm9yIHRoZSBhc3NvY2lhdGVkIGxhdGNoIGNoYW5nZXMsIHJldHVybgot CSAqIGVhcmx5LiBUaGF0J3MgYW4gaW1wb3J0YW50IG9wdGltaXphdGlvbiBmb3Igc29tZSBz b2NrZXRzLCB3aGVyZQorCSAqIElmIG5laXRoZXIgdGhlIGV2ZW50IG1hc2sgbm9yIHRoZSBh c3NvY2lhdGVkIGludGVycnVwdCBtYXNrIGNoYW5nZXMsCisJICogcmV0dXJuIGVhcmx5LiBU aGF0J3MgYW4gaW1wb3J0YW50IG9wdGltaXphdGlvbiBmb3Igc29tZSBzb2NrZXRzLCB3aGVy ZQogCSAqIE1vZGlmeVdhaXRFdmVudCBpcyBmcmVxdWVudGx5IHVzZWQgdG8gc3dpdGNoIGZy b20gd2FpdGluZyBmb3IgcmVhZHMgdG8KIAkgKiB3YWl0aW5nIG9uIHdyaXRlcy4KIAkgKi8K IAlpZiAoZXZlbnRzID09IGV2ZW50LT5ldmVudHMgJiYKLQkJKCEoZXZlbnQtPmV2ZW50cyAm IFdMX0xBVENIX1NFVCkgfHwgc2V0LT5sYXRjaCA9PSBsYXRjaCkpCisJCSghKGV2ZW50LT5l dmVudHMgJiBXTF9JTlRFUlJVUFQpIHx8IHNldC0+aW50ZXJydXB0X21hc2sgPT0gaW50ZXJy dXB0TWFzaykpCiAJCXJldHVybjsKIAotCWlmIChldmVudC0+ZXZlbnRzICYgV0xfTEFUQ0hf U0VUICYmCisJaWYgKGV2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJVUFQgJiYKIAkJZXZlbnRz ICE9IGV2ZW50LT5ldmVudHMpCiAJewotCQllbG9nKEVSUk9SLCAiY2Fubm90IG1vZGlmeSBs YXRjaCBldmVudCIpOworCQllbG9nKEVSUk9SLCAiY2Fubm90IG1vZGlmeSBpbnRlcnJ1cHRz IGV2ZW50Iik7CiAJfQogCiAJaWYgKGV2ZW50LT5ldmVudHMgJiBXTF9QT1NUTUFTVEVSX0RF QVRIKQpAQCAtMTA4NCwyNSArOTIwLDE5IEBAIE1vZGlmeVdhaXRFdmVudChXYWl0RXZlbnRT ZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2ZW50cywgTGF0Y2ggKmxhdGNoKQogCS8qIEZJ WE1FOiB2YWxpZGF0ZSBldmVudCBtYXNrICovCiAJZXZlbnQtPmV2ZW50cyA9IGV2ZW50czsK IAotCWlmIChldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChldmVudHMgPT0gV0xfSU5U RVJSVVBUKQogCXsKLQkJaWYgKGxhdGNoICYmIGxhdGNoLT5vd25lcl9waWQgIT0gTXlQcm9j UGlkKQotCQkJZWxvZyhFUlJPUiwgImNhbm5vdCB3YWl0IG9uIGEgbGF0Y2ggb3duZWQgYnkg YW5vdGhlciBwcm9jZXNzIik7Ci0JCXNldC0+bGF0Y2ggPSBsYXRjaDsKKwkJc2V0LT5pbnRl cnJ1cHRfbWFzayA9IGludGVycnVwdE1hc2s7CiAKIAkJLyoKLQkJICogT24gVW5peCwgd2Ug ZG9uJ3QgbmVlZCB0byBtb2RpZnkgdGhlIGtlcm5lbCBvYmplY3QgYmVjYXVzZSB0aGUKLQkJ ICogdW5kZXJseWluZyBwaXBlIChpZiB0aGVyZSBpcyBvbmUpIGlzIHRoZSBzYW1lIGZvciBh bGwgbGF0Y2hlcyBzbyB3ZQotCQkgKiBjYW4gcmV0dXJuIGltbWVkaWF0ZWx5LiAgT24gV2lu ZG93cywgd2UgbmVlZCB0byB1cGRhdGUgb3VyIGFycmF5IG9mCi0JCSAqIGhhbmRsZXMsIGJ1 dCB3ZSBsZWF2ZSB0aGUgb2xkIG9uZSBpbiBwbGFjZSBhbmQgdG9sZXJhdGUgc3B1cmlvdXMK LQkJICogd2FrZXVwcyBpZiB0aGUgbGF0Y2ggaXMgZGlzYWJsZWQuCisJCSAqIFdlIGRvbid0 IGJvdGhlciB0byBhZGp1c3QgdGhlIGV2ZW50IHdoZW4gdGhlIGludGVycnVwdCBtYXNrCisJ CSAqIGNoYW5nZXMuICBJdCBtZWFucyB0aGF0IHdoZW4gaW50ZXJydXB0IG1hc2sgaXMgc2V0 IHRvIDAsIHdlIHdpbGwKKwkJICogbGlzdGVuIG9uIHRoZSBrZXJuZWwgb2JqZWN0IHVubmVj ZXNzYXJpbHksIGFuZCBtaWdodCBnZXQgc29tZQorCQkgKiBzcHVyaW91cyB3YWtldXBzLiBU aGUgaW50ZXJydXB0IHNlbmRpbmcgY29kZSBzaG91bGQgbm90IHdha2VzIHVzIHVwCisJCSAq IGlmIHRoZSBtYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzIGlzIHplcm8sIHRob3VnaCwgc28g aXQgc2hvdWxkIGJlCisJCSAqIHJhcmUuCiAJCSAqLwotI2lmIGRlZmluZWQoV0FJVF9VU0Vf V0lOMzIpCi0JCWlmICghbGF0Y2gpCi0JCQlyZXR1cm47Ci0jZWxzZQogCQlyZXR1cm47Ci0j ZW5kaWYKIAl9CiAKICNpZiBkZWZpbmVkKFdBSVRfVVNFX0VQT0xMKQpAQCAtMTEzMiw5ICs5 NjIsOCBAQCBXYWl0RXZlbnRBZGp1c3RFcG9sbChXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2 ZW50ICpldmVudCwgaW50IGFjdGlvbikKIAllcG9sbF9ldi5ldmVudHMgPSBFUE9MTEVSUiB8 IEVQT0xMSFVQOwogCiAJLyogcHJlcGFyZSBwb2xsZmQgZW50cnkgb25jZSAqLwotCWlmIChl dmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnQtPmV2ZW50cyA9PSBX TF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAhPSBOVUxMKTsKIAkJZXBv bGxfZXYuZXZlbnRzIHw9IEVQT0xMSU47CiAJfQogCWVsc2UgaWYgKGV2ZW50LT5ldmVudHMg PT0gV0xfUE9TVE1BU1RFUl9ERUFUSCkKQEAgLTExODEsOSArMTAxMCw4IEBAIFdhaXRFdmVu dEFkanVzdFBvbGwoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZlbnQpCiAJcG9s bGZkLT5mZCA9IGV2ZW50LT5mZDsKIAogCS8qIHByZXBhcmUgcG9sbGZkIGVudHJ5IG9uY2Ug Ki8KLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYgKGV2ZW50LT5l dmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNzZXJ0KHNldC0+bGF0Y2ggIT0gTlVM TCk7CiAJCXBvbGxmZC0+ZXZlbnRzID0gUE9MTElOOwogCX0KIAllbHNlIGlmIChldmVudC0+ ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgpCkBAIC0xMjQ1LDkgKzEwNzMsOSBAQCBX YWl0RXZlbnRBZGp1c3RLcXVldWVBZGRQb3N0bWFzdGVyKHN0cnVjdCBrZXZlbnQgKmtfZXYs IFdhaXRFdmVudCAqZXZlbnQpCiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAotV2FpdEV2ZW50 QWRqdXN0S3F1ZXVlQWRkTGF0Y2goc3RydWN0IGtldmVudCAqa19ldiwgV2FpdEV2ZW50ICpl dmVudCkKK1dhaXRFdmVudEFkanVzdEtxdWV1ZUFkZEludGVycnVwdFdha2V1cChzdHJ1Y3Qg a2V2ZW50ICprX2V2LCBXYWl0RXZlbnQgKmV2ZW50KQogewotCS8qIEZvciBub3cgbGF0Y2gg Y2FuIG9ubHkgYmUgYWRkZWQsIG5vdCByZW1vdmVkLiAqLworCS8qIEZvciBub3cgaW50ZXJy dXB0IHdha2V1cCBjYW4gb25seSBiZSBhZGRlZCwgbm90IHJlbW92ZWQuICovCiAJa19ldi0+ aWRlbnQgPSBTSUdVUkc7CiAJa19ldi0+ZmlsdGVyID0gRVZGSUxUX1NJR05BTDsKIAlrX2V2 LT5mbGFncyA9IEVWX0FERDsKQEAgLTEyNzMsOCArMTEwMSw3IEBAIFdhaXRFdmVudEFkanVz dEtxdWV1ZShXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCwgaW50IG9sZF9l dmVudHMpCiAJaWYgKG9sZF9ldmVudHMgPT0gZXZlbnQtPmV2ZW50cykKIAkJcmV0dXJuOwog Ci0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgIT0gV0xfTEFUQ0hfU0VUIHx8IHNldC0+bGF0Y2gg IT0gTlVMTCk7Ci0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUIHx8CisJ QXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUIHx8CiAJCSAgIGV2ZW50LT5l dmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCB8fAogCQkgICAoZXZlbnQtPmV2ZW50cyAm IChXTF9TT0NLRVRfUkVBREFCTEUgfAogCQkJCQkJCSBXTF9TT0NLRVRfV1JJVEVBQkxFIHwK QEAgLTEyODksMTAgKzExMTYsMTAgQEAgV2FpdEV2ZW50QWRqdXN0S3F1ZXVlKFdhaXRFdmVu dFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50LCBpbnQgb2xkX2V2ZW50cykKIAkJICovCiAJ CVdhaXRFdmVudEFkanVzdEtxdWV1ZUFkZFBvc3RtYXN0ZXIoJmtfZXZbY291bnQrK10sIGV2 ZW50KTsKIAl9Ci0JZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJ ZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQkvKiBXZSBk ZXRlY3QgbGF0Y2ggd2FrZXVwIHVzaW5nIGEgc2lnbmFsIGV2ZW50LiAqLwotCQlXYWl0RXZl bnRBZGp1c3RLcXVldWVBZGRMYXRjaCgma19ldltjb3VudCsrXSwgZXZlbnQpOworCQkvKiBX ZSBkZXRlY3QgaW50ZXJydXB0IHdha2V1cCB1c2luZyBhIHNpZ25hbCBldmVudC4gKi8KKwkJ V2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkSW50ZXJydXB0V2FrZXVwKCZrX2V2W2NvdW50Kytd LCBldmVudCk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMzcwLDEwICsxMTk3LDEzIEBAIFdhaXRF dmVudEFkanVzdFdpbjMyKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50KQog ewogCUhBTkRMRQkgICAqaGFuZGxlID0gJnNldC0+aGFuZGxlc1tldmVudC0+cG9zICsgMV07 CiAKLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYgKGV2ZW50LT5l dmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNzZXJ0KHNldC0+bGF0Y2ggIT0gTlVM TCk7Ci0JCSpoYW5kbGUgPSBzZXQtPmxhdGNoLT5ldmVudDsKKwkJLyoKKwkJICogV2UgcmVn aXN0ZXIgdGhlIGV2ZW50IGV2ZW4gaWYgaW50ZXJydXB0X21hc2sgaXMgemVyby4gV2UgbWln aHQgZ2V0CisJCSAqIHNvbWUgc3B1cmlvdXMgd2FrZXVwcywgYnV0IHRoYXQncyBPSworCQkg Ki8KKwkJKmhhbmRsZSA9IE15UHJvYyA/IE15UHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQg OiBMb2NhbEludGVycnVwdFdha2V1cEV2ZW50OwogCX0KIAllbHNlIGlmIChldmVudC0+ZXZl bnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgpCiAJewpAQCAtMTQ1MCw3ICsxMjgwLDcgQEAg V2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNldCwgbG9uZyB0aW1lb3V0LAogI2lm bmRlZiBXSU4zMgogCXdhaXRpbmcgPSB0cnVlOwogI2Vsc2UKLQkvKiBFbnN1cmUgdGhhdCBz aWduYWxzIGFyZSBzZXJ2aWNlZCBldmVuIGlmIGxhdGNoIGlzIGFscmVhZHkgc2V0ICovCisJ LyogRW5zdXJlIHRoYXQgc2lnbmFscyBhcmUgc2VydmljZWQgZXZlbiBpZiBpbnRlcnJ1cHQg aXMgYWxyZWFkeSBwZW5kaW5nICovCiAJcGd3aW4zMl9kaXNwYXRjaF9xdWV1ZWRfc2lnbmFs cygpOwogI2VuZGlmCiAJd2hpbGUgKHJldHVybmVkX2V2ZW50cyA9PSAwKQpAQCAtMTQ1OCw1 MiArMTI4OCw1MiBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25n IHRpbWVvdXQsCiAJCWludAkJCXJjOwogCiAJCS8qCi0JCSAqIENoZWNrIGlmIHRoZSBsYXRj aCBpcyBzZXQgYWxyZWFkeS4gSWYgc28sIGxlYXZlIHRoZSBsb29wCisJCSAqIENoZWNrIGlm IHRoZSBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBwZW5kaW5nLiBJZiBzbywgbGVhdmUgdGhlIGxv b3AKIAkJICogaW1tZWRpYXRlbHksIGF2b2lkIGJsb2NraW5nIGFnYWluLiBXZSBkb24ndCBh dHRlbXB0IHRvIHJlcG9ydCBhbnkKIAkJICogb3RoZXIgZXZlbnRzIHRoYXQgbWlnaHQgYWxz byBiZSBzYXRpc2ZpZWQuCiAJCSAqCi0JCSAqIElmIHNvbWVvbmUgc2V0cyB0aGUgbGF0Y2gg YmV0d2VlbiB0aGlzIGFuZCB0aGUKKwkJICogSWYgc29tZW9uZSBzZXRzIHRoZSBpbnRlcnJ1 cHQgZmxhZyBiZXR3ZWVuIHRoaXMgYW5kIHRoZQogCQkgKiBXYWl0RXZlbnRTZXRXYWl0Qmxv Y2soKSBiZWxvdywgdGhlIHNldHRlciB3aWxsIHdyaXRlIGEgYnl0ZSB0byB0aGUKIAkJICog cGlwZSAob3Igc2lnbmFsIHVzIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgd2lsbCBkbyB0aGF0 KSwgYW5kIHRoZQogCQkgKiByZWFkaW5lc3Mgcm91dGluZSB3aWxsIHJldHVybiBpbW1lZGlh dGVseS4KIAkJICoKIAkJICogT24gdW5peCwgSWYgdGhlcmUncyBhIHBlbmRpbmcgYnl0ZSBp biB0aGUgc2VsZiBwaXBlLCB3ZSdsbCBub3RpY2UKIAkJICogd2hlbmV2ZXIgYmxvY2tpbmcu IE9ubHkgY2xlYXJpbmcgdGhlIHBpcGUgaW4gdGhhdCBjYXNlIGF2b2lkcwotCQkgKiBoYXZp bmcgdG8gZHJhaW4gaXQgZXZlcnkgdGltZSBXYWl0TGF0Y2hPclNvY2tldCgpIGlzIHVzZWQu IFNob3VsZAotCQkgKiB0aGUgcGlwZS1idWZmZXIgZmlsbCB1cCB3ZSdyZSBzdGlsbCBvaywg YmVjYXVzZSB0aGUgcGlwZSBpcyBpbgotCQkgKiBub25ibG9ja2luZyBtb2RlLiBJdCdzIHVu bGlrZWx5IGZvciB0aGF0IHRvIGhhcHBlbiwgYmVjYXVzZSB0aGUKKwkJICogaGF2aW5nIHRv IGRyYWluIGl0IGV2ZXJ5IHRpbWUgV2FpdEludGVycnVwdE9yU29ja2V0KCkgaXMgdXNlZC4K KwkJICogU2hvdWxkIHRoZSBwaXBlLWJ1ZmZlciBmaWxsIHVwIHdlJ3JlIHN0aWxsIG9rLCBi ZWNhdXNlIHRoZSBwaXBlIGlzCisJCSAqIGluIG5vbmJsb2NraW5nIG1vZGUuIEl0J3MgdW5s aWtlbHkgZm9yIHRoYXQgdG8gaGFwcGVuLCBiZWNhdXNlIHRoZQogCQkgKiBzZWxmIHBpcGUg aXNuJ3QgZmlsbGVkIHVubGVzcyB3ZSdyZSBibG9ja2luZyAod2FpdGluZyA9IHRydWUpLCBv cgotCQkgKiBmcm9tIGluc2lkZSBhIHNpZ25hbCBoYW5kbGVyIGluIGxhdGNoX3NpZ3VyZ19o YW5kbGVyKCkuCisJCSAqIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhhbmRsZXIgaW4gaW50ZXJy dXB0X3NpZ3VyZ19oYW5kbGVyKCkuCiAJCSAqCiAJCSAqIE9uIHdpbmRvd3MsIHdlJ2xsIGFs c28gbm90aWNlIGlmIHRoZXJlJ3MgYSBwZW5kaW5nIGV2ZW50IGZvciB0aGUKLQkJICogbGF0 Y2ggd2hlbiBibG9ja2luZywgYnV0IHRoZXJlJ3Mgbm8gZGFuZ2VyIG9mIGFueXRoaW5nIGZp bGxpbmcgdXAsCi0JCSAqIGFzICJTZXR0aW5nIGFuIGV2ZW50IHRoYXQgaXMgYWxyZWFkeSBz ZXQgaGFzIG5vIGVmZmVjdC4iLgorCQkgKiBpbnRlcnJ1cHQgd2hlbiBibG9ja2luZywgYnV0 IHRoZXJlJ3Mgbm8gZGFuZ2VyIG9mIGFueXRoaW5nIGZpbGxpbmcKKwkJICogdXAsIGFzICJT ZXR0aW5nIGFuIGV2ZW50IHRoYXQgaXMgYWxyZWFkeSBzZXQgaGFzIG5vIGVmZmVjdC4iLgog CQkgKgotCQkgKiBOb3RlOiB3ZSBhc3N1bWUgdGhhdCB0aGUga2VybmVsIGNhbGxzIGludm9s dmVkIGluIGxhdGNoIG1hbmFnZW1lbnQKLQkJICogd2lsbCBwcm92aWRlIGFkZXF1YXRlIHN5 bmNocm9uaXphdGlvbiBvbiBtYWNoaW5lcyB3aXRoIHdlYWsgbWVtb3J5Ci0JCSAqIG9yZGVy aW5nLCBzbyB0aGF0IHdlIGNhbm5vdCBtaXNzIHNlZWluZyBpc19zZXQgaWYgYSBub3RpZmlj YXRpb24KLQkJICogaGFzIGFscmVhZHkgYmVlbiBxdWV1ZWQuCisJCSAqIE5vdGU6IHdlIGFz c3VtZSB0aGF0IHRoZSBrZXJuZWwgY2FsbHMgaW52b2x2ZWQgaW4gaW50ZXJydXB0CisJCSAq IG1hbmFnZW1lbnQgd2lsbCBwcm92aWRlIGFkZXF1YXRlIHN5bmNocm9uaXphdGlvbiBvbiBt YWNoaW5lcyB3aXRoCisJCSAqIHdlYWsgbWVtb3J5IG9yZGVyaW5nLCBzbyB0aGF0IHdlIGNh bm5vdCBtaXNzIHNlZWluZyBpc19zZXQgaWYgYQorCQkgKiBub3RpZmljYXRpb24gaGFzIGFs cmVhZHkgYmVlbiBxdWV1ZWQuCiAJCSAqLwotCQlpZiAoc2V0LT5sYXRjaCAmJiAhc2V0LT5s YXRjaC0+aXNfc2V0KQorCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19h dG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9t YXNrKSA9PSAwKQogCQl7Ci0JCQkvKiBhYm91dCB0byBzbGVlcCBvbiBhIGxhdGNoICovCi0J CQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IHRydWU7CisJCQkvKiBhYm91dCB0byBz bGVlcCB3YWl0aW5nIGZvciBpbnRlcnJ1cHRzICovCisJCQlwZ19hdG9taWNfd3JpdGVfdTMy KE15TWF5YmVTbGVlcGluZ09uSW50ZXJydXB0cywgc2V0LT5pbnRlcnJ1cHRfbWFzayk7CiAJ CQlwZ19tZW1vcnlfYmFycmllcigpOwogCQkJLyogYW5kIHJlY2hlY2sgKi8KIAkJfQogCi0J CWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJaWYgKHNldC0+aW50 ZXJydXB0X21hc2sgIT0gMCAmJiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVy cnVwdHMpICYgc2V0LT5pbnRlcnJ1cHRfbWFzaykgIT0gMCkKIAkJewogCQkJb2NjdXJyZWRf ZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQlvY2N1cnJlZF9ldmVudHMtPnBv cyA9IHNldC0+bGF0Y2hfcG9zOworCQkJb2NjdXJyZWRfZXZlbnRzLT5wb3MgPSBzZXQtPmlu dGVycnVwdF9wb3M7CiAJCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9Ci0JCQkJc2V0 LT5ldmVudHNbc2V0LT5sYXRjaF9wb3NdLnVzZXJfZGF0YTsKLQkJCW9jY3VycmVkX2V2ZW50 cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCXNldC0+ZXZlbnRzW3NldC0+aW50ZXJy dXB0X3Bvc10udXNlcl9kYXRhOworCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9J TlRFUlJVUFQ7CiAJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCXJldHVybmVkX2V2ZW50cysr OwogCiAJCQkvKiBjb3VsZCBoYXZlIGJlZW4gc2V0IGFib3ZlICovCi0JCQlzZXQtPmxhdGNo LT5tYXliZV9zbGVlcGluZyA9IGZhbHNlOworCQkJcGdfYXRvbWljX3dyaXRlX3UzMihNeU1h eWJlU2xlZXBpbmdPbkludGVycnVwdHMsIDApOwogCiAJCQlicmVhazsKIAkJfQpAQCAtMTUx NiwxMCArMTM0NiwxMCBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBs b25nIHRpbWVvdXQsCiAJCXJjID0gV2FpdEV2ZW50U2V0V2FpdEJsb2NrKHNldCwgY3VyX3Rp bWVvdXQsCiAJCQkJCQkJCSAgIG9jY3VycmVkX2V2ZW50cywgbmV2ZW50cyk7CiAKLQkJaWYg KHNldC0+bGF0Y2gpCisJCWlmIChzZXQtPmludGVycnVwdF9tYXNrICE9IDApCiAJCXsKLQkJ CUFzc2VydChzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyk7Ci0JCQlzZXQtPmxhdGNoLT5t YXliZV9zbGVlcGluZyA9IGZhbHNlOworCQkJQXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMihN eU1heWJlU2xlZXBpbmdPbkludGVycnVwdHMpID09IHNldC0+aW50ZXJydXB0X21hc2spOwor CQkJcGdfYXRvbWljX3dyaXRlX3UzMihNeU1heWJlU2xlZXBpbmdPbkludGVycnVwdHMsIDAp OwogCQl9CiAKIAkJaWYgKHJjID09IC0xKQpAQCAtMTYwNywxNiArMTQzNywxNiBAQCBXYWl0 RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwK IAkJb2NjdXJyZWRfZXZlbnRzLT51c2VyX2RhdGEgPSBjdXJfZXZlbnQtPnVzZXJfZGF0YTsK IAkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSAwOwogCi0JCWlmIChjdXJfZXZlbnQtPmV2 ZW50cyA9PSBXTF9MQVRDSF9TRVQgJiYKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdM X0lOVEVSUlVQVCAmJgogCQkJY3VyX2Vwb2xsX2V2ZW50LT5ldmVudHMgJiAoRVBPTExJTiB8 IEVQT0xMRVJSIHwgRVBPTExIVVApKQogCQl7CiAJCQkvKiBEcmFpbiB0aGUgc2lnbmFsZmQu ICovCiAJCQlkcmFpbigpOwogCi0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5p c19zZXQpCisJCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNf cmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAh PSAwKQogCQkJewogCQkJCW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VU OwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCW9j Y3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwogCQkJCW9jY3VycmVkX2V2 ZW50cysrOwogCQkJCXJldHVybmVkX2V2ZW50cysrOwogCQkJfQpAQCAtMTc2OSwxMyArMTU5 OSwxMyBAQCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBj dXJfdGltZW91dCwKIAkJb2NjdXJyZWRfZXZlbnRzLT51c2VyX2RhdGEgPSBjdXJfZXZlbnQt PnVzZXJfZGF0YTsKIAkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSAwOwogCi0JCWlmIChj dXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQgJiYKKwkJaWYgKGN1cl9ldmVudC0+ ZXZlbnRzID09IFdMX0lOVEVSUlVQVCAmJgogCQkJY3VyX2txdWV1ZV9ldmVudC0+ZmlsdGVy ID09IEVWRklMVF9TSUdOQUwpCiAJCXsKLQkJCWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0 Y2gtPmlzX3NldCkKKwkJCWlmIChzZXQtPmludGVycnVwdF9tYXNrICE9IDAgJiYgKHBnX2F0 b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmIHNldC0+aW50ZXJydXB0X21h c2spICE9IDApCiAJCQl7CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9T T0NLRVQ7Ci0JCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJ CQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQkJb2NjdXJy ZWRfZXZlbnRzKys7CiAJCQkJcmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBAIC0xODkxLDE2 ICsxNzIxLDE2IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwg aW50IGN1cl90aW1lb3V0LAogCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9IGN1cl9l dmVudC0+dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJ aWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCAmJgorCQlpZiAoY3VyX2V2 ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUICYmCiAJCQkoY3VyX3BvbGxmZC0+cmV2ZW50 cyAmIChQT0xMSU4gfCBQT0xMSFVQIHwgUE9MTEVSUiB8IFBPTExOVkFMKSkpCiAJCXsKIAkJ CS8qIFRoZXJlJ3MgZGF0YSBpbiB0aGUgc2VsZi1waXBlLCBjbGVhciBpdC4gKi8KIAkJCWRy YWluKCk7CiAKLQkJCWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJ CWlmIChzZXQtPmludGVycnVwdF9tYXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3UzMihN eVBlbmRpbmdJbnRlcnJ1cHRzKSAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApCiAJCQl7 CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQkJb2Nj dXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJb2NjdXJyZWRfZXZl bnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRzKys7CiAJ CQkJcmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBAIC0xOTk5LDYgKzE4MjksMTUgQEAgV2Fp dEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQs CiAJCQljdXJfZXZlbnQtPnJlc2V0ID0gZmFsc2U7CiAJCX0KIAorCQkvKgorCQkgKiBXZSBu ZWVkIHRvIHVzZSBkaWZmZXJlbnQgZXZlbnQgb2JqZWN0IGRlcGVuZGluZyBvbiB3aGV0aGVy ICJsb2NhbCIKKwkJICogb3IgInNoYXJlZCBtZW1vcnkiIGludGVycnVwdHMgYXJlIGluIHVz ZS4gVGhlcmUncyBubyBlYXN5IHdheSB0bworCQkgKiBhZGp1c3QgYWxsIGV4aXN0aW5nIFdh aXRFdmVudFNldCB3aGVuIHlvdSBzd2l0Y2ggZnJvbSBsb2NhbCB0bworCQkgKiBzaGFyZWQg b3IgYmFjaywgc28gd2UgcmVmcmVzaCBpdCBvbiBldmVyeSBjYWxsLgorCQkgKi8KKwkJaWYg KGN1cl9ldmVudC0+ZXZlbnRzICYgV0xfSU5URVJSVVBUKQorCQkJV2FpdEV2ZW50QWRqdXN0 V2luMzIoc2V0LCBjdXJfZXZlbnQpOworCiAJCS8qCiAJCSAqIFdlIGFzc29jaWF0ZSB0aGUg c29ja2V0IHdpdGggYSBuZXcgZXZlbnQgaGFuZGxlIGZvciBlYWNoCiAJCSAqIFdhaXRFdmVu dFNldC4gIEZEX0NMT1NFIGlzIG9ubHkgZ2VuZXJhdGVkIG9uY2UgaWYgdGhlIG90aGVyIGVu ZApAQCAtMjEwNCwxOSArMTk0MywxNSBAQCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2 ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJb2NjdXJyZWRfZXZlbnRzLT51c2Vy X2RhdGEgPSBjdXJfZXZlbnQtPnVzZXJfZGF0YTsKIAkJb2NjdXJyZWRfZXZlbnRzLT5ldmVu dHMgPSAwOwogCi0JCWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJ CWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCS8qCi0J CQkgKiBXZSBjYW5ub3QgdXNlIHNldC0+bGF0Y2gtPmV2ZW50IHRvIHJlc2V0IHRoZSBmaXJl ZCBldmVudCBpZiB3ZQotCQkJICogYXJlbid0IHdhaXRpbmcgb24gdGhpcyBsYXRjaCBub3cu Ci0JCQkgKi8KIAkJCWlmICghUmVzZXRFdmVudChzZXQtPmhhbmRsZXNbY3VyX2V2ZW50LT5w b3MgKyAxXSkpCiAJCQkJZWxvZyhFUlJPUiwgIlJlc2V0RXZlbnQgZmFpbGVkOiBlcnJvciBj b2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKIAotCQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0 LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiAo cGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgc2V0LT5pbnRlcnJ1 cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZB TElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0xBVENIX1NF VDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lOVEVSUlVQVDsKIAkJCQlv Y2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMrKzsKIAkJCX0KQEAgLTIx NjEsNyArMTk5Niw3IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNl dCwgaW50IGN1cl90aW1lb3V0LAogCiAJCQkJLyotLS0tLS0KIAkJCQkgKiBXYWl0Rm9yTXVs dGlwbGVPYmplY3RzIGRvZXNuJ3QgZ3VhcmFudGVlIHRoYXQgYSByZWFkIGV2ZW50Ci0JCQkJ ICogd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgbGF0Y2ggaXMgc2V0IGF0IHRoZSBzYW1lIHRp bWUuICBFdmVuCisJCQkJICogd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgaW50ZXJydXB0IGlz IHNldCBhdCB0aGUgc2FtZSB0aW1lLiAgRXZlbgogCQkJCSAqIGlmIGl0IGRpZCwgdGhlIGNh bGxlciBtaWdodCBkcm9wIHRoYXQgZXZlbnQgZXhwZWN0aW5nIGl0IHRvCiAJCQkJICogcmVv Y2N1ciBvbiBuZXh0IGNhbGwuICBTbywgd2UgbXVzdCBmb3JjZSB0aGUgZXZlbnQgdG8gYmUK IAkJCQkgKiByZXNldCBpZiB0aGlzIFdhaXRFdmVudFNldCBpcyB1c2VkIGFnYWluIGluIG9y ZGVyIHRvIGF2b2lkCkBAIC0yMjY3LDE4ICsyMTAyLDE3IEBAIEdldE51bVJlZ2lzdGVyZWRX YWl0RXZlbnRzKFdhaXRFdmVudFNldCAqc2V0KQogI2lmIGRlZmluZWQoV0FJVF9VU0VfU0VM Rl9QSVBFKQogCiAvKgotICogU2V0TGF0Y2ggdXNlcyBTSUdVUkcgdG8gd2FrZSB1cCB0aGUg cHJvY2VzcyB3YWl0aW5nIG9uIHRoZSBsYXRjaC4KLSAqCi0gKiBXYWtlIHVwIFdhaXRMYXRj aCwgaWYgd2UncmUgd2FpdGluZy4KKyAqIFdha2V1cE90aGVyUHJvYyBhbmQgV2FrdXBNeVBy b2MgdXNlIFNJR1VSRyB0byB3YWtlIHVwIHRoZSBwcm9jZXNzIHdhaXRpbmcKKyAqIGZvciBh biBpbnRlcnJ1cHQKICAqLwogc3RhdGljIHZvaWQKLWxhdGNoX3NpZ3VyZ19oYW5kbGVyKFNJ R05BTF9BUkdTKQoraW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKFNJR05BTF9BUkdTKQogewog CWlmICh3YWl0aW5nKQogCQlzZW5kU2VsZlBpcGVCeXRlKCk7CiB9CiAKLS8qIFNlbmQgb25l IGJ5dGUgdG8gdGhlIHNlbGYtcGlwZSwgdG8gd2FrZSB1cCBXYWl0TGF0Y2ggKi8KKy8qIFNl bmQgb25lIGJ5dGUgdG8gdGhlIHNlbGYtcGlwZSwgdG8gd2FrZSB1cCBXYWl0SW50ZXJydXB0 ICovCiBzdGF0aWMgdm9pZAogc2VuZFNlbGZQaXBlQnl0ZSh2b2lkKQogewpAQCAtMjI5NSw3 ICsyMTI5LDcgQEAgcmV0cnk6CiAKIAkJLyoKIAkJICogSWYgdGhlIHBpcGUgaXMgZnVsbCwg d2UgZG9uJ3QgbmVlZCB0byByZXRyeSwgdGhlIGRhdGEgdGhhdCdzIHRoZXJlCi0JCSAqIGFs cmVhZHkgaXMgZW5vdWdoIHRvIHdha2UgdXAgV2FpdExhdGNoLgorCQkgKiBhbHJlYWR5IGlz IGVub3VnaCB0byB3YWtlIHVwIFdhaXRJbnRlcnJ1cHQuCiAJCSAqLwogCQlpZiAoZXJybm8g PT0gRUFHQUlOIHx8IGVycm5vID09IEVXT1VMREJMT0NLKQogCQkJcmV0dXJuOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCmluZGV4IDEx MmE1MThiYWUwLi45YWYyOTcwNjYwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9jb25kaXRpb25fdmFyaWFibGUuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIKICNp bmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jbGlzdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgpAQCAtMTQ3 LDIzICsxNDgsMjMgQEAgQ29uZGl0aW9uVmFyaWFibGVUaW1lZFNsZWVwKENvbmRpdGlvblZh cmlhYmxlICpjdiwgbG9uZyB0aW1lb3V0LAogCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0 YXJ0X3RpbWUpOwogCQlBc3NlcnQodGltZW91dCA+PSAwICYmIHRpbWVvdXQgPD0gSU5UX01B WCk7CiAJCWN1cl90aW1lb3V0ID0gdGltZW91dDsKLQkJd2FpdF9ldmVudHMgPSBXTF9MQVRD SF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKKwkJd2FpdF9ldmVu dHMgPSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsK IAl9CiAJZWxzZQotCQl3YWl0X2V2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05f UE1fREVBVEg7CisJCXdhaXRfZXZlbnRzID0gV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSDsKIAogCXdoaWxlICh0cnVlKQogCXsKIAkJYm9vbAkJZG9uZSA9IGZhbHNlOwog CiAJCS8qCi0JCSAqIFdhaXQgZm9yIGxhdGNoIHRvIGJlIHNldC4gIChJZiB3ZSdyZSBhd2Fr ZW5lZCBmb3Igc29tZSBvdGhlcgotCQkgKiByZWFzb24sIHRoZSBjb2RlIGJlbG93IHdpbGwg Y29wZSBhbnl3YXkuKQorCQkgKiBXYWl0IGZvciBpbnRlcnJ1cHQuICAoSWYgd2UncmUgYXdh a2VuZWQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCB0aGUKKwkJICogY29kZSBiZWxvdyB3aWxs IGNvcGUgYW55d2F5LikKIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgd2Fp dF9ldmVudHMsIGN1cl90aW1lb3V0LCB3YWl0X2V2ZW50X2luZm8pOworCQkodm9pZCkgV2Fp dEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgd2FpdF9ldmVudHMs IGN1cl90aW1lb3V0LCB3YWl0X2V2ZW50X2luZm8pOwogCi0JCS8qIFJlc2V0IGxhdGNoIGJl Zm9yZSBleGFtaW5pbmcgdGhlIHN0YXRlIG9mIHRoZSB3YWl0IGxpc3QuICovCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCS8qIENsZWFyIHRoZSBmbGFnIGJlZm9yZSBleGFtaW5pbmcg dGhlIHN0YXRlIG9mIHRoZSB3YWl0IGxpc3QuICovCisJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyoKIAkJICogSWYgdGhpcyBwcm9jZXNzIGhh cyBiZWVuIHRha2VuIG91dCBvZiB0aGUgd2FpdCBsaXN0LCB0aGVuIHdlIGtub3cKQEAgLTE3 Niw5ICsxNzcsMTAgQEAgQ29uZGl0aW9uVmFyaWFibGVUaW1lZFNsZWVwKENvbmRpdGlvblZh cmlhYmxlICpjdiwgbG9uZyB0aW1lb3V0LAogCQkgKiB0aGUgd2FpdCBsaXN0IG9ubHkgd2hl biB0aGUgY2FsbGVyIGNhbGxzCiAJCSAqIENvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAu CiAJCSAqCi0JCSAqIElmIHdlJ3JlIHN0aWxsIGluIHRoZSB3YWl0IGxpc3QsIHRoZW4gdGhl IGxhdGNoIG11c3QgaGF2ZSBiZWVuIHNldAotCQkgKiBieSBzb21ldGhpbmcgb3RoZXIgdGhh biBDb25kaXRpb25WYXJpYWJsZVNpZ25hbDsgdGhvdWdoIHdlIGRvbid0Ci0JCSAqIGd1YXJh bnRlZSBub3QgdG8gcmV0dXJuIHNwdXJpb3VzbHksIHdlJ2xsIGF2b2lkIHRoaXMgb2J2aW91 cyBjYXNlLgorCQkgKiBJZiB3ZSdyZSBzdGlsbCBpbiB0aGUgd2FpdCBsaXN0LCB0aGVuIHRo ZSBpbnRlcnJ1cHQgbXVzdCBoYXZlIGJlZW4KKwkJICogc2VudCBieSBzb21ldGhpbmcgb3Ro ZXIgdGhhbiBDb25kaXRpb25WYXJpYWJsZVNpZ25hbDsgdGhvdWdoIHdlCisJCSAqIGRvbid0 IGd1YXJhbnRlZSBub3QgdG8gcmV0dXJuIHNwdXJpb3VzbHksIHdlJ2xsIGF2b2lkIHRoaXMg b2J2aW91cworCQkgKiBjYXNlLgogCQkgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZjdi0+bXV0 ZXgpOwogCQlpZiAoIXByb2NsaXN0X2NvbnRhaW5zKCZjdi0+d2FrZXVwLCBNeVByb2NOdW1i ZXIsIGN2V2FpdExpbmspKQpAQCAtMjY2LDkgKzI2OCw5IEBAIENvbmRpdGlvblZhcmlhYmxl U2lnbmFsKENvbmRpdGlvblZhcmlhYmxlICpjdikKIAkJcHJvYyA9IHByb2NsaXN0X3BvcF9o ZWFkX25vZGUoJmN2LT53YWtldXAsIGN2V2FpdExpbmspOwogCVNwaW5Mb2NrUmVsZWFzZSgm Y3YtPm11dGV4KTsKIAotCS8qIElmIHdlIGZvdW5kIHNvbWVvbmUgc2xlZXBpbmcsIHNldCB0 aGVpciBsYXRjaCB0byB3YWtlIHRoZW0gdXAuICovCisJLyogSWYgd2UgZm91bmQgc29tZW9u ZSBzbGVlcGluZywgd2FrZSB0aGVtIHVwLiAqLwogCWlmIChwcm9jICE9IE5VTEwpCi0JCVNl dExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiB9CiAKIC8qCkBA IC0yOTcsOCArMjk5LDggQEAgQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoQ29uZGl0aW9u VmFyaWFibGUgKmN2KQogCSAqIENWIGFuZCBpbiBkb2luZyBzbyByZW1vdmUgb3VyIHNlbnRp bmVsIGVudHJ5LiAgQnV0IHRoYXQncyBmaW5lOiBzaW5jZQogCSAqIENWIHdhaXRlcnMgYXJl IGFsd2F5cyBhZGRlZCBhbmQgcmVtb3ZlZCBpbiBvcmRlciwgdGhhdCBtdXN0IG1lYW4gdGhh dAogCSAqIGV2ZXJ5IHByZXZpb3VzIHdhaXRlciBoYXMgYmVlbiB3YWtlbmVkLCBzbyB3ZSdy ZSBkb25lLiAgV2UnbGwgZ2V0IGFuCi0JICogZXh0cmEgInNldCIgb24gb3VyIGxhdGNoIGZy b20gdGhlIHNvbWVvbmUgZWxzZSdzIHNpZ25hbCwgd2hpY2ggaXMKLQkgKiBzbGlnaHRseSBp bmVmZmljaWVudCBidXQgaGFybWxlc3MuCisJICogZXh0cmEgaW50ZXJydXB0IGZyb20gdGhl IHNvbWVvbmUgZWxzZSdzIHNpZ25hbCwgd2hpY2ggaXMgc2xpZ2h0bHkKKwkgKiBpbmVmZmlj aWVudCBidXQgaGFybWxlc3MuCiAJICoKIAkgKiBXZSBjYW4ndCBpbnNlcnQgb3VyIGN2V2Fp dExpbmsgYXMgYSBzZW50aW5lbCBpZiBpdCdzIGFscmVhZHkgaW4gdXNlIGluCiAJICogc29t ZSBvdGhlciBwcm9jbGlzdC4gIFdoaWxlIHRoYXQncyBub3QgZXhwZWN0ZWQgdG8gYmUgdHJ1 ZSBmb3IgdHlwaWNhbApAQCAtMzMxLDcgKzMzMyw3IEBAIENvbmRpdGlvblZhcmlhYmxlQnJv YWRjYXN0KENvbmRpdGlvblZhcmlhYmxlICpjdikKIAogCS8qIEF3YWtlbiBmaXJzdCB3YWl0 ZXIsIGlmIHRoZXJlIHdhcyBvbmUuICovCiAJaWYgKHByb2MgIT0gTlVMTCkKLQkJU2V0TGF0 Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAogCXdoaWxlIChoYXZl X3NlbnRpbmVsKQogCXsKQEAgLTM1NSw2ICszNTcsNiBAQCBDb25kaXRpb25WYXJpYWJsZUJy b2FkY2FzdChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiAJCVNwaW5Mb2NrUmVsZWFzZSgmY3Yt Pm11dGV4KTsKIAogCQlpZiAocHJvYyAhPSBOVUxMICYmIHByb2MgIT0gTXlQcm9jKQotCQkJ U2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiAJfQogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IDIwMzAzMjJmOTU3Li5l ZmYzMTRkZDA1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAt MjA3LDYgKzIwNyw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19sZmluZC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3ByZWRpY2F0ZV9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKQEAgLTE1NzYsNyArMTU3NywxMCBAQCBHZXRTYWZlU25hcHNob3QoU25hcHNob3Qg b3JpZ1NuYXBzaG90KQogCQkJCSBTeGFjdElzUk9VbnNhZmUoTXlTZXJpYWxpemFibGVYYWN0 KSkpCiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoU2VyaWFsaXphYmxlWGFjdEhhc2hMb2NrKTsK LQkJCVByb2NXYWl0Rm9yU2lnbmFsKFdBSVRfRVZFTlRfU0FGRV9TTkFQU0hPVCk7CisJCQlX YWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBXTF9JTlRFUlJV UFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJICBXQUlUX0VWRU5UX1NBRkVf U05BUFNIT1QpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ KTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCQlMV0xvY2tBY3F1aXJlKFNlcmlh bGl6YWJsZVhhY3RIYXNoTG9jaywgTFdfRVhDTFVTSVZFKTsKIAkJfQogCQlNeVNlcmlhbGl6 YWJsZVhhY3QtPmZsYWdzICY9IH5TWEFDVF9GTEFHX0RFRkVSUkFCTEVfV0FJVElORzsKQEAg LTM2MDksNyArMzYxMyw3IEBAIFJlbGVhc2VQcmVkaWNhdGVMb2Nrcyhib29sIGlzQ29tbWl0 LCBib29sIGlzUmVhZE9ubHlTYWZlKQogCQkJICovCiAJCQlpZiAoU3hhY3RJc0RlZmVycmFi bGVXYWl0aW5nKHJvWGFjdCkgJiYKIAkJCQkoU3hhY3RJc1JPVW5zYWZlKHJvWGFjdCkgfHwg U3hhY3RJc1JPU2FmZShyb1hhY3QpKSkKLQkJCQlQcm9jU2VuZFNpZ25hbChyb1hhY3QtPnBn cHJvY25vKTsKKwkJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwg cm9YYWN0LT5wZ3Byb2Nubyk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5j CmluZGV4IDcyMGVmOTllZTgzLi4wMzkzYmJiMzgyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv cHJvYy5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5 bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgpAQCAtMjU3LDE0ICsyNTgsMjgg QEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAkJQXNzZXJ0KGZwUHRyIDw9IGZwRW5kUHRyKTsK IAogCQkvKgotCQkgKiBTZXQgdXAgcGVyLVBHUFJPQyBzZW1hcGhvcmUsIGxhdGNoLCBhbmQg ZnBJbmZvTG9jay4gIFByZXBhcmVkIHhhY3QKLQkJICogZHVtbXkgUEdQUk9DcyBkb24ndCBu ZWVkIHRoZXNlIHRob3VnaCAtIHRoZXkncmUgbmV2ZXIgYXNzb2NpYXRlZAotCQkgKiB3aXRo IGEgcmVhbCBwcm9jZXNzCisJCSAqIFNldCB1cCBwZXItUEdQUk9DIHNlbWFwaG9yZSwgaW50 ZXJydXB0IHdha2V1cCBldmVudCAob24gV2luZG93cyksCisJCSAqIGFuZCBmcEluZm9Mb2Nr LiAgUHJlcGFyZWQgeGFjdCBkdW1teSBQR1BST0NzIGRvbid0IG5lZWQgdGhlc2UKKwkJICog dGhvdWdoIC0gdGhleSdyZSBuZXZlciBhc3NvY2lhdGVkIHdpdGggYSByZWFsIHByb2Nlc3MK IAkJICovCiAJCWlmIChpIDwgTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTKQog CQl7CisjaWZkZWYgV0lOMzIKKwkJCVNFQ1VSSVRZX0FUVFJJQlVURVMgc2E7CisKKwkJCS8q CisJCQkgKiBTZXQgdXAgc2VjdXJpdHkgYXR0cmlidXRlcyB0byBzcGVjaWZ5IHRoYXQgdGhl IGV2ZW50cyBhcmUKKwkJCSAqIGluaGVyaXRlZC4KKwkJCSAqLworCQkJWmVyb01lbW9yeSgm c2EsIHNpemVvZihzYSkpOworCQkJc2Eubkxlbmd0aCA9IHNpemVvZihzYSk7CisJCQlzYS5i SW5oZXJpdEhhbmRsZSA9IFRSVUU7CisKKwkJCXByb2MtPmludGVycnVwdFdha2V1cEV2ZW50 ID0gQ3JlYXRlRXZlbnQoJnNhLCBUUlVFLCBGQUxTRSwgTlVMTCk7CisJCQlpZiAocHJvYy0+ aW50ZXJydXB0V2FrZXVwRXZlbnQgPT0gTlVMTCkKKwkJCQllbG9nKEVSUk9SLCAiQ3JlYXRl RXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKKyNlbmRp ZgogCQkJcHJvYy0+c2VtID0gUEdTZW1hcGhvcmVDcmVhdGUoKTsKLQkJCUluaXRTaGFyZWRM YXRjaCgmKHByb2MtPnByb2NMYXRjaCkpOwogCQkJTFdMb2NrSW5pdGlhbGl6ZSgmKHByb2Mt PmZwSW5mb0xvY2spLCBMV1RSQU5DSEVfTE9DS19GQVNUUEFUSCk7CiAJCX0KIApAQCAtNDc0 LDEzICs0ODksOCBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCU15UHJvYy0+Y2xvZ0dyb3VwTWVt YmVyTHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJQXNzZXJ0KHBnX2F0b21pY19yZWFkX3Uz MigmTXlQcm9jLT5jbG9nR3JvdXBOZXh0KSA9PSBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAot CS8qCi0JICogQWNxdWlyZSBvd25lcnNoaXAgb2YgdGhlIFBHUFJPQydzIGxhdGNoLCBzbyB0 aGF0IHdlIGNhbiB1c2UgV2FpdExhdGNoCi0JICogb24gaXQuICBUaGF0IGFsbG93cyB1cyB0 byByZXBvaW50IHRoZSBwcm9jZXNzIGxhdGNoLCB3aGljaCBzbyBmYXIKLQkgKiBwb2ludHMg dG8gcHJvY2VzcyBsb2NhbCBvbmUsIHRvIHRoZSBzaGFyZWQgb25lLgotCSAqLwotCU93bkxh dGNoKCZNeVByb2MtPnByb2NMYXRjaCk7Ci0JU3dpdGNoVG9TaGFyZWRMYXRjaCgpOworCS8q IFN0YXJ0IGFjY2VwdGluZyBpbnRlcnJ1cHRzIGZyb20gb3RoZXIgcHJvY2Vzc2VzICovCisJ U3dpdGNoVG9TaGFyZWRJbnRlcnJ1cHRzKCk7CiAKIAkvKiBub3cgdGhhdCB3ZSBoYXZlIGEg cHJvYywgcmVwb3J0IHdhaXQgZXZlbnRzIHRvIHNoYXJlZCBtZW1vcnkgKi8KIAlwZ3N0YXRf c2V0X3dhaXRfZXZlbnRfc3RvcmFnZSgmTXlQcm9jLT53YWl0X2V2ZW50X2luZm8pOwpAQCAt NjQ0LDEzICs2NTQsOCBAQCBJbml0QXV4aWxpYXJ5UHJvY2Vzcyh2b2lkKQogCX0KICNlbmRp ZgogCi0JLyoKLQkgKiBBY3F1aXJlIG93bmVyc2hpcCBvZiB0aGUgUEdQUk9DJ3MgbGF0Y2gs IHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0TGF0Y2gKLQkgKiBvbiBpdC4gIFRoYXQgYWxsb3dz IHVzIHRvIHJlcG9pbnQgdGhlIHByb2Nlc3MgbGF0Y2gsIHdoaWNoIHNvIGZhcgotCSAqIHBv aW50cyB0byBwcm9jZXNzIGxvY2FsIG9uZSwgdG8gdGhlIHNoYXJlZCBvbmUuCi0JICovCi0J T3duTGF0Y2goJk15UHJvYy0+cHJvY0xhdGNoKTsKLQlTd2l0Y2hUb1NoYXJlZExhdGNoKCk7 CisJLyogU3RhcnQgYWNjZXB0aW5nIGludGVycnVwdHMgZnJvbSBvdGhlciBwcm9jZXNzZXMg Ki8KKwlTd2l0Y2hUb1NoYXJlZEludGVycnVwdHMoKTsKIAogCS8qIG5vdyB0aGF0IHdlIGhh dmUgYSBwcm9jLCByZXBvcnQgd2FpdCBldmVudHMgdG8gc2hhcmVkIG1lbW9yeSAqLwogCXBn c3RhdF9zZXRfd2FpdF9ldmVudF9zdG9yYWdlKCZNeVByb2MtPndhaXRfZXZlbnRfaW5mbyk7 CkBAIC05MjcsMjEgKzkzMiwyMCBAQCBQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQog CX0KIAogCS8qCi0JICogUmVzZXQgTXlMYXRjaCB0byB0aGUgcHJvY2VzcyBsb2NhbCBvbmUu ICBUaGlzIGlzIHNvIHRoYXQgc2lnbmFsCi0JICogaGFuZGxlcnMgZXQgYWwgY2FuIGNvbnRp bnVlIHVzaW5nIHRoZSBsYXRjaCBhZnRlciB0aGUgc2hhcmVkIGxhdGNoCi0JICogaXNuJ3Qg b3VycyBhbnltb3JlLgorCSAqIFJlc2V0IGludGVycnVwdCB2ZWN0b3IgdG8gdGhlIHByb2Nl c3MgbG9jYWwgb25lLiAgVGhpcyBpcyBzbyB0aGF0CisJICogc2lnbmFsIGhhbmRsZXJzIGV0 IGFsIGNhbiBjb250aW51ZSB1c2luZyBpbnRlcnJ1cHRzIGFmdGVyIHRoZSBQR1BST0MKKwkg KiBlbnRyeSBpc24ndCBvdXJzIGFueW1vcmUuCiAJICoKIAkgKiBTaW1pbGFybHksIHN0b3Ag cmVwb3J0aW5nIHdhaXQgZXZlbnRzIHRvIE15UHJvYy0+d2FpdF9ldmVudF9pbmZvLgogCSAq Ci0JICogQWZ0ZXIgdGhhdCBjbGVhciBNeVByb2MgYW5kIGRpc293biB0aGUgc2hhcmVkIGxh dGNoLgorCSAqIEFmdGVyIHRoYXQgY2xlYXIgTXlQcm9jLgogCSAqLwotCVN3aXRjaEJhY2tU b0xvY2FsTGF0Y2goKTsKKwlTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cygpOwogCXBnc3RhdF9y ZXNldF93YWl0X2V2ZW50X3N0b3JhZ2UoKTsKIAogCXByb2MgPSBNeVByb2M7CiAJTXlQcm9j ID0gTlVMTDsKIAlNeVByb2NOdW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCURpc293 bkxhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOwogCiAJLyogTWFyayB0aGUgcHJvYyBubyBsb25n ZXIgaW4gdXNlICovCiAJcHJvYy0+cGlkID0gMDsKQEAgLTEwMDQsMTMgKzEwMDgsMTIgQEAg QXV4aWxpYXJ5UHJvY0tpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAlDb25kaXRpb25WYXJp YWJsZUNhbmNlbFNsZWVwKCk7CiAKIAkvKiBsb29rIGF0IHRoZSBlcXVpdmFsZW50IFByb2NL aWxsKCkgY29kZSBmb3IgY29tbWVudHMgKi8KLQlTd2l0Y2hCYWNrVG9Mb2NhbExhdGNoKCk7 CisJU3dpdGNoVG9Mb2NhbEludGVycnVwdHMoKTsKIAlwZ3N0YXRfcmVzZXRfd2FpdF9ldmVu dF9zdG9yYWdlKCk7CiAKIAlwcm9jID0gTXlQcm9jOwogCU15UHJvYyA9IE5VTEw7CiAJTXlQ cm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKLQlEaXNvd25MYXRjaCgmcHJvYy0+ cHJvY0xhdGNoKTsKIAogCVNwaW5Mb2NrQWNxdWlyZShQcm9jU3RydWN0TG9jayk7CiAKQEAg LTEzMzcsMTggKzEzNDAsMTggQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQog CX0KIAogCS8qCi0JICogSWYgc29tZWJvZHkgd2FrZXMgdXMgYmV0d2VlbiBMV0xvY2tSZWxl YXNlIGFuZCBXYWl0TGF0Y2gsIHRoZSBsYXRjaAotCSAqIHdpbGwgbm90IHdhaXQuIEJ1dCBh IHNldCBsYXRjaCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgdGhlIGxvY2sKLQkg KiBpcyBmcmVlIG5vdywgYXMgdGhlcmUgYXJlIG1hbnkgb3RoZXIgc291cmNlcyBmb3IgbGF0 Y2ggc2V0cyB0aGFuCi0JICogc29tZWJvZHkgcmVsZWFzaW5nIHRoZSBsb2NrLgorCSAqIElm IHNvbWVib2R5IHdha2VzIHVzIGJldHdlZW4gTFdMb2NrUmVsZWFzZSBhbmQgV2FpdEludGVy cnVwdCwKKwkgKiBXYWl0SW50ZXJydXB0IHdpbGwgbm90IHdhaXQuIEJ1dCBhbiBpbnRlcnJ1 cHQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbgorCSAqIHRoYXQgdGhlIGxvY2sgaXMgZnJl ZSBub3csIGFzIHRoZXJlIGFyZSBtYW55IG90aGVyIHNvdXJjZXMgZm9yIHRoZQorCSAqIGlu dGVycnVwdCB0aGFuIHNvbWVib2R5IHJlbGVhc2luZyB0aGUgbG9jay4KIAkgKgotCSAqIFdl IHByb2Nlc3MgaW50ZXJydXB0cyB3aGVuZXZlciB0aGUgbGF0Y2ggaGFzIGJlZW4gc2V0LCBz byBjYW5jZWwvZGllCi0JICogaW50ZXJydXB0cyBhcmUgcHJvY2Vzc2VkIHF1aWNrbHkuIFRo aXMgbWVhbnMgd2UgbXVzdCBub3QgbWluZCBsb3NpbmcKLQkgKiBjb250cm9sIHRvIGEgY2Fu Y2VsL2RpZSBpbnRlcnJ1cHQgaGVyZS4gIFdlIGRvbid0LCBiZWNhdXNlIHdlIGhhdmUgbm8K LQkgKiBzaGFyZWQtc3RhdGUtY2hhbmdlIHdvcmsgdG8gZG8gYWZ0ZXIgYmVpbmcgZ3JhbnRl ZCB0aGUgbG9jayAodGhlCi0JICogZ3JhbnRvciBkaWQgaXQgYWxsKS4gIFdlIGRvIGhhdmUg dG8gd29ycnkgYWJvdXQgY2FuY2VsaW5nIHRoZSBkZWFkbG9jawotCSAqIHRpbWVvdXQgYW5k IHVwZGF0aW5nIHRoZSBsb2NhbGxvY2sgdGFibGUsIGJ1dCBpZiB3ZSBsb3NlIGNvbnRyb2wg dG8gYW4KLQkgKiBlcnJvciwgTG9ja0Vycm9yQ2xlYW51cCB3aWxsIGZpeCB0aGF0IHVwLgor CSAqIFdlIHByb2Nlc3MgaW50ZXJydXB0cyB3aGVuZXZlciB0aGUgaW50ZXJydXB0IGhhcyBi ZWVuIHNldCwgc28KKwkgKiBjYW5jZWwvZGllIGludGVycnVwdHMgYXJlIHByb2Nlc3NlZCBx dWlja2x5LiBUaGlzIG1lYW5zIHdlIG11c3Qgbm90CisJICogbWluZCBsb3NpbmcgY29udHJv bCB0byBhIGNhbmNlbC9kaWUgaW50ZXJydXB0IGhlcmUuICBXZSBkb24ndCwgYmVjYXVzZQor CSAqIHdlIGhhdmUgbm8gc2hhcmVkLXN0YXRlLWNoYW5nZSB3b3JrIHRvIGRvIGFmdGVyIGJl aW5nIGdyYW50ZWQgdGhlIGxvY2sKKwkgKiAodGhlIGdyYW50b3IgZGlkIGl0IGFsbCkuICBX ZSBkbyBoYXZlIHRvIHdvcnJ5IGFib3V0IGNhbmNlbGluZyB0aGUKKwkgKiBkZWFkbG9jayB0 aW1lb3V0IGFuZCB1cGRhdGluZyB0aGUgbG9jYWxsb2NrIHRhYmxlLCBidXQgaWYgd2UgbG9z ZQorCSAqIGNvbnRyb2wgdG8gYW4gZXJyb3IsIExvY2tFcnJvckNsZWFudXAgd2lsbCBmaXgg dGhhdCB1cC4KIAkgKi8KIAlkbwogCXsKQEAgLTEzOTQsOSArMTM5Nyw5IEBAIFByb2NTbGVl cChMT0NBTExPQ0sgKmxvY2FsbG9jaykKIAkJfQogCQllbHNlCiAJCXsKLQkJCSh2b2lkKSBX YWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKLQkJCQkJCQkgUEdfV0FJVF9MT0NLIHwgbG9jYWxsb2NrLT50YWcubG9jay5sb2NrdGFn X3R5cGUpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJy dXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBXTF9JTlRFUlJVUFQgfCBXTF9F WElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgUEdfV0FJVF9MT0NLIHwgbG9jYWxsb2Nr LT50YWcubG9jay5sb2NrdGFnX3R5cGUpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQKTsKIAkJCS8qIGNoZWNrIGZvciBkZWFkbG9ja3MgZmlyc3QsIGFz IHRoYXQncyBwcm9iYWJseSBsb2ctd29ydGh5ICovCiAJCQlpZiAoZ290X2RlYWRsb2NrX3Rp bWVvdXQpCiAJCQl7CkBAIC0xNjg4LDcgKzE2OTEsNyBAQCBQcm9jU2xlZXAoTE9DQUxMT0NL ICpsb2NhbGxvY2spCiAKIAogLyoKLSAqIFByb2NXYWtldXAgLS0gd2FrZSB1cCBhIHByb2Nl c3MgYnkgc2V0dGluZyBpdHMgbGF0Y2guCisgKiBQcm9jV2FrZXVwIC0tIHdha2UgdXAgYSBw cm9jZXNzIGJ5IHNlbmRpbmcgaXQgYW4gaW50ZXJydXB0LgogICoKICAqCSBBbHNvIHJlbW92 ZSB0aGUgcHJvY2VzcyBmcm9tIHRoZSB3YWl0IHF1ZXVlIGFuZCBzZXQgaXRzIGxpbmtzIGlu dmFsaWQuCiAgKgpAQCAtMTcxNyw3ICsxNzIwLDcgQEAgUHJvY1dha2V1cChQR1BST0MgKnBy b2MsIFByb2NXYWl0U3RhdHVzIHdhaXRTdGF0dXMpCiAJcGdfYXRvbWljX3dyaXRlX3U2NCgm TXlQcm9jLT53YWl0U3RhcnQsIDApOwogCiAJLyogQW5kIGF3YWtlbiBpdCAqLwotCVNldExh dGNoKCZwcm9jLT5wcm9jTGF0Y2gpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIH0KIAogLyoKQEAgLTE4 NjksNDUgKzE4NzIsMTkgQEAgQ2hlY2tEZWFkTG9ja0FsZXJ0KHZvaWQpCiAJZ290X2RlYWRs b2NrX3RpbWVvdXQgPSB0cnVlOwogCiAJLyoKLQkgKiBIYXZlIHRvIHNldCB0aGUgbGF0Y2gg YWdhaW4sIGV2ZW4gaWYgaGFuZGxlX3NpZ19hbGFybSBhbHJlYWR5IGRpZC4gQmFjawotCSAq IHRoZW4gZ290X2RlYWRsb2NrX3RpbWVvdXQgd2Fzbid0IHlldCBzZXQuLi4gSXQncyB1bmxp a2VseSB0aGF0IHRoaXMKLQkgKiBldmVyIHdvdWxkIGJlIGEgcHJvYmxlbSwgYnV0IHNldHRp bmcgYSBzZXQgbGF0Y2ggYWdhaW4gaXMgY2hlYXAuCisJICogSGF2ZSB0byByYWlzZSB0aGUg aW50ZXJydXB0IGFnYWluLCBldmVuIGlmIGhhbmRsZV9zaWdfYWxhcm0gYWxyZWFkeQorCSAq IGRpZC4gQmFjayB0aGVuIGdvdF9kZWFkbG9ja190aW1lb3V0IHdhc24ndCB5ZXQgc2V0Li4u IEl0J3MgdW5saWtlbHkKKwkgKiB0aGF0IHRoaXMgZXZlciB3b3VsZCBiZSBhIHByb2JsZW0s IGJ1dCByYWlzaW5nIGFuIGludGVycnVwdCBhZ2FpbiBpcworCSAqIGNoZWFwLgogCSAqCiAJ ICogTm90ZSB0aGF0LCB3aGVuIHRoaXMgZnVuY3Rpb24gcnVucyBpbnNpZGUgcHJvY3NpZ25h bF9zaWd1c3IxX2hhbmRsZXIoKSwKLQkgKiB0aGUgaGFuZGxlciBmdW5jdGlvbiBzZXRzIHRo ZSBsYXRjaCBhZ2FpbiBhZnRlciB0aGUgbGF0Y2ggaXMgc2V0IGhlcmUuCisJICogdGhlIGhh bmRsZXIgZnVuY3Rpb24gcmFpc2VzIHRoZSBpbnRlcnJ1cHQgYWdhaW4gYWZ0ZXIgdGhlIGlu dGVycnVwdCBpcworCSAqIHJhaXNlZCBoZXJlLgogCSAqLwotCVNldExhdGNoKE15TGF0Y2gp OworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJZXJybm8g PSBzYXZlX2Vycm5vOwogfQogCi0vKgotICogUHJvY1dhaXRGb3JTaWduYWwgLSB3YWl0IGZv ciBhIHNpZ25hbCBmcm9tIGFub3RoZXIgYmFja2VuZC4KLSAqCi0gKiBBcyB0aGlzIHVzZXMg dGhlIGdlbmVyaWMgcHJvY2VzcyBsYXRjaCB0aGUgY2FsbGVyIGhhcyB0byBiZSByb2J1c3Qg YWdhaW5zdAotICogdW5yZWxhdGVkIHdha2V1cHM6IEFsd2F5cyBjaGVjayB0aGF0IHRoZSBk ZXNpcmVkIHN0YXRlIGhhcyBvY2N1cnJlZCwgYW5kCi0gKiB3YWl0IGFnYWluIGlmIG5vdC4K LSAqLwotdm9pZAotUHJvY1dhaXRGb3JTaWduYWwodWludDMyIHdhaXRfZXZlbnRfaW5mbykK LXsKLQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsIDAsCi0JCQkJCSB3YWl0X2V2ZW50X2luZm8pOwotCVJlc2V0TGF0Y2go TXlMYXRjaCk7Ci0JQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLX0KLQotLyoKLSAqIFByb2NT ZW5kU2lnbmFsIC0gc2V0IHRoZSBsYXRjaCBvZiBhIGJhY2tlbmQgaWRlbnRpZmllZCBieSBQ cm9jTnVtYmVyCi0gKi8KLXZvaWQKLVByb2NTZW5kU2lnbmFsKFByb2NOdW1iZXIgcHJvY051 bWJlcikKLXsKLQlpZiAocHJvY051bWJlciA8IDAgfHwgcHJvY051bWJlciA+PSBQcm9jR2xv YmFsLT5hbGxQcm9jQ291bnQpCi0JCWVsb2coRVJST1IsICJwcm9jTnVtYmVyIG91dCBvZiBy YW5nZSIpOwotCi0JU2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW3Byb2NOdW1iZXJd LnByb2NMYXRjaCk7Ci19Ci0KIC8qCiAgKiBCZWNvbWVMb2NrR3JvdXBMZWFkZXIgLSBkZXNp Z25hdGUgcHJvY2VzcyBhcyBsb2NrIGdyb3VwIGxlYWRlcgogICoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5 bmMvc3luYy5jCmluZGV4IGFiNzEzN2QwZmZmLi5iZWM0MmY0MDYwMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL3N5bmMvc3luYy5jCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAicG9ydGFiaWxp dHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9tZC5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgpAQCAtNjExLDggKzYxMSw4IEBAIFJlZ2lzdGVyU3luY1JlcXVlc3QoY29uc3QgRmlsZVRh ZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUsCiAJCWlmIChyZXQgfHwgKCFyZXQgJiYg IXJldHJ5T25FcnJvcikpCiAJCQlicmVhazsKIAotCQlXYWl0TGF0Y2goTlVMTCwgV0xfRVhJ VF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVPVVQsIDEwLAotCQkJCSAgV0FJVF9FVkVOVF9SRUdJ U1RFUl9TWU5DX1JFUVVFU1QpOworCQlXYWl0SW50ZXJydXB0KDAsIFdMX0VYSVRfT05fUE1f REVBVEggfCBXTF9USU1FT1VULCAxMCwKKwkJCQkJICBXQUlUX0VWRU5UX1JFR0lTVEVSX1NZ TkNfUkVRVUVTVCk7CiAJfQogCiAJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRl eCAxODRiODMwMTY4Ny4uYjhkODMxMmVmOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTYx LDYgKzYxLDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZt Z3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgpAQCAtNTMxLDE1ICs1MzIsMTUgQEAgUHJvY2Vzc0NsaWVudFJlYWRJ bnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogCQkvKgogCQkgKiBXZSdyZSBkeWluZy4gIElmIHRo ZXJlIGlzIG5vIGRhdGEgYXZhaWxhYmxlIHRvIHJlYWQsIHRoZW4gaXQncyBzYWZlCiAJCSAq IChhbmQgc2FuZSkgdG8gaGFuZGxlIHRoYXQgbm93LiAgSWYgd2UgaGF2ZW4ndCB0cmllZCB0 byByZWFkIHlldCwKLQkJICogbWFrZSBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwg c28gdGhhdCBpZiB0aGVyZSBpcyBubyBkYXRhCisJCSAqIG1ha2Ugc3VyZSB0aGUgaW50ZXJy dXB0IGZsYWcgaXMgc2V0LCBzbyB0aGF0IGlmIHRoZXJlIGlzIG5vIGRhdGEKIAkJICogdGhl biB3ZSdsbCBjb21lIGJhY2sgaGVyZSBhbmQgZGllLiAgSWYgd2UncmUgZG9uZSByZWFkaW5n LCBhbHNvCi0JCSAqIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIGFzIHdl IG1pZ2h0J3ZlIHVuZGVzaXJhYmx5CisJCSAqIG1ha2Ugc3VyZSB0aGUgaW50ZXJydXB0IGZs YWcgaXMgc2V0LCBhcyB3ZSBtaWdodCd2ZSB1bmRlc2lyYWJseQogCQkgKiBjbGVhcmVkIGl0 IHdoaWxlIHJlYWRpbmcuCiAJCSAqLwogCQlpZiAoYmxvY2tlZCkKIAkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAJCWVsc2UKLQkJCVNldExhdGNoKE15TGF0Y2gpOworCQkJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAl9CiAKIAllcnJubyA9IHNh dmVfZXJybm87CkBAIC01NjUsOSArNTY2LDkgQEAgUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJy dXB0KGJvb2wgYmxvY2tlZCkKIAkJICogV2UncmUgZHlpbmcuICBJZiBpdCdzIG5vdCBwb3Nz aWJsZSB0byB3cml0ZSwgdGhlbiB3ZSBzaG91bGQgaGFuZGxlCiAJCSAqIHRoYXQgaW1tZWRp YXRlbHksIGVsc2UgYSBzdHVjayBjbGllbnQgY291bGQgaW5kZWZpbml0ZWx5IGRlbGF5IG91 cgogCQkgKiByZXNwb25zZSB0byB0aGUgc2lnbmFsLiAgSWYgd2UgaGF2ZW4ndCB0cmllZCB0 byB3cml0ZSB5ZXQsIG1ha2UKLQkJICogc3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQs IHNvIHRoYXQgaWYgdGhlIHdyaXRlIHdvdWxkIGJsb2NrCisJCSAqIHN1cmUgdGhlIGludGVy cnVwdCBmbGFnIGlzIHNldCwgc28gdGhhdCBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2sKIAkJ ICogdGhlbiB3ZSdsbCBjb21lIGJhY2sgaGVyZSBhbmQgZGllLiAgSWYgd2UncmUgZG9uZSB3 cml0aW5nLCBhbHNvCi0JCSAqIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQs IGFzIHdlIG1pZ2h0J3ZlIHVuZGVzaXJhYmx5CisJCSAqIG1ha2Ugc3VyZSB0aGUgaW50ZXJy dXB0IGZsYWcgaXMgc2V0LCBhcyB3ZSBtaWdodCd2ZSB1bmRlc2lyYWJseQogCQkgKiBjbGVh cmVkIGl0IHdoaWxlIHdyaXRpbmcuCiAJCSAqLwogCQlpZiAoYmxvY2tlZCkKQEAgLTU5MSw3 ICs1OTIsNyBAQCBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQog CQkJfQogCQl9CiAJCWVsc2UKLQkJCVNldExhdGNoKE15TGF0Y2gpOworCQkJUmFpc2VJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAl9CiAKIAllcnJubyA9IHNhdmVf ZXJybm87CkBAIC0zMDEzLDEyICszMDE0LDEyIEBAIGRpZShTSUdOQUxfQVJHUykKIAkvKiBm b3IgdGhlIGN1bXVsYXRpdmUgc3RhdHMgc3lzdGVtICovCiAJcGdTdGF0U2Vzc2lvbkVuZENh dXNlID0gRElTQ09OTkVDVF9LSUxMRUQ7CiAKLQkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3 YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9uIHRoZSBwcm9jZXNzIGxhdGNoICovCi0JU2V0TGF0 Y2goTXlMYXRjaCk7CisJLyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcg d2FpdGluZyBvbiB0aGUgaW50ZXJydXB0ICovCisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQKTsKIAogCS8qCiAJICogSWYgd2UncmUgaW4gc2luZ2xlIHVzZXIg bW9kZSwgd2Ugd2FudCB0byBxdWl0IGltbWVkaWF0ZWx5IC0gd2UgY2FuJ3QKLQkgKiByZWx5 IG9uIGxhdGNoZXMgYXMgdGhleSB3b3VsZG4ndCB3b3JrIHdoZW4gc3RkaW4vc3Rkb3V0IGlz IGEgZmlsZS4KKwkgKiByZWx5IG9uIGludGVycnVwdHMgYXMgdGhleSB3b3VsZG4ndCB3b3Jr IHdoZW4gc3RkaW4vc3Rkb3V0IGlzIGEgZmlsZS4KIAkgKiBSYXRoZXIgdWdseSwgYnV0IGl0 J3MgdW5saWtlbHkgdG8gYmUgd29ydGh3aGlsZSB0byBpbnZlc3QgbXVjaCBtb3JlCiAJICog ZWZmb3J0IGp1c3QgZm9yIHRoZSBiZW5lZml0IG9mIHNpbmdsZSB1c2VyIG1vZGUuCiAJICov CkBAIC0zMDQyLDggKzMwNDMsOCBAQCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKFNJR05BTF9B UkdTKQogCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSB0cnVlOwogCX0KIAotCS8qIElmIHdlJ3Jl IHN0aWxsIGhlcmUsIHdha2VuIGFueXRoaW5nIHdhaXRpbmcgb24gdGhlIHByb2Nlc3MgbGF0 Y2ggKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3 YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9uIHRoZSBpbnRlcnJ1cHQgKi8KKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQogCiAvKiBzaWduYWwgaGFuZGxl ciBmb3IgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9uICovCkBAIC0zMDY5LDcgKzMwNzAsNyBA QCBIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVh c29uKQogCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nUmVhc29uc1tyZWFzb25dID0gdHJ1ZTsK IAlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7CiAJSW50ZXJydXB0UGVuZGluZyA9 IHRydWU7Ci0JLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIgKi8KKwkvKiBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAgd2lsbCBiZSByYWlzZWQg YnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv bWlzYy5jCmluZGV4IDFhYThiYmIzMDYzLi44MzEzYTQ5ZmM2YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv bWlzYy5jCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dn ZXIuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCkBA IC0zNzMsMTYgKzM3MywxNiBAQCBwZ19zbGVlcChQR19GVU5DVElPTl9BUkdTKQogCWZsb2F0 OAkJZW5kdGltZTsKIAogCS8qCi0JICogV2Ugc2xlZXAgdXNpbmcgV2FpdExhdGNoLCB0byBl bnN1cmUgdGhhdCB3ZSdsbCB3YWtlIHVwIHByb21wdGx5IGlmIGFuCi0JICogaW1wb3J0YW50 IHNpZ25hbCAoc3VjaCBhcyBTSUdBTFJNIG9yIFNJR0lOVCkgYXJyaXZlcy4gIEJlY2F1c2UK LQkgKiBXYWl0TGF0Y2gncyB1cHBlciBsaW1pdCBvZiBkZWxheSBpcyBJTlRfTUFYIG1pbGxp c2Vjb25kcywgYW5kIHRoZSB1c2VyCi0JICogbWlnaHQgYXNrIGZvciBtb3JlIHRoYW4gdGhh dCwgd2Ugc2xlZXAgZm9yIGF0IG1vc3QgMTAgbWludXRlcyBhbmQgdGhlbgotCSAqIGxvb3Au CisJICogV2Ugc2xlZXAgdXNpbmcgV2FpdEludGVycnVwdCwgdG8gZW5zdXJlIHRoYXQgd2Un bGwgd2FrZSB1cCBwcm9tcHRseSBpZgorCSAqIGFuIGltcG9ydGFudCBzaWduYWwgKHN1Y2gg YXMgU0lHQUxSTSBvciBTSUdJTlQpIGFycml2ZXMuICBCZWNhdXNlCisJICogV2FpdEludGVy cnVwdCdzIHVwcGVyIGxpbWl0IG9mIGRlbGF5IGlzIElOVF9NQVggbWlsbGlzZWNvbmRzLCBh bmQgdGhlCisJICogdXNlciBtaWdodCBhc2sgZm9yIG1vcmUgdGhhbiB0aGF0LCB3ZSBzbGVl cCBmb3IgYXQgbW9zdCAxMCBtaW51dGVzIGFuZAorCSAqIHRoZW4gbG9vcC4KIAkgKgogCSAq IEJ5IGNvbXB1dGluZyB0aGUgaW50ZW5kZWQgc3RvcCB0aW1lIGluaXRpYWxseSwgd2UgYXZv aWQgYWNjdW11bGF0aW9uIG9mCiAJICogZXh0cmEgZGVsYXkgYWNyb3NzIG11bHRpcGxlIHNs ZWVwcy4gIFRoaXMgYWxzbyBlbnN1cmVzIHdlIHdvbid0IGRlbGF5Ci0JICogbGVzcyB0aGFu IHRoZSBzcGVjaWZpZWQgdGltZSB3aGVuIFdhaXRMYXRjaCBpcyB0ZXJtaW5hdGVkIGVhcmx5 IGJ5IGEKLQkgKiBub24tcXVlcnktY2FuY2VsaW5nIHNpZ25hbCBzdWNoIGFzIFNJR0hVUC4K KwkgKiBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB0aW1lIHdoZW4gV2FpdEludGVycnVwdCBp cyB0ZXJtaW5hdGVkIGVhcmx5IGJ5CisJICogYSBub24tcXVlcnktY2FuY2VsaW5nIHNpZ25h bCBzdWNoIGFzIFNJR0hVUC4KIAkgKi8KICNkZWZpbmUgR2V0Tm93RmxvYXQoKQkoKGZsb2F0 OCkgR2V0Q3VycmVudFRpbWVzdGFtcCgpIC8gMTAwMDAwMC4wKQogCkBAIC00MDMsMTEgKzQw MywxMSBAQCBwZ19zbGVlcChQR19GVU5DVElPTl9BUkdTKQogCQllbHNlCiAJCQlicmVhazsK IAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgZGVsYXlfbXMsCi0J CQkJCQkgV0FJVF9FVkVOVF9QR19TTEVFUCk7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAor CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCQkgZGVsYXlfbXMsCisJCQkJCQkJIFdBSVRfRVZFTlRfUEdfU0xFRVApOwor CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCX0KIAogCVBH X1JFVFVSTl9WT0lEKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGlt ZXN0YW1wLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKaW5kZXggZTAw Y2QzYzk2OTAuLmYzZTNjYWZjMDk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdGltZXN0YW1wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5j CkBAIC0xNzM4LDEwICsxNzM4LDEwIEBAIFRpbWVzdGFtcERpZmZlcmVuY2UoVGltZXN0YW1w VHogc3RhcnRfdGltZSwgVGltZXN0YW1wVHogc3RvcF90aW1lLAogICogVGltZXN0YW1wRGlm ZmVyZW5jZU1pbGxpc2Vjb25kcyAtLSBjb252ZXJ0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4g dHdvCiAgKiAJCXRpbWVzdGFtcHMgaW50byBpbnRlZ2VyIG1pbGxpc2Vjb25kcwogICoKLSAq IFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsY3VsYXRlIGEgd2FpdCB0aW1lb3V0IGZv ciBXYWl0TGF0Y2goKQorICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBjYWxjdWxhdGUg YSB3YWl0IHRpbWVvdXQgZm9yIFdhaXRJbnRlcnJ1cHQoKQogICogb3IgYSByZWxhdGVkIGZ1 bmN0aW9uLiAgVGhlIGNob2ljZSBvZiAibG9uZyIgYXMgdGhlIHJlc3VsdCB0eXBlCiAgKiBp cyB0byBoYXJtb25pemUgd2l0aCB0aGF0OyBmdXJ0aGVybW9yZSwgd2UgY2xhbXAgdGhlIHJl c3VsdCB0byBhdCBtb3N0Ci0gKiBJTlRfTUFYIG1pbGxpc2Vjb25kcywgYmVjYXVzZSB0aGF0 J3MgYWxsIHRoYXQgV2FpdExhdGNoKCkgYWxsb3dzLgorICogSU5UX01BWCBtaWxsaXNlY29u ZHMsIGJlY2F1c2UgdGhhdCdzIGFsbCB0aGF0IFdhaXRJbnRlcnJ1cHQoKSBhbGxvd3MuCiAg KgogICogV2UgZXhwZWN0IHN0YXJ0X3RpbWUgPD0gc3RvcF90aW1lLiAgSWYgbm90LCB3ZSBy ZXR1cm4gemVybywKICAqIHNpbmNlIHRoZW4gd2UncmUgYWxyZWFkeSBwYXN0IHRoZSBwcmV2 aW91c2x5IGRldGVybWluZWQgc3RvcF90aW1lLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC9nbG9iYWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMu YwppbmRleCAwM2E1NDQ1MWFjMi4uY2I1MzQzZDI4Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv Z2xvYmFscy5jCkBAIC01MiwxNSArNTIsNiBAQCBib29sCQlNeUNhbmNlbEtleVZhbGlkID0g ZmFsc2U7CiBpbnQzMgkJTXlDYW5jZWxLZXkgPSAwOwogaW50CQkJTXlQTUNoaWxkU2xvdDsK IAotLyoKLSAqIE15TGF0Y2ggcG9pbnRzIHRvIHRoZSBsYXRjaCB0aGF0IHNob3VsZCBiZSB1 c2VkIGZvciBzaWduYWwgaGFuZGxpbmcgYnkgdGhlCi0gKiBjdXJyZW50IHByb2Nlc3MuIEl0 IHdpbGwgZWl0aGVyIHBvaW50IHRvIGEgcHJvY2VzcyBsb2NhbCBsYXRjaCBpZiB0aGUKLSAq IGN1cnJlbnQgcHJvY2VzcyBkb2VzIG5vdCBoYXZlIGEgUEdQUk9DIGVudHJ5IGluIHRoYXQg bW9tZW50LCBvciB0bwotICogUEdQUk9DLT5wcm9jTGF0Y2ggaWYgaXQgaGFzLiBUaHVzIGl0 IGNhbiBhbHdheXMgYmUgdXNlZCBpbiBzaWduYWwgaGFuZGxlcnMsCi0gKiB3aXRob3V0IGNo ZWNraW5nIGZvciBpdHMgZXhpc3RlbmNlLgotICovCi1zdHJ1Y3QgTGF0Y2ggKk15TGF0Y2g7 Ci0KIC8qCiAgKiBEYXRhRGlyIGlzIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0b3AgbGV2 ZWwgb2YgdGhlIFBHREFUQSBkaXJlY3RvcnkgdHJlZS4KICAqIEV4Y2VwdCBkdXJpbmcgZWFy bHkgc3RhcnR1cCwgdGhpcyBpcyBhbHNvIHRoZSBzZXJ2ZXIncyB3b3JraW5nIGRpcmVjdG9y eTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCA5ZTM2NzZmN2IzZi4uODdh ZDUzNDkyM2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTQyLDggKzQy LDggQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0j aW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0u aCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCkBAIC02Niw4ICs2Niw2IEBAIEJhY2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAv KiBMaXN0IG9mIGxvY2sgZmlsZXMgdG8gYmUgcmVtb3ZlZCBhdCBwcm9jIGV4aXQgKi8KIHN0 YXRpYyBMaXN0ICpsb2NrX2ZpbGVzID0gTklMOwogCi1zdGF0aWMgTGF0Y2ggTG9jYWxMYXRj aERhdGE7Ci0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlpZ25vcmluZyBzeXN0ZW0gaW5kZXhlcyBz dXBwb3J0IHN0dWZmCiAgKgpAQCAtMTMzLDEwICsxMzEsOSBAQCBJbml0UG9zdG1hc3RlckNo aWxkKHZvaWQpCiAJcHFpbml0bWFzaygpOwogI2VuZGlmCiAKLQkvKiBJbml0aWFsaXplIHBy b2Nlc3MtbG9jYWwgbGF0Y2ggc3VwcG9ydCAqLwotCUluaXRpYWxpemVMYXRjaFN1cHBvcnQo KTsKLQlJbml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKLQlJbml0aWFsaXplTGF0Y2hXYWl0U2V0 KCk7CisJLyogSW5pdGlhbGl6ZSBwcm9jZXNzLWxvY2FsIGludGVycnVwdCBzdXBwb3J0ICov CisJSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0 V2FpdFNldCgpOwogCiAJLyoKIAkgKiBJZiBwb3NzaWJsZSwgbWFrZSB0aGlzIHByb2Nlc3Mg YSBncm91cCBsZWFkZXIsIHNvIHRoYXQgdGhlIHBvc3RtYXN0ZXIKQEAgLTE5NCwxMCArMTkx LDkgQEAgSW5pdFN0YW5kYWxvbmVQcm9jZXNzKGNvbnN0IGNoYXIgKmFyZ3YwKQogCiAJSW5p dFByb2Nlc3NHbG9iYWxzKCk7CiAKLQkvKiBJbml0aWFsaXplIHByb2Nlc3MtbG9jYWwgbGF0 Y2ggc3VwcG9ydCAqLwotCUluaXRpYWxpemVMYXRjaFN1cHBvcnQoKTsKLQlJbml0UHJvY2Vz c0xvY2FsTGF0Y2goKTsKLQlJbml0aWFsaXplTGF0Y2hXYWl0U2V0KCk7CisJLyogSW5pdGlh bGl6ZSBwcm9jZXNzLWxvY2FsIGludGVycnVwdCBzdXBwb3J0ICovCisJSW5pdGlhbGl6ZVdh aXRFdmVudFN1cHBvcnQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0V2FpdFNldCgpOwogCiAJ LyoKIAkgKiBGb3IgY29uc2lzdGVuY3kgd2l0aCBJbml0UG9zdG1hc3RlckNoaWxkLCBpbml0 aWFsaXplIHNpZ25hbCBtYXNrIGhlcmUuCkBAIC0yMTgsNDggKzIxNCw2IEBAIEluaXRTdGFu ZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCkKIAkJZ2V0X3BrZ2xpYl9wYXRoKG15 X2V4ZWNfcGF0aCwgcGtnbGliX3BhdGgpOwogfQogCi12b2lkCi1Td2l0Y2hUb1NoYXJlZExh dGNoKHZvaWQpCi17Ci0JQXNzZXJ0KE15TGF0Y2ggPT0gJkxvY2FsTGF0Y2hEYXRhKTsKLQlB c3NlcnQoTXlQcm9jICE9IE5VTEwpOwotCi0JTXlMYXRjaCA9ICZNeVByb2MtPnByb2NMYXRj aDsKLQotCWlmIChGZUJlV2FpdFNldCkKLQkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0 LCBGZUJlV2FpdFNldExhdGNoUG9zLCBXTF9MQVRDSF9TRVQsCi0JCQkJCQlNeUxhdGNoKTsK LQotCS8qCi0JICogU2V0IHRoZSBzaGFyZWQgbGF0Y2ggYXMgdGhlIGxvY2FsIG9uZSBtaWdo dCBoYXZlIGJlZW4gc2V0LiBUaGlzCi0JICogc2hvdWxkbid0IG5vcm1hbGx5IGJlIG5lY2Vz c2FyeSBhcyBjb2RlIGlzIHN1cHBvc2VkIHRvIGNoZWNrIHRoZQotCSAqIGNvbmRpdGlvbiBi ZWZvcmUgd2FpdGluZyBmb3IgdGhlIGxhdGNoLCBidXQgYSBiaXQgY2FyZSBjYW4ndCBodXJ0 LgotCSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCi12b2lkCi1Jbml0UHJvY2Vzc0xv Y2FsTGF0Y2godm9pZCkKLXsKLQlNeUxhdGNoID0gJkxvY2FsTGF0Y2hEYXRhOwotCUluaXRM YXRjaChNeUxhdGNoKTsKLX0KLQotdm9pZAotU3dpdGNoQmFja1RvTG9jYWxMYXRjaCh2b2lk KQotewotCUFzc2VydChNeUxhdGNoICE9ICZMb2NhbExhdGNoRGF0YSk7Ci0JQXNzZXJ0KE15 UHJvYyAhPSBOVUxMICYmIE15TGF0Y2ggPT0gJk15UHJvYy0+cHJvY0xhdGNoKTsKLQotCU15 TGF0Y2ggPSAmTG9jYWxMYXRjaERhdGE7Ci0KLQlpZiAoRmVCZVdhaXRTZXQpCi0JCU1vZGlm eVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRMYXRjaFBvcywgV0xfTEFUQ0hf U0VULAotCQkJCQkJTXlMYXRjaCk7Ci0KLQlTZXRMYXRjaChNeUxhdGNoKTsKLX0KLQogLyoK ICAqIFJldHVybiBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBh IEJhY2tlbmRUeXBlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv cG9zdGluaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCA1 YjY1N2EzZjEzNS4uYTM0ZDk3ZTgzMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCkBAIC0xMzg4LDcgKzEzODksNyBAQCBUcmFuc2FjdGlvblRpbWVvdXRIYW5kbGVy KHZvaWQpCiB7CiAJVHJhbnNhY3Rpb25UaW1lb3V0UGVuZGluZyA9IHRydWU7CiAJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEz OTYsNyArMTM5Nyw3IEBAIElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRIYW5kbGVy KHZvaWQpCiB7CiAJSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSB0 cnVlOwogCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIHN0YXRp YyB2b2lkCkBAIC0xNDA0LDcgKzE0MDUsNyBAQCBJZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVy KHZvaWQpCiB7CiAJSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZyA9IHRydWU7CiAJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0 MTIsNyArMTQxMyw3IEBAIElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7 CiAJSWRsZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDIwLDcg KzE0MjEsNyBAQCBDbGllbnRDaGVja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJQ2hlY2tD bGllbnRDb25uZWN0aW9uUGVuZGluZyA9IHRydWU7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRy dWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvdGltZW91dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMKaW5k ZXggZWM3ZTU3MDkyMGEuLjU2YzlmODc2NDhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL3RpbWVvdXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVv dXQuYwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAj aW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKQEAgLTM3MSwxMCArMzcxLDEwIEBAIGhh bmRsZV9zaWdfYWxhcm0oU0lHTkFMX0FSR1MpCiAJSE9MRF9JTlRFUlJVUFRTKCk7CiAKIAkv KgotCSAqIFNJR0FMUk0gaXMgYWx3YXlzIGNhdXNlIGZvciB3YWtpbmcgYW55dGhpbmcgd2Fp dGluZyBvbiB0aGUgcHJvY2VzcwotCSAqIGxhdGNoLgorCSAqIFNJR0FMUk0gaXMgYWx3YXlz IGNhdXNlIGZvciB3YWtpbmcgYW55dGhpbmcgd2FpdGluZyBvbgorCSAqIElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUC4KIAkgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJLyoKIAkgKiBBbHdheXMgcmVz ZXQgc2lnbmFsX3BlbmRpbmcsIGV2ZW4gaWYgIWFsYXJtX2VuYWJsZWQsIHNpbmNlIGluZGVl ZCBubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgYi9zcmMv YmFja2VuZC91dGlscy9tbWdyL21jeHQuYwppbmRleCBiZGU1NDMyNmM2Ni4uMTJkOWFkNjNk ODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBIYW5k bGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJydXB0UGVuZGlu ZyA9IHRydWU7CiAJTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSB0cnVlOwotCS8qIGxhdGNo IHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCisJLyogSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQIHdpbGwgYmUgcmFpc2VkIGJ5IHByb2NzaWduYWxfc2ln dXNyMV9oYW5kbGVyICovCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvcGFyYWxsZWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCmluZGV4IDY5 ZmZlNTQ5OGY5Li43ZGFlYzdlZjgzMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKQEAgLTE0 LDYgKzE0LDggQEAKICNpZm5kZWYgUEFSQUxMRUxfSAogI2RlZmluZSBQQVJBTExFTF9ICiAK KyNpbmNsdWRlIDxzaWduYWwuaD4KKwogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgog I2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIu aCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMu aCBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaAppbmRleCA0NmE5 MGRmYjAyMi4uY2EwYWY0NjRhNDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xp YnBxLWJlLWZlLWhlbHBlcnMuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1m ZS1oZWxwZXJzLmgKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJsaWJwcS1mZS5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNs dWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2 ZW50LmgiCiAKQEAgLTE3Nyw4ICsxNzcsOCBAQCBsaWJwcXNydl9jb25uZWN0X2ludGVybmFs KFBHY29ubiAqY29ubiwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKIAkJcmV0dXJuOwogCiAJ LyoKLQkgKiBXYWl0TGF0Y2hPclNvY2tldCgpIGNhbiBjb25jZWl2YWJseSBmYWlsLCBoYW5k bGUgdGhhdCBjYXNlIGhlcmUgaW5zdGVhZAotCSAqIG9mIHJlcXVpcmluZyBhbGwgY2FsbGVy cyB0byBkbyBzby4KKwkgKiBXYWl0SW50ZXJydXB0T3JTb2NrZXQoKSBjYW4gY29uY2VpdmFi bHkgZmFpbCwgaGFuZGxlIHRoYXQgY2FzZSBoZXJlCisJICogaW5zdGVhZCBvZiByZXF1aXJp bmcgYWxsIGNhbGxlcnMgdG8gZG8gc28uCiAJICovCiAJUEdfVFJZKCk7CiAJewpAQCAtMjA5 LDE2ICsyMDksMTYgQEAgbGlicHFzcnZfY29ubmVjdF9pbnRlcm5hbChQR2Nvbm4gKmNvbm4s IHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJCQllbHNlCiAJCQkJaW9fZmxhZyA9IFdMX1NP Q0tFVF9XUklURUFCTEU7CiAKLQkJCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwK LQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0xBVENIX1NFVCB8IGlvX2Zs YWcsCi0JCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLAotCQkJCQkJCQkgICAwLAotCQkJCQkJ CQkgICB3YWl0X2V2ZW50X2luZm8pOworCQkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCQkgICBXTF9FWElUX09O X1BNX0RFQVRIIHwgV0xfSU5URVJSVVBUIHwgaW9fZmxhZywKKwkJCQkJCQkJCSAgIFBRc29j a2V0KGNvbm4pLAorCQkJCQkJCQkJICAgMCwKKwkJCQkJCQkJCSAgIHdhaXRfZXZlbnRfaW5m byk7CiAKIAkJCS8qIEludGVycnVwdGVkPyAqLwotCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VU KQorCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQkJewotCQkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQkJfQogCkBAIC0zNDEsMTcgKzM0MSwx NyBAQCBsaWJwcXNydl9nZXRfcmVzdWx0KFBHY29ubiAqY29ubiwgdWludDMyIHdhaXRfZXZl bnRfaW5mbykKIAl7CiAJCWludAkJCXJjOwogCi0JCXJjID0gV2FpdExhdGNoT3JTb2NrZXQo TXlMYXRjaCwKLQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfTEFUQ0hfU0VU IHwKLQkJCQkJCQkgICBXTF9TT0NLRVRfUkVBREFCTEUsCi0JCQkJCQkJICAgUFFzb2NrZXQo Y29ubiksCi0JCQkJCQkJICAgMCwKLQkJCQkJCQkgICB3YWl0X2V2ZW50X2luZm8pOworCQly YyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCwKKwkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8CisJ CQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSwKKwkJCQkJCQkJICAgUFFzb2NrZXQoY29u biksCisJCQkJCQkJCSAgIDAsCisJCQkJCQkJCSAgIHdhaXRfZXZlbnRfaW5mbyk7CiAKIAkJ LyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJj ICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtNDA3LDcgKzQwNyw3IEBAIGxpYnBxc3J2X2NhbmNl bChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUpCiAJCQlQb3N0Z3Jlc1BvbGxp bmdTdGF0dXNUeXBlIHBvbGxyZXM7CiAJCQlUaW1lc3RhbXBUeiBub3c7CiAJCQlsb25nCQlj dXJfdGltZW91dDsKLQkJCWludAkJCXdhaXRFdmVudHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKKwkJCWludAkJCXdhaXRFdmVudHMgPSBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKIAogCQkJ cG9sbHJlcyA9IFBRY2FuY2VsUG9sbChjYW5jZWxfY29ubik7CiAJCQlpZiAocG9sbHJlcyA9 PSBQR1JFU19QT0xMSU5HX09LKQpAQCAtNDM2LDEwICs0MzYsMTEgQEAgbGlicHFzcnZfY2Fu Y2VsKFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGltZSkKIAkJCX0KIAogCQkJLyog U2xlZXAgdW50aWwgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8KLQkJCVdhaXRMYXRjaE9y U29ja2V0KE15TGF0Y2gsIHdhaXRFdmVudHMsIFBRY2FuY2VsU29ja2V0KGNhbmNlbF9jb25u KSwKLQkJCQkJCQkgIGN1cl90aW1lb3V0LCBQR19XQUlUX0NMSUVOVCk7CisJCQlXYWl0SW50 ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHdhaXRFdmVu dHMsCisJCQkJCQkJCSAgUFFjYW5jZWxTb2NrZXQoY2FuY2VsX2Nvbm4pLAorCQkJCQkJCQkg IGN1cl90aW1lb3V0LCBQR19XQUlUX0NMSUVOVCk7CiAKLQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9saWJwcS9saWJwcS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaAppbmRleCBkODI1 YjRjN2I2Yy4uMWM3OTdhM2RlNjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xp YnBxLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaApAQCAtMTgsNyArMTgsNyBA QAogCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJsaWJwcS9saWJw cS1iZS5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdl L3dhaXRldmVudHNldC5oIgogCiAKIC8qCkBAIC02MSw3ICs2MSw3IEBAIGV4dGVybiBjb25z dCBQR0RMTElNUE9SVCBQUWNvbW1NZXRob2RzICpQcUNvbW1NZXRob2RzOwogZXh0ZXJuIFBH RExMSU1QT1JUIFdhaXRFdmVudFNldCAqRmVCZVdhaXRTZXQ7CiAKICNkZWZpbmUgRmVCZVdh aXRTZXRTb2NrZXRQb3MgMAotI2RlZmluZSBGZUJlV2FpdFNldExhdGNoUG9zIDEKKyNkZWZp bmUgRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MgMQogI2RlZmluZSBGZUJlV2FpdFNldE5FdmVu dHMgMwogCiBleHRlcm4gaW50CUxpc3RlblNlcnZlclBvcnQoaW50IGZhbWlseSwgY29uc3Qg Y2hhciAqaG9zdE5hbWUsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBi L3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDQyYTJiMzhjYWM5Li4zZDQ0MmYyNTZk OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmgKQEAgLTE5MCw3ICsxOTAsNiBAQCBleHRlcm4gUEdETExJTVBPUlQg aW50IE15UHJvY1BpZDsKIGV4dGVybiBQR0RMTElNUE9SVCBwZ190aW1lX3QgTXlTdGFydFRp bWU7CiBleHRlcm4gUEdETExJTVBPUlQgVGltZXN0YW1wVHogTXlTdGFydFRpbWVzdGFtcDsK IGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgUG9ydCAqTXlQcm9jUG9ydDsKLWV4dGVybiBQ R0RMTElNUE9SVCBzdHJ1Y3QgTGF0Y2ggKk15TGF0Y2g7CiBleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBNeUNhbmNlbEtleVZhbGlkOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludDMyIE15Q2Fu Y2VsS2V5OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeVBNQ2hpbGRTbG90OwpAQCAtMzE3 LDkgKzMxNiw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpEYXRhYmFzZVBhdGg7CiAv KiBub3cgaW4gdXRpbHMvaW5pdC9taXNjaW5pdC5jICovCiBleHRlcm4gdm9pZCBJbml0UG9z dG1hc3RlckNoaWxkKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdFN0YW5kYWxvbmVQcm9jZXNz KGNvbnN0IGNoYXIgKmFyZ3YwKTsKLWV4dGVybiB2b2lkIEluaXRQcm9jZXNzTG9jYWxMYXRj aCh2b2lkKTsKLWV4dGVybiB2b2lkIFN3aXRjaFRvU2hhcmVkTGF0Y2godm9pZCk7Ci1leHRl cm4gdm9pZCBTd2l0Y2hCYWNrVG9Mb2NhbExhdGNoKHZvaWQpOwogCiAvKgogICogTXlCYWNr ZW5kVHlwZSBpbmRpY2F0ZXMgd2hhdCBraW5kIG9mIGEgYmFja2VuZCB0aGlzIGlzLgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvaW50ZXJydXB0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjViY2M5ZjI0MDdlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9pbnRlcnJ1cHQuaApAQCAtMCwwICsxLDE1OSBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogaW50ZXJydXB0LmgKKyAqCSAgSW50ZXJydXB0IGhhbmRsaW5nIHJvdXRp bmVzLgorICoKKyAqICJJbnRlcnJ1cHRzIiBhcmUgYSBzZXQgb2YgZmxhZ3MgdGhhdCByZXBy ZXNlbnQgY29uZGl0aW9ucyB0aGF0IHNob3VsZCBiZQorICogaGFuZGxlZCBhdCBhIGxhdGVy IHRpbWUuICBUaGV5IGFyZSByb3VnaGx5IGFuYWxvZ291cyB0byBVbml4IHNpZ25hbHMsCisg KiBleGNlcHQgdGhhdCB0aGV5IGFyZSBoYW5kbGVkIGNvb3BlcmF0aXZlbHkgYnkgY2hlY2tp bmcgZm9yIHRoZW0gYXQgbWFueQorICogcG9pbnRzIGluIHRoZSBjb2RlLgorICoKKyAqIElu dGVycnVwdCBmbGFncyBjYW4gYmUgInJhaXNlZCIgc3luY2hyb25vdXNseSBieSBjb2RlIHRo YXQgd2FudHMgdG8gZGVmZXIKKyAqIGFuIGFjdGlvbiwgb3IgYXN5bmNocm9ub3VzbHkgYnkg dGltZXIgc2lnbmFsIGhhbmRsZXJzLCBvdGhlciBzaWduYWwKKyAqIGhhbmRsZXJzIG9yICJz ZW50IiBieSBvdGhlciBiYWNrZW5kcyBzZXR0aW5nIHRoZW0gZGlyZWN0bHkuCisgKgorICog TW9zdCBjb2RlIGN1cnJlbnRseSBkZWFscyB3aXRoIHRoZSBJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVAgaW50ZXJydXB0LiBJdAorICogaXMgcmFpc2VkIGJ5IGFueSBvZiB0aGUgZXZlbnRz IGNoZWNrZWQgYnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMpLCBsaWtlIHF1ZXJ5CisgKiBjYW5j ZWxsYXRpb24gb3IgaWRsZSBzZXNzaW9uIHRpbWVvdXQuIFdlbGwgYmVoYXZlZCBiYWNrZW5k IGNvZGUgcGVyZm9ybXMKKyAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgcGVyaW9kaWNhbGx5 IGluIGxvbmcgY29tcHV0YXRpb25zLCBhbmQgc2hvdWxkIG5ldmVyCisgKiBzbGVlcCB1c2lu ZyBtZWNoYW5pc21zIG90aGVyIHRoYW4gdGhlIFdhaXRFdmVudFNldCBtZWNoYW5pc20gb3Ig dGhlIG1vcmUKKyAqIGNvbnZlbmllbnQgV2FpdEludGVycnVwdC9XYWl0U29ja2VyT3JJbnRl cnJ1cHQgZnVuY3Rpb25zIChleGNlcHQgZm9yCisgKiBib3VuZGVkIHNob3J0IHBlcmlvZHMs IGVnIExXTG9jayB3YWl0cyksIHNvIHRoZXkgc2hvdWxkIHJlYWN0IGluIGdvb2QgdGltZS4K KyAqCisgKiBUaGUgInN0YW5kYXJkIiBzZXQgb2YgaW50ZXJydXB0cyBpcyBoYW5kbGVkIGJ5 IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIGFuZAorICogY29uc2lzdHMgb2YgdGFza3MgdGhh dCBhcmUgc2FmZSB0byBwZXJmb3JtIGF0IG1vc3QgdGltZXMuICBUaGV5IGNhbiBiZQorICog c3VwcHJlc3NlZCBieSBIT0xEX0lOVEVSUlVQVFMoKS9SRVNVTUVfSU5URVJSVVBUUygpLgor ICoKKyAqCisgKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGV2ZW50KHMpIHVz aW5nIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCBpczoKKyAqCisgKiBmb3IgKDs7KQorICog eworICoJICAgQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKKyAq CSAgIGlmICh3b3JrIHRvIGRvKQorICoJCSAgIERvIFN0dWZmKCk7CisgKgkgICBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCAuLi4pOworICogfQorICoK KyAqIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSogY2hl Y2tpbmcgaWYgdGhlcmUncyB3b3JrIHRvCisgKiBkby4gT3RoZXJ3aXNlLCBpZiBzb21lb25l IHNldHMgdGhlIGludGVycnVwdCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlCisgKiBDbGVh ckludGVycnVwdCgpIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQgd2lsbCBpbmNv cnJlY3RseSBibG9jay4KKyAqCisgKiBBbm90aGVyIHZhbGlkIGNvZGluZyBwYXR0ZXJuIGxv b2tzIGxpa2U6CisgKgorICogZm9yICg7OykKKyAqIHsKKyAqCSAgIGlmICh3b3JrIHRvIGRv KQorICoJCSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3VsYXIsIGV4aXQgbG9vcCBpZiBz b21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQKKyAqCSAgIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVAsIC4uLik7CisgKgkgICBDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVApOworICogfQorICoKKyAqIFRoaXMgaXMgdXNlZnVsIHRv IHJlZHVjZSBpbnRlcnJ1cHQgdHJhZmZpYyBpZiBpdCdzIGV4cGVjdGVkIHRoYXQgdGhlIGxv b3AncworICogdGVybWluYXRpb24gY29uZGl0aW9uIHdpbGwgb2Z0ZW4gYmUgc2F0aXNmaWVk IGluIHRoZSBmaXJzdCBpdGVyYXRpb247CisgKiB0aGUgY29zdCBpcyBhbiBleHRyYSBsb29w IGl0ZXJhdGlvbiBiZWZvcmUgYmxvY2tpbmcgd2hlbiBpdCBpcyBub3QuCisgKiBXaGF0IG11 c3QgYmUgYXZvaWRlZCBpcyBwbGFjaW5nIGFueSBjaGVja3MgZm9yIGFzeW5jaHJvbm91cyBl dmVudHMgYWZ0ZXIKKyAqIFdhaXRJbnRlcnJ1cHQgYW5kIGJlZm9yZSBDbGVhckludGVycnVw dCwgYXMgdGhhdCBjcmVhdGVzIGEgcmFjZSBjb25kaXRpb24uCisgKgorICogVG8gd2FrZSB1 cCB0aGUgd2FpdGVyLCB5b3UgbXVzdCBmaXJzdCBzZXQgYSBnbG9iYWwgZmxhZyBvciBzb21l dGhpbmcgZWxzZQorICogdGhhdCB0aGUgd2FpdCBsb29wIHRlc3RzIGluIHRoZSAiaWYgKHdv cmsgdG8gZG8pIiBwYXJ0LCBhbmQgY2FsbAorICogU2VuZEludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFUCkgKmFmdGVyKiB0aGF0LiBTZW5kSW50ZXJydXB0IGlzCisgKiBkZXNp Z25lZCB0byByZXR1cm4gcXVpY2tseSBpZiB0aGUgaW50ZXJydXB0IGlzIGFscmVhZHkgc2V0 LiBJbiBtb3JlIGNvbXBsZXgKKyAqIHNjZW5hcmlvcyB3aXRoIG5lc3RlZCBsb29wcyB0aGF0 IGNhbiBjb25zdW1lIGRpZmZlcmVudCBldmVudHMsIHlvdSBjYW4KKyAqIGRlZmluZSB5b3Vy IG93biBJTlRFUlJVUFRfKiBmbGFnIGluc3RlYWQgb2YgcmVseWluZyBvbgorICogSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvaW5jbHVkZS9zdG9y YWdlL2ludGVycnVwdC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lm bmRlZiBTVE9SQUdFX0lOVEVSUlVQVF9ICisjZGVmaW5lIFNUT1JBR0VfSU5URVJSVVBUX0gK KworI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251 bWJlci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCisKKyNpbmNsdWRl IDxzaWduYWwuaD4KKworZXh0ZXJuIFBHRExMSU1QT1JUIHBnX2F0b21pY191aW50MzIgKk15 UGVuZGluZ0ludGVycnVwdHM7CitleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQz MiAqTXlNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzOworCit0eXBlZGVmIGVudW0KK3sKKwkv KgorCSAqIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCBpcyBtdWx0aXBsZXhlZCBmb3IgbWFu eSByZWFzb25zLCBsaWtlIHF1ZXJ5CisJICogY2FuY2VsbGF0aW9uIHRlcm1pbmF0aW9uIHJl cXVlc3RzLCByZWNvdmVyeSBjb25mbGljdHMsIGFuZCBjb25maWcKKwkgKiByZWxvYWQgcmVx dWVzdHMuICBVcG9uIHJlY2VpdmluZyBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHlvdSBz aG91bGQKKwkgKiBjYWxsIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gcHJvY2VzcyB0aG9z ZSByZXF1ZXN0cy4gIEl0IGlzIGFsc28gdXNlZAorCSAqIGZvciB2YXJpb3VzIG90aGVyIGNv bnRleHQtZGVwZW5kZW50IHB1cnBvc2VzLCBidXQgbm90ZSB0aGF0IGlmIGl0J3MKKwkgKiB1 c2VkIHRvIHdha2UgdXAgZm9yIG90aGVyIHJlYXNvbnMsIHlvdSBtdXN0IHN0aWxsIGNhbGwK KwkgKiBDSEVDS19GT1JfSU5URVJSVVBUUygpIG9uY2UgcGVyIGl0ZXJhdGlvbi4KKwkgKi8K KwlJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisKKwkvKgorCSAqIElOVEVSUlVQVF9SRUNP VkVSWV9XQUtFVVAgaXMgdXNlZCB0byB3YWtlIHVwIHN0YXJ0dXAgcHJvY2VzcywgdG8gdGVs bAorCSAqIGl0IHRoYXQgaXQgc2hvdWxkIGNvbnRpbnVlIFdBTCByZXBsYXkuIEl0J3Mgc2Vu dCBieSBXQUwgcmVjZWl2ZXIgd2hlbgorCSAqIG1vcmUgV0FMIGFycml2ZXMsIG9yIHdoZW4g cHJvbW90aW9uIGlzIHJlcXVlc3RlZC4KKwkgKi8KKwlJTlRFUlJVUFRfUkVDT1ZFUllfQ09O VElOVUUsCit9IEludGVycnVwdFR5cGU7CisKKy8qCisgKiBUZXN0IGFuIGludGVycnVwdCBm bGFnLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0ludGVycnVwdElzUGVuZGluZyhJbnRl cnJ1cHRUeXBlIHJlYXNvbikKK3sKKwlyZXR1cm4gKHBnX2F0b21pY19yZWFkX3UzMihNeVBl bmRpbmdJbnRlcnJ1cHRzKSAmICgxIDw8IHJlYXNvbikpICE9IDA7Cit9CisKKy8qCisgKiBU ZXN0IGFuIGludGVycnVwdCBmbGFnLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0ludGVy cnVwdHNQZW5kaW5nKHVpbnQzMiBtYXNrKQoreworCXJldHVybiAocGdfYXRvbWljX3JlYWRf dTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgKG1hc2spKSAhPSAwOworfQorCisvKgorICog Q2xlYXIgYW4gaW50ZXJydXB0IGZsYWcuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorQ2xl YXJJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24pCit7CisJcGdfYXRvbWljX2ZldGNo X2FuZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cywgfigxIDw8IHJlYXNvbikpOworfQorCisv KgorICogVGVzdCBhbmQgY2xlYXIgYW4gaW50ZXJydXB0IGZsYWcuCisgKi8KK3N0YXRpYyBp bmxpbmUgYm9vbAorQ29uc3VtZUludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKK3sK KwlpZiAobGlrZWx5KCFJbnRlcnJ1cHRJc1BlbmRpbmcocmVhc29uKSkpCisJCXJldHVybiBm YWxzZTsKKworCUNsZWFySW50ZXJydXB0KHJlYXNvbik7CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworZXh0ZXJuIHZvaWQgUmFpc2VJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24pOwor ZXh0ZXJuIHZvaWQgU2VuZEludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbiwgUHJvY051 bWJlciBwZ3Byb2Nubyk7CitleHRlcm4gaW50CVdhaXRJbnRlcnJ1cHQodWludDMyIGludGVy cnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBsb25nIHRpbWVvdXQsCisJCQkJCQkgIHVpbnQz MiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJuIGludAlXYWl0SW50ZXJydXB0T3JTb2NrZXQo dWludDMyIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAor CQkJCQkJCQkgIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRl cm4gdm9pZCBTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cyh2b2lkKTsKK2V4dGVybiB2b2lkIFN3 aXRjaFRvU2hhcmVkSW50ZXJydXB0cyh2b2lkKTsKK2V4dGVybiB2b2lkIEluaXRpYWxpemVJ bnRlcnJ1cHRXYWl0U2V0KHZvaWQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvbGF0Y2guaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UxOTRkNTM2ZjAuLjAwMDAwMDAwMDAwCi0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaAorKysgL2Rldi9udWxsCkBAIC0xLDE5 NiArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBsYXRjaC5oCi0gKgkg IFJvdXRpbmVzIGZvciBpbnRlcnByb2Nlc3MgbGF0Y2hlcwotICoKLSAqIEEgbGF0Y2ggaXMg YSBib29sZWFuIHZhcmlhYmxlLCB3aXRoIG9wZXJhdGlvbnMgdGhhdCBsZXQgcHJvY2Vzc2Vz IHNsZWVwCi0gKiB1bnRpbCBpdCBpcyBzZXQuIEEgbGF0Y2ggY2FuIGJlIHNldCBmcm9tIGFu b3RoZXIgcHJvY2Vzcywgb3IgYSBzaWduYWwKLSAqIGhhbmRsZXIgd2l0aGluIHRoZSBzYW1l IHByb2Nlc3MuCi0gKgotICogVGhlIGxhdGNoIGludGVyZmFjZSBpcyBhIHJlbGlhYmxlIHJl cGxhY2VtZW50IGZvciB0aGUgY29tbW9uIHBhdHRlcm4gb2YKLSAqIHVzaW5nIHBnX3VzbGVl cCgpIG9yIHNlbGVjdCgpIHRvIHdhaXQgdW50aWwgYSBzaWduYWwgYXJyaXZlcywgd2hlcmUg dGhlCi0gKiBzaWduYWwgaGFuZGxlciBzZXRzIGEgZmxhZyB2YXJpYWJsZS4gQmVjYXVzZSBv biBzb21lIHBsYXRmb3JtcyBhbgotICogaW5jb21pbmcgc2lnbmFsIGRvZXNuJ3QgaW50ZXJy dXB0IHNsZWVwLCBhbmQgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQKLSAqIGRvZXMgdGhl cmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUgc2lnbmFsIGFycml2ZXMganVzdCBiZWZv cmUKLSAqIGVudGVyaW5nIHRoZSBzbGVlcCwgdGhlIGNvbW1vbiBwYXR0ZXJuIG11c3QgcGVy aW9kaWNhbGx5IHdha2UgdXAgYW5kCi0gKiBwb2xsIHRoZSBmbGFnIHZhcmlhYmxlLiBUaGUg cHNlbGVjdCgpIHN5c3RlbSBjYWxsIHdhcyBpbnZlbnRlZCB0byBzb2x2ZQotICogdGhpcyBw cm9ibGVtLCBidXQgaXQgaXMgbm90IHBvcnRhYmxlIGVub3VnaC4gTGF0Y2hlcyBhcmUgZGVz aWduZWQgdG8KLSAqIG92ZXJjb21lIHRoZXNlIGxpbWl0YXRpb25zLCBhbGxvd2luZyB5b3Ug dG8gc2xlZXAgd2l0aG91dCBwb2xsaW5nIGFuZAotICogZW5zdXJpbmcgcXVpY2sgcmVzcG9u c2UgdG8gc2lnbmFscyBmcm9tIG90aGVyIHByb2Nlc3Nlcy4KLSAqCi0gKiBUaGVyZSBhcmUg dHdvIGtpbmRzIG9mIGxhdGNoZXM6IGxvY2FsIGFuZCBzaGFyZWQuIEEgbG9jYWwgbGF0Y2gg aXMKLSAqIGluaXRpYWxpemVkIGJ5IEluaXRMYXRjaCwgYW5kIGNhbiBvbmx5IGJlIHNldCBm cm9tIHRoZSBzYW1lIHByb2Nlc3MuCi0gKiBBIGxvY2FsIGxhdGNoIGNhbiBiZSB1c2VkIHRv IHdhaXQgZm9yIGEgc2lnbmFsIHRvIGFycml2ZSwgYnkgY2FsbGluZwotICogU2V0TGF0Y2gg aW4gdGhlIHNpZ25hbCBoYW5kbGVyLiBBIHNoYXJlZCBsYXRjaCByZXNpZGVzIGluIHNoYXJl ZCBtZW1vcnksCi0gKiBhbmQgbXVzdCBiZSBpbml0aWFsaXplZCBhdCBwb3N0bWFzdGVyIHN0 YXJ0dXAgYnkgSW5pdFNoYXJlZExhdGNoLiBCZWZvcmUKLSAqIGEgc2hhcmVkIGxhdGNoIGNh biBiZSB3YWl0ZWQgb24sIGl0IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgcHJvY2Vzcwot ICogd2l0aCBPd25MYXRjaC4gT25seSB0aGUgcHJvY2VzcyBvd25pbmcgdGhlIGxhdGNoIGNh biB3YWl0IG9uIGl0LCBidXQgYW55Ci0gKiBwcm9jZXNzIGNhbiBzZXQgaXQuCi0gKgotICog VGhlcmUgYXJlIHRocmVlIGJhc2ljIG9wZXJhdGlvbnMgb24gYSBsYXRjaDoKLSAqCi0gKiBT ZXRMYXRjaAkJLSBTZXRzIHRoZSBsYXRjaAotICogUmVzZXRMYXRjaAktIENsZWFycyB0aGUg bGF0Y2gsIGFsbG93aW5nIGl0IHRvIGJlIHNldCBhZ2FpbgotICogV2FpdExhdGNoCS0gV2Fp dHMgZm9yIHRoZSBsYXRjaCB0byBiZWNvbWUgc2V0Ci0gKgotICogV2FpdExhdGNoIGluY2x1 ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAod2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQK LSAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5jdXIgZXh0cmEgb3ZlcmhlYWQpIGFuZCBh IHByb3Zpc2lvbiBmb3IKLSAqIHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2Vzc2VzIHRvIHdha2Ug dXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBkZWF0aC4KLSAqIFNlZSBsYXRjaC5jIGZv ciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucy4K LSAqCi0gKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGV2ZW50KHMpIGlzOgot ICoKLSAqIGZvciAoOzspCi0gKiB7Ci0gKgkgICBSZXNldExhdGNoKCk7Ci0gKgkgICBpZiAo d29yayB0byBkbykKLSAqCQkgICBEbyBTdHVmZigpOwotICoJICAgV2FpdExhdGNoKCk7Ci0g KiB9Ci0gKgotICogSXQncyBpbXBvcnRhbnQgdG8gcmVzZXQgdGhlIGxhdGNoICpiZWZvcmUq IGNoZWNraW5nIGlmIHRoZXJlJ3Mgd29yayB0bwotICogZG8uIE90aGVyd2lzZSwgaWYgc29t ZW9uZSBzZXRzIHRoZSBsYXRjaCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlCi0gKiBSZXNl dExhdGNoIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQgd2lsbCBpbmNvcnJlY3Rs eSBibG9jay4KLSAqCi0gKiBBbm90aGVyIHZhbGlkIGNvZGluZyBwYXR0ZXJuIGxvb2tzIGxp a2U6Ci0gKgotICogZm9yICg7OykKLSAqIHsKLSAqCSAgIGlmICh3b3JrIHRvIGRvKQotICoJ CSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3VsYXIsIGV4aXQgbG9vcCBpZiBzb21lIGNv bmRpdGlvbiBzYXRpc2ZpZWQKLSAqCSAgIFdhaXRMYXRjaCgpOwotICoJICAgUmVzZXRMYXRj aCgpOwotICogfQotICoKLSAqIFRoaXMgaXMgdXNlZnVsIHRvIHJlZHVjZSBsYXRjaCB0cmFm ZmljIGlmIGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUgbG9vcCdzCi0gKiB0ZXJtaW5hdGlvbiBj b25kaXRpb24gd2lsbCBvZnRlbiBiZSBzYXRpc2ZpZWQgaW4gdGhlIGZpcnN0IGl0ZXJhdGlv bjsKLSAqIHRoZSBjb3N0IGlzIGFuIGV4dHJhIGxvb3AgaXRlcmF0aW9uIGJlZm9yZSBibG9j a2luZyB3aGVuIGl0IGlzIG5vdC4KLSAqIFdoYXQgbXVzdCBiZSBhdm9pZGVkIGlzIHBsYWNp bmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3VzIGV2ZW50cyBhZnRlcgotICogV2FpdExh dGNoIGFuZCBiZWZvcmUgUmVzZXRMYXRjaCwgYXMgdGhhdCBjcmVhdGVzIGEgcmFjZSBjb25k aXRpb24uCi0gKgotICogVG8gd2FrZSB1cCB0aGUgd2FpdGVyLCB5b3UgbXVzdCBmaXJzdCBz ZXQgYSBnbG9iYWwgZmxhZyBvciBzb21ldGhpbmcKLSAqIGVsc2UgdGhhdCB0aGUgd2FpdCBs b29wIHRlc3RzIGluIHRoZSAiaWYgKHdvcmsgdG8gZG8pIiBwYXJ0LCBhbmQgY2FsbAotICog U2V0TGF0Y2ggKmFmdGVyKiB0aGF0LiBTZXRMYXRjaCBpcyBkZXNpZ25lZCB0byByZXR1cm4g cXVpY2tseSBpZiB0aGUKLSAqIGxhdGNoIGlzIGFscmVhZHkgc2V0LgotICoKLSAqIE9uIHNv bWUgcGxhdGZvcm1zLCBzaWduYWxzIHdpbGwgbm90IGludGVycnVwdCB0aGUgbGF0Y2ggd2Fp dCBwcmltaXRpdmUKLSAqIGJ5IHRoZW1zZWx2ZXMuICBUaGVyZWZvcmUsIGl0IGlzIGNyaXRp Y2FsIHRoYXQgYW55IHNpZ25hbCBoYW5kbGVyIHRoYXQKLSAqIGlzIG1lYW50IHRvIHRlcm1p bmF0ZSBhIFdhaXRMYXRjaCB3YWl0IGNhbGxzIFNldExhdGNoLgotICoKLSAqIE5vdGUgdGhh dCB1c2Ugb2YgdGhlIHByb2Nlc3MgbGF0Y2ggKFBHUFJPQy5wcm9jTGF0Y2gpIGlzIGdlbmVy YWxseSBiZXR0ZXIKLSAqIHRoYW4gYW4gYWQtaG9jIHNoYXJlZCBsYXRjaCBmb3Igc2lnbmFs aW5nIGF1eGlsaWFyeSBwcm9jZXNzZXMuICBUaGlzIGlzCi0gKiBiZWNhdXNlIGdlbmVyaWMg c2lnbmFsIGhhbmRsZXJzIHdpbGwgY2FsbCBTZXRMYXRjaCBvbiB0aGUgcHJvY2VzcyBsYXRj aAotICogb25seSwgc28gdXNpbmcgYW55IGxhdGNoIG90aGVyIHRoYW4gdGhlIHByb2Nlc3Mg bGF0Y2ggZWZmZWN0aXZlbHkgcHJlY2x1ZGVzCi0gKiB1c2Ugb2YgYW55IGdlbmVyaWMgaGFu ZGxlci4KLSAqCi0gKgotICogV2FpdEV2ZW50U2V0cyBhbGxvdyB0byB3YWl0IGZvciBsYXRj aGVzIGJlaW5nIHNldCBhbmQgYWRkaXRpb25hbCBldmVudHMgLQotICogcG9zdG1hc3RlciBk eWluZyBhbmQgc29ja2V0IHJlYWRpbmVzcyBvZiBzZXZlcmFsIHNvY2tldHMgY3VycmVudGx5 IC0gYXQgdGhlCi0gKiBzYW1lIHRpbWUuICBPbiBtYW55IHBsYXRmb3JtcyB1c2luZyBhIGxv bmcgbGl2ZWQgZXZlbnQgc2V0IGlzIG1vcmUKLSAqIGVmZmljaWVudCB0aGFuIHVzaW5nIFdh aXRMYXRjaCBvciBXYWl0TGF0Y2hPclNvY2tldC4KLSAqCi0gKgotICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0 Y2guaAotICoKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi0jaWZuZGVmIExBVENIX0gK LSNkZWZpbmUgTEFUQ0hfSAotCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KLSNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgotCi0vKgotICogTGF0Y2ggc3RydWN0dXJlIHNob3VsZCBiZSB0 cmVhdGVkIGFzIG9wYXF1ZSBhbmQgb25seSBhY2Nlc3NlZCB0aHJvdWdoCi0gKiB0aGUgcHVi bGljIGZ1bmN0aW9ucy4gSXQgaXMgZGVmaW5lZCBoZXJlIHRvIGFsbG93IGVtYmVkZGluZyBM YXRjaGVzIGFzCi0gKiBwYXJ0IG9mIGJpZ2dlciBzdHJ1Y3RzLgotICovCi10eXBlZGVmIHN0 cnVjdCBMYXRjaAotewotCXNpZ19hdG9taWNfdCBpc19zZXQ7Ci0Jc2lnX2F0b21pY190IG1h eWJlX3NsZWVwaW5nOwotCWJvb2wJCWlzX3NoYXJlZDsKLQlpbnQJCQlvd25lcl9waWQ7Ci0j aWZkZWYgV0lOMzIKLQlIQU5ETEUJCWV2ZW50OwotI2VuZGlmCi19IExhdGNoOwotCi0vKgot ICogQml0bWFza3MgZm9yIGV2ZW50cyB0aGF0IG1heSB3YWtlLXVwIFdhaXRMYXRjaCgpLCBX YWl0TGF0Y2hPclNvY2tldCgpLCBvcgotICogV2FpdEV2ZW50U2V0V2FpdCgpLgotICovCi0j ZGVmaW5lIFdMX0xBVENIX1NFVAkJICgxIDw8IDApCi0jZGVmaW5lIFdMX1NPQ0tFVF9SRUFE QUJMRQkgKDEgPDwgMSkKLSNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAgKDEgPDwgMikK LSNkZWZpbmUgV0xfVElNRU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdhaXRFdmVudFNl dFdhaXQoKSAqLwotI2RlZmluZSBXTF9QT1NUTUFTVEVSX0RFQVRIICAoMSA8PCA0KQotI2Rl ZmluZSBXTF9FWElUX09OX1BNX0RFQVRICSAoMSA8PCA1KQotI2lmZGVmIFdJTjMyCi0jZGVm aW5lIFdMX1NPQ0tFVF9DT05ORUNURUQgICgxIDw8IDYpCi0jZWxzZQotLyogYXZvaWQgaGF2 aW5nIHRvIGRlYWwgd2l0aCBjYXNlIG9uIHBsYXRmb3JtcyBub3QgcmVxdWlyaW5nIGl0ICov Ci0jZGVmaW5lIFdMX1NPQ0tFVF9DT05ORUNURUQgIFdMX1NPQ0tFVF9XUklURUFCTEUKLSNl bmRpZgotI2RlZmluZSBXTF9TT0NLRVRfQ0xPU0VEIAkgKDEgPDwgNykKLSNpZmRlZiBXSU4z MgotI2RlZmluZSBXTF9TT0NLRVRfQUNDRVBUCSAoMSA8PCA4KQotI2Vsc2UKLS8qIGF2b2lk IGhhdmluZyB0byBkZWFsIHdpdGggY2FzZSBvbiBwbGF0Zm9ybXMgbm90IHJlcXVpcmluZyBp dCAqLwotI2RlZmluZSBXTF9TT0NLRVRfQUNDRVBUCVdMX1NPQ0tFVF9SRUFEQUJMRQotI2Vu ZGlmCi0jZGVmaW5lIFdMX1NPQ0tFVF9NQVNLCQkoV0xfU09DS0VUX1JFQURBQkxFIHwgXAot CQkJCQkJCSBXTF9TT0NLRVRfV1JJVEVBQkxFIHwgXAotCQkJCQkJCSBXTF9TT0NLRVRfQ09O TkVDVEVEIHwgXAotCQkJCQkJCSBXTF9TT0NLRVRfQUNDRVBUIHwgXAotCQkJCQkJCSBXTF9T T0NLRVRfQ0xPU0VEKQotCi10eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnQKLXsKLQlpbnQJCQlw b3M7CQkJLyogcG9zaXRpb24gaW4gdGhlIGV2ZW50IGRhdGEgc3RydWN0dXJlICovCi0JdWlu dDMyCQlldmVudHM7CQkJLyogdHJpZ2dlcmVkIGV2ZW50cyAqLwotCXBnc29ja2V0CWZkOwkJ CQkvKiBzb2NrZXQgZmQgYXNzb2NpYXRlZCB3aXRoIGV2ZW50ICovCi0Jdm9pZAkgICAqdXNl cl9kYXRhOwkJLyogcG9pbnRlciBwcm92aWRlZCBpbiBBZGRXYWl0RXZlbnRUb1NldCAqLwot I2lmZGVmIFdJTjMyCi0JYm9vbAkJcmVzZXQ7CQkJLyogSXMgcmVzZXQgb2YgdGhlIGV2ZW50 IHJlcXVpcmVkPyAqLwotI2VuZGlmCi19IFdhaXRFdmVudDsKLQotLyogZm9yd2FyZCBkZWNs YXJhdGlvbiB0byBhdm9pZCBleHBvc2luZyBsYXRjaC5jIGltcGxlbWVudGF0aW9uIGRldGFp bHMgKi8KLXR5cGVkZWYgc3RydWN0IFdhaXRFdmVudFNldCBXYWl0RXZlbnRTZXQ7Ci0KLS8q Ci0gKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbGF0Y2guYwotICovCi1leHRlcm4g dm9pZCBJbml0aWFsaXplTGF0Y2hTdXBwb3J0KHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5pdExh dGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBJbml0U2hhcmVkTGF0Y2goTGF0Y2gg KmxhdGNoKTsKLWV4dGVybiB2b2lkIE93bkxhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4g dm9pZCBEaXNvd25MYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgU2V0TGF0Y2go TGF0Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIFJlc2V0TGF0Y2goTGF0Y2ggKmxhdGNoKTsK LWV4dGVybiB2b2lkIFNodXRkb3duTGF0Y2hTdXBwb3J0KHZvaWQpOwotCi1leHRlcm4gV2Fp dEV2ZW50U2V0ICpDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciByZXNvd25lciwg aW50IG5ldmVudHMpOwotZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVudFNldChXYWl0RXZlbnRT ZXQgKnNldCk7Ci1leHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50U2V0QWZ0ZXJGb3JrKFdhaXRF dmVudFNldCAqc2V0KTsKLWV4dGVybiBpbnQJQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50 U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLAotCQkJCQkJCSAgTGF0Y2gg KmxhdGNoLCB2b2lkICp1c2VyX2RhdGEpOwotZXh0ZXJuIHZvaWQgTW9kaWZ5V2FpdEV2ZW50 KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAqbGF0 Y2gpOwotCi1leHRlcm4gaW50CVdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQs IGxvbmcgdGltZW91dCwKLQkJCQkJCQkgV2FpdEV2ZW50ICpvY2N1cnJlZF9ldmVudHMsIGlu dCBuZXZlbnRzLAotCQkJCQkJCSB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVybiBp bnQJV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91 dCwKLQkJCQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVybiBpbnQJV2FpdExh dGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywKLQkJCQkJCQkgIHBn c29ja2V0IHNvY2ssIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1l eHRlcm4gdm9pZCBJbml0aWFsaXplTGF0Y2hXYWl0U2V0KHZvaWQpOwotZXh0ZXJuIGludAlH ZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhXYWl0RXZlbnRTZXQgKnNldCk7Ci1leHRlcm4g Ym9vbCBXYWl0RXZlbnRTZXRDYW5SZXBvcnRDbG9zZWQodm9pZCk7Ci0KLSNlbmRpZgkJCQkJ CQkvKiBMQVRDSF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Mu aCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IDVhM2RkNWQyZDQwLi42MDYw YjU3YTBhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRl ICJhY2Nlc3MvY2xvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1 ZGUgImxpYi9pbGlzdC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3BnX3NlbWEuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Byb2NsaXN0X3R5cGVzLmgiCkBAIC0xNzIsOSArMTcxLDYgQEAgc3Ry dWN0IFBHUFJPQwogCVBHU2VtYXBob3JlIHNlbTsJCQkvKiBPTkUgc2VtYXBob3JlIHRvIHNs ZWVwIG9uICovCiAJUHJvY1dhaXRTdGF0dXMgd2FpdFN0YXR1czsKIAotCUxhdGNoCQlwcm9j TGF0Y2g7CQkvKiBnZW5lcmljIGxhdGNoIGZvciBwcm9jZXNzICovCi0KLQogCVRyYW5zYWN0 aW9uSWQgeGlkOwkJCS8qIGlkIG9mIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBjdXJyZW50bHkg YmVpbmcKIAkJCQkJCQkJICogZXhlY3V0ZWQgYnkgdGhpcyBwcm9jLCBpZiBydW5uaW5nIGFu ZCBYSUQKIAkJCQkJCQkJICogaXMgYXNzaWduZWQ7IGVsc2UgSW52YWxpZFRyYW5zYWN0aW9u SWQuCkBAIC0zMTAsNiArMzA2LDE0IEBAIHN0cnVjdCBQR1BST0MKIAlQR1BST0MJICAgKmxv Y2tHcm91cExlYWRlcjsJLyogbG9jayBncm91cCBsZWFkZXIsIGlmIEknbSBhIG1lbWJlciAq LwogCWRsaXN0X2hlYWQJbG9ja0dyb3VwTWVtYmVyczsJLyogbGlzdCBvZiBtZW1iZXJzLCBp ZiBJJ20gYSBsZWFkZXIgKi8KIAlkbGlzdF9ub2RlCWxvY2tHcm91cExpbms7CS8qIG15IG1l bWJlciBsaW5rLCBpZiBJJ20gYSBtZW1iZXIgKi8KKworCXBnX2F0b21pY191aW50MzIgcGVu ZGluZ0ludGVycnVwdHM7CisJcGdfYXRvbWljX3VpbnQzMiBtYXliZVNsZWVwaW5nT25JbnRl cnJ1cHRzOworCisjaWZkZWYgV0lOMzIKKwkvKiBFdmVudCBoYW5kbGUgdG8gd2FrZSB1cCB0 aGUgcHJvY2VzcyB3aGVuIHNlbmRpbmcgYW4gaW50ZXJydXB0ICovCisJSEFORExFCQlpbnRl cnJ1cHRXYWtldXBFdmVudDsKKyNlbmRpZgogfTsKIAogLyogTk9URTogInR5cGVkZWYgc3Ry dWN0IFBHUFJPQyBQR1BST0MiIGFwcGVhcnMgaW4gc3RvcmFnZS9sb2NrLmguICovCkBAIC00 MjUsNiArNDI5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUFJPQ19IRFIKIAkgKi8KIAlQcm9jTnVt YmVyCXdhbHdyaXRlclByb2M7CiAJUHJvY051bWJlcgljaGVja3BvaW50ZXJQcm9jOworCVBy b2NOdW1iZXIJd2FscmVjZWl2ZXJQcm9jOworCVByb2NOdW1iZXIJc3RhcnR1cFByb2M7CiAK IAkvKiBDdXJyZW50IHNoYXJlZCBlc3RpbWF0ZSBvZiBhcHByb3ByaWF0ZSBzcGluc19wZXJf ZGVsYXkgdmFsdWUgKi8KIAlpbnQJCQlzcGluc19wZXJfZGVsYXk7CkBAIC00OTIsOSArNDk4 LDYgQEAgZXh0ZXJuIHZvaWQgUHJvY0xvY2tXYWtldXAoTG9ja01ldGhvZCBsb2NrTWV0aG9k VGFibGUsIExPQ0sgKmxvY2spOwogZXh0ZXJuIHZvaWQgQ2hlY2tEZWFkTG9ja0FsZXJ0KHZv aWQpOwogZXh0ZXJuIHZvaWQgTG9ja0Vycm9yQ2xlYW51cCh2b2lkKTsKIAotZXh0ZXJuIHZv aWQgUHJvY1dhaXRGb3JTaWduYWwodWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1leHRlcm4g dm9pZCBQcm9jU2VuZFNpZ25hbChQcm9jTnVtYmVyIHByb2NOdW1iZXIpOwotCiBleHRlcm4g UEdQUk9DICpBdXhpbGlhcnlQaWRHZXRQcm9jKGludCBwaWQpOwogCiBleHRlcm4gdm9pZCBC ZWNvbWVMb2NrR3JvdXBMZWFkZXIodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3dhaXRldmVudHNldC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRz ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjhmNTU1YTNi NWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNl dC5oCkBAIC0wLDAgKzEsMTE5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3 YWl0ZXZlbnRzZXQuaAorICoJICBwcG9sbCgpIC8gcHNlbGVjdCgpIGxpa2UgaW50ZXJmYWNl IGZvciB3YWl0aW5nIGZvciBldmVudHMKKyAqCisgKiBUaGlzIGlzIGEgcmVsaWFibGUgcmVw bGFjZW1lbnQgZm9yIHRoZSBjb21tb24gcGF0dGVybiBvZiB1c2luZyBwZ191c2xlZXAoKQor ICogb3Igc2VsZWN0KCkgdG8gd2FpdCB1bnRpbCBhIHNpZ25hbCBhcnJpdmVzLCB3aGVyZSB0 aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzCisgKiBhbiBpbnRlcnJ1cHQgKHNlZSBzdG9yYWdl L2ludGVycnVwdC5oKS4gQmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyBhbgorICogaW5jb21p bmcgc2lnbmFsIGRvZXNuJ3QgaW50ZXJydXB0IHNsZWVwLCBhbmQgZXZlbiBvbiBwbGF0Zm9y bXMgd2hlcmUgaXQKKyAqIGRvZXMgdGhlcmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUg c2lnbmFsIGFycml2ZXMganVzdCBiZWZvcmUgZW50ZXJpbmcKKyAqIHRoZSBzbGVlcCwgdGhl IGNvbW1vbiBwYXR0ZXJuIG11c3QgcGVyaW9kaWNhbGx5IHdha2UgdXAgYW5kIHBvbGwgdGhl IGZsYWcKKyAqIHZhcmlhYmxlLiBUaGUgcHNlbGVjdCgpIHN5c3RlbSBjYWxsIHdhcyBpbnZl bnRlZCB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIGJ1dAorICogaXQgaXMgbm90IHBvcnRhYmxl IGVub3VnaC4gV2FpdEV2ZW50U2V0cyBhbmQgSW50ZXJydXB0cyBhcmUgZGVzaWduZWQgdG8K KyAqIG92ZXJjb21lIHRoZXNlIGxpbWl0YXRpb25zLCBhbGxvd2luZyB5b3UgdG8gc2xlZXAg d2l0aG91dCBwb2xsaW5nIGFuZAorICogZW5zdXJpbmcgcXVpY2sgcmVzcG9uc2UgdG8gc2ln bmFscyBmcm9tIG90aGVyIHByb2Nlc3Nlcy4KKyAqCisgKiBXYWl0SW50ZXJydXB0IGluY2x1 ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAod2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQK KyAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5jdXIgZXh0cmEgb3ZlcmhlYWQpIGFuZCBh IHByb3Zpc2lvbiBmb3IgcG9zdG1hc3RlcgorICogY2hpbGQgcHJvY2Vzc2VzIHRvIHdha2Ug dXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBkZWF0aC4gIFNlZQorICogaW50ZXJydXB0 LmMgZm9yIGRldGFpbGVkIHNwZWNpZmljYXRpb25zIGZvciB0aGUgZXhwb3J0ZWQgZnVuY3Rp b25zLgorICoKKyAqIE9uIHNvbWUgcGxhdGZvcm1zLCBzaWduYWxzIHdpbGwgbm90IGludGVy cnVwdCB0aGUgd2FpdCBwcmltaXRpdmUgYnkKKyAqIHRoZW1zZWx2ZXMuICBUaGVyZWZvcmUs IGl0IGlzIGNyaXRpY2FsIHRoYXQgYW55IHNpZ25hbCBoYW5kbGVyIHRoYXQgaXMKKyAqIG1l YW50IHRvIHRlcm1pbmF0ZSBhIFdhaXRJbnRlcnJ1cHQgd2FpdCBjYWxscyBSYWlzZUludGVy cnVwdC4KKyAqCisgKiBXYWl0RXZlbnRTZXRzIGFsbG93IHRvIHdhaXQgZm9yIGludGVycnVw dHMgYmVpbmcgc2V0IGFuZCBhZGRpdGlvbmFsIGV2ZW50cyAtCisgKiBwb3N0bWFzdGVyIGR5 aW5nIGFuZCBzb2NrZXQgcmVhZGluZXNzIG9mIHNldmVyYWwgc29ja2V0cyBjdXJyZW50bHkg LSBhdCB0aGUKKyAqIHNhbWUgdGltZS4gIE9uIG1hbnkgcGxhdGZvcm1zIHVzaW5nIGEgbG9u ZyBsaXZlZCBldmVudCBzZXQgaXMgbW9yZQorICogZWZmaWNpZW50IHRoYW4gdXNpbmcgV2Fp dEludGVycnVwdCBvciBXYWl0SW50ZXJydXB0T3JTb2NrZXQuCisgKgorICoKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9m IHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9zdG9y YWdlL3dhaXRldmVudHNldC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp Zm5kZWYgV0FJVEVWRU5UU0VUX0gKKyNkZWZpbmUgV0FJVEVWRU5UU0VUX0gKKworI2luY2x1 ZGUgPHNpZ25hbC5oPgorCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgiCisjaW5j bHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKworLyoKKyAqIEJpdG1hc2tzIGZvciBldmVudHMg dGhhdCBtYXkgd2FrZS11cCBXYWl0SW50ZXJydXB0KCksCisgKiBXYWl0SW50ZXJydXB0T3JT b2NrZXQoKSwgb3IgV2FpdEV2ZW50U2V0V2FpdCgpLgorICovCisjZGVmaW5lIFdMX0lOVEVS UlVQVAkJICgxIDw8IDApCisjZGVmaW5lIFdMX1NPQ0tFVF9SRUFEQUJMRQkgKDEgPDwgMSkK KyNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAgKDEgPDwgMikKKyNkZWZpbmUgV0xfVElN RU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdhaXRFdmVudFNldFdhaXQoKSAqLworI2Rl ZmluZSBXTF9QT1NUTUFTVEVSX0RFQVRIICAoMSA8PCA0KQorI2RlZmluZSBXTF9FWElUX09O X1BNX0RFQVRICSAoMSA8PCA1KQorI2lmZGVmIFdJTjMyCisjZGVmaW5lIFdMX1NPQ0tFVF9D T05ORUNURUQgICgxIDw8IDYpCisjZWxzZQorLyogYXZvaWQgaGF2aW5nIHRvIGRlYWwgd2l0 aCBjYXNlIG9uIHBsYXRmb3JtcyBub3QgcmVxdWlyaW5nIGl0ICovCisjZGVmaW5lIFdMX1NP Q0tFVF9DT05ORUNURUQgIFdMX1NPQ0tFVF9XUklURUFCTEUKKyNlbmRpZgorI2RlZmluZSBX TF9TT0NLRVRfQ0xPU0VEIAkgKDEgPDwgNykKKyNpZmRlZiBXSU4zMgorI2RlZmluZSBXTF9T T0NLRVRfQUNDRVBUCSAoMSA8PCA4KQorI2Vsc2UKKy8qIGF2b2lkIGhhdmluZyB0byBkZWFs IHdpdGggY2FzZSBvbiBwbGF0Zm9ybXMgbm90IHJlcXVpcmluZyBpdCAqLworI2RlZmluZSBX TF9TT0NLRVRfQUNDRVBUCVdMX1NPQ0tFVF9SRUFEQUJMRQorI2VuZGlmCisjZGVmaW5lIFdM X1NPQ0tFVF9NQVNLCQkoV0xfU09DS0VUX1JFQURBQkxFIHwgXAorCQkJCQkJCSBXTF9TT0NL RVRfV1JJVEVBQkxFIHwgXAorCQkJCQkJCSBXTF9TT0NLRVRfQ09OTkVDVEVEIHwgXAorCQkJ CQkJCSBXTF9TT0NLRVRfQUNDRVBUIHwgXAorCQkJCQkJCSBXTF9TT0NLRVRfQ0xPU0VEKQor Cit0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnQKK3sKKwlpbnQJCQlwb3M7CQkJLyogcG9zaXRp b24gaW4gdGhlIGV2ZW50IGRhdGEgc3RydWN0dXJlICovCisJdWludDMyCQlldmVudHM7CQkJ LyogdHJpZ2dlcmVkIGV2ZW50cyAqLworCXBnc29ja2V0CWZkOwkJCQkvKiBzb2NrZXQgZmQg YXNzb2NpYXRlZCB3aXRoIGV2ZW50ICovCisJdm9pZAkgICAqdXNlcl9kYXRhOwkJLyogcG9p bnRlciBwcm92aWRlZCBpbiBBZGRXYWl0RXZlbnRUb1NldCAqLworI2lmZGVmIFdJTjMyCisJ Ym9vbAkJcmVzZXQ7CQkJLyogSXMgcmVzZXQgb2YgdGhlIGV2ZW50IHJlcXVpcmVkPyAqLwor I2VuZGlmCit9IFdhaXRFdmVudDsKKworLyogZm9yd2FyZCBkZWNsYXJhdGlvbiB0byBhdm9p ZCBleHBvc2luZyBpbnRlcnJ1cHQuYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzICovCit0eXBl ZGVmIHN0cnVjdCBXYWl0RXZlbnRTZXQgV2FpdEV2ZW50U2V0OworCitzdHJ1Y3QgUEdQUk9D OworCisvKgorICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHdhaXRldmVudHNldC5j CisgKi8KK2V4dGVybiB2b2lkIEluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KHZvaWQpOwor ZXh0ZXJuIHZvaWQgU2h1dGRvd25XYWl0RXZlbnRTdXBwb3J0KHZvaWQpOworI2lmZGVmIFdJ TjMyCitleHRlcm4gSEFORExFIENyZWF0ZVNoYXJlZFdha2V1cEhhbmRsZSh2b2lkKTsKKyNl bmRpZgorCitleHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3Vy Y2VPd25lciByZXNvd25lciwgaW50IG5ldmVudHMpOworZXh0ZXJuIHZvaWQgRnJlZVdhaXRF dmVudFNldChXYWl0RXZlbnRTZXQgKnNldCk7CitleHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50 U2V0QWZ0ZXJGb3JrKFdhaXRFdmVudFNldCAqc2V0KTsKK2V4dGVybiBpbnQJQWRkV2FpdEV2 ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZk LAorCQkJCQkJCSAgdWludDMyIGludGVycnVwdE1hc2ssIHZvaWQgKnVzZXJfZGF0YSk7Citl eHRlcm4gdm9pZCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3Ms IHVpbnQzMiBldmVudHMsIHVpbnQzMiBpbnRlcnJ1cHRNYXNrKTsKKworZXh0ZXJuIGludAlX YWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCisJCQkJ CQkJIFdhaXRFdmVudCAqb2NjdXJyZWRfZXZlbnRzLCBpbnQgbmV2ZW50cywKKwkJCQkJCQkg dWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRlcm4gdm9pZCBJbml0aWFsaXplSW50ZXJy dXB0V2FpdFNldCh2b2lkKTsKK2V4dGVybiBpbnQJR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVu dHMoV2FpdEV2ZW50U2V0ICpzZXQpOworZXh0ZXJuIGJvb2wgV2FpdEV2ZW50U2V0Q2FuUmVw b3J0Q2xvc2VkKHZvaWQpOworCisvKiBsb3cgbGV2ZWwgZnVuY3Rpb25zIHVzZWQgdG8gaW1w bGVtZW50IFNlbmRJbnRlcnJ1cHQgKi8KK2V4dGVybiB2b2lkIFdha2V1cE15UHJvYyh2b2lk KTsKK2V4dGVybiB2b2lkIFdha2V1cE90aGVyUHJvYyhzdHJ1Y3QgUEdQUk9DICpwcm9jKTsK KworI2VuZGlmCQkJCQkJCS8qIFdBSVRFVkVOVFNFVF9IICovCmRpZmYgLS1naXQgYS9zcmMv cG9ydC9wZ3NsZWVwLmMgYi9zcmMvcG9ydC9wZ3NsZWVwLmMKaW5kZXggMTI4NDQ1OGJmY2Uu LjlkOGVmMjYxMjk3IDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ3NsZWVwLmMKKysrIGIvc3Jj L3BvcnQvcGdzbGVlcC5jCkBAIC0zMiwxMCArMzIsMTAgQEAKICAqCiAgKiBDQVVUSU9OOiBJ dCdzIG5vdCBhIGdvb2QgaWRlYSB0byB1c2UgbG9uZyBzbGVlcHMgaW4gdGhlIGJhY2tlbmQu ICBUaGV5IHdpbGwKICAqIHNpbGVudGx5IHJldHVybiBlYXJseSBpZiBhIHNpZ25hbCBpcyBj YXVnaHQsIGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZQotICogbGF0Y2hlcyBiZWluZyBzZXQg b24gbW9zdCBPU2VzLCBhbmQgZXZlbiBzaWduYWwgaGFuZGxlcnMgdGhhdCBzZXQgTXlMYXRj aAotICogbWlnaHQgaGFwcGVuIHRvIHJ1biBiZWZvcmUgdGhlIHNsZWVwIGJlZ2lucywgYWxs b3dpbmcgdGhlIGZ1bGwgZGVsYXkuCi0gKiBCZXR0ZXIgcHJhY3RpY2UgaXMgdG8gdXNlIFdh aXRMYXRjaCgpIHdpdGggYSB0aW1lb3V0LCBzbyB0aGF0IGJhY2tlbmRzCi0gKiByZXNwb25k IHRvIGxhdGNoZXMgYW5kIHNpZ25hbHMgcHJvbXB0bHkuCisgKiBpbnRlcnJ1cHRzIGJlaW5n IHNldCBvbiBtb3N0IE9TZXMsIGFuZCBldmVuIHNpZ25hbCBoYW5kbGVycyB0aGF0IHJhaXNl IGFuCisgKiBpbnRlcnJ1cHQgbWlnaHQgaGFwcGVuIHRvIHJ1biBiZWZvcmUgdGhlIHNsZWVw IGJlZ2lucywgYWxsb3dpbmcgdGhlIGZ1bGwKKyAqIGRlbGF5LiAgQmV0dGVyIHByYWN0aWNl IGlzIHRvIHVzZSBXYWl0SW50ZXJydXB0KCkgd2l0aCBhIHRpbWVvdXQsIHNvIHRoYXQKKyAq IGJhY2tlbmRzIHJlc3BvbmQgdG8gaW50ZXJydXB0cyBhbmQgc2lnbmFscyBwcm9tcHRseS4K ICAqLwogdm9pZAogcGdfdXNsZWVwKGxvbmcgbWljcm9zZWMpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMgYi9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9udGVzdGVyLmMKaW5kZXggMGIzNDJiNWMyYmIuLmFlZDUwZjlmNjg1IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMKKysrIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCkBAIC03NjIsNyArNzYyLDcgQEAg dHJ5X2NvbXBsZXRlX3N0ZXBzKFRlc3RTcGVjICp0ZXN0c3BlYywgUGVybXV0YXRpb25TdGVw ICoqd2FpdGluZywKIAl7CiAJCWludAkJCXcgPSAwOwogCi0JCS8qIFJlc2V0IGxhdGNoOyB3 ZSBvbmx5IGNhcmUgYWJvdXQgbm90aWNlcyByZWNlaXZlZCB3aXRoaW4gbG9vcC4gKi8KKwkJ LyogUmVzZXQgZmxhZzsgd2Ugb25seSBjYXJlIGFib3V0IG5vdGljZXMgcmVjZWl2ZWQgd2l0 aGluIGxvb3AuICovCiAJCWFueV9uZXdfbm90aWNlID0gZmFsc2U7CiAKIAkJLyogTGlrZXdp c2UsIHRoZXNlIHZhcmlhYmxlcyByZXNldCBmb3IgZWFjaCByZXRyeS4gKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYwppbmRleCBmYjIzNTYwNDM5NC4uZmE0YzQyNzk0 M2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYwor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKQEAgLTE4LDYgKzE4 LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJ0ZXN0 X3NobV9tcS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0yODUsMTEgKzI4 NiwxMSBAQCB3YWl0X2Zvcl93b3JrZXJzX3RvX2JlY29tZV9yZWFkeSh3b3JrZXJfc3RhdGUg KndzdGF0ZSwKIAkJCXdlX2Jnd29ya2VyX3N0YXJ0dXAgPSBXYWl0RXZlbnRFeHRlbnNpb25O ZXcoIlRlc3RTaG1NcUJnV29ya2VyU3RhcnR1cCIpOwogCiAJCS8qIFdhaXQgdG8gYmUgc2ln bmFsZWQuICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCSB3ZV9iZ3dvcmtlcl9zdGFydHVwKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAs IFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJIHdlX2Jn d29ya2VyX3N0YXJ0dXApOwogCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBz cGluLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKiBDbGVhciB0aGUgaW50ZXJy dXB0IGZsYWcgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2Nj dXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYwppbmRleCAzZDIzNTU2OGI4 MS4uYzQ1OGI4OTA0N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1f bXEvdGVzdC5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5jCkBA IC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCiAKICNpbmNsdWRlICJ0ZXN0X3NobV9tcS5oIgpA QCAtMjM0LDEzICsyMzUsMTMgQEAgdGVzdF9zaG1fbXFfcGlwZWxpbmVkKFBHX0ZVTkNUSU9O X0FSR1MpCiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSBtYWRlIG5vIHByb2dyZXNzLCB3YWl0IGZv ciBvbmUgb2YgdGhlIG90aGVyIHByb2Nlc3NlcyB0bwotCQkJICogd2hpY2ggd2UgYXJlIGNv bm5lY3RlZCB0byBzZXQgb3VyIGxhdGNoLCBpbmRpY2F0aW5nIHRoYXQgdGhleQotCQkJICog aGF2ZSByZWFkIG9yIHdyaXR0ZW4gZGF0YSBhbmQgdGhlcmVmb3JlIHRoZXJlIG1heSBub3cg YmUgd29yawotCQkJICogZm9yIHVzIHRvIGRvLgorCQkJICogd2hpY2ggd2UgYXJlIGNvbm5l Y3RlZCB0byBzZW5kIHVzIGFuIGludGVycnVwdCwgaW5kaWNhdGluZyB0aGF0CisJCQkgKiB0 aGV5IGhhdmUgcmVhZCBvciB3cml0dGVuIGRhdGEgYW5kIHRoZXJlZm9yZSB0aGVyZSBtYXkg bm93IGJlCisJCQkgKiB3b3JrIGZvciB1cyB0byBkby4KIAkJCSAqLwotCQkJKHZvaWQpIFdh aXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAw LAotCQkJCQkJCSB3ZV9tZXNzYWdlX3F1ZXVlKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkJIHdl X21lc3NhZ2VfcXVldWUpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAl9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYwppbmRleCA2YzRmYmM3ODI3NC4uNmZlOWY5 ZTRlYjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2Vy LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYwpAQCAtMjAs NiArMjAsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NobV9tcS5oIgpAQCAtMTI4LDcgKzEyOSw3IEBAIHRlc3Rfc2htX21xX21haW4o RGF0dW0gbWFpbl9hcmcpCiAJCWVsb2coREVCVUcxLCAicmVnaXN0cmFudCBiYWNrZW5kIGhh cyBleGl0ZWQgcHJlbWF0dXJlbHkiKTsKIAkJcHJvY19leGl0KDEpOwogCX0KLQlTZXRMYXRj aCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhyZWdpc3RyYW50KSk7CiAKIAkv KiBEbyB0aGUgd29yay4gKi8KIAljb3B5X21lc3NhZ2VzKGlucWgsIG91dHFoKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMgYi9zcmMv dGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jCmluZGV4IGQ0NDAzYjI0ZDk4 Li41NWZlYmZiMWI5NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3Bp L3dvcmtlcl9zcGkuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2Vy X3NwaS5jCkBAIC01LDcgKzUsNyBAQAogICoJCXBhdHRlcm5zOiBlc3RhYmxpc2hpbmcgYSBk YXRhYmFzZSBjb25uZWN0aW9uOyBzdGFydGluZyBhbmQgY29tbWl0dGluZwogICoJCXRyYW5z YWN0aW9uczsgdXNpbmcgR1VDIHZhcmlhYmxlcywgYW5kIGhlZWRpbmcgU0lHSFVQIHRvIHJl cmVhZAogICoJCXRoZSBjb25maWd1cmF0aW9uIGZpbGU7IHJlcG9ydGluZyB0byBwZ19zdGF0 X2FjdGl2aXR5OyB1c2luZyB0aGUKLSAqCQlwcm9jZXNzIGxhdGNoIHRvIHNsZWVwIGFuZCBl eGl0IGluIGNhc2Ugb2YgcG9zdG1hc3RlciBkZWF0aC4KKyAqCQlXYWl0SW50ZXJydXB0IHRv IHNsZWVwIGFuZCBleGl0IGluIGNhc2Ugb2YgcG9zdG1hc3RlciBkZWF0aC4KICAqCiAgKiBU aGlzIGNvZGUgY29ubmVjdHMgdG8gYSBkYXRhYmFzZSwgY3JlYXRlcyBhIHNjaGVtYSBhbmQg dGFibGUsIGFuZCBzdW1tYXJpemVzCiAgKiB0aGUgbnVtYmVycyBjb250YWluZWQgdGhlcmVp bi4gIFRvIHNlZSBpdCB3b3JraW5nLCBpbnNlcnQgYW4gaW5pdGlhbCB2YWx1ZQpAQCAtMjYs NyArMjYsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvYmd3b3JrZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgotI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5o IgogCiAvKiB0aGVzZSBoZWFkZXJzIGFyZSB1c2VkIGJ5IHRoaXMgcGFydGljdWxhciB3b3Jr ZXIncyBjb2RlICovCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKQEAgLTIyMywxNSArMjIz LDE1IEBAIHdvcmtlcl9zcGlfbWFpbihEYXR1bSBtYWluX2FyZykKIAogCQkvKgogCQkgKiBC YWNrZ3JvdW5kIHdvcmtlcnMgbXVzdG4ndCBjYWxsIHVzbGVlcCgpIG9yIGFueSBkaXJlY3Qg ZXF1aXZhbGVudDoKLQkJICogaW5zdGVhZCwgdGhleSBtYXkgd2FpdCBvbiB0aGVpciBwcm9j ZXNzIGxhdGNoLCB3aGljaCBzbGVlcHMgYXMKLQkJICogbmVjZXNzYXJ5LCBidXQgaXMgYXdh a2VuZWQgaWYgcG9zdG1hc3RlciBkaWVzLiAgVGhhdCB3YXkgdGhlCi0JCSAqIGJhY2tncm91 bmQgcHJvY2VzcyBnb2VzIGF3YXkgaW1tZWRpYXRlbHkgaW4gYW4gZW1lcmdlbmN5LgorCQkg KiBpbnN0ZWFkLCB0aGV5IG1heSB1c2UgV2FpdEludGVycnVwdCwgd2hpY2ggc2xlZXBzIGFz IG5lY2Vzc2FyeSwgYnV0CisJCSAqIGlzIGF3YWtlbmVkIGlmIHBvc3RtYXN0ZXIgZGllcy4g IFRoYXQgd2F5IHRoZSBiYWNrZ3JvdW5kIHByb2Nlc3MKKwkJICogZ29lcyBhd2F5IGltbWVk aWF0ZWx5IGluIGFuIGVtZXJnZW5jeS4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlM YXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJCSB3b3JrZXJfc3BpX25hcHRpbWUgKiAxMDAwTCwKLQkJCQkJCSB3 b3JrZXJfc3BpX3dhaXRfZXZlbnRfbWFpbik7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAor CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCQkgd29ya2VyX3NwaV9uYXB0aW1lICogMTAwMEwsCisJCQkJCQkJIHdvcmtl cl9zcGlfd2FpdF9ldmVudF9tYWluKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDA4NTIxZDUxYTliLi4xZWFhZDU4YjFiZSAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNTQsNiArMTI1NCw3IEBAIEludGVn ZXIKIEludGVnZXJTZXQKIEludGVybmFsRGVmYXVsdEFDTAogSW50ZXJuYWxHcmFudAorSW50 ZXJydXB0VHlwZQogSW50ZXJ2YWwKIEludGVydmFsQWdnU3RhdGUKIEludG9DbGF1c2UKQEAg LTE0OTIsNyArMTQ5Myw2IEBAIExaNFN0YXRlCiBMYWJlbFByb3ZpZGVyCiBMYWdUcmFja2Vy CiBMYXJnZU9iamVjdERlc2MKLUxhdGNoCiBMYXVuY2hlckxhc3RTdGFydFRpbWVzRW50cnkK IExlcnBGdW5jCiBMZXhEZXNjcgotLSAKMi4zOS41Cgo= --------------VerE4Lm7eJBFFHNIufM5R041 Content-Type: text/x-patch; charset=UTF-8; name="v4-0002-Fix-lost-wakeup-issue-in-logical-replication-laun.patch" Content-Disposition: attachment; filename*0="v4-0002-Fix-lost-wakeup-issue-in-logical-replication-laun.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlYjRhYWFmZWYzOTk0YmI2YWEwYWRlNmJlM2MxOGQwZDc4MmFlZDViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgNCBOb3YgMjAyNCAyMDo1ODozNiArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjQgMi8zXSBGaXggbG9zdCB3YWtldXAgaXNzdWUgaW4gbG9naWNh bCByZXBsaWNhdGlvbiBsYXVuY2hlcgoKYnkgdXNpbmcgYSBkaWZmZXJlbnQgaW50ZXJydXB0 IHJlYXNvbiBmb3Igc3Vic2NyaXB0aW9uIGNoYW5nZXMuCgpEaXNjdXNzaW9uOiBodHRwczov L3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzQ3NjY3MmU3LTYyZjEtNGNhYi1hODIy LWYzYThlOTQ5ZGQzZkBpa2kuZmkKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC9mZjA2NjNkOS04MDExLTQyMGYtYTE2OS1lZmJmNTczMjdjYjVA aWtpLmZpCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j IHwgMjMgKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRl cnJ1cHQuaCAgICAgICAgICAgIHwgIDUgKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5z ZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggMWZiODc5MGYyMTMuLjA4NTI1YzhhODRiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01 Nyw3ICs1Nyw3IEBAIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlciA9IE5V TEw7CiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwQ3R4U3RydWN0CiB7CiAJLyogU3VwZXJ2 aXNvciBwcm9jZXNzLiAqLwotCXBpZF90CQlsYXVuY2hlcl9waWQ7CisJUHJvY051bWJlcgls YXVuY2hlcl9wcm9jbm87CiAKIAkvKiBIYXNoIHRhYmxlIGhvbGRpbmcgbGFzdCBzdGFydCB0 aW1lcyBvZiBzdWJzY3JpcHRpb25zJyBhcHBseSB3b3JrZXJzLiAqLwogCWRzYV9oYW5kbGUJ bGFzdF9zdGFydF9kc2E7CkBAIC04MTQsNyArODE0LDcgQEAgbG9naWNhbHJlcF93b3JrZXJf Y2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiBzdGF0aWMgdm9pZAogbG9naWNh bHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlMb2dpY2Fs UmVwQ3R4LT5sYXVuY2hlcl9waWQgPSAwOworCUxvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3By b2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiB9CiAKIC8qCkBAIC05NzQsNiArOTc0LDcg QEAgQXBwbHlMYXVuY2hlclNobWVtSW5pdCh2b2lkKQogCiAJCW1lbXNldChMb2dpY2FsUmVw Q3R4LCAwLCBBcHBseUxhdW5jaGVyU2htZW1TaXplKCkpOwogCisJCUxvZ2ljYWxSZXBDdHgt PmxhdW5jaGVyX3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCUxvZ2ljYWxSZXBD dHgtPmxhc3Rfc3RhcnRfZHNhID0gRFNBX0hBTkRMRV9JTlZBTElEOwogCQlMb2dpY2FsUmVw Q3R4LT5sYXN0X3N0YXJ0X2RzaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIApAQCAtMTEx OSw4ICsxMTIwLDEyIEBAIEFwcGx5TGF1bmNoZXJXYWtldXBBdENvbW1pdCh2b2lkKQogc3Rh dGljIHZvaWQKIEFwcGx5TGF1bmNoZXJXYWtldXAodm9pZCkKIHsKLQlpZiAoTG9naWNhbFJl cEN0eC0+bGF1bmNoZXJfcGlkICE9IDApCi0JCWtpbGwoTG9naWNhbFJlcEN0eC0+bGF1bmNo ZXJfcGlkLCBTSUdVU1IxKTsKKwl2b2xhdGlsZSBMb2dpY2FsUmVwQ3R4U3RydWN0ICpyZXBj dHggPSBMb2dpY2FsUmVwQ3R4OworCVByb2NOdW1iZXIJbGF1bmNoZXJfcHJvY25vOworCisJ bGF1bmNoZXJfcHJvY25vID0gcmVwY3R4LT5sYXVuY2hlcl9wcm9jbm87CisJaWYgKGxhdW5j aGVyX3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlTZW5kSW50ZXJydXB0KElO VEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFLCBsYXVuY2hlcl9wcm9jbm8pOwogfQogCiAv KgpAQCAtMTEzNCw4ICsxMTM5LDggQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9h cmcpCiAKIAliZWZvcmVfc2htZW1fZXhpdChsb2dpY2FscmVwX2xhdW5jaGVyX29uZXhpdCwg KERhdHVtKSAwKTsKIAotCUFzc2VydChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQgPT0g MCk7Ci0JTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcGlkID0gTXlQcm9jUGlkOworCUFzc2Vy dChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPT0gSU5WQUxJRF9QUk9DX05VTUJF Uik7CisJTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcHJvY25vID0gTXlQcm9jTnVtYmVyOwog CiAJLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVycy4gKi8KIAlwcXNpZ25hbChTSUdIVVAs IFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwpAQCAtMTE2Nyw2ICsxMTcyLDcgQEAg QXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9sZGN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhzdWJjdHgpOwogCiAJCS8qIFN0YXJ0IGFueSBtaXNzaW5nIHdvcmtl cnMgZm9yIGVuYWJsZWQgc3Vic2NyaXB0aW9ucy4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UpOwogCQlzdWJsaXN0ID0gZ2V0X3N1YnNjcmlw dGlvbl9saXN0KCk7CiAJCWZvcmVhY2gobGMsIHN1Ymxpc3QpCiAJCXsKQEAgLTEyMjMsNyAr MTIyOSw4IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlNZW1vcnlD b250ZXh0RGVsZXRlKHN1YmN0eCk7CiAKIAkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwot CQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJ CXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCB8CisJ CQkJCQkgICAxIDw8IElOVEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFLAogCQkJCQkJICAg V0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJ CQkgICB3YWl0X3RpbWUsCiAJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJf TUFJTik7CkBAIC0xMjUwLDcgKzEyNTcsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBt YWluX2FyZykKIGJvb2wKIElzTG9naWNhbExhdW5jaGVyKHZvaWQpCiB7Ci0JcmV0dXJuIExv Z2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCA9PSBNeVByb2NQaWQ7CisJcmV0dXJuIExvZ2lj YWxSZXBDdHgtPmxhdW5jaGVyX3Byb2NubyA9PSBNeVByb2NOdW1iZXI7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2ludGVycnVwdC5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaAppbmRleCA1YmNjOWYyNDA3ZS4uMzU5YzM1ZWU4MTMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaApAQCAtOTgsMTEgKzk4LDE0IEBAIHR5cGVk ZWYgZW51bQogCUlOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKIAogCS8qCi0JICogSU5URVJS VVBUX1JFQ09WRVJZX1dBS0VVUCBpcyB1c2VkIHRvIHdha2UgdXAgc3RhcnR1cCBwcm9jZXNz LCB0byB0ZWxsCisJICogSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFIGlzIHVzZWQgdG8g d2FrZSB1cCBzdGFydHVwIHByb2Nlc3MsIHRvIHRlbGwKIAkgKiBpdCB0aGF0IGl0IHNob3Vs ZCBjb250aW51ZSBXQUwgcmVwbGF5LiBJdCdzIHNlbnQgYnkgV0FMIHJlY2VpdmVyIHdoZW4K IAkgKiBtb3JlIFdBTCBhcnJpdmVzLCBvciB3aGVuIHByb21vdGlvbiBpcyByZXF1ZXN0ZWQu CiAJICovCiAJSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFLAorCisJLyogc2VudCB0byBs b2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5jaGVyLCB3aGVuIGEgc3Vic2NyaXB0aW9uIGNoYW5n ZXMgKi8KKwlJTlRFUlJVUFRfU1VCU0NSSVBUSU9OX0NIQU5HRSwKIH0gSW50ZXJydXB0VHlw ZTsKIAogLyoKLS0gCjIuMzkuNQoK --------------VerE4Lm7eJBFFHNIufM5R041--