Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0l1U-0006Yb-5s for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Dec 2022 14:58:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p0l1T-0004LC-25 for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Dec 2022 14:58:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0l1S-0004L2-IY for pgsql-hackers@lists.postgresql.org; Thu, 01 Dec 2022 14:58:46 +0000 Received: from mail-4322.protonmail.ch ([185.70.43.22]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0l1O-000549-Iw for pgsql-hackers@lists.postgresql.org; Thu, 01 Dec 2022 14:58:46 +0000 Date: Thu, 01 Dec 2022 14:58:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me; s=protonmail3; t=1669906719; x=1670165919; bh=8EBJmIn6DfgPjkvke1BEAToupDYoZY+sNLTilnBobSg=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=sYeXjevaWpLbhWIi+LzHk94ZUv+VPGMra1y7B03uc3ii1CtTEBJpDKI6NVXqobhtj 54Jlw2Tqeq3hRCOzX2f7sIEmbNgNHPgLNw162LtPQIiHoiff6RMoDdbvTRpsnsbojL /spPpLLlPQGYvs50Rmg5/sy7t7NVspBQxuttp+rgR/fNv9HZUK+ndGp1C+5rWnOBVj rLxzu/lRdF0qKXTm596natms7MHdBl5evdSAKF5eWrOH+RjX3LD9pQmxK17CGhLjVS bbF/lNDJTL6U/WGArxs9YAwKO98cTCVYr8ZbjfRiKnVwCHjNqOAw34qz18qqdZotFx xBoVLDWGKsHew== To: Michael Paquier From: gkokolatos@pm.me Cc: Justin Pryzby , pgsql-hackers@lists.postgresql.org, Rachel Heaton Subject: Re: Add LZ4 compression in pg_dump Message-ID: In-Reply-To: References: <-pU80vtiyXMfSSpn4SWOR97t71MVmDOyHaJtvGsdEfroFsFUDdc-UaqD-8LMPMw2sy-7B2_IVnlrATfVvXwtv8n3kexLePZ7iWgiOnE4jRI=@pm.me> <1j_ONBQqU3lQW7OqwbAFKbgcqjQosikcp7VPINqegLrHMCMGtFcXAuyjmW__VeviKyCbKTtucxFyPFUJ7sfqeOf4O90JEuUIe99Z5v7sdOg=@pm.me> Feedback-ID: 6383013:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_MezkQCEhHXEHlY0aqScvavycCdwJhs6FZmp9qUqfd7o" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --b1_MezkQCEhHXEHlY0aqScvavycCdwJhs6FZmp9qUqfd7o Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ------- Original Message ------- On Thursday, December 1st, 2022 at 3:05 AM, Michael Paquier wrote: >=20 >=20 > On Wed, Nov 30, 2022 at 05:11:44PM +0000, gkokolatos@pm.me wrote: >=20 > > Fair enough. The atteched v11 does that. 0001 introduces compression > > specification and is using it throughout. 0002 paves the way to the > > new interface by homogenizing the use of cfp. 0003 introduces the new > > API and stores the compression algorithm in the custom format header > > instead of the compression level integer. Finally 0004 adds support for > > LZ4. >=20 >=20 > I have been looking at 0001, and.. Hmm. I am really wondering > whether it would not be better to just nuke this warning into orbit. > This stuff enforces non-compression even if -Z has been used to a > non-default value. This has been moved to its current location by > cae2bb1 as of this thread: > https://www.postgresql.org/message-id/20160526.185551.242041780.horiguchi= .kyotaro%40lab.ntt.co.jp >=20 > However, this is only active if -Z is used when not building with > zlib. At the end, it comes down to whether we want to prioritize the > portability of pg_dump commands specifying a -Z/--compress across > environments knowing that these may or may not be built with zlib, > vs the amount of simplification/uniformity we would get across the > binaries in the tree once we switch everything to use the compression > specifications. Now that pg_basebackup and pg_receivewal are managed > by compression specifications, and that we'd want more compression > options for pg_dump, I would tend to do the latter and from now on > complain if attempting to do a pg_dump -Z under --without-zlib with a > compression level > 0. zlib is also widely available, and we don't > document the fact that non-compression is enforced in this case, > either. (Two TAP tests with the custom format had to be tweaked.) Fair enough. Thank you for looking. However I have a small comment on your new patch. - /* Custom and directory formats are compressed by default, others n= ot */ - if (compressLevel =3D=3D -1) - { -#ifdef HAVE_LIBZ - if (archiveFormat =3D=3D archCustom || archiveFormat =3D=3D= archDirectory) - compressLevel =3D Z_DEFAULT_COMPRESSION; - else -#endif - compressLevel =3D 0; - } Nuking the warning from orbit and changing the behaviour around disabling the requested compression when the libraries are not present, should not mean that we need to change the behaviour of default values for different formats. Please find v13 attached which reinstates it. Which in itself it got me looking and wondering why the tests succeeded. The only existing test covering that path is `defaults_dir_format` in `002_pg_dump.pl`. However as the test is currently written it does not check whether the output was compressed. The restore command would succeed in either case. A simple `gzip -t -r` against the directory will not suffice to test it, because there exist files which are never compressed in this format (.toc). A little bit more involved test case would need to be written, yet before I embark to this journey, I would like to know if you would agree to reinstate the defaults for those formats. >=20 > As per the patch, it is true that we do not need to bump the format of > the dump archives, as we can still store only the compression level > and guess the method from it. I have added some notes about that in > ReadHead and WriteHead to not forget. Agreed. A minor suggestion if you may. #ifndef HAVE_LIBZ - if (AH->compression !=3D 0) + if (AH->compression_spec.algorithm =3D=3D PG_COMPRESSION_GZIP) pg_log_warning("archive is compressed, but this installatio= n does not support compression -- no data will be available"); #endif It would seem a more consistent to error out in this case. We do error in all other cases where the compression is not available. >=20 > Most of the changes are really-straight forward, and it has resisted > my tests, so I think that this is in a rather-commitable shape as-is. Thank you. Cheers, //Georgios > -- > Michael --b1_MezkQCEhHXEHlY0aqScvavycCdwJhs6FZmp9qUqfd7o Content-Type: text/x-patch; name=v13-0001-Teach-pg_dump-about-compress_spec-and-use-it-thr.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0001-Teach-pg_dump-about-compress_spec-and-use-it-thr.patch RnJvbSAxNmUxMGIzOGNjOGViNmViNWIxZmZjMTUzNjVkN2U2Y2UyM2VlZjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IFRodSwgMSBEZWMgMjAyMiAwODo1ODo1MSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjEz XSBUZWFjaCBwZ19kdW1wIGFib3V0IGNvbXByZXNzX3NwZWMgYW5kIHVzZSBpdCB0aHJvdWdob3V0 LgoKQWxpZ24gcGdfZHVtcCB3aXRoIHRoZSByZXN0IG9mIHRoZSBiaW5hcmllcyB3aGljaCB1c2Ug Y29tbW9uIGNvbXByZXNzaW9uLiBJdCBpcwp0ZWFjaGluZyBwZ19kdW1wLmMgYWJvdXQgdGhlIGNv bW1vbiBjb21wcmVzc2lvbiBkZWZpbml0aW9ucyBhbmQgaW50ZXJmYWNlcy4gVGhlbgppdCBwcm9w YWdhdGVzIHRob3NlIHRocm91Z2hvdXQgdGhlIGNvZGUuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9w Z19kdW1wLnNnbWwgICAgICAgICAgICAgICB8ICAzNCArKysrKy0tCiBzcmMvYmluL3BnX2R1bXAv Y29tcHJlc3NfaW8uYyAgICAgICAgICAgICAgIHwgMTA3ICsrKysrKysrLS0tLS0tLS0tLS0tCiBz cmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaCAgICAgICAgICAgICAgIHwgIDIwICsrLS0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaCAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyAgICAgICAgfCAgNzggKysrKysrKysrLS0t LS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaCAgICAgICAgfCAgMTAgKy0K IHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMgICAgICAgfCAgMTMgKystCiBzcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgIHwgIDc5ICsrKysrKysrKystLS0t LQogc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsICAgICAgICAgICAgICB8ICAzNCArKysr Ky0tCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgIHwgICAzICst CiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdfZHVtcC90LzAwMV9iYXNlLnBsIHwgIDE2ICsrKwog c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICB8ICAgMSAtCiAxNCBm aWxlcyBjaGFuZ2VkLCAyNTggaW5zZXJ0aW9ucygrKSwgMTYxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9w Z19kdW1wLnNnbWwKaW5kZXggOGI5ZDlmNGNhZC4uMmEwMTU5MDhmMCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1w LnNnbWwKQEAgLTY0NCwxNyArNjQ0LDM1IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICA8dmFybGlzdGVudHJ5PgotICAgICAgPHRlcm0+PG9w dGlvbj4tWiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+MC4uOTwvcmVwbGFjZWFibGU+ PC9vcHRpb24+PC90ZXJtPgotICAgICAgPHRlcm0+PG9wdGlvbj4tLWNvbXByZXNzPTxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj4wLi45PC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+ CisgICAgICA8dGVybT48b3B0aW9uPi1aIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5s ZXZlbDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4t WiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWV0aG9kPC9yZXBsYWNlYWJsZT48L29w dGlvbj5bOjxyZXBsYWNlYWJsZT5sZXZlbDwvcmVwbGFjZWFibGU+XTwvdGVybT4KKyAgICAgIDx0 ZXJtPjxvcHRpb24+LS1jb21wcmVzcz08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bGV2 ZWw8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1j b21wcmVzcz08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWV0aG9kPC9yZXBsYWNlYWJs ZT48L29wdGlvbj5bOjxyZXBsYWNlYWJsZT5sZXZlbDwvcmVwbGFjZWFibGU+XTwvdGVybT4KICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgU3BlY2lmeSB0aGUgY29tcHJl c3Npb24gbGV2ZWwgdG8gdXNlLiAgWmVybyBtZWFucyBubyBjb21wcmVzc2lvbi4KKyAgICAgICAg U3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbWV0aG9kIGFuZC9vciB0aGUgY29tcHJlc3Npb24gbGV2 ZWwgdG8gdXNlLgorICAgICAgICBUaGUgY29tcHJlc3Npb24gbWV0aG9kIGNhbiBiZSBzZXQgdG8g PGxpdGVyYWw+Z3ppcDwvbGl0ZXJhbD4gb3IKKyAgICAgICAgPGxpdGVyYWw+bm9uZTwvbGl0ZXJh bD4gZm9yIG5vIGNvbXByZXNzaW9uLiBBIGNvbXByZXNzaW9uIGxldmVsIGNhbgorICAgICAgICBi ZSBvcHRpb25hbGx5IHNwZWNpZmllZCwgYnkgYXBwZW5kaW5nIHRoZSBsZXZlbCBudW1iZXIgYWZ0 ZXIgYSBjb2xvbgorICAgICAgICAoPGxpdGVyYWw+OjwvbGl0ZXJhbD4pLgorICAgICAgIDwvcGFy YT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgSWYgbm8gY29tcHJlc3Npb24gbGV2ZWwgaXMgc3Bl Y2lmaWVkLCB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbgorICAgICAgICBsZXZlbCB3aWxsIGJlIHVz ZWQuIElmIG9ubHkgYSBsZXZlbCBpcyBzcGVjaWZpZWQgd2l0aG91dCBtZW50aW9uaW5nCisgICAg ICAgIGFuIGFsZ29yaXRobSwgPGxpdGVyYWw+Z3ppcDwvbGl0ZXJhbD4gY29tcHJlc3Npb24gd2ls bCBiZSB1c2VkIGlmCisgICAgICAgIHRoZSBsZXZlbCBpcyBncmVhdGVyIHRoYW4gPGxpdGVyYWw+ MDwvbGl0ZXJhbD4sIGFuZCBubyBjb21wcmVzc2lvbgorICAgICAgICB3aWxsIGJlIHVzZWQgaWYg dGhlIGxldmVsIGlzIDxsaXRlcmFsPjA8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKworICAg ICAgIDxwYXJhPgogICAgICAgICBGb3IgdGhlIGN1c3RvbSBhbmQgZGlyZWN0b3J5IGFyY2hpdmUg Zm9ybWF0cywgdGhpcyBzcGVjaWZpZXMgY29tcHJlc3Npb24gb2YKLSAgICAgICAgaW5kaXZpZHVh bCB0YWJsZS1kYXRhIHNlZ21lbnRzLCBhbmQgdGhlIGRlZmF1bHQgaXMgdG8gY29tcHJlc3MKLSAg ICAgICAgYXQgYSBtb2RlcmF0ZSBsZXZlbC4KLSAgICAgICAgRm9yIHBsYWluIHRleHQgb3V0cHV0 LCBzZXR0aW5nIGEgbm9uemVybyBjb21wcmVzc2lvbiBsZXZlbCBjYXVzZXMKLSAgICAgICAgdGhl IGVudGlyZSBvdXRwdXQgZmlsZSB0byBiZSBjb21wcmVzc2VkLCBhcyB0aG91Z2ggaXQgaGFkIGJl ZW4KLSAgICAgICAgZmVkIHRocm91Z2ggPGFwcGxpY2F0aW9uPmd6aXA8L2FwcGxpY2F0aW9uPjsg YnV0IHRoZSBkZWZhdWx0IGlzIG5vdCB0byBjb21wcmVzcy4KKyAgICAgICAgaW5kaXZpZHVhbCB0 YWJsZS1kYXRhIHNlZ21lbnRzLCBhbmQgdGhlIGRlZmF1bHQgaXMgdG8gY29tcHJlc3MgdXNpbmcK KyAgICAgICAgPGxpdGVyYWw+Z3ppcDwvbGl0ZXJhbD4gYXQgYSBtb2RlcmF0ZSBsZXZlbC4gRm9y IHBsYWluIHRleHQgb3V0cHV0LAorICAgICAgICBzZXR0aW5nIGEgbm9uemVybyBjb21wcmVzc2lv biBsZXZlbCBjYXVzZXMgdGhlIGVudGlyZSBvdXRwdXQgZmlsZSB0byBiZSBjb21wcmVzc2VkLAor ICAgICAgICBhcyB0aG91Z2ggaXQgaGFkIGJlZW4gZmVkIHRocm91Z2ggPGFwcGxpY2F0aW9uPmd6 aXA8L2FwcGxpY2F0aW9uPjsgYnV0IHRoZSBkZWZhdWx0CisgICAgICAgIGlzIG5vdCB0byBjb21w cmVzcy4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSB0YXIgYXJj aGl2ZSBmb3JtYXQgY3VycmVudGx5IGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb24gYXQgYWxs LgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvY29tcHJlc3NfaW8uYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCmlu ZGV4IDYyZjk0MGZmN2EuLjhmMGQ2ZDYyMTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9j b21wcmVzc19pby5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jCkBAIC02NCw3 ICs2NCw3IEBACiAvKiB0eXBlZGVmIGFwcGVhcnMgaW4gY29tcHJlc3NfaW8uaCAqLwogc3RydWN0 IENvbXByZXNzb3JTdGF0ZQogewotCUNvbXByZXNzaW9uQWxnb3JpdGhtIGNvbXByQWxnOworCXBn X2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYzsKIAlXcml0ZUZ1bmMJd3Jp dGVGOwogCiAjaWZkZWYgSEFWRV9MSUJaCkBAIC03NCw5ICs3NCw2IEBAIHN0cnVjdCBDb21wcmVz c29yU3RhdGUKICNlbmRpZgogfTsKIAotc3RhdGljIHZvaWQgUGFyc2VDb21wcmVzc2lvbk9wdGlv bihpbnQgY29tcHJlc3Npb24sIENvbXByZXNzaW9uQWxnb3JpdGhtICphbGcsCi0JCQkJCQkJCSAg IGludCAqbGV2ZWwpOwotCiAvKiBSb3V0aW5lcyB0aGF0IHN1cHBvcnQgemxpYiBjb21wcmVzc2Vk IGRhdGEgSS9PICovCiAjaWZkZWYgSEFWRV9MSUJaCiBzdGF0aWMgdm9pZCBJbml0Q29tcHJlc3Nv clpsaWIoQ29tcHJlc3NvclN0YXRlICpjcywgaW50IGxldmVsKTsKQEAgLTkzLDU3ICs5MCwzMCBA QCBzdGF0aWMgdm9pZCBSZWFkRGF0YUZyb21BcmNoaXZlTm9uZShBcmNoaXZlSGFuZGxlICpBSCwg UmVhZEZ1bmMgcmVhZEYpOwogc3RhdGljIHZvaWQgV3JpdGVEYXRhVG9BcmNoaXZlTm9uZShBcmNo aXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywKIAkJCQkJCQkJICAgY29uc3QgY2hh ciAqZGF0YSwgc2l6ZV90IGRMZW4pOwogCi0vKgotICogSW50ZXJwcmV0cyBhIG51bWVyaWMgJ2Nv bXByZXNzaW9uJyB2YWx1ZS4gVGhlIGFsZ29yaXRobSBpbXBsaWVkIGJ5IHRoZQotICogdmFsdWUg KHpsaWIgb3Igbm9uZSBhdCB0aGUgbW9tZW50KSwgaXMgcmV0dXJuZWQgaW4gKmFsZywgYW5kIHRo ZQotICogemxpYiBjb21wcmVzc2lvbiBsZXZlbCBpbiAqbGV2ZWwuCi0gKi8KLXN0YXRpYyB2b2lk Ci1QYXJzZUNvbXByZXNzaW9uT3B0aW9uKGludCBjb21wcmVzc2lvbiwgQ29tcHJlc3Npb25BbGdv cml0aG0gKmFsZywgaW50ICpsZXZlbCkKLXsKLQlpZiAoY29tcHJlc3Npb24gPT0gWl9ERUZBVUxU X0NPTVBSRVNTSU9OIHx8Ci0JCShjb21wcmVzc2lvbiA+IDAgJiYgY29tcHJlc3Npb24gPD0gOSkp Ci0JCSphbGcgPSBDT01QUl9BTEdfTElCWjsKLQllbHNlIGlmIChjb21wcmVzc2lvbiA9PSAwKQot CQkqYWxnID0gQ09NUFJfQUxHX05PTkU7Ci0JZWxzZQotCXsKLQkJcGdfZmF0YWwoImludmFsaWQg Y29tcHJlc3Npb24gY29kZTogJWQiLCBjb21wcmVzc2lvbik7Ci0JCSphbGcgPSBDT01QUl9BTEdf Tk9ORTsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwotCX0KLQotCS8qIFRoZSBsZXZlbCBpcyBq dXN0IHRoZSBwYXNzZWQtaW4gdmFsdWUuICovCi0JaWYgKGxldmVsKQotCQkqbGV2ZWwgPSBjb21w cmVzc2lvbjsKLX0KLQogLyogUHVibGljIGludGVyZmFjZSByb3V0aW5lcyAqLwogCiAvKiBBbGxv Y2F0ZSBhIG5ldyBjb21wcmVzc29yICovCiBDb21wcmVzc29yU3RhdGUgKgotQWxsb2NhdGVDb21w cmVzc29yKGludCBjb21wcmVzc2lvbiwgV3JpdGVGdW5jIHdyaXRlRikKK0FsbG9jYXRlQ29tcHJl c3Nvcihjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCisJ CQkJICAgV3JpdGVGdW5jIHdyaXRlRikKIHsKIAlDb21wcmVzc29yU3RhdGUgKmNzOwotCUNvbXBy ZXNzaW9uQWxnb3JpdGhtIGFsZzsKLQlpbnQJCQlsZXZlbDsKLQotCVBhcnNlQ29tcHJlc3Npb25P cHRpb24oY29tcHJlc3Npb24sICZhbGcsICZsZXZlbCk7CiAKICNpZm5kZWYgSEFWRV9MSUJaCi0J aWYgKGFsZyA9PSBDT01QUl9BTEdfTElCWikKKwlpZiAoY29tcHJlc3Npb25fc3BlYy5hbGdvcml0 aG0gPT0gUEdfQ09NUFJFU1NJT05fR1pJUCkKIAkJcGdfZmF0YWwoIm5vdCBidWlsdCB3aXRoIHps aWIgc3VwcG9ydCIpOwogI2VuZGlmCiAKIAljcyA9IChDb21wcmVzc29yU3RhdGUgKikgcGdfbWFs bG9jMChzaXplb2YoQ29tcHJlc3NvclN0YXRlKSk7CiAJY3MtPndyaXRlRiA9IHdyaXRlRjsKLQlj cy0+Y29tcHJBbGcgPSBhbGc7CisJY3MtPmNvbXByZXNzaW9uX3NwZWMgPSBjb21wcmVzc2lvbl9z cGVjOwogCiAJLyoKIAkgKiBQZXJmb3JtIGNvbXByZXNzaW9uIGFsZ29yaXRobSBzcGVjaWZpYyBp bml0aWFsaXphdGlvbi4KIAkgKi8KICNpZmRlZiBIQVZFX0xJQloKLQlpZiAoYWxnID09IENPTVBS X0FMR19MSUJaKQotCQlJbml0Q29tcHJlc3NvclpsaWIoY3MsIGxldmVsKTsKKwlpZiAoY3MtPmNv bXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX0daSVApCisJCUluaXRD b21wcmVzc29yWmxpYihjcywgY3MtPmNvbXByZXNzaW9uX3NwZWMubGV2ZWwpOwogI2VuZGlmCiAK IAlyZXR1cm4gY3M7CkBAIC0xNTQsMTUgKzEyNCwxMiBAQCBBbGxvY2F0ZUNvbXByZXNzb3IoaW50 IGNvbXByZXNzaW9uLCBXcml0ZUZ1bmMgd3JpdGVGKQogICogb3V0IHdpdGggYWh3cml0ZSgpLgog ICovCiB2b2lkCi1SZWFkRGF0YUZyb21BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBpbnQgY29t cHJlc3Npb24sIFJlYWRGdW5jIHJlYWRGKQorUmVhZERhdGFGcm9tQXJjaGl2ZShBcmNoaXZlSGFu ZGxlICpBSCwgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJ CQlSZWFkRnVuYyByZWFkRikKIHsKLQlDb21wcmVzc2lvbkFsZ29yaXRobSBhbGc7Ci0KLQlQYXJz ZUNvbXByZXNzaW9uT3B0aW9uKGNvbXByZXNzaW9uLCAmYWxnLCBOVUxMKTsKLQotCWlmIChhbGcg PT0gQ09NUFJfQUxHX05PTkUpCisJaWYgKGNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBH X0NPTVBSRVNTSU9OX05PTkUpCiAJCVJlYWREYXRhRnJvbUFyY2hpdmVOb25lKEFILCByZWFkRik7 Ci0JaWYgKGFsZyA9PSBDT01QUl9BTEdfTElCWikKKwlpZiAoY29tcHJlc3Npb25fc3BlYy5hbGdv cml0aG0gPT0gUEdfQ09NUFJFU1NJT05fR1pJUCkKIAl7CiAjaWZkZWYgSEFWRV9MSUJaCiAJCVJl YWREYXRhRnJvbUFyY2hpdmVabGliKEFILCByZWFkRik7CkBAIC0xNzksMTggKzE0NiwyMyBAQCB2 b2lkCiBXcml0ZURhdGFUb0FyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0 ZSAqY3MsCiAJCQkJICAgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGRMZW4pCiB7Ci0Jc3dpdGNo IChjcy0+Y29tcHJBbGcpCisJc3dpdGNoIChjcy0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0p CiAJewotCQljYXNlIENPTVBSX0FMR19MSUJaOgorCQljYXNlIFBHX0NPTVBSRVNTSU9OX0daSVA6 CiAjaWZkZWYgSEFWRV9MSUJaCiAJCQlXcml0ZURhdGFUb0FyY2hpdmVabGliKEFILCBjcywgZGF0 YSwgZExlbik7CiAjZWxzZQogCQkJcGdfZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9y dCIpOwogI2VuZGlmCiAJCQlicmVhazsKLQkJY2FzZSBDT01QUl9BTEdfTk9ORToKKwkJY2FzZSBQ R19DT01QUkVTU0lPTl9OT05FOgogCQkJV3JpdGVEYXRhVG9BcmNoaXZlTm9uZShBSCwgY3MsIGRh dGEsIGRMZW4pOwogCQkJYnJlYWs7CisJCWNhc2UgUEdfQ09NUFJFU1NJT05fTFo0OgorCQkJLyog ZmFsbHRocm91Z2ggKi8KKwkJY2FzZSBQR19DT01QUkVTU0lPTl9aU1REOgorCQkJcGdfZmF0YWwo ImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKIAl9CiB9CiAKQEAgLTIw MSw3ICsxNzMsNyBAQCB2b2lkCiBFbmRDb21wcmVzc29yKEFyY2hpdmVIYW5kbGUgKkFILCBDb21w cmVzc29yU3RhdGUgKmNzKQogewogI2lmZGVmIEhBVkVfTElCWgotCWlmIChjcy0+Y29tcHJBbGcg PT0gQ09NUFJfQUxHX0xJQlopCisJaWYgKGNzLT5jb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9 PSBQR19DT01QUkVTU0lPTl9HWklQKQogCQlFbmRDb21wcmVzc29yWmxpYihBSCwgY3MpOwogI2Vu ZGlmCiAJZnJlZShjcyk7CkBAIC00NTMsMjAgKzQyNSwyNyBAQCBjZm9wZW5fcmVhZChjb25zdCBj aGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogewogCWNmcAkJICAgKmZwOwogCisJcGdfY29t cHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjID0gezB9OworCiAjaWZkZWYgSEFW RV9MSUJaCiAJaWYgKGhhc1N1ZmZpeChwYXRoLCAiLmd6IikpCi0JCWZwID0gY2ZvcGVuKHBhdGgs IG1vZGUsIDEpOworCXsKKwkJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVT U0lPTl9HWklQOworCQlmcCA9IGNmb3BlbihwYXRoLCBtb2RlLCBjb21wcmVzc2lvbl9zcGVjKTsK Kwl9CiAJZWxzZQogI2VuZGlmCiAJewotCQlmcCA9IGNmb3BlbihwYXRoLCBtb2RlLCAwKTsKKwkJ Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9OT05FOworCQlmcCA9 IGNmb3BlbihwYXRoLCBtb2RlLCBjb21wcmVzc2lvbl9zcGVjKTsKICNpZmRlZiBIQVZFX0xJQloK IAkJaWYgKGZwID09IE5VTEwpCiAJCXsKIAkJCWNoYXIJICAgKmZuYW1lOwogCiAJCQlmbmFtZSA9 IHBzcHJpbnRmKCIlcy5neiIsIHBhdGgpOwotCQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIDEp OworCQkJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOwor CQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIGNvbXByZXNzaW9uX3NwZWMpOwogCQkJZnJlZV9r ZWVwX2Vycm5vKGZuYW1lKTsKIAkJfQogI2VuZGlmCkBAIC00NzksMjYgKzQ1OCwyNyBAQCBjZm9w ZW5fcmVhZChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogICogYmUgYSBmaWxl bW9kZSBhcyBhY2NlcHRlZCBieSBmb3BlbigpIGFuZCBnem9wZW4oKSB0aGF0IGluZGljYXRlcyB3 cml0aW5nCiAgKiAoInciLCAid2IiLCAiYSIsIG9yICJhYiIpLgogICoKLSAqIElmICdjb21wcmVz c2lvbicgaXMgbm9uLXplcm8sIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBpcyBvcGVuZWQsIGFu ZAotICogJ2NvbXByZXNzaW9uJyBpbmRpY2F0ZXMgdGhlIGNvbXByZXNzaW9uIGxldmVsIHVzZWQu IFRoZSAiLmd6IiBzdWZmaXgKLSAqIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gJ3BhdGgnIGlu IHRoYXQgY2FzZS4KKyAqIElmICdjb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobScgaXMgR1pJUCwg YSBnemlwIGNvbXByZXNzZWQgc3RyZWFtIGlzIG9wZW5lZCwKKyAqIGFuZCAnY29tcHJlc3Npb25f c3BlYy5sZXZlbCcgdXNlZC4gVGhlICIuZ3oiIHN1ZmZpeCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVk IHRvCisgKiAncGF0aCcgaW4gdGhhdCBjYXNlLgogICoKICAqIE9uIGZhaWx1cmUsIHJldHVybiBO VUxMIHdpdGggYW4gZXJyb3IgY29kZSBpbiBlcnJuby4KICAqLwogY2ZwICoKLWNmb3Blbl93cml0 ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBpbnQgY29tcHJlc3Npb24pCitj Zm9wZW5fd3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwKKwkJCSBjb25z dCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpCiB7CiAJY2ZwCQkg ICAqZnA7CiAKLQlpZiAoY29tcHJlc3Npb24gPT0gMCkKLQkJZnAgPSBjZm9wZW4ocGF0aCwgbW9k ZSwgMCk7CisJaWYgKGNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9O X05PTkUpCisJCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIGNvbXByZXNzaW9uX3NwZWMpOwogCWVs c2UKIAl7CiAjaWZkZWYgSEFWRV9MSUJaCiAJCWNoYXIJICAgKmZuYW1lOwogCiAJCWZuYW1lID0g cHNwcmludGYoIiVzLmd6IiwgcGF0aCk7Ci0JCWZwID0gY2ZvcGVuKGZuYW1lLCBtb2RlLCBjb21w cmVzc2lvbik7CisJCWZwID0gY2ZvcGVuKGZuYW1lLCBtb2RlLCBjb21wcmVzc2lvbl9zcGVjKTsK IAkJZnJlZV9rZWVwX2Vycm5vKGZuYW1lKTsKICNlbHNlCiAJCXBnX2ZhdGFsKCJub3QgYnVpbHQg d2l0aCB6bGliIHN1cHBvcnQiKTsKQEAgLTUwOSwyNiArNDg5LDI3IEBAIGNmb3Blbl93cml0ZShj b25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBpbnQgY29tcHJlc3Npb24pCiB9CiAK IC8qCi0gKiBPcGVucyBmaWxlICdwYXRoJyBpbiAnbW9kZScuIElmICdjb21wcmVzc2lvbicgaXMg bm9uLXplcm8sIHRoZSBmaWxlCisgKiBPcGVucyBmaWxlICdwYXRoJyBpbiAnbW9kZScuIElmIGNv bXByZXNzaW9uIGlzIEdaSVAsIHRoZSBmaWxlCiAgKiBpcyBvcGVuZWQgd2l0aCBsaWJ6IGd6b3Bl bigpLCBvdGhlcndpc2Ugd2l0aCBwbGFpbiBmb3BlbigpLgogICoKICAqIE9uIGZhaWx1cmUsIHJl dHVybiBOVUxMIHdpdGggYW4gZXJyb3IgY29kZSBpbiBlcnJuby4KICAqLwogY2ZwICoKLWNmb3Bl bihjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBpbnQgY29tcHJlc3Npb24pCitj Zm9wZW4oY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwKKwkgICBjb25zdCBwZ19j b21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpCiB7CiAJY2ZwCQkgICAqZnAg PSBwZ19tYWxsb2Moc2l6ZW9mKGNmcCkpOwogCi0JaWYgKGNvbXByZXNzaW9uICE9IDApCisJaWYg KGNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX0daSVApCiAJewog I2lmZGVmIEhBVkVfTElCWgotCQlpZiAoY29tcHJlc3Npb24gIT0gWl9ERUZBVUxUX0NPTVBSRVNT SU9OKQorCQlpZiAoY29tcHJlc3Npb25fc3BlYy5sZXZlbCAhPSBaX0RFRkFVTFRfQ09NUFJFU1NJ T04pCiAJCXsKIAkJCS8qIHVzZXIgaGFzIHNwZWNpZmllZCBhIGNvbXByZXNzaW9uIGxldmVsLCBz byB0ZWxsIHpsaWIgdG8gdXNlIGl0ICovCiAJCQljaGFyCQltb2RlX2NvbXByZXNzaW9uWzMyXTsK IAogCQkJc25wcmludGYobW9kZV9jb21wcmVzc2lvbiwgc2l6ZW9mKG1vZGVfY29tcHJlc3Npb24p LCAiJXMlZCIsCi0JCQkJCSBtb2RlLCBjb21wcmVzc2lvbik7CisJCQkJCSBtb2RlLCBjb21wcmVz c2lvbl9zcGVjLmxldmVsKTsKIAkJCWZwLT5jb21wcmVzc2VkZnAgPSBnem9wZW4ocGF0aCwgbW9k ZV9jb21wcmVzc2lvbik7CiAJCX0KIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L2NvbXByZXNzX2lvLmggYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaAppbmRleCBmNjM1 Nzg3NjkyLi42ZmFkNmMyY2Q1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3Nf aW8uaAorKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaApAQCAtMjEsMTIgKzIxLDYg QEAKICNkZWZpbmUgWkxJQl9PVVRfU0laRQk0MDk2CiAjZGVmaW5lIFpMSUJfSU5fU0laRQk0MDk2 CiAKLXR5cGVkZWYgZW51bQotewotCUNPTVBSX0FMR19OT05FLAotCUNPTVBSX0FMR19MSUJaCi19 IENvbXByZXNzaW9uQWxnb3JpdGhtOwotCiAvKiBQcm90b3R5cGUgZm9yIGNhbGxiYWNrIGZ1bmN0 aW9uIHRvIFdyaXRlRGF0YVRvQXJjaGl2ZSgpICovCiB0eXBlZGVmIHZvaWQgKCpXcml0ZUZ1bmMp IChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKTsKIApAQCAt NDYsOCArNDAsMTAgQEAgdHlwZWRlZiBzaXplX3QgKCpSZWFkRnVuYykgKEFyY2hpdmVIYW5kbGUg KkFILCBjaGFyICoqYnVmLCBzaXplX3QgKmJ1Zmxlbik7CiAvKiBzdHJ1Y3QgZGVmaW5pdGlvbiBh cHBlYXJzIGluIGNvbXByZXNzX2lvLmMgKi8KIHR5cGVkZWYgc3RydWN0IENvbXByZXNzb3JTdGF0 ZSBDb21wcmVzc29yU3RhdGU7CiAKLWV4dGVybiBDb21wcmVzc29yU3RhdGUgKkFsbG9jYXRlQ29t cHJlc3NvcihpbnQgY29tcHJlc3Npb24sIFdyaXRlRnVuYyB3cml0ZUYpOwotZXh0ZXJuIHZvaWQg UmVhZERhdGFGcm9tQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwgaW50IGNvbXByZXNzaW9uLAor ZXh0ZXJuIENvbXByZXNzb3JTdGF0ZSAqQWxsb2NhdGVDb21wcmVzc29yKGNvbnN0IHBnX2NvbXBy ZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKKwkJCQkJCQkJCQkgICBXcml0ZUZ1 bmMgd3JpdGVGKTsKK2V4dGVybiB2b2lkIFJlYWREYXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhhbmRs ZSAqQUgsCisJCQkJCQkJCWNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Np b25fc3BlYywKIAkJCQkJCQkJUmVhZEZ1bmMgcmVhZEYpOwogZXh0ZXJuIHZvaWQgV3JpdGVEYXRh VG9BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzLAogCQkJCQkJ CSAgIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBkTGVuKTsKQEAgLTU2LDkgKzUyLDEzIEBAIGV4 dGVybiB2b2lkIEVuZENvbXByZXNzb3IoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0 ZSAqY3MpOwogCiB0eXBlZGVmIHN0cnVjdCBjZnAgY2ZwOwogCi1leHRlcm4gY2ZwICpjZm9wZW4o Y29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwgaW50IGNvbXByZXNzaW9uKTsKK2V4 dGVybiBjZnAgKmNmb3Blbihjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAorCQkJ CSAgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYyk7Citl eHRlcm4gY2ZwICpjZmRvcGVuKGludCBmZCwgY29uc3QgY2hhciAqbW9kZSwKKwkJCQkJcGdfY29t cHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjKTsKIGV4dGVybiBjZnAgKmNmb3Bl bl9yZWFkKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpOwotZXh0ZXJuIGNmcCAq Y2ZvcGVuX3dyaXRlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBjb21w cmVzc2lvbik7CitleHRlcm4gY2ZwICpjZm9wZW5fd3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29u c3QgY2hhciAqbW9kZSwKKwkJCQkJCSBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNv bXByZXNzaW9uX3NwZWMpOwogZXh0ZXJuIGludAljZnJlYWQodm9pZCAqcHRyLCBpbnQgc2l6ZSwg Y2ZwICpmcCk7CiBleHRlcm4gaW50CWNmd3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBpbnQgc2l6ZSwg Y2ZwICpmcCk7CiBleHRlcm4gaW50CWNmZ2V0YyhjZnAgKmZwKTsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAppbmRl eCBlOGI3ODk4Mjk3Li5iYzZiNjU5NGFmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCkBAIC0yMyw2ICsyMyw3 IEBACiAjaWZuZGVmIFBHX0JBQ0tVUF9ICiAjZGVmaW5lIFBHX0JBQ0tVUF9ICiAKKyNpbmNsdWRl ICJjb21tb24vY29tcHJlc3Npb24uaCIKICNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVfbGlzdC5o IgogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAKQEAgLTE0Myw3ICsxNDQsOCBAQCB0eXBlZGVmIHN0 cnVjdCBfcmVzdG9yZU9wdGlvbnMKIAogCWludAkJCW5vRGF0YUZvckZhaWxlZFRhYmxlczsKIAlp bnQJCQlleGl0X29uX2Vycm9yOwotCWludAkJCWNvbXByZXNzaW9uOworCXBnX2NvbXByZXNzX3Nw ZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYzsgLyogU3BlY2lmaWNhdGlvbiBmb3IKKwkJCQkJ CQkJCQkJCSAqIGNvbXByZXNzaW9uICovCiAJaW50CQkJc3VwcHJlc3NEdW1wV2FybmluZ3M7CS8q IFN1cHByZXNzIG91dHB1dCBvZiBXQVJOSU5HIGVudHJpZXMKIAkJCQkJCQkJCQkgKiB0byBzdGRl cnIgKi8KIAlib29sCQlzaW5nbGVfdHhuOwpAQCAtMzAzLDcgKzMwNSw4IEBAIGV4dGVybiBBcmNo aXZlICpPcGVuQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1h dCBmbXQpOwogCiAvKiBDcmVhdGUgYSBuZXcgYXJjaGl2ZSAqLwogZXh0ZXJuIEFyY2hpdmUgKkNy ZWF0ZUFyY2hpdmUoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10 LAotCQkJCQkJCSAgY29uc3QgaW50IGNvbXByZXNzaW9uLCBib29sIGRvc3luYywgQXJjaGl2ZU1v ZGUgbW9kZSwKKwkJCQkJCQkgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJl c3Npb25fc3BlYywKKwkJCQkJCQkgIGJvb2wgZG9zeW5jLCBBcmNoaXZlTW9kZSBtb2RlLAogCQkJ CQkJCSAgU2V0dXBXb3JrZXJQdHJUeXBlIHNldHVwRHVtcFdvcmtlcik7CiAKIC8qIFRoZSAtLWxp c3Qgb3B0aW9uICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggZjM5YzBm YTM2Zi4uYWM2NDc2NjJhMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9h cmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAt NzAsNyArNzAsOCBAQCB0eXBlZGVmIHN0cnVjdCBfcGFyYWxsZWxSZWFkeUxpc3QKIAogCiBzdGF0 aWMgQXJjaGl2ZUhhbmRsZSAqX2FsbG9jQUgoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFy Y2hpdmVGb3JtYXQgZm10LAotCQkJCQkJCSAgIGNvbnN0IGludCBjb21wcmVzc2lvbiwgYm9vbCBk b3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCisJCQkJCQkJICAgY29uc3QgcGdfY29tcHJlc3Nfc3Bl Y2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkJCQkJCSAgIGJvb2wgZG9zeW5jLCBBcmNo aXZlTW9kZSBtb2RlLAogCQkJCQkJCSAgIFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cFdvcmtlclB0 cik7CiBzdGF0aWMgdm9pZCBfZ2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBj b25zdCBUb2NFbnRyeSAqdGUpOwogc3RhdGljIHZvaWQgX3ByaW50VG9jRW50cnkoQXJjaGl2ZUhh bmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc0RhdGEpOwpAQCAtOTgsNyArOTksOCBAQCBz dGF0aWMgaW50CV9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJjaGl2ZUhhbmRsZSAqQUgpOwogc3Rh dGljIGludAlSZXN0b3JpbmdUb0RCKEFyY2hpdmVIYW5kbGUgKkFIKTsKIHN0YXRpYyB2b2lkIGR1 bXBfbG9fYnVmKEFyY2hpdmVIYW5kbGUgKkFIKTsKIHN0YXRpYyB2b2lkIGR1bXBUaW1lc3RhbXAo QXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKm1zZywgdGltZV90IHRpbSk7Ci1zdGF0aWMg dm9pZCBTZXRPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBp bnQgY29tcHJlc3Npb24pOworc3RhdGljIHZvaWQgU2V0T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFI LCBjb25zdCBjaGFyICpmaWxlbmFtZSwKKwkJCQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZp Y2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpOwogc3RhdGljIE91dHB1dENvbnRleHQgU2F2ZU91dHB1 dChBcmNoaXZlSGFuZGxlICpBSCk7CiBzdGF0aWMgdm9pZCBSZXN0b3JlT3V0cHV0KEFyY2hpdmVI YW5kbGUgKkFILCBPdXRwdXRDb250ZXh0IHNhdmVkQ29udGV4dCk7CiAKQEAgLTIzOSwxMiArMjQx LDEzIEBAIHNldHVwUmVzdG9yZVdvcmtlcihBcmNoaXZlICpBSFgpCiAvKiBQdWJsaWMgKi8KIEFy Y2hpdmUgKgogQ3JlYXRlQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2 ZUZvcm1hdCBmbXQsCi0JCQkgIGNvbnN0IGludCBjb21wcmVzc2lvbiwgYm9vbCBkb3N5bmMsIEFy Y2hpdmVNb2RlIG1vZGUsCisJCQkgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNpZmljYXRpb24gY29t cHJlc3Npb25fc3BlYywKKwkJCSAgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCiAJCQkg IFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cER1bXBXb3JrZXIpCiAKIHsKLQlBcmNoaXZlSGFuZGxl ICpBSCA9IF9hbGxvY0FIKEZpbGVTcGVjLCBmbXQsIGNvbXByZXNzaW9uLCBkb3N5bmMsCi0JCQkJ CQkJCSBtb2RlLCBzZXR1cER1bXBXb3JrZXIpOworCUFyY2hpdmVIYW5kbGUgKkFIID0gX2FsbG9j QUgoRmlsZVNwZWMsIGZtdCwgY29tcHJlc3Npb25fc3BlYywKKwkJCQkJCQkJIGRvc3luYywgbW9k ZSwgc2V0dXBEdW1wV29ya2VyKTsKIAogCXJldHVybiAoQXJjaGl2ZSAqKSBBSDsKIH0KQEAgLTI1 NCw3ICsyNTcsMTIgQEAgQ3JlYXRlQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3Qg QXJjaGl2ZUZvcm1hdCBmbXQsCiBBcmNoaXZlICoKIE9wZW5BcmNoaXZlKGNvbnN0IGNoYXIgKkZp bGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCkKIHsKLQlBcmNoaXZlSGFuZGxlICpBSCA9 IF9hbGxvY0FIKEZpbGVTcGVjLCBmbXQsIDAsIHRydWUsIGFyY2hNb2RlUmVhZCwgc2V0dXBSZXN0 b3JlV29ya2VyKTsKKwlBcmNoaXZlSGFuZGxlICpBSDsKKwlwZ19jb21wcmVzc19zcGVjaWZpY2F0 aW9uIGNvbXByZXNzaW9uX3NwZWMgPSB7MH07CisKKwljb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRo bSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7CisJQUggPSBfYWxsb2NBSChGaWxlU3BlYywgZm10LCBj b21wcmVzc2lvbl9zcGVjLCB0cnVlLAorCQkJCSAgYXJjaE1vZGVSZWFkLCBzZXR1cFJlc3RvcmVX b3JrZXIpOwogCiAJcmV0dXJuIChBcmNoaXZlICopIEFIOwogfQpAQCAtMzg0LDcgKzM5Miw4IEBA IFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkgKiBNYWtlIHN1cmUgd2Ugd29uJ3QgbmVl ZCAoZGUpY29tcHJlc3Npb24gd2UgaGF2ZW4ndCBnb3QKIAkgKi8KICNpZm5kZWYgSEFWRV9MSUJa Ci0JaWYgKEFILT5jb21wcmVzc2lvbiAhPSAwICYmIEFILT5QcmludFRvY0RhdGFQdHIgIT0gTlVM TCkKKwlpZiAoQUgtPmNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9O X0daSVAgJiYKKwkJQUgtPlByaW50VG9jRGF0YVB0ciAhPSBOVUxMKQogCXsKIAkJZm9yICh0ZSA9 IEFILT50b2MtPm5leHQ7IHRlICE9IEFILT50b2M7IHRlID0gdGUtPm5leHQpCiAJCXsKQEAgLTQ1 OSw4ICs0NjgsOCBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJICogU2V0dXAgdGhl IG91dHB1dCBmaWxlIGlmIG5lY2Vzc2FyeS4KIAkgKi8KIAlzYXYgPSBTYXZlT3V0cHV0KEFIKTsK LQlpZiAocm9wdC0+ZmlsZW5hbWUgfHwgcm9wdC0+Y29tcHJlc3Npb24pCi0JCVNldE91dHB1dChB SCwgcm9wdC0+ZmlsZW5hbWUsIHJvcHQtPmNvbXByZXNzaW9uKTsKKwlpZiAocm9wdC0+ZmlsZW5h bWUgfHwgcm9wdC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gIT0gUEdfQ09NUFJFU1NJT05f Tk9ORSkKKwkJU2V0T3V0cHV0KEFILCByb3B0LT5maWxlbmFtZSwgcm9wdC0+Y29tcHJlc3Npb25f c3BlYyk7CiAKIAlhaHByaW50ZihBSCwgIi0tXG4tLSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGR1bXBc bi0tXG5cbiIpOwogCkBAIC03MzksNyArNzQ4LDcgQEAgUmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAq QUhYKQogCSAqLwogCUFILT5zdGFnZSA9IFNUQUdFX0ZJTkFMSVpJTkc7CiAKLQlpZiAocm9wdC0+ ZmlsZW5hbWUgfHwgcm9wdC0+Y29tcHJlc3Npb24pCisJaWYgKHJvcHQtPmZpbGVuYW1lIHx8IHJv cHQtPmNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtICE9IFBHX0NPTVBSRVNTSU9OX05PTkUpCiAJ CVJlc3RvcmVPdXRwdXQoQUgsIHNhdik7CiAKIAlpZiAocm9wdC0+dXNlREIpCkBAIC05NjksNiAr OTc4LDggQEAgTmV3UmVzdG9yZU9wdGlvbnModm9pZCkKIAlvcHRzLT5mb3JtYXQgPSBhcmNoVW5r bm93bjsKIAlvcHRzLT5jcGFyYW1zLnByb21wdFBhc3N3b3JkID0gVFJJX0RFRkFVTFQ7CiAJb3B0 cy0+ZHVtcFNlY3Rpb25zID0gRFVNUF9VTlNFQ1RJT05FRDsKKwlvcHRzLT5jb21wcmVzc2lvbl9z cGVjLmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7CisJb3B0cy0+Y29tcHJlc3Npb25f c3BlYy5sZXZlbCA9IDA7CiAKIAlyZXR1cm4gb3B0czsKIH0KQEAgLTExMTUsMjMgKzExMjYsMjgg QEAgUHJpbnRUT0NTdW1tYXJ5KEFyY2hpdmUgKkFIWCkKIAlBcmNoaXZlSGFuZGxlICpBSCA9IChB cmNoaXZlSGFuZGxlICopIEFIWDsKIAlSZXN0b3JlT3B0aW9ucyAqcm9wdCA9IEFILT5wdWJsaWMu cm9wdDsKIAlUb2NFbnRyeSAgICp0ZTsKKwlwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIG91dF9j b21wcmVzc2lvbl9zcGVjID0gezB9OwogCXRlU2VjdGlvbgljdXJTZWN0aW9uOwogCU91dHB1dENv bnRleHQgc2F2OwogCWNvbnN0IGNoYXIgKmZtdE5hbWU7CiAJY2hhcgkJc3RhbXBfc3RyWzY0XTsK IAorCS8qIFRPQyBpcyBhbHdheXMgdW5jb21wcmVzc2VkICovCisJb3V0X2NvbXByZXNzaW9uX3Nw ZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fTk9ORTsKKwogCXNhdiA9IFNhdmVPdXRwdXQo QUgpOwogCWlmIChyb3B0LT5maWxlbmFtZSkKLQkJU2V0T3V0cHV0KEFILCByb3B0LT5maWxlbmFt ZSwgMCAvKiBubyBjb21wcmVzc2lvbiAqLyApOworCQlTZXRPdXRwdXQoQUgsIHJvcHQtPmZpbGVu YW1lLCBvdXRfY29tcHJlc3Npb25fc3BlYyk7CiAKIAlpZiAoc3RyZnRpbWUoc3RhbXBfc3RyLCBz aXplb2Yoc3RhbXBfc3RyKSwgUEdEVU1QX1NUUkZUSU1FX0ZNVCwKIAkJCQkgbG9jYWx0aW1lKCZB SC0+Y3JlYXRlRGF0ZSkpID09IDApCiAJCXN0cmNweShzdGFtcF9zdHIsICJbdW5rbm93bl0iKTsK IAogCWFocHJpbnRmKEFILCAiO1xuOyBBcmNoaXZlIGNyZWF0ZWQgYXQgJXNcbiIsIHN0YW1wX3N0 cik7Ci0JYWhwcmludGYoQUgsICI7ICAgICBkYm5hbWU6ICVzXG47ICAgICBUT0MgRW50cmllczog JWRcbjsgICAgIENvbXByZXNzaW9uOiAlZFxuIiwKKwlhaHByaW50ZihBSCwgIjsgICAgIGRibmFt ZTogJXNcbjsgICAgIFRPQyBFbnRyaWVzOiAlZFxuOyAgICAgQ29tcHJlc3Npb246ICVzXG4iLAog CQkJIHNhbml0aXplX2xpbmUoQUgtPmFyY2hkYm5hbWUsIGZhbHNlKSwKLQkJCSBBSC0+dG9jQ291 bnQsIEFILT5jb21wcmVzc2lvbik7CisJCQkgQUgtPnRvY0NvdW50LAorCQkJIGdldF9jb21wcmVz c19hbGdvcml0aG1fbmFtZShBSC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0pKTsKIAogCXN3 aXRjaCAoQUgtPmZvcm1hdCkKIAl7CkBAIC0xNDg1LDcgKzE1MDEsOCBAQCBhcmNocHJpbnRmKEFy Y2hpdmUgKkFILCBjb25zdCBjaGFyICpmbXQsLi4uKQogICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCiAKIHN0YXRpYyB2b2lkCi1TZXRPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgY29tcHJlc3Npb24pCitTZXRPdXRwdXQoQXJjaGl2ZUhh bmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkgIGNvbnN0IHBnX2NvbXByZXNzX3Nw ZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYykKIHsKIAlpbnQJCQlmbjsKIApAQCAtMTUwOCwx MiArMTUyNSwxMiBAQCBTZXRPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBpbnQgY29tcHJlc3Npb24pCiAKIAkvKiBJZiBjb21wcmVzc2lvbiBleHBsaWNpdGx5 IHJlcXVlc3RlZCwgdXNlIGd6b3BlbiAqLwogI2lmZGVmIEhBVkVfTElCWgotCWlmIChjb21wcmVz c2lvbiAhPSAwKQorCWlmIChjb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSA9PSBQR19DT01QUkVT U0lPTl9HWklQKQogCXsKIAkJY2hhcgkJZm1vZGVbMTRdOwogCiAJCS8qIERvbid0IHVzZSBQR19C SU5BUllfeCBzaW5jZSB0aGlzIGlzIHpsaWIgKi8KLQkJc3ByaW50ZihmbW9kZSwgIndiJWQiLCBj b21wcmVzc2lvbik7CisJCXNwcmludGYoZm1vZGUsICJ3YiVkIiwgY29tcHJlc3Npb25fc3BlYy5s ZXZlbCk7CiAJCWlmIChmbiA+PSAwKQogCQkJQUgtPk9GID0gZ3pkb3BlbihkdXAoZm4pLCBmbW9k ZSk7CiAJCWVsc2UKQEAgLTIxOTgsNyArMjIxNSw4IEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQo QXJjaGl2ZUhhbmRsZSAqQUgpCiAgKi8KIHN0YXRpYyBBcmNoaXZlSGFuZGxlICoKIF9hbGxvY0FI KGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKLQkJIGNvbnN0 IGludCBjb21wcmVzc2lvbiwgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCisJCSBjb25z dCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMsCisJCSBib29sIGRv c3luYywgQXJjaGl2ZU1vZGUgbW9kZSwKIAkJIFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cFdvcmtl clB0cikKIHsKIAlBcmNoaXZlSGFuZGxlICpBSDsKQEAgLTIyNDksNyArMjI2Nyw3IEBAIF9hbGxv Y0FIKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKIAlBSC0+ dG9jLT5wcmV2ID0gQUgtPnRvYzsKIAogCUFILT5tb2RlID0gbW9kZTsKLQlBSC0+Y29tcHJlc3Np b24gPSBjb21wcmVzc2lvbjsKKwlBSC0+Y29tcHJlc3Npb25fc3BlYyA9IGNvbXByZXNzaW9uX3Nw ZWM7CiAJQUgtPmRvc3luYyA9IGRvc3luYzsKIAogCW1lbXNldCgmKEFILT5zcWxwYXJzZSksIDAs IHNpemVvZihBSC0+c3FscGFyc2UpKTsKQEAgLTIyNjQsNyArMjI4Miw3IEBAIF9hbGxvY0FIKGNv bnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKIAkgKiBGb3JjZSBz dGRpbi9zdGRvdXQgaW50byBiaW5hcnkgbW9kZSBpZiB0aGF0IGlzIHdoYXQgd2UgYXJlIHVzaW5n LgogCSAqLwogI2lmZGVmIFdJTjMyCi0JaWYgKChmbXQgIT0gYXJjaE51bGwgfHwgY29tcHJlc3Np b24gIT0gMCkgJiYKKwlpZiAoKGZtdCAhPSBhcmNoTnVsbCB8fCBjb21wcmVzc2lvbl9zcGVjLmFs Z29yaXRobSAhPSBQR19DT01QUkVTU0lPTl9OT05FKSAmJgogCQkoQUgtPmZTcGVjID09IE5VTEwg fHwgc3RyY21wKEFILT5mU3BlYywgIiIpID09IDApKQogCXsKIAkJaWYgKG1vZGUgPT0gYXJjaE1v ZGVXcml0ZSkKQEAgLTM2NjksNyArMzY4NywxMiBAQCBXcml0ZUhlYWQoQXJjaGl2ZUhhbmRsZSAq QUgpCiAJQUgtPldyaXRlQnl0ZVB0cihBSCwgQUgtPmludFNpemUpOwogCUFILT5Xcml0ZUJ5dGVQ dHIoQUgsIEFILT5vZmZTaXplKTsKIAlBSC0+V3JpdGVCeXRlUHRyKEFILCBBSC0+Zm9ybWF0KTsK LQlXcml0ZUludChBSCwgQUgtPmNvbXByZXNzaW9uKTsKKwkvKgorCSAqIEZvciBub3cgdGhlIGNv bXByZXNzaW9uIHR5cGUgaXMgaW1wbGllZCBieSB0aGUgbGV2ZWwuICBUaGlzIHdpbGwgbmVlZAor CSAqIHRvIGNoYW5nZSBvbmNlIHN1cHBvcnQgZm9yIG1vcmUgY29tcHJlc3Npb24gYWxnb3JpdGht cyBpcyBhZGRlZCwKKwkgKiByZXF1aXJpbmcgYSBmb3JtYXQgYnVtcC4KKwkgKi8KKwlXcml0ZUlu dChBSCwgQUgtPmNvbXByZXNzaW9uX3NwZWMubGV2ZWwpOwogCWNydG0gPSAqbG9jYWx0aW1lKCZB SC0+Y3JlYXRlRGF0ZSk7CiAJV3JpdGVJbnQoQUgsIGNydG0udG1fc2VjKTsKIAlXcml0ZUludChB SCwgY3J0bS50bV9taW4pOwpAQCAtMzc0MCwxOSArMzc2MywyNCBAQCBSZWFkSGVhZChBcmNoaXZl SGFuZGxlICpBSCkKIAkJcGdfZmF0YWwoImV4cGVjdGVkIGZvcm1hdCAoJWQpIGRpZmZlcnMgZnJv bSBmb3JtYXQgZm91bmQgaW4gZmlsZSAoJWQpIiwKIAkJCQkgQUgtPmZvcm1hdCwgZm10KTsKIAor CS8qIEd1ZXNzIHRoZSBjb21wcmVzc2lvbiBtZXRob2QgYmFzZWQgb24gdGhlIGxldmVsICovCisJ QUgtPmNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fTk9ORTsKIAlp ZiAoQUgtPnZlcnNpb24gPj0gS19WRVJTXzFfMikKIAl7CiAJCWlmIChBSC0+dmVyc2lvbiA8IEtf VkVSU18xXzQpCi0JCQlBSC0+Y29tcHJlc3Npb24gPSBBSC0+UmVhZEJ5dGVQdHIoQUgpOworCQkJ QUgtPmNvbXByZXNzaW9uX3NwZWMubGV2ZWwgPSBBSC0+UmVhZEJ5dGVQdHIoQUgpOwogCQllbHNl Ci0JCQlBSC0+Y29tcHJlc3Npb24gPSBSZWFkSW50KEFIKTsKKwkJCUFILT5jb21wcmVzc2lvbl9z cGVjLmxldmVsID0gUmVhZEludChBSCk7CisKKwkJaWYgKEFILT5jb21wcmVzc2lvbl9zcGVjLmxl dmVsICE9IDApCisJCQlBSC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVT U0lPTl9HWklQOwogCX0KIAllbHNlCi0JCUFILT5jb21wcmVzc2lvbiA9IFpfREVGQVVMVF9DT01Q UkVTU0lPTjsKKwkJQUgtPmNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJ T05fR1pJUDsKIAogI2lmbmRlZiBIQVZFX0xJQloKLQlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDAp Ci0JCXBnX2xvZ193YXJuaW5nKCJhcmNoaXZlIGlzIGNvbXByZXNzZWQsIGJ1dCB0aGlzIGluc3Rh bGxhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uIC0tIG5vIGRhdGEgd2lsbCBiZSBh dmFpbGFibGUiKTsKKwlpZiAoQUgtPmNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBHX0NP TVBSRVNTSU9OX0daSVApCisJCXBnX2ZhdGFsKCJhcmNoaXZlIGlzIGNvbXByZXNzZWQsIGJ1dCB0 aGlzIGluc3RhbGxhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uIik7CiAjZW5kaWYK IAogCWlmIChBSC0+dmVyc2lvbiA+PSBLX1ZFUlNfMV80KQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9h cmNoaXZlci5oCmluZGV4IDQyNjg3YzRlYzguLmE5NTYwYzYwNDUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2FyY2hpdmVyLmgKQEAgLTMzMSwxNCArMzMxLDggQEAgc3RydWN0IF9hcmNoaXZlSGFu ZGxlCiAJRHVtcElkCSAgICp0YWJsZURhdGFJZDsJLyogVEFCTEUgREFUQSBpZHMsIGluZGV4ZWQg YnkgdGFibGUgZHVtcElkICovCiAKIAlzdHJ1Y3QgX3RvY0VudHJ5ICpjdXJyVG9jOwkvKiBVc2Vk IHdoZW4gZHVtcGluZyBkYXRhICovCi0JaW50CQkJY29tcHJlc3Npb247CS8qLS0tLS0tLS0tCi0J CQkJCQkJCSAqIENvbXByZXNzaW9uIHJlcXVlc3RlZCBvbiBvcGVuKCkuCi0JCQkJCQkJCSAqIFBv c3NpYmxlIHZhbHVlcyBmb3IgY29tcHJlc3Npb246Ci0JCQkJCQkJCSAqIC0xCVpfREVGQVVMVF9D T01QUkVTU0lPTgotCQkJCQkJCQkgKiAgMAlDT01QUkVTU0lPTl9OT05FCi0JCQkJCQkJCSAqIDEt OSBsZXZlbHMgZm9yIGd6aXAgY29tcHJlc3Npb24KLQkJCQkJCQkJICotLS0tLS0tLS0KLQkJCQkJ CQkJICovCisJcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjOyAvKiBS ZXF1ZXN0ZWQgc3BlY2lmaWNhdGlvbiBmb3IKKwkJCQkJCQkJCQkJCSAqIGNvbXByZXNzaW9uICov CiAJYm9vbAkJZG9zeW5jOwkJCS8qIGRhdGEgcmVxdWVzdGVkIHRvIGJlIHN5bmNlZCBvbiBzaWdo dCAqLwogCUFyY2hpdmVNb2RlIG1vZGU7CQkJLyogRmlsZSBtb2RlIC0gciBvciB3ICovCiAJdm9p ZAkgICAqZm9ybWF0RGF0YTsJCS8qIEhlYWRlciBkYXRhIHNwZWNpZmljIHRvIGZpbGUgZm9ybWF0 ICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2N1c3RvbS5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYwppbmRleCBhMGE1NWExZWRkLi5mNDEzZDAx ZmNiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2N1c3RvbS5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMKQEAgLTI5OCw3ICsyOTgsNyBAQCBf U3RhcnREYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAJX1dyaXRlQnl0ZShB SCwgQkxLX0RBVEEpOwkvKiBCbG9jayB0eXBlICovCiAJV3JpdGVJbnQoQUgsIHRlLT5kdW1wSWQp OwkvKiBGb3Igc2FuaXR5IGNoZWNrICovCiAKLQljdHgtPmNzID0gQWxsb2NhdGVDb21wcmVzc29y KEFILT5jb21wcmVzc2lvbiwgX0N1c3RvbVdyaXRlRnVuYyk7CisJY3R4LT5jcyA9IEFsbG9jYXRl Q29tcHJlc3NvcihBSC0+Y29tcHJlc3Npb25fc3BlYywgX0N1c3RvbVdyaXRlRnVuYyk7CiB9CiAK IC8qCkBAIC0zNzcsNyArMzc3LDcgQEAgX1N0YXJ0QmxvYihBcmNoaXZlSGFuZGxlICpBSCwgVG9j RW50cnkgKnRlLCBPaWQgb2lkKQogCiAJV3JpdGVJbnQoQUgsIG9pZCk7CiAKLQljdHgtPmNzID0g QWxsb2NhdGVDb21wcmVzc29yKEFILT5jb21wcmVzc2lvbiwgX0N1c3RvbVdyaXRlRnVuYyk7CisJ Y3R4LT5jcyA9IEFsbG9jYXRlQ29tcHJlc3NvcihBSC0+Y29tcHJlc3Npb25fc3BlYywgX0N1c3Rv bVdyaXRlRnVuYyk7CiB9CiAKIC8qCkBAIC01NjYsNyArNTY2LDcgQEAgX1ByaW50VG9jRGF0YShB cmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogc3RhdGljIHZvaWQKIF9QcmludERhdGEo QXJjaGl2ZUhhbmRsZSAqQUgpCiB7Ci0JUmVhZERhdGFGcm9tQXJjaGl2ZShBSCwgQUgtPmNvbXBy ZXNzaW9uLCBfQ3VzdG9tUmVhZEZ1bmMpOworCVJlYWREYXRhRnJvbUFyY2hpdmUoQUgsIEFILT5j b21wcmVzc2lvbl9zcGVjLCBfQ3VzdG9tUmVhZEZ1bmMpOwogfQogCiBzdGF0aWMgdm9pZApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKaW5kZXggNzk4MTgyYjZmNy4uNTNlZjhkYjcy OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jCkBAIC0zMjcsNyArMzI3LDgg QEAgX1N0YXJ0RGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCiAJc2V0Rmls ZVBhdGgoQUgsIGZuYW1lLCB0Y3R4LT5maWxlbmFtZSk7CiAKLQljdHgtPmRhdGFGSCA9IGNmb3Bl bl93cml0ZShmbmFtZSwgUEdfQklOQVJZX1csIEFILT5jb21wcmVzc2lvbik7CisJY3R4LT5kYXRh RkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLAorCQkJCQkJCSAgIEFILT5jb21w cmVzc2lvbl9zcGVjKTsKIAlpZiAoY3R4LT5kYXRhRkggPT0gTlVMTCkKIAkJcGdfZmF0YWwoImNv dWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CiB9CkBAIC01NzMs NiArNTc0LDcgQEAgX0Nsb3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkKIAlpZiAoQUgtPm1v ZGUgPT0gYXJjaE1vZGVXcml0ZSkKIAl7CiAJCWNmcAkJICAgKnRvY0ZIOworCQlwZ19jb21wcmVz c19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMgPSB7MH07CiAJCWNoYXIJCWZuYW1lW01B WFBHUEFUSF07CiAKIAkJc2V0RmlsZVBhdGgoQUgsIGZuYW1lLCAidG9jLmRhdCIpOwpAQCAtNTgx LDcgKzU4Myw4IEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCWN0eC0+cHN0 YXRlID0gUGFyYWxsZWxCYWNrdXBTdGFydChBSCk7CiAKIAkJLyogVGhlIFRPQyBpcyBhbHdheXMg Y3JlYXRlZCB1bmNvbXByZXNzZWQgKi8KLQkJdG9jRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBH X0JJTkFSWV9XLCAwKTsKKwkJY29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPSBQR19DT01QUkVT U0lPTl9OT05FOworCQl0b2NGSCA9IGNmb3Blbl93cml0ZShmbmFtZSwgUEdfQklOQVJZX1csIGNv bXByZXNzaW9uX3NwZWMpOwogCQlpZiAodG9jRkggPT0gTlVMTCkKIAkJCXBnX2ZhdGFsKCJjb3Vs ZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogCQljdHgtPmRhdGFG SCA9IHRvY0ZIOwpAQCAtNjM5LDEyICs2NDIsMTQgQEAgc3RhdGljIHZvaWQKIF9TdGFydEJsb2Jz KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiB7CiAJbGNsQ29udGV4dCAqY3R4ID0g KGxjbENvbnRleHQgKikgQUgtPmZvcm1hdERhdGE7CisJcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlv biBjb21wcmVzc2lvbl9zcGVjID0gezB9OwogCWNoYXIJCWZuYW1lW01BWFBHUEFUSF07CiAKIAlz ZXRGaWxlUGF0aChBSCwgZm5hbWUsICJibG9icy50b2MiKTsKIAogCS8qIFRoZSBibG9iIFRPQyBm aWxlIGlzIG5ldmVyIGNvbXByZXNzZWQgKi8KLQljdHgtPmJsb2JzVG9jRkggPSBjZm9wZW5fd3Jp dGUoZm5hbWUsICJhYiIsIDApOworCWNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID0gUEdfQ09N UFJFU1NJT05fTk9ORTsKKwljdHgtPmJsb2JzVG9jRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsICJh YiIsIGNvbXByZXNzaW9uX3NwZWMpOwogCWlmIChjdHgtPmJsb2JzVG9jRkggPT0gTlVMTCkKIAkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7 CiB9CkBAIC02NjIsNyArNjY3LDcgQEAgX1N0YXJ0QmxvYihBcmNoaXZlSGFuZGxlICpBSCwgVG9j RW50cnkgKnRlLCBPaWQgb2lkKQogCiAJc25wcmludGYoZm5hbWUsIE1BWFBHUEFUSCwgIiVzL2Js b2JfJXUuZGF0IiwgY3R4LT5kaXJlY3RvcnksIG9pZCk7CiAKLQljdHgtPmRhdGFGSCA9IGNmb3Bl bl93cml0ZShmbmFtZSwgUEdfQklOQVJZX1csIEFILT5jb21wcmVzc2lvbik7CisJY3R4LT5kYXRh RkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLCBBSC0+Y29tcHJlc3Npb25fc3Bl Yyk7CiAKIAlpZiAoY3R4LT5kYXRhRkggPT0gTlVMTCkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBv cGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF90YXIu YwppbmRleCA0MDJiOTNjNjEwLi45OWYzZjViY2FlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX3Rhci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMK QEAgLTE5NCw3ICsxOTQsNyBAQCBJbml0QXJjaGl2ZUZtdF9UYXIoQXJjaGl2ZUhhbmRsZSAqQUgp CiAJCSAqIHBvc3NpYmxlIHNpbmNlIGd6ZG9wZW4gdXNlcyBidWZmZXJlZCBJTyB3aGljaCB0b3Rh bGx5IHNjcmV3cyBmaWxlCiAJCSAqIHBvc2l0aW9uaW5nLgogCQkgKi8KLQkJaWYgKEFILT5jb21w cmVzc2lvbiAhPSAwKQorCQlpZiAoQUgtPmNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtICE9IFBH X0NPTVBSRVNTSU9OX05PTkUpCiAJCQlwZ19mYXRhbCgiY29tcHJlc3Npb24gaXMgbm90IHN1cHBv cnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsKIAl9CiAJZWxzZQpAQCAtMzI4LDcgKzMyOCw3 IEBAIHRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFy IG1vZGUpCiAJCQl9CiAJCX0KIAotCQlpZiAoQUgtPmNvbXByZXNzaW9uID09IDApCisJCWlmIChB SC0+Y29tcHJlc3Npb25fc3BlYy5hbGdvcml0aG0gPT0gUEdfQ09NUFJFU1NJT05fTk9ORSkKIAkJ CXRtLT5uRkggPSBjdHgtPnRhckZIOwogCQllbHNlCiAJCQlwZ19mYXRhbCgiY29tcHJlc3Npb24g aXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsKQEAgLTM4Myw3ICszODMs NyBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hh ciBtb2RlKQogCiAJCXVtYXNrKG9sZF91bWFzayk7CiAKLQkJaWYgKEFILT5jb21wcmVzc2lvbiA9 PSAwKQorCQlpZiAoQUgtPmNvbXByZXNzaW9uX3NwZWMuYWxnb3JpdGhtID09IFBHX0NPTVBSRVNT SU9OX05PTkUpCiAJCQl0bS0+bkZIID0gdG0tPnRtcEZIOwogCQllbHNlCiAJCQlwZ19mYXRhbCgi Y29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsKQEAg LTQwMSw3ICs0MDEsNyBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpm aWxlbmFtZSwgY2hhciBtb2RlKQogc3RhdGljIHZvaWQKIHRhckNsb3NlKEFyY2hpdmVIYW5kbGUg KkFILCBUQVJfTUVNQkVSICp0aCkKIHsKLQlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDApCisJaWYg KEFILT5jb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSAhPSBQR19DT01QUkVTU0lPTl9OT05FKQog CQlwZ19mYXRhbCgiY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBm b3JtYXQiKTsKIAogCWlmICh0aC0+bW9kZSA9PSAndycpCkBAIC04MDAsNyArODAwLDYgQEAgX0Ns b3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkKIAkJbWVtY3B5KHJvcHQsIEFILT5wdWJsaWMu cm9wdCwgc2l6ZW9mKFJlc3RvcmVPcHRpb25zKSk7CiAJCXJvcHQtPmZpbGVuYW1lID0gTlVMTDsK IAkJcm9wdC0+ZHJvcFNjaGVtYSA9IDE7Ci0JCXJvcHQtPmNvbXByZXNzaW9uID0gMDsKIAkJcm9w dC0+c3VwZXJ1c2VyID0gTlVMTDsKIAkJcm9wdC0+c3VwcHJlc3NEdW1wV2FybmluZ3MgPSB0cnVl OwogCkBAIC04ODgsNyArODg3LDcgQEAgX1N0YXJ0QmxvYihBcmNoaXZlSGFuZGxlICpBSCwgVG9j RW50cnkgKnRlLCBPaWQgb2lkKQogCWlmIChvaWQgPT0gMCkKIAkJcGdfZmF0YWwoImludmFsaWQg T0lEIGZvciBsYXJnZSBvYmplY3QgKCV1KSIsIG9pZCk7CiAKLQlpZiAoQUgtPmNvbXByZXNzaW9u ICE9IDApCisJaWYgKEFILT5jb21wcmVzc2lvbl9zcGVjLmFsZ29yaXRobSAhPSBQR19DT01QUkVT U0lPTl9OT05FKQogCQlwZ19mYXRhbCgiY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0 YXIgYXJjaGl2ZSBmb3JtYXQiKTsKIAogCXNwcmludGYoZm5hbWUsICJibG9iXyV1LmRhdCIsIG9p ZCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwppbmRleCBkYTQyN2Y0ZDRhLi5mMzFlZDIxYWZhIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMK QEAgLTEwNSw2ICsxMDUsOCBAQCBzdGF0aWMgT2lkCWdfbGFzdF9idWlsdGluX29pZDsgLyogdmFs dWUgb2YgdGhlIGxhc3QgYnVpbHRpbiBvaWQgKi8KIC8qIFRoZSBzcGVjaWZpZWQgbmFtZXMvcGF0 dGVybnMgc2hvdWxkIHRvIG1hdGNoIGF0IGxlYXN0IG9uZSBlbnRpdHkgKi8KIHN0YXRpYyBpbnQJ c3RyaWN0X25hbWVzID0gMDsKIAorc3RhdGljIHBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVz c2lvbl9hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9OT05FOworCiAvKgogICogT2JqZWN0IGlu Y2x1c2lvbi9leGNsdXNpb24gbGlzdHMKICAqCkBAIC0zNDAsMTAgKzM0MiwxNCBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAljb25zdCBjaGFyICpkdW1wc25hcHNob3QgPSBOVUxMOwog CWNoYXIJICAgKnVzZV9yb2xlID0gTlVMTDsKIAlpbnQJCQludW1Xb3JrZXJzID0gMTsKLQlpbnQJ CQljb21wcmVzc0xldmVsID0gLTE7CiAJaW50CQkJcGxhaW5UZXh0ID0gMDsKIAlBcmNoaXZlRm9y bWF0IGFyY2hpdmVGb3JtYXQgPSBhcmNoVW5rbm93bjsKIAlBcmNoaXZlTW9kZSBhcmNoaXZlTW9k ZTsKKwlwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMgPSB7MH07CisJ Y2hhcgkgICAqY29tcHJlc3Npb25fZGV0YWlsID0gTlVMTDsKKwljaGFyCSAgICpjb21wcmVzc2lv bl9hbGdvcml0aG1fc3RyID0gIm5vbmUiOworCWNoYXIJICAgKmVycm9yX2RldGFpbCA9IE5VTEw7 CisJYm9vbAkJdXNlcl9jb21wcmVzc2lvbl9kZWZpbmVkID0gZmFsc2U7CiAKIAlzdGF0aWMgRHVt cE9wdGlvbnMgZG9wdDsKIApAQCAtNTYxLDEwICs1NjcsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCQkJZG9wdC5hY2xzU2tpcCA9IHRydWU7CiAJCQkJYnJlYWs7CiAKLQkJCWNh c2UgJ1onOgkJCS8qIENvbXByZXNzaW9uIExldmVsICovCi0JCQkJaWYgKCFvcHRpb25fcGFyc2Vf aW50KG9wdGFyZywgIi1aLy0tY29tcHJlc3MiLCAwLCA5LAotCQkJCQkJCQkJICAmY29tcHJlc3NM ZXZlbCkpCi0JCQkJCWV4aXRfbmljZWx5KDEpOworCQkJY2FzZSAnWic6CQkJLyogQ29tcHJlc3Np b24gKi8KKwkJCQlwYXJzZV9jb21wcmVzc19vcHRpb25zKG9wdGFyZywgJmNvbXByZXNzaW9uX2Fs Z29yaXRobV9zdHIsCisJCQkJCQkJCQkgICAmY29tcHJlc3Npb25fZGV0YWlsKTsKKwkJCQl1c2Vy X2NvbXByZXNzaW9uX2RlZmluZWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQljYXNlIDA6CkBA IC02ODcsMjMgKzY5Myw1MCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoYXJj aGl2ZUZvcm1hdCA9PSBhcmNoTnVsbCkKIAkJcGxhaW5UZXh0ID0gMTsKIAotCS8qIEN1c3RvbSBh bmQgZGlyZWN0b3J5IGZvcm1hdHMgYXJlIGNvbXByZXNzZWQgYnkgZGVmYXVsdCwgb3RoZXJzIG5v dCAqLwotCWlmIChjb21wcmVzc0xldmVsID09IC0xKQorCS8qCisJICogQ29tcHJlc3Npb24gb3B0 aW9ucworCSAqLworCWlmICghcGFyc2VfY29tcHJlc3NfYWxnb3JpdGhtKGNvbXByZXNzaW9uX2Fs Z29yaXRobV9zdHIsCisJCQkJCQkJCSAgJmNvbXByZXNzaW9uX2FsZ29yaXRobSkpCisJCXBnX2Zh dGFsKCJ1bnJlY29nbml6ZWQgY29tcHJlc3Npb24gYWxnb3JpdGhtOiBcIiVzXCIiLAorCQkJCSBj b21wcmVzc2lvbl9hbGdvcml0aG1fc3RyKTsKKworCXBhcnNlX2NvbXByZXNzX3NwZWNpZmljYXRp b24oY29tcHJlc3Npb25fYWxnb3JpdGhtLCBjb21wcmVzc2lvbl9kZXRhaWwsCisJCQkJCQkJCSAm Y29tcHJlc3Npb25fc3BlYyk7CisJZXJyb3JfZGV0YWlsID0gdmFsaWRhdGVfY29tcHJlc3Nfc3Bl Y2lmaWNhdGlvbigmY29tcHJlc3Npb25fc3BlYyk7CisJaWYgKGVycm9yX2RldGFpbCAhPSBOVUxM KQorCQlwZ19mYXRhbCgiaW52YWxpZCBjb21wcmVzc2lvbiBzcGVjaWZpY2F0aW9uOiAlcyIsCisJ CQkJIGVycm9yX2RldGFpbCk7CisKKwlzd2l0Y2ggKGNvbXByZXNzaW9uX2FsZ29yaXRobSkKKwl7 CisJCWNhc2UgUEdfQ09NUFJFU1NJT05fTk9ORToKKwkJCS8qIGZhbGx0aHJvdWdoICovCisJCWNh c2UgUEdfQ09NUFJFU1NJT05fR1pJUDoKKwkJCWJyZWFrOworCQljYXNlIFBHX0NPTVBSRVNTSU9O X1pTVEQ6CisJCQlwZ19mYXRhbCgiY29tcHJlc3Npb24gd2l0aCAlcyBpcyBub3QgeWV0IHN1cHBv cnRlZCIsICJaU1REIik7CisJCQlicmVhazsKKwkJY2FzZSBQR19DT01QUkVTU0lPTl9MWjQ6CisJ CQlwZ19mYXRhbCgiY29tcHJlc3Npb24gd2l0aCAlcyBpcyBub3QgeWV0IHN1cHBvcnRlZCIsICJM WjQiKTsKKwkJCWJyZWFrOworCX0KKworCS8qCisJICogQ3VzdG9tIGFuZCBkaXJlY3RvcnkgZm9y bWF0cyBhcmUgY29tcHJlc3NlZCBieSBkZWZhdWx0ICh6bGliKSwgb3RoZXJzCisJICogbm90CisJ ICovCisJaWYgKChhcmNoaXZlRm9ybWF0ID09IGFyY2hDdXN0b20gfHwgYXJjaGl2ZUZvcm1hdCA9 PSBhcmNoRGlyZWN0b3J5KSAmJgorCQkhdXNlcl9jb21wcmVzc2lvbl9kZWZpbmVkKQogCXsKICNp ZmRlZiBIQVZFX0xJQloKLQkJaWYgKGFyY2hpdmVGb3JtYXQgPT0gYXJjaEN1c3RvbSB8fCBhcmNo aXZlRm9ybWF0ID09IGFyY2hEaXJlY3RvcnkpCi0JCQljb21wcmVzc0xldmVsID0gWl9ERUZBVUxU X0NPTVBSRVNTSU9OOwotCQllbHNlCisJCXBhcnNlX2NvbXByZXNzX3NwZWNpZmljYXRpb24oUEdf Q09NUFJFU1NJT05fR1pJUCwgTlVMTCwKKwkJCQkJCQkJCSAmY29tcHJlc3Npb25fc3BlYyk7Cisj ZWxzZQorCQkvKiBubyBvcCAqLwogI2VuZGlmCi0JCQljb21wcmVzc0xldmVsID0gMDsKIAl9CiAK LSNpZm5kZWYgSEFWRV9MSUJaCi0JaWYgKGNvbXByZXNzTGV2ZWwgIT0gMCkKLQkJcGdfbG9nX3dh cm5pbmcoInJlcXVlc3RlZCBjb21wcmVzc2lvbiBub3QgYXZhaWxhYmxlIGluIHRoaXMgaW5zdGFs bGF0aW9uIC0tIGFyY2hpdmUgd2lsbCBiZSB1bmNvbXByZXNzZWQiKTsKLQljb21wcmVzc0xldmVs ID0gMDsKLSNlbmRpZgotCiAJLyoKIAkgKiBJZiBlbWl0dGluZyBhbiBhcmNoaXZlIGZvcm1hdCwg d2UgYWx3YXlzIHdhbnQgdG8gZW1pdCBhIERBVEFCQVNFIGl0ZW0sCiAJICogaW4gY2FzZSAtLWNy ZWF0ZSBpcyBzcGVjaWZpZWQgYXQgcGdfcmVzdG9yZSB0aW1lLgpAQCAtNzE2LDggKzc0OSw4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlwZ19mYXRhbCgicGFyYWxsZWwgYmFja3Vw IG9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBkaXJlY3RvcnkgZm9ybWF0Iik7CiAKIAkvKiBPcGVuIHRo ZSBvdXRwdXQgZmlsZSAqLwotCWZvdXQgPSBDcmVhdGVBcmNoaXZlKGZpbGVuYW1lLCBhcmNoaXZl Rm9ybWF0LCBjb21wcmVzc0xldmVsLCBkb3N5bmMsCi0JCQkJCQkgYXJjaGl2ZU1vZGUsIHNldHVw RHVtcFdvcmtlcik7CisJZm91dCA9IENyZWF0ZUFyY2hpdmUoZmlsZW5hbWUsIGFyY2hpdmVGb3Jt YXQsIGNvbXByZXNzaW9uX3NwZWMsCisJCQkJCQkgZG9zeW5jLCBhcmNoaXZlTW9kZSwgc2V0dXBE dW1wV29ya2VyKTsKIAogCS8qIE1ha2UgZHVtcCBvcHRpb25zIGFjY2Vzc2libGUgcmlnaHQgYXdh eSAqLwogCVNldEFyY2hpdmVPcHRpb25zKGZvdXQsICZkb3B0LCBOVUxMKTsKQEAgLTk0OCwxMCAr OTgxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJcm9wdC0+c2VxdWVuY2VfZGF0 YSA9IGRvcHQuc2VxdWVuY2VfZGF0YTsKIAlyb3B0LT5iaW5hcnlfdXBncmFkZSA9IGRvcHQuYmlu YXJ5X3VwZ3JhZGU7CiAKLQlpZiAoY29tcHJlc3NMZXZlbCA9PSAtMSkKLQkJcm9wdC0+Y29tcHJl c3Npb24gPSAwOwotCWVsc2UKLQkJcm9wdC0+Y29tcHJlc3Npb24gPSBjb21wcmVzc0xldmVsOwor CXJvcHQtPmNvbXByZXNzaW9uX3NwZWMgPSBjb21wcmVzc2lvbl9zcGVjOwogCiAJcm9wdC0+c3Vw cHJlc3NEdW1wV2FybmluZ3MgPSB0cnVlOwkvKiBXZSd2ZSBhbHJlYWR5IHNob3duIHRoZW0gKi8K IApAQCAtOTk4LDcgKzEwMjgsOCBAQCBoZWxwKGNvbnN0IGNoYXIgKnByb2duYW1lKQogCXByaW50 ZihfKCIgIC1qLCAtLWpvYnM9TlVNICAgICAgICAgICAgICAgdXNlIHRoaXMgbWFueSBwYXJhbGxl bCBqb2JzIHRvIGR1bXBcbiIpKTsKIAlwcmludGYoXygiICAtdiwgLS12ZXJib3NlICAgICAgICAg ICAgICAgIHZlcmJvc2UgbW9kZVxuIikpOwogCXByaW50ZihfKCIgIC1WLCAtLXZlcnNpb24gICAg ICAgICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOwot CXByaW50ZihfKCIgIC1aLCAtLWNvbXByZXNzPTAtOSAgICAgICAgICAgY29tcHJlc3Npb24gbGV2 ZWwgZm9yIGNvbXByZXNzZWQgZm9ybWF0c1xuIikpOworCXByaW50ZihfKCIgIC1aLCAtLWNvbXBy ZXNzPU1FVEhPRFs6TEVWRUxdXG4iCisJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb21wcmVzcyBhcyBzcGVjaWZpZWRcbiIpKTsKIAlwcmludGYoXygiICAtLWxvY2std2FpdC10 aW1lb3V0PVRJTUVPVVQgIGZhaWwgYWZ0ZXIgd2FpdGluZyBUSU1FT1VUIGZvciBhIHRhYmxlIGxv Y2tcbiIpKTsKIAlwcmludGYoXygiICAtLW5vLXN5bmMgICAgICAgICAgICAgICAgICAgIGRvIG5v dCB3YWl0IGZvciBjaGFuZ2VzIHRvIGJlIHdyaXR0ZW4gc2FmZWx5IHRvIGRpc2tcbiIpKTsKIAlw cmludGYoXygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwLCB0 aGVuIGV4aXRcbiIpKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5w bCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCBhNTgzYzhhNmQyLi5jOGJj MDIxMjZkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0xMjEsMjQgKzEyMSw0NiBAQCBjb21t YW5kX2ZhaWxzX2xpa2UoCiAJJ3BnX3Jlc3RvcmU6IGNhbm5vdCBzcGVjaWZ5IGJvdGggLS1zaW5n bGUtdHJhbnNhY3Rpb24gYW5kIG11bHRpcGxlIGpvYnMnKTsKIAogY29tbWFuZF9mYWlsc19saWtl KAotCVsgJ3BnX2R1bXAnLCAnLVonLCAnLTEnIF0sCi0JcXIvXFFwZ19kdW1wOiBlcnJvcjogLVpc Ly0tY29tcHJlc3MgbXVzdCBiZSBpbiByYW5nZSAwLi45XEUvLAotCSdwZ19kdW1wOiAtWi8tLWNv bXByZXNzIG11c3QgYmUgaW4gcmFuZ2UnKTsKKwlbICdwZ19kdW1wJywgJy0tY29tcHJlc3MnLCAn Z2FyYmFnZScgXSwKKwlxci9cUXBnX2R1bXA6IGVycm9yOiB1bnJlY29nbml6ZWQgY29tcHJlc3Np b24gYWxnb3JpdGhtLywKKwkncGdfZHVtcDogaW52YWxpZCAtLWNvbXByZXNzJyk7CisKK2NvbW1h bmRfZmFpbHNfbGlrZSgKKwlbICdwZ19kdW1wJywgJy0tY29tcHJlc3MnLCAnbm9uZToxJyBdLAor CXFyL1xRcGdfZHVtcDogZXJyb3I6IGludmFsaWQgY29tcHJlc3Npb24gc3BlY2lmaWNhdGlvbjog Y29tcHJlc3Npb24gYWxnb3JpdGhtICJub25lIiBkb2VzIG5vdCBhY2NlcHQgYSBjb21wcmVzc2lv biBsZXZlbFxFLywKKwkncGdfZHVtcDogaW52YWxpZCBjb21wcmVzc2lvbiBzcGVjaWZpY2F0aW9u OiBjb21wcmVzc2lvbiBhbGdvcml0aG0gIm5vbmUiIGRvZXMgbm90IGFjY2VwdCBhIGNvbXByZXNz aW9uIGxldmVsJworKTsKKwogCiBpZiAoY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhBVkVfTElC WiAxIikpCiB7CisJY29tbWFuZF9mYWlsc19saWtlKAorCQlbICdwZ19kdW1wJywgJy1aJywgJzE1 JyBdLAorCQlxci9cUXBnX2R1bXA6IGVycm9yOiBpbnZhbGlkIGNvbXByZXNzaW9uIHNwZWNpZmlj YXRpb246IGNvbXByZXNzaW9uIGFsZ29yaXRobSAiZ3ppcCIgZXhwZWN0cyBhIGNvbXByZXNzaW9u IGxldmVsIGJldHdlZW4gMSBhbmQgOSAoZGVmYXVsdCBhdCAtMSlcRS8sCisJCSdwZ19kdW1wOiBp bnZhbGlkIGNvbXByZXNzaW9uIHNwZWNpZmljYXRpb246IG11c3QgYmUgaW4gcmFuZ2UnKTsKKwog CWNvbW1hbmRfZmFpbHNfbGlrZSgKIAkJWyAncGdfZHVtcCcsICctLWNvbXByZXNzJywgJzEnLCAn LS1mb3JtYXQnLCAndGFyJyBdLAogCQlxci9cUXBnX2R1bXA6IGVycm9yOiBjb21wcmVzc2lvbiBp cyBub3Qgc3VwcG9ydGVkIGJ5IHRhciBhcmNoaXZlIGZvcm1hdFxFLywKIAkJJ3BnX2R1bXA6IGNv bXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Jyk7CisKKwlj b21tYW5kX2ZhaWxzX2xpa2UoCisJCVsgJ3BnX2R1bXAnLCAnLVonLCAnZ3ppcDpub25JbnQnIF0s CisJCXFyL1xRcGdfZHVtcDogZXJyb3I6IGludmFsaWQgY29tcHJlc3Npb24gc3BlY2lmaWNhdGlv bjogdW5yZWNvZ25pemVkIGNvbXByZXNzaW9uIG9wdGlvbjogIm5vbkludCJcRS8sCisJCSdwZ19k dW1wOiBpbnZhbGlkIGNvbXByZXNzaW9uIHNwZWNpZmljYXRpb246IG11c3QgYmUgYW4gaW50ZWdl cicpOwogfQogZWxzZQogewogCSMgLS1qb2JzID4gMSBmb3JjZXMgYW4gZXJyb3Igd2l0aCB0YXIg Zm9ybWF0LgogCWNvbW1hbmRfZmFpbHNfbGlrZSgKLQkJWyAncGdfZHVtcCcsICctLWNvbXByZXNz JywgJzEnLCAnLS1mb3JtYXQnLCAndGFyJywgJy1qMycgXSwKLQkJcXIvXFFwZ19kdW1wOiB3YXJu aW5nOiByZXF1ZXN0ZWQgY29tcHJlc3Npb24gbm90IGF2YWlsYWJsZSBpbiB0aGlzIGluc3RhbGxh dGlvbiAtLSBhcmNoaXZlIHdpbGwgYmUgdW5jb21wcmVzc2VkXEUvLAotCQkncGdfZHVtcDogd2Fy bmluZzogY29tcHJlc3Npb24gbm90IGF2YWlsYWJsZSBpbiB0aGlzIGluc3RhbGxhdGlvbicpOwor CQlbICdwZ19kdW1wJywgJy0tZm9ybWF0JywgJ3RhcicsICctajMnIF0sCisJCXFyL1xRcGdfZHVt cDogZXJyb3I6IHBhcmFsbGVsIGJhY2t1cCBvbmx5IHN1cHBvcnRlZCBieSB0aGUgZGlyZWN0b3J5 IGZvcm1hdFxFLywKKwkJJ3BnX2R1bXA6IHdhcm5pbmc6IHBhcmFsbGVsIGJhY2t1cCBub3Qgc3Vw cG9ydGVkIGJ5IHRhciBmb3JtYXQnKTsKKworCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJWyAncGdf ZHVtcCcsICctWicsICdnemlwOm5vbkludCcsICctLWZvcm1hdCcsICd0YXInLCAnLWoyJyBdLAor CQlxci9cUXBnX2R1bXA6IGVycm9yOiBpbnZhbGlkIGNvbXByZXNzaW9uIHNwZWNpZmljYXRpb246 IHVucmVjb2duaXplZCBjb21wcmVzc2lvbiBvcHRpb25cRS8sCisJCSdwZ19kdW1wOiBpbnZhbGlk IGNvbXByZXNzaW9uIHNwZWNpZmljYXRpb246IG11c3QgYmUgYW4gaW50ZWdlcicpOwogfQogCiBj b21tYW5kX2ZhaWxzX2xpa2UoCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGZlNTNlZDBm ODkuLjcwOWRiMDk4NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC04Nyw3ICs4Nyw3 IEBAIG15ICVwZ2R1bXBfcnVucyA9ICgKIAkJY29tcGlsZV9vcHRpb24gPT4gJ2d6aXAnLAogCQlk dW1wX2NtZCAgICAgICA9PiBbCiAJCQkncGdfZHVtcCcsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tam9icz0yJywKLQkJCSctLWZvcm1hdD1kaXJlY3RvcnknLCAgICAgICAgICAgICAg ICAgICAnLS1jb21wcmVzcz0xJywKKwkJCSctLWZvcm1hdD1kaXJlY3RvcnknLCAgICAgICAgICAg ICAgICAgICAnLS1jb21wcmVzcz1nemlwOjEnLAogCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVz c2lvbl9nemlwX2RpciIsICdwb3N0Z3JlcycsCiAJCV0sCiAJCSMgR2l2ZSBjb3ZlcmFnZSBmb3Ig bWFudWFsbHkgY29tcHJlc3NlZCBibG9iLnRvYyBmaWxlcyBkdXJpbmcKQEAgLTIwMCw2ICsyMDAs NyBAQCBteSAlcGdkdW1wX3J1bnMgPSAoCiAJIyBEbyBub3QgdXNlIC0tbm8tc3luYyB0byBnaXZl IHRlc3QgY292ZXJhZ2UgZm9yIGRhdGEgc3luYy4KIAlkZWZhdWx0c19jdXN0b21fZm9ybWF0ID0+ IHsKIAkJdGVzdF9rZXkgPT4gJ2RlZmF1bHRzJywKKwkJY29tcGlsZV9vcHRpb24gPT4gJ2d6aXAn LAogCQlkdW1wX2NtZCA9PiBbCiAJCQkncGdfZHVtcCcsICctRmMnLCAnLVo2JywKIAkJCSItLWZp bGU9JHRlbXBkaXIvZGVmYXVsdHNfY3VzdG9tX2Zvcm1hdC5kdW1wIiwgJ3Bvc3RncmVzJywKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wZ19kdW1wL3QvMDAxX2Jhc2UucGwgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdfZHVtcC90LzAwMV9iYXNlLnBsCmluZGV4IGY1ZGE2YmY0 NmQuLjE5NTc3Y2UwZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wZ19kdW1w L3QvMDAxX2Jhc2UucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1bXAvdC8wMDFf YmFzZS5wbApAQCAtMjAsNiArMjAsMTAgQEAgbXkgJHRlbXBkaXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczo6dGVtcGRpcjsKICMgdG8gZGVmaW5lIGhvdyBlYWNoIHRlc3Qgc2hvdWxkIChvciBz aG91bGRuJ3QpIHRyZWF0IGEgcmVzdWx0CiAjIGZyb20gYSBnaXZlbiBydW4uCiAjCisjIGNvbXBp bGVfb3B0aW9uIGluZGljYXRlcyBpZiB0aGUgY29tbWFuZHMgcnVuIGRlcGVuZCBvbiBhIGNvbXBp bGF0aW9uCisjIG9wdGlvbiwgaWYgYW55LiAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIGlm IHRlc3RzIHNob3VsZCBiZQorIyBza2lwcGVkIHdoZW4gYSBidWlsZCBkZXBlbmRlbmN5IGlzIG5v dCBzYXRpc2ZpZWQuCisjCiAjIHRlc3Rfa2V5IGluZGljYXRlcyB0aGF0IGEgZ2l2ZW4gcnVuIHNo b3VsZCBzaW1wbHkgdXNlIHRoZSBzYW1lCiAjIHNldCBvZiBsaWtlL3VubGlrZSB0ZXN0cyBhcyBh bm90aGVyIHJ1biwgYW5kIHdoaWNoIHJ1biB0aGF0IGlzLgogIwpAQCAtOTAsNiArOTQsNyBAQCBt eSAlcGdkdW1wX3J1bnMgPSAoCiAJfSwKIAlkZWZhdWx0c19jdXN0b21fZm9ybWF0ID0+IHsKIAkJ dGVzdF9rZXkgPT4gJ2RlZmF1bHRzJywKKwkJY29tcGlsZV9vcHRpb24gPT4gJ2d6aXAnLAogCQlk dW1wX2NtZCA9PiBbCiAJCQkncGdfZHVtcCcsICctLW5vLXN5bmMnLCAnLUZjJywgJy1aNicsCiAJ CQkiLS1maWxlPSR0ZW1wZGlyL2RlZmF1bHRzX2N1c3RvbV9mb3JtYXQuZHVtcCIsICdwb3N0Z3Jl cycsCkBAIC03NDksNiArNzU0LDggQEAgJG5vZGUtPnN0YXJ0OwogCiBteSAkcG9ydCA9ICRub2Rl LT5wb3J0OwogCitteSAkc3VwcG9ydHNfZ3ppcCA9IGNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBI QVZFX0xJQlogMSIpOworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBTZXQgdXAgc2NoZW1hcywgdGFibGVzLCBldGMsIHRvIGJlIGR1bXBlZC4KIApAQCAtNzky LDYgKzc5OSwxNSBAQCBmb3JlYWNoIG15ICRydW4gKHNvcnQga2V5cyAlcGdkdW1wX3J1bnMpCiAK IAlteSAkdGVzdF9rZXkgPSAkcnVuOwogCisJIyBTa2lwIGNvbW1hbmQtbGV2ZWwgdGVzdHMgZm9y IGd6aXAgaWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgaXQuCisJaWYgKCAgIGRlZmluZWQoJHBn ZHVtcF9ydW5zeyRydW59LT57Y29tcGlsZV9vcHRpb259KQorCQkmJiAkcGdkdW1wX3J1bnN7JHJ1 bn0tPntjb21waWxlX29wdGlvbn0gZXEgJ2d6aXAnCisJCSYmICEkc3VwcG9ydHNfZ3ppcCkKKwl7 CisJCW5vdGUgIiRydW46IHNraXBwZWQgZHVlIHRvIG5vIGd6aXAgc3VwcG9ydCI7CisJCW5leHQ7 CisJfQorCiAJJG5vZGUtPmNvbW1hbmRfb2soXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2R1bXBf Y21kfSB9LAogCQkiJHJ1bjogcGdfZHVtcCBydW5zIik7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggMmY1ODAyMTk1ZC4uNThkYWVjYTgzMSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTQyOCw3ICs0MjgsNiBAQCBDb21waWxlZEV4cHJTdGF0ZQogQ29tcG9zaXRlSU9EYXRh CiBDb21wb3NpdGVUeXBlU3RtdAogQ29tcG91bmRBZmZpeEZsYWcKLUNvbXByZXNzaW9uQWxnb3Jp dGhtCiBDb21wcmVzc2lvbkxvY2F0aW9uCiBDb21wcmVzc29yU3RhdGUKIENvbXB1dGVYaWRIb3Jp em9uc1Jlc3VsdAotLSAKMi4zNC4xCgo= --b1_MezkQCEhHXEHlY0aqScvavycCdwJhs6FZmp9qUqfd7o--