From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 358423858C56 for ; Wed, 10 Apr 2024 09:17:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 358423858C56 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 358423858C56 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712740638; cv=none; b=cFDc7BwFBiPQWLHDPBz0Z1UtXSigS/yJxh7wEMHPOaWRxHsMfb5qBGqFOWAIlTGYrvbdQZ9RiBBrO85BCRI0c6V0VTq5KjDcSyFEJRLndEW9Air7qshDHxbQ3BbTHpTS1orFBI2Mo42zez9BbEnceHTHo+0Gj5Rk+SzqeG/5PGI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712740638; c=relaxed/simple; bh=T68+k+Tm2Xq4K9ZFVYuJmvuCF3/TUxuP5BSDRiXMSJM=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=dzAmgvSUdIJs495zLJaU5BhdQf89YQdVKTn87KsmCdZFEhuTNi9ZvsIm7cKTc6QYf2yt+vfBoZFz+2FoqeP70Mb90b2F1PFHvHxzjdXZ7fjn4VqNAcXxZwrwzS3bnMsuCT2mzjLrM9aSuVsbLOzyetpTrjlvsUD9+I7UvW/mpT4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C4335139F; Wed, 10 Apr 2024 02:17:42 -0700 (PDT) Received: from [10.57.73.224] (unknown [10.57.73.224]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id ECFD73F6C4; Wed, 10 Apr 2024 02:17:11 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------C8noRyI9zUqF4eH2UC1uYFWk" Message-ID: <6a3d4c31-e451-494e-8b42-080eddfd5460@arm.com> Date: Wed, 10 Apr 2024 10:17:10 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCHv3 2/2] aarch64: Add support for _BitInt To: Jakub Jelinek , gcc-patches@gcc.gnu.org, kyrylo.tkachov@arm.com, richard.sandiford@arm.com References: <20240125174501.32634-1-andre.simoesdiasvieira@arm.com> <04fee3c0-b67c-4148-8cb9-cb0bd6170759@arm.com> Content-Language: en-US From: "Andre Vieira (lists)" In-Reply-To: X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,KAM_LOTSOFHASH,KAM_SHORT,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------C8noRyI9zUqF4eH2UC1uYFWk Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Added the target check, also had to change some of the assembly checking due to changes upstream, the assembly is still valid, but we do extend where not necessary, I do believe that's a general issue though. The _BitInt(N > 64) codegen for non-powers of 2 did get worse, we see similar codegen with _int128 bitfields on aarch64. I suspect we need to improve the way we 'extend' TImode in the aarch64 backend to be able to operate only on the affected DImode parts of it when relevant. Though I also think we may need to change how _BitInt is currently expanded in such situations, right now it does the extension as two shifts. Anyway I did not have too much time to look deeper into this. Bootstrapped on aarch64-unknown-linux-gnu. OK for trunk? On 28/03/2024 15:21, Richard Sandiford wrote: > Jakub Jelinek writes: >> On Thu, Mar 28, 2024 at 03:00:46PM +0000, Richard Sandiford wrote: >>>> * gcc.target/aarch64/bitint-alignments.c: New test. >>>> * gcc.target/aarch64/bitint-args.c: New test. >>>> * gcc.target/aarch64/bitint-sizes.c: New test. >>>> * gcc.target/aarch64/bitfield-bitint-abi.h: New header. >>>> * gcc.target/aarch64/bitfield-bitint-abi-align16.c: New test. >>>> * gcc.target/aarch64/bitfield-bitint-abi-align8.c: New test. >>> >>> Since we don't support big-endian yet, I assume the tests should be >>> conditional on aarch64_little_endian. >> >> Perhaps better on bitint effective target, then they'll become available >> automatically as soon as big endian aarch64 _BitInt support is turned on. > > Ah, yeah, good point. > > Richard --------------C8noRyI9zUqF4eH2UC1uYFWk Content-Type: text/plain; charset=UTF-8; name="aarch64_bitint2v3.patch" Content-Disposition: attachment; filename="aarch64_bitint2v3.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjIGIvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuY2MKaW5kZXggODE0MDBjYzY2NjQ3MmZmZWZmNDBkZjE0ZTk4 YWUwMGViYzc3NGQzMS4uYzBhZjRlZjE1MWE4YzQ2Zjc4YzBjM2E0M2MyYWIxMzE4YTNmNjEw YSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MKKysrIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MKQEAgLTY1ODMsNiArNjU4Myw3IEBAIGFhcmNo NjRfcmV0dXJuX2luX21lbW9yeV8xIChjb25zdF90cmVlIHR5cGUpCiAgIGludCBjb3VudDsK IAogICBpZiAoIUFHR1JFR0FURV9UWVBFX1AgKHR5cGUpCisgICAgICAmJiBUUkVFX0NPREUg KHR5cGUpICE9IEJJVElOVF9UWVBFCiAgICAgICAmJiBUUkVFX0NPREUgKHR5cGUpICE9IENP TVBMRVhfVFlQRQogICAgICAgJiYgVFJFRV9DT0RFICh0eXBlKSAhPSBWRUNUT1JfVFlQRSkK ICAgICAvKiBTaW1wbGUgc2NhbGFyIHR5cGVzIGFsd2F5cyByZXR1cm5lZCBpbiByZWdpc3Rl cnMuICAqLwpAQCAtMjE5OTYsNiArMjE5OTcsMTEgQEAgYWFyY2g2NF9jb21wb3NpdGVfdHlw ZV9wIChjb25zdF90cmVlIHR5cGUsCiAgIGlmICh0eXBlICYmIChBR0dSRUdBVEVfVFlQRV9Q ICh0eXBlKSB8fCBUUkVFX0NPREUgKHR5cGUpID09IENPTVBMRVhfVFlQRSkpCiAgICAgcmV0 dXJuIHRydWU7CiAKKyAgaWYgKHR5cGUKKyAgICAgICYmIFRSRUVfQ09ERSAodHlwZSkgPT0g QklUSU5UX1RZUEUKKyAgICAgICYmIGludF9zaXplX2luX2J5dGVzICh0eXBlKSA+IDE2KQor ICAgIHJldHVybiB0cnVlOworCiAgIGlmIChtb2RlID09IEJMS21vZGUKICAgICAgIHx8IEdF VF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX0NPTVBMRVhfRkxPQVQKICAgICAgIHx8IEdF VF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX0NPTVBMRVhfSU5UKQpAQCAtMjg0NzcsNiAr Mjg0ODMsNDIgQEAgYWFyY2g2NF9leGNlc3NfcHJlY2lzaW9uIChlbnVtIGV4Y2Vzc19wcmVj aXNpb25fdHlwZSB0eXBlKQogICByZXR1cm4gRkxUX0VWQUxfTUVUSE9EX1VOUFJFRElDVEFC TEU7CiB9CiAKKy8qIEltcGxlbWVudCBUQVJHRVRfQ19CSVRJTlRfVFlQRV9JTkZPLgorICAg UmV0dXJuIHRydWUgaWYgX0JpdEludChOKSBpcyBzdXBwb3J0ZWQgYW5kIGZpbGwgaXRzIGRl dGFpbHMgaW50byAqSU5GTy4gICovCitib29sCithYXJjaDY0X2JpdGludF90eXBlX2luZm8g KGludCBuLCBzdHJ1Y3QgYml0aW50X2luZm8gKmluZm8pCit7CisgIGlmIChUQVJHRVRfQklH X0VORCkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgaWYgKG4gPD0gOCkKKyAgICBpbmZvLT5s aW1iX21vZGUgPSBRSW1vZGU7CisgIGVsc2UgaWYgKG4gPD0gMTYpCisgICAgaW5mby0+bGlt Yl9tb2RlID0gSEltb2RlOworICBlbHNlIGlmIChuIDw9IDMyKQorICAgIGluZm8tPmxpbWJf bW9kZSA9IFNJbW9kZTsKKyAgZWxzZSBpZiAobiA8PSA2NCkKKyAgICBpbmZvLT5saW1iX21v ZGUgPSBESW1vZGU7CisgIGVsc2UgaWYgKG4gPD0gMTI4KQorICAgIGluZm8tPmxpbWJfbW9k ZSA9IFRJbW9kZTsKKyAgZWxzZQorICAgIC8qIFRoZSBBQVBDUyBmb3IgQUFyY2g2NCBkZWZp bmVzIF9CaXRJbnQoTiA+IDEyOCkgYXMgYW4gYXJyYXkgd2l0aAorICAgICAgIHR5cGUge3Np Z25lZCx1bnNpZ25lZH0gX19pbnQxMjhbTV0gd2hlcmUgTSoxMjggPj0gTi4gIEhvd2V2ZXIs IHRvIGJlCisgICAgICAgYWJsZSB0byB1c2UgbGliZ2NjJ3MgaW1wbGVtZW50YXRpb24gdG8g c3VwcG9ydCBsYXJnZSBfQml0SW50J3Mgd2UgbmVlZAorICAgICAgIHRvIHVzZSBhIExJTUJf TU9ERSB0aGF0IGlzIG5vIGxhcmdlciB0aGFuICdsb25nIGxvbmcnLiAgVGhpcyBpcyB3aHkg d2UKKyAgICAgICB1c2UgREltb2RlIGZvciBvdXIgaW50ZXJuYWwgTElNQl9NT0RFIGFuZCB3 ZSBkZWZpbmUgdGhlIEFCSV9MSU1CX01PREUgdG8KKyAgICAgICBiZSBUSW1vZGUgdG8gZW5z dXJlIHdlIGFyZSBBQkkgY29tcGxpYW50LiAgKi8KKyAgICBpbmZvLT5saW1iX21vZGUgPSBE SW1vZGU7CisKKyAgaWYgKG4gPiAxMjgpCisgICAgaW5mby0+YWJpX2xpbWJfbW9kZSA9IFRJ bW9kZTsKKyAgZWxzZQorICAgIGluZm8tPmFiaV9saW1iX21vZGUgPSBpbmZvLT5saW1iX21v ZGU7CisgIGluZm8tPmJpZ19lbmRpYW4gPSBUQVJHRVRfQklHX0VORDsKKyAgaW5mby0+ZXh0 ZW5kZWQgPSBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKIC8qIEltcGxlbWVudCBUQVJH RVRfU0NIRURfQ0FOX1NQRUNVTEFURV9JTlNOLiAgUmV0dXJuIHRydWUgaWYgSU5TTiBjYW4g YmUKICAgIHNjaGVkdWxlZCBmb3Igc3BlY3VsYXRpdmUgZXhlY3V0aW9uLiAgUmVqZWN0IHRo ZSBsb25nLXJ1bm5pbmcgZGl2aXNpb24KICAgIGFuZCBzcXVhcmUtcm9vdCBpbnN0cnVjdGlv bnMuICAqLwpAQCAtMzA2MDEsNiArMzA2NDMsOSBAQCBhYXJjaDY0X3J1bl9zZWxmdGVzdHMg KHZvaWQpCiAjdW5kZWYgVEFSR0VUX0NfRVhDRVNTX1BSRUNJU0lPTgogI2RlZmluZSBUQVJH RVRfQ19FWENFU1NfUFJFQ0lTSU9OIGFhcmNoNjRfZXhjZXNzX3ByZWNpc2lvbgogCisjdW5k ZWYgVEFSR0VUX0NfQklUSU5UX1RZUEVfSU5GTworI2RlZmluZSBUQVJHRVRfQ19CSVRJTlRf VFlQRV9JTkZPIGFhcmNoNjRfYml0aW50X3R5cGVfaW5mbworCiAjdW5kZWYgIFRBUkdFVF9F WFBBTkRfQlVJTFRJTgogI2RlZmluZSBUQVJHRVRfRVhQQU5EX0JVSUxUSU4gYWFyY2g2NF9l eHBhbmRfYnVpbHRpbgogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9iaXRmaWVsZC1iaXRpbnQtYWJpLWFsaWduMTYuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2JpdGZpZWxkLWJpdGludC1hYmktYWxpZ24xNi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLjNmMjkyYTQ1Zjk1NWQzNWI4MDJhMGJkNzg5Y2QzOWQ1ZmE3YjU4NjAKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9iaXRm aWVsZC1iaXRpbnQtYWJpLWFsaWduMTYuYwpAQCAtMCwwICsxLDM4NCBAQAorLyogeyBkZy1k byBjb21waWxlIHsgdGFyZ2V0IGJpdGludCB9IH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1v cHRpb25zICItc3RkPWMyMyAtTzIgLWZuby1zdGFjay1wcm90ZWN0b3IgLXNhdmUtdGVtcHMg LWZuby1zY2hlZHVsZS1pbnNucyAtZm5vLXNjaGVkdWxlLWluc25zMiIgfSAqLworLyogeyBk Zy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICIiIH0gfSAqLworCisj ZGVmaW5lIEFMSUdOIDE2CisjaW5jbHVkZSAiYml0ZmllbGQtYml0aW50LWFiaS5oIgorCisv LyBmMS1mMTYgYXJlIGFsbCB0aGUgc2FtZQorCisvKgorKiogZjE6CisqKglhbmQJeDAsIHgy LCAxCisqKglyZXQKKyovCisvKgorKiogZjg6CisqKglhbmQJeDAsIHgyLCAxCisqKglyZXQK KyovCisvKgorKiogZjE2OgorKioJYW5kCXgwLCB4MiwgMQorKioJcmV0CisqLworCisvKiBm cCBzZWVtcyB0byBiZSB1bmFibGUgdG8gb3B0aW1pemUgYXdheSBzdGFjay11c2FnZSwgVE9E TzogdG8gZml4LiAgKi8KKworLyoKKyoqIGZwOgorKiouLi4KKyoqCWFuZAl4MCwgeDEsIDEK KyoqLi4uCisqKglyZXQKKyovCisKKy8vIGFsbCBvdGhlciBmMXAtZjhwIGdlbmVyYXRlIHRo ZSBzYW1lIGNvZGUsIGZvciBmMTZwIHRoZSB2YWx1ZSBjb21lcyBmcm9tIHgyCisvKgorKiog ZjFwOgorKioJYW5kCXgwLCB4MSwgMQorKioJcmV0CisqLworLyoKKyoqIGY4cDoKKyoqCWFu ZAl4MCwgeDEsIDEKKyoqCXJldAorKi8KKy8qCisqKiBmMTZwOgorKioJYW5kCXgwLCB4Miwg MQorKioJcmV0CisqLworCisvLyBnMS1nMTYgYXJlIGFsbCB0aGUgc2FtZQorLyoKKyoqIGcx OgorKioJbW92CSh4WzAtOV0rKSwgeDAKKyoqCW1vdgl3MCwgdzEKKyoqCXNiZngJKHhbMC05 XSspLCBcMSwgMCwgNjMKKyoqCWFuZAl4NCwgXDIsIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyoq CWFuZAl4MiwgXDIsIDEKKyoqCW1vdgl4MywgMAorKioJYglmMQorKi8KKworLyoKKyoqIGc4 OgorKioJbW92CSh4WzAtOV0rKSwgeDAKKyoqCW1vdgl3MCwgdzEKKyoqCXNiZngJKHhbMC05 XSspLCBcMSwgMCwgNjMKKyoqCWFuZAl4NCwgXDIsIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyoq CWFuZAl4MiwgXDIsIDEKKyoqCW1vdgl4MywgMAorKioJYglmOAorKi8KKy8qCisqKiBnMTY6 CisqKgltb3YJKHhbMC05XSspLCB4MAorKioJbW92CXcwLCB3MQorKioJc2JmeAkoeFswLTld KyksIFwxLCAwLCA2MworKioJYW5kCXg0LCBcMiwgOTIyMzM3MjAzNjg1NDc3NTgwNworKioJ YW5kCXgyLCBcMiwgMQorKioJbW92CXgzLCAwCisqKgliCWYxNgorKi8KKworLy8gYWdhaW4g Z3AgZGlmZmVyZW50IGZyb20gdGhlIHJlc3QKKworLyoKKyoqIGdwOgorKioJc3ViCXNwLCBz cCwgIzE2CisqKgltb3YJKHhbMC05XSspLCB4MAorKioJbW92CXcwLCB3MQorKioJc2JmeAl4 KFswLTldKyksIFwxLCAwLCA2MworKioJbW92CSh3WzAtOV0rKSwgMAorKioJYmZpCVwzLCB3 XDIsIDAsIDEKKyoqCWFuZAl4MywgeFwyLCA5MjIzMzcyMDM2ODU0Nzc1ODA3CisqKgltb3YJ eDIsIDAKKyoqCXN0cgl4enIsIFxbc3BcXQorKioJc3RyYglcMywgXFtzcFxdCisqKglsZHIJ eDEsIFxbc3BcXQorKioJYWRkCXNwLCBzcCwgMTYKKyoqCWIJZnAKKyovCisKKy8vIGcxcC1n OHAgYXJlIGFsbCB0aGUgc2FtZSwgZzE2cCB1c2VzIHgyIHRvIHBhc3MgcGFyYW1ldGVyIHRv IGYxNnAKKworLyoKKyoqIGcxcDoKKyoqCW1vdgkod1swLTldKyksIHcxCisqKglzYmZ4CSh4 WzAtOV0rKSwgeDAsIDAsIDYzCisqKglhbmQJeDMsIFwyLCA5MjIzMzcyMDM2ODU0Nzc1ODA3 CisqKglhbmQJeDEsIFwyLCAxCisqKgltb3YJeDIsIDAKKyoqCW1vdgl3MCwgXDEKKyoqCWIJ ZjFwCisqLworLyoKKyoqIGc4cDoKKyoqCW1vdgkod1swLTldKyksIHcxCisqKglzYmZ4CSh4 WzAtOV0rKSwgeDAsIDAsIDYzCisqKglhbmQJeDMsIFwyLCA5MjIzMzcyMDM2ODU0Nzc1ODA3 CisqKglhbmQJeDEsIFwyLCAxCisqKgltb3YJeDIsIDAKKyoqCW1vdgl3MCwgXDEKKyoqCWIJ ZjhwCisqLworLyoKKyoqIGcxNnA6CisqKgltb3YJKHhbMC05XSspLCB4MAorKioJbW92CXcw LCB3MQorKioJc2JmeAkoeFswLTldKyksIFwxLCAwLCA2MworKioJYW5kCXg0LCBcMiwgOTIy MzM3MjAzNjg1NDc3NTgwNworKioJYW5kCXgyLCBcMiwgMQorKioJbW92CXgzLCAwCisqKgli CWYxNnAKKyovCisKKy8vIGYqX3N0YWNrIGFyZSBhbGwgdGhlIHNhbWUKKy8qCisqKiBmMV9z dGFjazoKKyoqCWxkcgkoeFswLTldKyksIFxbc3AsIDE2XF0KKyoqCWFuZAl4MCwgXDEsIDEK KyoqCXJldAorKi8KKy8qCisqKiBmOF9zdGFjazoKKyoqCWxkcgkoeFswLTldKyksIFxbc3As IDE2XF0KKyoqCWFuZAl4MCwgXDEsIDEKKyoqCXJldAorKi8KKy8qCisqKiBmMTZfc3RhY2s6 CisqKglsZHIJKHhbMC05XSspLCBcW3NwLCAxNlxdCisqKglhbmQJeDAsIFwxLCAxCisqKgly ZXQKKyovCisKKy8vIGZweywxLDh9X3N0YWNrIGFyZSBhbGwgdGhlIHNhbWUgYnV0IGZwMTZf c3RhY2sgbG9hZHMgZnJvbSBzcCsxNgorLyoKKyoqIGZwX3N0YWNrOgorKioJbGRyCSh4WzAt OV0rKSwgXFtzcCwgOFxdCisqKglhbmQJeDAsIFwxLCAxCisqKglyZXQKKyovCisvKgorKiog ZjFwX3N0YWNrOgorKioJbGRyCSh4WzAtOV0rKSwgXFtzcCwgOFxdCisqKglhbmQJeDAsIFwx LCAxCisqKglyZXQKKyovCisvKgorKiogZjhwX3N0YWNrOgorKioJbGRyCSh4WzAtOV0rKSwg XFtzcCwgOFxdCisqKglhbmQJeDAsIFwxLCAxCisqKglyZXQKKyovCisKKy8qCisqKiBmMTZw X3N0YWNrOgorKioJbGRyCSh4WzAtOV0rKSwgXFtzcCwgMTZcXQorKioJYW5kCXgwLCBcMSwg MQorKioJcmV0CisqLworCisvKgorKiogZ3Bfc3RhY2s6CisqKi4uLgorKioJbW92CXgoWzAt OV0rKSwgeDAKKyoqCXN4dHcJKHhbMC05XSspLCB3MQorKioJbW92CXgwLCBcMgorKioJYW5k CXg3LCBcMiwgOTIyMzM3MjAzNjg1NDc3NTgwNworKioJbW92CSh3WzAtOV0rKSwgMAorKioJ YmZpCVwzLCB3XDEsIDAsIDEKKyoqCXN0cmIJd3pyLCBcW3NwLCAxNlxdCisqKgltb3YJeDYs IHg3CisqKgltb3YJeDUsIHg3CisqKgltb3YJeDQsIHg3CisqKgltb3YJeDMsIHg3CisqKglt b3YJeDIsIHg3CisqKglzdHIJeHpyLCBcW3NwLCA0OFxdCisqKglzdHJiCVwzLCBcW3NwLCA0 OFxdCisqKglsZHIJKHhbMC05XSspLCBcW3NwLCA0OFxdCisqKglzdHAJeDcsIFw0LCBcW3Nw XF0KKyoqCW1vdgl4MSwgeDcKKyoqCWJsCWZwX3N0YWNrCisqKglzYmZ4CXgwLCB4MCwgMCwg NjMKKyoqLi4uCisqKglyZXQKKyovCisKKy8qCisqKiBnMV9zdGFjazoKKyoqLi4uCisqKglt b3YJKHhbMC05XSspLCB4MAorKioJc3h0dwkoeFswLTldKyksIHcxCisqKgltb3YJeDAsIFwy CisqKglhbmQJeDcsIFwyLCA5MjIzMzcyMDM2ODU0Nzc1ODA3CisqKgltb3YJKHhbMC05XSsp LCAwCisqKglzYmZ4CSh4WzAtOV0rKSwgXDEsIDAsIDYzCisqKgliZmkJXDMsIFw0LCAwLCAx CisqKglzdHAJXDMsIHh6ciwgXFtzcCwgMTZcXQorKioJbW92CXg2LCB4NworKioJbW92CXg1 LCB4NworKioJbW92CXg0LCB4NworKioJbW92CXgzLCB4NworKioJbW92CXgyLCB4NworKioJ bW92CXgxLCB4NworKioJc3RyCXg3LCBcW3NwXF0KKyoqCWJsCWYxX3N0YWNrCisqKglzYmZ4 CXgwLCB4MCwgMCwgNjMKKyoqLi4uCisqKglyZXQKKyovCisKKworLyoKKyoqIGc4X3N0YWNr OgorKiouLi4KKyoqCW1vdgkoeFswLTldKyksIHgwCisqKglzeHR3CSh4WzAtOV0rKSwgdzEK KyoqCW1vdgl4MCwgXDIKKyoqCWFuZAl4NywgXDIsIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyoq CW1vdgkoeFswLTldKyksIDAKKyoqCXNiZngJKHhbMC05XSspLCBcMSwgMCwgNjMKKyoqCWJm aQlcMywgXDQsIDAsIDEKKyoqCXN0cAlcMywgeHpyLCBcW3NwLCAxNlxdCisqKgltb3YJeDYs IHg3CisqKgltb3YJeDUsIHg3CisqKgltb3YJeDQsIHg3CisqKgltb3YJeDMsIHg3CisqKglt b3YJeDIsIHg3CisqKgltb3YJeDEsIHg3CisqKglzdHIJeDcsIFxbc3BcXQorKioJYmwJZjhf c3RhY2sKKyoqCXNiZngJeDAsIHgwLCAwLCA2MworKiouLi4KKyoqCXJldAorKi8KKworLyoK KyoqIGcxNl9zdGFjazoKKyoqLi4uCisqKgltb3YJKHhbMC05XSspLCB4MAorKioJc3h0dwko eFswLTldKyksIHcxCisqKgltb3YJeDAsIFwyCisqKglhbmQJKHhbMC05XSspLCBcMiwgOTIy MzM3MjAzNjg1NDc3NTgwNworKioJbW92CSh4WzAtOV0rKSwgMAorKioJc2JmeAkoeFswLTld KyksIFwxLCAwLCA2MworKioJYmZpCVw0LCBcNSwgMCwgMQorKioJc3RwCVw0LCB4enIsIFxb c3AsIDE2XF0KKyoqCW1vdgl4NiwgXDMKKyoqCW1vdgl4NSwgXDMKKyoqCW1vdgl4NCwgXDMK KyoqCW1vdgl4MywgXDMKKyoqCW1vdgl4MiwgXDMKKyoqCW1vdgl4MSwgXDMKKyoqCXN0cgl4 NywgXFtzcFxdCisqKglibAlmMTZfc3RhY2sKKyoqCXNiZngJeDAsIHgwLCAwLCA2MworKiou Li4KKyoqCXJldAorKi8KKworLyoKKyoqIGYxX3N0ZGFyZzoKKyoqLi4uCisqKglhbmQJeDAs IHgyLCAxCisqKi4uLgorKioJcmV0CisqLworLyoKKyoqIGYxNl9zdGRhcmc6CisqKi4uLgor KioJYW5kCXgwLCB4MiwgMQorKiouLi4KKyoqCXJldAorKi8KKworLyoKKyoqIGZwX3N0ZGFy ZzoKKyoqLi4uCisqKglhbmQJeDAsIHgxLCAxCisqKi4uLgorKioJcmV0CisqLworCisvKgor KiogZjFwX3N0ZGFyZzoKKyoqLi4uCisqKglhbmQJeDAsIHgxLCAxCisqKi4uLgorKioJcmV0 CisqLworLyoKKyoqIGY4cF9zdGRhcmc6CisqKi4uLgorKioJYW5kCXgwLCB4MSwgMQorKiou Li4KKyoqCXJldAorKi8KKy8qCisqKiBmMTZwX3N0ZGFyZzoKKyoqLi4uCisqKglhbmQJeDAs IHgyLCAxCisqKi4uLgorKioJcmV0CisqLworCisvKgorKiogZzFfc3RkYXJnOgorKioJYW5k CXgyLCB4MCwgMQorKioJbW92CXgzLCAwCisqKgltb3YJdzAsIHcxCisqKgliCWYxX3N0ZGFy ZworKi8KKworLyoKKyoqIGcxNl9zdGRhcmc6CisqKglhbmQJeDIsIHgwLCAxCisqKgltb3YJ eDMsIDAKKyoqCW1vdgl3MCwgdzEKKyoqCWIJZjE2X3N0ZGFyZworKi8KKworLyoKKyoqIGdw X3N0ZGFyZzoKKyoqLi4uCisqKgltb3YJeChbMC05XSspLCB4MAorKioJbW92CXcwLCB3MQor KioJbW92CSh3WzAtOV0rKSwgMAorKioJYmZpCVwyLCB3XDEsIDAsIDEKKyoqCW1vdgl4Miwg MAorKioJc3RyCXh6ciwgXFtzcFxdCisqKglzdHJiCVwyLCBcW3NwXF0KKyoqCWxkcgl4MSwg XFtzcFxdCisqKi4uLgorKioJYglmcF9zdGRhcmcKKyovCisKKy8qCisqKiBnMXBfc3RkYXJn OgorKioJbW92CSh4WzAtOV0rKSwgeDAKKyoqCW1vdgl3MCwgdzEKKyoqCWFuZAl4MSwgXDEs IDEKKyoqCW1vdgl4MiwgMAorKioJYglmMXBfc3RkYXJnCisqLworCisvKgorKiogZzhwX3N0 ZGFyZzoKKyoqCW1vdgkoeFswLTldKyksIHgwCisqKgltb3YJdzAsIHcxCisqKglhbmQJeDEs IFwxLCAxCisqKgltb3YJeDIsIDAKKyoqCWIJZjhwX3N0ZGFyZworKi8KKworLyoKKyoqIGcx NnBfc3RkYXJnOgorKioJYW5kCXgyLCB4MCwgMQorKioJbW92CXgzLCAwCisqKgltb3YJdzAs IHcxCisqKgliCWYxNnBfc3RkYXJnCisqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYml0ZmllbGQtYml0aW50LWFiaS1hbGlnbjguYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2JpdGZpZWxkLWJpdGludC1hYmktYWxpZ244 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uZGEzYzIzNTUwYmFlNjczNGY2OWUyYmFmMGU4ZGI3NDFmYjY1 Y2ZkYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2JpdGZpZWxkLWJpdGludC1hYmktYWxpZ244LmMKQEAgLTAsMCArMSwzODYgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBiaXRpbnQgfSB9ICovCisvKiB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLXN0ZD1jMjMgLU8yIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1zYXZl LXRlbXBzIC1mbm8tc2NoZWR1bGUtaW5zbnMgLWZuby1zY2hlZHVsZS1pbnNuczIiIH0gKi8K Ky8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiIiB9IH0g Ki8KKworI2RlZmluZSBBTElHTiA4CisjaW5jbHVkZSAiYml0ZmllbGQtYml0aW50LWFiaS5o IgorCisvLyBmMS1mMTYgYXJlIGFsbCB0aGUgc2FtZQorCisvKgorKiogZjE6CisqKglhbmQJ eDAsIHgxLCAxCisqKglyZXQKKyovCisvKgorKiogZjg6CisqKglhbmQJeDAsIHgxLCAxCisq KglyZXQKKyovCisvKgorKiogZjE2OgorKioJYW5kCXgwLCB4MiwgMQorKioJcmV0CisqLwor CisvKiBmcCBzZWVtcyB0byBiZSB1bmFibGUgdG8gb3B0aW1pemUgYXdheSBzdGFjay11c2Fn ZSwgVE9ETzogdG8gZml4LiAgKi8KKworLyoKKyoqIGZwOgorKiouLi4KKyoqCWFuZAl4MCwg eDEsIDEKKyoqLi4uCisqKglyZXQKKyovCisKKy8vIGFsbCBvdGhlciBmMXAtZjhwIGdlbmVy YXRlIHRoZSBzYW1lIGNvZGUsIGZvciBmMTZwIHRoZSB2YWx1ZSBjb21lcyBmcm9tIHgyCisv KgorKiogZjFwOgorKioJYW5kCXgwLCB4MSwgMQorKioJcmV0CisqLworLyoKKyoqIGY4cDoK KyoqCWFuZAl4MCwgeDEsIDEKKyoqCXJldAorKi8KKy8qCisqKiBmMTZwOgorKioJYW5kCXgw LCB4MiwgMQorKioJcmV0CisqLworCisvLyBnMS1nMTYgYXJlIGFsbCB0aGUgc2FtZQorLyoK KyoqIGcxOgorKioJbW92CSh3WzAtOV0rKSwgdzEKKyoqCXNiZngJKHhbMC05XSspLCB4MCwg MCwgNjMKKyoqCWFuZAl4MywgXDIsIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyoqCWFuZAl4MSwg XDIsIDEKKyoqCW1vdgl4MiwgMAorKioJbW92CXcwLCBcMQorKioJYglmMQorKi8KKworLyoK KyoqIGc4OgorKioJbW92CSh3WzAtOV0rKSwgdzEKKyoqCXNiZngJKHhbMC05XSspLCB4MCwg MCwgNjMKKyoqCWFuZAl4MywgXDIsIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyoqCWFuZAl4MSwg XDIsIDEKKyoqCW1vdgl4MiwgMAorKioJbW92CXcwLCBcMQorKioJYglmOAorKi8KKy8qCisq KiBnMTY6CisqKgltb3YJKHhbMC05XSspLCB4MAorKioJbW92CXcwLCB3MQorKioJc2JmeAko eFswLTldKyksIFwxLCAwLCA2MworKioJYW5kCXg0LCBcMiwgOTIyMzM3MjAzNjg1NDc3NTgw NworKioJYW5kCXgyLCBcMiwgMQorKioJbW92CXgzLCAwCisqKgliCWYxNgorKi8KKworLy8g YWdhaW4gZ3AgZGlmZmVyZW50IGZyb20gdGhlIHJlc3QKKworLyoKKyoqIGdwOgorKioJc3Vi CXNwLCBzcCwgIzE2CisqKgltb3YJKHhbMC05XSspLCB4MAorKioJbW92CXcwLCB3MQorKioJ c2JmeAl4KFswLTldKyksIFwxLCAwLCA2MworKioJbW92CSh3WzAtOV0rKSwgMAorKioJYmZp CVwzLCB3XDIsIDAsIDEKKyoqCWFuZAl4MywgeFwyLCA5MjIzMzcyMDM2ODU0Nzc1ODA3Cisq Kgltb3YJeDIsIDAKKyoqCXN0cgl4enIsIFxbc3BcXQorKioJc3RyYglcMywgXFtzcFxdCisq KglsZHIJeDEsIFxbc3BcXQorKioJYWRkCXNwLCBzcCwgMTYKKyoqCWIJZnAKKyovCisKKy8v IGcxcC1nOHAgYXJlIGFsbCB0aGUgc2FtZSwgZzE2cCB1c2VzIHgyIHRvIHBhc3MgcGFyYW1l dGVyIHRvIGYxNnAKKworLyoKKyoqIGcxcDoKKyoqCW1vdgkod1swLTldKyksIHcxCisqKglz YmZ4CSh4WzAtOV0rKSwgeDAsIDAsIDYzCisqKglhbmQJeDMsIFwyLCA5MjIzMzcyMDM2ODU0 Nzc1ODA3CisqKglhbmQJeDEsIFwyLCAxCisqKgltb3YJeDIsIDAKKyoqCW1vdgl3MCwgXDEK KyoqCWIJZjFwCisqLworLyoKKyoqIGc4cDoKKyoqCW1vdgkod1swLTldKyksIHcxCisqKglz YmZ4CSh4WzAtOV0rKSwgeDAsIDAsIDYzCisqKglhbmQJeDMsIFwyLCA5MjIzMzcyMDM2ODU0 Nzc1ODA3CisqKglhbmQJeDEsIFwyLCAxCisqKgltb3YJeDIsIDAKKyoqCW1vdgl3MCwgXDEK KyoqCWIJZjhwCisqLworLyoKKyoqIGcxNnA6CisqKgltb3YJKHhbMC05XSspLCB4MAorKioJ bW92CXcwLCB3MQorKioJc2JmeAkoeFswLTldKyksIFwxLCAwLCA2MworKioJYW5kCXg0LCBc MiwgOTIyMzM3MjAzNjg1NDc3NTgwNworKioJYW5kCXgyLCBcMiwgMQorKioJbW92CXgzLCAw CisqKgliCWYxNnAKKyovCisKKy8vIGYqX3N0YWNrIGFyZSBhbGwgdGhlIHNhbWUKKy8qCisq KiBmMV9zdGFjazoKKyoqCWxkcgkoeFswLTldKyksIFxbc3AsIDhcXQorKioJYW5kCXgwLCBc MSwgMQorKioJcmV0CisqLworLyoKKyoqIGY4X3N0YWNrOgorKioJbGRyCSh4WzAtOV0rKSwg XFtzcCwgOFxdCisqKglhbmQJeDAsIFwxLCAxCisqKglyZXQKKyovCisvKgorKiogZjE2X3N0 YWNrOgorKioJbGRyCSh4WzAtOV0rKSwgXFtzcCwgMTZcXQorKioJYW5kCXgwLCBcMSwgMQor KioJcmV0CisqLworCisvLyBmcHssMSw4fV9zdGFjayBhcmUgYWxsIHRoZSBzYW1lIGJ1dCBm cDE2X3N0YWNrIGxvYWRzIGZyb20gc3ArMTYKKy8qCisqKiBmcF9zdGFjazoKKyoqCWxkcgko eFswLTldKyksIFxbc3AsIDhcXQorKioJYW5kCXgwLCBcMSwgMQorKioJcmV0CisqLworLyoK KyoqIGYxcF9zdGFjazoKKyoqCWxkcgkoeFswLTldKyksIFxbc3AsIDhcXQorKioJYW5kCXgw LCBcMSwgMQorKioJcmV0CisqLworLyoKKyoqIGY4cF9zdGFjazoKKyoqCWxkcgkoeFswLTld KyksIFxbc3AsIDhcXQorKioJYW5kCXgwLCBcMSwgMQorKioJcmV0CisqLworCisvKgorKiog ZjE2cF9zdGFjazoKKyoqCWxkcgkoeFswLTldKyksIFxbc3AsIDE2XF0KKyoqCWFuZAl4MCwg XDEsIDEKKyoqCXJldAorKi8KKworLyoKKyoqIGdwX3N0YWNrOgorKiouLi4KKyoqCW1vdgl4 KFswLTldKyksIHgwCisqKglzeHR3CSh4WzAtOV0rKSwgdzEKKyoqCW1vdgl4MCwgXDIKKyoq CWFuZAl4NywgXDIsIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyoqCW1vdgkod1swLTldKyksIDAK KyoqCWJmaQlcMywgd1wxLCAwLCAxCisqKglzdHJiCXd6ciwgXFtzcCwgMTZcXQorKioJbW92 CXg2LCB4NworKioJbW92CXg1LCB4NworKioJbW92CXg0LCB4NworKioJbW92CXgzLCB4Nwor KioJbW92CXgyLCB4NworKioJc3RyCXh6ciwgXFtzcCwgNDhcXQorKioJc3RyYglcMywgXFtz cCwgNDhcXQorKioJbGRyCSh4WzAtOV0rKSwgXFtzcCwgNDhcXQorKioJc3RwCXg3LCBcNCwg XFtzcFxdCisqKgltb3YJeDEsIHg3CisqKglibAlmcF9zdGFjaworKioJc2JmeAl4MCwgeDAs IDAsIDYzCisqKi4uLgorKioJcmV0CisqLworCisvKiBnMSBhbmQgZzggYXJlIHRoZSBzYW1l LiAgKi8KKworLyoKKyoqIGcxX3N0YWNrOgorKiouLi4KKyoqCW1vdgkoeFswLTldKyksIHgw CisqKglzeHR3CSh4WzAtOV0rKSwgdzEKKyoqCW1vdgl4MCwgXDIKKyoqCWFuZAl4NywgXDIs IDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyoqCW1vdgkoeFswLTldKyksIDAKKyoqCXNiZngJKHhb MC05XSspLCBcMSwgMCwgNjMKKyoqCWJmaQlcMywgXDQsIDAsIDEKKyoqCXN0cAl4NywgeDEs IFxbc3BcXQorKioJbW92CXg2LCB4NworKioJbW92CXg1LCB4NworKioJbW92CXg0LCB4Nwor KioJbW92CXgzLCB4NworKioJbW92CXgyLCB4NworKioJbW92CXgxLCB4NworKioJc3RyCXh6 ciwgXFtzcCwgMTZcXQorKioJYmwJZjFfc3RhY2sKKyoqCXNiZngJeDAsIHgwLCAwLCA2Mwor KiouLi4KKyoqCXJldAorKi8KKworLyoKKyoqIGc4X3N0YWNrOgorKiouLi4KKyoqCW1vdgko eFswLTldKyksIHgwCisqKglzeHR3CSh4WzAtOV0rKSwgdzEKKyoqCW1vdgl4MCwgXDIKKyoq CWFuZAl4NywgXDIsIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyoqCW1vdgkoeFswLTldKyksIDAK KyoqCXNiZngJKHhbMC05XSspLCBcMSwgMCwgNjMKKyoqCWJmaQlcMywgXDQsIDAsIDEKKyoq CXN0cAl4NywgeDEsIFxbc3BcXQorKioJbW92CXg2LCB4NworKioJbW92CXg1LCB4NworKioJ bW92CXg0LCB4NworKioJbW92CXgzLCB4NworKioJbW92CXgyLCB4NworKioJbW92CXgxLCB4 NworKioJc3RyCXh6ciwgXFtzcCwgMTZcXQorKioJYmwJZjhfc3RhY2sKKyoqCXNiZngJeDAs IHgwLCAwLCA2MworKiouLi4KKyoqCXJldAorKi8KKworLyoKKyoqIGcxNl9zdGFjazoKKyoq Li4uCisqKgltb3YJKHhbMC05XSspLCB4MAorKioJc3h0dwkoeFswLTldKyksIHcxCisqKglt b3YJeDAsIFwyCisqKglhbmQJeDcsIFwyLCA5MjIzMzcyMDM2ODU0Nzc1ODA3CisqKgltb3YJ KHhbMC05XSspLCAwCisqKglzYmZ4CSh4WzAtOV0rKSwgXDEsIDAsIDYzCisqKgliZmkJXDMs IFw0LCAwLCAxCisqKglzdHAJXDMsIHh6ciwgXFtzcCwgMTZcXQorKioJbW92CXg2LCB4Nwor KioJbW92CXg1LCB4NworKioJbW92CXg0LCB4NworKioJbW92CXgzLCB4NworKioJbW92CXgy LCB4NworKioJbW92CXgxLCB4NworKioJc3RyCXg3LCBcW3NwXF0KKyoqCWJsCWYxNl9zdGFj aworKioJc2JmeAl4MCwgeDAsIDAsIDYzCisqKi4uLgorKioJcmV0CisqLworCisvKgorKiog ZjFfc3RkYXJnOgorKiouLi4KKyoqCWFuZAl4MCwgeDEsIDEKKyoqLi4uCisqKglyZXQKKyov CisvKgorKiogZjE2X3N0ZGFyZzoKKyoqLi4uCisqKglhbmQJeDAsIHgyLCAxCisqKi4uLgor KioJcmV0CisqLworCisvKgorKiogZnBfc3RkYXJnOgorKiouLi4KKyoqCWFuZAl4MCwgeDEs IDEKKyoqLi4uCisqKglyZXQKKyovCisKKy8qCisqKiBmMXBfc3RkYXJnOgorKiouLi4KKyoq CWFuZAl4MCwgeDEsIDEKKyoqLi4uCisqKglyZXQKKyovCisvKgorKiogZjhwX3N0ZGFyZzoK KyoqLi4uCisqKglhbmQJeDAsIHgxLCAxCisqKi4uLgorKioJcmV0CisqLworLyoKKyoqIGYx NnBfc3RkYXJnOgorKiouLi4KKyoqCWFuZAl4MCwgeDIsIDEKKyoqLi4uCisqKglyZXQKKyov CisKKy8qCisqKiBnMV9zdGRhcmc6CisqKgltb3YJKHhbMC05XSspLCB4MAorKioJbW92CXcw LCB3MQorKioJYW5kCXgxLCBcMSwgMQorKioJbW92CXgyLCAwCisqKgliCWYxX3N0ZGFyZwor Ki8KKworLyoKKyoqIGcxNl9zdGRhcmc6CisqKglhbmQJeDIsIHgwLCAxCisqKgltb3YJeDMs IDAKKyoqCW1vdgl3MCwgdzEKKyoqCWIJZjE2X3N0ZGFyZworKi8KKworLyoKKyoqIGdwX3N0 ZGFyZzoKKyoqLi4uCisqKgltb3YJeChbMC05XSspLCB4MAorKioJbW92CXcwLCB3MQorKioJ bW92CSh3WzAtOV0rKSwgMAorKioJYmZpCVwyLCB3XDEsIDAsIDEKKyoqCW1vdgl4MiwgMAor KioJc3RyCXh6ciwgXFtzcFxdCisqKglzdHJiCVwyLCBcW3NwXF0KKyoqCWxkcgl4MSwgXFtz cFxdCisqKi4uLgorKioJYglmcF9zdGRhcmcKKyovCisKKy8qCisqKiBnMXBfc3RkYXJnOgor KioJbW92CSh4WzAtOV0rKSwgeDAKKyoqCW1vdgl3MCwgdzEKKyoqCWFuZAl4MSwgXDEsIDEK KyoqCW1vdgl4MiwgMAorKioJYglmMXBfc3RkYXJnCisqLworCisvKgorKiogZzhwX3N0ZGFy ZzoKKyoqCW1vdgkoeFswLTldKyksIHgwCisqKgltb3YJdzAsIHcxCisqKglhbmQJeDEsIFwx LCAxCisqKgltb3YJeDIsIDAKKyoqCWIJZjhwX3N0ZGFyZworKi8KKworLyoKKyoqIGcxNnBf c3RkYXJnOgorKioJYW5kCXgyLCB4MCwgMQorKioJbW92CXgzLCAwCisqKgltb3YJdzAsIHcx CisqKgliCWYxNnBfc3RkYXJnCisqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvYml0ZmllbGQtYml0aW50LWFiaS5oIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYml0ZmllbGQtYml0aW50LWFiaS5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmIwMjE4MmY0YjNiMTVjNTc0YjlkNTNkZmQ2Nzg4NDkyOTA5MjA3ZTkKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9iaXRmaWVsZC1iaXRp bnQtYWJpLmgKQEAgLTAsMCArMSwxMDEgQEAKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKwordHlw ZWRlZiB1bnNpZ25lZCBfQml0SW50KDYzKSBCSSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKEFM SUdOKSkpOworCisjaWZuZGVmIEVYVFJBCisjZGVmaW5lIEVYVFJBIHVuc2lnbmVkIGxvbmcg bG9uZyB4OworI2VuZGlmCisKK3N0cnVjdCBTMSAgeyBfX2F0dHJpYnV0ZV9fKChhbGlnbmVk KDEpKSkgQkkgaSA6IDE7IEVYVFJBIH07CitzdHJ1Y3QgUzggIHsgX19hdHRyaWJ1dGVfXygo YWxpZ25lZCg4KSkpIEJJIGkgOiAxOyBFWFRSQSB9Oworc3RydWN0IFMxNiB7IF9fYXR0cmli dXRlX18oKGFsaWduZWQoMTYpKSkgQkkgaSA6IDE7IEVYVFJBIH07CisKK3N0cnVjdCBTcCAg IHsgQkkgaSA6IDE7IEVYVFJBIH1fX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKK3N0cnVjdCBT MXAgIHsgX19hdHRyaWJ1dGVfXygocGFja2VkLCBhbGlnbmVkKDEpKSkgQkkgaSA6IDE7IEVY VFJBIH07CitzdHJ1Y3QgUzhwICB7IF9fYXR0cmlidXRlX18oKHBhY2tlZCwgYWxpZ25lZCg4 KSkpIEJJIGkgOiAxOyBFWFRSQSB9Oworc3RydWN0IFMxNnAgeyBfX2F0dHJpYnV0ZV9fKChw YWNrZWQsIGFsaWduZWQoMTYpKSkgQkkgaSA6IDE7IEVYVFJBIH07CisKKy8qIEJpdGZpZWxk IGluIHJlZ2lzdGVycy4gICovCisjZGVmaW5lIFBBUkFNUyh4eCkgaW50IGEwLCBzdHJ1Y3Qg UyMjeHggcywgQkkgYTEKKy8qIEJpdGZpZWxkIHBhc3NlZCBieSB0aGUgc3RhY2suICAqLwor I2RlZmluZSBQQVJBTVNfU1RBQ0soeHgpIGludCBhMCwgQkkgYTEsIEJJIGEyLCBCSSBhMywg QkkgYTQsIEJJIGE1LCBCSSBhNiwgQkkgYTcsIEJJIGE4LCBzdHJ1Y3QgUyMjeHggdAorLyog Qml0ZmllbGQgcGFzc2VkIHZpYSBzdGRhcmcuICAqLworI2RlZmluZSBQQVJBTVNfU1REQVJH KHh4KSBpbnQgYTAsIC4uLgorCisjZGVmaW5lIENPREUoeHgpCQkJCVwKKyAgcmV0dXJuIHMu aTsKKworI2RlZmluZSBDT0RFX1NUQUNLKHh4KQkJCQlcCisgIHJldHVybiB0Lmk7CisKKyNk ZWZpbmUgQ09ERV9TVERBUkcoeHgpCQkJCVwKKyAgdmFfbGlzdCBhcDsJCQkJCVwKKyAgc3Ry dWN0IFMjI3h4IGFyZzsJCQkJXAorICBfX2J1aWx0aW5fdmFfc3RhcnQoYXAsYTApOwkJCVwK KyAgYXJnID0gX19idWlsdGluX3ZhX2FyZyhhcCwgc3RydWN0IFMjI3h4KTsJXAorICByZXR1 cm4gYXJnLmk7CisKKyNkZWZpbmUgQVJHUyh4eCkgeSwgKHN0cnVjdCBTIyN4eCkgeyB4IH0s IHgKKyNkZWZpbmUgQVJHU19TVEFDSyh4eCkgeSwgeSwgeSwgeSwgeSwgeSwgeSwgeSwgeSwg KHN0cnVjdCBTIyN4eCkgeyB4IH0KKyNkZWZpbmUgQVJHU19TVERBUkcoeHgpIHksIChzdHJ1 Y3QgUyMjeHgpIHsgeCB9CisKKy8qIEJpdGZpZWxkIGluIHJlZ2lzdGVycy4gICovCitfQml0 SW50KDYzKSBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKSBmMSAoUEFSQU1TKDEpKSAgeyBDT0RF KDEpIH0KK19CaXRJbnQoNjMpIF9fYXR0cmlidXRlX18gKChub2lwYSkpIGY4IChQQVJBTVMo OCkpICB7IENPREUoOCkgfQorX0JpdEludCg2MykgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkg ZjE2KFBBUkFNUygxNikpIHsgQ09ERSgxNikgfQorCitfQml0SW50KDYzKSBfX2F0dHJpYnV0 ZV9fICgobm9pcGEpKSBmcCAgKFBBUkFNUyhwKSkgICB7IENPREUocCkgfQorX0JpdEludCg2 MykgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkgZjFwIChQQVJBTVMoMXApKSAgeyBDT0RFKDFw KSB9CitfQml0SW50KDYzKSBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKSBmOHAgKFBBUkFNUyg4 cCkpICB7IENPREUoOHApIH0KK19CaXRJbnQoNjMpIF9fYXR0cmlidXRlX18gKChub2lwYSkp IGYxNnAoUEFSQU1TKDE2cCkpIHsgQ09ERSgxNnApIH0KKworX0JpdEludCg2MykgZzEgKF9C aXRJbnQoNjMpIHgsIGludCB5KSB7IHJldHVybiBmMSAoQVJHUygxKSk7IH0KK19CaXRJbnQo NjMpIGc4IChfQml0SW50KDYzKSB4LCBpbnQgeSkgeyByZXR1cm4gZjggKEFSR1MoOCkpOyB9 CitfQml0SW50KDYzKSBnMTYoX0JpdEludCg2MykgeCwgaW50IHkpIHsgcmV0dXJuIGYxNiAo QVJHUygxNikpOyB9CisKK19CaXRJbnQoNjMpIGdwICAoX0JpdEludCg2MykgeCwgaW50IHkp IHsgcmV0dXJuIGZwICAgKEFSR1MocCkpOyB9CitfQml0SW50KDYzKSBnMXAgKF9CaXRJbnQo NjMpIHgsIGludCB5KSB7IHJldHVybiBmMXAgIChBUkdTKDFwKSk7IH0KK19CaXRJbnQoNjMp IGc4cCAoX0JpdEludCg2MykgeCwgaW50IHkpIHsgcmV0dXJuIGY4cCAgKEFSR1MoOHApKTsg fQorX0JpdEludCg2MykgZzE2cChfQml0SW50KDYzKSB4LCBpbnQgeSkgeyByZXR1cm4gZjE2 cCAoQVJHUygxNnApKTsgfQorCisvKiBCaXRmaWVsZCBpbiB0aGUgc3RhY2suICAqLworX0Jp dEludCg2MykgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkgZjFfc3RhY2sgKFBBUkFNU19TVEFD SygxKSkgIHsgQ09ERV9TVEFDSygxKSB9CitfQml0SW50KDYzKSBfX2F0dHJpYnV0ZV9fICgo bm9pcGEpKSBmOF9zdGFjayAoUEFSQU1TX1NUQUNLKDgpKSAgeyBDT0RFX1NUQUNLKDgpIH0K K19CaXRJbnQoNjMpIF9fYXR0cmlidXRlX18gKChub2lwYSkpIGYxNl9zdGFjayhQQVJBTVNf U1RBQ0soMTYpKSB7IENPREVfU1RBQ0soMTYpIH0KKworX0JpdEludCg2MykgX19hdHRyaWJ1 dGVfXyAoKG5vaXBhKSkgZnBfc3RhY2sgIChQQVJBTVNfU1RBQ0socCkpICAgeyBDT0RFX1NU QUNLKHApIH0KK19CaXRJbnQoNjMpIF9fYXR0cmlidXRlX18gKChub2lwYSkpIGYxcF9zdGFj ayAoUEFSQU1TX1NUQUNLKDFwKSkgIHsgQ09ERV9TVEFDSygxcCkgfQorX0JpdEludCg2Mykg X19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkgZjhwX3N0YWNrIChQQVJBTVNfU1RBQ0soOHApKSAg eyBDT0RFX1NUQUNLKDhwKSB9CitfQml0SW50KDYzKSBfX2F0dHJpYnV0ZV9fICgobm9pcGEp KSBmMTZwX3N0YWNrKFBBUkFNU19TVEFDSygxNnApKSB7IENPREVfU1RBQ0soMTZwKSB9CisK KworX0JpdEludCg2MykgZzFfc3RhY2sgKF9CaXRJbnQoNjMpIHgsIGludCB5KSB7IHJldHVy biBmMV9zdGFjayAoQVJHU19TVEFDSygxKSk7IH0KK19CaXRJbnQoNjMpIGc4X3N0YWNrIChf Qml0SW50KDYzKSB4LCBpbnQgeSkgeyByZXR1cm4gZjhfc3RhY2sgKEFSR1NfU1RBQ0soOCkp OyB9CitfQml0SW50KDYzKSBnMTZfc3RhY2soX0JpdEludCg2MykgeCwgaW50IHkpIHsgcmV0 dXJuIGYxNl9zdGFjayAoQVJHU19TVEFDSygxNikpOyB9CisKK19CaXRJbnQoNjMpIGdwX3N0 YWNrICAoX0JpdEludCg2MykgeCwgaW50IHkpIHsgcmV0dXJuIGZwX3N0YWNrIChBUkdTX1NU QUNLKHApKTsgfQorX0JpdEludCg2MykgZzFwX3N0YWNrIChfQml0SW50KDYzKSB4LCBpbnQg eSkgeyByZXR1cm4gZjFwX3N0YWNrIChBUkdTX1NUQUNLKDFwKSk7IH0KK19CaXRJbnQoNjMp IGc4cF9zdGFjayAoX0JpdEludCg2MykgeCwgaW50IHkpIHsgcmV0dXJuIGY4cF9zdGFjayAo QVJHU19TVEFDSyg4cCkpOyB9CitfQml0SW50KDYzKSBnMTZwX3N0YWNrKF9CaXRJbnQoNjMp IHgsIGludCB5KSB7IHJldHVybiBmMTZwX3N0YWNrIChBUkdTX1NUQUNLKDE2cCkpOyB9CisK KworLyogQml0ZmllbGQgIHZpYSBzdGRhcmcuICAqLworX0JpdEludCg2MykgX19hdHRyaWJ1 dGVfXyAoKG5vaXBhKSkgZjFfc3RkYXJnIChQQVJBTVNfU1REQVJHKDEpKSAgeyBDT0RFX1NU REFSRygxKSB9CitfQml0SW50KDYzKSBfX2F0dHJpYnV0ZV9fICgobm9pcGEpKSBmOF9zdGRh cmcgKFBBUkFNU19TVERBUkcoOCkpICB7IENPREVfU1REQVJHKDgpIH0KK19CaXRJbnQoNjMp IF9fYXR0cmlidXRlX18gKChub2lwYSkpIGYxNl9zdGRhcmcoUEFSQU1TX1NUREFSRygxNikp IHsgQ09ERV9TVERBUkcoMTYpIH0KKworX0JpdEludCg2MykgX19hdHRyaWJ1dGVfXyAoKG5v aXBhKSkgZnBfc3RkYXJnICAoUEFSQU1TX1NUREFSRyhwKSkgICB7IENPREVfU1REQVJHKHAp IH0KK19CaXRJbnQoNjMpIF9fYXR0cmlidXRlX18gKChub2lwYSkpIGYxcF9zdGRhcmcgKFBB UkFNU19TVERBUkcoMXApKSAgeyBDT0RFX1NUREFSRygxcCkgfQorX0JpdEludCg2MykgX19h dHRyaWJ1dGVfXyAoKG5vaXBhKSkgZjhwX3N0ZGFyZyAoUEFSQU1TX1NUREFSRyg4cCkpICB7 IENPREVfU1REQVJHKDhwKSB9CitfQml0SW50KDYzKSBfX2F0dHJpYnV0ZV9fICgobm9pcGEp KSBmMTZwX3N0ZGFyZyhQQVJBTVNfU1REQVJHKDE2cCkpIHsgQ09ERV9TVERBUkcoMTZwKSB9 CisKK19CaXRJbnQoNjMpIGcxX3N0ZGFyZyAoX0JpdEludCg2MykgeCwgaW50IHkpIHsgcmV0 dXJuIGYxX3N0ZGFyZyAoQVJHU19TVERBUkcoMSkpOyB9CitfQml0SW50KDYzKSBnOF9zdGRh cmcgKF9CaXRJbnQoNjMpIHgsIGludCB5KSB7IHJldHVybiBmOF9zdGRhcmcgKEFSR1NfU1RE QVJHKDgpKTsgfQorX0JpdEludCg2MykgZzE2X3N0ZGFyZyhfQml0SW50KDYzKSB4LCBpbnQg eSkgeyByZXR1cm4gZjE2X3N0ZGFyZyAoQVJHU19TVERBUkcoMTYpKTsgfQorCitfQml0SW50 KDYzKSBncF9zdGRhcmcgIChfQml0SW50KDYzKSB4LCBpbnQgeSkgeyByZXR1cm4gZnBfc3Rk YXJnIChBUkdTX1NUREFSRyhwKSk7IH0KK19CaXRJbnQoNjMpIGcxcF9zdGRhcmcgKF9CaXRJ bnQoNjMpIHgsIGludCB5KSB7IHJldHVybiBmMXBfc3RkYXJnIChBUkdTX1NUREFSRygxcCkp OyB9CitfQml0SW50KDYzKSBnOHBfc3RkYXJnIChfQml0SW50KDYzKSB4LCBpbnQgeSkgeyBy ZXR1cm4gZjhwX3N0ZGFyZyAoQVJHU19TVERBUkcoOHApKTsgfQorX0JpdEludCg2MykgZzE2 cF9zdGRhcmcoX0JpdEludCg2MykgeCwgaW50IHkpIHsgcmV0dXJuIGYxNnBfc3RkYXJnIChB UkdTX1NUREFSRygxNnApKTsgfQorCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L2JpdGludC1hbGlnbm1lbnRzLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9iaXRpbnQtYWxpZ25tZW50cy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1 OTIyNzliMDM4YmFkYzYzNmFjOTIxN2JkZjY2YzljYmE3YmRlOWMKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9iaXRpbnQtYWxpZ25tZW50 cy5jCkBAIC0wLDAgKzEsNTggQEAKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGJpdGludCB9 IH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItc3RkPWMyMyIgfSAqLworCitz dGF0aWMgbG9uZyB1bnNpZ25lZCBpbnQKK2NhbGNfYWxpZ25vZiAoaW50IG4pCit7CisgIGlm IChuID4gNjQpCisgICAgcmV0dXJuIGFsaWdub2YoX19pbnQxMjhfdCk7CisgIGlmIChuID4g MzIpCisgICAgcmV0dXJuIGFsaWdub2YobG9uZyBsb25nKTsKKyAgaWYgKG4gPiAxNikKKyAg ICByZXR1cm4gYWxpZ25vZihpbnQpOworICBpZiAobiA+IDgpCisgICAgcmV0dXJuIGFsaWdu b2Yoc2hvcnQpOworICBlbHNlCisgICAgcmV0dXJuIGFsaWdub2YoY2hhcik7Cit9CisKKyNk ZWZpbmUgQ0hFQ0tfQUxJR05NRU5UKE4pIFwKKyAgaWYgKGFsaWdub2YoX0JpdEludChOKSkg IT0gY2FsY19hbGlnbm9mKE4pKSBcCisgICAgX19idWlsdGluX2Fib3J0ICgpOworCitpbnQg bWFpbiAodm9pZCkKK3sKKyAgQ0hFQ0tfQUxJR05NRU5UKDIpOworICBDSEVDS19BTElHTk1F TlQoMyk7CisgIENIRUNLX0FMSUdOTUVOVCg3KTsKKyAgQ0hFQ0tfQUxJR05NRU5UKDgpOwor ICBDSEVDS19BTElHTk1FTlQoOSk7CisgIENIRUNLX0FMSUdOTUVOVCgxMyk7CisgIENIRUNL X0FMSUdOTUVOVCgxNSk7CisgIENIRUNLX0FMSUdOTUVOVCgxNik7CisgIENIRUNLX0FMSUdO TUVOVCgxNyk7CisgIENIRUNLX0FMSUdOTUVOVCgyNCk7CisgIENIRUNLX0FMSUdOTUVOVCgz MSk7CisgIENIRUNLX0FMSUdOTUVOVCgzMik7CisgIENIRUNLX0FMSUdOTUVOVCgzMyk7Cisg IENIRUNLX0FMSUdOTUVOVCg0Mik7CisgIENIRUNLX0FMSUdOTUVOVCg1Myk7CisgIENIRUNL X0FMSUdOTUVOVCg2Myk7CisgIENIRUNLX0FMSUdOTUVOVCg2NCk7CisgIENIRUNLX0FMSUdO TUVOVCg2NSk7CisgIENIRUNLX0FMSUdOTUVOVCg3OSk7CisgIENIRUNLX0FMSUdOTUVOVCg5 Nik7CisgIENIRUNLX0FMSUdOTUVOVCgxMTMpOworICBDSEVDS19BTElHTk1FTlQoMTI3KTsK KyAgQ0hFQ0tfQUxJR05NRU5UKDEyOCk7CisgIENIRUNLX0FMSUdOTUVOVCgxMjkpOworICBD SEVDS19BTElHTk1FTlQoMTUzKTsKKyAgQ0hFQ0tfQUxJR05NRU5UKDI1NSk7CisgIENIRUNL X0FMSUdOTUVOVCgyNTYpOworICBDSEVDS19BTElHTk1FTlQoMjU3KTsKKyAgQ0hFQ0tfQUxJ R05NRU5UKDM1Myk7CisgIENIRUNLX0FMSUdOTUVOVCg1MTIpOworICBDSEVDS19BTElHTk1F TlQoNjIwKTsKKyAgQ0hFQ0tfQUxJR05NRU5UKDEwMjQpOworICBDSEVDS19BTElHTk1FTlQo MzAwMDApOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvYml0aW50LWFyZ3MuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2Jp dGludC1hcmdzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdlMTA5OWMzMDNiOTUwYjczZTNjY2Q3Yjkz ZDYwYjkxODI0NjNmYwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L2JpdGludC1hcmdzLmMKQEAgLTAsMCArMSwxMDUgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB7IHRhcmdldCBiaXRpbnQgfSB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwt b3B0aW9ucyAiLXN0ZD1jMjMgLU8gLWZuby1zdGFjay1jbGFzaC1wcm90ZWN0aW9uIC1nIiB9 ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9 ICovCisKKyNkZWZpbmUgQ0hFQ0tfQVJHKE4pCQkJCVwKK3ZvaWQgZiMjTihfQml0SW50KE4p ICpwdHIsIF9CaXRJbnQoTikgeSkJXAorewkJCQkJCVwKKyAgICAqcHRyID0geTsJCQkJCVwK K30KKworCitDSEVDS19BUkcoMikKKy8qCisqKiBmMjoKKyoqCXNiZml6CSh3WzAtOV0rKSwg dzEsIDYsIDIKKyoqCWFzcgkod1swLTldKyksIFwxLCA2CisqKglzdHJiCVwyLCBcW3gwXF0K KyoqCXJldAorKi8KK0NIRUNLX0FSRyg4KQorLyoKKyoqIGY4OgorKioJc3RyYgl3MSwgXFt4 MFxdCisqKglyZXQKKyovCitDSEVDS19BUkcoOSkKKy8qCisqKiBmOToKKyoqCXNiZml6CSh3 WzAtOV0rKSwgdzEsIDcsIDkKKyoqCWFzcgkod1swLTldKyksIFwxLCA3CisqKglzdHJoCVwy LCBcW3gwXF0KKyoqCXJldAorKi8KK0NIRUNLX0FSRygxNikKKy8qCisqKiBmMTY6CisqKglz dHJoCXcxLCBcW3gwXF0KKyoqCXJldAorKi8KK0NIRUNLX0FSRygxOSkKKy8qCisqKiBmMTk6 CisqKglzYmZ4CXgoWzAtOV0rKSwgeDEsIDAsIDE5CisqKglzdHIJd1wxLCBcW3gwXF0KKyoq CXJldAorKi8KK0NIRUNLX0FSRygzMikKKy8qCisqKiBmMzI6CisqKglzdHIJdzEsIFxbeDBc XQorKioJcmV0CisqLworQ0hFQ0tfQVJHKDQyKQorLyoKKyoqIGY0MjoKKyoqCXNiZngJKHhb MC05XSspLCB4MSwgMCwgNDIKKyoqCXN0cglcMSwgXFt4MFxdCisqKglyZXQKKyovCitDSEVD S19BUkcoNjQpCisvKgorKiogZjY0OgorKioJc3RyCXgxLCBcW3gwXF0KKyoqCXJldAorKi8K KworQ0hFQ0tfQVJHKDY1KQorLyoKKyoqIGY2NToKKyoqCWV4dHIJKHhbMC05XSspLCB4Mywg eDIsIDEKKyoqCWFuZAkoeFswLTldKyksIHgyLCAxCisqKglvcnIJKHhbMC05XSspLCBcMiwg XDEsIGxzbCAxCisqKglhc3IJKHhbMC05XSspLCBcMSwgNjMKKyoqCXN0cAlcMywgXDQsIFxb eDBcXQorKioJcmV0CisqLworCitDSEVDS19BUkcoMTI3KQorLyoKKyoqIGYxMjc6CisqKgll eHRyCSh4WzAtOV0rKSwgeDMsIHgyLCA2MworKioJYW5kCSh4WzAtOV0rKSwgeDIsIDkyMjMz NzIwMzY4NTQ3NzU4MDcKKyoqCW9ycgkoeFswLTldKyksIFwyLCBcMSwgbHNsIDYzCisqKglh c3IJKHhbMC05XSspLCBcMSwgMQorKioJc3RwCVwzLCBcNCwgXFt4MFxdCisqKglyZXQKKyov CisKK0NIRUNLX0FSRygxMjgpCisvKgorKiogZjEyODoKKyoqCXN0cAl4MiwgeDMsIFxbeDBc XQorKioJcmV0CisqLworCitDSEVDS19BUkcoMTI5KQorLyoKKyoqIGYxMjk6CisqKglsZHAJ KHhbMC05XSspLCAoeFswLTldKyksIFxbeDFcXQorKioJc3RwCVwxLCBcMiwgXFt4MFxdCisq KglsZHIJKHhbMC05XSspLCBcW3gxLCAxNlxdCisqKglzYmZ4CSh4WzAtOV0rKSwgXDMsIDAs IDEKKyoqCXN0cglcNCwgXFt4MCwgMTZcXQorKioJcmV0CisqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYml0aW50LXNpemVzLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9iaXRpbnQtc2l6ZXMuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li43MjcyZjk4YWNiYjA2ZDI0YjJmNDhiNTIyM2Y0NTI1MTYyMDc5MzRiCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYml0aW50LXNpemVz LmMKQEAgLTAsMCArMSw2MCBAQAorLyogeyBkZy1kbyBydW4geyB0YXJnZXQgYml0aW50IH0g fSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1zdGQ9YzIzIiB9ICovCisKK3N0 YXRpYyBsb25nIHVuc2lnbmVkIGludAorY2FsY19zaXplIChpbnQgbikKK3sKKyAgaWYgKG4g PiAxMjgpCisgICAgcmV0dXJuICgobiAtIDEpLzEyOCArIDEpICAqIHNpemVvZihfX2ludDEy OF90KTsKKyAgaWYgKG4gPiA2NCkKKyAgICByZXR1cm4gc2l6ZW9mKF9faW50MTI4X3QpOwor ICBpZiAobiA+IDMyKQorICAgIHJldHVybiBzaXplb2YobG9uZyBsb25nKTsKKyAgaWYgKG4g PiAxNikKKyAgICByZXR1cm4gc2l6ZW9mKGludCk7CisgIGlmIChuID4gOCkKKyAgICByZXR1 cm4gc2l6ZW9mKHNob3J0KTsKKyAgZWxzZQorICAgIHJldHVybiBzaXplb2YoY2hhcik7Cit9 CisKKyNkZWZpbmUgQ0hFQ0tfU0laRShOKSBcCisgIGlmIChzaXplb2YoX0JpdEludChOKSkg IT0gY2FsY19zaXplKE4pKSBcCisgICAgX19idWlsdGluX2Fib3J0ICgpOworCitpbnQgbWFp biAodm9pZCkKK3sKKyAgQ0hFQ0tfU0laRSgyKTsKKyAgQ0hFQ0tfU0laRSgzKTsKKyAgQ0hF Q0tfU0laRSg3KTsKKyAgQ0hFQ0tfU0laRSg4KTsKKyAgQ0hFQ0tfU0laRSg5KTsKKyAgQ0hF Q0tfU0laRSgxMyk7CisgIENIRUNLX1NJWkUoMTUpOworICBDSEVDS19TSVpFKDE2KTsKKyAg Q0hFQ0tfU0laRSgxNyk7CisgIENIRUNLX1NJWkUoMjQpOworICBDSEVDS19TSVpFKDMxKTsK KyAgQ0hFQ0tfU0laRSgzMik7CisgIENIRUNLX1NJWkUoMzMpOworICBDSEVDS19TSVpFKDQy KTsKKyAgQ0hFQ0tfU0laRSg1Myk7CisgIENIRUNLX1NJWkUoNjMpOworICBDSEVDS19TSVpF KDY0KTsKKyAgQ0hFQ0tfU0laRSg2NSk7CisgIENIRUNLX1NJWkUoNzkpOworICBDSEVDS19T SVpFKDk2KTsKKyAgQ0hFQ0tfU0laRSgxMTMpOworICBDSEVDS19TSVpFKDEyNyk7CisgIENI RUNLX1NJWkUoMTI4KTsKKyAgQ0hFQ0tfU0laRSgxMjkpOworICBDSEVDS19TSVpFKDE1Myk7 CisgIENIRUNLX1NJWkUoMjU1KTsKKyAgQ0hFQ0tfU0laRSgyNTYpOworICBDSEVDS19TSVpF KDI1Nyk7CisgIENIRUNLX1NJWkUoMzUzKTsKKyAgQ0hFQ0tfU0laRSg1MTIpOworICBDSEVD S19TSVpFKDYyMCk7CisgIENIRUNLX1NJWkUoMTAyNCk7CisgIENIRUNLX1NJWkUoMzAwMDAp OworfQpkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9hYXJjaDY0L2xpYmdjYy1zb2Z0ZnAu dmVyIGIvbGliZ2NjL2NvbmZpZy9hYXJjaDY0L2xpYmdjYy1zb2Z0ZnAudmVyCmluZGV4IGU3 M2Y1ZjkxMjk3NzZkMzllYjUwMjBlZDczOThkYzU5YWJhMmQxOTcuLjliYTg1NzAzNmFiZWY5 OTkxM2VlYmU1Njk3MWVhYWFiZjVlMTk1MmUgMTAwNjQ0Ci0tLSBhL2xpYmdjYy9jb25maWcv YWFyY2g2NC9saWJnY2Mtc29mdGZwLnZlcgorKysgYi9saWJnY2MvY29uZmlnL2FhcmNoNjQv bGliZ2NjLXNvZnRmcC52ZXIKQEAgLTM5LDMgKzM5LDExIEBAIEdDQ18xMy4wLjAgewogICBf X3RydW5jdGZiZjIKICAgX190cnVuY2hmYmYyCiB9CisKKyVpbmhlcml0IEdDQ18xNC4wLjAg R0NDXzEzLjAuMAorR0NDXzE0LjAuMCB7CisgIF9fZml4dGZiaXRpbnQKKyAgX19mbG9hdGJp dGludGJmCisgIF9fZmxvYXRiaXRpbnRoZgorICBfX2Zsb2F0Yml0aW50dGYKK30KZGlmZiAt LWdpdCBhL2xpYmdjYy9jb25maWcvYWFyY2g2NC90LXNvZnRmcCBiL2xpYmdjYy9jb25maWcv YWFyY2g2NC90LXNvZnRmcAppbmRleCAyZTMyMzY2Zjg5MTM2MWUyMDU2YzY4MGIyZTM2ZWRi MTg3MWM3NjcwLi44MGU3ZTc3YTU0NWNjMTBlZWNjZDg0ZWVhMDkyODcxNzUxYzNlMTM5IDEw MDY0NAotLS0gYS9saWJnY2MvY29uZmlnL2FhcmNoNjQvdC1zb2Z0ZnAKKysrIGIvbGliZ2Nj L2NvbmZpZy9hYXJjaDY0L3Qtc29mdGZwCkBAIC00LDcgKzQsOCBAQCBzb2Z0ZnBfZXh0ZW5z aW9ucyA6PSBzZnRmIGRmdGYgaGZ0ZiBiZnNmCiBzb2Z0ZnBfdHJ1bmNhdGlvbnMgOj0gdGZz ZiB0ZmRmIHRmaGYgdGZiZiBkZmJmIHNmYmYgaGZiZgogc29mdGZwX2V4Y2x1ZGVfbGliZ2Nj MiA6PSBuCiBzb2Z0ZnBfZXh0cmFzICs9IGZpeGhmdGkgZml4dW5zaGZ0aSBmbG9hdHRpaGYg ZmxvYXR1bnRpaGYgXAotCQkgZmxvYXRkaWJmIGZsb2F0dW5kaWJmIGZsb2F0dGliZiBmbG9h dHVudGliZgorCQkgZmxvYXRkaWJmIGZsb2F0dW5kaWJmIGZsb2F0dGliZiBmbG9hdHVudGli ZiBcCisJCSBmbG9hdGJpdGludGhmIGZsb2F0Yml0aW50YmYgZmxvYXRiaXRpbnR0ZiBmaXh0 ZmJpdGludAogCiBUQVJHRVRfTElCR0NDMl9DRkxBR1MgKz0gLVduby1taXNzaW5nLXByb3Rv dHlwZXMKIAo= --------------C8noRyI9zUqF4eH2UC1uYFWk--