From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o97.zoho.com (sender4-pp-o97.zoho.com [136.143.188.97]) by sourceware.org (Postfix) with ESMTPS id E621A385B530; Thu, 30 Nov 2023 22:16:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E621A385B530 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=zoho.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=zoho.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E621A385B530 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=136.143.188.97 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1701382616; cv=pass; b=m9Clb/BZKvI0f5NhZHba0941FowVIZX0U+9mLNNIvnFYYzLI8f+A+Pl16fi77/Ms2tVmnKIfw6GUpvJXQUDGjpFa/Skj4NWLIcgsNMLcAs+cCrvFbfmCSy3rasXGDnXWWP3/3TbLzjAhSkGLubF7ejZ2CQI5QOYkwhiD12rdrBw= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1701382616; c=relaxed/simple; bh=7lBtTjGN5LAj5PstDTUimoFO30eMrbLIXkg3Md8uQtE=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=n9RsMq2xQxRSANDNoiNzCHYh3nkp30haucBikxrG13oe6XfyTo/jkg3Ir80VoWXU30+L9LQmEA6psuoCRvp46pEendqv2f4Ai70JB+rGnmTBGVhUl6l4WUPrLbKuJAPb/dZSuRKJVA3yxjLAHToK0eWk9rRmlY2wzCBstJr9ztQ= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1701382604; cv=none; d=zohomail.com; s=zohoarc; b=US4SixKZRtf0WXET4Pnw0pu4HNOIiSa+W7xQtVJr1uMm5MCkkPrV0heWehQsbFWh3ykKmBXl0b8h7wXADCw659r+yTrsub8y64D1v2bdNYG4Wg1T99VE5P0L4HpNSpOLRiT94T5fyC/2pYg2se3oJe7x//nkZen1gtRP7k73XfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1701382604; h=Content-Type:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=tRwAnod20KzmNaYIqfMxP0DAeGYxu9WKSq42fmxqjmY=; b=QkiGJhIl7zJubvwLwahn1R/b11o3A5d9z8RPEou8jbf9TrosnD/wHSsuwlstfu34hTDLYryIbBUtGsosRVYMfT72oW6DCHlttLeCHuYIZf8DjAMnxv2c/600s0DDQw+nPq7dK7cdrL1AjLtUNYxzZcGNq5uh/ohseMZwoFbfUz0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1701382604; s=zm2022; d=zoho.com; i=bouanto@zoho.com; h=Message-ID:Subject:Subject:From:From:To:To:Date:Date:In-Reply-To:References:Content-Type:MIME-Version:Feedback-ID:Message-Id:Reply-To:Cc; bh=tRwAnod20KzmNaYIqfMxP0DAeGYxu9WKSq42fmxqjmY=; b=UP2W3n4Z1ZBlK3NMSRoC2mmZyOW8NkQsWP0mU7Y2aUNeEnT4xsRW/CkYWbyh8lb2 w68745AmZD+64LioAjjGNyPJkGvh+O4VkF3ZdsmeoK6uaO5SOdleFCFGVK2XxHSWzlG L8ceLw5+fsuNU6FOgsYYtR8C2W6p/Jmc+Vl8c08A= Received: from [192.168.1.172] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1701382603373905.7851471635806; Thu, 30 Nov 2023 14:16:43 -0800 (PST) Message-ID: Subject: Re: [PATCH] libgccjit: Add vector permutation and vector access operations From: Antoni Boucher To: David Malcolm , jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Date: Thu, 30 Nov 2023 17:16:42 -0500 In-Reply-To: <9db455400eafdfc0ed204d5949840978174380cb.camel@redhat.com> References: <9db455400eafdfc0ed204d5949840978174380cb.camel@redhat.com> Autocrypt: addr=bouanto@zoho.com; prefer-encrypt=mutual; keydata=mQENBFOSMLQBCADO5aw6Ys8thMQUNzrwAnfJX2wbgWiz0pQ01DjYj22eeIpChkoZn6LWdt4dieq30u2rFi/yQzJ02foHwI2+aL9rU6xz/x4TwqyRJQGMOqklNc3R+pdXmH4WDQkQDWmLxvc07vu+zb8Tx5A6pMDh4J2ncCEhLEUcH39Yq/yg4eBnFwUX6N7kakvHrnScGNqhnSFCacoJeMJUAR+1G7VBSBd++jmnHLnx3mj7QkRZVECJUw2zqiv1yReCC6GU4SvqLjdqm5ZGeoWOqD/NHjBRoEeOVjzp6M/qOjjWRbkJVqmvgfcD8UytSSqqboR35YFT4L+rZt2ri3T12MJb3i5syCAXABEBAAG0IUFudG9uaSBCb3VjaGVyIDxib3VhbnRvQHpvaG8uY29tPokBVgQTAQgAQAIbIwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAFiEEOELC4Uw1Jeb66YE6RVeGAwR4zcEFAlz4QM4FCRLMEZoACgkQRVeGAwR4zcFBQQf/afttJrA/puADQZhrDfkgr0MFvq6iB+GCy1b8BkXimk1TOXTPt87YLehSeijNu3JkYhl5eRc87BNfU9J87KfI/KIy6hZxqlDXk16FhW9bw/7wYEA0hpb3MUn7xLElXDT0ZHaD+KTe8Oun7qfzgx5RlL6r/WODf3CkSpO085R/rfeBqDEx9mVlhDWgq6Az3CZoD+3CqiCKVqmDuHTWz4kwrd9AM5eVcLvvLKnZIdoIp+G5Ao6BvaGlZyfenN1iOSjLy2NXNt4MnUt0lUYEP5KSIIRhHQ8xkUbj7eWUmaahkxhNb3fH3sAPwGnRZrPpb4rgYzNmSk63wWMh9M2xk+rLb7kBDQRTkjC0AQgAumZzsAV/UFWI+dpzebQfma36kKYZZFuseant5sq/HWP553XQ/U6ttJiKyN5MpCqtxvCAoRplf42YhlHuFqgf73WJxoJ6Y+sdyqoBSwlR+ gzAneAmsa8gmmY0wawH0Z2leazjKuS7mJjVEQZg0ZGsiCVRGeRnDqFGzDEzDc9ngWKSoTq0fKzlGy1X85OrtmUrvEbhSo6HP+FoeunHkIqrxu3w3vDoFEXxVQlKI6V3I4nCz5n6DB8WR3L7nsiiTnOiGirPw1ngvWFLW86kkA4FJpayc8Xl3va3SLY+2y4yuROboX2DVI4AC/Qeug/mDiBicPxkP6YfUartQRMe6obkEQARAQABiQE8BBgBCAAmAhsMFiEEOELC4Uw1Jeb66YE6RVeGAwR4zcEFAlz4QRsFCRLMEecACgkQRVeGAwR4zcE56ggAgTgrJInBKC+7552Dpccuo6Clh3wZfjlNLv9/6r5lKEbaNzaTrfhPiAP4WgnluIUmj8amOFLFJpj+BAVNOXpZ4D2R3o9ch8z7fot+fW4Yw+PKIxH4I2xEys8ndoEB3aiQwHjKcGIhkIU7uyMJFQr2aWjdTY0gmXw0YZueHOSLgo7uX4XKxB8fEO/yto/Tff2YBAAq+AtNwt+Gh5YS9rZw7rwUTWMi84yVOlc+zRE79E9NJkvdTwX7IJYo64VzIRNfgHsn7QNdVzuM1XIFHl+Glk6cIlI8s6BO7nEoCn3hTF104fQTAO3fEs+XXZOKXo2lk8faowEoPq5r58StrV0nyg== Content-Type: multipart/mixed; boundary="=-4sTlywpEi9ovQrbQ7Mq8" User-Agent: Evolution 3.50.1 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-Zoho-AV-Stamp: zmail-av-1.1.0/201.339.82 Feedback-ID: rr08011228fec237734c8baff9395c9e120000c9c6df134b3e911540bbe8b00fdc4d6f39a44ac41d59fde7635d:zu0801122603243d9d0e8e3849ad32378e00007fafd6d4198352ebb53f8fc33cf28f046168873c00561f6c:rf080112319cabf75b55a11ccbbbec66d60000051f09f5b3c4f9fe06af2eb1a971aad0b76fa419c18f5d4a48241b00d3c0c91833ea8d:ZohoMail X-ZohoMailClient: External X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_SHORT,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: --=-4sTlywpEi9ovQrbQ7Mq8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 QWxsIG9mIHRoZXNlIGFyZSBmaXhlZCBpbiB0aGlzIG5ldyBwYXRjaC4KVGhhbmtzIGZvciB0aGUg cmV2aWV3LgoKT24gTW9uLCAyMDIzLTExLTIwIGF0IDE4OjA1IC0wNTAwLCBEYXZpZCBNYWxjb2xt IHdyb3RlOgo+IE9uIEZyaSwgMjAyMy0xMS0xNyBhdCAxNzozNiAtMDUwMCwgQW50b25pIEJvdWNo ZXIgd3JvdGU6Cj4gPiBIaS4KPiA+IFRoaXMgcGF0Y2ggYWRkcyBhIHZlY3RvciBwZXJtdXRhdGlv biBhbmQgdmVjdG9yIGFjY2VzcyBvcGVyYXRpb25zCj4gPiAoYnVnCj4gPiAxMTI2MDIpLgo+ID4g Cj4gPiBUaGlzIHdhcyBzcGxpdCBmcm9tIHRoaXMgcGF0Y2g6Cj4gPiBodHRwczovL2djYy5nbnUu b3JnL3BpcGVybWFpbC9qaXQvMjAyM3ExLzAwMTYwNi5odG1sCj4gPiAKPiAKPiBUaGFua3MgZm9y IHRoZSBwYXRjaC4KPiAKPiBPdmVyYWxsLCBsb29rcyBnb29kLCBidXQgMyBtaW5vciBuaXRwaWNr czoKPiAKPiBbLi4uc25pcC4uLl0KPiAKPiA+IGRpZmYgLS1naXQgYS9nY2Mvaml0L2RvY3MvdG9w aWNzL2NvbXBhdGliaWxpdHkucnN0Cj4gPiBiL2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJp bGl0eS5yc3QKPiA+IGluZGV4IGViZWRlNDQwZWU0Li5hNzY0ZTM5NjhkMSAxMDA2NDQKPiA+IC0t LSBhL2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QKPiA+ICsrKyBiL2djYy9q aXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QKPiA+IEBAIC0zNzgsMyArMzc4LDEzIEBA IGFsaWdubWVudCBvZiBhIHZhcmlhYmxlOgo+ID4gwqAtLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4g wqBgYExJQkdDQ0pJVF9BQklfMjVgYCBjb3ZlcnMgdGhlIGFkZGl0aW9uIG9mCj4gPiDCoDpmdW5j OmBnY2Nfaml0X3R5cGVfZ2V0X3Jlc3RyaWN0YAo+ID4gKwo+ID4gKwo+ID4gKy4uIF9MSUJHQ0NK SVRfQUJJXzI2Ogo+ID4gKwo+ID4gK2BgTElCR0NDSklUX0FCSV8yNmBgCj4gPiArLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiA+ICtgYExJQkdDQ0pJVF9BQklfMjZgYCBjb3ZlcnMgdGhlIGFkZGl0aW9u IG9mIGZ1bmN0aW9ucyB0bwo+ID4gbWFuaXB1bGF0ZSB2ZWN0b3JzOgo+ID4gKwo+ID4gK8KgICog OmZ1bmM6YGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX3ZlY3Rvcl9wZXJtYAo+ID4gK8KgICog OmZ1bmM6YGdjY19qaXRfY29udGV4dF9uZXdfdmVjdG9yX2FjY2Vzc2AKPiA+IGRpZmYgLS1naXQg YS9nY2Mvaml0L2RvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdAo+ID4gYi9nY2Mvaml0L2RvY3Mv dG9waWNzL2V4cHJlc3Npb25zLnJzdAo+ID4gaW5kZXggNDJjZmVlMzYzMDIuLjRhNDVhYTEzZjVj IDEwMDY0NAo+ID4gLS0tIGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QKPiA+ ICsrKyBiL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0Cj4gPiBAQCAtMjk1LDYg KzI5NSwzNSBAQCBWZWN0b3IgZXhwcmVzc2lvbnMKPiA+IMKgCj4gPiDCoMKgwqDCoMKgwqAgI2lm ZGVmIExJQkdDQ0pJVF9IQVZFX2djY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fdmVjdG9y Cj4gPiDCoAo+ID4gKy4uIGZ1bmN0aW9uOjogZ2NjX2ppdF9ydmFsdWUgKiBcCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfdmVjdG9yX3Bl cm0KPiA+IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiBnY2Nfaml0X2xvY2F0aW9uICpsb2Ms IFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Cj4gPiBnY2Nfaml0X3J2YWx1ZSAqZWxlbWVudHMxLCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gZ2NjX2ppdF9ydmFsdWUgKmVsZW1l bnRzMiwgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAKPiA+IGdjY19qaXRfcnZhbHVlICptYXNrKTsKPiA+ICsKPiA+ICvCoMKgIEJ1aWxkIGEg cGVybXV0YXRpb24gb2YgdHdvIHZlY3RvcnMuCj4gPiArCj4gPiArwqDCoCAiZWxlbWVudHMxIiBh bmQgImVsZW1lbnRzMiIgc2hvdWxkIGhhdmUgdGhlIHNhbWUgdHlwZS4KPiA+ICvCoMKgIFRoZSBs ZW5ndGggb2YgIm1hc2siIGFuZCAiZWxlbWVudHMxIiBzaG91bGQgYmUgdGhlIHNhbWUuCj4gPiAr wqDCoCBUaGUgZWxlbWVudCB0eXBlIG9mICJtYXNrIiBzaG91bGQgYmUgaW50ZWdyYWwuCj4gPiAr wqDCoCBUaGUgc2l6ZSBvZiB0aGUgZWxlbWVudCB0eXBlIG9mICJtYXNrIiBhbmQgImVsZW1lbnRz MSIgc2hvdWxkCj4gPiBiZSB0aGUgc2FtZS4KPiA+ICsKPiA+ICvCoMKgIFRoaXMgZW50cnlwb2lu dCB3YXMgYWRkZWQgaW4gOnJlZjpgTElCR0NDSklUX0FCSV8yNWA7IHlvdSBjYW4KPiA+IHRlc3Qg Zm9yCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IF5eCj4gU2hvdWxkIGJlIDI2Cj4gCj4gWy4uLnNuaXAuLi5dCj4gCj4gPiDCoFVuYXJ5IE9wZXJh dGlvbnMKPiA+IMKgKioqKioqKioqKioqKioqKgo+ID4gwqAKPiA+IEBAIC0xMDIwLDMgKzEwNDks MjcgQEAgRmllbGQgYWNjZXNzIGlzIHByb3ZpZGVkIHNlcGFyYXRlbHkgZm9yIGJvdGgKPiA+IGx2 YWx1ZXMgYW5kIHJ2YWx1ZXMuCj4gPiDCoMKgwqDCoMKgwqAgUFRSW0lOREVYXQo+ID4gwqAKPiA+ IMKgwqDCoCBpbiBDIChvciwgaW5kZWVkLCB0byBgYFBUUiArIElOREVYYGApLgo+ID4gKwo+ID4g Ky4uIGZ1bmN0aW9uOjogZ2NjX2ppdF9sdmFsdWUgKlwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBnY2Nfaml0X2NvbnRleHRfbmV3X3ZlY3Rvcl9hY2Nlc3MgKGdjY19qaXRfY29udGV4 dAo+ID4gKmN0eHQsXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBnY2Nfaml0X2xvY2F0aW9uCj4gPiAqbG9jLFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2NjX2ppdF9ydmFsdWUKPiA+ICp2ZWN0b3IsXAo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnY2Nfaml0X3J2YWx1ZQo+ID4gKmlu ZGV4KQo+ID4gKwo+ID4gK8KgwqAgR2l2ZW4gYW4gcnZhbHVlIG9mIHZlY3RvciB0eXBlIGBgVCBf X2F0dHJpYnV0ZV9fCj4gPiAoKF9fdmVjdG9yX3NpemVfXyAoU0laRSkpKWBgLCBnZXQgdGhlIGVs ZW1lbnQgYFRgIGF0Cj4gPiArwqDCoCB0aGUgZ2l2ZW4gaW5kZXguCj4gPiArCj4gPiArwqDCoCBU aGlzIGVudHJ5cG9pbnQgd2FzIGFkZGVkIGluIDpyZWY6YExJQkdDQ0pJVF9BQklfMjVgOyB5b3Ug Y2FuCj4gPiB0ZXN0IGZvcgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBeXgo+IAo+IExpa2V3aXNlIGhlcmUuCj4gCj4gWy4uLnNuaXAuLi5dCj4g Cj4gPiBAQCAtNDA3MSw2ICs0MTA3LDc5IEBAIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zy b21fdmVjdG9yCj4gPiAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAo+ID4gwqDCoMKgwqDCoCAoZ2Nj OjpqaXQ6OnJlY29yZGluZzo6cnZhbHVlICoqKWVsZW1lbnRzKTsKPiA+IMKgfQo+ID4gwqAKPiA+ ICsvKiBQdWJsaWMgZW50cnlwb2ludC7CoCBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0Lmgu Cj4gPiArCj4gPiArwqDCoCBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJlYWwgd29yayBpcyBk b25lIGJ5IHRoZQo+ID4gK8KgwqAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6Y29udGV4dDo6bmV3X3J2 YWx1ZV92ZWN0b3JfcGVybSBtZXRob2QsIGluCj4gPiArwqDCoCBqaXQtcmVjb3JkaW5nLmNjLsKg ICovCj4gPiArCj4gPiArZ2NjX2ppdF9ydmFsdWUgKgo+ID4gK2djY19qaXRfY29udGV4dF9uZXdf cnZhbHVlX3ZlY3Rvcl9wZXJtIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsCj4gPiArCQkJCQlnY2Nf aml0X2xvY2F0aW9uICpsb2MsCj4gPiArCQkJCQlnY2Nfaml0X3J2YWx1ZSAqZWxlbWVudHMxLAo+ ID4gKwkJCQkJZ2NjX2ppdF9ydmFsdWUgKmVsZW1lbnRzMiwKPiA+ICsJCQkJCWdjY19qaXRfcnZh bHVlICptYXNrKQo+ID4gK3sKPiA+ICvCoCBSRVRVUk5fTlVMTF9JRl9GQUlMIChjdHh0LCBOVUxM LCBsb2MsICJOVUxMIGN0eHQiKTsKPiA+ICvCoCBKSVRfTE9HX0ZVTkMgKGN0eHQtPmdldF9sb2dn ZXIgKCkpOwo+ID4gKwo+ID4gK8KgIC8qIExPQyBjYW4gYmUgTlVMTC7CoCAqLwo+IAo+IC4uLmJ1 dCAiZWxlbWVudHMxIiwgImVsZW1lbnRzMiIsIGFuZCAibWFzayIgbXVzdCBub3QgYmUgTlVMTCwg YXMKPiB0aGV5J3JlIGRlcmVmZXJlbmNlZCBiZWxvdy7CoCBTbyB0aGlzIGlzIGdvaW5nIHRvIG5l ZWQgc29tZXRoaW5nIGxpa2UKPiB0aGUgZm9sbG93aW5nICh1bnRlc3RlZCk6Cj4gCj4gwqAgUkVU VVJOX05VTExfSUZfRkFJTCAoZWxlbWVudHMxLCBjdHh0LCBsb2MsICJOVUxMIGVsZW1lbnRzMSIp Owo+IMKgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKGVsZW1lbnRzMiwgY3R4dCwgbG9jLCAiTlVMTCBl bGVtZW50czIiKTsKPiDCoCBSRVRVUk5fTlVMTF9JRl9GQUlMIChtYXNrLCBjdHh0LCBsb2MsICJO VUxMIG1hc2siKTsKPiAKPiBbLi4uc25pcC4uLl0KPiAKPiBPSyB3aXRoIHRob3NlIGZpeGVkLgo+ IAo+IFRoYW5rcwo+IERhdmUKPiAKCg== --=-4sTlywpEi9ovQrbQ7Mq8 Content-Disposition: attachment; filename*0=0001-libgccjit-Add-vector-permutation-and-vector-access-o.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-libgccjit-Add-vector-permutation-and-vector-access-o.patch"; charset="UTF-8" RnJvbSAyZmNjZGVhYzY4NDY0ZWU0MmE0NmExNzYwN2NkODVjYWMwMzg0OTAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogRnJpLCAxNyBOb3YgMjAyMyAxNzoyMzoyOCAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIGxpYmdj Y2ppdDogQWRkIHZlY3RvciBwZXJtdXRhdGlvbiBhbmQgdmVjdG9yIGFjY2Vzcwogb3BlcmF0aW9u cwoKZ2NjL2ppdC9DaGFuZ2VMb2c6CglQUiBqaXQvMTEyNjAyCgkqIGRvY3MvdG9waWNzL2NvbXBh dGliaWxpdHkucnN0IChMSUJHQ0NKSVRfQUJJXzI2KTogTmV3IEFCSSB0YWcuCgkqIGRvY3MvdG9w aWNzL2V4cHJlc3Npb25zLnJzdDogRG9jdW1lbnQKCWdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X3ZlY3Rvcl9wZXJtIGFuZAoJZ2NjX2ppdF9jb250ZXh0X25ld192ZWN0b3JfYWNjZXNzLgoJKiBq aXQtcGxheWJhY2suY2MgKHBsYXliYWNrOjpjb250ZXh0OjpuZXdfcnZhbHVlX3ZlY3Rvcl9wZXJt LAoJY29tbW9uX21hcmtfYWRkcmVzc2FibGVfdmVjLAoJZ251X3ZlY3Rvcl90eXBlX3AsCglsdmFs dWVfcCwKCWNvbnZlcnRfdmVjdG9yX3RvX2FycmF5X2Zvcl9zdWJzY3JpcHQsCgluZXdfdmVjdG9y X2FjY2Vzcyk6IG5ldyBmdW5jdGlvbnMuCgkqIGppdC1wbGF5YmFjay5oIChuZXdfcnZhbHVlX3Zl Y3Rvcl9wZXJtLCBuZXdfdmVjdG9yX2FjY2Vzcyk6CglOZXcgZnVuY3Rpb25zLgoJKiBqaXQtcmVj b3JkaW5nLmNjIChyZWNvcmRpbmc6OmNvbnRleHQ6Om5ld19ydmFsdWVfdmVjdG9yX3Blcm0sCgly ZWNvcmRpbmc6OmNvbnRleHQ6Om5ld192ZWN0b3JfYWNjZXNzLAoJbWVtZW50b19vZl9uZXdfcnZh bHVlX3ZlY3Rvcl9wZXJtLAoJcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfdmVjdG9y X3Blcm06OnJlcGxheV9pbnRvLAoJcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfdmVj dG9yX3Blcm06OnZpc2l0X2NoaWxkcmVuLAoJcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFs dWVfdmVjdG9yX3Blcm06Om1ha2VfZGVidWdfc3RyaW5nLAoJcmVjb3JkaW5nOjptZW1lbnRvX29m X25ld19ydmFsdWVfdmVjdG9yX3Blcm06OndyaXRlX3JlcHJvZHVjZXIsCglyZWNvcmRpbmc6OnZl Y3Rvcl9hY2Nlc3M6OnJlcGxheV9pbnRvLAoJcmVjb3JkaW5nOjp2ZWN0b3JfYWNjZXNzOjp2aXNp dF9jaGlsZHJlbiwKCXJlY29yZGluZzo6dmVjdG9yX2FjY2Vzczo6bWFrZV9kZWJ1Z19zdHJpbmcs CglyZWNvcmRpbmc6OnZlY3Rvcl9hY2Nlc3M6OndyaXRlX3JlcHJvZHVjZXIpOiBOZXcgbWV0aG9k cy4KCSogaml0LXJlY29yZGluZy5oIChjbGFzcyBtZW1lbnRvX29mX25ld19ydmFsdWVfdmVjdG9y X3Blcm0sCgljbGFzcyB2ZWN0b3JfYWNjZXNzKTogTmV3IGNsYXNzZXMuCgkqIGxpYmdjY2ppdC5j YyAoZ2NjX2ppdF9jb250ZXh0X25ld192ZWN0b3JfYWNjZXNzLAoJZ2NjX2ppdF9jb250ZXh0X25l d19ydmFsdWVfdmVjdG9yX3Blcm0pOiBOZXcgZnVuY3Rpb25zLgoJKiBsaWJnY2NqaXQuaCAoZ2Nj X2ppdF9jb250ZXh0X25ld19ydmFsdWVfdmVjdG9yX3Blcm0sCglnY2Nfaml0X2NvbnRleHRfbmV3 X3ZlY3Rvcl9hY2Nlc3MpOiBOZXcgZnVuY3Rpb25zLgoJKiBsaWJnY2NqaXQubWFwOiBOZXcgZnVu Y3Rpb25zLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CglQUiBqaXQvMTEyNjAyCgkqIGppdC5k Zy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaDogTmV3IHRlc3QgdGVzdC12ZWN0b3ItcGVybS5jLgoJ KiBqaXQuZGcvdGVzdC12ZWN0b3ItcGVybS5jOiBOZXcgdGVzdC4KLS0tCiBnY2Mvaml0L2RvY3Mv dG9waWNzL2NvbXBhdGliaWxpdHkucnN0ICAgICAgICB8ICAxMCArKwogZ2NjL2ppdC9kb2NzL3Rv cGljcy9leHByZXNzaW9ucy5yc3QgICAgICAgICAgfCAgNTMgKysrKysrCiBnY2Mvaml0L2ppdC1w bGF5YmFjay5jYyAgICAgICAgICAgICAgICAgICAgICB8IDE1MCArKysrKysrKysrKysrKysrCiBn Y2Mvaml0L2ppdC1wbGF5YmFjay5oICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArKwogZ2Nj L2ppdC9qaXQtcmVjb3JkaW5nLmNjICAgICAgICAgICAgICAgICAgICAgfCAxNjkgKysrKysrKysr KysrKysrKysrKwogZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmggICAgICAgICAgICAgICAgICAgICAg fCAgNzIgKysrKysrKysKIGdjYy9qaXQvbGliZ2Njaml0LmNjICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMTEyICsrKysrKysrKysrKwogZ2NjL2ppdC9saWJnY2NqaXQuaCAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMjkgKysrKwogZ2NjL2ppdC9saWJnY2NqaXQubWFwICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDYgKwogZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5n LXRlc3RzLmggfCAgMTIgKy0KIGdjYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtdmVjdG9yLXBlcm0u YyAgICAgIHwgIDk2ICsrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA3MTkgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvaml0 LmRnL3Rlc3QtdmVjdG9yLXBlcm0uYwoKZGlmZiAtLWdpdCBhL2djYy9qaXQvZG9jcy90b3BpY3Mv Y29tcGF0aWJpbGl0eS5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0 CmluZGV4IGViZWRlNDQwZWU0Li5hNzY0ZTM5NjhkMSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2Nz L3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdAorKysgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBh dGliaWxpdHkucnN0CkBAIC0zNzgsMyArMzc4LDEzIEBAIGFsaWdubWVudCBvZiBhIHZhcmlhYmxl OgogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGBgTElCR0NDSklUX0FCSV8yNWBgIGNvdmVycyB0aGUg YWRkaXRpb24gb2YKIDpmdW5jOmBnY2Nfaml0X3R5cGVfZ2V0X3Jlc3RyaWN0YAorCisKKy4uIF9M SUJHQ0NKSVRfQUJJXzI2OgorCitgYExJQkdDQ0pJVF9BQklfMjZgYAorLS0tLS0tLS0tLS0tLS0t LS0tLS0KK2BgTElCR0NDSklUX0FCSV8yNmBgIGNvdmVycyB0aGUgYWRkaXRpb24gb2YgZnVuY3Rp b25zIHRvIG1hbmlwdWxhdGUgdmVjdG9yczoKKworICAqIDpmdW5jOmBnY2Nfaml0X2NvbnRleHRf bmV3X3J2YWx1ZV92ZWN0b3JfcGVybWAKKyAgKiA6ZnVuYzpgZ2NjX2ppdF9jb250ZXh0X25ld192 ZWN0b3JfYWNjZXNzYApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9u cy5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdAppbmRleCA0MmNmZWUz NjMwMi4uZjlkZDRkNTZiYWIgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVz c2lvbnMucnN0CisrKyBiL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0CkBAIC0y OTUsNiArMjk1LDM1IEBAIFZlY3RvciBleHByZXNzaW9ucwogCiAgICAgICAjaWZkZWYgTElCR0ND SklUX0hBVkVfZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV92ZWN0b3IKIAorLi4gZnVu Y3Rpb246OiBnY2Nfaml0X3J2YWx1ZSAqIFwKKyAgICAgICAgICAgICAgZ2NjX2ppdF9jb250ZXh0 X25ld19ydmFsdWVfdmVjdG9yX3Blcm0gKGdjY19qaXRfY29udGV4dCAqY3R4dCwgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjX2ppdF9s b2NhdGlvbiAqbG9jLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnY2Nfaml0X3J2YWx1ZSAqZWxlbWVudHMxLCBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nfaml0X3J2YWx1ZSAq ZWxlbWVudHMyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnY2Nfaml0X3J2YWx1ZSAqbWFzayk7CisKKyAgIEJ1aWxkIGEgcGVybXV0YXRp b24gb2YgdHdvIHZlY3RvcnMuCisKKyAgICJlbGVtZW50czEiIGFuZCAiZWxlbWVudHMyIiBzaG91 bGQgaGF2ZSB0aGUgc2FtZSB0eXBlLgorICAgVGhlIGxlbmd0aCBvZiAibWFzayIgYW5kICJlbGVt ZW50czEiIHNob3VsZCBiZSB0aGUgc2FtZS4KKyAgIFRoZSBlbGVtZW50IHR5cGUgb2YgIm1hc2si IHNob3VsZCBiZSBpbnRlZ3JhbC4KKyAgIFRoZSBzaXplIG9mIHRoZSBlbGVtZW50IHR5cGUgb2Yg Im1hc2siIGFuZCAiZWxlbWVudHMxIiBzaG91bGQgYmUgdGhlIHNhbWUuCisKKyAgIFRoaXMgZW50 cnlwb2ludCB3YXMgYWRkZWQgaW4gOnJlZjpgTElCR0NDSklUX0FCSV8yNmA7IHlvdSBjYW4gdGVz dCBmb3IKKyAgIGl0cyBwcmVzZW5jZSB1c2luZworCisgICAuLiBjb2RlLWJsb2NrOjogYworCisg ICAgICAjaWZkZWYgTElCR0NDSklUX0hBVkVfVkVDVE9SX09QRVJBVElPTlMKKworICAgIEFuYWxv Z291cyB0bzoKKworICAgIC4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICAgICBfX2J1aWx0aW5fc2h1 ZmZsZSAoZWxlbWVudHMxLCBlbGVtZW50czIsIG1hc2spCisKKyAgICBpbiBDLgorCiBVbmFyeSBP cGVyYXRpb25zCiAqKioqKioqKioqKioqKioqCiAKQEAgLTEwMjAsMyArMTA0OSwyNyBAQCBGaWVs ZCBhY2Nlc3MgaXMgcHJvdmlkZWQgc2VwYXJhdGVseSBmb3IgYm90aCBsdmFsdWVzIGFuZCBydmFs dWVzLgogICAgICAgUFRSW0lOREVYXQogCiAgICBpbiBDIChvciwgaW5kZWVkLCB0byBgYFBUUiAr IElOREVYYGApLgorCisuLiBmdW5jdGlvbjo6IGdjY19qaXRfbHZhbHVlICpcCisgICAgICAgICAg ICAgIGdjY19qaXRfY29udGV4dF9uZXdfdmVjdG9yX2FjY2VzcyAoZ2NjX2ppdF9jb250ZXh0ICpj dHh0LFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Y2Nfaml0X2xvY2F0aW9uICpsb2MsXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICp2ZWN0b3IsXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICppbmRleCkK KworICAgR2l2ZW4gYW4gcnZhbHVlIG9mIHZlY3RvciB0eXBlIGBgVCBfX2F0dHJpYnV0ZV9fICgo X192ZWN0b3Jfc2l6ZV9fIChTSVpFKSkpYGAsIGdldCB0aGUgZWxlbWVudCBgVGAgYXQKKyAgIHRo ZSBnaXZlbiBpbmRleC4KKworICAgVGhpcyBlbnRyeXBvaW50IHdhcyBhZGRlZCBpbiA6cmVmOmBM SUJHQ0NKSVRfQUJJXzI2YDsgeW91IGNhbiB0ZXN0IGZvcgorICAgaXRzIHByZXNlbmNlIHVzaW5n CisKKyAgIC4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9W RUNUT1JfT1BFUkFUSU9OUworCisgICBBbmFsb2dvdXMgdG86CisKKyAgIC4uIGNvZGUtYmxvY2s6 OiBjCisKKyAgICAgIFZFQ1RPUltJTkRFWF0KKworICAgaW4gQy4KZGlmZiAtLWdpdCBhL2djYy9q aXQvaml0LXBsYXliYWNrLmNjIGIvZ2NjL2ppdC9qaXQtcGxheWJhY2suY2MKaW5kZXggMThjYzRk YTI1YjguLjFhYmEwZmI0YTI4IDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1wbGF5YmFjay5jYwor KysgYi9nY2Mvaml0L2ppdC1wbGF5YmFjay5jYwpAQCAtMTAxMSw2ICsxMDExLDI2IEBAIHBsYXli YWNrOjpjb250ZXh0OjpuZXdfcnZhbHVlX2Zyb21fdmVjdG9yIChsb2NhdGlvbiAqLAogICByZXR1 cm4gbmV3IHJ2YWx1ZSAodGhpcywgdF9jdG9yKTsKIH0KIAorLyogQ29uc3RydWN0IGEgcGxheWJh Y2s6OnJ2YWx1ZSBpbnN0YW5jZSAod3JhcHBpbmcgYSB0cmVlKSBmb3IgYQorICAgdmVjdG9yIHBl cm0uICAqLworCitwbGF5YmFjazo6cnZhbHVlICoKK3BsYXliYWNrOjpjb250ZXh0OjpuZXdfcnZh bHVlX3ZlY3Rvcl9wZXJtIChsb2NhdGlvbiAqbG9jLAorCQkJCQkgICBydmFsdWUqIGVsZW1lbnRz MSwKKwkJCQkJICAgcnZhbHVlKiBlbGVtZW50czIsCisJCQkJCSAgIHJ2YWx1ZSogbWFzaykKK3sK KyAgdHJlZSB0X2VsZW1lbnRzMSA9IGVsZW1lbnRzMS0+YXNfdHJlZSAoKTsKKyAgdHJlZSB0X2Vs ZW1lbnRzMiA9IGVsZW1lbnRzMi0+YXNfdHJlZSAoKTsKKyAgdHJlZSB0X21hc2sgPSBtYXNrLT5h c190cmVlICgpOworCisgIHRyZWUgdF92ZWN0b3JfcGVybSA9IGJ1aWxkMyAoVkVDX1BFUk1fRVhQ UiwgVFJFRV9UWVBFICh0X2VsZW1lbnRzMSksCisJCQkgICAgICAgdF9lbGVtZW50czEsIHRfZWxl bWVudHMyLCB0X21hc2spOworICBpZiAobG9jKQorICAgIHNldF90cmVlX2xvY2F0aW9uICh0X3Zl Y3Rvcl9wZXJtLCBsb2MpOworICByZXR1cm4gbmV3IHJ2YWx1ZSAodGhpcywgdF92ZWN0b3JfcGVy bSk7Cit9CisKIC8qIENvZXJjZSBhIHRyZWUgZXhwcmVzc2lvbiBpbnRvIGEgYm9vbGVhbiB0cmVl IGV4cHJlc3Npb24uICAqLwogCiB0cmVlCkBAIC0xNTI3LDYgKzE1NDcsMTM2IEBAIG5ld19hcnJh eV9hY2Nlc3MgKGxvY2F0aW9uICpsb2MsCiAgICAgfQogfQogCisvKiBUaGUgZm9sbG93aW5nIGZ1 bmN0aW9ucyBjb21lIGZyb20gYy1jb21tb24uaC4gICovCisvKiBMaWtlIGNfbWFya19hZGRyZXNz YWJsZSBidXQgZG9uJ3QgY2hlY2sgcmVnaXN0ZXIgcXVhbGlmaWVyLiAgKi8KK3ZvaWQKK2NvbW1v bl9tYXJrX2FkZHJlc3NhYmxlX3ZlYyAodHJlZSB0KQoreworICB3aGlsZSAoaGFuZGxlZF9jb21w b25lbnRfcCAodCkgfHwgVFJFRV9DT0RFICh0KSA9PSBDX01BWUJFX0NPTlNUX0VYUFIpCisgICAg eworICAgICAgdCA9IFRSRUVfT1BFUkFORCAodCwgMCk7CisgICAgfQorICBpZiAoIVZBUl9QICh0 KQorICAgICAgJiYgVFJFRV9DT0RFICh0KSAhPSBQQVJNX0RFQ0wKKyAgICAgICYmIFRSRUVfQ09E RSAodCkgIT0gQ09NUE9VTkRfTElURVJBTF9FWFBSCisgICAgICAmJiBUUkVFX0NPREUgKHQpICE9 IFRBUkdFVF9FWFBSKQorICAgIHJldHVybjsKKyAgaWYgKCFWQVJfUCAodCkgfHwgIURFQ0xfSEFS RF9SRUdJU1RFUiAodCkpCisgICAgVFJFRV9BRERSRVNTQUJMRSAodCkgPSAxOworICBpZiAoVFJF RV9DT0RFICh0KSA9PSBDT01QT1VORF9MSVRFUkFMX0VYUFIpCisgICAgVFJFRV9BRERSRVNTQUJM RSAoQ09NUE9VTkRfTElURVJBTF9FWFBSX0RFQ0wgKHQpKSA9IDE7CisgIGVsc2UgaWYgKFRSRUVf Q09ERSAodCkgPT0gVEFSR0VUX0VYUFIpCisgICAgVFJFRV9BRERSRVNTQUJMRSAoVEFSR0VUX0VY UFJfU0xPVCAodCkpID0gMTsKK30KKworLyogUmV0dXJuIHRydWUgaWYgVFlQRSBpcyBhIHZlY3Rv ciB0eXBlIHRoYXQgc2hvdWxkIGJlIHN1YmplY3QgdG8gdGhlIEdOVQorICAgdmVjdG9yIGV4dGVu c2lvbnMgKGFzIG9wcG9zZWQgdG8gYSB2ZWN0b3IgdHlwZSB0aGF0IGlzIHVzZWQgb25seSBmb3IK KyAgIHRoZSBwdXJwb3NlcyBvZiBkZWZpbmluZyB0YXJnZXQtc3BlY2lmaWMgYnVpbHQtaW4gZnVu Y3Rpb25zKS4gICovCisKK2lubGluZSBib29sCitnbnVfdmVjdG9yX3R5cGVfcCAoY29uc3RfdHJl ZSB0eXBlKQoreworICByZXR1cm4gVFJFRV9DT0RFICh0eXBlKSA9PSBWRUNUT1JfVFlQRSAmJiAh VFlQRV9JTkRJVklTSUJMRV9QICh0eXBlKTsKK30KKworLyogUmV0dXJuIG5vbnplcm8gaWYgUkVG IGlzIGFuIGx2YWx1ZSB2YWxpZCBmb3IgdGhpcyBsYW5ndWFnZS4KKyAgIEx2YWx1ZXMgY2FuIGJl IGFzc2lnbmVkLCB1bmxlc3MgdGhlaXIgdHlwZSBoYXMgVFlQRV9SRUFET05MWS4KKyAgIEx2YWx1 ZXMgY2FuIGhhdmUgdGhlaXIgYWRkcmVzcyB0YWtlbiwgdW5sZXNzIHRoZXkgaGF2ZSBDX0RFQ0xf UkVHSVNURVIuICAqLworCitib29sCitsdmFsdWVfcCAoY29uc3RfdHJlZSByZWYpCit7CisgIGNv bnN0IGVudW0gdHJlZV9jb2RlIGNvZGUgPSBUUkVFX0NPREUgKHJlZik7CisKKyAgc3dpdGNoIChj b2RlKQorICAgIHsKKyAgICBjYXNlIFJFQUxQQVJUX0VYUFI6CisgICAgY2FzZSBJTUFHUEFSVF9F WFBSOgorICAgIGNhc2UgQ09NUE9ORU5UX1JFRjoKKyAgICAgIHJldHVybiBsdmFsdWVfcCAoVFJF RV9PUEVSQU5EIChyZWYsIDApKTsKKworICAgIGNhc2UgQ19NQVlCRV9DT05TVF9FWFBSOgorICAg ICAgcmV0dXJuIGx2YWx1ZV9wIChUUkVFX09QRVJBTkQgKHJlZiwgMSkpOworCisgICAgY2FzZSBD T01QT1VORF9MSVRFUkFMX0VYUFI6CisgICAgY2FzZSBTVFJJTkdfQ1NUOgorICAgICAgcmV0dXJu IHRydWU7CisKKyAgICBjYXNlIE1FTV9SRUY6CisgICAgY2FzZSBUQVJHRVRfTUVNX1JFRjoKKyAg ICAgIC8qIE1FTV9SRUZzIGNhbiBhcHBlYXIgZnJvbSAtZmdpbXBsZSBwYXJzaW5nIG9yIGZvbGRp bmcsIHNvIGFsbG93IHRoZW0KKwkgaGVyZSBhcyB3ZWxsLiAgKi8KKyAgICBjYXNlIElORElSRUNU X1JFRjoKKyAgICBjYXNlIEFSUkFZX1JFRjoKKyAgICBjYXNlIFZBUl9ERUNMOgorICAgIGNhc2Ug UEFSTV9ERUNMOgorICAgIGNhc2UgUkVTVUxUX0RFQ0w6CisgICAgY2FzZSBFUlJPUl9NQVJLOgor ICAgICAgcmV0dXJuIChUUkVFX0NPREUgKFRSRUVfVFlQRSAocmVmKSkgIT0gRlVOQ1RJT05fVFlQ RQorCSAgICAgICYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChyZWYpKSAhPSBNRVRIT0RfVFlQRSk7 CisKKyAgICBjYXNlIEJJTkRfRVhQUjoKKyAgICAgIHJldHVybiBUUkVFX0NPREUgKFRSRUVfVFlQ RSAocmVmKSkgPT0gQVJSQVlfVFlQRTsKKworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gZmFs c2U7CisgICAgfQorfQorCitib29sCitjb252ZXJ0X3ZlY3Rvcl90b19hcnJheV9mb3Jfc3Vic2Ny aXB0ICh0cmVlICp2ZWNwKQoreworICBib29sIHJldCA9IGZhbHNlOworICBpZiAoZ251X3ZlY3Rv cl90eXBlX3AgKFRSRUVfVFlQRSAoKnZlY3ApKSkKKyAgICB7CisgICAgICB0cmVlIHR5cGUgPSBU UkVFX1RZUEUgKCp2ZWNwKTsKKworICAgICAgcmV0ID0gIWx2YWx1ZV9wICgqdmVjcCk7CisKKyAg ICAgIC8qIFdlIGFyZSBidWlsZGluZyBhbiBBUlJBWV9SRUYgc28gbWFyayB0aGUgdmVjdG9yIGFz IGFkZHJlc3NhYmxlCisJdG8gbm90IHJ1biBpbnRvIHRoZSBnaW1wbGlmaWVycyBwcmVtYXR1cmUg c2V0dGluZyBvZiBERUNMX0dJTVBMRV9SRUdfUAorCSBmb3IgZnVuY3Rpb24gcGFyYW1ldGVycy4g ICovCisgICAgICAvKiBOT1RFOiB0aGF0IHdhcyB0aGUgbWlzc2luZyBwaWVjZSBmb3IgbWFraW5n IHZlY3RvciBhY2Nlc3Mgd29yayB3aXRoCisJb3B0aW1pemF0aW9ucyBlbmFibGVkLiAgKi8KKyAg ICAgIGNvbW1vbl9tYXJrX2FkZHJlc3NhYmxlX3ZlYyAoKnZlY3ApOworCisgICAgICAqdmVjcCA9 IGJ1aWxkMSAoVklFV19DT05WRVJUX0VYUFIsCisJCSAgICAgIGJ1aWxkX2FycmF5X3R5cGVfbmVs dHMgKFRSRUVfVFlQRSAodHlwZSksCisJCQkJCSAgICAgIFRZUEVfVkVDVE9SX1NVQlBBUlRTICh0 eXBlKSksCisJCSAgICAgICp2ZWNwKTsKKyAgICB9CisgIHJldHVybiByZXQ7Cit9CisKKy8qIENv bnN0cnVjdCBhIHBsYXliYWNrOjpsdmFsdWUgaW5zdGFuY2UgKHdyYXBwaW5nIGEgdHJlZSkgZm9y IGEKKyAgIHZlY3RvciBhY2Nlc3MuICAqLworCitwbGF5YmFjazo6bHZhbHVlICoKK3BsYXliYWNr Ojpjb250ZXh0OjoKK25ld192ZWN0b3JfYWNjZXNzIChsb2NhdGlvbiAqbG9jLAorCQkgICBydmFs dWUgKnZlY3RvciwKKwkJICAgcnZhbHVlICppbmRleCkKK3sKKyAgZ2NjX2Fzc2VydCAodmVjdG9y KTsKKyAgZ2NjX2Fzc2VydCAoaW5kZXgpOworCisgIC8qIEZvciBjb21wYXJpc29uLCBzZWU6Cisg ICAgICAgYy9jLXR5cGVjay5jYzogYnVpbGRfYXJyYXlfcmVmCisgICovCisKKyAgdHJlZSB0X3Zl Y3RvciA9IHZlY3Rvci0+YXNfdHJlZSAoKTsKKyAgYm9vbCBub25fbHZhbHVlID0gY29udmVydF92 ZWN0b3JfdG9fYXJyYXlfZm9yX3N1YnNjcmlwdCAoJnRfdmVjdG9yKTsKKyAgdHJlZSB0eXBlID0g VFJFRV9UWVBFIChUUkVFX1RZUEUgKHRfdmVjdG9yKSk7CisgIHRyZWUgdF9yZXN1bHQgPSBidWls ZDQgKEFSUkFZX1JFRiwgdHlwZSwgdF92ZWN0b3IsIGluZGV4LT5hc190cmVlICgpLAorCQkJICBO VUxMX1RSRUUsIE5VTExfVFJFRSk7CisgIGlmIChub25fbHZhbHVlKQorICAgIHRfcmVzdWx0ID0g bm9uX2x2YWx1ZSAodF9yZXN1bHQpOworCisgIGlmIChsb2MpCisgICAgc2V0X3RyZWVfbG9jYXRp b24gKHRfcmVzdWx0LCBsb2MpOworICByZXR1cm4gbmV3IGx2YWx1ZSAodGhpcywgdF9yZXN1bHQp OworfQorCiAvKiBDb25zdHJ1Y3QgYSB0cmVlIGZvciBhIGZpZWxkIGFjY2Vzcy4gICovCiAKIHRy ZWUKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXBsYXliYWNrLmggYi9nY2Mvaml0L2ppdC1wbGF5 YmFjay5oCmluZGV4IGY5ZTI5ZDBiYWVjLi5hMmQ5OTMzMWRiZSAxMDA2NDQKLS0tIGEvZ2NjL2pp dC9qaXQtcGxheWJhY2suaAorKysgYi9nY2Mvaml0L2ppdC1wbGF5YmFjay5oCkBAIC0xNDcsNiAr MTQ3LDEyIEBAIHB1YmxpYzoKIAkJCSAgdHlwZSAqdHlwZSwKIAkJCSAgY29uc3QgYXV0b192ZWM8 cnZhbHVlICo+ICZlbGVtZW50cyk7CiAKKyAgcnZhbHVlICoKKyAgbmV3X3J2YWx1ZV92ZWN0b3Jf cGVybSAobG9jYXRpb24gKmxvYywKKwkJCSAgcnZhbHVlKiBlbGVtZW50czEsCisJCQkgIHJ2YWx1 ZSogZWxlbWVudHMyLAorCQkJICBydmFsdWUqIG1hc2spOworCiAgIHJ2YWx1ZSAqCiAgIG5ld191 bmFyeV9vcCAobG9jYXRpb24gKmxvYywKIAkJZW51bSBnY2Nfaml0X3VuYXJ5X29wIG9wLApAQCAt MTkxLDYgKzE5NywxMSBAQCBwdWJsaWM6CiAJCSAgICBydmFsdWUgKnB0ciwKIAkJICAgIHJ2YWx1 ZSAqaW5kZXgpOwogCisgIGx2YWx1ZSAqCisgIG5ld192ZWN0b3JfYWNjZXNzIChsb2NhdGlvbiAq bG9jLAorCQkgICAgIHJ2YWx1ZSAqdmVjdG9yLAorCQkgICAgIHJ2YWx1ZSAqaW5kZXgpOworCiAg IHZvaWQKICAgc2V0X3N0cl9vcHRpb24gKGVudW0gZ2NjX2ppdF9zdHJfb3B0aW9uIG9wdCwKIAkJ ICBjb25zdCBjaGFyICp2YWx1ZSk7CmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcu Y2MgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuY2MKaW5kZXggOWI1YjgwMDVlYmUuLmNmMTMxOWVj M2JiIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuY2MKKysrIGIvZ2NjL2ppdC9q aXQtcmVjb3JkaW5nLmNjCkBAIC0xMTA4LDYgKzExMDgsMTkgQEAgcmVjb3JkaW5nOjpjb250ZXh0 OjpuZXdfcnZhbHVlX2Zyb21fdmVjdG9yIChsb2NhdGlvbiAqbG9jLAogICByZXR1cm4gcmVzdWx0 OwogfQogCityZWNvcmRpbmc6OnJ2YWx1ZSAqCityZWNvcmRpbmc6OmNvbnRleHQ6Om5ld19ydmFs dWVfdmVjdG9yX3Blcm0gKGxvY2F0aW9uICpsb2MsCisJCQkgIHJ2YWx1ZSAqZWxlbWVudHMxLAor CQkJICBydmFsdWUgKmVsZW1lbnRzMiwKKwkJCSAgcnZhbHVlICptYXNrKQoreworICByZWNvcmRp bmc6OnJ2YWx1ZSAqcmVzdWx0CisgICAgPSBuZXcgbWVtZW50b19vZl9uZXdfcnZhbHVlX3ZlY3Rv cl9wZXJtICh0aGlzLCBsb2MsIGVsZW1lbnRzMSwgZWxlbWVudHMyLAorCQkJCQkgICAgIG1hc2sp OworICByZWNvcmQgKHJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKIHJlY29yZGluZzo6 cnZhbHVlICoKIHJlY29yZGluZzo6Y29udGV4dDo6bmV3X2N0b3IgKHJlY29yZGluZzo6bG9jYXRp b24gKmxvYywKIAkJCSAgICAgIHJlY29yZGluZzo6dHlwZSAqdHlwZSwKQEAgLTEzMDksNiArMTMy MiwyMiBAQCByZWNvcmRpbmc6OmNvbnRleHQ6Om5ld19hcnJheV9hY2Nlc3MgKHJlY29yZGluZzo6 bG9jYXRpb24gKmxvYywKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogQ3JlYXRlIGEgcmVjb3Jk aW5nOjp2ZWN0b3JfYWNjZXNzIGluc3RhbmNlIGFuZCBhZGQgaXQgdG8gdGhpcyBjb250ZXh0J3Mg bGlzdAorICAgb2YgbWVtZW50b3MuCisKKyAgIEltcGxlbWVudHMgdGhlIHBvc3QtZXJyb3ItY2hl Y2tpbmcgcGFydCBvZgorICAgZ2NjX2ppdF9jb250ZXh0X25ld192ZWN0b3JfYWNjZXNzLiAgKi8K KworcmVjb3JkaW5nOjpsdmFsdWUgKgorcmVjb3JkaW5nOjpjb250ZXh0OjpuZXdfdmVjdG9yX2Fj Y2VzcyAocmVjb3JkaW5nOjpsb2NhdGlvbiAqbG9jLAorCQkJCSAgICAgIHJlY29yZGluZzo6cnZh bHVlICp2ZWN0b3IsCisJCQkJICAgICAgcmVjb3JkaW5nOjpydmFsdWUgKmluZGV4KQoreworICBy ZWNvcmRpbmc6Omx2YWx1ZSAqcmVzdWx0ID0gbmV3IHZlY3Rvcl9hY2Nlc3MgKHRoaXMsIGxvYywg dmVjdG9yLCBpbmRleCk7CisgIHJlY29yZCAocmVzdWx0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30K KwogLyogQ3JlYXRlIGEgcmVjb3JkaW5nOjpjYXNlXyBpbnN0YW5jZSBhbmQgYWRkIGl0IHRvIHRo aXMgY29udGV4dCdzIGxpc3QKICAgIG9mIG1lbWVudG9zLgogCkBAIC01NDM3LDYgKzU0NjYsOTAg QEAgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV92ZWN0b3I6OndyaXRlX3Jl cHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpCiAJICAgZWxlbWVudHNfaWQpOwogfQogCisvKiBUaGUg aW1wbGVtZW50YXRpb24gb2YgY2xhc3MKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6Om1lbWVudG9f b2ZfbmV3X3J2YWx1ZV92ZWN0b3JfcGVybS4gICovCisKKy8qIFRoZSBjb25zdHJ1Y3RvciBmb3IK KyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6Om1lbWVudG9fb2ZfbmV3X3J2YWx1ZV92ZWN0b3JfcGVy bS4gICovCisKK3JlY29yZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX3ZlY3Rvcl9wZXJtOjoK K21lbWVudG9fb2ZfbmV3X3J2YWx1ZV92ZWN0b3JfcGVybSAoY29udGV4dCAqY3R4dCwKKwkJCQkg ICBsb2NhdGlvbiAqbG9jLAorCQkJCSAgIHJ2YWx1ZSAqZWxlbWVudHMxLAorCQkJCSAgIHJ2YWx1 ZSAqZWxlbWVudHMyLAorCQkJCSAgIHJ2YWx1ZSAqbWFzaykKKzogcnZhbHVlIChjdHh0LCBsb2Ms IGVsZW1lbnRzMS0+Z2V0X3R5cGUgKCkpLAorICBtX2VsZW1lbnRzMSAoZWxlbWVudHMxKSwKKyAg bV9lbGVtZW50czIgKGVsZW1lbnRzMiksCisgIG1fbWFzayAobWFzaykKK3sKK30KKworLyogSW1w bGVtZW50YXRpb24gb2YgcHVyZSB2aXJ0dWFsIGhvb2sgcmVjb3JkaW5nOjptZW1lbnRvOjpyZXBs YXlfaW50bworICAgZm9yIHJlY29yZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX3ZlY3Rvcl9w ZXJtLiAgKi8KKwordm9pZAorcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfdmVjdG9y X3Blcm06OnJlcGxheV9pbnRvIChyZXBsYXllciAqcikKK3sKKyAgcGxheWJhY2s6OnJ2YWx1ZSAq cGxheWJhY2tfZWxlbWVudHMxID0gbV9lbGVtZW50czEtPnBsYXliYWNrX3J2YWx1ZSAoKTsKKyAg cGxheWJhY2s6OnJ2YWx1ZSAqcGxheWJhY2tfZWxlbWVudHMyID0gbV9lbGVtZW50czItPnBsYXli YWNrX3J2YWx1ZSAoKTsKKyAgcGxheWJhY2s6OnJ2YWx1ZSAqcGxheWJhY2tfbWFzayA9IG1fbWFz ay0+cGxheWJhY2tfcnZhbHVlICgpOworCisgIHNldF9wbGF5YmFja19vYmogKHItPm5ld19ydmFs dWVfdmVjdG9yX3Blcm0gKHBsYXliYWNrX2xvY2F0aW9uIChyLCBtX2xvYyksCisJCSAgICBwbGF5 YmFja19lbGVtZW50czEsCisJCSAgICBwbGF5YmFja19lbGVtZW50czIsCisJCSAgICBwbGF5YmFj a19tYXNrKSk7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHB1cmUgdmlydHVhbCBob29rIHJl Y29yZGluZzo6cnZhbHVlOjp2aXNpdF9jaGlsZHJlbgorICAgZm9yIHJlY29yZGluZzo6bWVtZW50 b19vZl9uZXdfcnZhbHVlX2Zyb21fdmVjdG9yLiAgKi8KKworICAgIHZvaWQKK3JlY29yZGluZzo6 bWVtZW50b19vZl9uZXdfcnZhbHVlX3ZlY3Rvcl9wZXJtOjp2aXNpdF9jaGlsZHJlbiAocnZhbHVl X3Zpc2l0b3IgKnYpCit7CisgIHYtPnZpc2l0IChtX2VsZW1lbnRzMSk7CisgIHYtPnZpc2l0ICht X2VsZW1lbnRzMik7CisgIHYtPnZpc2l0IChtX21hc2spOworfQorCisvKiBJbXBsZW1lbnRhdGlv biBvZiByZWNvcmRpbmc6Om1lbWVudG86Om1ha2VfZGVidWdfc3RyaW5nIGZvcgorICAgdmVjdG9y cy4gICovCisKKyAgICByZWNvcmRpbmc6OnN0cmluZyAqCityZWNvcmRpbmc6Om1lbWVudG9fb2Zf bmV3X3J2YWx1ZV92ZWN0b3JfcGVybTo6bWFrZV9kZWJ1Z19zdHJpbmcgKCkKK3sKKyAgICAvKiBO b3cgYnVpbGQgYSBzdHJpbmcuICAqLworICAgIHN0cmluZyAqcmVzdWx0ID0gc3RyaW5nOjpmcm9t X3ByaW50ZiAobV9jdHh0LAorCQkic2h1ZmZsZXZlY3RvciAoJXMsICVzLCAlcykiLAorCQltX2Vs ZW1lbnRzMS0+Z2V0X2RlYnVnX3N0cmluZyAoKSwKKwkJbV9lbGVtZW50czItPmdldF9kZWJ1Z19z dHJpbmcgKCksCisJCW1fbWFzay0+Z2V0X2RlYnVnX3N0cmluZyAoKSk7CisKKyAgICByZXR1cm4g cmVzdWx0OworCit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHJlY29yZGluZzo6bWVtZW50bzo6 d3JpdGVfcmVwcm9kdWNlciBmb3IKKyAgIHZlY3RvcnMuICAqLworCisgICAgdm9pZAorcmVjb3Jk aW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfdmVjdG9yX3Blcm06OndyaXRlX3JlcHJvZHVjZXIg KHJlcHJvZHVjZXIgJnIpCit7CisgICAgY29uc3QgY2hhciAqaWQgPSByLm1ha2VfaWRlbnRpZmll ciAodGhpcywgInZlY3RvciIpOworICByLndyaXRlICgiICBnY2Nfaml0X3J2YWx1ZSAqJXMgPVxu IgorCSAgICIgICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfdmVjdG9yX3Blcm0gKCVzLCAv KiBnY2Nfaml0X2NvbnRleHQgKmN0eHQgKi9cbiIKKwkgICAiICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAlcywgLyogZ2NjX2ppdF9sb2NhdGlvbiAqbG9jICovXG4i CisJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXMsIC8q IGdjY19qaXRfcnZhbHVlICoqZWxlbWVudHMxKi9cbiIKKwkgICAiICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAlcywgLyogZ2NjX2ppdF9ydmFsdWUgKiplbGVtZW50 czIqL1xuIgorCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICVzKTsgLyogZ2NjX2ppdF9ydmFsdWUgKiptYXNrKi9cbiIsCisJICAgaWQsCisJICAgci5nZXRf aWRlbnRpZmllciAoZ2V0X2NvbnRleHQgKCkpLAorCSAgIHIuZ2V0X2lkZW50aWZpZXIgKG1fbG9j KSwKKwkgICByLmdldF9pZGVudGlmaWVyX2FzX3J2YWx1ZSAobV9lbGVtZW50czEpLAorCSAgIHIu Z2V0X2lkZW50aWZpZXJfYXNfcnZhbHVlIChtX2VsZW1lbnRzMiksCisJICAgci5nZXRfaWRlbnRp Zmllcl9hc19ydmFsdWUgKG1fbWFzaykpOworfQorCiB2b2lkCiByZWNvcmRpbmc6OmN0b3I6OnZp c2l0X2NoaWxkcmVuIChydmFsdWVfdmlzaXRvciAqdikKIHsKQEAgLTYzMDcsNiArNjQyMCw2MiBA QCByZWNvcmRpbmc6OmFycmF5X2FjY2Vzczo6d3JpdGVfcmVwcm9kdWNlciAocmVwcm9kdWNlciAm cikKIAkgICByLmdldF9pZGVudGlmaWVyX2FzX3J2YWx1ZSAobV9pbmRleCkpOwogfQogCisvKiBU aGUgaW1wbGVtZW50YXRpb24gb2YgY2xhc3MgZ2NjOjpqaXQ6OnJlY29yZGluZzo6dmVjdG9yX2Fj Y2Vzcy4gICovCisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHB1cmUgdmlydHVhbCBob29rIHJlY29y ZGluZzo6bWVtZW50bzo6cmVwbGF5X2ludG8KKyAgIGZvciByZWNvcmRpbmc6OnZlY3Rvcl9hY2Nl c3MuICAqLworCit2b2lkCityZWNvcmRpbmc6OnZlY3Rvcl9hY2Nlc3M6OnJlcGxheV9pbnRvIChy ZXBsYXllciAqcikKK3sKKyAgc2V0X3BsYXliYWNrX29iaiAoCisgICAgci0+bmV3X3ZlY3Rvcl9h Y2Nlc3MgKHBsYXliYWNrX2xvY2F0aW9uIChyLCBtX2xvYyksCisJCQkgIG1fdmVjdG9yLT5wbGF5 YmFja19ydmFsdWUgKCksCisJCQkgIG1faW5kZXgtPnBsYXliYWNrX3J2YWx1ZSAoKSkpOworfQor CisvKiBJbXBsZW1lbnRhdGlvbiBvZiBwdXJlIHZpcnR1YWwgaG9vayByZWNvcmRpbmc6OnJ2YWx1 ZTo6dmlzaXRfY2hpbGRyZW4KKyAgIGZvciByZWNvcmRpbmc6OnZlY3Rvcl9hY2Nlc3MuICAqLwor Cit2b2lkCityZWNvcmRpbmc6OnZlY3Rvcl9hY2Nlc3M6OnZpc2l0X2NoaWxkcmVuIChydmFsdWVf dmlzaXRvciAqdikKK3sKKyAgdi0+dmlzaXQgKG1fdmVjdG9yKTsKKyAgdi0+dmlzaXQgKG1faW5k ZXgpOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiByZWNvcmRpbmc6Om1lbWVudG86Om1ha2Vf ZGVidWdfc3RyaW5nIGZvcgorICAgYXJyYXkgYWNjZXNzZXMuICAqLworCityZWNvcmRpbmc6OnN0 cmluZyAqCityZWNvcmRpbmc6OnZlY3Rvcl9hY2Nlc3M6Om1ha2VfZGVidWdfc3RyaW5nICgpCit7 CisgIGVudW0gcHJlY2VkZW5jZSBwcmVjID0gZ2V0X3ByZWNlZGVuY2UgKCk7CisgIHJldHVybiBz dHJpbmc6OmZyb21fcHJpbnRmIChtX2N0eHQsCisJCQkgICAgICAiJXNbJXNdIiwKKwkJCSAgICAg IG1fdmVjdG9yLT5nZXRfZGVidWdfc3RyaW5nX3BhcmVucyAocHJlYyksCisJCQkgICAgICBtX2lu ZGV4LT5nZXRfZGVidWdfc3RyaW5nX3BhcmVucyAocHJlYykpOworfQorCisvKiBJbXBsZW1lbnRh dGlvbiBvZiByZWNvcmRpbmc6Om1lbWVudG86OndyaXRlX3JlcHJvZHVjZXIgZm9yCisgICB2ZWN0 b3JfYWNjZXNzLiAgKi8KKwordm9pZAorcmVjb3JkaW5nOjp2ZWN0b3JfYWNjZXNzOjp3cml0ZV9y ZXByb2R1Y2VyIChyZXByb2R1Y2VyICZyKQoreworICBjb25zdCBjaGFyICppZCA9IHIubWFrZV9p ZGVudGlmaWVyICh0aGlzLCAibHZhbHVlIik7CisgIHIud3JpdGUgKCIgIGdjY19qaXRfbHZhbHVl IColcyA9IFxuIgorCSAgICIgICAgZ2NjX2ppdF9jb250ZXh0X25ld192ZWN0b3JfYWNjZXNzICgl cywgLyogZ2NjX2ppdF9jb250ZXh0ICpjdHh0ICovXG4iCisJICAgIiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICVzLCAvKmdjY19qaXRfbG9jYXRpb24gKmxvYyAqL1xuIgor CSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlcywgLyogZ2NjX2pp dF9ydmFsdWUgKnZlY3RvciAqL1xuIgorCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAlcyk7IC8qIGdjY19qaXRfcnZhbHVlICppbmRleCAqL1xuIiwKKwkgICBpZCwK KwkgICByLmdldF9pZGVudGlmaWVyIChnZXRfY29udGV4dCAoKSksCisJICAgci5nZXRfaWRlbnRp ZmllciAobV9sb2MpLAorCSAgIHIuZ2V0X2lkZW50aWZpZXJfYXNfcnZhbHVlIChtX3ZlY3Rvciks CisJICAgci5nZXRfaWRlbnRpZmllcl9hc19ydmFsdWUgKG1faW5kZXgpKTsKK30KKwogLyogVGhl IGltcGxlbWVudGF0aW9uIG9mIGNsYXNzIGdjYzo6aml0OjpyZWNvcmRpbmc6OmFjY2Vzc19maWVs ZF9vZl9sdmFsdWUuICAqLwogCiAvKiBJbXBsZW1lbnRhdGlvbiBvZiBwdXJlIHZpcnR1YWwgaG9v ayByZWNvcmRpbmc6Om1lbWVudG86OnJlcGxheV9pbnRvCmRpZmYgLS1naXQgYS9nY2Mvaml0L2pp dC1yZWNvcmRpbmcuaCBiL2djYy9qaXQvaml0LXJlY29yZGluZy5oCmluZGV4IDRhODA4Mjk5MWZi Li44NjY5ZmRlYjRhMiAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKKysrIGIv Z2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKQEAgLTE3Myw2ICsxNzMsMTIgQEAgcHVibGljOgogCQkJ ICB2ZWN0b3JfdHlwZSAqdHlwZSwKIAkJCSAgcnZhbHVlICoqZWxlbWVudHMpOwogCisgIHJ2YWx1 ZSAqCisgIG5ld19ydmFsdWVfdmVjdG9yX3Blcm0gKGxvY2F0aW9uICpsb2MsCisJCQkgIHJ2YWx1 ZSAqZWxlbWVudHMxLAorCQkJICBydmFsdWUgKmVsZW1lbnRzMiwKKwkJCSAgcnZhbHVlICptYXNr KTsKKwogICBydmFsdWUgKgogICBuZXdfdW5hcnlfb3AgKGxvY2F0aW9uICpsb2MsCiAJCWVudW0g Z2NjX2ppdF91bmFyeV9vcCBvcCwKQEAgLTIxNSw2ICsyMjEsMTEgQEAgcHVibGljOgogCQkgICAg cnZhbHVlICpwdHIsCiAJCSAgICBydmFsdWUgKmluZGV4KTsKIAorICBsdmFsdWUgKgorICBuZXdf dmVjdG9yX2FjY2VzcyAobG9jYXRpb24gKmxvYywKKwkJICAgICBydmFsdWUgKnZlY3RvciwKKwkJ ICAgICBydmFsdWUgKmluZGV4KTsKKwogICBjYXNlXyAqCiAgIG5ld19jYXNlIChydmFsdWUgKm1p bl92YWx1ZSwKIAkgICAgcnZhbHVlICptYXhfdmFsdWUsCkBAIC04MTAsNiArODIxLDEwIEBAIHB1 YmxpYzoKIAogICB2b2lkIHJlcGxheV9pbnRvIChyZXBsYXllciAqKSBmaW5hbCBvdmVycmlkZTsK IAorICB2ZWN0b3JfdHlwZSAqZHluX2Nhc3RfdmVjdG9yX3R5cGUgKCkgZmluYWwgb3ZlcnJpZGUg eworICAgIHJldHVybiBtX290aGVyX3R5cGUtPmR5bl9jYXN0X3ZlY3Rvcl90eXBlICgpOworICB9 CisKIHByaXZhdGU6CiAgIHN0cmluZyAqIG1ha2VfZGVidWdfc3RyaW5nICgpIGZpbmFsIG92ZXJy aWRlOwogICB2b2lkIHdyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpIGZpbmFsIG92ZXJy aWRlOwpAQCAtMTYyNSw2ICsxNjQwLDMzIEBAIHByaXZhdGU6CiAgIGF1dG9fdmVjPHJ2YWx1ZSAq PiBtX2VsZW1lbnRzOwogfTsKIAorY2xhc3MgbWVtZW50b19vZl9uZXdfcnZhbHVlX3ZlY3Rvcl9w ZXJtIDogcHVibGljIHJ2YWx1ZQoreworcHVibGljOgorICBtZW1lbnRvX29mX25ld19ydmFsdWVf dmVjdG9yX3Blcm0gKGNvbnRleHQgKmN0eHQsCisJCQkJICAgICBsb2NhdGlvbiAqbG9jLAorCQkJ CSAgICAgcnZhbHVlICplbGVtZW50czEsCisJCQkJICAgICBydmFsdWUgKmVsZW1lbnRzMiwKKwkJ CQkgICAgIHJ2YWx1ZSAqbWFzayk7CisKKyAgdm9pZCByZXBsYXlfaW50byAocmVwbGF5ZXIgKnIp IGZpbmFsIG92ZXJyaWRlOworCisgIHZvaWQgdmlzaXRfY2hpbGRyZW4gKHJ2YWx1ZV92aXNpdG9y ICopIGZpbmFsIG92ZXJyaWRlOworCitwcml2YXRlOgorICBzdHJpbmcgKiBtYWtlX2RlYnVnX3N0 cmluZyAoKSBmaW5hbCBvdmVycmlkZTsKKyAgdm9pZCB3cml0ZV9yZXByb2R1Y2VyIChyZXByb2R1 Y2VyICZyKSBmaW5hbCBvdmVycmlkZTsKKyAgZW51bSBwcmVjZWRlbmNlIGdldF9wcmVjZWRlbmNl ICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlCisgIHsKKyAgICByZXR1cm4gUFJFQ0VERU5DRV9QUklN QVJZOworICB9CisKK3ByaXZhdGU6CisgIHJ2YWx1ZSAqbV9lbGVtZW50czE7CisgIHJ2YWx1ZSAq bV9lbGVtZW50czI7CisgIHJ2YWx1ZSAqbV9tYXNrOworfTsKKwogY2xhc3MgY3RvciA6IHB1Ymxp YyBydmFsdWUKIHsKIHB1YmxpYzoKQEAgLTE5MDcsNiArMTk0OSwzNiBAQCBwcml2YXRlOgogICBy dmFsdWUgKm1faW5kZXg7CiB9OwogCitjbGFzcyB2ZWN0b3JfYWNjZXNzIDogcHVibGljIGx2YWx1 ZQoreworcHVibGljOgorICB2ZWN0b3JfYWNjZXNzIChjb250ZXh0ICpjdHh0LAorCQkgbG9jYXRp b24gKmxvYywKKwkJIHJ2YWx1ZSAqdmVjdG9yLAorCQkgcnZhbHVlICppbmRleCkKKyAgOiBsdmFs dWUgKGN0eHQsIGxvYywgdmVjdG9yLT5nZXRfdHlwZSAoKS0+ZHluX2Nhc3RfdmVjdG9yX3R5cGUg KCkKKwkJCSAgICAgLT5nZXRfZWxlbWVudF90eXBlICgpKSwKKyAgICBtX3ZlY3RvciAodmVjdG9y KSwKKyAgICBtX2luZGV4IChpbmRleCkKKyAge30KKworICB2b2lkIHJlcGxheV9pbnRvIChyZXBs YXllciAqcikgZmluYWwgb3ZlcnJpZGU7CisKKyAgdm9pZCB2aXNpdF9jaGlsZHJlbiAocnZhbHVl X3Zpc2l0b3IgKnYpIGZpbmFsIG92ZXJyaWRlOworCitwcml2YXRlOgorICBzdHJpbmcgKiBtYWtl X2RlYnVnX3N0cmluZyAoKSBmaW5hbCBvdmVycmlkZTsKKyAgdm9pZCB3cml0ZV9yZXByb2R1Y2Vy IChyZXByb2R1Y2VyICZyKSBmaW5hbCBvdmVycmlkZTsKKyAgZW51bSBwcmVjZWRlbmNlIGdldF9w cmVjZWRlbmNlICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlCisgIHsKKyAgICByZXR1cm4gUFJFQ0VE RU5DRV9QT1NURklYOworICB9CisKK3ByaXZhdGU6CisgIHJ2YWx1ZSAqbV92ZWN0b3I7CisgIHJ2 YWx1ZSAqbV9pbmRleDsKK307CisKIGNsYXNzIGFjY2Vzc19maWVsZF9vZl9sdmFsdWUgOiBwdWJs aWMgbHZhbHVlCiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdC5jYyBi L2djYy9qaXQvbGliZ2Njaml0LmNjCmluZGV4IDA0NTFiNGRmN2Y5Li5jOGFiYzFiZjc3MCAxMDA2 NDQKLS0tIGEvZ2NjL2ppdC9saWJnY2NqaXQuY2MKKysrIGIvZ2NjL2ppdC9saWJnY2NqaXQuY2MK QEAgLTI0MzcsNiArMjQzNyw5IEBAIGdjY19qaXRfY29udGV4dF9uZXdfY2FzdCAoZ2NjX2ppdF9j b250ZXh0ICpjdHh0LAogICAvKiBMT0MgY2FuIGJlIE5VTEwuICAqLwogICBSRVRVUk5fTlVMTF9J Rl9GQUlMIChydmFsdWUsIGN0eHQsIGxvYywgIk5VTEwgcnZhbHVlIik7CiAgIFJFVFVSTl9OVUxM X0lGX0ZBSUwgKHR5cGUsIGN0eHQsIGxvYywgIk5VTEwgdHlwZSIpOworICBnY2M6OmppdDo6cmVj b3JkaW5nOjp2ZWN0b3JfdHlwZSAqdmVjdG9yX3R5cGUgPSB0eXBlLT5keW5fY2FzdF92ZWN0b3Jf dHlwZSAoKTsKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAodmVjdG9yX3R5cGUgPT0gTlVMTCwgY3R4 dCwgbG9jLAorCQkgICAgICAgImNhbm5vdCBjYXN0IHZlY3RvciB0eXBlcyIpOwogICBSRVRVUk5f TlVMTF9JRl9GQUlMX1BSSU5URjMgKAogICAgIGlzX3ZhbGlkX2Nhc3QgKHJ2YWx1ZS0+Z2V0X3R5 cGUgKCksIHR5cGUpLAogICAgIGN0eHQsIGxvYywKQEAgLTI1MDMsNiArMjUwNiwzOSBAQCBnY2Nf aml0X2NvbnRleHRfbmV3X2FycmF5X2FjY2VzcyAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAogICBy ZXR1cm4gKGdjY19qaXRfbHZhbHVlICopY3R4dC0+bmV3X2FycmF5X2FjY2VzcyAobG9jLCBwdHIs IGluZGV4KTsKIH0KIAorLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4g bGliZ2Njaml0LmguCisKKyAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlz IGRvbmUgYnkgdGhlCisgICBnY2M6OmppdDo6cmVjb3JkaW5nOjpjb250ZXh0OjpuZXdfdmVjdG9y X2FjY2VzcyBtZXRob2QgaW4KKyAgIGppdC1yZWNvcmRpbmcuY2MuICAqLworCitleHRlcm4gZ2Nj X2ppdF9sdmFsdWUgKgorZ2NjX2ppdF9jb250ZXh0X25ld192ZWN0b3JfYWNjZXNzIChnY2Nfaml0 X2NvbnRleHQgKmN0eHQsCisJCQkJICAgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorCQkJCSAgIGdj Y19qaXRfcnZhbHVlICp2ZWN0b3IsCisJCQkJICAgZ2NjX2ppdF9ydmFsdWUgKmluZGV4KQorewor ICBSRVRVUk5fTlVMTF9JRl9GQUlMIChjdHh0LCBOVUxMLCBsb2MsICJOVUxMIGNvbnRleHQiKTsK KyAgSklUX0xPR19GVU5DIChjdHh0LT5nZXRfbG9nZ2VyICgpKTsKKyAgLyogTE9DIGNhbiBiZSBO VUxMLiAgKi8KKyAgUkVUVVJOX05VTExfSUZfRkFJTCAodmVjdG9yLCBjdHh0LCBsb2MsICJOVUxM IHZlY3RvciIpOworICBSRVRVUk5fTlVMTF9JRl9GQUlMIChpbmRleCwgY3R4dCwgbG9jLCAiTlVM TCBpbmRleCIpOworICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5URjIgKAorICAgIHZlY3Rvci0+ Z2V0X3R5cGUgKCktPmR5bl9jYXN0X3ZlY3Rvcl90eXBlICgpLAorICAgIGN0eHQsIGxvYywKKyAg ICAidmVjdG9yOiAlcyAodHlwZTogJXMpIGlzIG5vdCBhIHZlY3RvciIsCisgICAgdmVjdG9yLT5n ZXRfZGVidWdfc3RyaW5nICgpLAorICAgIHZlY3Rvci0+Z2V0X3R5cGUgKCktPmdldF9kZWJ1Z19z dHJpbmcgKCkpOworICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5URjIgKAorICAgIGluZGV4LT5n ZXRfdHlwZSAoKS0+aXNfbnVtZXJpYyAoKSwKKyAgICBjdHh0LCBsb2MsCisgICAgImluZGV4OiAl cyAodHlwZTogJXMpIGlzIG5vdCBvZiBudW1lcmljIHR5cGUiLAorICAgIGluZGV4LT5nZXRfZGVi dWdfc3RyaW5nICgpLAorICAgIGluZGV4LT5nZXRfdHlwZSAoKS0+Z2V0X2RlYnVnX3N0cmluZyAo KSk7CisKKyAgcmV0dXJuIChnY2Nfaml0X2x2YWx1ZSAqKWN0eHQtPm5ld192ZWN0b3JfYWNjZXNz IChsb2MsIHZlY3RvciwgaW5kZXgpOworfQorCiAvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBk ZXNjcmlwdGlvbiBpbiBsaWJnY2NqaXQuaC4KIAogICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRo ZSByZWFsIHdvcmsgaXMgZG9uZSBieSB0aGUKQEAgLTQwNzEsNiArNDEwNyw4MiBAQCBnY2Nfaml0 X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3ZlY3RvciAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAog ICAgICAoZ2NjOjpqaXQ6OnJlY29yZGluZzo6cnZhbHVlICoqKWVsZW1lbnRzKTsKIH0KIAorLyog UHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAg IEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBn Y2M6OmppdDo6cmVjb3JkaW5nOjpjb250ZXh0OjpuZXdfcnZhbHVlX3ZlY3Rvcl9wZXJtIG1ldGhv ZCwgaW4KKyAgIGppdC1yZWNvcmRpbmcuY2MuICAqLworCitnY2Nfaml0X3J2YWx1ZSAqCitnY2Nf aml0X2NvbnRleHRfbmV3X3J2YWx1ZV92ZWN0b3JfcGVybSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0 LAorCQkJCQlnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisJCQkJCWdjY19qaXRfcnZhbHVlICplbGVt ZW50czEsCisJCQkJCWdjY19qaXRfcnZhbHVlICplbGVtZW50czIsCisJCQkJCWdjY19qaXRfcnZh bHVlICptYXNrKQoreworICBSRVRVUk5fTlVMTF9JRl9GQUlMIChjdHh0LCBOVUxMLCBsb2MsICJO VUxMIGN0eHQiKTsKKyAgSklUX0xPR19GVU5DIChjdHh0LT5nZXRfbG9nZ2VyICgpKTsKKyAgUkVU VVJOX05VTExfSUZfRkFJTCAoZWxlbWVudHMxLCBjdHh0LCBsb2MsICJOVUxMIGVsZW1lbnRzMSIp OworICBSRVRVUk5fTlVMTF9JRl9GQUlMIChlbGVtZW50czIsIGN0eHQsIGxvYywgIk5VTEwgZWxl bWVudHMyIik7CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKG1hc2ssIGN0eHQsIGxvYywgIk5VTEwg bWFzayIpOworCisgIC8qIExPQyBjYW4gYmUgTlVMTC4gICovCisKKyAgZ2NjOjpqaXQ6OnJlY29y ZGluZzo6dHlwZSAqZWxlbWVudHMxX3R5cGUgPSBlbGVtZW50czEtPmdldF90eXBlICgpOworICBn Y2M6OmppdDo6cmVjb3JkaW5nOjp0eXBlICplbGVtZW50czJfdHlwZSA9IGVsZW1lbnRzMi0+Z2V0 X3R5cGUgKCk7CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUxfUFJJTlRGNCAoCisgICAgY29tcGF0aWJs ZV90eXBlcyAoZWxlbWVudHMxLT5nZXRfdHlwZSAoKS0+dW5xdWFsaWZpZWQgKCksCisJCSAgICAg IGVsZW1lbnRzMi0+Z2V0X3R5cGUgKCktPnVucXVhbGlmaWVkICgpKSwKKyAgICBjdHh0LCBsb2Ms CisgICAgIm1pc21hdGNoaW5nIHR5cGVzIGZvciB2ZWN0b3IgcGVybToiCisgICAgIiBlbGVtZW50 czE6ICVzICh0eXBlOiAlcykgZWxlbWVudHMyOiAlcyAodHlwZTogJXMpIiwKKyAgICBlbGVtZW50 czEtPmdldF9kZWJ1Z19zdHJpbmcgKCksCisgICAgZWxlbWVudHMxX3R5cGUtPmdldF9kZWJ1Z19z dHJpbmcgKCksCisgICAgZWxlbWVudHMyLT5nZXRfZGVidWdfc3RyaW5nICgpLAorICAgIGVsZW1l bnRzMl90eXBlLT5nZXRfZGVidWdfc3RyaW5nICgpKTsKKworICBnY2M6OmppdDo6cmVjb3JkaW5n Ojp0eXBlICptYXNrX3R5cGUgPSBtYXNrLT5nZXRfdHlwZSAoKTsKKyAgZ2NjOjpqaXQ6OnJlY29y ZGluZzo6dmVjdG9yX3R5cGUgKm1hc2tfdmVjdG9yX3R5cGUgPQorICAgIG1hc2tfdHlwZS0+ZHlu X2Nhc3RfdmVjdG9yX3R5cGUgKCk7CisgIGdjYzo6aml0OjpyZWNvcmRpbmc6OnZlY3Rvcl90eXBl ICplbGVtZW50czFfdmVjdG9yX3R5cGUgPQorICAgIGVsZW1lbnRzMV90eXBlLT5keW5fY2FzdF92 ZWN0b3JfdHlwZSAoKTsKKworICBzaXplX3QgbWFza19sZW4gPSBtYXNrX3ZlY3Rvcl90eXBlLT5n ZXRfbnVtX3VuaXRzICgpOworICBzaXplX3QgZWxlbWVudHMxX2xlbiA9IGVsZW1lbnRzMV92ZWN0 b3JfdHlwZS0+Z2V0X251bV91bml0cyAoKTsKKworICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5U RjIgKAorICAgIG1hc2tfbGVuID09IGVsZW1lbnRzMV9sZW4sCisgICAgY3R4dCwgbG9jLAorICAg ICJtaXNtYXRjaGluZyBsZW5ndGggZm9yIG1hc2s6IgorICAgICIgZWxlbWVudHMxIGxlbmd0aDog JWxkIG1hc2sgbGVuZ3RoOiAlbGQiLAorICAgIG1hc2tfbGVuLAorICAgIGVsZW1lbnRzMV9sZW4p OworCisgIGdjYzo6aml0OjpyZWNvcmRpbmc6OnR5cGUgKm1hc2tfZWxlbWVudF90eXBlID0KKyAg ICBtYXNrX3ZlY3Rvcl90eXBlLT5nZXRfZWxlbWVudF90eXBlICgpOworCisgIFJFVFVSTl9OVUxM X0lGX0ZBSUwgKAorICAgIG1hc2tfZWxlbWVudF90eXBlLT5pc19pbnQgKCksCisgICAgY3R4dCwg bG9jLAorICAgICJlbGVtZW50cyBvZiBtYXNrIG11c3QgYmUgb2YgYW4gaW50ZWdlciB0eXBlIik7 CisKKyAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6dHlwZSAqZWxlbWVudHMxX2VsZW1lbnRfdHlwZSA9 CisgICAgZWxlbWVudHMxX3ZlY3Rvcl90eXBlLT5nZXRfZWxlbWVudF90eXBlICgpOworICBzaXpl X3QgbWFza19lbGVtZW50X3NpemUgPSBtYXNrX2VsZW1lbnRfdHlwZS0+Z2V0X3NpemUgKCk7Cisg IHNpemVfdCBlbGVtZW50czFfZWxlbWVudF9zaXplID0gZWxlbWVudHMxX2VsZW1lbnRfdHlwZS0+ Z2V0X3NpemUgKCk7CisKKyAgUkVUVVJOX05VTExfSUZfRkFJTF9QUklOVEYyICgKKyAgICBtYXNr X2VsZW1lbnRfc2l6ZSA9PSBlbGVtZW50czFfZWxlbWVudF9zaXplLAorICAgIGN0eHQsIGxvYywK KyAgICAibWlzbWF0Y2hpbmcgc2l6ZSBmb3IgbWFzayBlbGVtZW50IHR5cGU6IgorICAgICIgZWxl bWVudHMxIGVsZW1lbnQgdHlwZTogJWxkIG1hc2sgZWxlbWVudCB0eXBlOiAlbGQiLAorICAgIG1h c2tfZWxlbWVudF9zaXplLAorICAgIGVsZW1lbnRzMV9lbGVtZW50X3NpemUpOworCisgIHJldHVy biAoZ2NjX2ppdF9ydmFsdWUgKiljdHh0LT5uZXdfcnZhbHVlX3ZlY3Rvcl9wZXJtIChsb2MsIGVs ZW1lbnRzMSwKKwkJCQkJCQkgZWxlbWVudHMyLCBtYXNrKTsKK30KKwogLyogQSBtdXRleCBhcm91 bmQgdGhlIGNhY2hlZCBzdGF0ZSBpbiBwYXJzZV9iYXNldmVyLgogICAgSWRlYWxseSB0aGlzIHdv dWxkIGJlIHdpdGhpbiBwYXJzZV9iYXNldmVyLCBidXQgdGhlIG11dGV4IGlzIG9ubHkgbmVlZGVk CiAgICBieSBsaWJnY2NqaXQuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQuaCBi L2djYy9qaXQvbGliZ2Njaml0LmgKaW5kZXggNzQ5ZjZjMjQxNzcuLjNhOGFmOTlhOTk0IDEwMDY0 NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5oCisrKyBiL2djYy9qaXQvbGliZ2Njaml0LmgKQEAg LTEzMDEsNiArMTMwMSwzNSBAQCBnY2Nfaml0X2NvbnRleHRfbmV3X2FycmF5X2FjY2VzcyAoZ2Nj X2ppdF9jb250ZXh0ICpjdHh0LAogCQkJCSAgZ2NjX2ppdF9ydmFsdWUgKnB0ciwKIAkJCQkgIGdj Y19qaXRfcnZhbHVlICppbmRleCk7CiAKKy8qIEJ1aWxkIGEgcGVybXV0YXRpb24gdmVjdG9yIHJ2 YWx1ZSBmcm9tIGFuIDMgYXJyYXlzIG9mIGVsZW1lbnRzLgorCisgICAidmVjX3R5cGUiIHNob3Vs ZCBiZSBhIHZlY3RvciB0eXBlLCBjcmVhdGVkIHVzaW5nIGdjY19qaXRfdHlwZV9nZXRfdmVjdG9y LgorCisgICBUaGlzIEFQSSBlbnRyeXBvaW50IHdhcyBhZGRlZCBpbiBMSUJHQ0NKSVRfQUJJXzI2 OyB5b3UgY2FuIHRlc3QgZm9yIGl0cworICAgcHJlc2VuY2UgdXNpbmcKKyAgICAgI2lmZGVmIExJ QkdDQ0pJVF9IQVZFX1ZFQ1RPUl9PUEVSQVRJT05TCisqLworZXh0ZXJuIGdjY19qaXRfcnZhbHVl ICoKK2djY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX3ZlY3Rvcl9wZXJtIChnY2Nfaml0X2NvbnRl eHQgKmN0eHQsCisJCQkJCWdjY19qaXRfbG9jYXRpb24gKmxvYywKKwkJCQkJZ2NjX2ppdF9ydmFs dWUgKmVsZW1lbnRzMSwKKwkJCQkJZ2NjX2ppdF9ydmFsdWUgKmVsZW1lbnRzMiwKKwkJCQkJZ2Nj X2ppdF9ydmFsdWUgKm1hc2spOworCisjZGVmaW5lIExJQkdDQ0pJVF9IQVZFX1ZFQ1RPUl9PUEVS QVRJT05TCisKKy8qIEdldCB0aGUgZWxlbWVudCBhdCBJTkRFWCBpbiBWRUNUT1IuCisKKyAgIFRo aXMgQVBJIGVudHJ5cG9pbnQgd2FzIGFkZGVkIGluIExJQkdDQ0pJVF9BQklfMjY7IHlvdSBjYW4g dGVzdCBmb3IgaXRzCisgICBwcmVzZW5jZSB1c2luZworICAgICAjaWZkZWYgTElCR0NDSklUX0hB VkVfVkVDVE9SX09QRVJBVElPTlMKKyovCitleHRlcm4gZ2NjX2ppdF9sdmFsdWUgKgorZ2NjX2pp dF9jb250ZXh0X25ld192ZWN0b3JfYWNjZXNzIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsCisJCQkJ ICAgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorCQkJCSAgIGdjY19qaXRfcnZhbHVlICp2ZWN0b3Is CisJCQkJICAgZ2NjX2ppdF9ydmFsdWUgKmluZGV4KTsKKwogLyogRmllbGQgYWNjZXNzIGlzIHBy b3ZpZGVkIHNlcGFyYXRlbHkgZm9yIGJvdGggbHZhbHVlcyBhbmQgcnZhbHVlcy4gICovCiAKIC8q IEFjY2Vzc2luZyBhIGZpZWxkIG9mIGFuIGx2YWx1ZSBvZiBzdHJ1Y3QgdHlwZSwgYW5hbG9nb3Vz IHRvOgpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQubWFwIGIvZ2NjL2ppdC9saWJnY2Nq aXQubWFwCmluZGV4IDhiOTBhMGUyZmYzLi41MTBjOTM4NmQ3YSAxMDA2NDQKLS0tIGEvZ2NjL2pp dC9saWJnY2NqaXQubWFwCisrKyBiL2djYy9qaXQvbGliZ2Njaml0Lm1hcApAQCAtMjc2LDMgKzI3 Niw5IEBAIExJQkdDQ0pJVF9BQklfMjUgewogICBnbG9iYWw6CiAgICAgZ2NjX2ppdF90eXBlX2dl dF9yZXN0cmljdDsKIH0gTElCR0NDSklUX0FCSV8yNDsKKworTElCR0NDSklUX0FCSV8yNiB7Cisg IGdsb2JhbDoKKyAgICBnY2Nfaml0X2NvbnRleHRfbmV3X3ZlY3Rvcl9hY2Nlc3M7CisgICAgZ2Nj X2ppdF9jb250ZXh0X25ld19ydmFsdWVfdmVjdG9yX3Blcm07Cit9IExJQkdDQ0pJVF9BQklfMjU7 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMu aCBiL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oCmluZGV4IGU3 NjI1NjNmOWJkLi44ZGJiNTgyZGY2MSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcv YWxsLW5vbi1mYWlsaW5nLXRlc3RzLmgKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5v bi1mYWlsaW5nLXRlc3RzLmgKQEAgLTM3Nyw2ICszNzcsMTMgQEAKICN1bmRlZiBjcmVhdGVfY29k ZQogI3VuZGVmIHZlcmlmeV9jb2RlCiAKKy8qIHRlc3QtdmVjdG9yLXBlcm0uYyAqLworI2RlZmlu ZSBjcmVhdGVfY29kZSBjcmVhdGVfY29kZV92ZWN0b3JfcGVybQorI2RlZmluZSB2ZXJpZnlfY29k ZSB2ZXJpZnlfY29kZV92ZWN0b3JfcGVybQorI2luY2x1ZGUgInRlc3QtdmVjdG9yLXBlcm0uYyIK KyN1bmRlZiBjcmVhdGVfY29kZQorI3VuZGVmIHZlcmlmeV9jb2RlCisKIC8qIE5vdyBleHBvc2Ug dGhlIGluZGl2aWR1YWwgdGVzdGNhc2VzIGFzIGluc3RhbmNlcyBvZiB0aGlzIHN0cnVjdC4gICov CiAKIHN0cnVjdCB0ZXN0Y2FzZQpAQCAtNTI5LDcgKzUzNiwxMCBAQCBjb25zdCBzdHJ1Y3QgdGVz dGNhc2UgdGVzdGNhc2VzW10gPSB7CiAgICB2ZXJpZnlfY29kZV92ZXJzaW9ufSwKICAgeyJ2b2xh dGlsZSIsCiAgICBjcmVhdGVfY29kZV92b2xhdGlsZSwKLSAgIHZlcmlmeV9jb2RlX3ZvbGF0aWxl fQorICAgdmVyaWZ5X2NvZGVfdm9sYXRpbGV9LAorICB7InZlY3Rvcl9wZXJtIiwKKyAgIGNyZWF0 ZV9jb2RlX3ZlY3Rvcl9wZXJtLAorICAgdmVyaWZ5X2NvZGVfdmVjdG9yX3Blcm19LAogfTsKIAog Y29uc3QgaW50IG51bV90ZXN0Y2FzZXMgPSAoc2l6ZW9mICh0ZXN0Y2FzZXMpIC8gc2l6ZW9mICh0 ZXN0Y2FzZXNbMF0pKTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtdmVj dG9yLXBlcm0uYyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtdmVjdG9yLXBlcm0uYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2NmMTkzYjFlZjMKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LXZlY3Rvci1wZXJtLmMKQEAgLTAs MCArMSw5NiBAQAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNp bmNsdWRlICJsaWJnY2NqaXQuaCIKKworI2luY2x1ZGUgImhhcm5lc3MuaCIKKwordHlwZWRlZiBp bnQgdjRzaSBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDE2KSkpOworCit2b2lkCitjcmVh dGVfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCit7CisgIGdj Y19qaXRfdHlwZSAqaW50X3R5cGUgPQorICAgIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4 dCwgR0NDX0pJVF9UWVBFX0lOVCk7CisgIGdjY19qaXRfdHlwZSAqdjRzaSA9CisgICAgZ2NjX2pp dF90eXBlX2dldF92ZWN0b3IgKGludF90eXBlLCA0KTsKKworICBnY2Nfaml0X2Z1bmN0aW9uICpm dW5jX3ZlY3RvciA9CisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbiAoY3R4dCwgTlVM TCwKKwkJCQkgIEdDQ19KSVRfRlVOQ1RJT05fRVhQT1JURUQsCisJCQkJICBpbnRfdHlwZSwKKwkJ CQkgICJ2ZWN0b3IiLAorCQkJCSAgMCwgTlVMTCwKKwkJCQkgIDApOworCisgIGdjY19qaXRfcnZh bHVlICplbGVtZW50c1s0XQorICAgID0geyBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9t X2ludCAoY3R4dCwgaW50X3R5cGUsIDEpLAorICAgIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21faW50IChjdHh0LCBpbnRfdHlwZSwgMiksCisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19y dmFsdWVfZnJvbV9pbnQgKGN0eHQsIGludF90eXBlLCAzKSwKKyAgICBnY2Nfaml0X2NvbnRleHRf bmV3X3J2YWx1ZV9mcm9tX2ludCAoY3R4dCwgaW50X3R5cGUsIDQpLAorICAgIH07CisKKyAgZ2Nj X2ppdF9ydmFsdWUgKnZlY3RvcgorICAgID0gZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJv bV92ZWN0b3IgKGN0eHQsIE5VTEwsIHY0c2ksIDQsIGVsZW1lbnRzKTsKKworICBnY2Nfaml0X3J2 YWx1ZSAqaW5kZXgKKyAgICA9IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50IChj dHh0LCBpbnRfdHlwZSwgMik7CisKKyAgZ2NjX2ppdF9ibG9jayAqYmxvY2tfYSA9IGdjY19qaXRf ZnVuY3Rpb25fbmV3X2Jsb2NrIChmdW5jX3ZlY3RvciwgTlVMTCk7CisgIGdjY19qaXRfbHZhbHVl ICp2YWx1ZQorICAgID0gZ2NjX2ppdF9jb250ZXh0X25ld192ZWN0b3JfYWNjZXNzIChjdHh0LCBO VUxMLCB2ZWN0b3IsIGluZGV4KTsKKyAgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9yZXR1cm4gKGJs b2NrX2EsIE5VTEwsIGdjY19qaXRfbHZhbHVlX2FzX3J2YWx1ZSAodmFsdWUpKTsKKworICBnY2Nf aml0X2Z1bmN0aW9uICpmdW5jX3ZlY3Rvcl9wZXJtID0KKyAgICBnY2Nfaml0X2NvbnRleHRfbmV3 X2Z1bmN0aW9uIChjdHh0LCBOVUxMLAorCQkJCSAgR0NDX0pJVF9GVU5DVElPTl9FWFBPUlRFRCwK KwkJCQkgIHY0c2ksCisJCQkJICAidmVjdG9yX3Blcm0iLAorCQkJCSAgMCwgTlVMTCwKKwkJCQkg IDApOworCisgIGdjY19qaXRfcnZhbHVlICplbGVtZW50czJbNF0KKyAgICA9IHsgZ2NjX2ppdF9j b250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0eHQsIGludF90eXBlLCA1KSwKKyAgICBnY2Nf aml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoY3R4dCwgaW50X3R5cGUsIDYpLAorICAg IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50IChjdHh0LCBpbnRfdHlwZSwgNyks CisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0eHQsIGludF90eXBl LCA4KSwKKyAgICB9OworCisgIGdjY19qaXRfcnZhbHVlICp2ZWN0b3IyCisgICAgPSBnY2Nfaml0 X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3ZlY3RvciAoY3R4dCwgTlVMTCwgdjRzaSwgNCwgZWxl bWVudHMyKTsKKworICBnY2Nfaml0X3J2YWx1ZSAqbWFza192YWx1ZXNbNF0KKyAgICA9IHsgZ2Nj X2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0eHQsIGludF90eXBlLCA3KSwKKyAg ICBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoY3R4dCwgaW50X3R5cGUsIDIp LAorICAgIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50IChjdHh0LCBpbnRfdHlw ZSwgMyksCisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0eHQsIGlu dF90eXBlLCAwKSwKKyAgICB9OworCisgIGdjY19qaXRfcnZhbHVlICptYXNrCisgICAgPSBnY2Nf aml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3ZlY3RvciAoY3R4dCwgTlVMTCwgdjRzaSwgNCwg bWFza192YWx1ZXMpOworCisgIGdjY19qaXRfYmxvY2sgKmJsb2NrX2IgPSBnY2Nfaml0X2Z1bmN0 aW9uX25ld19ibG9jayAoZnVuY192ZWN0b3JfcGVybSwgTlVMTCk7CisgIGdjY19qaXRfcnZhbHVl ICpyZXN1bHQgPSBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV92ZWN0b3JfcGVybSAoY3R4dCwg TlVMTCwgdmVjdG9yLCB2ZWN0b3IyLCBtYXNrKTsKKyAgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9y ZXR1cm4gKGJsb2NrX2IsIE5VTEwsIHJlc3VsdCk7Cit9CisKK3ZvaWQKK3ZlcmlmeV9jb2RlIChn Y2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfcmVzdWx0ICpyZXN1bHQpCit7CisgIENIRUNL X05PTl9OVUxMIChyZXN1bHQpOworCisgIHR5cGVkZWYgaW50ICgqdmVjdG9yKSAoKTsKKyAgdmVj dG9yIGZuID0gKHZlY3RvcilnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAidmVjdG9y Iik7CisgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgaW50IHZlY3Rvcl9hY2Nlc3MgPSBmbiAo KTsKKyAgQ0hFQ0tfVkFMVUUgKHZlY3Rvcl9hY2Nlc3MsIDMpOworCisgIHR5cGVkZWYgdjRzaSAo KnZlY3Rvcl9wZXJtKSAoKTsKKyAgdmVjdG9yX3Blcm0gcGVybV9mbiA9ICh2ZWN0b3JfcGVybSln Y2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAidmVjdG9yX3Blcm0iKTsKKyAgQ0hFQ0tf Tk9OX05VTEwgKHBlcm1fZm4pOworCisgIHY0c2kgdmVjdG9yX3Blcm1fcmVzID0gcGVybV9mbiAo KTsKKyAgdjRzaSBleHBlY3RlZF92ZWMgPSB7IDgsIDMsIDQsIDEgfTsKKyAgQ0hFQ0tfVkVDVE9S X1ZBTFVFICg0LCB2ZWN0b3JfcGVybV9yZXMsIGV4cGVjdGVkX3ZlYyk7Cit9Ci0tIAoyLjQyLjEK Cg== --=-4sTlywpEi9ovQrbQ7Mq8--