From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 16:47:35 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 480C11065676 for ; Tue, 27 Jul 2010 16:47:35 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 5CA148FC20 for ; Tue, 27 Jul 2010 16:47:34 +0000 (UTC) Received: by wyj26 with SMTP id 26so3973628wyj.13 for ; Tue, 27 Jul 2010 09:47:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=JDZdF+e+nHVKvuk1HXBOdzdVhj9DBjUctPTowKdOqjg=; b=CJFB42tmSndV9hw695f7CwnuhHDONa9hneMxNFe2q6ueFtuuTH9YCziNWHegbPM2cA Zk15Yz2cO4dl0UlbBVDGc6bCjSraMMEAU1fS6hmJ66Ao2IHDDa3+UzjRopSijhwyUM4b 1TsVFmB764vqjqQf7H2VLo6rs3A+nirHzqfrk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=v7Ax9uWQlA3noevjaE7nUFL3UA0PzFcU62/s1i33WyMTUgswjZRnw8rul1J8lKoXVb chh1ERGrIkvCBP6NAZYX4cbALc9I8DYxmNe4Zxwz4fPGF7VLsB8QA4CZkV1kPWoEb2d7 cBYa+tyjcF+L4nwzbwPncoGusqVkJZhHOI+iQ= MIME-Version: 1.0 Received: by 10.227.136.17 with SMTP id p17mr3847261wbt.135.1280249253196; Tue, 27 Jul 2010 09:47:33 -0700 (PDT) Received: by 10.216.137.23 with HTTP; Tue, 27 Jul 2010 09:47:33 -0700 (PDT) In-Reply-To: <20100727132350.GN22295@deviant.kiev.zoral.com.ua> References: <20100727132350.GN22295@deviant.kiev.zoral.com.ua> Date: Tue, 27 Jul 2010 20:47:33 +0400 Message-ID: From: pluknet To: Kostik Belousov Content-Type: multipart/mixed; boundary=0016e659f3e6f5f5c7048c61417d Cc: freebsd-amd64@freebsd.org Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 16:47:35 -0000 --0016e659f3e6f5f5c7048c61417d Content-Type: text/plain; charset=ISO-8859-1 On 27 July 2010 17:23, Kostik Belousov wrote: > On Tue, Jul 27, 2010 at 04:43:00PM +0400, pluknet wrote: >> Hi. >> >> What is a status of "options PERFMON" on amd64? >> AFAIK PERFMON opt. was inherited from i386 port and never worked. >> Does it make sense to wipe out perfmon part on amd64? >> >> Looking at cvs I see amd64/include/perfmon.h was never here. > > I think perfmon should be removed from i386 too. Would you prepare > the patch ? > Ok, attached. -- wbr, pluknet --0016e659f3e6f5f5c7048c61417d Content-Type: application/octet-stream; name="perfmon.0.diff" Content-Disposition: attachment; filename="perfmon.0.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gc4yzwgv0 SW5kZXg6IHNoYXJlL21hbi9tYW40L21hbjQuaTM4Ni9wZXJmbW9uLjQKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g c2hhcmUvbWFuL21hbjQvbWFuNC5pMzg2L3BlcmZtb24uNAkocmV2aXNpb24gMjEwNTM2KQorKysg c2hhcmUvbWFuL21hbjQvbWFuNC5pMzg2L3BlcmZtb24uNAkod29ya2luZyBjb3B5KQpAQCAtMSwy MTMgKzAsMCBAQAotLlwiCi0uXCIgQ29weXJpZ2h0IDE5OTYgTWFzc2FjaHVzZXR0cyBJbnN0aXR1 dGUgb2YgVGVjaG5vbG9neQotLlwiCi0uXCIgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlm eSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKLS5cIiBpdHMgZG9jdW1lbnRhdGlv biBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQotLlwiIGdyYW50ZWQs IHByb3ZpZGVkIHRoYXQgYm90aCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcwot LlwiIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLCB0aGF0IGJvdGggdGhl IGFib3ZlCi0uXCIgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBh cHBlYXIgaW4gYWxsCi0uXCIgc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUg bmFtZSBvZiBNLkkuVC4gbm90IGJlIHVzZWQKLS5cIiBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNp dHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlCi0uXCIgc29mdHdhcmUgd2l0aG91 dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIG1ha2VzCi0uXCIg bm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJl IGZvciBhbnkKLS5cIiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4 cHJlc3Mgb3IgaW1wbGllZAotLlwiIHdhcnJhbnR5LgotLlwiCi0uXCIgVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBNLkkuVC4gYGBBUyBJUycnLiAgTS5JLlQuIERJU0NMQUlNUwotLlwiIEFM TCBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRX QVJFLAotLlwiIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS QU5USUVTIE9GCi0uXCIgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gSU4gTk8gRVZFTlQKLS5cIiBTSEFMTCBNLkkuVC4gQkUgTElBQkxFIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS5cIiBTUEVDSUFMLCBFWEVNUExBUlks IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0uXCIgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP RgotLlwiIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI T1dFVkVSIENBVVNFRCBBTkQKLS5cIiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLS5cIiBPUiBUT1JUIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKLS5cIiBPRiBU SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YKLS5cIiBTVUNIIERBTUFHRS4KLS5cIgotLlwiICRGcmVlQlNEJAotLkRkIE1hcmNoIDI2 LCAxOTk2Ci0uRHQgUEVSRk1PTiA0IGkzODYKLS5PcwotLlNoIE5BTUUKLS5ObSBwZXJmbW9uCi0u TmQgQ1BVIHBlcmZvcm1hbmNlLW1vbml0b3JpbmcgaW50ZXJmYWNlCi0uU2ggU1lOT1BTSVMKLS5D ZCBjcHUgSTU4Nl9DUFUKLS5DZCBjcHUgSTY4Nl9DUFUKLS5DZCBvcHRpb25zIFBFUkZNT04KLS5T aCBERVNDUklQVElPTgotVGhlCi0uTm0KLWRyaXZlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGlu dGVybmFsIHBlcmZvcm1hbmNlLW1vbml0b3JpbmcKLWNhcGFiaWxpdGllcyBvZiB0aGUKLS5UbiBJ bnRlbAotLlRuIFBlbnRpdW0KLWFuZAotLlRuICJQZW50aXVtIFBybyIKLUNQVXMuCi1UaGVzZSBw cm9jZXNzb3JzIGltcGxlbWVudCB0d28gaW50ZXJuYWwgY291bnRlcnMgd2hpY2ggY2FuIGJlCi1j b25maWd1cmVkIHRvIG1lYXN1cmUgYSB2YXJpZXR5IG9mIGV2ZW50cyBmb3IgZWl0aGVyIGNvdW50 IG9yIGR1cmF0aW9uCi0oaW4gQ1BVIGN5Y2xlcyksIGFzIHdlbGwgYXMgYSBjeWNsZSBjb3VudGVy IHdoaWNoIGNvdW50cyBjbG9jayBjeWNsZXMuCi1UaGUKLS5ObQotZHJpdmVyIHByb3ZpZGVzIGEg ZGV2aWNlLXN0eWxlIGludGVyZmFjZSB0byB0aGVzZSBjYXBhYmlsaXRpZXMuCi0uUHAKLUFsbCBh Y2Nlc3MgdG8gdGhlIHBlcmZvcm1hbmNlLW1vbml0b3JpbmcgY291bnRlcnMgaXMgcGVyZm9ybWVk IHRocm91Z2gKLXRoZSBzcGVjaWFsIGRldmljZSBmaWxlCi0uRHEgUGEgL2Rldi9wZXJmbW9uIC4K LVRoaXMgZGV2aWNlIHN1cHBvcnRzIGEgbnVtYmVyIG9mCi0uWHIgaW9jdGwgMgotcmVxdWVzdHMs IGRlZmluZWQgaW4KLS5JbiBtYWNoaW5lL3BlcmZtb24uaAotYWxvbmcgd2l0aCB0aGUgZGVmaW5p dGlvbnMgb2YgdGhlIHZhcmlvdXMgY291bnRlcnMgZm9yIGJvdGgKLS5UbiBQZW50aXVtCi1hbmQK LS5UbiAiUGVudGl1bSBQcm8iCi1wcm9jZXNzb3JzLgotLlBwCi0uU3kgTk9UQSBCRU5FIDoKLVRo ZSBzZXQgb2YgYXZhaWxhYmxlIGV2ZW50cyBkaWZmZXJzIGZyb20gcHJvY2Vzc29yIHRvIHByb2Nl c3Nvci4KLUl0Ci1pcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHByb2dyYW1tZXIgdG8gZW5z dXJlIHRoYXQgdGhlIGV2ZW50Ci1udW1iZXJzIHVzZWQgYXJlIHRoZSBjb3JyZWN0IG9uZXMgZm9y IHRoZSBDUFUgdHlwZSBiZWluZyBtZWFzdXJlZC4KLS5QcAotVGhlIGZvbGxvd2luZwotLlhyIGlv Y3RsIDIKLXJlcXVlc3RzIGFyZSBkZWZpbmVkOgotLkJsIC10YWcgLXdpZHRoIFBNSU9UU1RBTVAK LS5JdCBEdiBQTUlPU0VUVVAKLS5QcSBMaSAic3RydWN0IHBtYyIKLVNldCB1cCBhIGNvdW50ZXIg d2l0aCBwYXJhbWV0ZXJzIGFuZCBmbGFncyBkZWZpbmVkIGluIHRoZSBzdHJ1Y3R1cmUuCi1UaGUg Zm9sbG93aW5nIGZpZWxkcyBhcmUgZGVmaW5lZCBpbgotLkxpIHN0cnVjdCBwbWMgOgotLkJsIC10 YWcgLXdpZHRoICJ1X2NoYXIgcG1jX2V2ZW50eCIKLS5JdCBMaSAiaW50IHBtY19udW0iCi10aGUg bnVtYmVyIG9mIHRoZSBjb3VudGVyIGluIHF1ZXN0aW9uOyBtdXN0IGJlIGxlc3MgdGhhbgotLkR2 IE5QTUMKLShjdXJyZW50bHkgMikuCi0uSXQgTGkgInVfY2hhciBwbWNfZXZlbnQiCi10aGUgcGFy dGljdWxhciBldmVudCBudW1iZXIgdG8gYmUgbW9uaXRvcmVkLCBhcyBkZWZpbmVkIGluCi0uSW4g bWFjaGluZS9wZXJmbW9uLmggLgotLkl0IExpICJ1X2NoYXIgcG1jX3VuaXQiCi10aGUgdW5pdCBt YXNrIHZhbHVlLCBzcGVjaWZpYyB0byB0aGUgZXZlbnQgdHlwZSAoc2VlIHRoZQotLlRuIEludGVs Ci1kb2N1bWVudGF0aW9uKS4KLS5JdCBMaSAidV9jaGFyIHBtY19mbGFncyIKLWZsYWdzIG1vZGlm eWluZyB0aGUgb3BlcmF0aW9uIG9mIHRoZSBjb3VudGVyIChzZWUgYmVsb3cpLgotLkl0IExpICJ1 X2NoYXIgcG1jX21hc2siCi10aGUgY291bnRlciBtYXNrIHZhbHVlOyBlc3NlbnRpYWxseSwgdGhp cyBpcyBhIHRocmVzaG9sZCB1c2VkIHRvCi1yZXN0cmljdCB0aGUgY291bnQgdG8gZXZlbnRzIGxh c3RpbmcgbW9yZSAob3IgbGVzcykgdGhhbiB0aGUgc3BlY2lmaWVkCi1udW1iZXIgb2YgY2xvY2tz LgotLkVsCi0uUHAKLVRoZSBmb2xsb3dpbmcKLS5MaSBwbWNfZmxhZ3MKLXZhbHVlcyBhcmUgZGVm aW5lZDoKLS5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBQTUNGX1VTUnh4Ci0uSXQgRHYgUE1DRl9V U1IKLWNvdW50IGV2ZW50cyBpbiB1c2VyIG1vZGUKLS5JdCBEdiBQTUNGX09TCi1jb3VudCBldmVu dHMgaW4ga2VybmVsIG1vZGUKLS5JdCBEdiBQTUNGX0UKLWNvdW50IG51bWJlciBvZiBldmVudHMg cmF0aGVyIHRoYW4gdGhlaXIgZHVyYXRpb24KLS5JdCBEdiBQTUNGX0lOVgotaW52ZXJ0IHRoZSBz ZW5zZSBvZiB0aGUgY291bnRlciBtYXNrIGNvbXBhcmlzb24KLS5FbAotLkl0IER2IFBNSU9HRVQK LS5QcSBMaSAic3RydWN0IHBtYyIKLXJldHVybnMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBv ZiB0aGUgc3BlY2lmaWVkIGNvdW50ZXIuCi0uSXQgRHYgUE1JT1NUQVJUCi0uSXQgRHYgUE1JT1NU T1AKLS5QcSBMaSBpbnQKLXN0YXJ0cyAoc3RvcHMpIHRoZSBzcGVjaWZpZWQgY291bnRlci4KLUR1 ZSB0byBoYXJkd2FyZSBkZWZpY2llbmNpZXMsCi1jb3VudGVycyBtdXN0IGJlIHN0YXJ0ZWQgYW5k IHN0b3BwZWQgaW4gbnVtZXJpY2FsIG9yZGVyLgotKFRoYXQgaXMgdG8KLXNheSwgY291bnRlciAw IGNhbiBuZXZlciBiZSBzdG9wcGVkIHdpdGhvdXQgZmlyc3Qgc3RvcHBpbmcgY291bnRlciAxLikK LVRoZSBkcml2ZXIgd2lsbAotLkVtIG5vdAotZW5mb3JjZSB0aGlzIHJlc3RyaWN0aW9uIChzaW5j ZSBpdCBtYXkgbm90IGJlIHByZXNlbnQgaW4gZnV0dXJlIENQVXMpLgotLkl0IER2IFBNSU9SRVNF VAotLlBxIExpIGludAotcmVzZXQgdGhlIHNwZWNpZmllZCBjb3VudGVyIHRvIHplcm8uCi1UaGUg Y291bnRlciBzaG91bGQgYmUgc3RvcHBlZAotd2l0aAotLkR2IFBNSU9TVE9QCi1iZWZvcmUgaXQg aXMgcmVzZXQuCi1BbGwgY291bnRlcnMgYXJlIGF1dG9tYXRpY2FsbHkgcmVzZXQgYnkKLS5EdiBQ TUlPU0VUVVAgLgotLkl0IER2IFBNSU9SRUFECi0uUHEgTGkgInN0cnVjdCBwbWNfZGF0YSIKLWdl dCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY291bnRlci4KLVRoZQotLkxpIHBtY19kYXRhCi1z dHJ1Y3R1cmUgZGVmaW5lcyB0d28gZmllbGRzOgotLlBwCi0uQmwgLXRhZyAtY29tcGFjdCAtd2lk dGggInF1YWRfdCBwbWNkX3ZhbHVlIgotLkl0IExpICJpbnQgcG1jZF9udW0iCi10aGUgbnVtYmVy IG9mIHRoZSBjb3VudGVyIHRvIHJlYWQKLS5JdCBMaSAicXVhZF90IHBtY2RfdmFsdWUiCi10aGUg cmVzdWx0aW5nIHZhbHVlIGFzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCi0uRWwKLS5QcAotSW4g dGhlIGZ1dHVyZSwgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHVzZSB0aGUKLS5MaSBSRFBNQwotaW5z dHJ1Y3Rpb24gb24KLS5UbiAiUGVudGl1bSBQcm8iCi1wcm9jZXNzb3JzIHRvIHJlYWQgdGhlIGNv dW50ZXJzIGRpcmVjdGx5LgotLkl0IER2IFBNSU9UU1RBTVAKLS5QcSBMaSAic3RydWN0IHBtY190 c3RhbXAiCi1yZWFkIHRoZSB0aW1lIHN0YW1wIGNvdW50ZXIuCi1UaGUKLS5MaSBwbWNfdHN0YW1w Ci1zdHJ1Y3R1cmUgZGVmaW5lcyB0d28gZmllbGRzOgotLlBwCi0uQmwgLXRhZyAtY29tcGFjdCAt d2lkdGggInF1YWRfdCBwbWN0X3ZhbHVlIgotLkl0IExpICJpbnQgcG1jdF9yYXRlIgotdGhlIGFw cHJveGltYXRlIHJhdGUgb2YgdGhlIGNvdW50ZXIsIGluIE1IegotLkl0IExpICJxdWFkX3QgcG1j dF92YWx1ZSIKLXRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb3VudGVyIGFzIGEgNjQtYml0IGlu dGVnZXIKLS5FbAotLlBwCi1JdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBjb3VudGVy IHJhdGUsIGFzIHByb3ZpZGVkIGluIHRoZQotLkxpIHBtY3RfcmF0ZQotZmllbGQsIGlzIG9mdGVu IGluY29ycmVjdCBiZWNhdXNlIG9mIGNhbGlicmF0aW9uIGRpZmZpY3VsdGllcyBhbmQKLW5vbi1p bnRlZ3JhbCBjbG9jayByYXRlcy4KLVRoaXMgZmllbGQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgbW9y ZSBvZiBhCi1oaW50IG9yIHNhbml0eS1jaGVjayB0aGFuIGFuIGFjdHVhbCByZXByZXNlbnRhdGlv biBvZiB0aGUgcmF0ZSBvZgotY2xvY2sgdGlja3MuCi0uRWwKLS5TaCBGSUxFUwotLkJsIC10YWcg LWNvbXBhY3QgLXdpZHRoICIvdXNyL2luY2x1ZGUvbWFjaGluZS9wZXJmbW9uLmgiCi0uSXQgUGEg L2Rldi9wZXJmbW9uCi1jaGFyYWN0ZXIgZGV2aWNlIGludGVyZmFjZSB0byBjb3VudGVycwotLkl0 IFBhIC91c3IvaW5jbHVkZS9tYWNoaW5lL3BlcmZtb24uaAotaW5jbHVkZSBmaWxlIHdpdGggZGVm aW5pdGlvbnMgb2Ygc3RydWN0dXJlcyBhbmQgZXZlbnQgdHlwZXMKLS5JdCBQYSAvdXNyL3NoYXJl L2V4YW1wbGVzL3BlcmZtb24KLXNhbXBsZSBzb3VyY2UgY29kZSBkZW1vbnN0cmF0aW5nIHVzZSBv ZiBhbGwgdGhlCi0uRm4gaW9jdGwKLWNvbW1hbmRzCi0uRWwKLS5TaCBTRUUgQUxTTwotLlhyIGlv Y3RsIDIgLAotLlhyIGh3cG1jIDQKLS5ScwotLiVBIEludGVsIENvcnBvcmF0aW9uCi0uJUIgUGVu dGl1bSBQcm8gRmFtaWx5IERldmVsb3BlcidzIE1hbnVhbAotLiVEIEphbnVhcnkgMTk5NgotLiVW IHZvbC4gMwotLiVPIE9wZXJhdGluZyBTeXN0ZW0gV3JpdGVyJ3MgTWFudWFsCi0uUmUKLS5TaCBI SVNUT1JZCi1UaGUKLS5ObQotZGV2aWNlIGZpcnN0IGFwcGVhcmVkIGluCi0uRnggMi4yIC4KLS5T aCBBVVRIT1JTCi1UaGUKLS5ObQotZHJpdmVyIHdhcyB3cml0dGVuIGJ5Ci0uQW4gR2FycmV0dCBB LiBXb2xsbWFuICwKLU1JVCBMYWJvcmF0b3J5IGZvciBDb21wdXRlciBTY2llbmNlLgpJbmRleDog c2hhcmUvbWFuL21hbjQvbWFuNC5pMzg2L01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNoYXJlL21h bi9tYW40L21hbjQuaTM4Ni9NYWtlZmlsZQkocmV2aXNpb24gMjEwNTM2KQorKysgc2hhcmUvbWFu L21hbjQvbWFuNC5pMzg2L01ha2VmaWxlCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw2IEBA CiAJbnB4LjQgXAogCXBhZS40IFwKIAlwYmlvLjQgXAotCXBlcmZtb24uNCBcCiAJcG5wLjQgXAog CXBucGJpb3MuNCBcCiAJc2JuaS40IFwKSW5kZXg6IHNoYXJlL21hbi9tYW43L2Nsb2Nrcy43Cj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHNoYXJlL21hbi9tYW43L2Nsb2Nrcy43CShyZXZpc2lvbiAyMTA1MzYpCisr KyBzaGFyZS9tYW4vbWFuNy9jbG9ja3MuNwkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDEwICsxNDQs NiBAQAogLlZhIG1hY2hkZXAudHNjX2ZyZXEKIHN5c2N0bCwgaWYgaXQgaXMgYXZhaWxhYmxlLgog SXQgaXMgdXNlZCB0byBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHZhbHVlcyBvZiB0aGUgc2NoZWR1bGlu ZyBjbG9jay4KLUl0IGNhbiBiZSBhY2Nlc3NlZCB1c2luZyB0aGUKLS5EdiBQTUlPVFNUQU1QCi1y ZXF1ZXN0IG9mCi0uWHIgcGVyZm1vbiA0IC4KIC5JdAogVGhlIEFDUEkgY2xvY2suCiBUaGlzIGlz IGEgcmVhbCBjbG9jay90aW1lciB3aXRoIGEgbm9taW5hbCBmcmVxdWVuY3kgb2YgMzU3OTU0NS4K SW5kZXg6IHNoYXJlL2V4YW1wbGVzL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNoYXJlL2V4YW1w bGVzL01ha2VmaWxlCShyZXZpc2lvbiAyMTA1MzYpCisrKyBzaGFyZS9leGFtcGxlcy9NYWtlZmls ZQkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogCW1kb2MgXAogCW5ldGdyYXBoIFwK IAlud2NsaWVudCBcCi0JcGVyZm1vbiBcCiAJcG9ydGFsIFwKIAlwcGkgXAogCXBwcCBcCkBAIC0x MTgsOSArMTE3LDYgQEAKIAluZXRncmFwaC91ZHAudHVubmVsIFwKIAlud2NsaWVudC9kb3Qubndm c3JjIFwKIAlud2NsaWVudC9ud2ZzLnNoLnNhbXBsZSBcCi0JcGVyZm1vbi9NYWtlZmlsZSBcCi0J cGVyZm1vbi9SRUFETUUgXAotCXBlcmZtb24vcGVyZm1vbi5jIFwKIAlwb3J0YWwvUkVBRE1FIFwK IAlwb3J0YWwvcG9ydGFsLmNvbmYgXAogCXBwaS9NYWtlZmlsZSBcCkluZGV4OiBzaGFyZS9leGFt cGxlcy9wZXJmbW9uL3BlcmZtb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzaGFyZS9leGFtcGxlcy9wZXJm bW9uL3BlcmZtb24uYwkocmV2aXNpb24gMjEwNTM2KQorKysgc2hhcmUvZXhhbXBsZXMvcGVyZm1v bi9wZXJmbW9uLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKiBDb3B5 cmlnaHQgMTk5NiBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5Ci0gKgotICog UGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0 d2FyZSBhbmQKLSAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91 dCBmZWUgaXMgaGVyZWJ5Ci0gKiBncmFudGVkLCBwcm92aWRlZCB0aGF0IGJvdGggdGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMKLSAqIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBp biBhbGwgY29waWVzLCB0aGF0IGJvdGggdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwKLSAqIHN1cHBvcnRpbmcgZG9j dW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgTS5JLlQuIG5vdCBiZSB1c2VkCi0gKiBp biBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2Yg dGhlCi0gKiBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Np b24uICBNLkkuVC4gbWFrZXMKLSAqIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFi aWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0gKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlk ZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAotICogd2FycmFudHkuCi0gKiAK LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTS5JLlQuIGBgQVMgSVMnJy4gIE0uSS5U LiBESVNDTEFJTVMKLSAqIEFMTCBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUyBXSVRIIFJF R0FSRCBUTyBUSElTIFNPRlRXQVJFLAotICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIElOIE5PIEVWRU5UCi0gKiBTSEFMTCBNLkkuVC4g QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS VklDRVM7IExPU1MgT0YKLSAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU Ci0gKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg UE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICoKLSAqICRGcmVlQlNEJAotICovCi0K LSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLQotI2luY2x1 ZGUgPG1hY2hpbmUvY3B1Lmg+Ci0jaW5jbHVkZSA8bWFjaGluZS9wZXJmbW9uLmg+Ci0KLSNpbmNs dWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgot I2luY2x1ZGUgPGVyci5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+ Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLQotc3RhdGljIGludCBn ZXRudW0oY29uc3QgY2hhciAqLCBpbnQsIGludCk7Ci1zdGF0aWMgdm9pZCB1c2FnZShjb25zdCBj aGFyICopIF9fZGVhZDI7Ci0KLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0J aW50IGMsIGZkLCBudW07Ci0JaW50IGxvb3BzLCBpLCBzbGVlcHRpbWU7Ci0JY2hhciAqY21kOwot CXN0cnVjdCBwbWMgcG1jOwotCXN0cnVjdCBwbWNfdHN0YW1wIHRoZW4sIG5vdzsKLQlzdHJ1Y3Qg cG1jX2RhdGEgdmFsdWU7Ci0JcXVhZF90ICpidWY7Ci0JZG91YmxlIHRvdGFsOwotCi0JcG1jLnBt Y19udW0gPSAwOwotCXBtYy5wbWNfZXZlbnQgPSAwOwotCXBtYy5wbWNfdW5pdCA9IDA7Ci0JcG1j LnBtY19mbGFncyA9IDA7Ci0JcG1jLnBtY19tYXNrID0gMDsKLQljbWQgPSBOVUxMOwotCWxvb3Bz ID0gNTA7Ci0Jc2xlZXB0aW1lID0gMDsKLQotCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2 LCAiczpsOnVvZWlVOm06YzoiKSkgIT0gLTEpIHsKLQkJc3dpdGNoKGMpIHsKLQkJY2FzZSAndSc6 Ci0JCQlwbWMucG1jX2ZsYWdzIHw9IFBNQ0ZfVVNSOwotCQkJYnJlYWs7Ci0JCWNhc2UgJ28nOgot CQkJcG1jLnBtY19mbGFncyB8PSBQTUNGX09TOwotCQkJYnJlYWs7Ci0JCWNhc2UgJ2UnOgotCQkJ cG1jLnBtY19mbGFncyB8PSBQTUNGX0U7Ci0JCQlicmVhazsKLQkJY2FzZSAnaSc6Ci0JCQlwbWMu cG1jX2ZsYWdzIHw9IFBNQ0ZfSU5WOwotCQkJYnJlYWs7Ci0JCWNhc2UgJ1UnOgotCQkJcG1jLnBt Y191bml0ID0gZ2V0bnVtKG9wdGFyZywgMCwgMjU2KTsKLQkJCWJyZWFrOwotCQljYXNlICdtJzoK LQkJCXBtYy5wbWNfbWFzayA9IGdldG51bShvcHRhcmcsIDAsIDI1Nik7Ci0JCQlicmVhazsKLQkJ Y2FzZSAnbCc6Ci0JCQlsb29wcyA9IGdldG51bShvcHRhcmcsIDEsIElOVF9NQVggLSAxKTsKLQkJ CWJyZWFrOwotCQljYXNlICdzJzoKLQkJCXNsZWVwdGltZSA9IGdldG51bShvcHRhcmcsIDAsIElO VF9NQVggLSAxKTsKLQkJCWJyZWFrOwotCQljYXNlICdjJzoKLQkJCWNtZCA9IG9wdGFyZzsKLQkJ CWJyZWFrOwotCQlkZWZhdWx0OgotCQkJdXNhZ2UoYXJndlswXSk7Ci0JCX0KLQl9Ci0KLQlpZiAo YXJnYyAtIG9wdGluZCAhPSAxKQotCQl1c2FnZShhcmd2WzBdKTsKLQotCXBtYy5wbWNfZXZlbnQg PSBnZXRudW0oYXJndltvcHRpbmRdLCAwLCAyNTUpOwotCi0JYnVmID0gbWFsbG9jKChsb29wcyAr IDEpICogc2l6ZW9mICpidWYpOwotCWlmICghYnVmKQotCQllcnIoMSwgIm1hbGxvYyglbHUpIiwg KHVuc2lnbmVkIGxvbmcpKGxvb3BzICsxKSAqIHNpemVvZiAqYnVmKTsKLQotCWZkID0gb3Blbihf UEFUSF9QRVJGTU9OLCBPX1JEV1IsIDApOwotCWlmIChmZCA8IDApCi0JCWVycigxLCAib3Blbjog IiBfUEFUSF9QRVJGTU9OKTsKLQotCWlmIChpb2N0bChmZCwgUE1JT1NFVFVQLCAmcG1jKSA8IDAp Ci0JCWVycigxLCAiaW9jdGwoUE1JT1NFVFVQKSIpOwotCi0JaWYgKGlvY3RsKGZkLCBQTUlPVFNU QU1QLCAmdGhlbikgPCAwKQotCQllcnIoMSwgImlvY3RsKFBNSU9UU1RBTVApIik7Ci0KLQludW0g PSAwOwotCWlmIChpb2N0bChmZCwgUE1JT1NUQVJULCAmbnVtKSA8IDApCi0JCWVycigxLCAiaW9j dGwoUE1JT1NUQVJUKSIpOwotCi0JdmFsdWUucG1jZF9udW0gPSAwOwotCWZvciAoaSA9IDA7IGkg PCBsb29wczsgaSsrKSB7Ci0JCWlmIChpb2N0bChmZCwgUE1JT1NUT1AsICZudW0pIDwgMCkKLQkJ CWVycigxLCAiaW9jdGwoUE1JT1NUT1ApIik7Ci0JCWlmIChpb2N0bChmZCwgUE1JT1JFQUQsICZ2 YWx1ZSkgPCAwKQotCQkJZXJyKDEsICJpb2N0bChQTUlPUkVBRCkiKTsKLQkJYnVmW2ldID0gdmFs dWUucG1jZF92YWx1ZTsKLQkJaWYgKGlvY3RsKGZkLCBQTUlPUkVTRVQsICZ2YWx1ZS5wbWNkX251 bSkgPCAwKQotCQkJZXJyKDEsICJpb2N0bChQTUlPUkVTRVQpIik7Ci0JCWlmIChpb2N0bChmZCwg UE1JT1NUQVJULCAmbnVtKSA8IDApCi0JCQllcnIoMSwgImlvY3RsKFBNSU9TVEFSVCkiKTsKLQkJ aWYgKHNsZWVwdGltZSkKLQkJCXNsZWVwKHNsZWVwdGltZSk7Ci0JCWlmIChjbWQpCi0JCQlzeXN0 ZW0oY21kKTsKLQl9Ci0KLQlpZiAoaW9jdGwoZmQsIFBNSU9TVE9QLCAmbnVtKSA8IDApCi0JCWVy cigxLCAiaW9jdGwoUE1JT1NUT1ApIik7Ci0JaWYgKGlvY3RsKGZkLCBQTUlPUkVBRCwgJnZhbHVl KSA8IDApCi0JCWVycigxLCAiaW9jdGwoUE1JT1JFQUQpIik7Ci0JYnVmW2ldID0gdmFsdWUucG1j ZF92YWx1ZTsKLQlpZiAoaW9jdGwoZmQsIFBNSU9UU1RBTVAsICZub3cpIDwgMCkKLQkJZXJyKDEs ICJpb2N0bChQTUlPVFNUQU1QKSIpOwotCi0JdG90YWwgPSAwOwotCWZvciAoaSA9IDE7IGkgPD0g bG9vcHM7IGkrKykgewotCQlwcmludGYoIiVkOiAlcWRcbiIsIGksIGJ1ZltpXSk7Ci0JCXRvdGFs ICs9IGJ1ZltpXTsKLQl9Ci0JcHJpbnRmKCJ0b3RhbDogJWZcbm1lYW46ICVmXG4iLCB0b3RhbCwg dG90YWwgLyBsb29wcyk7Ci0KLQlwcmludGYoImNsb2NrcyAoYXQgJWQtTUh6KTogJXFkXG4iLCBu b3cucG1jdF9yYXRlLAotCSAgICAgICBub3cucG1jdF92YWx1ZSAtIHRoZW4ucG1jdF92YWx1ZSk7 Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotZ2V0bnVtKGNvbnN0IGNoYXIgKmJ1Ziwg aW50IG1pbiwgaW50IG1heCkKLXsKLQljaGFyICplcDsKLQlsb25nIGw7Ci0KLQllcnJubyA9IDA7 Ci0JbCA9IHN0cnRvbChidWYsICZlcCwgMCk7Ci0JaWYgKCpidWYgJiYgISplcCAmJiAhZXJybm8p IHsKLQkJaWYgKGwgPCBtaW4gfHwgbCA+IG1heCkgewotCQkJZXJyeCgxLCAiJXM6IG11c3QgYmUg YmV0d2VlbiAlZCBhbmQgJWQiLCAKLQkJCSAgICAgYnVmLCBtaW4sIG1heCk7Ci0JCX0KLQkJcmV0 dXJuIChpbnQpbDsKLQl9IAotCi0JZXJyeCgxLCAiJXM6IHBhcmFtZXRlciBtdXN0IGJlIGFuIGlu dGVnZXIiLCBidWYpOwotfQotCi1zdGF0aWMgdm9pZAotdXNhZ2UoY29uc3QgY2hhciAqcG5hbWUp Ci17Ci0JZnByaW50ZihzdGRlcnIsIAotCSJ1c2FnZTogJXMgWy1laW91XSBbLWMgY29tbWFuZF0g Wy1sIG5sb29wc10gWy1tIG1hc2tdIFstcyBzbGVlcHRpbWVdXG4iCi0JIiAgICAgICBbLVUgdW5p dF0gY291bnRlclxuIiwKLQkJcG5hbWUpOwotCWV4aXQoMSk7Ci19CkluZGV4OiBzaGFyZS9leGFt cGxlcy9wZXJmbW9uL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNoYXJlL2V4YW1wbGVzL3BlcmZt b24vTWFrZWZpbGUJKHJldmlzaW9uIDIxMDUzNikKKysrIHNoYXJlL2V4YW1wbGVzL3BlcmZtb24v TWFrZWZpbGUJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMCwwIEBACi0jICRGcmVlQlNEJAotCi1Q Uk9HPQlwZXJmbW9uCi1OT19NQU49Ci0KLWluc3RhbGw6Ci0KLS5pbmNsdWRlIDxic2QucHJvZy5t az4KSW5kZXg6IHNoYXJlL2V4YW1wbGVzL3BlcmZtb24vUkVBRE1FCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNo YXJlL2V4YW1wbGVzL3BlcmZtb24vUkVBRE1FCShyZXZpc2lvbiAyMTA1MzYpCisrKyBzaGFyZS9l eGFtcGxlcy9wZXJmbW9uL1JFQURNRQkod29ya2luZyBjb3B5KQpAQCAtMSwyNSArMCwwIEBACi1g cGVyZm1vbicgaXMgYSBzYW1wbGUgcHJvZ3JhbSB0byBhY2Nlc3MgdGhlIHBlcmZvcm1hbmNlLW1v bml0b3JpbmcKLWNvdW50ZXJzIG9uIFBlbnRpdW0gYW5kIFBlbnRpdW0gUHJvIENQVXMuICBTZWUg cGVyZm1vbig0KSBmb3IgYQotZGVzY3JpcHRpb24gb2YgdGhpcyBmYWNpbGl0eS4KLQotVGhlIHBy b2dyYW0gdGFrZXMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgotCi0JLXUJY291bnQgZXZlbnRzIGlu IHVzZXIgbW9kZQotCS1vCWNvdW50IGV2ZW50cyBpbiBrZXJuZWwgbW9kZQotCQkodGhlc2UgdHdv IGNhbiBiZSBjb21iaW5lZCkKLQotCS1lCWNvdW50IGV2ZW50cywgbm90IGR1cmF0aW9uCi0JLWwg bglydW4gYG4nIGxvb3BzIChkZWZhdWx0IDUwKQotCS1zIG4Jc2xlZXAgYG4nIHNlY29uZHMgYmV0 d2VlbiBsb29wIGl0ZXJhdGlvbnMgKGRlZmF1bHQgMCkKLQotVGhlIGZvbGxvd2luZyBvcHRpb25z IGFyZSBub3QgaW1wbGVtZW50ZWQgb24gUGVudGl1bSBDUFVzOgotCi0JLW0gbgl1c2UgY291bnQg bWFzayBgbicKLQktaQlpbnZlcnQgc2Vuc2Ugb2YgY291bnQgbWFzayBjb21wYXJpc29uCi0JLVUg bgl1c2UgdW5pdCBtYXNrIGBuJwotCi1UaGVyZSBpcyBvbmUgbWFuZGF0b3J5IGFyZ3VtZW50LCB3 aGljaCBpcyB0aGUgZXZlbnQgbnVtYmVyIHRvIGJlCi1tb25pdG9yZWQsIGRlZmluZWQgaW4gPG1h Y2hpbmUvcGVyZm1vbi5oPi4gIEFsbCBudW1iZXJzIGNhbiBiZQotc3BlY2lmaWVkIGluIGFueSBm b3JtYXQgYWNjZXB0YWJsZSB0byBzdHJ0b2woMykuCi0KLSRGcmVlQlNEJApJbmRleDogT2Jzb2xl dGVGaWxlcy5pbmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gT2Jzb2xldGVGaWxlcy5pbmMJKHJldmlzaW9uIDIx MDU0MikKKysrIE9ic29sZXRlRmlsZXMuaW5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCwx NSBAQAogIyBUaGUgZmlsZSBpcyBwYXJ0aXRpb25lZDogT0xEX0ZJTEVTIGZpcnN0LCB0aGVuIE9M RF9MSUJTIGFuZCBPTERfRElSUyBsYXN0LgogIwogCisjIDIwMTAwNzI3OiBwZXJmbW9uKDQpIHJl bW92YWwKKy5pZiAke1RBUkdFVF9BUkNIfSA9PSAiaTM4NiIKK09MRF9GSUxFUys9dXNyL3NoYXJl L21hbi9tYW40L2kzODYvcGVyZm1vbi40Lmd6CisuZW5kaWYKK09MRF9GSUxFUys9dXNyL2luY2x1 ZGUvbWFjaGluZS9wZXJmbW9uLmgKK09MRF9GSUxFUys9dXNyL3NoYXJlL2V4YW1wbGVzL3BlcmZt b24vTWFrZWZpbGUKK09MRF9GSUxFUys9dXNyL3NoYXJlL2V4YW1wbGVzL3BlcmZtb24vUkVBRE1F CitPTERfRklMRVMrPXVzci9zaGFyZS9leGFtcGxlcy9wZXJmbW9uL3BlcmZtb24uYworT0xEX0RJ UlMrPXVzci9zaGFyZS9leGFtcGxlcy9wZXJmbW9uCiAjIDIwMTAwNzI1OiBhY3BpX2FpYm9vc3Qo NCkgcmVtb3ZhbC4KIE9MRF9GSUxFUys9dXNyL3NoYXJlL21hbi9tYW40L2FjcGlfYWlib29zdC40 Lmd6CiAjIDIwMTAwNzIwOiBuZXcgY2xhbmcgaW1wb3J0IHdoaWNoIGJ1bXBzIHZlcnNpb24gZnJv bSAyLjAgdG8gMi44CkluZGV4OiBVUERBVElORwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVUERBVElORwkocmV2 aXNpb24gMjEwNTM2KQorKysgVVBEQVRJTkcJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDEw IEBACiAJbWFjaGluZXMgdG8gbWF4aW1pemUgcGVyZm9ybWFuY2UuICAoVG8gZGlzYWJsZSBtYWxs b2MgZGVidWdnaW5nLCBydW4KIAlsbiAtcyBhaiAvZXRjL21hbGxvYy5jb25mLikKIAorMjAxMDA3 Mjc6CisJVGhlIHBlcmZtb24oNCkgZHJpdmVyIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2Yg dGhlIG1vcmUgYWR2YW5jZWQKKwlod3BtYyg0KSBkcml2ZXIuCisKIDIwMTAwNzI1OgogCVRoZSBh Y3BpX2FpYm9vc3QoNCkgZHJpdmVyIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIG5l dwogCWFpYnMoNCkgZHJpdmVyLiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIGtlcm5lbCBjb25maWd1 cmF0aW9uIGZpbGUuCkluZGV4OiBldGMvbXRyZWUvQlNELnVzci5kaXN0Cj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGV0Yy9tdHJlZS9CU0QudXNyLmRpc3QJKHJldmlzaW9uIDIxMDU0MikKKysrIGV0Yy9tdHJlZS9C U0QudXNyLmRpc3QJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw4ICsyNjMsNiBAQAogICAgICAgICAg ICAgLi4KICAgICAgICAgICAgIHBjLXN5c2luc3RhbGwKICAgICAgICAgICAgIC4uCi0gICAgICAg ICAgICBwZXJmbW9uCi0gICAgICAgICAgICAuLgogICAgICAgICAgICAgcGYKICAgICAgICAgICAg IC4uCiAgICAgICAgICAgICBwb3J0YWwKSW5kZXg6IHN5cy9wb3dlcnBjL2FpbS9tYWNoZGVwLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gc3lzL3Bvd2VycGMvYWltL21hY2hkZXAuYwkocmV2aXNpb24gMjEwNTM2 KQorKysgc3lzL3Bvd2VycGMvYWltL21hY2hkZXAuYwkod29ya2luZyBjb3B5KQpAQCAtMTkwLDkg KzE5MCw2IEBACiAJICovCiAJY3B1X3NldHVwKFBDUFVfR0VUKGNwdWlkKSk7CiAKLSNpZmRlZiBQ RVJGTU9OCi0JcGVyZm1vbl9pbml0KCk7Ci0jZW5kaWYKIAlwcmludGYoInJlYWwgbWVtb3J5ICA9 ICVsZCAoJWxkIE1CKVxuIiwgcHRvYShwaHlzbWVtKSwKIAkgICAgcHRvYShwaHlzbWVtKSAvIDEw NDg1NzYpOwogCXJlYWxtZW0gPSBwaHlzbWVtOwpJbmRleDogc3lzL2NvbmYvb3B0aW9ucy5pMzg2 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHN5cy9jb25mL29wdGlvbnMuaTM4NgkocmV2aXNpb24gMjEwNTM2KQor Kysgc3lzL2NvbmYvb3B0aW9ucy5pMzg2CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMyw2IEBA CiBNUFRBQkxFX0ZPUkNFX0hUVAogTVBfV0FUQ0hET0cKIE5LUFQJCQlvcHRfcG1hcC5oCi1QRVJG TU9OCiBQTUFQX1NIUEdQRVJQUk9DCW9wdF9wbWFwLmgKIFBPV0VSRkFJTF9OTUkJCW9wdF90cmFw LmgKIApJbmRleDogc3lzL2NvbmYvZmlsZXMucGM5OAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvY29uZi9m aWxlcy5wYzk4CShyZXZpc2lvbiAyMTA1MzYpCisrKyBzeXMvY29uZi9maWxlcy5wYzk4CSh3b3Jr aW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDYgQEAKIGkzODYvaTM4Ni9tcHRhYmxlLmMJCW9wdGlv bmFsIGFwaWMKIGkzODYvaTM4Ni9tcHRhYmxlX3BjaS5jCQlvcHRpb25hbCBhcGljIHBjaQogaTM4 Ni9pMzg2L25leHVzLmMJCXN0YW5kYXJkCi1pMzg2L2kzODYvcGVyZm1vbi5jCQlvcHRpb25hbCBw ZXJmbW9uCiBpMzg2L2kzODYvcG1hcC5jCQlzdGFuZGFyZAogaTM4Ni9pMzg2L3B0cmFjZV9tYWNo ZGVwLmMJc3RhbmRhcmQKIGkzODYvaTM4Ni9zdGFja19tYWNoZGVwLmMJb3B0aW9uYWwgZGRiIHwg c3RhY2sKSW5kZXg6IHN5cy9jb25mL2ZpbGVzLmkzODYKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2NvbmYv ZmlsZXMuaTM4NgkocmV2aXNpb24gMjEwNTM2KQorKysgc3lzL2NvbmYvZmlsZXMuaTM4Ngkod29y a2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw2IEBACiBpMzg2L3hlbi9tcHRhYmxlLmMJCW9wdGlv bmFsIGFwaWMgeGVuCiBpMzg2L2kzODYvbXB0YWJsZV9wY2kuYwkJb3B0aW9uYWwgYXBpYyBwY2kK IGkzODYvaTM4Ni9uZXh1cy5jCQlzdGFuZGFyZAotaTM4Ni9pMzg2L3BlcmZtb24uYwkJb3B0aW9u YWwgcGVyZm1vbgogaTM4Ni9pMzg2L3BtYXAuYwkJb3B0aW9uYWwgbmF0aXZlCiBpMzg2L3hlbi9w bWFwLmMJCQlvcHRpb25hbCB4ZW4KIGkzODYvaTM4Ni9wdHJhY2VfbWFjaGRlcC5jCXN0YW5kYXJk CkluZGV4OiBzeXMvY29uZi9vcHRpb25zLmFtZDY0Cj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9jb25mL29w dGlvbnMuYW1kNjQJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9jb25mL29wdGlvbnMuYW1kNjQJ KHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw2IEBACiBDT1VOVF9YSU5WTFRMQl9ISVRTCW9wdF9z bXAuaAogQ09VTlRfSVBJUwkJb3B0X3NtcC5oCiBNQVhNRU0KLVBFUkZNT04KIFBNQVBfU0hQR1BF UlBST0MJb3B0X3BtYXAuaAogTVBfV0FUQ0hET0cKIApJbmRleDogc3lzL2NvbmYvb3B0aW9ucy5w Yzk4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHN5cy9jb25mL29wdGlvbnMucGM5OAkocmV2aXNpb24gMjEwNTM2 KQorKysgc3lzL2NvbmYvb3B0aW9ucy5wYzk4CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw2 IEBACiBNQVhNRU0KIE1QVEFCTEVfRk9SQ0VfSFRUCiBNUF9XQVRDSERPRwotUEVSRk1PTgogUE1B UF9TSFBHUEVSUFJPQwlvcHRfcG1hcC5oCiBQT1dFUkZBSUxfTk1JCQlvcHRfdHJhcC5oCiAKSW5k ZXg6IHN5cy9pYTY0L2lhNjQvbWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9pYTY0L2lhNjQv bWFjaGRlcC5jCShyZXZpc2lvbiAyMTA1MzYpCisrKyBzeXMvaWE2NC9pYTY0L21hY2hkZXAuYwko d29ya2luZyBjb3B5KQpAQCAtMjY2LDkgKzI2Niw2IEBACiAJICovCiAJaWRlbnRpZnljcHUoKTsK IAotI2lmZGVmIFBFUkZNT04KLQlwZXJmbW9uX2luaXQoKTsKLSNlbmRpZgogCXByaW50ZigicmVh bCBtZW1vcnkgID0gJWxkICglbGQgTUIpXG4iLCBpYTY0X3B0b2IoTWF4bWVtKSwKIAkgICAgaWE2 NF9wdG9iKE1heG1lbSkgLyAxMDQ4NTc2KTsKIAlyZWFsbWVtID0gTWF4bWVtOwpJbmRleDogc3lz L3BjOTgvaW5jbHVkZS9wZXJmbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL3BjOTgvaW5jbHVkZS9w ZXJmbW9uLmgJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9wYzk4L2luY2x1ZGUvcGVyZm1vbi5o CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotLyotCi0gKiBUaGlzIGZpbGUgaXMgaW4g dGhlIHB1YmxpYyBkb21haW4uCi0gKi8KLS8qICRGcmVlQlNEJCAqLwotCi0jaW5jbHVkZSA8aTM4 Ni9wZXJmbW9uLmg+CkluZGV4OiBzeXMvcGM5OC9wYzk4L21hY2hkZXAuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzeXMvcGM5OC9wYzk4L21hY2hkZXAuYwkocmV2aXNpb24gMjEwNTM2KQorKysgc3lzL3BjOTgv cGM5OC9tYWNoZGVwLmMJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRl ICJvcHRfbWF4bWVtLmgiCiAjaW5jbHVkZSAib3B0X21zZ2J1Zi5oIgogI2luY2x1ZGUgIm9wdF9u cHguaCIKLSNpbmNsdWRlICJvcHRfcGVyZm1vbi5oIgogCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+ CiAjaW5jbHVkZSA8c3lzL3Byb2MuaD4KQEAgLTEyMiw5ICsxMjEsNiBAQAogI2luY2x1ZGUgPG1h Y2hpbmUvc2lnZnJhbWUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3NwZWNpYWxyZWcuaD4KICNpbmNs dWRlIDxtYWNoaW5lL3ZtODYuaD4KLSNpZmRlZiBQRVJGTU9OCi0jaW5jbHVkZSA8bWFjaGluZS9w ZXJmbW9uLmg+Ci0jZW5kaWYKICNpZmRlZiBTTVAKICNpbmNsdWRlIDxtYWNoaW5lL3NtcC5oPgog I2VuZGlmCkBAIC0yMjIsOSArMjE4LDYgQEAKIAlzdGFydHJ0Y2xvY2soKTsKIAlwcmludGNwdWlu Zm8oKTsKIAlwYW5pY2lmY3B1dW5zdXBwb3J0ZWQoKTsKLSNpZmRlZiBQRVJGTU9OCi0JcGVyZm1v bl9pbml0KCk7Ci0jZW5kaWYKIAlyZWFsbWVtID0gTWF4bWVtOwogCiAJLyoKSW5kZXg6IHN5cy9w Yzk4L2NvbmYvTk9URVMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL3BjOTgvY29uZi9OT1RFUwkocmV2aXNp b24gMjEwNTM2KQorKysgc3lzL3BjOTgvY29uZi9OT1RFUwkod29ya2luZyBjb3B5KQpAQCAtMTU4 LDEyICsxNTgsNiBAQAogIyBEZWJ1ZyBvcHRpb25zCiBvcHRpb25zIAlOUFhfREVCVUcJIyBlbmFi bGUgbnB4IGRlYnVnZ2luZwogCi0jCi0jIFBFUkZNT04gY2F1c2VzIHRoZSBkcml2ZXIgZm9yIFBl bnRpdW0vUGVudGl1bSBQcm8gcGVyZm9ybWFuY2UgY291bnRlcnMKLSMgdG8gYmUgY29tcGlsZWQu ICBTZWUgcGVyZm1vbig0KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSMKLW9wdGlvbnMgCVBFUkZN T04KLQogDAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIE5FVFdPUktJTkcgT1BUSU9OUwpJbmRleDogc3lzL2kz ODYvaW5jbHVkZS9wZXJmbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2kzODYvaW5jbHVkZS9wZXJm bW9uLmgJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9pMzg2L2luY2x1ZGUvcGVyZm1vbi5oCSh3 b3JraW5nIGNvcHkpCkBAIC0xLDI1NSArMCwwIEBACi0vKi0KLSAqIENvcHlyaWdodCAxOTk2IE1h c3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKLSAqCi0gKiBQZXJtaXNzaW9uIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAotICog aXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJl YnkKLSAqIGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgYm90aCB0aGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcwotICogcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMs IHRoYXQgYm90aCB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbAotICogc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBh bmQgdGhhdCB0aGUgbmFtZSBvZiBNLkkuVC4gbm90IGJlIHVzZWQKLSAqIGluIGFkdmVydGlzaW5n IG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUKLSAqIHNvZnR3 YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIE0uSS5ULiBt YWtlcwotICogbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlz IHNvZnR3YXJlIGZvciBhbnkKLSAqIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdp dGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCi0gKiB3YXJyYW50eS4KLSAqIAotICogVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBNLkkuVC4gYGBBUyBJUycnLiAgTS5JLlQuIERJU0NMQUlNUwot ICogQUxMIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMg U09GVFdBUkUsCi0gKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQg V0FSUkFOVElFUyBPRgotICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gSU4gTk8gRVZFTlQKLSAqIFNIQUxMIE0uSS5ULiBCRSBMSUFCTEUgRk9S IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP RgotICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKLSAqIE9GIFRIRSBV U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP RgotICogU1VDSCBEQU1BR0UuCi0gKgotICogJEZyZWVCU0QkCi0gKi8KLQotLyoKLSAqIEludGVy ZmFjZSB0byBwZXJmb3JtYW5jZS1tb25pdG9yaW5nIGNvdW50ZXJzIGZvciBJbnRlbCBQZW50aXVt IGFuZAotICogUGVudGl1bSBQcm8gQ1BVcy4KLSAqLwotCi0jaWZuZGVmCV9NQUNISU5FX1BFUkZN T05fSF8KLSNkZWZpbmUJX01BQ0hJTkVfUEVSRk1PTl9IXwotIAotI2lmbmRlZiBfS0VSTkVMCi0j aW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvaW9jY29tLmg+Ci0K LSNkZWZpbmUJTlBNQwkyCi0KLSNkZWZpbmUJUE1JT1NFVFVQCV9JT1coJzUnLCAxLCBzdHJ1Y3Qg cG1jKQotI2RlZmluZQlQTUlPR0VUCQlfSU9XUignNScsIDcsIHN0cnVjdCBwbWMpCi0jZGVmaW5l CVBNSU9TVEFSVAlfSU9XKCc1JywgMiwgaW50KQotI2RlZmluZQlQTUlPU1RPUAlfSU9XKCc1Jywg MywgaW50KQotI2RlZmluZSBQTUlPUkVBRAlfSU9XUignNScsIDQsIHN0cnVjdCBwbWNfZGF0YSkK LSNkZWZpbmUJUE1JT1JFU0VUCV9JT1coJzUnLCA1LCBpbnQpCi0jZGVmaW5lCVBNSU9UU1RBTVAJ X0lPUignNScsIDYsIHN0cnVjdCBwbWNfdHN0YW1wKQotCi1zdHJ1Y3QgcG1jIHsKLQlpbnQgcG1j X251bTsKLQl1bmlvbiB7Ci0JCXN0cnVjdCB7Ci0JCQl1bnNpZ25lZCBjaGFyIHBtY3VzX2V2ZW50 OwotCQkJdW5zaWduZWQgY2hhciBwbWN1c191bml0OwotCQkJdW5zaWduZWQgY2hhciBwbWN1c19m bGFnczsKLQkJCXVuc2lnbmVkIGNoYXIgcG1jdXNfbWFzazsKLQkJfSBwbWN1X3M7Ci0JCXVuc2ln bmVkIGludCBwbWN1X3ZhbDsKLQl9IHBtY19wbWN1OwotfTsKLQotI2RlZmluZQlQTUNfQUxMCQko LTEpCi0KLSNkZWZpbmUJcG1jX2V2ZW50CXBtY19wbWN1LnBtY3Vfcy5wbWN1c19ldmVudAotI2Rl ZmluZQlwbWNfdW5pdAlwbWNfcG1jdS5wbWN1X3MucG1jdXNfdW5pdAotI2RlZmluZQlwbWNfZmxh Z3MJcG1jX3BtY3UucG1jdV9zLnBtY3VzX2ZsYWdzCi0jZGVmaW5lCXBtY19tYXNrCXBtY19wbWN1 LnBtY3Vfcy5wbWN1c19tYXNrCi0jZGVmaW5lCXBtY192YWwJCXBtY19wbWN1LnBtY3VfdmFsCi0K LSNkZWZpbmUJUE1DRl9VU1IJMHgwMQkvKiBjb3VudCBldmVudHMgaW4gdXNlciBtb2RlICovCi0j ZGVmaW5lCVBNQ0ZfT1MJCTB4MDIJLyogY291bnQgZXZlbnRzIGluIGtlcm5lbCBtb2RlICovCi0j ZGVmaW5lCVBNQ0ZfRQkJMHgwNAkvKiB1c2UgZWRnZS1kZXRlY3Rpb24gbW9kZSAqLwotI2RlZmlu ZQlQTUNGX1BDCQkweDA4CS8qIFBNeCBvdXRwdXQgcGluIGNvbnRyb2wgKi8KLSNkZWZpbmUJUE1D Rl9JTlQJMHgxMAkvKiBBUElDIGludGVycnVwdCBlbmFibGUgKGRvIG5vdCB1c2UpICovCi0jZGVm aW5lCVBNQ0ZfRU4JCTB4NDAJLyogZW5hYmxlIGNvdW50ZXJzICovCi0jZGVmaW5lCVBNQ0ZfSU5W CTB4ODAJLyogaW52ZXJ0IGNvdW50ZXIgbWFzayBjb21wYXJpc29uICovCi0KLSNkZWZpbmUJUE1D Rl9TWVNfRkxBR1MJKFBNQ0ZfSU5UIHwgUE1DRl9FTikgLyogdXNlciBjYW5ub3Qgc2V0ICovCi0K LXN0cnVjdCBwbWNfZGF0YSB7Ci0JaW50IHBtY2RfbnVtOwotCXF1YWRfdCBwbWNkX3ZhbHVlOwot fTsKLQotc3RydWN0IHBtY190c3RhbXAgewotCWludCBwbWN0X3JhdGU7Ci0JcXVhZF90IHBtY3Rf dmFsdWU7Ci19OwotCi0jaWZuZGVmIF9LRVJORUwKLQotI2RlZmluZQlfUEFUSF9QRVJGTU9OCSIv ZGV2L3BlcmZtb24iCi0KLSNlbHNlCi0KLS8qCi0gKiBJbnRyYS1rZXJuZWwgaW50ZXJmYWNlIHRv IHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgY291bnRlcnMKLSAqLwotdm9pZAlwZXJmbW9uX2luaXQo dm9pZCk7Ci1pbnQJcGVyZm1vbl9hdmFpbCh2b2lkKTsKLWludAlwZXJmbW9uX3NldHVwKGludCwg dW5zaWduZWQgaW50KTsKLWludAlwZXJmbW9uX2dldChpbnQsIHVuc2lnbmVkIGludCAqKTsKLWlu dAlwZXJmbW9uX2ZpbmkoaW50KTsKLWludAlwZXJmbW9uX3N0YXJ0KGludCk7Ci1pbnQJcGVyZm1v bl9zdG9wKGludCk7Ci1pbnQJcGVyZm1vbl9yZWFkKGludCwgcXVhZF90ICopOwotaW50CXBlcmZt b25fcmVzZXQoaW50KTsKLQotI2VuZGlmIC8qIF9LRVJORUwgKi8KLQotLyoKLSAqIFBlbnRpdW0g UHJvIHBlcmZvcm1hbmNlIGNvdW50ZXJzLCBmcm9tIEFwcGVuZGl4IEIuCi0gKi8KLS8qIERhdGEg Q2FjaGUgVW5pdCAqLwotI2RlZmluZQlQTUM2X0RBVEFfTUVNX1JFRlMJMHg0MwotI2RlZmluZQlQ TUM2X0RDVV9MSU5FU19JTgkweDQ1Ci0jZGVmaW5lCVBNQzZfRENVX01fTElORVNfSU4JMHg0Ngot I2RlZmluZQlQTUM2X0RDVV9NX0xJTkVTX09VVAkweDQ3Ci0jZGVmaW5lCVBNQzZfRENVX01JU1Nf T1VUU1RBTkRJTkcgMHg0OAotCi0vKiBJbnN0cnVjdGlvbiBGZXRjaCBVbml0ICovIAotI2RlZmlu ZQlQTUM2X0lGVV9JRkVUQ0gJCTB4ODAKLSNkZWZpbmUJUE1DNl9JRlVfSUZFVENIX01JU1MJMHg4 MQotI2RlZmluZQlQTUM2X0lUTEJfTUlTUwkJMHg4NQotI2RlZmluZQlQTUM2X0lGVV9NRU1fU1RB TEwJMHg4NgotI2RlZmluZQlQTUM2X0lMRF9TVEFMTAkJMHg4NwotCi0vKiBMMiBDYWNoZSAqLwot I2RlZmluZQlQTUM2X0wyX0lGRVRDSAkJMHgyOCAvKiBNRVNJICovCi0jZGVmaW5lCVBNQzZfTDJf TEQJCTB4MjkgLyogTUVTSSAqLwotI2RlZmluZQlQTUM2X0wyX1NUCQkweDJhIC8qIE1FU0kgKi8K LSNkZWZpbmUJUE1DNl9MMl9MSU5FU19JTgkweDI0Ci0jZGVmaW5lCVBNQzZfTDJfTElORVNfT1VU CTB4MjYKLSNkZWZpbmUJUE1DNl9MMl9NX0xJTkVTX0lOTQkweDI1Ci0jZGVmaW5lCVBNQzZfTDJf TV9MSU5FU19PVVRNCTB4MjcKLSNkZWZpbmUJUE1DNl9MMl9SUVNUUwkJMHgyZSAvKiBNRVNJICov Ci0jZGVmaW5lCVBNQzZfTDJfQURTCQkweDIxCi0jZGVmaW5lCVBNQzZfTDJfREJVU19CVVNZCTB4 MjIKLSNkZWZpbmUJUE1DNl9MMl9EQlVTX0JVU1lfUkQJMHgyMwotCi0vKiBFeHRlcm5hbCBCdXMg TG9naWMgKi8KLSNkZWZpbmUJUE1DNl9CVVNfRFJEWV9DTE9DS1MJMHg2MgotI2RlZmluZQlQTUM2 X0JVU19MT0NLX0NMT0NLUwkweDYzCi0jZGVmaW5lCVBNQzZfQlVTX1JFUV9PVVRTVEFORElORyAw eDYwCi0jZGVmaW5lCVBNQzZfQlVTX1RSQU5fQlJECTB4NjUKLSNkZWZpbmUJUE1DNl9CVVNfVFJB Tl9SRk8JMHg2NgotI2RlZmluZQlQTUM2X0JVU19UUkFOX1dCCTB4NjcKLSNkZWZpbmUJUE1DNl9C VVNfVFJBTl9JRkVUQ0gJMHg2OAotI2RlZmluZQlQTUM2X0JVU19UUkFOX0lOVkFMCTB4NjkKLSNk ZWZpbmUJUE1DNl9CVVNfVFJBTl9QV1IJMHg2YQotI2RlZmluZQlQTUM2X0JVU19UUkFOX1AJCTB4 NmIKLSNkZWZpbmUJUE1DNl9CVVNfVFJBTl9JTwkweDZjCi0jZGVmaW5lCVBNQzZfQlVTX1RSQU5f REVGCTB4NmQKLSNkZWZpbmUJUE1DNl9CVVNfVFJBTl9CVVJTVAkweDZlCi0jZGVmaW5lCVBNQzZf QlVTX1RSQU5fQU5ZCTB4NzAKLSNkZWZpbmUJUE1DNl9CVVNfVFJBTl9NRU0JMHg2ZgotI2RlZmlu ZQlQTUM2X0JVU19EQVRBX1JDVgkweDY0Ci0jZGVmaW5lCVBNQzZfQlVTX0JOUl9EUlYJMHg2MQot I2RlZmluZQlQTUM2X0JVU19ISVRfRFJWCTB4N2EKLSNkZWZpbmUJUE1DNl9CVVNfSElUTV9EUlYJ MHg3YgotI2RlZmluZQlQTUM2X0JVU19TTk9PUF9TVEFMTAkweDdlCi0KLS8qIEZsb2F0aW5nIFBv aW50IFVuaXQgKi8KLSNkZWZpbmUJUE1DNl9GTE9QUwkJMHhjMSAvKiBjb3VudGVyIDAgb25seSAq LwotI2RlZmluZQlQTUM2X0ZQX0NPTVBfT1BTX0VYRQkweDEwIC8qIGNvdW50ZXIgMCBvbmx5ICov Ci0jZGVmaW5lCVBNQzZfRlBfQVNTSVNUCQkweDExIC8qIGNvdW50ZXIgMSBvbmx5ICovCi0jZGVm aW5lCVBNQzZfTVVMCQkweDEyIC8qIGNvdW50ZXIgMSBvbmx5ICovCi0jZGVmaW5lCVBNQzZfRElW CQkweDEzIC8qIGNvdW50ZXIgMSBvbmx5ICovCi0jZGVmaW5lCVBNQzZfQ1lDTEVTX0RJVl9CVVNZ CTB4MTQgLyogY291bnRlciAwIG9ubHkgKi8KLQotLyogTWVtb3J5IE9yZGVyaW5nICovCi0jZGVm aW5lCVBNQzZfTERfQkxPQ0tTCQkweDAzCi0jZGVmaW5lCVBNQzZfU0JfRFJBSU5TCQkweDA0Ci0j ZGVmaW5lCVBNQzZfTUlTQUxJR05fTUVNX1JFRgkweDA1Ci0KLS8qIEluc3RydWN0aW9uIERlY29k aW5nIGFuZCBSZXRpcmVtZW50ICovCi0jZGVmaW5lCVBNQzZfSU5TVF9SRVRJUkVECTB4YzAKLSNk ZWZpbmUJUE1DNl9VT1BTX1JFVElSRUQJMHhjMgotI2RlZmluZQlQTUM2X0lOU1RfREVDT0RFUgkw eGQwIC8qIChzaWMpICovCi0KLS8qIEludGVycnVwdHMgKi8KLSNkZWZpbmUJUE1DNl9IV19JTlRf UlgJCTB4YzgKLSNkZWZpbmUJUE1DNl9DWUNMRVNfSU5UX01BU0tFRAkweGM2Ci0jZGVmaW5lCVBN QzZfQ1lDTEVTX0lOVF9QRU5ESU5HX0FORF9NQVNLRUQgMHhjNwotCi0vKiBCcmFuY2hlcyAqLwot I2RlZmluZQlQTUM2X0JSX0lOU1RfUkVUSVJFRAkweGM0Ci0jZGVmaW5lCVBNQzZfQlJfTUlTU19Q UkVEX1JFVElSRUQgMHhjNQotI2RlZmluZQlQTUM2X0JSX1RBS0VOX1JFVElSRUQJMHhjOQotI2Rl ZmluZQlQTUM2X0JSX01JU1NfUFJFRF9UQUtFTl9SRVQgMHhjYQotI2RlZmluZQlQTUM2X0JSX0lO U1RfREVDT0RFRAkweGUwCi0jZGVmaW5lCVBNQzZfQlRCX01JU1NFUwkJMHhlMgotI2RlZmluZQlQ TUM2X0JSX0JPR1VTCQkweGU0Ci0jZGVmaW5lCVBNQzZfQkFDTEVBUlMJCTB4ZTYKLQotLyogU3Rh bGxzICovCi0jZGVmaW5lCVBNQzZfUkVTT1VSQ0VfU1RBTExTCTB4YTIKLSNkZWZpbmUJUE1DNl9Q QVJUSUFMX1JBVF9TVEFMTFMJMHhkMgotCi0vKiBTZWdtZW50IFJlZ2lzdGVyIExvYWRzICovCi0j ZGVmaW5lCVBNQzZfU0VHTUVOVF9SRUdfTE9BRFMJMHgwNgotCi0vKiBDbG9ja3MgKi8KLSNkZWZp bmUJUE1DNl9DUFVfQ0xLX1VOSEFMVEVECTB4NzkKLQotLyoKLSAqIFBlbnRpdW0gUGVyZm9ybWFu Y2UgQ291bnRlcnMKLSAqIFRoaXMgbGlzdCBjb21lcyBmcm9tIHRoZSBIYXJ2YXJkIHBlb3BsZSwg bm90IEludGVsLgotICovCi0jZGVmaW5lCVBNQzVfREFUQV9SRUFECQkwCi0jZGVmaW5lCVBNQzVf REFUQV9XUklURQkJMQotI2RlZmluZQlQTUM1X0RBVEFfVExCX01JU1MJMgotI2RlZmluZQlQTUM1 X0RBVEFfUkVBRF9NSVNTCTMKLSNkZWZpbmUJUE1DNV9EQVRBX1dSSVRFX01JU1MJNAotI2RlZmlu ZQlQTUM1X1dSSVRFX01fRQkJNQotI2RlZmluZQlQTUM1X0RBVEFfTElORVNfV0JBQ0sJNgotI2Rl ZmluZQlQTUM1X0RBVEFfQ0FDSEVfU05PT1AJNwotI2RlZmluZQlQTUM1X0RBVEFfQ0FDSEVfU05P T1BfSElUIDgKLSNkZWZpbmUJUE1DNV9NRU1fQUNDRVNTX0JPVEgJOQotI2RlZmluZQlQTUM1X0JB TktfQ09ORkxJQ1RTCTEwCi0jZGVmaW5lCVBNQzVfTUlTQUxJR05FRF9EQVRBCTExCi0jZGVmaW5l CVBNQzVfSU5TVF9SRUFECQkxMgotI2RlZmluZQlQTUM1X0lOU1RfVExCX01JU1MJMTMKLSNkZWZp bmUJUE1DNV9JTlNUX0NBQ0hFX01JU1MJMTQKLSNkZWZpbmUJUE1DNV9TRUdNRU5UX1JFR19MT0FE CTE1Ci0jZGVmaW5lCVBNQzVfQlJBTkNIRVMJCTE4Ci0jZGVmaW5lCVBNQzVfQlRCX0hJVFMJCTE5 Ci0jZGVmaW5lCVBNQzVfQlJBTkNIX1RBS0VOCTIwCi0jZGVmaW5lCVBNQzVfUElQRUxJTkVfRkxV U0gJMjEKLSNkZWZpbmUJUE1DNV9JTlNUX0VYRUNVVEVECTIyCi0jZGVmaW5lIFBNQzVfSU5TVF9F WEVDVVRFRF9WCTIzCi0jZGVmaW5lCVBNQzVfQlVTX1VUSUxJWkFUSU9OCTI0Ci0jZGVmaW5lCVBN QzVfV1JJVEVfQkFDS1VQX1NUQUxMCTI1Ci0jZGVmaW5lCVBNQzVfREFUQV9SRUFEX1NUQUxMCTI2 Ci0jZGVmaW5lCVBNQzVfV1JJVEVfRV9NX1NUQUxMCTI3Ci0jZGVmaW5lCVBNQzVfTE9DS0VEX0JV UwkJMjgKLSNkZWZpbmUJUE1DNV9JT19DWUNMRQkJMjkKLSNkZWZpbmUJUE1DNV9OT05DQUNIRV9N RU1PUlkJMzAKLSNkZWZpbmUJUE1DNV9BRERSX0dFTl9JTlRFUkxPQ0sJMzEKLSNkZWZpbmUJUE1D NV9GTE9QUwkJMzQKLSNkZWZpbmUJUE1DNV9CUDBfTUFUQ0gJCTM1Ci0jZGVmaW5lCVBNQzVfQlAx X01BVENICQkzNgotI2RlZmluZQlQTUM1X0JQMl9NQVRDSAkJMzcKLSNkZWZpbmUJUE1DNV9CUDNf TUFUQ0gJCTM4Ci0jZGVmaW5lCVBNQzVfSFdfSU5UUgkJMzkKLSNkZWZpbmUJUE1DNV9EQVRBX1JX CQk0MAotI2RlZmluZQlQTUM1X0RBVEFfUldfTUlTUwk0MQotCi0jZW5kaWYgLyogIV9NQUNISU5F X1BFUkZNT05fSF8gKi8KSW5kZXg6IHN5cy9pMzg2L2NvbmYvTk9URVMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g c3lzL2kzODYvY29uZi9OT1RFUwkocmV2aXNpb24gMjEwNTM2KQorKysgc3lzL2kzODYvY29uZi9O T1RFUwkod29ya2luZyBjb3B5KQpAQCAtMjExLDEyICsyMTEsNiBAQAogb3B0aW9ucyAJTlBYX0RF QlVHCSMgZW5hYmxlIG5weCBkZWJ1Z2dpbmcKIAogIwotIyBQRVJGTU9OIGNhdXNlcyB0aGUgZHJp dmVyIGZvciBQZW50aXVtL1BlbnRpdW0gUHJvIHBlcmZvcm1hbmNlIGNvdW50ZXJzCi0jIHRvIGJl IGNvbXBpbGVkLiAgU2VlIHBlcmZtb24oNCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0jCi1vcHRp b25zIAlQRVJGTU9OCi0KLSMKICMgWEJPWCBjYXVzZXMgdGhlIGtlcm5lbCB0byBiZSBib290YWJs ZSBvbiB0aGUgTWljcm9zb2Z0IFhCb3ggY29uc29sZSBzeXN0ZW0uCiAjIFRoZSByZXN1bHRpbmcg a2VybmVsIHdpbGwgYXV0by1kZXRlY3Qgd2hldGhlciBpdCBpcyBiZWluZyBib290ZWQgb24gYSBY Qm94LAogIyBzbyBrZXJuZWxzIGNvbXBpbGVkIHdpdGggdGhpcyBvcHRpb24gd2lsbCBhbHNvIHdv cmsgb24gYW4gb3JkaW5hcnkgUEMuCkluZGV4OiBzeXMvaTM4Ni9pMzg2L3BlcmZtb24uYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBzeXMvaTM4Ni9pMzg2L3BlcmZtb24uYwkocmV2aXNpb24gMjEwNTM2KQorKysg c3lzL2kzODYvaTM4Ni9wZXJmbW9uLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDA0ICswLDAgQEAK LS8qLQotICogQ29weXJpZ2h0IDE5OTYgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5v bG9neQotICoKLSAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmli dXRlIHRoaXMgc29mdHdhcmUgYW5kCi0gKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBv c2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQotICogZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCBi b3RoIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzCi0gKiBwZXJtaXNzaW9uIG5v dGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcywgdGhhdCBib3RoIHRoZSBhYm92ZQotICogY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsCi0gKiBz dXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIE0uSS5ULiBub3Qg YmUgdXNlZAotICogaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlz dHJpYnV0aW9uIG9mIHRoZQotICogc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBw cmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIG1ha2VzCi0gKiBubyByZXByZXNlbnRhdGlvbnMgYWJv dXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQotICogcHVycG9zZS4g IEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKLSAqIHdh cnJhbnR5LgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE0uSS5ULiBgYEFT IElTJycuICBNLkkuVC4gRElTQ0xBSU1TCi0gKiBBTEwgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKLSAqIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0gKiBNRVJDSEFOVEFCSUxJ VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBJTiBOTyBFVkVOVAotICog U0hBTEwgTS5JLlQuIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCi0gKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK LSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZIE9VVAotICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j bHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0QkIik7Ci0KLSNpbmNsdWRlIDxz eXMvcGFyYW0uaD4KLSNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KLSNpbmNsdWRlIDxzeXMvY29uZi5o PgotI2luY2x1ZGUgPHN5cy9mY250bC5oPgotI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KLQotI2lm bmRlZiBTTVAKLSNpbmNsdWRlIDxtYWNoaW5lL2NwdXR5cGVzLmg+Ci0jZW5kaWYKLSNpbmNsdWRl IDxtYWNoaW5lL2Nsb2NrLmg+Ci0jaW5jbHVkZSA8bWFjaGluZS9wZXJmbW9uLmg+Ci0jaW5jbHVk ZSA8bWFjaGluZS9zcGVjaWFscmVnLmg+Ci0KLXN0YXRpYyBpbnQgcGVyZm1vbl9pbnVzZTsKLXN0 YXRpYyBpbnQgcGVyZm1vbl9jcHVvazsKLSNpZm5kZWYgU01QCi1zdGF0aWMgaW50IG1zcl9jdGxb TlBNQ107Ci0jZW5kaWYKLXN0YXRpYyBpbnQgbXNyX3BtY1tOUE1DXTsKLXN0YXRpYyB1bnNpZ25l ZCBpbnQgY3RsX3NoYWRvd1tOUE1DXTsKLXN0YXRpYyBxdWFkX3QgcG1jX3NoYWRvd1tOUE1DXTsJ LyogdXNlZCB3aGVuIGN0ciBpcyBzdG9wcGVkIG9uIFA1ICovCi1zdGF0aWMgaW50ICgqd3JpdGVj dGwpKGludCk7Ci0jaWZuZGVmIFNNUAotc3RhdGljIGludCB3cml0ZWN0bDUoaW50KTsKLXN0YXRp YyBpbnQgd3JpdGVjdGw2KGludCk7Ci0jZW5kaWYKLQotc3RhdGljIGRfY2xvc2VfdCBwZXJmbW9u X2Nsb3NlOwotc3RhdGljIGRfb3Blbl90CXBlcmZtb25fb3BlbjsKLXN0YXRpYyBkX2lvY3RsX3Qg cGVyZm1vbl9pb2N0bDsKLQotLyoKLSAqIFhYWCBwZXJmbW9uX2luaXRfZGV2KHZvaWQgKikgaXMg YSBzcGxpdCBmcm9tIHRoZSBwZXJmbW9uX2luaXQoKSBmdW50aW9uLiAKLSAqIFRoaXMgc29sdmVz IGEgcHJvYmxlbSBmb3IgREVWRlMgdXNlcnMuICBJdCBsb2FkcyB0aGUgInBlcmZtb24iIGRyaXZl ciBhZnRlcgotICogdGhlIERFVkZTIHN1YnN5c3RlbSBoYXMgYmVlbiBraWNrZWQgaW50byBhY3Rp b24uICBUaGUgU0lfT1JERVJfQU5ZIGlzIHRvCi0gKiBhc3N1cmUgdGhhdCBpdCBpcyB0aGUgbW9z dCBsb3dlc3QgcHJpb3JpdHkgdGFzayB3aGljaCwgZ3VhcmFudGVlcyB0aGUKLSAqIGFib3ZlLgot ICovCi1zdGF0aWMgdm9pZCBwZXJmbW9uX2luaXRfZGV2KHZvaWQgKik7Ci1TWVNJTklUKGNwdSwg U0lfU1VCX0RSSVZFUlMsIFNJX09SREVSX0FOWSwgcGVyZm1vbl9pbml0X2RldiwgTlVMTCk7Ci0K LXN0YXRpYyBzdHJ1Y3QgY2RldnN3IHBlcmZtb25fY2RldnN3ID0gewotCS5kX3ZlcnNpb24gPQlE X1ZFUlNJT04sCi0JLmRfZmxhZ3MgPQlEX05FRURHSUFOVCwKLQkuZF9vcGVuID0JcGVyZm1vbl9v cGVuLAotCS5kX2Nsb3NlID0JcGVyZm1vbl9jbG9zZSwKLQkuZF9pb2N0bCA9CXBlcmZtb25faW9j dGwsCi0JLmRfbmFtZSA9CSJwZXJmbW9uIiwKLX07Ci0KLS8qCi0gKiBNdXN0IGJlIGNhbGxlZCBh ZnRlciBjcHVfY2xhc3MgaXMgc2V0IHVwLgotICovCi12b2lkCi1wZXJmbW9uX2luaXQodm9pZCkK LXsKLSNpZm5kZWYgU01QCi0Jc3dpdGNoKGNwdV9jbGFzcykgewotCWNhc2UgQ1BVQ0xBU1NfNTg2 OgotCQlwZXJmbW9uX2NwdW9rID0gMTsKLQkJbXNyX2N0bFswXSA9IE1TUl9QNV9DRVNSOwotCQlt c3JfY3RsWzFdID0gTVNSX1A1X0NFU1I7Ci0JCW1zcl9wbWNbMF0gPSBNU1JfUDVfQ1RSMDsKLQkJ bXNyX3BtY1sxXSA9IE1TUl9QNV9DVFIxOwotCQl3cml0ZWN0bCA9IHdyaXRlY3RsNTsKLQkJYnJl YWs7Ci0JY2FzZSBDUFVDTEFTU182ODY6Ci0JCXBlcmZtb25fY3B1b2sgPSAxOwotCQltc3JfY3Rs WzBdID0gTVNSX0VWTlRTRUwwOwotCQltc3JfY3RsWzFdID0gTVNSX0VWTlRTRUwxOwotCQltc3Jf cG1jWzBdID0gTVNSX1BFUkZDVFIwOwotCQltc3JfcG1jWzFdID0gTVNSX1BFUkZDVFIxOwotCQl3 cml0ZWN0bCA9IHdyaXRlY3RsNjsKLQkJYnJlYWs7Ci0KLQlkZWZhdWx0OgotCQlwZXJmbW9uX2Nw dW9rID0gMDsKLQkJYnJlYWs7Ci0JfQotI2VuZGlmIC8qIFNNUCAqLwotfQotCi1zdGF0aWMgdm9p ZAotcGVyZm1vbl9pbml0X2RldihkdW1teSkKLQl2b2lkICpkdW1teTsKLXsKLQltYWtlX2Rldigm cGVyZm1vbl9jZGV2c3csIDMyLCBVSURfUk9PVCwgR0lEX0tNRU0sIDA2NDAsICJwZXJmbW9uIik7 Ci19Ci0KLWludAotcGVyZm1vbl9hdmFpbCh2b2lkKQotewotCXJldHVybiBwZXJmbW9uX2NwdW9r OwotfQotCi1pbnQKLXBlcmZtb25fc2V0dXAoaW50IHBtYywgdW5zaWduZWQgaW50IGNvbnRyb2wp Ci17Ci0JcmVnaXN0ZXJfdAlzYXZlY3JpdDsKLQotCWlmIChwbWMgPCAwIHx8IHBtYyA+PSBOUE1D KQotCQlyZXR1cm4gRUlOVkFMOwotCi0JcGVyZm1vbl9pbnVzZSB8PSAoMSA8PCBwbWMpOwotCWNv bnRyb2wgJj0gfihQTUNGX1NZU19GTEFHUyA8PCAxNik7Ci0Jc2F2ZWNyaXQgPSBpbnRyX2Rpc2Fi bGUoKTsKLQljdGxfc2hhZG93W3BtY10gPSBjb250cm9sOwotCXdyaXRlY3RsKHBtYyk7Ci0Jd3Jt c3IobXNyX3BtY1twbWNdLCBwbWNfc2hhZG93W3BtY10gPSAwKTsKLQlpbnRyX3Jlc3RvcmUoc2F2 ZWNyaXQpOwotCXJldHVybiAwOwotfQotCi1pbnQKLXBlcmZtb25fZ2V0KGludCBwbWMsIHVuc2ln bmVkIGludCAqY29udHJvbCkKLXsKLQlpZiAocG1jIDwgMCB8fCBwbWMgPj0gTlBNQykKLQkJcmV0 dXJuIEVJTlZBTDsKLQotCWlmIChwZXJmbW9uX2ludXNlICYgKDEgPDwgcG1jKSkgewotCQkqY29u dHJvbCA9IGN0bF9zaGFkb3dbcG1jXTsKLQkJcmV0dXJuIDA7Ci0JfQotCXJldHVybiBFQlVTWTsJ CS8qIFhYWCByZXZlcnNlZCBzZW5zZSAqLwotfQotCi1pbnQKLXBlcmZtb25fZmluaShpbnQgcG1j KQotewotCWlmIChwbWMgPCAwIHx8IHBtYyA+PSBOUE1DKQotCQlyZXR1cm4gRUlOVkFMOwotCi0J aWYgKHBlcmZtb25faW51c2UgJiAoMSA8PCBwbWMpKSB7Ci0JCXBlcmZtb25fc3RvcChwbWMpOwot CQljdGxfc2hhZG93W3BtY10gPSAwOwotCQlwZXJmbW9uX2ludXNlICY9IH4oMSA8PCBwbWMpOwot CQlyZXR1cm4gMDsKLQl9Ci0JcmV0dXJuIEVCVVNZOwkJLyogWFhYIHJldmVyc2VkIHNlbnNlICov Ci19Ci0KLWludAotcGVyZm1vbl9zdGFydChpbnQgcG1jKQotewotCXJlZ2lzdGVyX3QJc2F2ZWNy aXQ7Ci0KLQlpZiAocG1jIDwgMCB8fCBwbWMgPj0gTlBNQykKLQkJcmV0dXJuIEVJTlZBTDsKLQot CWlmIChwZXJmbW9uX2ludXNlICYgKDEgPDwgcG1jKSkgewotCQlzYXZlY3JpdCA9IGludHJfZGlz YWJsZSgpOwotCQljdGxfc2hhZG93W3BtY10gfD0gKFBNQ0ZfRU4gPDwgMTYpOwotCQl3cm1zciht c3JfcG1jW3BtY10sIHBtY19zaGFkb3dbcG1jXSk7Ci0JCXdyaXRlY3RsKHBtYyk7Ci0JCWludHJf cmVzdG9yZShzYXZlY3JpdCk7Ci0JCXJldHVybiAwOwotCX0KLQlyZXR1cm4gRUJVU1k7Ci19Ci0K LWludAotcGVyZm1vbl9zdG9wKGludCBwbWMpCi17Ci0JcmVnaXN0ZXJfdAlzYXZlY3JpdDsKLQot CWlmIChwbWMgPCAwIHx8IHBtYyA+PSBOUE1DKQotCQlyZXR1cm4gRUlOVkFMOwotCi0JaWYgKHBl cmZtb25faW51c2UgJiAoMSA8PCBwbWMpKSB7Ci0JCXNhdmVjcml0ID0gaW50cl9kaXNhYmxlKCk7 Ci0JCXBtY19zaGFkb3dbcG1jXSA9IHJkbXNyKG1zcl9wbWNbcG1jXSkgJiAweGZmZmZmZmZmZmZV TEw7Ci0JCWN0bF9zaGFkb3dbcG1jXSAmPSB+KFBNQ0ZfRU4gPDwgMTYpOwotCQl3cml0ZWN0bChw bWMpOwotCQlpbnRyX3Jlc3RvcmUoc2F2ZWNyaXQpOwotCQlyZXR1cm4gMDsKLQl9Ci0JcmV0dXJu IEVCVVNZOwotfQotCi1pbnQKLXBlcmZtb25fcmVhZChpbnQgcG1jLCBxdWFkX3QgKnZhbCkKLXsK LQlpZiAocG1jIDwgMCB8fCBwbWMgPj0gTlBNQykKLQkJcmV0dXJuIEVJTlZBTDsKLQotCWlmIChw ZXJmbW9uX2ludXNlICYgKDEgPDwgcG1jKSkgewotCQlpZiAoY3RsX3NoYWRvd1twbWNdICYgKFBN Q0ZfRU4gPDwgMTYpKQotCQkJKnZhbCA9IHJkbXNyKG1zcl9wbWNbcG1jXSkgJiAweGZmZmZmZmZm ZmZVTEw7Ci0JCWVsc2UKLQkJCSp2YWwgPSBwbWNfc2hhZG93W3BtY107Ci0JCXJldHVybiAwOwot CX0KLQotCXJldHVybiBFQlVTWTsKLX0KLQotaW50Ci1wZXJmbW9uX3Jlc2V0KGludCBwbWMpCi17 Ci0JaWYgKHBtYyA8IDAgfHwgcG1jID49IE5QTUMpCi0JCXJldHVybiBFSU5WQUw7Ci0KLQlpZiAo cGVyZm1vbl9pbnVzZSAmICgxIDw8IHBtYykpIHsKLQkJd3Jtc3IobXNyX3BtY1twbWNdLCBwbWNf c2hhZG93W3BtY10gPSAwKTsKLQkJcmV0dXJuIDA7Ci0JfQotCXJldHVybiBFQlVTWTsKLX0KLQot I2lmbmRlZiBTTVAKLS8qCi0gKiBVbmZvcnR1bmF0ZWx5LCB0aGUgcGVyZm9ybWFuY2UtbW9uaXRv cmluZyByZWdpc3RlcnMgYXJlIGxhaWQgb3V0Ci0gKiBkaWZmZXJlbnRseSBpbiB0aGUgUDUgYW5k IFA2LiAgV2Uga2VlcCBldmVyeXRoaW5nIGluIFA2IGZvcm1hdAotICogaW50ZXJuYWxseSAoZXhj ZXB0IGZvciB0aGUgZXZlbnQgY29kZSksIGFuZCBjb252ZXJ0IHRvIFA1Ci0gKiBmb3JtYXQgYXMg bmVlZGVkIG9uIHRob3NlIENQVXMuICBUaGUgd3JpdGVjdGwgZnVuY3Rpb24gcG9pbnRlcgotICog aXMgc2V0IHVwIHRvIHBvaW50IHRvIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMgYnkgcGVyZm1vbl9p bml0KCkuCi0gKi8KLWludAotd3JpdGVjdGw2KGludCBwbWMpCi17Ci0JaWYgKHBtYyA+IDAgJiYg IShjdGxfc2hhZG93W3BtY10gJiAoUE1DRl9FTiA8PCAxNikpKSB7Ci0JCXdybXNyKG1zcl9jdGxb cG1jXSwgMCk7Ci0JfSBlbHNlIHsKLQkJd3Jtc3IobXNyX2N0bFtwbWNdLCBjdGxfc2hhZG93W3Bt Y10pOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotI2RlZmluZQlQNUZMQUdfUAkweDIwMAotI2RlZmlu ZQlQNUZMQUdfRQkweDEwMAotI2RlZmluZQlQNUZMQUdfVVNSCTB4ODAKLSNkZWZpbmUJUDVGTEFH X09TCTB4NDAKLQotaW50Ci13cml0ZWN0bDUoaW50IHBtYykKLXsKLQlxdWFkX3QgbmV3dmFsID0g MDsKLQotCWlmIChjdGxfc2hhZG93WzFdICYgKFBNQ0ZfRU4gPDwgMTYpKSB7Ci0JCWlmIChjdGxf c2hhZG93WzFdICYgKFBNQ0ZfVVNSIDw8IDE2KSkKLQkJCW5ld3ZhbCB8PSBQNUZMQUdfVVNSIDw8 IDE2OwotCQlpZiAoY3RsX3NoYWRvd1sxXSAmIChQTUNGX09TIDw8IDE2KSkKLQkJCW5ld3ZhbCB8 PSBQNUZMQUdfT1MgPDwgMTY7Ci0JCWlmICghKGN0bF9zaGFkb3dbMV0gJiAoUE1DRl9FIDw8IDE2 KSkpCi0JCQluZXd2YWwgfD0gUDVGTEFHX0UgPDwgMTY7Ci0JCW5ld3ZhbCB8PSAoY3RsX3NoYWRv d1sxXSAmIDB4M2YpIDw8IDE2OwotCX0KLQlpZiAoY3RsX3NoYWRvd1swXSAmIChQTUNGX0VOIDw8 IDE2KSkgewotCQlpZiAoY3RsX3NoYWRvd1swXSAmIChQTUNGX1VTUiA8PCAxNikpCi0JCQluZXd2 YWwgfD0gUDVGTEFHX1VTUjsKLQkJaWYgKGN0bF9zaGFkb3dbMF0gJiAoUE1DRl9PUyA8PCAxNikp Ci0JCQluZXd2YWwgfD0gUDVGTEFHX09TOwotCQlpZiAoIShjdGxfc2hhZG93WzBdICYgKFBNQ0Zf RSA8PCAxNikpKQotCQkJbmV3dmFsIHw9IFA1RkxBR19FOwotCQluZXd2YWwgfD0gY3RsX3NoYWRv d1swXSAmIDB4M2Y7Ci0JfQotCi0Jd3Jtc3IobXNyX2N0bFswXSwgbmV3dmFsKTsKLQlyZXR1cm4g MDsJCS8qIFhYWCBzaG91bGQgY2hlY2sgZm9yIHVuaW1wbGVtZW50ZWQgYml0cyAqLwotfQotI2Vu ZGlmIC8qICFTTVAgKi8KLQotLyoKLSAqIE5vdyB0aGUgdXNlci1tb2RlIGludGVyZmFjZSwgY2Fs bGVkIGZyb20gYSBzdWJkZXZpY2Ugb2YgbWVtLmMuCi0gKi8KLXN0YXRpYyBpbnQgd3JpdGVyOwot c3RhdGljIGludCB3cml0ZXJwbWM7Ci0KLXN0YXRpYyBpbnQKLXBlcmZtb25fb3BlbihzdHJ1Y3Qg Y2RldiAqZGV2LCBpbnQgZmxhZ3MsIGludCBmbXQsIHN0cnVjdCB0aHJlYWQgKnRkKQotewotCWlm ICghcGVyZm1vbl9jcHVvaykKLQkJcmV0dXJuIEVOWElPOwotCi0JaWYgKGZsYWdzICYgRldSSVRF KSB7Ci0JCWlmICh3cml0ZXIpIHsKLQkJCXJldHVybiBFQlVTWTsKLQkJfSBlbHNlIHsKLQkJCXdy aXRlciA9IDE7Ci0JCQl3cml0ZXJwbWMgPSAwOwotCQl9Ci0JfQotCXJldHVybiAwOwotfQotCi1z dGF0aWMgaW50Ci1wZXJmbW9uX2Nsb3NlKHN0cnVjdCBjZGV2ICpkZXYsIGludCBmbGFncywgaW50 IGZtdCwgc3RydWN0IHRocmVhZCAqdGQpCi17Ci0JaWYgKGZsYWdzICYgRldSSVRFKSB7Ci0JCWlu dCBpOwotCi0JCWZvciAoaSA9IDA7IGkgPCBOUE1DOyBpKyspIHsKLQkJCWlmICh3cml0ZXJwbWMg JiAoMSA8PCBpKSkKLQkJCQlwZXJmbW9uX2ZpbmkoaSk7Ci0JCX0KLQkJd3JpdGVyID0gMDsKLQl9 Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLXBlcmZtb25faW9jdGwoc3RydWN0IGNkZXYg KmRldiwgdV9sb25nIGNtZCwgY2FkZHJfdCBwYXJhbSwgaW50IGZsYWdzLCBzdHJ1Y3QgdGhyZWFk ICp0ZCkKLXsKLQlzdHJ1Y3QgcG1jICpwbWM7Ci0Jc3RydWN0IHBtY19kYXRhICpwbWNkOwotCXN0 cnVjdCBwbWNfdHN0YW1wICpwbWN0OwotCWludCAqaXA7Ci0JaW50IHJ2OwotCi0Jc3dpdGNoKGNt ZCkgewotCWNhc2UgUE1JT1NFVFVQOgotCQlpZiAoIShmbGFncyAmIEZXUklURSkpCi0JCQlyZXR1 cm4gRVBFUk07Ci0JCXBtYyA9IChzdHJ1Y3QgcG1jICopcGFyYW07Ci0KLQkJcnYgPSBwZXJmbW9u X3NldHVwKHBtYy0+cG1jX251bSwgcG1jLT5wbWNfdmFsKTsKLQkJaWYgKCFydikgewotCQkJd3Jp dGVycG1jIHw9ICgxIDw8IHBtYy0+cG1jX251bSk7Ci0JCX0KLQkJYnJlYWs7Ci0KLQljYXNlIFBN SU9HRVQ6Ci0JCXBtYyA9IChzdHJ1Y3QgcG1jICopcGFyYW07Ci0JCXJ2ID0gcGVyZm1vbl9nZXQo cG1jLT5wbWNfbnVtLCAmcG1jLT5wbWNfdmFsKTsKLQkJYnJlYWs7Ci0KLQljYXNlIFBNSU9TVEFS VDoKLQkJaWYgKCEoZmxhZ3MgJiBGV1JJVEUpKQotCQkJcmV0dXJuIEVQRVJNOwotCi0JCWlwID0g KGludCAqKXBhcmFtOwotCQlydiA9IHBlcmZtb25fc3RhcnQoKmlwKTsKLQkJYnJlYWs7Ci0KLQlj YXNlIFBNSU9TVE9QOgotCQlpZiAoIShmbGFncyAmIEZXUklURSkpCi0JCQlyZXR1cm4gRVBFUk07 Ci0KLQkJaXAgPSAoaW50ICopcGFyYW07Ci0JCXJ2ID0gcGVyZm1vbl9zdG9wKCppcCk7Ci0JCWJy ZWFrOwotCi0JY2FzZSBQTUlPUkVTRVQ6Ci0JCWlmICghKGZsYWdzICYgRldSSVRFKSkKLQkJCXJl dHVybiBFUEVSTTsKLQotCQlpcCA9IChpbnQgKilwYXJhbTsKLQkJcnYgPSBwZXJmbW9uX3Jlc2V0 KCppcCk7Ci0JCWJyZWFrOwotCi0JY2FzZSBQTUlPUkVBRDoKLQkJcG1jZCA9IChzdHJ1Y3QgcG1j X2RhdGEgKilwYXJhbTsKLQkJcnYgPSBwZXJmbW9uX3JlYWQocG1jZC0+cG1jZF9udW0sICZwbWNk LT5wbWNkX3ZhbHVlKTsKLQkJYnJlYWs7Ci0KLQljYXNlIFBNSU9UU1RBTVA6Ci0JCWlmICghdHNj X2ZyZXEpIHsKLQkJCXJ2ID0gRU5PVFRZOwotCQkJYnJlYWs7Ci0JCX0KLQkJcG1jdCA9IChzdHJ1 Y3QgcG1jX3RzdGFtcCAqKXBhcmFtOwotCQkvKiBYWFggaW50ZXJmYWNlIGxvc2VzIHByZWNpc2lv bi4gKi8KLQkJcG1jdC0+cG1jdF9yYXRlID0gdHNjX2ZyZXEgLyAxMDAwMDAwOwotCQlwbWN0LT5w bWN0X3ZhbHVlID0gcmR0c2MoKTsKLQkJcnYgPSAwOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQly diA9IEVOT1RUWTsKLQl9Ci0KLQlyZXR1cm4gcnY7Ci19CkluZGV4OiBzeXMvaTM4Ni9pMzg2L21h Y2hkZXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvaTM4Ni9pMzg2L21hY2hkZXAuYwkocmV2aXNpb24g MjEwNTM2KQorKysgc3lzL2kzODYvaTM4Ni9tYWNoZGVwLmMJKHdvcmtpbmcgY29weSkKQEAgLTUy LDcgKzUyLDYgQEAKICNpbmNsdWRlICJvcHRfbWF4bWVtLmgiCiAjaW5jbHVkZSAib3B0X21zZ2J1 Zi5oIgogI2luY2x1ZGUgIm9wdF9ucHguaCIKLSNpbmNsdWRlICJvcHRfcGVyZm1vbi5oIgogI2lu Y2x1ZGUgIm9wdF94Ym94LmgiCiAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KQEAgLTEyNSw5ICsx MjQsNiBAQAogI2luY2x1ZGUgPG1hY2hpbmUvc2lnZnJhbWUuaD4KICNpbmNsdWRlIDxtYWNoaW5l L3NwZWNpYWxyZWcuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3ZtODYuaD4KLSNpZmRlZiBQRVJGTU9O Ci0jaW5jbHVkZSA8bWFjaGluZS9wZXJmbW9uLmg+Ci0jZW5kaWYKICNpZmRlZiBTTVAKICNpbmNs dWRlIDxtYWNoaW5lL3NtcC5oPgogI2VuZGlmCkBAIC0yNzgsOSArMjc0LDYgQEAKIAlzdGFydHJ0 Y2xvY2soKTsKIAlwcmludGNwdWluZm8oKTsKIAlwYW5pY2lmY3B1dW5zdXBwb3J0ZWQoKTsKLSNp ZmRlZiBQRVJGTU9OCi0JcGVyZm1vbl9pbml0KCk7Ci0jZW5kaWYKIAlyZWFsbWVtID0gTWF4bWVt OwogCiAJLyoKSW5kZXg6IHN5cy9pMzg2L2lzYS9wcm9mX21hY2hkZXAuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzeXMvaTM4Ni9pc2EvcHJvZl9tYWNoZGVwLmMJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9p Mzg2L2lzYS9wcm9mX21hY2hkZXAuYwkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAog CiAjaWZkZWYgR1VQUk9GCiAjaW5jbHVkZSAib3B0X2k1ODZfZ3Vwcm9mLmgiCi0jaW5jbHVkZSAi b3B0X3BlcmZtb24uaCIKIAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9z eXN0bS5oPgpAQCAtNDIsNyArNDEsNiBAQAogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KIAogI2lu Y2x1ZGUgPG1hY2hpbmUvY2xvY2suaD4KLSNpbmNsdWRlIDxtYWNoaW5lL3BlcmZtb24uaD4KICNp bmNsdWRlIDxtYWNoaW5lL3RpbWVycmVnLmg+CiAKICNkZWZpbmUJQ1BVVElNRV9DTE9DS19VTklO SVRJQUxJWkVECTAKQEAgLTU0LDExICs1Miw2IEBACiBpbnQJY3B1dGltZV9iaWFzID0gMTsJLyog aW5pdGlhbGl6ZSBmb3IgbG9jYWxpdHkgb2YgcmVmZXJlbmNlICovCiAKIHN0YXRpYyBpbnQJY3B1 dGltZV9jbG9jayA9IENQVVRJTUVfQ0xPQ0tfVU5JTklUSUFMSVpFRDsKLSNpZiBkZWZpbmVkKFBF UkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNfR1VQUk9GKQotc3RhdGljIHVfaW50CWNwdXRpbWVf Y2xvY2tfcG1jX2NvbmYgPSBJNTg2X1BNQ19HVVBST0Y7Ci1zdGF0aWMgaW50CWNwdXRpbWVfY2xv Y2tfcG1jX2luaXQ7Ci1zdGF0aWMgc3RydWN0IGdtb25wYXJhbSBzYXZlZF9nbXA7Ci0jZW5kaWYK ICNpZiBkZWZpbmVkKEk1ODZfQ1BVKSB8fCBkZWZpbmVkKEk2ODZfQ1BVKQogc3RhdGljIGludAlj cHV0aW1lX3Byb2ZfYWN0aXZlOwogI2VuZGlmCkBAIC0xNzAsMTAgKzE2Myw2IEBACiB7CiAJdV9p bnQgY291bnQ7CiAJaW50IGRlbHRhOwotI2lmIChkZWZpbmVkKEk1ODZfQ1BVKSB8fCBkZWZpbmVk KEk2ODZfQ1BVKSkgJiYgIWRlZmluZWQoU01QKSAmJiBcCi0gICAgZGVmaW5lZChQRVJGTU9OKSAm JiBkZWZpbmVkKEk1ODZfUE1DX0dVUFJPRikKLQl1X3F1YWRfdCBldmVudF9jb3VudDsKLSNlbmRp ZgogCXVfY2hhciBoaWdoLCBsb3c7CiAJc3RhdGljIHVfaW50IHByZXZfY291bnQ7CiAKQEAgLTE5 MSwyMSArMTgwLDYgQEAKIAkJcHJldl9jb3VudCA9IGNvdW50OwogCQlyZXR1cm4gKGRlbHRhKTsK IAl9Ci0jaWYgZGVmaW5lZChQRVJGTU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dVUFJPRikgJiYg IWRlZmluZWQoU01QKQotCWlmIChjcHV0aW1lX2Nsb2NrID09IENQVVRJTUVfQ0xPQ0tfSTU4Nl9Q TUMpIHsKLQkJLyoKLQkJICogWFhYIHBlcm1vbl9yZWFkKCkgc2hvdWxkIGJlIGlubGluZWQgc28g dGhhdCB0aGUKLQkJICogcGVyZm1vbiBtb2R1bGUgZG9lc24ndCBuZWVkIHRvIGJlIGNvbXBpbGVk IHdpdGgKLQkJICogcHJvZmlsaW5nIGRpc2FibGVkIGFuZCBzbyB0aGF0IGl0IGlzIGZhc3QuCi0J CSAqLwotCQlwZXJmbW9uX3JlYWQoMCwgJmV2ZW50X2NvdW50KTsKLQotCQljb3VudCA9ICh1X2lu dClldmVudF9jb3VudDsKLQkJZGVsdGEgPSAoaW50KShjb3VudCAtIHByZXZfY291bnQpOwotCQlw cmV2X2NvdW50ID0gY291bnQ7Ci0JCXJldHVybiAoZGVsdGEpOwotCX0KLSNlbmRpZiAvKiBQRVJG TU9OICYmIEk1ODZfUE1DX0dVUFJPRiAmJiAhU01QICovCiAjZW5kaWYgLyogSTU4Nl9DUFUgfHwg STY4Nl9DUFUgKi8KIAogCS8qCkBAIC0yMzcsMzkgKzIxMSwxMyBAQAogewogCWludCBjbG9jazsK IAlpbnQgZXJyb3I7Ci0jaWYgZGVmaW5lZChQRVJGTU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dV UFJPRikKLQlpbnQgZXZlbnQ7Ci0Jc3RydWN0IHBtYyBwbWM7Ci0jZW5kaWYKIAogCWNsb2NrID0g Y3B1dGltZV9jbG9jazsKLSNpZiBkZWZpbmVkKFBFUkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNf R1VQUk9GKQotCWlmIChjbG9jayA9PSBDUFVUSU1FX0NMT0NLX0k1ODZfUE1DKSB7Ci0JCXBtYy5w bWNfdmFsID0gY3B1dGltZV9jbG9ja19wbWNfY29uZjsKLQkJY2xvY2sgKz0gcG1jLnBtY19ldmVu dDsKLQl9Ci0jZW5kaWYKIAllcnJvciA9IHN5c2N0bF9oYW5kbGVfb3BhcXVlKG9pZHAsICZjbG9j aywgc2l6ZW9mIGNsb2NrLCByZXEpOwogCWlmIChlcnJvciA9PSAwICYmIHJlcS0+bmV3cHRyICE9 IE5VTEwpIHsKLSNpZiBkZWZpbmVkKFBFUkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNfR1VQUk9G KQotCQlpZiAoY2xvY2sgPj0gQ1BVVElNRV9DTE9DS19JNTg2X1BNQykgewotCQkJZXZlbnQgPSBj bG9jayAtIENQVVRJTUVfQ0xPQ0tfSTU4Nl9QTUM7Ci0JCQlpZiAoZXZlbnQgPj0gMjU2KQotCQkJ CXJldHVybiAoRUlOVkFMKTsKLQkJCXBtYy5wbWNfbnVtID0gMDsKLQkJCXBtYy5wbWNfZXZlbnQg PSBldmVudDsKLQkJCXBtYy5wbWNfdW5pdCA9IDA7Ci0JCQlwbWMucG1jX2ZsYWdzID0gUE1DRl9F IHwgUE1DRl9PUyB8IFBNQ0ZfVVNSOwotCQkJcG1jLnBtY19tYXNrID0gMDsKLQkJCWNwdXRpbWVf Y2xvY2tfcG1jX2NvbmYgPSBwbWMucG1jX3ZhbDsKLQkJCWNwdXRpbWVfY2xvY2sgPSBDUFVUSU1F X0NMT0NLX0k1ODZfUE1DOwotCQl9IGVsc2UKLSNlbmRpZgotCQl7Ci0JCQlpZiAoY2xvY2sgPCAw IHx8IGNsb2NrID49IENQVVRJTUVfQ0xPQ0tfSTU4Nl9QTUMpCi0JCQkJcmV0dXJuIChFSU5WQUwp OwotCQkJY3B1dGltZV9jbG9jayA9IGNsb2NrOwotCQl9CisJCWlmIChjbG9jayA8IDAgfHwgY2xv Y2sgPj0gQ1BVVElNRV9DTE9DS19JNTg2X1BNQykKKwkJCXJldHVybiAoRUlOVkFMKTsKKwkJY3B1 dGltZV9jbG9jayA9IGNsb2NrOwogCX0KIAlyZXR1cm4gKGVycm9yKTsKIH0KQEAgLTI5OSwzMiAr MjQ3LDYgQEAKIAkJZ3AtPnByb2ZyYXRlID0gdHNjX2ZyZXEgPj4gMTsKIAkJY3B1dGltZV9wcm9m X2FjdGl2ZSA9IDE7CiAJfQotI2lmIGRlZmluZWQoUEVSRk1PTikgJiYgZGVmaW5lZChJNTg2X1BN Q19HVVBST0YpCi0JZWxzZSBpZiAoY3B1dGltZV9jbG9jayA9PSBDUFVUSU1FX0NMT0NLX0k1ODZf UE1DKSB7Ci0JCWlmIChwZXJmbW9uX2F2YWlsKCkgJiYKLQkJICAgIHBlcmZtb25fc2V0dXAoMCwg Y3B1dGltZV9jbG9ja19wbWNfY29uZikgPT0gMCkgewotCQkJaWYgKHBlcmZtb25fc3RhcnQoMCkg IT0gMCkKLQkJCQlwZXJmbW9uX2ZpbmkoMCk7Ci0JCQllbHNlIHsKLQkJCQkvKiBYWFggMSBldmVu dCA9PSAxIHVzLiAqLwotCQkJCWdwLT5wcm9mcmF0ZSA9IDEwMDAwMDA7Ci0KLQkJCQlzYXZlZF9n bXAgPSAqZ3A7Ci0KLQkJCQkvKiBaYXAgb3ZlcmhlYWRzLiAgVGhleSBhcmUgaW52YWxpZC4gKi8K LQkJCQlncC0+Y3B1dGltZV9vdmVyaGVhZCA9IDA7Ci0JCQkJZ3AtPm1jb3VudF9vdmVyaGVhZCA9 IDA7Ci0JCQkJZ3AtPm1jb3VudF9wb3N0X292ZXJoZWFkID0gMDsKLQkJCQlncC0+bWNvdW50X3By ZV9vdmVyaGVhZCA9IDA7Ci0JCQkJZ3AtPm1leGl0Y291bnRfb3ZlcmhlYWQgPSAwOwotCQkJCWdw LT5tZXhpdGNvdW50X3Bvc3Rfb3ZlcmhlYWQgPSAwOwotCQkJCWdwLT5tZXhpdGNvdW50X3ByZV9v dmVyaGVhZCA9IDA7Ci0KLQkJCQljcHV0aW1lX2Nsb2NrX3BtY19pbml0ID0gVFJVRTsKLQkJCX0K LQkJfQotCX0KLSNlbmRpZiAvKiBQRVJGTU9OICYmIEk1ODZfUE1DX0dVUFJPRiAqLwogI2VuZGlm IC8qIEk1ODZfQ1BVIHx8IEk2ODZfQ1BVICovCiAJY3B1dGltZV9iaWFzID0gMDsKIAljcHV0aW1l KCk7CkBAIC0zMzQsMTMgKzI1Niw2IEBACiBzdG9wZ3Vwcm9mKGdwKQogCXN0cnVjdCBnbW9ucGFy YW0gKmdwOwogewotI2lmIGRlZmluZWQoUEVSRk1PTikgJiYgZGVmaW5lZChJNTg2X1BNQ19HVVBS T0YpCi0JaWYgKGNwdXRpbWVfY2xvY2tfcG1jX2luaXQpIHsKLQkJKmdwID0gc2F2ZWRfZ21wOwot CQlwZXJmbW9uX2ZpbmkoMCk7Ci0JCWNwdXRpbWVfY2xvY2tfcG1jX2luaXQgPSBGQUxTRTsKLQl9 Ci0jZW5kaWYKICNpZiBkZWZpbmVkKEk1ODZfQ1BVKSB8fCBkZWZpbmVkKEk2ODZfQ1BVKQogCWlm IChjcHV0aW1lX2Nsb2NrID09IENQVVRJTUVfQ0xPQ0tfVFNDKQogCQljcHV0aW1lX3Byb2ZfYWN0 aXZlID0gMDsKSW5kZXg6IHN5cy9hbWQ2NC9jb25mL05PVEVTCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9h bWQ2NC9jb25mL05PVEVTCShyZXZpc2lvbiAyMTA1MzYpCisrKyBzeXMvYW1kNjQvY29uZi9OT1RF Uwkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDYgQEAKICMgT3B0aW9ucyBmb3IgQ1BVIGZl YXR1cmVzLgogIwogCi0jCi0jIFBFUkZNT04gY2F1c2VzIHRoZSBkcml2ZXIgZm9yIFBlbnRpdW0v UGVudGl1bSBQcm8gcGVyZm9ybWFuY2UgY291bnRlcnMKLSMgdG8gYmUgY29tcGlsZWQuICBTZWUg cGVyZm1vbig0KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSMKLSNYWFgjb3B0aW9ucyAJUEVSRk1P TgotCiAMCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgTkVUV09SS0lORyBPUFRJT05TCkluZGV4OiBzeXMvYW1k NjQvYW1kNjQvbWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9hbWQ2NC9hbWQ2NC9tYWNoZGVw LmMJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9hbWQ2NC9hbWQ2NC9tYWNoZGVwLmMJKHdvcmtp bmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlICJvcHRfa3N0YWNrX3BhZ2VzLmgi CiAjaW5jbHVkZSAib3B0X21heG1lbS5oIgogI2luY2x1ZGUgIm9wdF9tc2didWYuaCIKLSNpbmNs dWRlICJvcHRfcGVyZm1vbi5oIgogI2luY2x1ZGUgIm9wdF9zY2hlZC5oIgogCiAjaW5jbHVkZSA8 c3lzL3BhcmFtLmg+CkBAIC0xMjAsOSArMTE5LDYgQEAKICNpbmNsdWRlIDxtYWNoaW5lL3JlZy5o PgogI2luY2x1ZGUgPG1hY2hpbmUvc2lnZnJhbWUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3NwZWNp YWxyZWcuaD4KLSNpZmRlZiBQRVJGTU9OCi0jaW5jbHVkZSA8bWFjaGluZS9wZXJmbW9uLmg+Ci0j ZW5kaWYKICNpbmNsdWRlIDxtYWNoaW5lL3Rzcy5oPgogI2lmZGVmIFNNUAogI2luY2x1ZGUgPG1h Y2hpbmUvc21wLmg+CkBAIC0yMzYsOSArMjMyLDYgQEAKIAlzdGFydHJ0Y2xvY2soKTsKIAlwcmlu dGNwdWluZm8oKTsKIAlwYW5pY2lmY3B1dW5zdXBwb3J0ZWQoKTsKLSNpZmRlZiBQRVJGTU9OCi0J cGVyZm1vbl9pbml0KCk7Ci0jZW5kaWYKIAlyZWFsbWVtID0gTWF4bWVtOwogCiAJLyoKSW5kZXg6 IHN5cy9hbWQ2NC9hbWQ2NC9wcm9mX21hY2hkZXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvYW1kNjQv YW1kNjQvcHJvZl9tYWNoZGVwLmMJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9hbWQ2NC9hbWQ2 NC9wcm9mX21hY2hkZXAuYwkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2lmZGVm IEdVUFJPRgogI2lmIDAKICNpbmNsdWRlICJvcHRfaTU4Nl9ndXByb2YuaCIKLSNpbmNsdWRlICJv cHRfcGVyZm1vbi5oIgogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KQEAgLTQ0LDkg KzQzLDYgQEAKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAKICNpbmNsdWRlIDxtYWNoaW5lL2Ns b2NrLmg+Ci0jaWYgMAotI2luY2x1ZGUgPG1hY2hpbmUvcGVyZm1vbi5oPgotI2VuZGlmCiAjaW5j bHVkZSA8bWFjaGluZS90aW1lcnJlZy5oPgogCiAjZGVmaW5lCUNQVVRJTUVfQ0xPQ0tfVU5JTklU SUFMSVpFRAkwCkBAIC01OCwxMSArNTQsNiBAQAogaW50CWNwdXRpbWVfYmlhcyA9IDE7CS8qIGlu aXRpYWxpemUgZm9yIGxvY2FsaXR5IG9mIHJlZmVyZW5jZSAqLwogCiBzdGF0aWMgaW50CWNwdXRp bWVfY2xvY2sgPSBDUFVUSU1FX0NMT0NLX1VOSU5JVElBTElaRUQ7Ci0jaWYgZGVmaW5lZChQRVJG TU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dVUFJPRikKLXN0YXRpYyB1X2ludAljcHV0aW1lX2Ns b2NrX3BtY19jb25mID0gSTU4Nl9QTUNfR1VQUk9GOwotc3RhdGljIGludAljcHV0aW1lX2Nsb2Nr X3BtY19pbml0Owotc3RhdGljIHN0cnVjdCBnbW9ucGFyYW0gc2F2ZWRfZ21wOwotI2VuZGlmCiAj aWYgZGVmaW5lZChJNTg2X0NQVSkgfHwgZGVmaW5lZChJNjg2X0NQVSkKIHN0YXRpYyBpbnQJY3B1 dGltZV9wcm9mX2FjdGl2ZTsKICNlbmRpZgpAQCAtMjAwLDEwICsxOTEsNiBAQAogewogCXVfaW50 IGNvdW50OwogCWludCBkZWx0YTsKLSNpZiAoZGVmaW5lZChJNTg2X0NQVSkgfHwgZGVmaW5lZChJ Njg2X0NQVSkpICYmICFkZWZpbmVkKFNNUCkgJiYgXAotICAgIGRlZmluZWQoUEVSRk1PTikgJiYg ZGVmaW5lZChJNTg2X1BNQ19HVVBST0YpCi0JdV9xdWFkX3QgZXZlbnRfY291bnQ7Ci0jZW5kaWYK IAl1X2NoYXIgaGlnaCwgbG93OwogCXN0YXRpYyB1X2ludCBwcmV2X2NvdW50OwogCkBAIC0yMjEs MjEgKzIwOCw2IEBACiAJCXByZXZfY291bnQgPSBjb3VudDsKIAkJcmV0dXJuIChkZWx0YSk7CiAJ fQotI2lmIGRlZmluZWQoUEVSRk1PTikgJiYgZGVmaW5lZChJNTg2X1BNQ19HVVBST0YpICYmICFk ZWZpbmVkKFNNUCkKLQlpZiAoY3B1dGltZV9jbG9jayA9PSBDUFVUSU1FX0NMT0NLX0k1ODZfUE1D KSB7Ci0JCS8qCi0JCSAqIFhYWCBwZXJtb25fcmVhZCgpIHNob3VsZCBiZSBpbmxpbmVkIHNvIHRo YXQgdGhlCi0JCSAqIHBlcmZtb24gbW9kdWxlIGRvZXNuJ3QgbmVlZCB0byBiZSBjb21waWxlZCB3 aXRoCi0JCSAqIHByb2ZpbGluZyBkaXNhYmxlZCBhbmQgc28gdGhhdCBpdCBpcyBmYXN0LgotCQkg Ki8KLQkJcGVyZm1vbl9yZWFkKDAsICZldmVudF9jb3VudCk7Ci0KLQkJY291bnQgPSAodV9pbnQp ZXZlbnRfY291bnQ7Ci0JCWRlbHRhID0gKGludCkoY291bnQgLSBwcmV2X2NvdW50KTsKLQkJcHJl dl9jb3VudCA9IGNvdW50OwotCQlyZXR1cm4gKGRlbHRhKTsKLQl9Ci0jZW5kaWYgLyogUEVSRk1P TiAmJiBJNTg2X1BNQ19HVVBST0YgJiYgIVNNUCAqLwogI2VuZGlmIC8qIEk1ODZfQ1BVIHx8IEk2 ODZfQ1BVICovCiAKIAkvKgpAQCAtMjY3LDM5ICsyMzksMTMgQEAKIHsKIAlpbnQgY2xvY2s7CiAJ aW50IGVycm9yOwotI2lmIGRlZmluZWQoUEVSRk1PTikgJiYgZGVmaW5lZChJNTg2X1BNQ19HVVBS T0YpCi0JaW50IGV2ZW50OwotCXN0cnVjdCBwbWMgcG1jOwotI2VuZGlmCiAKIAljbG9jayA9IGNw dXRpbWVfY2xvY2s7Ci0jaWYgZGVmaW5lZChQRVJGTU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dV UFJPRikKLQlpZiAoY2xvY2sgPT0gQ1BVVElNRV9DTE9DS19JNTg2X1BNQykgewotCQlwbWMucG1j X3ZhbCA9IGNwdXRpbWVfY2xvY2tfcG1jX2NvbmY7Ci0JCWNsb2NrICs9IHBtYy5wbWNfZXZlbnQ7 Ci0JfQotI2VuZGlmCiAJZXJyb3IgPSBzeXNjdGxfaGFuZGxlX29wYXF1ZShvaWRwLCAmY2xvY2ss IHNpemVvZiBjbG9jaywgcmVxKTsKIAlpZiAoZXJyb3IgPT0gMCAmJiByZXEtPm5ld3B0ciAhPSBO VUxMKSB7Ci0jaWYgZGVmaW5lZChQRVJGTU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dVUFJPRikK LQkJaWYgKGNsb2NrID49IENQVVRJTUVfQ0xPQ0tfSTU4Nl9QTUMpIHsKLQkJCWV2ZW50ID0gY2xv Y2sgLSBDUFVUSU1FX0NMT0NLX0k1ODZfUE1DOwotCQkJaWYgKGV2ZW50ID49IDI1NikKLQkJCQly ZXR1cm4gKEVJTlZBTCk7Ci0JCQlwbWMucG1jX251bSA9IDA7Ci0JCQlwbWMucG1jX2V2ZW50ID0g ZXZlbnQ7Ci0JCQlwbWMucG1jX3VuaXQgPSAwOwotCQkJcG1jLnBtY19mbGFncyA9IFBNQ0ZfRSB8 IFBNQ0ZfT1MgfCBQTUNGX1VTUjsKLQkJCXBtYy5wbWNfbWFzayA9IDA7Ci0JCQljcHV0aW1lX2Ns b2NrX3BtY19jb25mID0gcG1jLnBtY192YWw7Ci0JCQljcHV0aW1lX2Nsb2NrID0gQ1BVVElNRV9D TE9DS19JNTg2X1BNQzsKLQkJfSBlbHNlCi0jZW5kaWYKLQkJewotCQkJaWYgKGNsb2NrIDwgMCB8 fCBjbG9jayA+PSBDUFVUSU1FX0NMT0NLX0k1ODZfUE1DKQotCQkJCXJldHVybiAoRUlOVkFMKTsK LQkJCWNwdXRpbWVfY2xvY2sgPSBjbG9jazsKLQkJfQorCQlpZiAoY2xvY2sgPCAwIHx8IGNsb2Nr ID49IENQVVRJTUVfQ0xPQ0tfSTU4Nl9QTUMpCisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCWNwdXRp bWVfY2xvY2sgPSBjbG9jazsKIAl9CiAJcmV0dXJuIChlcnJvcik7CiB9CkBAIC0zMjksMzIgKzI3 NSw2IEBACiAJCWdwLT5wcm9mcmF0ZSA9IHRzY19mcmVxID4+IDE7CiAJCWNwdXRpbWVfcHJvZl9h Y3RpdmUgPSAxOwogCX0KLSNpZiBkZWZpbmVkKFBFUkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNf R1VQUk9GKQotCWVsc2UgaWYgKGNwdXRpbWVfY2xvY2sgPT0gQ1BVVElNRV9DTE9DS19JNTg2X1BN QykgewotCQlpZiAocGVyZm1vbl9hdmFpbCgpICYmCi0JCSAgICBwZXJmbW9uX3NldHVwKDAsIGNw dXRpbWVfY2xvY2tfcG1jX2NvbmYpID09IDApIHsKLQkJCWlmIChwZXJmbW9uX3N0YXJ0KDApICE9 IDApCi0JCQkJcGVyZm1vbl9maW5pKDApOwotCQkJZWxzZSB7Ci0JCQkJLyogWFhYIDEgZXZlbnQg PT0gMSB1cy4gKi8KLQkJCQlncC0+cHJvZnJhdGUgPSAxMDAwMDAwOwotCi0JCQkJc2F2ZWRfZ21w ID0gKmdwOwotCi0JCQkJLyogWmFwIG92ZXJoZWFkcy4gIFRoZXkgYXJlIGludmFsaWQuICovCi0J CQkJZ3AtPmNwdXRpbWVfb3ZlcmhlYWQgPSAwOwotCQkJCWdwLT5tY291bnRfb3ZlcmhlYWQgPSAw OwotCQkJCWdwLT5tY291bnRfcG9zdF9vdmVyaGVhZCA9IDA7Ci0JCQkJZ3AtPm1jb3VudF9wcmVf b3ZlcmhlYWQgPSAwOwotCQkJCWdwLT5tZXhpdGNvdW50X292ZXJoZWFkID0gMDsKLQkJCQlncC0+ bWV4aXRjb3VudF9wb3N0X292ZXJoZWFkID0gMDsKLQkJCQlncC0+bWV4aXRjb3VudF9wcmVfb3Zl cmhlYWQgPSAwOwotCi0JCQkJY3B1dGltZV9jbG9ja19wbWNfaW5pdCA9IFRSVUU7Ci0JCQl9Ci0J CX0KLQl9Ci0jZW5kaWYgLyogUEVSRk1PTiAmJiBJNTg2X1BNQ19HVVBST0YgKi8KICNlbmRpZiAv KiBJNTg2X0NQVSB8fCBJNjg2X0NQVSAqLwogCWNwdXRpbWVfYmlhcyA9IDA7CiAJY3B1dGltZSgp OwpAQCAtMzY0LDEzICsyODQsNiBAQAogc3RvcGd1cHJvZihncCkKIAlzdHJ1Y3QgZ21vbnBhcmFt ICpncDsKIHsKLSNpZiBkZWZpbmVkKFBFUkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNfR1VQUk9G KQotCWlmIChjcHV0aW1lX2Nsb2NrX3BtY19pbml0KSB7Ci0JCSpncCA9IHNhdmVkX2dtcDsKLQkJ cGVyZm1vbl9maW5pKDApOwotCQljcHV0aW1lX2Nsb2NrX3BtY19pbml0ID0gRkFMU0U7Ci0JfQot I2VuZGlmCiAjaWYgZGVmaW5lZChJNTg2X0NQVSkgfHwgZGVmaW5lZChJNjg2X0NQVSkKIAlpZiAo Y3B1dGltZV9jbG9jayA9PSBDUFVUSU1FX0NMT0NLX1RTQykKIAkJY3B1dGltZV9wcm9mX2FjdGl2 ZSA9IDA7Cg== --0016e659f3e6f5f5c7048c61417d--