From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o91.zoho.com (sender4-pp-o91.zoho.com [136.143.188.91]) by sourceware.org (Postfix) with ESMTPS id E05CB38515FF; Mon, 19 Jul 2021 16:10:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E05CB38515FF ARC-Seal: i=1; a=rsa-sha256; t=1626711039; cv=none; d=zohomail.com; s=zohoarc; b=lDWS5ODfyFZf8/nGRnsFoVlak/PFc11BQqPGZ5+1X1WChnfv9Vz16gODsi0nzEby+FB1KZl2mK9p4wJNqj2Hv/8K0lLYtcvidjwCvO2jaMy1hjYVsXYKipUi39/wDcay8mFzcCYbrdNaqID/4KPjeannA2sCIbbkuDYud5zqiFo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1626711039; h=Content-Type:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=T4rYuTuENlLBhKNv2UVYCkawUZrIEUVcu0KMM8ND9uo=; b=JHj71a10+yHl7REqhUrK++elSFF17CX4ADgKtSePWrZkdAGIFpe5Bv0NRY8OsSk8MlN0lsrLidCQJovjkqzzpsR75K5pBapKdKtXvoQxguh62feHdv+2FM7VQo34k70QNHt9G7cGkzUYydgT7QRdjhsIzi91H78CwmAxQt2qYFY= 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= Received: from [192.168.1.174] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1626711026034928.4665958946034; Mon, 19 Jul 2021 09:10:26 -0700 (PDT) Message-ID: Subject: Re: [PATCH] libgccjit: add some reflection functions in the jit C api From: Antoni Boucher To: David Malcolm Cc: Antoni Boucher via Jit , gcc-patches@gcc.gnu.org Date: Mon, 19 Jul 2021 12:10:23 -0400 In-Reply-To: References: <20200902010120.crnx55ev635ceiey@bouanto-desktop.localdomain> <6fe2ea355403eb177c9632e076c11c792f23c791.camel@redhat.com> <9cd00fe5cb5c03184e3a5bd939447b30450a8ca7.camel@redhat.com> <20201015160226.cka4iq3w22jztopm@bouanto-desktop.localdomain> <20201015173952.ft7mu5ajbaxb3gke@bouanto-desktop.localdomain> <54ba5c58dbd2b8c7b1f3276c2b87cddf55e258bd.camel@redhat.com> <20201103221324.xw3jbvrw2uwdc4rz@bouanto-desktop.localdomain> <3388bb8c84e68cd7b0698dc154e7a5666c0d2cde.camel@redhat.com> <0e8b6450bcb23182b85342d8010c3bea0c297ba2.camel@zoho.com> <534254132a841b75d555a52ce952f84418f168c2.camel@redhat.com> <3c328b40570b10b22a8925fd64b2781dc9264358.camel@zoho.com> <715f6ebfe1627fc39d8ec3b15f1e38f8378f3db7.camel@redhat.com> <711092bc80237e32caa48f2060c93be30cb9c220.camel@zoho.com> Content-Type: multipart/mixed; boundary="=-NSRXcgwdUuziuypyOqSn" User-Agent: Evolution 3.40.3 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-ZohoMailClient: External X-Spam-Status: No, score=-12.1 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 autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jul 2021 16:10:48 -0000 --=-NSRXcgwdUuziuypyOqSn Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I'm sending the patch once again for review/approval. I fixed the doc to use the new function names. Le vendredi 18 juin 2021 =C3=A0 16:37 -0400, David Malcolm a =C3=A9crit=C2= =A0: > On Fri, 2021-06-18 at 15:41 -0400, Antoni Boucher wrote: > > I have write access now. >=20 > Great. >=20 > > I'm not sure how I'm supposed to send my patches: > > should I put it in personal branches and you'll merge them? >=20 > Please send them to this mailing list for review; once they're > approved > you can merge them. >=20 > >=20 > > And for the MAINTAINERS file, should I just push to master right > > away, > > after sending it to the mailing list? >=20 > I think people just push the MAINTAINERS change and then let the list > know, since it makes a good test that write access is working > correctly. >=20 > Dave >=20 > >=20 > > Thanks for your help! > >=20 > > Le vendredi 18 juin 2021 =C3=A0 12:09 -0400, David Malcolm a =C3=A9crit= =C2=A0: > > > On Fri, 2021-06-18 at 11:55 -0400, Antoni Boucher wrote: > > > > Le vendredi 11 juin 2021 =C3=A0 14:00 -0400, David Malcolm a =C3=A9= crit=C2=A0: > > > > > On Fri, 2021-06-11 at 08:15 -0400, Antoni Boucher wrote: > > > > > > Thank you for your answer. > > > > > > I attached the updated patch. > > > > >=20 > > > > > BTW you (or possibly me) dropped the mailing lists; was that > > > > > deliberate? > > > >=20 > > > > Oh, my bad. > > > >=20 > > >=20 > > > [...] > > >=20 > > >=20 > > > > >=20 > > > > >=20 > > > > > > I have signed the FSF copyright attribution. > > > > >=20 > > > > > I can push changes on your behalf, but I'd prefer it if you > > > > > did > > > > > it, > > > > > especially given that you have various other patches you want > > > > > to > > > > > get > > > > > in. > > > > >=20 > > > > > Instructions on how to get push rights to the git repo are > > > > > here: > > > > > =C2=A0 https://gcc.gnu.org/gitwrite.html > > > > >=20 > > > > > I can sponsor you. > > > >=20 > > > > Thanks. > > > > I did sign up to get push rights. > > > > Have you accepted my request to get those? > > >=20 > > > I did, but I didn't see any kind of notification.=C2=A0 Did you get a= n > > > email > > > about it? > > >=20 > > >=20 > > > Dave > > >=20 > >=20 > >=20 >=20 >=20 --=-NSRXcgwdUuziuypyOqSn Content-Disposition: attachment; filename="0001-libgccjit-Add-some-reflection-functions-PR96889.patch" Content-Type: text/x-patch; name="0001-libgccjit-Add-some-reflection-functions-PR96889.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBhYWY3N2QxMDlkNzRhZmIwZjQ2ZDNlNWQ0ZDA5NDkxNGNiMWIyMWRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogU2F0LCAxIEF1ZyAyMDIwIDE3OjUyOjE3IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gbGliZ2Nj aml0OiBBZGQgc29tZSByZWZsZWN0aW9uIGZ1bmN0aW9ucyBbUFI5Njg4OV0KCjIwMjEtMDctMTkg IEFudG9uaSBCb3VjaGVyICA8Ym91YW50b0B6b2hvLmNvbT4KCmdjYy9qaXQvCglQUiB0YXJnZXQv OTY4ODkKCSogZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QgKExJQkdDQ0pJVF9BQklfMTYp OiBOZXcgQUJJIHRhZy4KCSogZG9jcy90b3BpY3MvZnVuY3Rpb25zLnJzdDogQWRkIGRvY3VtZW50 YXRpb24gZm9yIHRoZQoJZnVuY3Rpb25zIGdjY19qaXRfZnVuY3Rpb25fZ2V0X3JldHVybl90eXBl IGFuZAoJZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFyYW1fY291bnQKCSogZG9jcy90b3BpY3MvdHlw ZXMucnN0OiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZ1bmN0aW9ucwoJZ2NjX2ppdF9mdW5j dGlvbl90eXBlX2dldF9yZXR1cm5fdHlwZSwKCWdjY19qaXRfZnVuY3Rpb25fdHlwZV9nZXRfcGFy YW1fY291bnQsCglnY2Nfaml0X2Z1bmN0aW9uX3R5cGVfZ2V0X3BhcmFtX3R5cGUsCglnY2Nfaml0 X3R5cGVfdW5xdWFsaWZpZWQsIGdjY19qaXRfdHlwZV9keW5jYXN0X2FycmF5LAoJZ2NjX2ppdF90 eXBlX2lzX2Jvb2wsCglnY2Nfaml0X3R5cGVfZHluY2FzdF9mdW5jdGlvbl9wdHJfdHlwZSwKCWdj Y19qaXRfdHlwZV9pc19pbnRlZ3JhbCwgZ2NjX2ppdF90eXBlX2lzX3BvaW50ZXIsCglnY2Nfaml0 X3R5cGVfZHluY2FzdF92ZWN0b3IsCglnY2Nfaml0X3ZlY3Rvcl90eXBlX2dldF9lbGVtZW50X3R5 cGUsCglnY2Nfaml0X3ZlY3Rvcl90eXBlX2dldF9udW1fdW5pdHMsCglnY2Nfaml0X3N0cnVjdF9n ZXRfZmllbGQsIGdjY19qaXRfdHlwZV9pc19zdHJ1Y3QsCglhbmQgZ2NjX2ppdF9zdHJ1Y3RfZ2V0 X2ZpZWxkX2NvdW50CgkqIGxpYmdjY2ppdC5jOgoJKGdjY19qaXRfZnVuY3Rpb25fZ2V0X3JldHVy bl90eXBlLCBnY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJhbV9jb3VudCwKCWdjY19qaXRfZnVuY3Rp b25fdHlwZV9nZXRfcmV0dXJuX3R5cGUsCglnY2Nfaml0X2Z1bmN0aW9uX3R5cGVfZ2V0X3BhcmFt X2NvdW50LAoJZ2NjX2ppdF9mdW5jdGlvbl90eXBlX2dldF9wYXJhbV90eXBlLCBnY2Nfaml0X3R5 cGVfdW5xdWFsaWZpZWQsCglnY2Nfaml0X3R5cGVfZHluY2FzdF9hcnJheSwgZ2NjX2ppdF90eXBl X2lzX2Jvb2wsCglnY2Nfaml0X3R5cGVfZHluY2FzdF9mdW5jdGlvbl9wdHJfdHlwZSwgZ2NjX2pp dF90eXBlX2lzX2ludGVncmFsLAoJZ2NjX2ppdF90eXBlX2lzX3BvaW50ZXIsIGdjY19qaXRfdHlw ZV9keW5jYXN0X3ZlY3RvciwKCWdjY19qaXRfdmVjdG9yX3R5cGVfZ2V0X2VsZW1lbnRfdHlwZSwK CWdjY19qaXRfdmVjdG9yX3R5cGVfZ2V0X251bV91bml0cywgZ2NjX2ppdF9zdHJ1Y3RfZ2V0X2Zp ZWxkLAoJZ2NjX2ppdF90eXBlX2lzX3N0cnVjdCwgZ2NjX2ppdF9zdHJ1Y3RfZ2V0X2ZpZWxkX2Nv dW50KTogTmV3CglmdW5jdGlvbnMuCgkoc3RydWN0IGdjY19qaXRfZnVuY3Rpb25fdHlwZSwgc3Ry dWN0IGdjY19qaXRfdmVjdG9yX3R5cGUpOgoJTmV3IHR5cGVzLgoJKiBsaWJnY2NqaXQuaDoKCShn Y2Nfaml0X2Z1bmN0aW9uX2dldF9yZXR1cm5fdHlwZSwgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFy YW1fY291bnQsCglnY2Nfaml0X2Z1bmN0aW9uX3R5cGVfZ2V0X3JldHVybl90eXBlLAoJZ2NjX2pp dF9mdW5jdGlvbl90eXBlX2dldF9wYXJhbV9jb3VudCwKCWdjY19qaXRfZnVuY3Rpb25fdHlwZV9n ZXRfcGFyYW1fdHlwZSwgZ2NjX2ppdF90eXBlX3VucXVhbGlmaWVkLAoJZ2NjX2ppdF90eXBlX2R5 bmNhc3RfYXJyYXksIGdjY19qaXRfdHlwZV9pc19ib29sLAoJZ2NjX2ppdF90eXBlX2R5bmNhc3Rf ZnVuY3Rpb25fcHRyX3R5cGUsIGdjY19qaXRfdHlwZV9pc19pbnRlZ3JhbCwKCWdjY19qaXRfdHlw ZV9pc19wb2ludGVyLCBnY2Nfaml0X3R5cGVfZHluY2FzdF92ZWN0b3IsCglnY2Nfaml0X3ZlY3Rv cl90eXBlX2dldF9lbGVtZW50X3R5cGUsCglnY2Nfaml0X3ZlY3Rvcl90eXBlX2dldF9udW1fdW5p dHMsIGdjY19qaXRfc3RydWN0X2dldF9maWVsZCwKCWdjY19qaXRfdHlwZV9pc19zdHJ1Y3QsIGdj Y19qaXRfc3RydWN0X2dldF9maWVsZF9jb3VudCk6IE5ldwoJZnVuY3Rpb24gZGVjbGFyYXRpb25z LgoJKHN0cnVjdCBnY2Nfaml0X2Z1bmN0aW9uX3R5cGUsIHN0cnVjdCBnY2Nfaml0X3ZlY3Rvcl90 eXBlKToKCU5ldyB0eXBlcy4KCSogaml0LXJlY29yZGluZy5oOiBOZXcgZnVuY3Rpb25zIChpc19z dHJ1Y3QgYW5kIGlzX3ZlY3RvcikKCSogbGliZ2Njaml0Lm1hcCAoTElCR0NDSklUX0FCSV8xNik6 IE5ldyBBQkkgdGFnLgoKZ2NjL3Rlc3RzdWl0ZS8KCVBSIHRhcmdldC85Njg4OQoJKiBqaXQuZGcv YWxsLW5vbi1mYWlsaW5nLXRlc3RzLmg6IEFkZCB0ZXN0LXJlZmxlY3Rpb24uYy4KCSogaml0LmRn L3Rlc3QtcmVmbGVjdGlvbi5jOiBOZXcgdGVzdC4KLS0tCiBnY2Mvaml0L2RvY3MvdG9waWNzL2Nv bXBhdGliaWxpdHkucnN0ICAgICAgICB8ICA0MyArKy0KIGdjYy9qaXQvZG9jcy90b3BpY3MvZnVu Y3Rpb25zLnJzdCAgICAgICAgICAgIHwgIDI2ICsrCiBnY2Mvaml0L2RvY3MvdG9waWNzL3R5cGVz LnJzdCAgICAgICAgICAgICAgICB8IDEyMiArKysrKysrKysKIGdjYy9qaXQvaml0LXJlY29yZGlu Zy5oICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIGdjYy9qaXQvbGliZ2Njaml0LmMgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjYxICsrKysrKysrKysrKysrKysrKysKIGdjYy9qaXQv bGliZ2Njaml0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDg5ICsrKysrKysKIGdjYy9q aXQvbGliZ2Njaml0Lm1hcCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsrCiBnY2MvdGVz dHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaCB8ICAxMCArCiBnY2MvdGVzdHN1 aXRlL2ppdC5kZy90ZXN0LXJlZmxlY3Rpb24uYyAgICAgICB8ICA5NSArKysrKysrCiA5IGZpbGVz IGNoYW5nZWQsIDY3MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1yZWZsZWN0aW9uLmMKCmRpZmYgLS1naXQg YS9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0IGIvZ2NjL2ppdC9kb2NzL3Rv cGljcy9jb21wYXRpYmlsaXR5LnJzdAppbmRleCAyMzliNmFhMWE5Mi4uNTJlZTNmODYwYTcgMTAw NjQ0Ci0tLSBhL2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QKKysrIGIvZ2Nj L2ppdC9kb2NzL3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdApAQCAtMjMwLDcgKzIzMCw3IEBAIGVu dHJ5cG9pbnRzOgogLi4gX0xJQkdDQ0pJVF9BQklfMTU6CiAKIGBgTElCR0NDSklUX0FCSV8xNWBg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGBgTElCR0ND SklUX0FCSV8xNWBgIGNvdmVycyB0aGUgYWRkaXRpb24gb2YgQVBJIGVudHJ5cG9pbnRzIGZvciBk aXJlY3RseQogZW1iZWRkaW5nIGFzc2VtYmxlciBpbnN0cnVjdGlvbnM6CiAKQEAgLTI0MywzICsy NDMsNDQgQEAgZW1iZWRkaW5nIGFzc2VtYmxlciBpbnN0cnVjdGlvbnM6CiAgICogOmZ1bmM6YGdj Y19qaXRfZXh0ZW5kZWRfYXNtX2FkZF9pbnB1dF9vcGVyYW5kYAogICAqIDpmdW5jOmBnY2Nfaml0 X2V4dGVuZGVkX2FzbV9hZGRfY2xvYmJlcmAKICAgKiA6ZnVuYzpgZ2NjX2ppdF9jb250ZXh0X2Fk ZF90b3BfbGV2ZWxfYXNtYAorCisuLiBfTElCR0NDSklUX0FCSV8xNjoKKworYGBMSUJHQ0NKSVRf QUJJXzE2YGAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitgYExJQkdDQ0pJVF9BQklfMTZgYCBjb3Zl cnMgdGhlIGFkZGl0aW9uIG9mIHJlZmxlY3Rpb24gZnVuY3Rpb25zIHZpYSBBUEkKK2VudHJ5cG9p bnRzOgorCisgICogOmZ1bmM6YGdjY19qaXRfZnVuY3Rpb25fZ2V0X3JldHVybl90eXBlYAorCisg ICogOmZ1bmM6YGdjY19qaXRfZnVuY3Rpb25fZ2V0X3BhcmFtX2NvdW50YAorCisgICogOmZ1bmM6 YGdjY19qaXRfdHlwZV9keW5jYXN0X2FycmF5YAorCisgICogOmZ1bmM6YGdjY19qaXRfdHlwZV9p c19ib29sYAorCisgICogOmZ1bmM6YGdjY19qaXRfdHlwZV9pc19pbnRlZ3JhbGAKKworICAqIDpm dW5jOmBnY2Nfaml0X3R5cGVfaXNfcG9pbnRlcmAKKworICAqIDpmdW5jOmBnY2Nfaml0X3R5cGVf aXNfc3RydWN0YAorCisgICogOmZ1bmM6YGdjY19qaXRfdHlwZV9keW5jYXN0X3ZlY3RvcmAKKwor ICAqIDpmdW5jOmBnY2Nfaml0X3R5cGVfdW5xdWFsaWZpZWRgCisKKyAgKiA6ZnVuYzpgZ2NjX2pp dF90eXBlX2R5bmNhc3RfZnVuY3Rpb25fcHRyX3R5cGVgCisKKyAgKiA6ZnVuYzpgZ2NjX2ppdF9m dW5jdGlvbl90eXBlX2dldF9yZXR1cm5fdHlwZWAKKworICAqIDpmdW5jOmBnY2Nfaml0X2Z1bmN0 aW9uX3R5cGVfZ2V0X3BhcmFtX2NvdW50YAorCisgICogOmZ1bmM6YGdjY19qaXRfZnVuY3Rpb25f dHlwZV9nZXRfcGFyYW1fdHlwZWAKKworICAqIDpmdW5jOmBnY2Nfaml0X3ZlY3Rvcl90eXBlX2dl dF9udW1fdW5pdHNgCisKKyAgKiA6ZnVuYzpgZ2NjX2ppdF92ZWN0b3JfdHlwZV9nZXRfZWxlbWVu dF90eXBlYAorCisgICogOmZ1bmM6YGdjY19qaXRfc3RydWN0X2dldF9maWVsZGAKKworICAqIDpm dW5jOmBnY2Nfaml0X3N0cnVjdF9nZXRfZmllbGRfY291bnRgCmRpZmYgLS1naXQgYS9nY2Mvaml0 L2RvY3MvdG9waWNzL2Z1bmN0aW9ucy5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2Z1bmN0aW9u cy5yc3QKaW5kZXggYjJkOTIzOWFhMGEuLjgzOTkzNDU4OGRhIDEwMDY0NAotLS0gYS9nY2Mvaml0 L2RvY3MvdG9waWNzL2Z1bmN0aW9ucy5yc3QKKysrIGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9mdW5j dGlvbnMucnN0CkBAIC0xNzEsNiArMTcxLDMyIEBAIEZ1bmN0aW9ucwogICAgdW5kZXJseWluZyBz dHJpbmcsIHNvIGl0IGlzIHZhbGlkIHRvIHBhc3MgaW4gYSBwb2ludGVyIHRvIGFuIG9uLXN0YWNr CiAgICBidWZmZXIuCiAKKy4uIGZ1bmN0aW9uOjogIHNpemVfdCBcCisgICAgICAgICAgICAgICBn Y2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJhbV9jb3VudCAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYykK KworICAgR2V0IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBvZiB0aGUgZnVuY3Rpb24uCisKKy4u IGZ1bmN0aW9uOjogIGdjY19qaXRfdHlwZSAqXAorICAgICAgICAgICAgICAgZ2NjX2ppdF9mdW5j dGlvbl9nZXRfcmV0dXJuX3R5cGUgKGdjY19qaXRfZnVuY3Rpb24gKmZ1bmMpCisKKyAgIEdldCB0 aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLgorCisgICBUaGUgQVBJIGVudHJ5cG9pbnRz IHJlbGF0aW5nIHRvIGdldHRpbmcgaW5mbyBhYm91dCBwYXJhbWV0ZXJzIGFuZCByZXR1cm4KKyAg IHR5cGVzOgorCisgICAgICAqIDpjOmZ1bmM6YGdjY19qaXRfZnVuY3Rpb25fZ2V0X3JldHVybl90 eXBlYAorCisgICAgICAqIDpjOmZ1bmM6YGdjY19qaXRfZnVuY3Rpb25fZ2V0X3BhcmFtX2NvdW50 YAorCisgICB3ZXJlIGFkZGVkIGluIDpyZWY6YExJQkdDQ0pJVF9BQklfMTZgOyB5b3UgY2FuIHRl c3QgZm9yIHRoZWlyIHByZXNlbmNlCisgICB1c2luZworCisgICAuLiBjb2RlLWJsb2NrOjogYwor CisgICAgICAjaWZkZWYgTElCR0NDSklUX0hBVkVfUkVGTEVDVElPTgorCisgICAuLiB0eXBlOjog Z2NjX2ppdF9jYXNlCisKIEJsb2NrcwogLS0tLS0tCiAuLiB0eXBlOjogZ2NjX2ppdF9ibG9jawpk aWZmIC0tZ2l0IGEvZ2NjL2ppdC9kb2NzL3RvcGljcy90eXBlcy5yc3QgYi9nY2Mvaml0L2RvY3Mv dG9waWNzL3R5cGVzLnJzdAppbmRleCA4MzFmMTFiNjc5YS4uNjI2MGU5YWZiYTQgMTAwNjQ0Ci0t LSBhL2djYy9qaXQvZG9jcy90b3BpY3MvdHlwZXMucnN0CisrKyBiL2djYy9qaXQvZG9jcy90b3Bp Y3MvdHlwZXMucnN0CkBAIC0zNDUsMyArMzQ1LDEyNSBAQCBGdW5jdGlvbiBwb2ludGVyIHR5cGVz CiAKIEZ1bmN0aW9uIHBvaW50ZXIgdHlwZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcKIDpjOmZ1bmM6 YGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb25fcHRyX3R5cGVgLgorCitSZWZsZWN0aW9uIEFQ SQorLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiAgZ2NjX2ppdF90eXBlICpcCisgICAg ICAgICAgICAgICBnY2Nfaml0X3R5cGVfZHluY2FzdF9hcnJheSAoZ2NjX2ppdF90eXBlICp0eXBl KQorCisgICAgIEdldCB0aGUgZWxlbWVudCB0eXBlIG9mIGFuIGFycmF5IHR5cGUgb3IgTlVMTCBp ZiBpdCdzIG5vdCBhbiBhcnJheS4KKworLi4gZnVuY3Rpb246OiAgaW50XAorICAgICAgICAgICAg ICAgZ2NjX2ppdF90eXBlX2lzX2Jvb2wgKGdjY19qaXRfdHlwZSAqdHlwZSkKKworICAgICBSZXR1 cm4gbm9uLXplcm8gaWYgdGhlIHR5cGUgaXMgYSBib29sLgorCisuLiBmdW5jdGlvbjo6ICBnY2Nf aml0X2Z1bmN0aW9uX3R5cGUgKlwKKyAgICAgICAgICAgICAgIGdjY19qaXRfdHlwZV9keW5jYXN0 X2Z1bmN0aW9uX3B0cl90eXBlIChnY2Nfaml0X3R5cGUgKnR5cGUpCisKKyAgICAgUmV0dXJuIHRo ZSBmdW5jdGlvbiB0eXBlIGlmIGl0IGlzIG9uZSBvciBOVUxMLgorCisuLiBmdW5jdGlvbjo6ICBn Y2Nfaml0X3R5cGUgKlwKKyAgICAgICAgICAgICAgIGdjY19qaXRfZnVuY3Rpb25fdHlwZV9nZXRf cmV0dXJuX3R5cGUgKGdjY19qaXRfZnVuY3Rpb25fdHlwZSAqZnVuY3Rpb25fdHlwZSkKKworICAg ICBHaXZlbiBhIGZ1bmN0aW9uIHR5cGUsIHJldHVybiBpdHMgcmV0dXJuIHR5cGUuCisKKy4uIGZ1 bmN0aW9uOjogIHNpemVfdFwKKyAgICAgICAgICAgICAgIGdjY19qaXRfZnVuY3Rpb25fdHlwZV9n ZXRfcGFyYW1fY291bnQgKGdjY19qaXRfZnVuY3Rpb25fdHlwZSAqZnVuY3Rpb25fdHlwZSkKKwor ICAgICBHaXZlbiBhIGZ1bmN0aW9uIHR5cGUsIHJldHVybiBpdHMgbnVtYmVyIG9mIHBhcmFtZXRl cnMuCisKKy4uIGZ1bmN0aW9uOjogIGdjY19qaXRfdHlwZSAqXAorICAgICAgICAgICAgICAgZ2Nj X2ppdF9mdW5jdGlvbl90eXBlX2dldF9wYXJhbV90eXBlIChnY2Nfaml0X2Z1bmN0aW9uX3R5cGUg KmZ1bmN0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVfdCBpbmRleCkKKworICAgICBHaXZlbiBhIGZ1bmN0aW9uIHR5cGUs IHJldHVybiB0aGUgdHlwZSBvZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlci4KKworLi4gZnVuY3Rp b246OiAgaW50XAorICAgICAgICAgICAgICAgZ2NjX2ppdF90eXBlX2lzX2ludGVncmFsIChnY2Nf aml0X3R5cGUgKnR5cGUpCisKKyAgICAgUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSB0eXBlIGlzIGFu IGludGVncmFsLgorCisuLiBmdW5jdGlvbjo6ICBnY2Nfaml0X3R5cGUgKlwKKyAgICAgICAgICAg ICAgIGdjY19qaXRfdHlwZV9pc19wb2ludGVyIChnY2Nfaml0X3R5cGUgKnR5cGUpCisKKyAgICAg UmV0dXJuIHRoZSB0eXBlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIgdHlwZSBvciBOVUxMIGlmIGl0 J3Mgbm90IGEgcG9pbnRlci4KKworLi4gZnVuY3Rpb246OiAgZ2NjX2ppdF92ZWN0b3JfdHlwZSAq XAorICAgICAgICAgICAgICAgZ2NjX2ppdF90eXBlX2R5bmNhc3RfdmVjdG9yIChnY2Nfaml0X3R5 cGUgKnR5cGUpCisKKyAgICAgR2l2ZW4gYSB0eXBlLCByZXR1cm4gYSBkeW5hbWljIGNhc3QgdG8g YSB2ZWN0b3IgdHlwZSBvciBOVUxMLgorCisuLiBmdW5jdGlvbjo6ICBnY2Nfaml0X3N0cnVjdCAq XAorICAgICAgICAgICAgICAgZ2NjX2ppdF90eXBlX2lzX3N0cnVjdCAoZ2NjX2ppdF90eXBlICp0 eXBlKQorCisgICAgIEdpdmVuIGEgdHlwZSwgcmV0dXJuIGEgZHluYW1pYyBjYXN0IHRvIGEgc3Ry dWN0IHR5cGUgb3IgTlVMTC4KKworLi4gZnVuY3Rpb246OiAgc2l6ZV90XAorICAgICAgICAgICAg ICAgZ2NjX2ppdF92ZWN0b3JfdHlwZV9nZXRfbnVtX3VuaXRzIChnY2Nfaml0X3ZlY3Rvcl90eXBl ICp2ZWN0b3JfdHlwZSkKKworICAgICBHaXZlbiBhIHZlY3RvciB0eXBlLCByZXR1cm4gdGhlIG51 bWJlciBvZiB1bml0cyBpdCBjb250YWlucy4KKworLi4gZnVuY3Rpb246OiAgZ2NjX2ppdF90eXBl ICpcCisgICAgICAgICAgICAgICBnY2Nfaml0X3ZlY3Rvcl90eXBlX2dldF9lbGVtZW50X3R5cGUg KGdjY19qaXRfdmVjdG9yX3R5cGUgKiB2ZWN0b3JfdHlwZSkKKworICAgICBHaXZlbiBhIHZlY3Rv ciB0eXBlLCByZXR1cm4gdGhlIHR5cGUgb2YgaXRzIGVsZW1lbnRzLgorCisuLiBmdW5jdGlvbjo6 ICBnY2Nfaml0X3R5cGUgKlwKKyAgICAgICAgICAgICAgIGdjY19qaXRfdHlwZV91bnF1YWxpZmll ZCAoZ2NjX2ppdF90eXBlICp0eXBlKQorCisgICAgIEdpdmVuIGEgdHlwZSwgcmV0dXJuIHRoZSB1 bnF1YWxpZmllZCB0eXBlLCByZW1vdmluZyAiY29uc3QiLCAidm9sYXRpbGUiIGFuZAorICAgICBh bGlnbm1lbnQgcXVhbGlmaWVycy4KKworLi4gZnVuY3Rpb246OiAgZ2NjX2ppdF9maWVsZCAqXAor ICAgICAgICAgICAgICAgZ2NjX2ppdF9zdHJ1Y3RfZ2V0X2ZpZWxkIChnY2Nfaml0X3N0cnVjdCAq c3RydWN0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCBpbmRleCkKKworICAgICBHZXQgYSBzdHJ1Y3QgZmllbGQgYnkgaW5kZXguCisKKy4uIGZ1 bmN0aW9uOjogIHNpemVfdFwKKyAgICAgICAgICAgICAgIGdjY19qaXRfc3RydWN0X2dldF9maWVs ZF9jb3VudCAoZ2NjX2ppdF9zdHJ1Y3QgKnN0cnVjdF90eXBlKQorCisgICAgIEdldCB0aGUgbnVt YmVyIG9mIGZpZWxkcyBpbiB0aGUgc3RydWN0LgorCisgICBUaGUgQVBJIGVudHJ5cG9pbnRzIHJl bGF0ZWQgdG8gdGhlIHJlZmxlY3Rpb24gQVBJOgorCisgICAgICAqIDpjOmZ1bmM6YGdjY19qaXRf ZnVuY3Rpb25fdHlwZV9nZXRfcmV0dXJuX3R5cGVgCisKKyAgICAgICogOmM6ZnVuYzpgZ2NjX2pp dF9mdW5jdGlvbl90eXBlX2dldF9wYXJhbV9jb3VudGAKKworICAgICAgKiA6YzpmdW5jOmBnY2Nf aml0X2Z1bmN0aW9uX3R5cGVfZ2V0X3BhcmFtX3R5cGVgCisKKyAgICAgICogOmM6ZnVuYzpgZ2Nj X2ppdF90eXBlX3VucXVhbGlmaWVkYAorCisgICAgICAqIDpjOmZ1bmM6YGdjY19qaXRfdHlwZV9k eW5jYXN0X2FycmF5YAorCisgICAgICAqIDpjOmZ1bmM6YGdjY19qaXRfdHlwZV9pc19ib29sYAor CisgICAgICAqIDpjOmZ1bmM6YGdjY19qaXRfdHlwZV9keW5jYXN0X2Z1bmN0aW9uX3B0cl90eXBl YAorCisgICAgICAqIDpjOmZ1bmM6YGdjY19qaXRfdHlwZV9pc19pbnRlZ3JhbGAKKworICAgICAg KiA6YzpmdW5jOmBnY2Nfaml0X3R5cGVfaXNfcG9pbnRlcmAKKworICAgICAgKiA6YzpmdW5jOmBn Y2Nfaml0X3R5cGVfZHluY2FzdF92ZWN0b3JgCisKKyAgICAgICogOmM6ZnVuYzpgZ2NjX2ppdF92 ZWN0b3JfdHlwZV9nZXRfZWxlbWVudF90eXBlYAorCisgICAgICAqIDpjOmZ1bmM6YGdjY19qaXRf dmVjdG9yX3R5cGVfZ2V0X251bV91bml0c2AKKworICAgICAgKiA6YzpmdW5jOmBnY2Nfaml0X3N0 cnVjdF9nZXRfZmllbGRgCisKKyAgICAgICogOmM6ZnVuYzpgZ2NjX2ppdF90eXBlX2lzX3N0cnVj dGAKKworICAgICAgKiA6YzpmdW5jOmBnY2Nfaml0X3N0cnVjdF9nZXRfZmllbGRfY291bnRgCisK KyAgIHdlcmUgYWRkZWQgaW4gOnJlZjpgTElCR0NDSklUX0FCSV8xNmA7IHlvdSBjYW4gdGVzdCBm b3IgdGhlaXIgcHJlc2VuY2UKKyAgIHVzaW5nCisKKyAgIC4uIGNvZGUtYmxvY2s6OiBjCisKKyAg ICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9SRUZMRUNUSU9OCisKKyAgIC4uIHR5cGU6OiBnY2Nf aml0X2Nhc2UKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXJlY29yZGluZy5oIGIvZ2NjL2ppdC9q aXQtcmVjb3JkaW5nLmgKaW5kZXggMDNmYTExNjBjZjAuLjRhOTk0ZmU3MDk0IDEwMDY0NAotLS0g YS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaAorKysgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaApA QCAtNTQ2LDcgKzU0Niw5IEBAIHB1YmxpYzoKICAgdmlydHVhbCBib29sIGlzX2Jvb2wgKCkgY29u c3QgPSAwOwogICB2aXJ0dWFsIHR5cGUgKmlzX3BvaW50ZXIgKCkgPSAwOwogICB2aXJ0dWFsIHR5 cGUgKmlzX2FycmF5ICgpID0gMDsKKyAgdmlydHVhbCBzdHJ1Y3RfICppc19zdHJ1Y3QgKCkgeyBy ZXR1cm4gTlVMTDsgfQogICB2aXJ0dWFsIGJvb2wgaXNfdm9pZCAoKSBjb25zdCB7IHJldHVybiBm YWxzZTsgfQorICB2aXJ0dWFsIHZlY3Rvcl90eXBlICppc192ZWN0b3IgKCkgeyByZXR1cm4gTlVM TDsgfQogICB2aXJ0dWFsIGJvb2wgaGFzX2tub3duX3NpemUgKCkgY29uc3QgeyByZXR1cm4gdHJ1 ZTsgfQogCiAgIGJvb2wgaXNfbnVtZXJpYyAoKSBjb25zdApAQCAtNjYzLDYgKzY2NSw3IEBAIHB1 YmxpYzoKICAgYm9vbCBpc19ib29sICgpIGNvbnN0IEZJTkFMIE9WRVJSSURFIHsgcmV0dXJuIG1f b3RoZXJfdHlwZS0+aXNfYm9vbCAoKTsgfQogICB0eXBlICppc19wb2ludGVyICgpIEZJTkFMIE9W RVJSSURFIHsgcmV0dXJuIG1fb3RoZXJfdHlwZS0+aXNfcG9pbnRlciAoKTsgfQogICB0eXBlICpp c19hcnJheSAoKSBGSU5BTCBPVkVSUklERSB7IHJldHVybiBtX290aGVyX3R5cGUtPmlzX2FycmF5 ICgpOyB9CisgIHN0cnVjdF8gKmlzX3N0cnVjdCAoKSBGSU5BTCBPVkVSUklERSB7IHJldHVybiBt X290aGVyX3R5cGUtPmlzX3N0cnVjdCAoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgIHR5cGUgKm1fb3Ro ZXJfdHlwZTsKQEAgLTc0NSw2ICs3NDgsOCBAQCBwdWJsaWM6CiAKICAgdm9pZCByZXBsYXlfaW50 byAocmVwbGF5ZXIgKikgRklOQUwgT1ZFUlJJREU7CiAKKyAgdmVjdG9yX3R5cGUgKmlzX3ZlY3Rv ciAoKSBGSU5BTCBPVkVSUklERSB7IHJldHVybiB0aGlzOyB9CisKIHByaXZhdGU6CiAgIHN0cmlu ZyAqIG1ha2VfZGVidWdfc3RyaW5nICgpIEZJTkFMIE9WRVJSSURFOwogICB2b2lkIHdyaXRlX3Jl cHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpIEZJTkFMIE9WRVJSSURFOwpAQCAtOTUxLDYgKzk1Niw4 IEBAIHB1YmxpYzoKIAogICBjb25zdCBjaGFyICphY2Nlc3NfYXNfdHlwZSAocmVwcm9kdWNlciAm cikgRklOQUwgT1ZFUlJJREU7CiAKKyAgc3RydWN0XyAqaXNfc3RydWN0ICgpIEZJTkFMIE9WRVJS SURFIHsgcmV0dXJuIHRoaXM7IH0KKwogcHJpdmF0ZToKICAgc3RyaW5nICogbWFrZV9kZWJ1Z19z dHJpbmcgKCkgRklOQUwgT1ZFUlJJREU7CiAgIHZvaWQgd3JpdGVfcmVwcm9kdWNlciAocmVwcm9k dWNlciAmcikgRklOQUwgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdC5j IGIvZ2NjL2ppdC9saWJnY2NqaXQuYwppbmRleCA3ZmE5NDgwMDdhZC4uNzQwZTYxNGNkMWYgMTAw NjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0LmMKKysrIGIvZ2NjL2ppdC9saWJnY2NqaXQuYwpA QCAtNjAsNiArNjAsMTQgQEAgc3RydWN0IGdjY19qaXRfc3RydWN0IDogcHVibGljIGdjYzo6aml0 OjpyZWNvcmRpbmc6OnN0cnVjdF8KIHsKIH07CiAKK3N0cnVjdCBnY2Nfaml0X2Z1bmN0aW9uX3R5 cGUgOiBwdWJsaWMgZ2NjOjpqaXQ6OnJlY29yZGluZzo6ZnVuY3Rpb25fdHlwZQoreworfTsKKwor c3RydWN0IGdjY19qaXRfdmVjdG9yX3R5cGUgOiBwdWJsaWMgZ2NjOjpqaXQ6OnJlY29yZGluZzo6 dmVjdG9yX3R5cGUKK3sKK307CisKIHN0cnVjdCBnY2Nfaml0X2ZpZWxkIDogcHVibGljIGdjYzo6 aml0OjpyZWNvcmRpbmc6OmZpZWxkCiB7CiB9OwpAQCAtNTE1LDYgKzUyMywxOTQgQEAgZ2NjX2pp dF90eXBlX2dldF92b2xhdGlsZSAoZ2NjX2ppdF90eXBlICp0eXBlKQogICByZXR1cm4gKGdjY19q aXRfdHlwZSAqKXR5cGUtPmdldF92b2xhdGlsZSAoKTsKIH0KIAorLyogUHVibGljIGVudHJ5cG9p bnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAgIEFmdGVyIGVycm9yLWNo ZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBnY2M6OmppdDo6cmVjb3Jk aW5nOjp0eXBlOjppc19hcnJheSBtZXRob2QsIGluCisgICBqaXQtcmVjb3JkaW5nLmMuICAqLwor CitnY2Nfaml0X3R5cGUgKgorZ2NjX2ppdF90eXBlX2R5bmNhc3RfYXJyYXkgKGdjY19qaXRfdHlw ZSAqdHlwZSkKK3sKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAodHlwZSwgTlVMTCwgTlVMTCwgIk5V TEwgdHlwZSIpOworCisgIHJldHVybiAoZ2NjX2ppdF90eXBlICopdHlwZS0+aXNfYXJyYXkgKCk7 Cit9CisKKy8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2NyaXB0aW9uIGluIGxpYmdjY2pp dC5oLgorCisgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJlYWwgd29yayBpcyBkb25lIGJ5 IHRoZQorICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6dHlwZTo6aXNfYm9vbCBtZXRob2QsIGluCisg ICBqaXQtcmVjb3JkaW5nLmMuICAqLworCitpbnQKK2djY19qaXRfdHlwZV9pc19ib29sIChnY2Nf aml0X3R5cGUgKnR5cGUpCit7CisgIFJFVFVSTl9WQUxfSUZfRkFJTCAodHlwZSwgRkFMU0UsIE5V TEwsIE5VTEwsICJOVUxMIHR5cGUiKTsKKworICByZXR1cm4gdHlwZS0+aXNfYm9vbCAoKTsKK30K KworLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0Lmgu CisKKyAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhl CisgICBnY2M6OmppdDo6cmVjb3JkaW5nOjp0eXBlOjppc19wb2ludGVyIG1ldGhvZCwgaW4KKyAg IGppdC1yZWNvcmRpbmcuYy4gICovCisKK2djY19qaXRfdHlwZSAqCitnY2Nfaml0X3R5cGVfaXNf cG9pbnRlciAoZ2NjX2ppdF90eXBlICp0eXBlKQoreworICBSRVRVUk5fTlVMTF9JRl9GQUlMICh0 eXBlLCBOVUxMLCBOVUxMLCAiTlVMTCB0eXBlIik7CisKKyAgcmV0dXJuIChnY2Nfaml0X3R5cGUg Kil0eXBlLT5pc19wb2ludGVyICgpOworfQorCisvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBk ZXNjcmlwdGlvbiBpbiBsaWJnY2NqaXQuaC4KKworICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRo ZSByZWFsIHdvcmsgaXMgZG9uZSBieSB0aGUKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6OnR5cGU6 OmlzX2ludCBtZXRob2QsIGluCisgICBqaXQtcmVjb3JkaW5nLmMuICAqLworCitpbnQKK2djY19q aXRfdHlwZV9pc19pbnRlZ3JhbCAoZ2NjX2ppdF90eXBlICp0eXBlKQoreworICBSRVRVUk5fVkFM X0lGX0ZBSUwgKHR5cGUsIEZBTFNFLCBOVUxMLCBOVUxMLCAiTlVMTCB0eXBlIik7CisKKyAgcmV0 dXJuIHR5cGUtPmlzX2ludCAoKTsKK30KKworLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVz Y3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUg cmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBnY2M6OmppdDo6cmVjb3JkaW5nOjp0eXBlOjpp c192ZWN0b3IgbWV0aG9kLCBpbgorICAgaml0LXJlY29yZGluZy5jLiAgKi8KKworZ2NjX2ppdF92 ZWN0b3JfdHlwZSAqCitnY2Nfaml0X3R5cGVfZHluY2FzdF92ZWN0b3IgKGdjY19qaXRfdHlwZSAq dHlwZSkKK3sKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAodHlwZSwgTlVMTCwgTlVMTCwgIk5VTEwg dHlwZSIpOworICBnY2M6OmppdDo6cmVjb3JkaW5nOjp2ZWN0b3JfdHlwZSAqdmVjdG9yX3R5cGUg PSB0eXBlLT5pc192ZWN0b3IgKCk7CisgIHJldHVybiAoZ2NjX2ppdF92ZWN0b3JfdHlwZSAqKXZl Y3Rvcl90eXBlOworfQorCisvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlvbiBp biBsaWJnY2NqaXQuaC4KKworICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRoZSByZWFsIHdvcmsg aXMgZG9uZSBieSB0aGUKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6OnR5cGU6OmlzX3N0cnVjdCBt ZXRob2QsIGluCisgICBqaXQtcmVjb3JkaW5nLmMuICAqLworCitnY2Nfaml0X3N0cnVjdCAqCitn Y2Nfaml0X3R5cGVfaXNfc3RydWN0IChnY2Nfaml0X3R5cGUgKnR5cGUpCit7CisgIFJFVFVSTl9O VUxMX0lGX0ZBSUwgKHR5cGUsIE5VTEwsIE5VTEwsICJOVUxMIHR5cGUiKTsKKyAgZ2NjOjpqaXQ6 OnJlY29yZGluZzo6c3RydWN0XyAqc3RydWN0X3R5cGUgPSB0eXBlLT5pc19zdHJ1Y3QgKCk7Cisg IHJldHVybiAoZ2NjX2ppdF9zdHJ1Y3QgKilzdHJ1Y3RfdHlwZTsKK30KKworLyogUHVibGljIGVu dHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAgIEFmdGVyIGVy cm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBnY2M6OmppdDo6 cmVjb3JkaW5nOjp2ZWN0b3JfdHlwZTo6Z2V0X251bV91bml0cyBtZXRob2QsIGluCisgICBqaXQt cmVjb3JkaW5nLmMuICAqLworCitzaXplX3QKK2djY19qaXRfdmVjdG9yX3R5cGVfZ2V0X251bV91 bml0cyAoZ2NjX2ppdF92ZWN0b3JfdHlwZSAqdmVjdG9yX3R5cGUpCit7CisgIFJFVFVSTl9WQUxf SUZfRkFJTCAodmVjdG9yX3R5cGUsIDAsIE5VTEwsIE5VTEwsICJOVUxMIHZlY3Rvcl90eXBlIik7 CisgIHJldHVybiB2ZWN0b3JfdHlwZS0+Z2V0X251bV91bml0cyAoKTsKK30KKworLyogUHVibGlj IGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAgIEFmdGVy IGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBnY2M6Ompp dDo6cmVjb3JkaW5nOjp2ZWN0b3JfdHlwZTo6Z2V0X2VsZW1lbnRfdHlwZSBtZXRob2QsIGluCisg ICBqaXQtcmVjb3JkaW5nLmMuICAqLworCitnY2Nfaml0X3R5cGUgKgorZ2NjX2ppdF92ZWN0b3Jf dHlwZV9nZXRfZWxlbWVudF90eXBlIChnY2Nfaml0X3ZlY3Rvcl90eXBlICp2ZWN0b3JfdHlwZSkK K3sKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAodmVjdG9yX3R5cGUsIE5VTEwsIE5VTEwsICJOVUxM IHZlY3Rvcl90eXBlIik7CisgIHJldHVybiAoZ2NjX2ppdF90eXBlICopdmVjdG9yX3R5cGUtPmdl dF9lbGVtZW50X3R5cGUgKCk7Cit9CisKKy8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2Ny aXB0aW9uIGluIGxpYmdjY2ppdC5oLgorCisgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJl YWwgd29yayBpcyBkb25lIGJ5IHRoZQorICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6dHlwZTo6dW5x dWFsaWZpZWQgbWV0aG9kLCBpbgorICAgaml0LXJlY29yZGluZy5jLiAgKi8KKworZ2NjX2ppdF90 eXBlICoKK2djY19qaXRfdHlwZV91bnF1YWxpZmllZCAoZ2NjX2ppdF90eXBlICp0eXBlKQorewor ICBSRVRVUk5fTlVMTF9JRl9GQUlMICh0eXBlLCBOVUxMLCBOVUxMLCAiTlVMTCB0eXBlIik7CisK KyAgcmV0dXJuIChnY2Nfaml0X3R5cGUgKil0eXBlLT51bnF1YWxpZmllZCAoKTsKK30KKworLyog UHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAg IEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBn Y2M6OmppdDo6cmVjb3JkaW5nOjp0eXBlOjpkeW5fY2FzdF9mdW5jdGlvbl90eXBlIG1ldGhvZCwg aW4KKyAgIGppdC1yZWNvcmRpbmcuYy4gICovCisKK2djY19qaXRfZnVuY3Rpb25fdHlwZSAqCitn Y2Nfaml0X3R5cGVfZHluY2FzdF9mdW5jdGlvbl9wdHJfdHlwZSAoZ2NjX2ppdF90eXBlICp0eXBl KQoreworICBSRVRVUk5fTlVMTF9JRl9GQUlMICh0eXBlLCBOVUxMLCBOVUxMLCAiTlVMTCB0eXBl Iik7CisgIGdjYzo6aml0OjpyZWNvcmRpbmc6OnR5cGUgKmZ1bmNfcHRyX3R5cGUgPSB0eXBlLT5k ZXJlZmVyZW5jZSAoKTsKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAoZnVuY19wdHJfdHlwZSwgTlVM TCwgTlVMTCwgIk5VTEwgdHlwZSIpOworCisgIHJldHVybiAoZ2NjX2ppdF9mdW5jdGlvbl90eXBl ICopZnVuY19wdHJfdHlwZS0+ZHluX2Nhc3RfZnVuY3Rpb25fdHlwZSAoKTsKK30KKworLyogUHVi bGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAgIEFm dGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBnY2M6 OmppdDo6cmVjb3JkaW5nOjpmdW5jdGlvbl90eXBlOjpnZXRfcmV0dXJuX3R5cGUgbWV0aG9kLCBp bgorICAgaml0LXJlY29yZGluZy5jLiAgKi8KKworZ2NjX2ppdF90eXBlICoKK2djY19qaXRfZnVu Y3Rpb25fdHlwZV9nZXRfcmV0dXJuX3R5cGUgKGdjY19qaXRfZnVuY3Rpb25fdHlwZSAqZnVuY3Rp b25fdHlwZSkKK3sKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAoZnVuY3Rpb25fdHlwZSwgTlVMTCwg TlVMTCwgIk5VTEwgZnVuY3Rpb25fdHlwZSIpOworICByZXR1cm4gKGdjY19qaXRfdHlwZSAqKWZ1 bmN0aW9uX3R5cGUtPmdldF9yZXR1cm5fdHlwZSAoKTsKK30KKworLyogUHVibGljIGVudHJ5cG9p bnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAgIEFmdGVyIGVycm9yLWNo ZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBnY2M6OmppdDo6cmVjb3Jk aW5nOjpmdW5jdGlvbl90eXBlOjpnZXRfcGFyYW1fdHlwZXMgbWV0aG9kLCBpbgorICAgaml0LXJl Y29yZGluZy5jLiAgKi8KKworc2l6ZV90CitnY2Nfaml0X2Z1bmN0aW9uX3R5cGVfZ2V0X3BhcmFt X2NvdW50IChnY2Nfaml0X2Z1bmN0aW9uX3R5cGUgKmZ1bmN0aW9uX3R5cGUpCit7CisgIFJFVFVS Tl9WQUxfSUZfRkFJTCAoZnVuY3Rpb25fdHlwZSwgMCwgTlVMTCwgTlVMTCwgIk5VTEwgZnVuY3Rp b25fdHlwZSIpOworICByZXR1cm4gZnVuY3Rpb25fdHlwZS0+Z2V0X3BhcmFtX3R5cGVzICgpLmxl bmd0aCAoKTsKK30KKworLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4g bGliZ2Njaml0LmguCisKKyAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlz IGRvbmUgYnkgdGhlCisgICBnY2M6OmppdDo6cmVjb3JkaW5nOjpmdW5jdGlvbl90eXBlOjpnZXRf cGFyYW1fdHlwZXMgbWV0aG9kLCBpbgorICAgaml0LXJlY29yZGluZy5jLiAgKi8KKworZ2NjX2pp dF90eXBlICoKK2djY19qaXRfZnVuY3Rpb25fdHlwZV9nZXRfcGFyYW1fdHlwZSAoZ2NjX2ppdF9m dW5jdGlvbl90eXBlICpmdW5jdGlvbl90eXBlLAorCQkJCXNpemVfdCBpbmRleCkKK3sKKyAgUkVU VVJOX05VTExfSUZfRkFJTCAoZnVuY3Rpb25fdHlwZSwgTlVMTCwgTlVMTCwgIk5VTEwgZnVuY3Rp b25fdHlwZSIpOworICBzaXplX3QgbnVtX3BhcmFtcyA9IGZ1bmN0aW9uX3R5cGUtPmdldF9wYXJh bV90eXBlcyAoKS5sZW5ndGggKCk7CisgIGdjYzo6aml0OjpyZWNvcmRpbmc6OmNvbnRleHQgKmN0 eHQgPSBmdW5jdGlvbl90eXBlLT5tX2N0eHQ7CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUxfUFJJTlRG MyAoaW5kZXggPCBudW1fcGFyYW1zLAorCQkJICAgICAgIGN0eHQsIE5VTEwsCisJCQkgICAgICAg ImluZGV4IG9mICVsZCBpcyB0b28gbGFyZ2UgKCVzIGhhcyAlbGQgcGFyYW1zKSIsCisJCQkgICAg ICAgaW5kZXgsCisJCQkgICAgICAgZnVuY3Rpb25fdHlwZS0+Z2V0X2RlYnVnX3N0cmluZyAoKSwK KwkJCSAgICAgICBudW1fcGFyYW1zKTsKKyAgcmV0dXJuIChnY2Nfaml0X3R5cGUgKilmdW5jdGlv bl90eXBlLT5nZXRfcGFyYW1fdHlwZXMgKClbaW5kZXhdOworfQorCiAvKiBQdWJsaWMgZW50cnlw b2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBsaWJnY2NqaXQuaC4KIAogICAgQWZ0ZXIgZXJyb3It Y2hlY2tpbmcsIHRoZSByZWFsIHdvcmsgaXMgZG9uZSBieSB0aGUKQEAgLTczNiw2ICs5MzIsNDIg QEAgZ2NjX2ppdF9zdHJ1Y3Rfc2V0X2ZpZWxkcyAoZ2NjX2ppdF9zdHJ1Y3QgKnN0cnVjdF90eXBl LAogCQkJICAgKGdjYzo6aml0OjpyZWNvcmRpbmc6OmZpZWxkICoqKWZpZWxkcyk7CiB9CiAKKwor LyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisK KyAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisg ICBnY2M6OmppdDo6cmVjb3JkaW5nOjpmaWVsZHM6OmdldF9maWVsZCBtZXRob2QgaW4KKyAgIGpp dC1yZWNvcmRpbmcuYy4gICovCitleHRlcm4gZ2NjX2ppdF9maWVsZCAqCitnY2Nfaml0X3N0cnVj dF9nZXRfZmllbGQgKGdjY19qaXRfc3RydWN0ICpzdHJ1Y3RfdHlwZSwKKwkJCSAgIHNpemVfdCBp bmRleCkKK3sKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAoc3RydWN0X3R5cGUsIE5VTEwsIE5VTEws ICJOVUxMIHN0cnVjdCB0eXBlIik7CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKHN0cnVjdF90eXBl LT5nZXRfZmllbGRzICgpLCBOVUxMLCBOVUxMLAorCQkJCSJOVUxMIHN0cnVjdCBmaWVsZHMiKTsK KyAgc2l6ZV90IG51bV9maWVsZHMgPSBzdHJ1Y3RfdHlwZS0+Z2V0X2ZpZWxkcyAoKS0+bGVuZ3Ro ICgpOworICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5URjMgKGluZGV4IDwgbnVtX2ZpZWxkcywK KwkJCSAgICAgICBOVUxMLCBOVUxMLAorCQkJICAgICAgICJpbmRleCBvZiAlbGQgaXMgdG9vIGxh cmdlICglcyBoYXMgJWxkIGZpZWxkcykiLAorCQkJICAgICAgIGluZGV4LAorCQkJICAgICAgIHN0 cnVjdF90eXBlLT5nZXRfZGVidWdfc3RyaW5nICgpLAorCQkJICAgICAgIG51bV9maWVsZHMpOwor ICByZXR1cm4gKGdjY19qaXRfZmllbGQgKilzdHJ1Y3RfdHlwZS0+Z2V0X2ZpZWxkcyAoKS0+Z2V0 X2ZpZWxkIChpbmRleCk7Cit9CisKKy8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2NyaXB0 aW9uIGluIGxpYmdjY2ppdC5oLgorCisgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhpcyBjYWxs cyB0aGUgdHJpdmlhbAorICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6c3RydWN0Xzo6Z2V0X2ZpZWxk cyBtZXRob2QgaW4KKyAgIGppdC1yZWNvcmRpbmcuaC4gICovCisKK3NpemVfdAorZ2NjX2ppdF9z dHJ1Y3RfZ2V0X2ZpZWxkX2NvdW50IChnY2Nfaml0X3N0cnVjdCAqc3RydWN0X3R5cGUpCit7Cisg IFJFVFVSTl9WQUxfSUZfRkFJTCAoc3RydWN0X3R5cGUsIDAsIE5VTEwsIE5VTEwsICJOVUxMIHN0 cnVjdCB0eXBlIik7CisgIHJldHVybiBzdHJ1Y3RfdHlwZS0+Z2V0X2ZpZWxkcyAoKS0+bGVuZ3Ro ICgpOworfQorCiAvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBsaWJn Y2NqaXQuaC4KIAogICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRoZSByZWFsIHdvcmsgaXMgZG9u ZSBieSB0aGUKQEAgLTEwMTcsNiArMTI0OSwzNSBAQCBnY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJh bSAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYywgaW50IGluZGV4KQogICByZXR1cm4gc3RhdGljX2Nh c3QgPGdjY19qaXRfcGFyYW0gKj4gKGZ1bmMtPmdldF9wYXJhbSAoaW5kZXgpKTsKIH0KIAorLyog UHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAg IEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBn Y2M6OmppdDo6cmVjb3JkaW5nOjpmdW5jdGlvbjo6Z2V0X3BhcmFtcyBtZXRob2QsIGluCisgICBq aXQtcmVjb3JkaW5nLmguCisgICovCisKK3NpemVfdAorZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFy YW1fY291bnQgKGdjY19qaXRfZnVuY3Rpb24gKmZ1bmMpCit7CisgIFJFVFVSTl9WQUxfSUZfRkFJ TCAoZnVuYywgMCwgTlVMTCwgTlVMTCwgIk5VTEwgZnVuY3Rpb24iKTsKKyAgZ2NjOjpqaXQ6OnJl Y29yZGluZzo6Y29udGV4dCAqY3R4dCA9IGZ1bmMtPm1fY3R4dDsKKyAgSklUX0xPR19GVU5DIChj dHh0LT5nZXRfbG9nZ2VyICgpKTsKKyAgcmV0dXJuIGZ1bmMtPmdldF9wYXJhbXMgKCkubGVuZ3Ro ICgpOworfQorCisvKiBQdWJsaWMgZW50cnlwb2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBsaWJn Y2NqaXQuaC4KKworICAgQWZ0ZXIgZXJyb3ItY2hlY2tpbmcsIHRoZSByZWFsIHdvcmsgaXMgZG9u ZSBieSB0aGUKKyAgIGdjYzo6aml0OjpyZWNvcmRpbmc6OmZ1bmN0aW9uOjpnZXRfcmV0dXJuX3R5 cGUgbWV0aG9kLCBpbgorICAgaml0LXJlY29yZGluZy5oLiAgKi8KKworZ2NjX2ppdF90eXBlICoK K2djY19qaXRfZnVuY3Rpb25fZ2V0X3JldHVybl90eXBlIChnY2Nfaml0X2Z1bmN0aW9uICpmdW5j KQoreworICAgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKGZ1bmMsIE5VTEwsIE5VTEwsICJOVUxMIGZ1 bmN0aW9uX3R5cGUiKTsKKyAgICByZXR1cm4gKGdjY19qaXRfdHlwZSAqKWZ1bmMtPmdldF9yZXR1 cm5fdHlwZSAoKTsKK30KKwogLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24g aW4gbGliZ2Njaml0LmguCiAKICAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3Jr IGlzIGRvbmUgYnkgdGhlCmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdC5oIGIvZ2NjL2pp dC9saWJnY2NqaXQuaAppbmRleCA1YzcyMmMyYzU3Zi4uYTFjOTQzNmM1NDUgMTAwNjQ0Ci0tLSBh L2djYy9qaXQvbGliZ2Njaml0LmgKKysrIGIvZ2NjL2ppdC9saWJnY2NqaXQuaApAQCAtNjEsNiAr NjEsOCBAQCB0eXBlZGVmIHN0cnVjdCBnY2Nfaml0X3Jlc3VsdCBnY2Nfaml0X3Jlc3VsdDsKIAkg Ky0gZ2NjX2ppdF9sb2NhdGlvbgogCSArLSBnY2Nfaml0X3R5cGUKIAkgICAgKy0gZ2NjX2ppdF9z dHJ1Y3QKKwkgICAgKy0gZ2NjX2ppdF9mdW5jdGlvbl90eXBlCisJICAgICstIGdjY19qaXRfdmVj dG9yX3R5cGUKIAkgKy0gZ2NjX2ppdF9maWVsZAogCSArLSBnY2Nfaml0X2Z1bmN0aW9uCiAJICst IGdjY19qaXRfYmxvY2sKQEAgLTk3LDYgKzk5LDEyIEBAIHR5cGVkZWYgc3RydWN0IGdjY19qaXRf ZmllbGQgZ2NjX2ppdF9maWVsZDsKICAgIHRoZSBsYXlvdXQgZm9yLCBvciBhbiBvcGFxdWUgdHlw ZS4gICovCiB0eXBlZGVmIHN0cnVjdCBnY2Nfaml0X3N0cnVjdCBnY2Nfaml0X3N0cnVjdDsKIAor LyogQSBnY2Nfaml0X2Z1bmN0aW9uX3R5cGUgZW5jYXBzdWxhdGVzIGEgZnVuY3Rpb24gdHlwZS4g ICovCit0eXBlZGVmIHN0cnVjdCBnY2Nfaml0X2Z1bmN0aW9uX3R5cGUgZ2NjX2ppdF9mdW5jdGlv bl90eXBlOworCisvKiBBIGdjY19qaXRfdmVjdG9yX3R5cGUgZW5jYXBzdWxhdGVzIGEgdmVjdG9y IHR5cGUuICAqLwordHlwZWRlZiBzdHJ1Y3QgZ2NjX2ppdF92ZWN0b3JfdHlwZSBnY2Nfaml0X3Zl Y3Rvcl90eXBlOworCiAvKiBBIGdjY19qaXRfZnVuY3Rpb24gZW5jYXBzdWxhdGVzIGEgZnVuY3Rp b246IGVpdGhlciBvbmUgdGhhdCB5b3UncmUKICAgIGNyZWF0aW5nIHlvdXJzZWxmLCBvciBhIHJl ZmVyZW5jZSB0byBvbmUgdGhhdCB5b3UncmUgZHluYW1pY2FsbHkKICAgIGxpbmtpbmcgdG8gd2l0 aGluIHRoZSByZXN0IG9mIHRoZSBwcm9jZXNzLiAgKi8KQEAgLTY1NCw2ICs2NjIsMTUgQEAgZ2Nj X2ppdF9zdHJ1Y3Rfc2V0X2ZpZWxkcyAoZ2NjX2ppdF9zdHJ1Y3QgKnN0cnVjdF90eXBlLAogCQkJ ICAgaW50IG51bV9maWVsZHMsCiAJCQkgICBnY2Nfaml0X2ZpZWxkICoqZmllbGRzKTsKIAorLyog R2V0IGEgZmllbGQgYnkgaW5kZXguICAqLworZXh0ZXJuIGdjY19qaXRfZmllbGQgKgorZ2NjX2pp dF9zdHJ1Y3RfZ2V0X2ZpZWxkIChnY2Nfaml0X3N0cnVjdCAqc3RydWN0X3R5cGUsCisJCQkgICBz aXplX3QgaW5kZXgpOworCisvKiBHZXQgdGhlIG51bWJlciBvZiBmaWVsZHMuICAqLworZXh0ZXJu IHNpemVfdAorZ2NjX2ppdF9zdHJ1Y3RfZ2V0X2ZpZWxkX2NvdW50IChnY2Nfaml0X3N0cnVjdCAq c3RydWN0X3R5cGUpOworCiAvKiBVbmlvbnMgd29yayBzaW1pbGFybHkgdG8gc3RydWN0cy4gICov CiBleHRlcm4gZ2NjX2ppdF90eXBlICoKIGdjY19qaXRfY29udGV4dF9uZXdfdW5pb25fdHlwZSAo Z2NjX2ppdF9jb250ZXh0ICpjdHh0LApAQCAtMTYyMSw2ICsxNjM4LDc4IEBAIGdjY19qaXRfY29u dGV4dF9hZGRfdG9wX2xldmVsX2FzbSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAogCQkJCSAgIGdj Y19qaXRfbG9jYXRpb24gKmxvYywKIAkJCQkgICBjb25zdCBjaGFyICphc21fc3RtdHMpOwogCisj ZGVmaW5lIExJQkdDQ0pJVF9IQVZFX1JFRkxFQ1RJT04KKworLyogUmVmbGVjdGlvbiBmdW5jdGlv bnMgdG8gZ2V0IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycywgcmV0dXJuIHR5cGUgb2YKKyAgIGEg ZnVuY3Rpb24gYW5kIHdoZXRoZXIgYSB0eXBlIGlzIGEgYm9vbCBmcm9tIHRoZSBDIEFQSS4KKwor ICAgVGhpcyBBUEkgZW50cnlwb2ludCB3YXMgYWRkZWQgaW4gTElCR0NDSklUX0FCSV8xNjsgeW91 IGNhbiB0ZXN0IGZvciBpdHMKKyAgIHByZXNlbmNlIHVzaW5nCisgICAgICNpZmRlZiBMSUJHQ0NK SVRfSEFWRV9SRUZMRUNUSU9OCisqLworLyogR2V0IHRoZSByZXR1cm4gdHlwZSBvZiBhIGZ1bmN0 aW9uLiAgKi8KK2V4dGVybiBnY2Nfaml0X3R5cGUgKgorZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcmV0 dXJuX3R5cGUgKGdjY19qaXRfZnVuY3Rpb24gKmZ1bmMpOworCisvKiBHZXQgdGhlIG51bWJlciBv ZiBwYXJhbXMgb2YgYSBmdW5jdGlvbi4gICovCitleHRlcm4gc2l6ZV90CitnY2Nfaml0X2Z1bmN0 aW9uX2dldF9wYXJhbV9jb3VudCAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYyk7CisKKy8qIEdldCB0 aGUgZWxlbWVudCB0eXBlIG9mIGFuIGFycmF5IHR5cGUgb3IgTlVMTCBpZiBpdCdzIG5vdCBhbiBh cnJheS4gICovCitleHRlcm4gZ2NjX2ppdF90eXBlICoKK2djY19qaXRfdHlwZV9keW5jYXN0X2Fy cmF5IChnY2Nfaml0X3R5cGUgKnR5cGUpOworCisvKiBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIHR5 cGUgaXMgYSBib29sLiAgKi8KK2V4dGVybiBpbnQKK2djY19qaXRfdHlwZV9pc19ib29sIChnY2Nf aml0X3R5cGUgKnR5cGUpOworCisvKiBSZXR1cm4gdGhlIGZ1bmN0aW9uIHR5cGUgaWYgaXQgaXMg b25lIG9yIE5VTEwuICAqLworZXh0ZXJuIGdjY19qaXRfZnVuY3Rpb25fdHlwZSAqCitnY2Nfaml0 X3R5cGVfZHluY2FzdF9mdW5jdGlvbl9wdHJfdHlwZSAoZ2NjX2ppdF90eXBlICp0eXBlKTsKKwor LyogR2l2ZW4gYSBmdW5jdGlvbiB0eXBlLCByZXR1cm4gaXRzIHJldHVybiB0eXBlLiAgKi8KK2V4 dGVybiBnY2Nfaml0X3R5cGUgKgorZ2NjX2ppdF9mdW5jdGlvbl90eXBlX2dldF9yZXR1cm5fdHlw ZSAoZ2NjX2ppdF9mdW5jdGlvbl90eXBlICpmdW5jdGlvbl90eXBlKTsKKworLyogR2l2ZW4gYSBm dW5jdGlvbiB0eXBlLCByZXR1cm4gaXRzIG51bWJlciBvZiBwYXJhbWV0ZXJzLiAgKi8KK2V4dGVy biBzaXplX3QKK2djY19qaXRfZnVuY3Rpb25fdHlwZV9nZXRfcGFyYW1fY291bnQgKGdjY19qaXRf ZnVuY3Rpb25fdHlwZSAqZnVuY3Rpb25fdHlwZSk7CisKKy8qIEdpdmVuIGEgZnVuY3Rpb24gdHlw ZSwgcmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyLiAgKi8KK2V4dGVy biBnY2Nfaml0X3R5cGUgKgorZ2NjX2ppdF9mdW5jdGlvbl90eXBlX2dldF9wYXJhbV90eXBlIChn Y2Nfaml0X2Z1bmN0aW9uX3R5cGUgKmZ1bmN0aW9uX3R5cGUsCisJCQkJc2l6ZV90IGluZGV4KTsK KworLyogUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSB0eXBlIGlzIGFuIGludGVncmFsLiAgKi8KK2V4 dGVybiBpbnQKK2djY19qaXRfdHlwZV9pc19pbnRlZ3JhbCAoZ2NjX2ppdF90eXBlICp0eXBlKTsK KworLyogUmV0dXJuIHRoZSB0eXBlIHBvaW50ZWQgYnkgdGhlIHBvaW50ZXIgdHlwZSBvciBOVUxM IGlmIGl0J3Mgbm90IGEKKyAqIHBvaW50ZXIuICAqLworZXh0ZXJuIGdjY19qaXRfdHlwZSAqCitn Y2Nfaml0X3R5cGVfaXNfcG9pbnRlciAoZ2NjX2ppdF90eXBlICp0eXBlKTsKKworLyogR2l2ZW4g YSB0eXBlLCByZXR1cm4gYSBkeW5hbWljIGNhc3QgdG8gYSB2ZWN0b3IgdHlwZSBvciBOVUxMLiAg Ki8KK2V4dGVybiBnY2Nfaml0X3ZlY3Rvcl90eXBlICoKK2djY19qaXRfdHlwZV9keW5jYXN0X3Zl Y3RvciAoZ2NjX2ppdF90eXBlICp0eXBlKTsKKworLyogR2l2ZW4gYSB0eXBlLCByZXR1cm4gYSBk eW5hbWljIGNhc3QgdG8gYSBzdHJ1Y3QgdHlwZSBvciBOVUxMLiAgKi8KK2V4dGVybiBnY2Nfaml0 X3N0cnVjdCAqCitnY2Nfaml0X3R5cGVfaXNfc3RydWN0IChnY2Nfaml0X3R5cGUgKnR5cGUpOwor CisvKiBHaXZlbiBhIHZlY3RvciB0eXBlLCByZXR1cm4gdGhlIG51bWJlciBvZiB1bml0cyBpdCBj b250YWlucy4gICovCitleHRlcm4gc2l6ZV90CitnY2Nfaml0X3ZlY3Rvcl90eXBlX2dldF9udW1f dW5pdHMgKGdjY19qaXRfdmVjdG9yX3R5cGUgKnZlY3Rvcl90eXBlKTsKKworLyogR2l2ZW4gYSB2 ZWN0b3IgdHlwZSwgcmV0dXJuIHRoZSB0eXBlIG9mIGl0cyBlbGVtZW50cy4gICovCitleHRlcm4g Z2NjX2ppdF90eXBlICoKK2djY19qaXRfdmVjdG9yX3R5cGVfZ2V0X2VsZW1lbnRfdHlwZSAoZ2Nj X2ppdF92ZWN0b3JfdHlwZSAqdmVjdG9yX3R5cGUpOworCisvKiBHaXZlbiBhIHR5cGUsIHJldHVy biB0aGUgdW5xdWFsaWZpZWQgdHlwZSwgcmVtb3ZpbmcgImNvbnN0IiwgInZvbGF0aWxlIgorICog YW5kIGFsaWdubWVudCBxdWFsaWZpZXJzLiAgKi8KK2V4dGVybiBnY2Nfaml0X3R5cGUgKgorZ2Nj X2ppdF90eXBlX3VucXVhbGlmaWVkIChnY2Nfaml0X3R5cGUgKnR5cGUpOworCiAjaWZkZWYgX19j cGx1c3BsdXMKIH0KICNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2pp dC9saWJnY2NqaXQubWFwIGIvZ2NjL2ppdC9saWJnY2NqaXQubWFwCmluZGV4IDMzN2VhNmM3ZmU0 Li42NGU3OTA5NDllOCAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9saWJnY2NqaXQubWFwCisrKyBiL2dj Yy9qaXQvbGliZ2Njaml0Lm1hcApAQCAtMjA1LDMgKzIwNSwyNCBAQCBMSUJHQ0NKSVRfQUJJXzE1 IHsKICAgICBnY2Nfaml0X2V4dGVuZGVkX2FzbV9hZGRfY2xvYmJlcjsKICAgICBnY2Nfaml0X2Nv bnRleHRfYWRkX3RvcF9sZXZlbF9hc207CiB9IExJQkdDQ0pJVF9BQklfMTQ7CisKK0xJQkdDQ0pJ VF9BQklfMTYgeworICBnbG9iYWw6CisgICAgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcmV0dXJuX3R5 cGU7CisgICAgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFyYW1fY291bnQ7CisgICAgZ2NjX2ppdF9m dW5jdGlvbl90eXBlX2dldF9yZXR1cm5fdHlwZTsKKyAgICBnY2Nfaml0X2Z1bmN0aW9uX3R5cGVf Z2V0X3BhcmFtX2NvdW50OworICAgIGdjY19qaXRfZnVuY3Rpb25fdHlwZV9nZXRfcGFyYW1fdHlw ZTsKKyAgICBnY2Nfaml0X3R5cGVfdW5xdWFsaWZpZWQ7CisgICAgZ2NjX2ppdF90eXBlX2R5bmNh c3RfYXJyYXk7CisgICAgZ2NjX2ppdF90eXBlX2lzX2Jvb2w7CisgICAgZ2NjX2ppdF90eXBlX2R5 bmNhc3RfZnVuY3Rpb25fcHRyX3R5cGU7CisgICAgZ2NjX2ppdF90eXBlX2lzX2ludGVncmFsOwor ICAgIGdjY19qaXRfdHlwZV9pc19wb2ludGVyOworICAgIGdjY19qaXRfdHlwZV9keW5jYXN0X3Zl Y3RvcjsKKyAgICBnY2Nfaml0X3ZlY3Rvcl90eXBlX2dldF9lbGVtZW50X3R5cGU7CisgICAgZ2Nj X2ppdF92ZWN0b3JfdHlwZV9nZXRfbnVtX3VuaXRzOworICAgIGdjY19qaXRfc3RydWN0X2dldF9m aWVsZDsKKyAgICBnY2Nfaml0X3R5cGVfaXNfc3RydWN0OworICAgIGdjY19qaXRfc3RydWN0X2dl dF9maWVsZF9jb3VudDsKK30gTElCR0NDSklUX0FCSV8xNTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQu ZGcvYWxsLW5vbi1mYWlsaW5nLXRlc3RzLmgKaW5kZXggODRlZjU0YTAzODYuLmE3ZmRkZjk2ZGI4 IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMu aAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZhaWxpbmctdGVzdHMuaApAQCAt MjY1LDYgKzI2NSwxMyBAQAogI3VuZGVmIGNyZWF0ZV9jb2RlCiAjdW5kZWYgdmVyaWZ5X2NvZGUK IAorLyogdGVzdC1yZWZsZWN0aW9uLmMgKi8KKyNkZWZpbmUgY3JlYXRlX2NvZGUgY3JlYXRlX2Nv ZGVfcmVmbGVjdGlvbgorI2RlZmluZSB2ZXJpZnlfY29kZSB2ZXJpZnlfY29kZV9yZWZsZWN0aW9u CisjaW5jbHVkZSAidGVzdC1yZWZsZWN0aW9uLmMiCisjdW5kZWYgY3JlYXRlX2NvZGUKKyN1bmRl ZiB2ZXJpZnlfY29kZQorCiAvKiB0ZXN0LXN0cmluZy1saXRlcmFsLmMgKi8KICNkZWZpbmUgY3Jl YXRlX2NvZGUgY3JlYXRlX2NvZGVfc3RyaW5nX2xpdGVyYWwKICNkZWZpbmUgdmVyaWZ5X2NvZGUg dmVyaWZ5X2NvZGVfc3RyaW5nX2xpdGVyYWwKQEAgLTQzNCw2ICs0NDEsOSBAQCBjb25zdCBzdHJ1 Y3QgdGVzdGNhc2UgdGVzdGNhc2VzW10gPSB7CiAgIHsicmVhZGluZ19zdHJ1Y3QgIiwKICAgIGNy ZWF0ZV9jb2RlX3JlYWRpbmdfc3RydWN0ICwKICAgIHZlcmlmeV9jb2RlX3JlYWRpbmdfc3RydWN0 IH0sCisgIHsicmVmbGVjdGlvbiIsCisgICBjcmVhdGVfY29kZV9yZWZsZWN0aW9uICwKKyAgIHZl cmlmeV9jb2RlX3JlZmxlY3Rpb24gfSwKICAgeyJzdHJpbmdfbGl0ZXJhbCIsCiAgICBjcmVhdGVf Y29kZV9zdHJpbmdfbGl0ZXJhbCwKICAgIHZlcmlmeV9jb2RlX3N0cmluZ19saXRlcmFsfSwKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtcmVmbGVjdGlvbi5jIGIvZ2NjL3Rl c3RzdWl0ZS9qaXQuZGcvdGVzdC1yZWZsZWN0aW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjExMmEyNDU1YzA3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9qaXQuZGcvdGVzdC1yZWZsZWN0aW9uLmMKQEAgLTAsMCArMSw5NSBAQAorI2luY2x1ZGUg PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJsaWJnY2NqaXQuaCIK KworI2luY2x1ZGUgImhhcm5lc3MuaCIKKwordm9pZAorY3JlYXRlX2NvZGUgKGdjY19qaXRfY29u dGV4dCAqY3R4dCwgdm9pZCAqdXNlcl9kYXRhKQoreworICAvKiBEbyBub3RoaW5nLiAgKi8KK30K Kwordm9pZAordmVyaWZ5X2NvZGUgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9yZXN1 bHQgKnJlc3VsdCkKK3sKKyAgLyogR2V0IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMuICAqLworICBn Y2Nfaml0X2Z1bmN0aW9uICpidWlsdGluX3NpbiA9CisgICAgZ2NjX2ppdF9jb250ZXh0X2dldF9i dWlsdGluX2Z1bmN0aW9uIChjdHh0LCAic2luIik7CisKKyAgQ0hFQ0tfVkFMVUUgKGdjY19qaXRf ZnVuY3Rpb25fZ2V0X3BhcmFtX2NvdW50KGJ1aWx0aW5fc2luKSwgMSk7CisKKyAgZ2NjX2ppdF90 eXBlICpkb3VibGVfdHlwZSA9CisgICAgZ2NjX2ppdF9jb250ZXh0X2dldF90eXBlIChjdHh0LCBH Q0NfSklUX1RZUEVfRE9VQkxFKTsKKyAgQ0hFQ0tfVkFMVUUgKGdjY19qaXRfZnVuY3Rpb25fZ2V0 X3JldHVybl90eXBlKGJ1aWx0aW5fc2luKSwgZG91YmxlX3R5cGUpOworICBDSEVDSyAoIWdjY19q aXRfdHlwZV9pc19pbnRlZ3JhbChkb3VibGVfdHlwZSkpOworCisgIGdjY19qaXRfdHlwZSAqYm9v bF90eXBlID0KKyAgICBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgKGN0eHQsIEdDQ19KSVRfVFlQ RV9CT09MKTsKKyAgQ0hFQ0sgKGdjY19qaXRfdHlwZV9pc19ib29sKGJvb2xfdHlwZSkpOworICBD SEVDSyAoIWdjY19qaXRfdHlwZV9pc19pbnRlZ3JhbChib29sX3R5cGUpKTsKKworICBnY2Nfaml0 X3R5cGUgKmFsaWduZWRfYm9vbF90eXBlID0KKyAgICBnY2Nfaml0X3R5cGVfZ2V0X2FsaWduZWQo Z2NjX2ppdF9jb250ZXh0X2dldF90eXBlIChjdHh0LCBHQ0NfSklUX1RZUEVfQk9PTCksIDgpOwor ICBDSEVDSyAoZ2NjX2ppdF90eXBlX2lzX2Jvb2woYWxpZ25lZF9ib29sX3R5cGUpKTsKKyAgQ0hF Q0sgKGJvb2xfdHlwZSAhPSBhbGlnbmVkX2Jvb2xfdHlwZSk7CisgIENIRUNLX1ZBTFVFIChnY2Nf aml0X3R5cGVfdW5xdWFsaWZpZWQoYWxpZ25lZF9ib29sX3R5cGUpLCBib29sX3R5cGUpOworCisg IENIRUNLX1ZBTFVFIChnY2Nfaml0X3R5cGVfdW5xdWFsaWZpZWQoZ2NjX2ppdF90eXBlX2dldF9j b25zdChib29sX3R5cGUpKSwgYm9vbF90eXBlKTsKKyAgQ0hFQ0tfVkFMVUUgKGdjY19qaXRfdHlw ZV91bnF1YWxpZmllZChnY2Nfaml0X3R5cGVfZ2V0X3ZvbGF0aWxlKGJvb2xfdHlwZSkpLCBib29s X3R5cGUpOworCisgIGdjY19qaXRfdHlwZSAqaW50NjQgPQorICAgIGdjY19qaXRfY29udGV4dF9n ZXRfaW50X3R5cGUoY3R4dCwgOCwgMSk7CisgIENIRUNLIChnY2Nfaml0X3R5cGVfaXNfaW50ZWdy YWwoaW50NjQpKTsKKyAgZ2NjX2ppdF90eXBlICp1aW50NjQgPQorICAgIGdjY19qaXRfY29udGV4 dF9nZXRfaW50X3R5cGUoY3R4dCwgOCwgMCk7CisgIENIRUNLIChnY2Nfaml0X3R5cGVfaXNfaW50 ZWdyYWwodWludDY0KSk7CisgIGdjY19qaXRfdHlwZSAqaW50OCA9CisgICAgZ2NjX2ppdF9jb250 ZXh0X2dldF9pbnRfdHlwZShjdHh0LCAxLCAxKTsKKyAgQ0hFQ0sgKGdjY19qaXRfdHlwZV9pc19p bnRlZ3JhbChpbnQ4KSk7CisgIGdjY19qaXRfdHlwZSAqdWludDggPQorICAgIGdjY19qaXRfY29u dGV4dF9nZXRfaW50X3R5cGUoY3R4dCwgMSwgMCk7CisgIENIRUNLIChnY2Nfaml0X3R5cGVfaXNf aW50ZWdyYWwodWludDgpKTsKKworICBDSEVDSyAoIWdjY19qaXRfdHlwZV9keW5jYXN0X3ZlY3Rv cihkb3VibGVfdHlwZSkpOworICBnY2Nfaml0X3R5cGUgKnZlY190eXBlID0gZ2NjX2ppdF90eXBl X2dldF92ZWN0b3IgKGRvdWJsZV90eXBlLCA0KTsKKyAgZ2NjX2ppdF92ZWN0b3JfdHlwZSAqdmVj dG9yX3R5cGUgPSBnY2Nfaml0X3R5cGVfZHluY2FzdF92ZWN0b3IodmVjX3R5cGUpOworICBDSEVD SyAodmVjdG9yX3R5cGUpOworICBDSEVDSyAodmVjX3R5cGUgIT0gZG91YmxlX3R5cGUpOworICBD SEVDS19WQUxVRSAoZ2NjX2ppdF92ZWN0b3JfdHlwZV9nZXRfZWxlbWVudF90eXBlKHZlY3Rvcl90 eXBlKSwgZG91YmxlX3R5cGUpOworICBDSEVDS19WQUxVRSAoZ2NjX2ppdF92ZWN0b3JfdHlwZV9n ZXRfbnVtX3VuaXRzKHZlY3Rvcl90eXBlKSwgNCk7CisKKyAgQ0hFQ0sgKCFnY2Nfaml0X3R5cGVf aXNfcG9pbnRlcihkb3VibGVfdHlwZSkpOworICBDSEVDS19WQUxVRSAoZ2NjX2ppdF90eXBlX2lz X3BvaW50ZXIoZ2NjX2ppdF90eXBlX2dldF9wb2ludGVyKGRvdWJsZV90eXBlKSksIGRvdWJsZV90 eXBlKTsKKworICBnY2Nfaml0X3R5cGUqIHBhcmFtc1syXSA9IHtpbnQ4LCB1aW50NjR9OworICBn Y2Nfaml0X3R5cGUgKmZ1bmN0aW9uX3B0cl90eXBlID0gZ2NjX2ppdF9jb250ZXh0X25ld19mdW5j dGlvbl9wdHJfdHlwZShjdHh0LCBOVUxMLCBpbnQ2NCwgMiwgcGFyYW1zLCAwKTsKKyAgQ0hFQ0sg KCFnY2Nfaml0X3R5cGVfZHluY2FzdF9mdW5jdGlvbl9wdHJfdHlwZSAoaW50NjQpKTsKKyAgZ2Nj X2ppdF9mdW5jdGlvbl90eXBlICpmdW5jdGlvbl90eXBlID0gZ2NjX2ppdF90eXBlX2R5bmNhc3Rf ZnVuY3Rpb25fcHRyX3R5cGUgKGZ1bmN0aW9uX3B0cl90eXBlKTsKKyAgQ0hFQ0sgKGZ1bmN0aW9u X3R5cGUpOworICBpbnQgcGFyYW1fY291bnQgPSBnY2Nfaml0X2Z1bmN0aW9uX3R5cGVfZ2V0X3Bh cmFtX2NvdW50KGZ1bmN0aW9uX3R5cGUpOworICBDSEVDS19WQUxVRSAocGFyYW1fY291bnQsIDIp OworICBnY2Nfaml0X3R5cGUgKnJldHVybl90eXBlID0gZ2NjX2ppdF9mdW5jdGlvbl90eXBlX2dl dF9yZXR1cm5fdHlwZShmdW5jdGlvbl90eXBlKTsKKyAgQ0hFQ0tfVkFMVUUgKHJldHVybl90eXBl LCBpbnQ2NCk7CisgIGdjY19qaXRfdHlwZSAqcGFyYW0xID0gZ2NjX2ppdF9mdW5jdGlvbl90eXBl X2dldF9wYXJhbV90eXBlKGZ1bmN0aW9uX3R5cGUsIDApOworICBDSEVDS19WQUxVRSAocGFyYW0x LCBpbnQ4KTsKKyAgZ2NjX2ppdF90eXBlICpwYXJhbTIgPSBnY2Nfaml0X2Z1bmN0aW9uX3R5cGVf Z2V0X3BhcmFtX3R5cGUoZnVuY3Rpb25fdHlwZSwgMSk7CisgIENIRUNLX1ZBTFVFIChwYXJhbTIs IHVpbnQ2NCk7CisKKyAgZ2NjX2ppdF9maWVsZCAqZmllbGQxID0gZ2NjX2ppdF9jb250ZXh0X25l d19maWVsZCAoY3R4dCwgTlVMTCwgdWludDY0LCAiZmllbGQxIik7CisgIGdjY19qaXRfZmllbGQg KmZpZWxkMiA9IGdjY19qaXRfY29udGV4dF9uZXdfZmllbGQgKGN0eHQsIE5VTEwsIGRvdWJsZV90 eXBlLCAiZmllbGQyIik7CisgIGdjY19qaXRfZmllbGQgKmZpZWxkc1syXSA9IHsgZmllbGQxLCBm aWVsZDIgfTsKKyAgZ2NjX2ppdF9zdHJ1Y3QgKnN0cnVjdF90eXBlID0gZ2NjX2ppdF9jb250ZXh0 X25ld19zdHJ1Y3RfdHlwZSAoY3R4dCwgTlVMTCwgInRlc3RTdHJ1Y3QiLCAyLCBmaWVsZHMpOwor ICBDSEVDS19WQUxVRSAoZ2NjX2ppdF9zdHJ1Y3RfZ2V0X2ZpZWxkX2NvdW50KHN0cnVjdF90eXBl KSwgMik7CisgIENIRUNLX1ZBTFVFIChnY2Nfaml0X3N0cnVjdF9nZXRfZmllbGQoc3RydWN0X3R5 cGUsIDApLCBmaWVsZDEpOworICBDSEVDS19WQUxVRSAoZ2NjX2ppdF9zdHJ1Y3RfZ2V0X2ZpZWxk KHN0cnVjdF90eXBlLCAxKSwgZmllbGQyKTsKKyAgQ0hFQ0sgKCFnY2Nfaml0X3R5cGVfaXNfc3Ry dWN0KGRvdWJsZV90eXBlKSk7CisgIGdjY19qaXRfc3RydWN0ICpzdHJ1Y3RfdHkgPSBnY2Nfaml0 X3R5cGVfaXNfc3RydWN0KGdjY19qaXRfc3RydWN0X2FzX3R5cGUoc3RydWN0X3R5cGUpKTsKKyAg Q0hFQ0tfVkFMVUUgKHN0cnVjdF90eSwgc3RydWN0X3R5cGUpOworCisgIENIRUNLICghZ2NjX2pp dF90eXBlX2R5bmNhc3RfYXJyYXkoZG91YmxlX3R5cGUpKTsKKyAgZ2NjX2ppdF90eXBlKiBhcnJh eV90eXBlID0gZ2NjX2ppdF9jb250ZXh0X25ld19hcnJheV90eXBlKGN0eHQsIE5VTEwsIGRvdWJs ZV90eXBlLCAxKTsKKyAgQ0hFQ0tfVkFMVUUgKGdjY19qaXRfdHlwZV9keW5jYXN0X2FycmF5KGFy cmF5X3R5cGUpLCBkb3VibGVfdHlwZSk7Cit9CisKLS0gCjIuMzIuMAoK --=-NSRXcgwdUuziuypyOqSn--