From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender3-pp-o98.zoho.com (sender3-pp-o98.zoho.com [136.143.184.98]) by sourceware.org (Postfix) with ESMTPS id 1E9283858D32; Fri, 17 Nov 2023 22:36:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1E9283858D32 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 1E9283858D32 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=136.143.184.98 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1700260627; cv=pass; b=UWIsnxoy8O1V9p4KqkDpdVS0sJlTSqE4xJS/3xq1YNssnA0fy/gL3h4FtEH2LZp5SpKVpQz6n10K02B20xUGOn+q9ZDv92LHUmBlfqJ61DhHjtT/EuaVKvsS4xeb/OxeBbngxjuz7AXMwlFnG+IbYV0yBmRDfkcybmySa1IGMZM= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1700260627; c=relaxed/simple; bh=MrPmxVF28YI1X59PhZcV7A5vqurCAdgJ+wrt3csnMPE=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=MIO2mqMVBpd2IzNrmT1tLskxnrJTGzLFYmXpqAeFA+Yich+ecOKpiYOHDoTWqRythug7Fcr5zhhqzanIJVFRhnU5FxRvLHgam4zRQUPJEaP3wMWdM5FCwBnB4nibcz3ArlZFo6GYomALMSWd7bEWreoX7luv96BaH/mS4OFKd2w= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1700260613; cv=none; d=zohomail.com; s=zohoarc; b=lNCeDH2SoYthrO7zZhXY6HRoeNIilvlbjzwdmXPKIhN5pTOJSHqnIpb3Kc88xCX1JQtVSRTiSYncnLg4sXq5XDDHBRRTmO1ZaatYcpSkNPJRDzfWFjpitkB/jv4yPTaUbYCNJGB58LKQNKNeaYpD9UOZmkQyDWkdlCutZoirzmQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1700260613; h=Content-Type:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZAIY1h9hEvGDEQyPkxd2yZlYV8wLl+1U0igXz2phmYg=; b=LkaCYsBBNnTTaus4SCLd+mCDpVbFUrmda45RF8uN07dNdpYl/71RvHWLGlbY7IAvFWIClBuc66xLB6IJEZye7EbzHZD0Fj9wASMMSzeM/IGhmmzpPXx/TiNlO6Kom3FptIwA0laI+MuTHFO+oet8EqD/a/9AbiLSYBpTXJTteuo= 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=1700260613; s=zm2022; d=zoho.com; i=bouanto@zoho.com; h=Message-ID:Subject:Subject:From:From:To:To:Cc:Cc:Date:Date:Content-Type:MIME-Version:Feedback-ID:Message-Id:Reply-To; bh=ZAIY1h9hEvGDEQyPkxd2yZlYV8wLl+1U0igXz2phmYg=; b=hL7ZmNv3ExG3bny/0PsbFoQi2YSre4ZvvObUJyLuOdBiyTffJwN7GpTNH/oXwKCT Yt+YaZ/lMXitnTI8IccuVg1aDPDPnSVbhtBcXOUmZMgV1guJjKcAqjOY6NlmvWXCO+1 9THX/wOXXuIxerEVY4R1dVHxIePJvKAuuEV9EU84= Received: from [192.168.1.172] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1700260612829609.1175510434026; Fri, 17 Nov 2023 14:36:52 -0800 (PST) Message-ID: Subject: [PATCH] libgccjit: Add vector permutation and vector access operations From: Antoni Boucher To: jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Cc: David Malcolm Date: Fri, 17 Nov 2023 17:36:50 -0500 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="=-8BlLShmwMqkxt7efDg3p" User-Agent: Evolution 3.50.1 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-Zoho-AV-Stamp: zmail-av-1.1.0/200.232.44 Feedback-ID: rr080112288d7b5689326743a895f1f7bf000080fe5838f8a33c7c778cab9e5d850f99aadbfaa8b20bd9dd6061:zu08011226d411eac914405ebaa92ce67e00008b1d795735f992f6f294916333262c9bd4a04b72c13776f5:rf0801123262de6bd3d59ca48f9a02a82400008cb91294544454b560299b446e8a0aca0185c628260ca0bf75330ca9f18c4e62f46f094c:ZohoMail X-ZohoMailClient: External X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,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: --=-8BlLShmwMqkxt7efDg3p Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi. This patch adds a vector permutation and vector access operations (bug 112602). This was split from this patch: https://gcc.gnu.org/pipermail/jit/2023q1/001606.html Thanks for the review. --=-8BlLShmwMqkxt7efDg3p 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" RnJvbSAyNWIzODYzMzRmMjI4NDVkN2JhMWI2MDY1ODczMDM3M2ViNmRkYmIzIE1vbiBTZXAgMTcg 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 ICAgIHwgMTA5ICsrKysrKysrKysrKwogZ2NjL2ppdC9saWJnY2NqaXQuaCAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMjkgKysrKwogZ2NjL2ppdC9saWJnY2NqaXQubWFwICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDYgKwogZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5n LXRlc3RzLmggfCAgMTIgKy0KIGdjYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtdmVjdG9yLXBlcm0u YyAgICAgIHwgIDk2ICsrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA3MTYgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvaml0 LmRnL3Rlc3QtdmVjdG9yLXBlcm0uYwoKZGlmZiAtLWdpdCBhL2djYy9qaXQvZG9jcy90b3BpY3Mv Y29tcGF0aWJpbGl0eS5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0 CmluZGV4IGViZWRlNDQwZWU0Li5hNzY0ZTM5NjhkMSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2Nz L3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdAorKysgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBh dGliaWxpdHkucnN0CkBAIC0zNzgsMyArMzc4LDEzIEBAIGFsaWdubWVudCBvZiBhIHZhcmlhYmxl OgogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGBgTElCR0NDSklUX0FCSV8yNWBgIGNvdmVycyB0aGUg YWRkaXRpb24gb2YKIDpmdW5jOmBnY2Nfaml0X3R5cGVfZ2V0X3Jlc3RyaWN0YAorCisKKy4uIF9M SUJHQ0NKSVRfQUJJXzI2OgorCitgYExJQkdDQ0pJVF9BQklfMjZgYAorLS0tLS0tLS0tLS0tLS0t LS0tLS0KK2BgTElCR0NDSklUX0FCSV8yNmBgIGNvdmVycyB0aGUgYWRkaXRpb24gb2YgZnVuY3Rp b25zIHRvIG1hbmlwdWxhdGUgdmVjdG9yczoKKworICAqIDpmdW5jOmBnY2Nfaml0X2NvbnRleHRf bmV3X3J2YWx1ZV92ZWN0b3JfcGVybWAKKyAgKiA6ZnVuYzpgZ2NjX2ppdF9jb250ZXh0X25ld192 ZWN0b3JfYWNjZXNzYApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9u cy5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdAppbmRleCA0MmNmZWUz NjMwMi4uNGE0NWFhMTNmNWMgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVz c2lvbnMucnN0CisrKyBiL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0CkBAIC0y OTUsNiArMjk1LDM1IEBAIFZlY3RvciBleHByZXNzaW9ucwogCiAgICAgICAjaWZkZWYgTElCR0ND SklUX0hBVkVfZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV92ZWN0b3IKIAorLi4gZnVu Y3Rpb246OiBnY2Nfaml0X3J2YWx1ZSAqIFwKKyAgICAgICAgICAgICAgZ2NjX2ppdF9jb250ZXh0 X25ld19ydmFsdWVfdmVjdG9yX3Blcm0gKGdjY19qaXRfY29udGV4dCAqY3R4dCwgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjX2ppdF9s b2NhdGlvbiAqbG9jLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnY2Nfaml0X3J2YWx1ZSAqZWxlbWVudHMxLCBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nfaml0X3J2YWx1ZSAq ZWxlbWVudHMyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnY2Nfaml0X3J2YWx1ZSAqbWFzayk7CisKKyAgIEJ1aWxkIGEgcGVybXV0YXRp b24gb2YgdHdvIHZlY3RvcnMuCisKKyAgICJlbGVtZW50czEiIGFuZCAiZWxlbWVudHMyIiBzaG91 bGQgaGF2ZSB0aGUgc2FtZSB0eXBlLgorICAgVGhlIGxlbmd0aCBvZiAibWFzayIgYW5kICJlbGVt ZW50czEiIHNob3VsZCBiZSB0aGUgc2FtZS4KKyAgIFRoZSBlbGVtZW50IHR5cGUgb2YgIm1hc2si IHNob3VsZCBiZSBpbnRlZ3JhbC4KKyAgIFRoZSBzaXplIG9mIHRoZSBlbGVtZW50IHR5cGUgb2Yg Im1hc2siIGFuZCAiZWxlbWVudHMxIiBzaG91bGQgYmUgdGhlIHNhbWUuCisKKyAgIFRoaXMgZW50 cnlwb2ludCB3YXMgYWRkZWQgaW4gOnJlZjpgTElCR0NDSklUX0FCSV8yNWA7IHlvdSBjYW4gdGVz dCBmb3IKKyAgIGl0cyBwcmVzZW5jZSB1c2luZworCisgICAuLiBjb2RlLWJsb2NrOjogYworCisg ICAgICAjaWZkZWYgTElCR0NDSklUX0hBVkVfVkVDVE9SX09QRVJBVElPTlMKKworICAgIEFuYWxv Z291cyB0bzoKKworICAgIC4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICAgICBfX2J1aWx0aW5fc2h1 ZmZsZSAoZWxlbWVudHMxLCBlbGVtZW50czIsIG1hc2spCisKKyAgICBpbiBDLgorCiBVbmFyeSBP cGVyYXRpb25zCiAqKioqKioqKioqKioqKioqCiAKQEAgLTEwMjAsMyArMTA0OSwyNyBAQCBGaWVs ZCBhY2Nlc3MgaXMgcHJvdmlkZWQgc2VwYXJhdGVseSBmb3IgYm90aCBsdmFsdWVzIGFuZCBydmFs dWVzLgogICAgICAgUFRSW0lOREVYXQogCiAgICBpbiBDIChvciwgaW5kZWVkLCB0byBgYFBUUiAr IElOREVYYGApLgorCisuLiBmdW5jdGlvbjo6IGdjY19qaXRfbHZhbHVlICpcCisgICAgICAgICAg ICAgIGdjY19qaXRfY29udGV4dF9uZXdfdmVjdG9yX2FjY2VzcyAoZ2NjX2ppdF9jb250ZXh0ICpj dHh0LFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Y2Nfaml0X2xvY2F0aW9uICpsb2MsXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICp2ZWN0b3IsXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICppbmRleCkK KworICAgR2l2ZW4gYW4gcnZhbHVlIG9mIHZlY3RvciB0eXBlIGBgVCBfX2F0dHJpYnV0ZV9fICgo X192ZWN0b3Jfc2l6ZV9fIChTSVpFKSkpYGAsIGdldCB0aGUgZWxlbWVudCBgVGAgYXQKKyAgIHRo ZSBnaXZlbiBpbmRleC4KKworICAgVGhpcyBlbnRyeXBvaW50IHdhcyBhZGRlZCBpbiA6cmVmOmBM SUJHQ0NKSVRfQUJJXzI1YDsgeW91IGNhbiB0ZXN0IGZvcgorICAgaXRzIHByZXNlbmNlIHVzaW5n 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 L2djYy9qaXQvbGliZ2Njaml0LmNjCmluZGV4IDA0NTFiNGRmN2Y5Li4zMTIzZTYwNzVlYyAxMDA2 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 ZSByZWFsIHdvcmsgaXMgZG9uZSBieSB0aGUKQEAgLTQwNzEsNiArNDEwNyw3OSBAQCBnY2Nfaml0 X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3ZlY3RvciAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAog ICAgICAoZ2NjOjpqaXQ6OnJlY29yZGluZzo6cnZhbHVlICoqKWVsZW1lbnRzKTsKIH0KIAorLyog UHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAg IEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBn Y2M6OmppdDo6cmVjb3JkaW5nOjpjb250ZXh0OjpuZXdfcnZhbHVlX3ZlY3Rvcl9wZXJtIG1ldGhv ZCwgaW4KKyAgIGppdC1yZWNvcmRpbmcuY2MuICAqLworCitnY2Nfaml0X3J2YWx1ZSAqCitnY2Nf aml0X2NvbnRleHRfbmV3X3J2YWx1ZV92ZWN0b3JfcGVybSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0 LAorCQkJCQlnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisJCQkJCWdjY19qaXRfcnZhbHVlICplbGVt ZW50czEsCisJCQkJCWdjY19qaXRfcnZhbHVlICplbGVtZW50czIsCisJCQkJCWdjY19qaXRfcnZh bHVlICptYXNrKQoreworICBSRVRVUk5fTlVMTF9JRl9GQUlMIChjdHh0LCBOVUxMLCBsb2MsICJO VUxMIGN0eHQiKTsKKyAgSklUX0xPR19GVU5DIChjdHh0LT5nZXRfbG9nZ2VyICgpKTsKKworICAv KiBMT0MgY2FuIGJlIE5VTEwuICAqLworCisgIGdjYzo6aml0OjpyZWNvcmRpbmc6OnR5cGUgKmVs ZW1lbnRzMV90eXBlID0gZWxlbWVudHMxLT5nZXRfdHlwZSAoKTsKKyAgZ2NjOjpqaXQ6OnJlY29y ZGluZzo6dHlwZSAqZWxlbWVudHMyX3R5cGUgPSBlbGVtZW50czItPmdldF90eXBlICgpOworICBS RVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5URjQgKAorICAgIGNvbXBhdGlibGVfdHlwZXMgKGVsZW1l bnRzMS0+Z2V0X3R5cGUgKCktPnVucXVhbGlmaWVkICgpLAorCQkgICAgICBlbGVtZW50czItPmdl dF90eXBlICgpLT51bnF1YWxpZmllZCAoKSksCisgICAgY3R4dCwgbG9jLAorICAgICJtaXNtYXRj aGluZyB0eXBlcyBmb3IgdmVjdG9yIHBlcm06IgorICAgICIgZWxlbWVudHMxOiAlcyAodHlwZTog JXMpIGVsZW1lbnRzMjogJXMgKHR5cGU6ICVzKSIsCisgICAgZWxlbWVudHMxLT5nZXRfZGVidWdf c3RyaW5nICgpLAorICAgIGVsZW1lbnRzMV90eXBlLT5nZXRfZGVidWdfc3RyaW5nICgpLAorICAg IGVsZW1lbnRzMi0+Z2V0X2RlYnVnX3N0cmluZyAoKSwKKyAgICBlbGVtZW50czJfdHlwZS0+Z2V0 X2RlYnVnX3N0cmluZyAoKSk7CisKKyAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6dHlwZSAqbWFza190 eXBlID0gbWFzay0+Z2V0X3R5cGUgKCk7CisgIGdjYzo6aml0OjpyZWNvcmRpbmc6OnZlY3Rvcl90 eXBlICptYXNrX3ZlY3Rvcl90eXBlID0KKyAgICBtYXNrX3R5cGUtPmR5bl9jYXN0X3ZlY3Rvcl90 eXBlICgpOworICBnY2M6OmppdDo6cmVjb3JkaW5nOjp2ZWN0b3JfdHlwZSAqZWxlbWVudHMxX3Zl Y3Rvcl90eXBlID0KKyAgICBlbGVtZW50czFfdHlwZS0+ZHluX2Nhc3RfdmVjdG9yX3R5cGUgKCk7 CisKKyAgc2l6ZV90IG1hc2tfbGVuID0gbWFza192ZWN0b3JfdHlwZS0+Z2V0X251bV91bml0cyAo KTsKKyAgc2l6ZV90IGVsZW1lbnRzMV9sZW4gPSBlbGVtZW50czFfdmVjdG9yX3R5cGUtPmdldF9u dW1fdW5pdHMgKCk7CisKKyAgUkVUVVJOX05VTExfSUZfRkFJTF9QUklOVEYyICgKKyAgICBtYXNr X2xlbiA9PSBlbGVtZW50czFfbGVuLAorICAgIGN0eHQsIGxvYywKKyAgICAibWlzbWF0Y2hpbmcg bGVuZ3RoIGZvciBtYXNrOiIKKyAgICAiIGVsZW1lbnRzMSBsZW5ndGg6ICVsZCBtYXNrIGxlbmd0 aDogJWxkIiwKKyAgICBtYXNrX2xlbiwKKyAgICBlbGVtZW50czFfbGVuKTsKKworICBnY2M6Ompp dDo6cmVjb3JkaW5nOjp0eXBlICptYXNrX2VsZW1lbnRfdHlwZSA9CisgICAgbWFza192ZWN0b3Jf dHlwZS0+Z2V0X2VsZW1lbnRfdHlwZSAoKTsKKworICBSRVRVUk5fTlVMTF9JRl9GQUlMICgKKyAg ICBtYXNrX2VsZW1lbnRfdHlwZS0+aXNfaW50ICgpLAorICAgIGN0eHQsIGxvYywKKyAgICAiZWxl bWVudHMgb2YgbWFzayBtdXN0IGJlIG9mIGFuIGludGVnZXIgdHlwZSIpOworCisgIGdjYzo6aml0 OjpyZWNvcmRpbmc6OnR5cGUgKmVsZW1lbnRzMV9lbGVtZW50X3R5cGUgPQorICAgIGVsZW1lbnRz MV92ZWN0b3JfdHlwZS0+Z2V0X2VsZW1lbnRfdHlwZSAoKTsKKyAgc2l6ZV90IG1hc2tfZWxlbWVu dF9zaXplID0gbWFza19lbGVtZW50X3R5cGUtPmdldF9zaXplICgpOworICBzaXplX3QgZWxlbWVu dHMxX2VsZW1lbnRfc2l6ZSA9IGVsZW1lbnRzMV9lbGVtZW50X3R5cGUtPmdldF9zaXplICgpOwor CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUxfUFJJTlRGMiAoCisgICAgbWFza19lbGVtZW50X3NpemUg PT0gZWxlbWVudHMxX2VsZW1lbnRfc2l6ZSwKKyAgICBjdHh0LCBsb2MsCisgICAgIm1pc21hdGNo aW5nIHNpemUgZm9yIG1hc2sgZWxlbWVudCB0eXBlOiIKKyAgICAiIGVsZW1lbnRzMSBlbGVtZW50 IHR5cGU6ICVsZCBtYXNrIGVsZW1lbnQgdHlwZTogJWxkIiwKKyAgICBtYXNrX2VsZW1lbnRfc2l6 ZSwKKyAgICBlbGVtZW50czFfZWxlbWVudF9zaXplKTsKKworICByZXR1cm4gKGdjY19qaXRfcnZh bHVlICopY3R4dC0+bmV3X3J2YWx1ZV92ZWN0b3JfcGVybSAobG9jLCBlbGVtZW50czEsCisJCQkJ CQkJIGVsZW1lbnRzMiwgbWFzayk7Cit9CisKIC8qIEEgbXV0ZXggYXJvdW5kIHRoZSBjYWNoZWQg c3RhdGUgaW4gcGFyc2VfYmFzZXZlci4KICAgIElkZWFsbHkgdGhpcyB3b3VsZCBiZSB3aXRoaW4g cGFyc2VfYmFzZXZlciwgYnV0IHRoZSBtdXRleCBpcyBvbmx5IG5lZWRlZAogICAgYnkgbGliZ2Nj aml0LiAgKi8KZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0LmggYi9nY2Mvaml0L2xpYmdj Y2ppdC5oCmluZGV4IDc0OWY2YzI0MTc3Li4zYThhZjk5YTk5NCAxMDA2NDQKLS0tIGEvZ2NjL2pp dC9saWJnY2NqaXQuaAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5oCkBAIC0xMzAxLDYgKzEzMDEs MzUgQEAgZ2NjX2ppdF9jb250ZXh0X25ld19hcnJheV9hY2Nlc3MgKGdjY19qaXRfY29udGV4dCAq Y3R4dCwKIAkJCQkgIGdjY19qaXRfcnZhbHVlICpwdHIsCiAJCQkJICBnY2Nfaml0X3J2YWx1ZSAq aW5kZXgpOwogCisvKiBCdWlsZCBhIHBlcm11dGF0aW9uIHZlY3RvciBydmFsdWUgZnJvbSBhbiAz IGFycmF5cyBvZiBlbGVtZW50cy4KKworICAgInZlY190eXBlIiBzaG91bGQgYmUgYSB2ZWN0b3Ig dHlwZSwgY3JlYXRlZCB1c2luZyBnY2Nfaml0X3R5cGVfZ2V0X3ZlY3Rvci4KKworICAgVGhpcyBB UEkgZW50cnlwb2ludCB3YXMgYWRkZWQgaW4gTElCR0NDSklUX0FCSV8yNjsgeW91IGNhbiB0ZXN0 IGZvciBpdHMKKyAgIHByZXNlbmNlIHVzaW5nCisgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9W RUNUT1JfT1BFUkFUSU9OUworKi8KK2V4dGVybiBnY2Nfaml0X3J2YWx1ZSAqCitnY2Nfaml0X2Nv bnRleHRfbmV3X3J2YWx1ZV92ZWN0b3JfcGVybSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAorCQkJ CQlnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisJCQkJCWdjY19qaXRfcnZhbHVlICplbGVtZW50czEs CisJCQkJCWdjY19qaXRfcnZhbHVlICplbGVtZW50czIsCisJCQkJCWdjY19qaXRfcnZhbHVlICpt YXNrKTsKKworI2RlZmluZSBMSUJHQ0NKSVRfSEFWRV9WRUNUT1JfT1BFUkFUSU9OUworCisvKiBH ZXQgdGhlIGVsZW1lbnQgYXQgSU5ERVggaW4gVkVDVE9SLgorCisgICBUaGlzIEFQSSBlbnRyeXBv aW50IHdhcyBhZGRlZCBpbiBMSUJHQ0NKSVRfQUJJXzI2OyB5b3UgY2FuIHRlc3QgZm9yIGl0cwor ICAgcHJlc2VuY2UgdXNpbmcKKyAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX1ZFQ1RPUl9PUEVS QVRJT05TCisqLworZXh0ZXJuIGdjY19qaXRfbHZhbHVlICoKK2djY19qaXRfY29udGV4dF9uZXdf dmVjdG9yX2FjY2VzcyAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAorCQkJCSAgIGdjY19qaXRfbG9j YXRpb24gKmxvYywKKwkJCQkgICBnY2Nfaml0X3J2YWx1ZSAqdmVjdG9yLAorCQkJCSAgIGdjY19q aXRfcnZhbHVlICppbmRleCk7CisKIC8qIEZpZWxkIGFjY2VzcyBpcyBwcm92aWRlZCBzZXBhcmF0 ZWx5IGZvciBib3RoIGx2YWx1ZXMgYW5kIHJ2YWx1ZXMuICAqLwogCiAvKiBBY2Nlc3NpbmcgYSBm aWVsZCBvZiBhbiBsdmFsdWUgb2Ygc3RydWN0IHR5cGUsIGFuYWxvZ291cyB0bzoKZGlmZiAtLWdp dCBhL2djYy9qaXQvbGliZ2Njaml0Lm1hcCBiL2djYy9qaXQvbGliZ2Njaml0Lm1hcAppbmRleCA4 YjkwYTBlMmZmMy4uNTEwYzkzODZkN2EgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0Lm1h cAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKQEAgLTI3NiwzICsyNzYsOSBAQCBMSUJHQ0NK SVRfQUJJXzI1IHsKICAgZ2xvYmFsOgogICAgIGdjY19qaXRfdHlwZV9nZXRfcmVzdHJpY3Q7CiB9 IExJQkdDQ0pJVF9BQklfMjQ7CisKK0xJQkdDQ0pJVF9BQklfMjYgeworICBnbG9iYWw6CisgICAg Z2NjX2ppdF9jb250ZXh0X25ld192ZWN0b3JfYWNjZXNzOworICAgIGdjY19qaXRfY29udGV4dF9u ZXdfcnZhbHVlX3ZlY3Rvcl9wZXJtOworfSBMSUJHQ0NKSVRfQUJJXzI1OwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5nLXRlc3RzLmggYi9nY2MvdGVzdHN1 aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaAppbmRleCBlNzYyNTYzZjliZC4uOGRi YjU4MmRmNjEgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGlu Zy10ZXN0cy5oCisrKyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0 cy5oCkBAIC0zNzcsNiArMzc3LDEzIEBACiAjdW5kZWYgY3JlYXRlX2NvZGUKICN1bmRlZiB2ZXJp ZnlfY29kZQogCisvKiB0ZXN0LXZlY3Rvci1wZXJtLmMgKi8KKyNkZWZpbmUgY3JlYXRlX2NvZGUg Y3JlYXRlX2NvZGVfdmVjdG9yX3Blcm0KKyNkZWZpbmUgdmVyaWZ5X2NvZGUgdmVyaWZ5X2NvZGVf dmVjdG9yX3Blcm0KKyNpbmNsdWRlICJ0ZXN0LXZlY3Rvci1wZXJtLmMiCisjdW5kZWYgY3JlYXRl X2NvZGUKKyN1bmRlZiB2ZXJpZnlfY29kZQorCiAvKiBOb3cgZXhwb3NlIHRoZSBpbmRpdmlkdWFs IHRlc3RjYXNlcyBhcyBpbnN0YW5jZXMgb2YgdGhpcyBzdHJ1Y3QuICAqLwogCiBzdHJ1Y3QgdGVz dGNhc2UKQEAgLTUyOSw3ICs1MzYsMTAgQEAgY29uc3Qgc3RydWN0IHRlc3RjYXNlIHRlc3RjYXNl c1tdID0gewogICAgdmVyaWZ5X2NvZGVfdmVyc2lvbn0sCiAgIHsidm9sYXRpbGUiLAogICAgY3Jl YXRlX2NvZGVfdm9sYXRpbGUsCi0gICB2ZXJpZnlfY29kZV92b2xhdGlsZX0KKyAgIHZlcmlmeV9j b2RlX3ZvbGF0aWxlfSwKKyAgeyJ2ZWN0b3JfcGVybSIsCisgICBjcmVhdGVfY29kZV92ZWN0b3Jf cGVybSwKKyAgIHZlcmlmeV9jb2RlX3ZlY3Rvcl9wZXJtfSwKIH07CiAKIGNvbnN0IGludCBudW1f dGVzdGNhc2VzID0gKHNpemVvZiAodGVzdGNhc2VzKSAvIHNpemVvZiAodGVzdGNhc2VzWzBdKSk7 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LXZlY3Rvci1wZXJtLmMgYi9n Y2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LXZlY3Rvci1wZXJtLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdjZjE5M2IxZWYzCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC12ZWN0b3ItcGVybS5jCkBAIC0wLDAgKzEsOTYgQEAKKyNp bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAibGliZ2Nj aml0LmgiCisKKyNpbmNsdWRlICJoYXJuZXNzLmgiCisKK3R5cGVkZWYgaW50IHY0c2kgX19hdHRy aWJ1dGVfXyAoKHZlY3Rvcl9zaXplICgxNikpKTsKKwordm9pZAorY3JlYXRlX2NvZGUgKGdjY19q aXRfY29udGV4dCAqY3R4dCwgdm9pZCAqdXNlcl9kYXRhKQoreworICBnY2Nfaml0X3R5cGUgKmlu dF90eXBlID0KKyAgICBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgKGN0eHQsIEdDQ19KSVRfVFlQ RV9JTlQpOworICBnY2Nfaml0X3R5cGUgKnY0c2kgPQorICAgIGdjY19qaXRfdHlwZV9nZXRfdmVj dG9yIChpbnRfdHlwZSwgNCk7CisKKyAgZ2NjX2ppdF9mdW5jdGlvbiAqZnVuY192ZWN0b3IgPQor ICAgIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb24gKGN0eHQsIE5VTEwsCisJCQkJICBHQ0Nf SklUX0ZVTkNUSU9OX0VYUE9SVEVELAorCQkJCSAgaW50X3R5cGUsCisJCQkJICAidmVjdG9yIiwK KwkJCQkgIDAsIE5VTEwsCisJCQkJICAwKTsKKworICBnY2Nfaml0X3J2YWx1ZSAqZWxlbWVudHNb NF0KKyAgICA9IHsgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0eHQsIGlu dF90eXBlLCAxKSwKKyAgICBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoY3R4 dCwgaW50X3R5cGUsIDIpLAorICAgIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50 IChjdHh0LCBpbnRfdHlwZSwgMyksCisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJv bV9pbnQgKGN0eHQsIGludF90eXBlLCA0KSwKKyAgICB9OworCisgIGdjY19qaXRfcnZhbHVlICp2 ZWN0b3IKKyAgICA9IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fdmVjdG9yIChjdHh0 LCBOVUxMLCB2NHNpLCA0LCBlbGVtZW50cyk7CisKKyAgZ2NjX2ppdF9ydmFsdWUgKmluZGV4Cisg ICAgPSBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoY3R4dCwgaW50X3R5cGUs IDIpOworCisgIGdjY19qaXRfYmxvY2sgKmJsb2NrX2EgPSBnY2Nfaml0X2Z1bmN0aW9uX25ld19i bG9jayAoZnVuY192ZWN0b3IsIE5VTEwpOworICBnY2Nfaml0X2x2YWx1ZSAqdmFsdWUKKyAgICA9 IGdjY19qaXRfY29udGV4dF9uZXdfdmVjdG9yX2FjY2VzcyAoY3R4dCwgTlVMTCwgdmVjdG9yLCBp bmRleCk7CisgIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJuIChibG9ja19hLCBOVUxMLCBn Y2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUgKHZhbHVlKSk7CisKKyAgZ2NjX2ppdF9mdW5jdGlvbiAq ZnVuY192ZWN0b3JfcGVybSA9CisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbiAoY3R4 dCwgTlVMTCwKKwkJCQkgIEdDQ19KSVRfRlVOQ1RJT05fRVhQT1JURUQsCisJCQkJICB2NHNpLAor CQkJCSAgInZlY3Rvcl9wZXJtIiwKKwkJCQkgIDAsIE5VTEwsCisJCQkJICAwKTsKKworICBnY2Nf aml0X3J2YWx1ZSAqZWxlbWVudHMyWzRdCisgICAgPSB7IGdjY19qaXRfY29udGV4dF9uZXdfcnZh bHVlX2Zyb21faW50IChjdHh0LCBpbnRfdHlwZSwgNSksCisgICAgZ2NjX2ppdF9jb250ZXh0X25l d19ydmFsdWVfZnJvbV9pbnQgKGN0eHQsIGludF90eXBlLCA2KSwKKyAgICBnY2Nfaml0X2NvbnRl eHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoY3R4dCwgaW50X3R5cGUsIDcpLAorICAgIGdjY19qaXRf Y29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50IChjdHh0LCBpbnRfdHlwZSwgOCksCisgICAgfTsK KworICBnY2Nfaml0X3J2YWx1ZSAqdmVjdG9yMgorICAgID0gZ2NjX2ppdF9jb250ZXh0X25ld19y dmFsdWVfZnJvbV92ZWN0b3IgKGN0eHQsIE5VTEwsIHY0c2ksIDQsIGVsZW1lbnRzMik7CisKKyAg Z2NjX2ppdF9ydmFsdWUgKm1hc2tfdmFsdWVzWzRdCisgICAgPSB7IGdjY19qaXRfY29udGV4dF9u ZXdfcnZhbHVlX2Zyb21faW50IChjdHh0LCBpbnRfdHlwZSwgNyksCisgICAgZ2NjX2ppdF9jb250 ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0eHQsIGludF90eXBlLCAyKSwKKyAgICBnY2Nfaml0 X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCAoY3R4dCwgaW50X3R5cGUsIDMpLAorICAgIGdj Y19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50IChjdHh0LCBpbnRfdHlwZSwgMCksCisg ICAgfTsKKworICBnY2Nfaml0X3J2YWx1ZSAqbWFzaworICAgID0gZ2NjX2ppdF9jb250ZXh0X25l d19ydmFsdWVfZnJvbV92ZWN0b3IgKGN0eHQsIE5VTEwsIHY0c2ksIDQsIG1hc2tfdmFsdWVzKTsK KworICBnY2Nfaml0X2Jsb2NrICpibG9ja19iID0gZ2NjX2ppdF9mdW5jdGlvbl9uZXdfYmxvY2sg KGZ1bmNfdmVjdG9yX3Blcm0sIE5VTEwpOworICBnY2Nfaml0X3J2YWx1ZSAqcmVzdWx0ID0gZ2Nj X2ppdF9jb250ZXh0X25ld19ydmFsdWVfdmVjdG9yX3Blcm0gKGN0eHQsIE5VTEwsIHZlY3Rvciwg dmVjdG9yMiwgbWFzayk7CisgIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJuIChibG9ja19i LCBOVUxMLCByZXN1bHQpOworfQorCit2b2lkCit2ZXJpZnlfY29kZSAoZ2NjX2ppdF9jb250ZXh0 ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAqcmVzdWx0KQoreworICBDSEVDS19OT05fTlVMTCAocmVz dWx0KTsKKworICB0eXBlZGVmIGludCAoKnZlY3RvcikgKCk7CisgIHZlY3RvciBmbiA9ICh2ZWN0 b3IpZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgInZlY3RvciIpOworICBDSEVDS19O T05fTlVMTCAoZm4pOworCisgIGludCB2ZWN0b3JfYWNjZXNzID0gZm4gKCk7CisgIENIRUNLX1ZB TFVFICh2ZWN0b3JfYWNjZXNzLCAzKTsKKworICB0eXBlZGVmIHY0c2kgKCp2ZWN0b3JfcGVybSkg KCk7CisgIHZlY3Rvcl9wZXJtIHBlcm1fZm4gPSAodmVjdG9yX3Blcm0pZ2NjX2ppdF9yZXN1bHRf Z2V0X2NvZGUgKHJlc3VsdCwgInZlY3Rvcl9wZXJtIik7CisgIENIRUNLX05PTl9OVUxMIChwZXJt X2ZuKTsKKworICB2NHNpIHZlY3Rvcl9wZXJtX3JlcyA9IHBlcm1fZm4gKCk7CisgIHY0c2kgZXhw ZWN0ZWRfdmVjID0geyA4LCAzLCA0LCAxIH07CisgIENIRUNLX1ZFQ1RPUl9WQUxVRSAoNCwgdmVj dG9yX3Blcm1fcmVzLCBleHBlY3RlZF92ZWMpOworfQotLSAKMi40Mi4xCgo= --=-8BlLShmwMqkxt7efDg3p--