Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gyelm-0004JZ-10 for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Feb 2019 15:35:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gyelk-0006IQ-3L for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Feb 2019 15:35:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gyelj-0006Ha-2v for pgsql-hackers@lists.postgresql.org; Tue, 26 Feb 2019 15:35:43 +0000 Received: from gauss.credativ.com ([93.94.130.89]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gyelX-0007Zg-Iq for pgsql-hackers@postgresql.org; Tue, 26 Feb 2019 15:35:41 +0000 Received: from gauss.credativ.com (localhost [127.0.0.1]) by gauss.credativ.com (Postfix) with ESMTP id 70C081E23E0; Tue, 26 Feb 2019 16:35:23 +0100 (CET) Received: from kohn.fritz.box (ppp-88-217-97-249.dynamic.mnet-online.de [88.217.97.249]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: mba@gauss.credativ.com) by gauss.credativ.com (Postfix) with ESMTPSA id DA2B31E18F9; Tue, 26 Feb 2019 16:35:22 +0100 (CET) Message-ID: <1551195322.4947.16.camel@credativ.de> Subject: Re: Offline enabling/disabling of data checksums From: Michael Banck To: Michael Paquier Cc: Fabien COELHO , Postgres hackers Date: Tue, 26 Feb 2019 16:35:22 +0100 In-Reply-To: <20190219050224.GV15532@paquier.xyz> References: <20181221201616.GD4974@nighthawk.caipicrew.dd-dns.de> <1546949005.32387.11.camel@credativ.de> <1550428298.12689.12.camel@credativ.de> <20190219050224.GV15532@paquier.xyz> Organization: credativ GmbH Content-Type: multipart/mixed; boundary="=-eH4exbrk+fmXVmEAecPg" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=-eH4exbrk+fmXVmEAecPg Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Hi, Am Dienstag, den 19.02.2019, 14:02 +0900 schrieb Michael Paquier: > On Sun, Feb 17, 2019 at 07:31:38PM +0100, Michael Banck wrote: > > New patch attached. > > - * src/bin/pg_verify_checksums/pg_verify_checksums.c > + * src/bin/pg_checksums/pg_checksums.c > That's lacking a rename, or this comment is incorrect. Right, I started the rename, but then backed off pending further discussion whether I should submit that or whether the committer will just do it. I've backed those 4 in-file renames out for now. > +#if PG_VERSION_NUM >= 100000 > + StaticAssertStmt(sizeof(ControlFileData) <= PG_CONTROL_MAX_SAFE_SIZE, > + "pg_control is too large for atomic disk writes"); > +#endif > This is compiled with only one version of the control file data, so > you don't need that. Oops, yeah. > Any reason why we don't refactor updateControlFile() into > controldata_utils.c? This duplicates the code, at the exception of > some details. Ok, I've done that now, and migrated pg_rewind as well, do you know of any other programs that might benefit here? This could/should probably be committed separately beforehand. New patch attached. Michael -- Michael Banck Projektleiter / Senior Berater Tel.: +49 2166 9901-171 Fax: +49 2166 9901-100 Email: michael.banck@credativ.de credativ GmbH, HRB Mönchengladbach 12080 USt-ID-Nummer: DE204566209 Trompeterallee 108, 41189 Mönchengladbach Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer Unser Umgang mit personenbezogenen Daten unterliegt folgenden Bestimmungen: https://www.credativ.de/datenschutz --=-eH4exbrk+fmXVmEAecPg Content-Disposition: attachment; filename="offline-activation-of-checksums_V4.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="offline-activation-of-checksums_V4.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5X2NoZWNrc3Vtcy5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnlfY2hlY2tzdW1zLnNnbWwKaW5kZXggOTA1YjhmMTIy Mi4uYTU2NWNiNTJhZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnlfY2hl Y2tzdW1zLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnlfY2hlY2tzdW1zLnNn bWwKQEAgLTE2LDcgKzE2LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmbmFt ZWRpdj4KICAgPHJlZm5hbWU+cGdfdmVyaWZ5X2NoZWNrc3VtczwvcmVmbmFtZT4KLSAgPHJlZnB1 cnBvc2U+dmVyaWZ5IGRhdGEgY2hlY2tzdW1zIGluIGEgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8 L3Byb2R1Y3RuYW1lPiBkYXRhYmFzZSBjbHVzdGVyPC9yZWZwdXJwb3NlPgorICA8cmVmcHVycG9z ZT5lbmFibGUsIGRpc2FibGUgb3IgdmVyaWZ5IGRhdGEgY2hlY2tzdW1zIGluIGEgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBkYXRhYmFzZSBjbHVzdGVyPC9yZWZwdXJwb3Nl PgogIDwvcmVmbmFtZWRpdj4KIAogIDxyZWZzeW5vcHNpc2Rpdj4KQEAgLTI1LDYgKzI1LDExIEBA IFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgPGFyZyByZXA9InJlcGVhdCIgY2hvaWNlPSJv cHQiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPjwv YXJnPgogICAgPGdyb3VwIGNob2ljZT0ib3B0Ij4KICAgICA8Z3JvdXAgY2hvaWNlPSJvcHQiPgor ICAgICA8YXJnIGNob2ljZT0icGxhaW4iPjxvcHRpb24+LS1jaGVjazwvb3B0aW9uPjwvYXJnPgor ICAgICA8YXJnIGNob2ljZT0icGxhaW4iPjxvcHRpb24+LS1kaXNhYmxlPC9vcHRpb24+PC9hcmc+ CisgICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+PG9wdGlvbj4tLWVuYWJsZTwvb3B0aW9uPjwvYXJn PgorICAgIDwvZ3JvdXA+CisgICAgPGdyb3VwIGNob2ljZT0ib3B0Ij4KICAgICAgPGFyZyBjaG9p Y2U9InBsYWluIj48b3B0aW9uPi1EPC9vcHRpb24+PC9hcmc+CiAgICAgIDxhcmcgY2hvaWNlPSJw bGFpbiI+PG9wdGlvbj4tLXBnZGF0YTwvb3B0aW9uPjwvYXJnPgogICAgIDwvZ3JvdXA+CkBAIC0z NiwxMCArNDEsMTggQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnNlY3QxIGlkPSJy MS1hcHAtcGdfdmVyaWZ5X2NoZWNrc3Vtcy0xIj4KICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRs ZT4KICAgPHBhcmE+Ci0gICA8Y29tbWFuZD5wZ192ZXJpZnlfY2hlY2tzdW1zPC9jb21tYW5kPiB2 ZXJpZmllcyBkYXRhIGNoZWNrc3VtcyBpbiBhCi0gICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv cHJvZHVjdG5hbWU+IGNsdXN0ZXIuICBUaGUgc2VydmVyIG11c3QgYmUgc2h1dAotICAgZG93biBj bGVhbmx5IGJlZm9yZSBydW5uaW5nIDxhcHBsaWNhdGlvbj5wZ192ZXJpZnlfY2hlY2tzdW1zPC9h cHBsaWNhdGlvbj4uCi0gICBUaGUgZXhpdCBzdGF0dXMgaXMgemVybyBpZiB0aGVyZSBhcmUgbm8g Y2hlY2tzdW0gZXJyb3JzLCBvdGhlcndpc2Ugbm9uemVyby4KKyAgIDxjb21tYW5kPnBnX3Zlcmlm eV9jaGVja3N1bXM8L2NvbW1hbmQ+IGVuYWJsZSwgZGlzYWJsZSBvciB2ZXJpZmllcyBkYXRhCisg ICBjaGVja3N1bXMgaW4gYSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGNs dXN0ZXIuICBUaGUgc2VydmVyCisgICBtdXN0IGJlIHNodXQgZG93biBjbGVhbmx5IGJlZm9yZSBy dW5uaW5nCisgICA8YXBwbGljYXRpb24+cGdfdmVyaWZ5X2NoZWNrc3VtczwvYXBwbGljYXRpb24+ IC4KKyAgIFRoZSBleGl0IHN0YXR1cyBpcyB6ZXJvIGlmIHRoZXJlIGFyZSBubyBjaGVja3N1bSBl cnJvcnMgb3IgY2hlY2tzdW0KKyAgIGVuYWJsaW5nL2Rpc2FibGVkIHdhcyBzdWNjZXNzZnVsLCBv dGhlcndpc2Ugbm9uemVyby4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hpbGUgY2hlY2tp bmcgb3IgZW5hYmxpbmcgY2hlY2tzdW1zIG5lZWRzIHRvIHNjYW4gb3Igd3JpdGUgZXZlcnkgZmls ZSBpbgorICAgdGhlIGNsdXN0ZXIsIGRpc2FibGluZyB3aWxsIG9ubHkgdXBkYXRlIHRoZSA8Zmls ZW5hbWU+cGdfY29udHJvbDwvZmlsZW5hbWU+CisgICBmaWxlLiAgCiAgIDwvcGFyYT4KICA8L3Jl ZnNlY3QxPgogCkBAIC02MSw2ICs3NCwzNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxv cHRpb24+LWM8L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tY2hlY2s8L29w dGlvbj48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFZl cmlmeSBjaGVja3N1bXMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAg PC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRp b24+LWQ8L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tZGlzYWJsZTwvb3B0 aW9uPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRGlz YWJsZSBjaGVja3N1bXMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAg PC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRp b24+LWU8L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tZW5hYmxlPC9vcHRp b24+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBFbmFi bGUgY2hlY2tzdW1zLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwv dmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9u Pi12PC9vcHRpb24+PC90ZXJtPgogICAgICAgPHRlcm0+PG9wdGlvbj4tLXZlcmJvc2U8L29wdGlv bj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2lu ZC9wZ19yZXdpbmQuYyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jCmluZGV4IGFhNzUz YmIzMTUuLjI0MjBhZWY4NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2lu ZC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jCkBAIC0zNyw3ICszNyw2IEBA IHN0YXRpYyB2b2lkIGNyZWF0ZUJhY2t1cExhYmVsKFhMb2dSZWNQdHIgc3RhcnRwb2ludCwgVGlt ZUxpbmVJRCBzdGFydHRsaSwKIAogc3RhdGljIHZvaWQgZGlnZXN0Q29udHJvbEZpbGUoQ29udHJv bEZpbGVEYXRhICpDb250cm9sRmlsZSwgY2hhciAqc291cmNlLAogCQkJCSAgc2l6ZV90IHNpemUp Owotc3RhdGljIHZvaWQgdXBkYXRlQ29udHJvbEZpbGUoQ29udHJvbEZpbGVEYXRhICpDb250cm9s RmlsZSk7CiBzdGF0aWMgdm9pZCBzeW5jVGFyZ2V0RGlyZWN0b3J5KHZvaWQpOwogc3RhdGljIHZv aWQgc2FuaXR5Q2hlY2tzKHZvaWQpOwogc3RhdGljIHZvaWQgZmluZENvbW1vbkFuY2VzdG9yVGlt ZWxpbmUoWExvZ1JlY1B0ciAqcmVjcHRyLCBpbnQgKnRsaUluZGV4KTsKQEAgLTM3Nyw3ICszNzYs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlDb250cm9sRmlsZV9uZXcubWluUmVj b3ZlcnlQb2ludCA9IGVuZHJlYzsKIAlDb250cm9sRmlsZV9uZXcubWluUmVjb3ZlcnlQb2ludFRM SSA9IGVuZHRsaTsKIAlDb250cm9sRmlsZV9uZXcuc3RhdGUgPSBEQl9JTl9BUkNISVZFX1JFQ09W RVJZOwotCXVwZGF0ZUNvbnRyb2xGaWxlKCZDb250cm9sRmlsZV9uZXcpOworCXVwZGF0ZV9jb250 cm9sZmlsZShkYXRhZGlyX3RhcmdldCwgcHJvZ25hbWUsICZDb250cm9sRmlsZV9uZXcpOwogCiAJ cGdfbG9nKFBHX1BST0dSRVNTLCAic3luY2luZyB0YXJnZXQgZGF0YSBkaXJlY3RvcnlcbiIpOwog CXN5bmNUYXJnZXREaXJlY3RvcnkoKTsKQEAgLTY2Nyw0NSArNjY2LDYgQEAgZGlnZXN0Q29udHJv bEZpbGUoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgY2hhciAqc3JjLCBzaXplX3Qgc2l6 ZSkKIH0KIAogLyoKLSAqIFVwZGF0ZSB0aGUgdGFyZ2V0J3MgY29udHJvbCBmaWxlLgotICovCi1z dGF0aWMgdm9pZAotdXBkYXRlQ29udHJvbEZpbGUoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmls ZSkKLXsKLQljaGFyCQlidWZmZXJbUEdfQ09OVFJPTF9GSUxFX1NJWkVdOwotCi0JLyoKLQkgKiBG b3IgZ29vZCBsdWNrLCBhcHBseSB0aGUgc2FtZSBzdGF0aWMgYXNzZXJ0aW9ucyBhcyBpbiBiYWNr ZW5kJ3MKLQkgKiBXcml0ZUNvbnRyb2xGaWxlKCkuCi0JICovCi0JU3RhdGljQXNzZXJ0U3RtdChz aXplb2YoQ29udHJvbEZpbGVEYXRhKSA8PSBQR19DT05UUk9MX01BWF9TQUZFX1NJWkUsCi0JCQkJ CSAicGdfY29udHJvbCBpcyB0b28gbGFyZ2UgZm9yIGF0b21pYyBkaXNrIHdyaXRlcyIpOwotCVN0 YXRpY0Fzc2VydFN0bXQoc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkgPD0gUEdfQ09OVFJPTF9GSUxF X1NJWkUsCi0JCQkJCSAic2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkgZXhjZWVkcyBQR19DT05UUk9M X0ZJTEVfU0laRSIpOwotCi0JLyogUmVjYWxjdWxhdGUgQ1JDIG9mIGNvbnRyb2wgZmlsZSAqLwot CUlOSVRfQ1JDMzJDKENvbnRyb2xGaWxlLT5jcmMpOwotCUNPTVBfQ1JDMzJDKENvbnRyb2xGaWxl LT5jcmMsCi0JCQkJKGNoYXIgKikgQ29udHJvbEZpbGUsCi0JCQkJb2Zmc2V0b2YoQ29udHJvbEZp bGVEYXRhLCBjcmMpKTsKLQlGSU5fQ1JDMzJDKENvbnRyb2xGaWxlLT5jcmMpOwotCi0JLyoKLQkg KiBXcml0ZSBvdXQgUEdfQ09OVFJPTF9GSUxFX1NJWkUgYnl0ZXMgaW50byBwZ19jb250cm9sIGJ5 IHplcm8tcGFkZGluZwotCSAqIHRoZSBleGNlc3Mgb3ZlciBzaXplb2YoQ29udHJvbEZpbGVEYXRh KSwgdG8gYXZvaWQgcHJlbWF0dXJlIEVPRiByZWxhdGVkCi0JICogZXJyb3JzIHdoZW4gcmVhZGlu ZyBpdC4KLQkgKi8KLQltZW1zZXQoYnVmZmVyLCAwLCBQR19DT05UUk9MX0ZJTEVfU0laRSk7Ci0J bWVtY3B5KGJ1ZmZlciwgQ29udHJvbEZpbGUsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKLQot CW9wZW5fdGFyZ2V0X2ZpbGUoImdsb2JhbC9wZ19jb250cm9sIiwgZmFsc2UpOwotCi0Jd3JpdGVf dGFyZ2V0X3JhbmdlKGJ1ZmZlciwgMCwgUEdfQ09OVFJPTF9GSUxFX1NJWkUpOwotCi0JY2xvc2Vf dGFyZ2V0X2ZpbGUoKTsKLX0KLQotLyoKICAqIFN5bmMgdGFyZ2V0IGRhdGEgZGlyZWN0b3J5IHRv IGVuc3VyZSB0aGF0IG1vZGlmaWNhdGlvbnMgYXJlIHNhZmVseSBvbiBkaXNrLgogICoKICAqIFdl IGRvIHRoaXMgb25jZSwgZm9yIHRoZSB3aG9sZSBkYXRhIGRpcmVjdG9yeSwgZm9yIHBlcmZvcm1h bmNlIHJlYXNvbnMuICBBdApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1z L3BnX3ZlcmlmeV9jaGVja3N1bXMuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9wZ192 ZXJpZnlfY2hlY2tzdW1zLmMKaW5kZXggNTExMjYyYWI1Zi4uZjc1YmY5ZmNmNSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zL3BnX3ZlcmlmeV9jaGVja3N1bXMuYworKysg Yi9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMvcGdfdmVyaWZ5X2NoZWNrc3Vtcy5jCkBAIC0x LDcgKzEsNyBAQAogLyoKICAqIHBnX3ZlcmlmeV9jaGVja3N1bXMKICAqCi0gKiBWZXJpZmllcyBw YWdlIGxldmVsIGNoZWNrc3VtcyBpbiBhbiBvZmZsaW5lIGNsdXN0ZXIKKyAqIFZlcmlmaWVzL2Vu YWJsZXMvZGlzYWJsZXMgcGFnZSBsZXZlbCBjaGVja3N1bXMgaW4gYW4gb2ZmbGluZSBjbHVzdGVy CiAgKgogICoJQ29weXJpZ2h0IChjKSAyMDEwLTIwMTksIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCiAgKgpAQCAtMTMsMTQgKzEzLDE2IEBACiAjaW5jbHVkZSA8c3lzL3N0YXQu aD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAorI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFs LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAiY29tbW9uL2Nv bnRyb2xkYXRhX3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgorI2luY2x1 ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKICNpbmNs dWRlICJwZ19nZXRvcHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2NoZWNrc3VtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jaGVja3N1bV9pbXBsLmgi Ci0jaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogCiAKIHN0YXRpYyBpbnQ2NCBmaWxlcyA9IDA7CkBA IC0zMSwxNiArMzMsMzMgQEAgc3RhdGljIENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGU7CiBz dGF0aWMgY2hhciAqb25seV9yZWxmaWxlbm9kZSA9IE5VTEw7CiBzdGF0aWMgYm9vbCB2ZXJib3Nl ID0gZmFsc2U7CiAKK3R5cGVkZWYgZW51bQoreworCVBHX0FDVElPTl9DSEVDSywKKwlQR19BQ1RJ T05fRElTQUJMRSwKKwlQR19BQ1RJT05fRU5BQkxFCit9IENoZWNrc3VtQWN0aW9uOworCisvKiBG aWxlbmFtZSBjb21wb25lbnRzICovCisjZGVmaW5lIFBHX1RFTVBfRklMRVNfRElSICJwZ3NxbF90 bXAiCisjZGVmaW5lIFBHX1RFTVBfRklMRV9QUkVGSVggInBnc3FsX3RtcCIKKworc3RhdGljIENo ZWNrc3VtQWN0aW9uIGFjdGlvbiA9IFBHX0FDVElPTl9DSEVDSzsKKwogc3RhdGljIGNvbnN0IGNo YXIgKnByb2duYW1lOwogCiBzdGF0aWMgdm9pZAogdXNhZ2Uodm9pZCkKIHsKLQlwcmludGYoXygi JXMgdmVyaWZpZXMgZGF0YSBjaGVja3N1bXMgaW4gYSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNsdXN0 ZXIuXG5cbiIpLCBwcm9nbmFtZSk7CisJcHJpbnRmKF8oIiVzIGVuYWJsZXMvZGlzYWJsZXMvdmVy aWZpZXMgZGF0YSBjaGVja3N1bXMgaW4gYSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNsdXN0ZXIuXG5c biIpLCBwcm9nbmFtZSk7CiAJcHJpbnRmKF8oIlVzYWdlOlxuIikpOwogCXByaW50ZihfKCIgICVz IFtPUFRJT05dLi4uIFtEQVRBRElSXVxuIiksIHByb2duYW1lKTsKIAlwcmludGYoXygiXG5PcHRp b25zOlxuIikpOwogCXByaW50ZihfKCIgWy1ELCAtLXBnZGF0YT1dREFUQURJUiAgZGF0YSBkaXJl Y3RvcnlcbiIpKTsKKwlwcmludGYoXygiICAtYywgLS1jaGVjayAgICAgICAgICAgIGNoZWNrIGRh dGEgY2hlY2tzdW1zXG4iKSk7CisJcHJpbnRmKF8oIiAgLWQsIC0tZGlzYWJsZSAgICAgICAgICBk aXNhYmxlIGRhdGEgY2hlY2tzdW1zXG4iKSk7CisJcHJpbnRmKF8oIiAgLWUsIC0tZW5hYmxlICAg ICAgICAgICBlbmFibGUgZGF0YSBjaGVja3N1bXNcbiIpKTsKKwlwcmludGYoXygiICAgICAgICAg ICAgICAgICBcImNoZWNrXCIsIFwiZW5hYmxlXCIgYW5kIFwiZGlzYWJsZVwiXG4iKSk7CiAJcHJp bnRmKF8oIiAgLXYsIC0tdmVyYm9zZSAgICAgICAgICBvdXRwdXQgdmVyYm9zZSBtZXNzYWdlc1xu IikpOwogCXByaW50ZihfKCIgIC1yIFJFTEZJTEVOT0RFICAgICAgICAgY2hlY2sgb25seSByZWxh dGlvbiB3aXRoIHNwZWNpZmllZCByZWxmaWxlbm9kZVxuIikpOwogCXByaW50ZihfKCIgIC1WLCAt LXZlcnNpb24gICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24sIHRoZW4gZXhpdFxu IikpOwpAQCAtODcsNyArMTA2LDExIEBAIHNjYW5fZmlsZShjb25zdCBjaGFyICpmbiwgQmxvY2tO dW1iZXIgc2VnbWVudG5vKQogCWludAkJCWY7CiAJQmxvY2tOdW1iZXIgYmxvY2tubzsKIAotCWYg PSBvcGVuKGZuLCBPX1JET05MWSB8IFBHX0JJTkFSWSwgMCk7CisJQXNzZXJ0KGFjdGlvbiA9PSBQ R19BQ1RJT05fRU5BQkxFIHx8CisJCSAgIGFjdGlvbiA9PSBQR19BQ1RJT05fQ0hFQ0spOworCisJ ZiA9IG9wZW4oZm4sIGFjdGlvbiA9PSBQR19BQ1RJT05fRU5BQkxFID8gT19SRFdSIDogT19SRE9O TFkgfCBQR19CSU5BUlksIDApOworCiAJaWYgKGYgPCAwKQogCXsKIAkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXNcbiIpLApAQCAtMTE3LDE4ICsx NDAsNDcgQEAgc2Nhbl9maWxlKGNvbnN0IGNoYXIgKmZuLCBCbG9ja051bWJlciBzZWdtZW50bm8p CiAJCQljb250aW51ZTsKIAogCQljc3VtID0gcGdfY2hlY2tzdW1fcGFnZShidWYuZGF0YSwgYmxv Y2tubyArIHNlZ21lbnRubyAqIFJFTFNFR19TSVpFKTsKLQkJaWYgKGNzdW0gIT0gaGVhZGVyLT5w ZF9jaGVja3N1bSkKKwkJaWYgKGFjdGlvbiA9PSBQR19BQ1RJT05fQ0hFQ0spCiAJCXsKLQkJCWlm IChDb250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uID09IFBHX0RBVEFfQ0hFQ0tTVU1f VkVSU0lPTikKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNoZWNrc3VtIHZlcmlmaWNhdGlv biBmYWlsZWQgaW4gZmlsZSBcIiVzXCIsIGJsb2NrICV1OiBjYWxjdWxhdGVkIGNoZWNrc3VtICVY IGJ1dCBibG9jayBjb250YWlucyAlWFxuIiksCi0JCQkJCQlwcm9nbmFtZSwgZm4sIGJsb2Nrbm8s IGNzdW0sIGhlYWRlci0+cGRfY2hlY2tzdW0pOwotCQkJYmFkYmxvY2tzKys7CisJCQlpZiAoY3N1 bSAhPSBoZWFkZXItPnBkX2NoZWNrc3VtKQorCQkJeworCQkJCWlmIChDb250cm9sRmlsZS0+ZGF0 YV9jaGVja3N1bV92ZXJzaW9uID09IFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTikKKwkJCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIGluIGZpbGUg XCIlc1wiLCBibG9jayAldTogY2FsY3VsYXRlZCBjaGVja3N1bSAlWCBidXQgYmxvY2sgY29udGFp bnMgJVhcbiIpLAorCQkJCQkJCXByb2duYW1lLCBmbiwgYmxvY2tubywgY3N1bSwgaGVhZGVyLT5w ZF9jaGVja3N1bSk7CisJCQkJYmFkYmxvY2tzKys7CisJCQl9CisJCX0KKwkJZWxzZSBpZiAoYWN0 aW9uID09IFBHX0FDVElPTl9FTkFCTEUpCisJCXsKKwkJCS8qIFNldCBjaGVja3N1bSBpbiBwYWdl IGhlYWRlciAqLworCQkJaGVhZGVyLT5wZF9jaGVja3N1bSA9IGNzdW07CisKKwkJCS8qIFNlZWsg YmFjayB0byBiZWdpbm5pbmcgb2YgYmxvY2sgKi8KKwkJCWlmIChsc2VlayhmLCAtQkxDS1NaLCBT RUVLX0NVUikgPCAwKQorCQkJeworCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogc2VlayBmYWls ZWQgZm9yIGJsb2NrICVkIGluIGZpbGUgXCIlc1wiOiAlc1xuIiksIHByb2duYW1lLCBibG9ja25v LCBmbiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlleGl0KDEpOworCQkJfQorCisJCQkvKiBXcml0 ZSBibG9jayB3aXRoIGNoZWNrc3VtICovCisJCQlpZiAod3JpdGUoZiwgYnVmLmRhdGEsIEJMQ0tT WikgIT0gQkxDS1NaKQorCQkJeworCQkJCWZwcmludGYoc3RkZXJyLCAiJXM6IGNvdWxkIG5vdCB1 cGRhdGUgY2hlY2tzdW0gb2YgYmxvY2sgJWQgaW4gZmlsZSBcIiVzXCI6ICVzXG4iLAorCQkJCQkJ cHJvZ25hbWUsIGJsb2Nrbm8sIGZuLCBzdHJlcnJvcihlcnJubykpOworCQkJCWV4aXQoMSk7CisJ CQl9CiAJCX0KIAl9CiAKIAlpZiAodmVyYm9zZSkKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygi JXM6IGNoZWNrc3VtcyB2ZXJpZmllZCBpbiBmaWxlIFwiJXNcIlxuIiksIHByb2duYW1lLCBmbik7 CisJeworCQlpZiAoYWN0aW9uID09IFBHX0FDVElPTl9DSEVDSykKKwkJCWZwcmludGYoc3RkZXJy LAorCQkJCQlfKCIlczogY2hlY2tzdW1zIHZlcmlmaWVkIGluIGZpbGUgXCIlc1wiXG4iKSwgcHJv Z25hbWUsIGZuKTsKKwkJaWYgKGFjdGlvbiA9PSBQR19BQ1RJT05fRU5BQkxFKQorCQkJZnByaW50 ZihzdGRlcnIsCisJCQkJCV8oIiVzOiBjaGVja3N1bXMgZW5hYmxlZCBpbiBmaWxlIFwiJXNcIlxu IiksIHByb2duYW1lLCBmbik7CisJfQogCiAJY2xvc2UoZik7CiB9CkBAIC0yMzAsMTQgKzI4Miwx OSBAQCBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlzdGF0aWMgc3RydWN0 IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsKKwkJeyJjaGVjayIsIG5vX2FyZ3VtZW50LCBOVUxM LCAnYyd9LAogCQl7InBnZGF0YSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnRCd9LAorCQl7 ImRpc2FibGUiLCBub19hcmd1bWVudCwgTlVMTCwgJ2QnfSwKKwkJeyJlbmFibGUiLCBub19hcmd1 bWVudCwgTlVMTCwgJ2UnfSwKIAkJeyJ2ZXJib3NlIiwgbm9fYXJndW1lbnQsIE5VTEwsICd2J30s CiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAKIAljaGFyCSAgICpEYXRhRGlyID0gTlVMTDsK KwljaGFyCQlwaWRfZmlsZVtNQVhQR1BBVEhdOwogCWludAkJCWM7CiAJaW50CQkJb3B0aW9uX2lu ZGV4OworCWludAkJCXBpZGY7CiAJYm9vbAkJY3JjX29rOwogCiAJc2V0X3BnbG9jYWxlX3Bnc2Vy dmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ192ZXJpZnlfY2hlY2tzdW1zIikpOwpAQCAt MjU4LDEwICszMTUsMTkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl9CiAJfQog Ci0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgIkQ6cjp2IiwgbG9uZ19vcHRp b25zLCAmb3B0aW9uX2luZGV4KSkgIT0gLTEpCisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJn YywgYXJndiwgImNEOmRlcjp2IiwgbG9uZ19vcHRpb25zLCAmb3B0aW9uX2luZGV4KSkgIT0gLTEp CiAJewogCQlzd2l0Y2ggKGMpCiAJCXsKKwkJCWNhc2UgJ2MnOgorCQkJCWFjdGlvbiA9IFBHX0FD VElPTl9DSEVDSzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ2QnOgorCQkJCWFjdGlvbiA9IFBHX0FD VElPTl9ESVNBQkxFOworCQkJCWJyZWFrOworCQkJY2FzZSAnZSc6CisJCQkJYWN0aW9uID0gUEdf QUNUSU9OX0VOQUJMRTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ3YnOgogCQkJCXZlcmJvc2UgPSB0 cnVlOwogCQkJCWJyZWFrOwpAQCAtMzA4LDYgKzM3NCwxNiBAQCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJCWV4aXQoMSk7CiAJfQogCisJLyogUmVsZmlsZW5vZGUgY2hlY2tpbmcgb25s eSB3b3JrcyBpbiBjaGVjayBtb2RlICovCisJaWYgKGFjdGlvbiAhPSBQR19BQ1RJT05fQ0hFQ0sg JiYKKwkJb25seV9yZWxmaWxlbm9kZSkKKwl7CisJCWZwcmludGYoc3RkZXJyLCBfKCIlczogcmVs ZmlsZW5vZGUgb3B0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBjaGVjayBhY3Rpb25cbiIpLCBwcm9n bmFtZSk7CisJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBp bmZvcm1hdGlvbi5cbiIpLAorCQkJCXByb2duYW1lKTsKKwkJZXhpdCgxKTsKKwl9CisKIAkvKiBD aGVjayBpZiBjbHVzdGVyIGlzIHJ1bm5pbmcgKi8KIAlDb250cm9sRmlsZSA9IGdldF9jb250cm9s ZmlsZShEYXRhRGlyLCBwcm9nbmFtZSwgJmNyY19vayk7CiAJaWYgKCFjcmNfb2spCkBAIC0zMTks MjkgKzM5NSw4NSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaWYgKENvbnRyb2xG aWxlLT5zdGF0ZSAhPSBEQl9TSFVURE9XTkVEICYmCiAJCUNvbnRyb2xGaWxlLT5zdGF0ZSAhPSBE Ql9TSFVURE9XTkVEX0lOX1JFQ09WRVJZKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj bHVzdGVyIG11c3QgYmUgc2h1dCBkb3duIHRvIHZlcmlmeSBjaGVja3N1bXNcbiIpLCBwcm9nbmFt ZSk7CisJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2x1c3RlciBtdXN0IGJlIHNodXQgZG93blxu IiksIHByb2duYW1lKTsKIAkJZXhpdCgxKTsKIAl9CiAKLQlpZiAoQ29udHJvbEZpbGUtPmRhdGFf Y2hlY2tzdW1fdmVyc2lvbiA9PSAwKQorCS8qIEFsc28gY2hlY2sgZm9yIHBvc3RtYXN0ZXIucGlk IGZpbGUgKi8KKwlzbnByaW50ZihwaWRfZmlsZSwgc2l6ZW9mKHBpZF9maWxlKSwgIiVzL3Bvc3Rt YXN0ZXIucGlkIiwgRGF0YURpcik7CisJcGlkZiA9IG9wZW4ocGlkX2ZpbGUsIE9fUkRPTkxZLCAw KTsKKwlpZiAocGlkZiA8IDApCisJeworCQkvKgorCQkgKiBpZiB0aGUgZXJybm8gaXMgRU5PRU5U LCB0aGVyZSBpcyBubyBwaWQgZmlsZSB3aGljaCBpcyB3aGF0IHdlCisJCSAqIGV4cGVjdC4gIE90 aGVyd2lzZSwgaXQgZXhpdHMgYnV0IHdlIGNhbm5vdCBvcGVuIGl0IHNvIGV4aXQgd2l0aAorCQkg KiBmYWlsdXJlLgorCQkgKi8KKwkJaWYgKGVycm5vICE9IEVOT0VOVCkKKwkJeworCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBwb3N0bWFzdGVyLnBpZCBjYW5ub3QgYmUgb3BlbmVkIGZvciByZWFk aW5nOiAlc1xuIiksCisJCQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJZXhpdCgx KTsKKwkJfQorCX0KKwllbHNlCisJeworCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHBvc3RtYXN0 ZXIucGlkIGV4aXN0cywgY2x1c3RlciBtdXN0IGJlIHNodXQgZG93blxuIiksIHByb2duYW1lKTsK KwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoQ29udHJvbEZpbGUtPmRhdGFfY2hlY2tzdW1fdmVyc2lv biA9PSAwICYmCisJCWFjdGlvbiA9PSBQR19BQ1RJT05fQ0hFQ0spCiAJewogCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGRhdGEgY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCBpbiBjbHVzdGVyXG4i KSwgcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0KKwlpZiAoQ29udHJvbEZpbGUtPmRhdGFfY2hl Y2tzdW1fdmVyc2lvbiA9PSAwICYmCisJCWFjdGlvbiA9PSBQR19BQ1RJT05fRElTQUJMRSkKKwl7 CisJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZGF0YSBjaGVja3N1bXMgYXJlIGFscmVhZHkgZGlz YWJsZWQgaW4gY2x1c3Rlci5cbiIpLCBwcm9nbmFtZSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChD b250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uID09IFBHX0RBVEFfQ0hFQ0tTVU1fVkVS U0lPTiAmJgorCQlhY3Rpb24gPT0gUEdfQUNUSU9OX0VOQUJMRSkKKwl7CisJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogZGF0YSBjaGVja3N1bXMgYXJlIGFscmVhZHkgZW5hYmxlZCBpbiBjbHVzdGVy LlxuIiksIHByb2duYW1lKTsKKwkJZXhpdCgxKTsKKwl9CiAKLQkvKiBTY2FuIGFsbCBmaWxlcyAq LwotCXNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJnbG9iYWwiKTsKLQlzY2FuX2RpcmVjdG9yeShE YXRhRGlyLCAiYmFzZSIpOwotCXNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ190YmxzcGMiKTsK KwlpZiAoYWN0aW9uID09IFBHX0FDVElPTl9DSEVDSyB8fCBhY3Rpb24gPT0gUEdfQUNUSU9OX0VO QUJMRSkKKwl7CisJCS8qIE9wZXJhdGUgb24gYWxsIGZpbGVzICovCisJCXNjYW5fZGlyZWN0b3J5 KERhdGFEaXIsICJnbG9iYWwiKTsKKwkJc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgImJhc2UiKTsK KwkJc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgInBnX3RibHNwYyIpOworCisJCXByaW50ZihfKCJD aGVja3N1bSBvcGVyYXRpb24gY29tcGxldGVkXG4iKSk7CisJCXByaW50ZihfKCJGaWxlcyBzY2Fu bmVkOiAgJXNcbiIpLCBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIGZpbGVzKSk7CisJCXByaW50Zihf KCJCbG9ja3Mgc2Nhbm5lZDogJXNcbiIpLCBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIGJsb2Nrcykp OworCQlpZiAoYWN0aW9uID09IFBHX0FDVElPTl9DSEVDSykKKwkJeworCQkJcHJpbnRmKF8oIkJh ZCBjaGVja3N1bXM6ICAlc1xuIiksIHBzcHJpbnRmKElOVDY0X0ZPUk1BVCwgYmFkYmxvY2tzKSk7 CisJCQlwcmludGYoXygiRGF0YSBjaGVja3N1bSB2ZXJzaW9uOiAlZFxuIiksIENvbnRyb2xGaWxl LT5kYXRhX2NoZWNrc3VtX3ZlcnNpb24pOwogCi0JcHJpbnRmKF8oIkNoZWNrc3VtIHNjYW4gY29t cGxldGVkXG4iKSk7Ci0JcHJpbnRmKF8oIkRhdGEgY2hlY2tzdW0gdmVyc2lvbjogJWRcbiIpLCBD b250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uKTsKLQlwcmludGYoXygiRmlsZXMgc2Nh bm5lZDogICVzXG4iKSwgcHNwcmludGYoSU5UNjRfRk9STUFULCBmaWxlcykpOwotCXByaW50Zihf KCJCbG9ja3Mgc2Nhbm5lZDogJXNcbiIpLCBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIGJsb2Nrcykp OwotCXByaW50ZihfKCJCYWQgY2hlY2tzdW1zOiAgJXNcbiIpLCBwc3ByaW50ZihJTlQ2NF9GT1JN QVQsIGJhZGJsb2NrcykpOworCQkJaWYgKGJhZGJsb2NrcyA+IDApCisJCQkJcmV0dXJuIDE7CisJ CX0KKwl9CiAKLQlpZiAoYmFkYmxvY2tzID4gMCkKLQkJcmV0dXJuIDE7CisJaWYgKGFjdGlvbiA9 PSBQR19BQ1RJT05fRU5BQkxFIHx8IGFjdGlvbiA9PSBQR19BQ1RJT05fRElTQUJMRSkKKwl7CisJ CS8qIFVwZGF0ZSBjb250cm9sIGZpbGUgKi8KKwkJQ29udHJvbEZpbGUtPmRhdGFfY2hlY2tzdW1f dmVyc2lvbiA9IGFjdGlvbiA9PSBQR19BQ1RJT05fRU5BQkxFID8gUEdfREFUQV9DSEVDS1NVTV9W RVJTSU9OIDogMDsKKwkJdXBkYXRlX2NvbnRyb2xmaWxlKERhdGFEaXIsIHByb2duYW1lLCBDb250 cm9sRmlsZSk7CisJCWZzeW5jX3BnZGF0YShEYXRhRGlyLCBwcm9nbmFtZSwgUEdfVkVSU0lPTl9O VU0pOworCQlpZiAodmVyYm9zZSkKKwkJCXByaW50ZihfKCJEYXRhIGNoZWNrc3VtIHZlcnNpb246 ICVkXG4iKSwgQ29udHJvbEZpbGUtPmRhdGFfY2hlY2tzdW1fdmVyc2lvbik7CisJCWlmIChhY3Rp b24gPT0gUEdfQUNUSU9OX0VOQUJMRSkKKwkJCXByaW50ZihfKCJDaGVja3N1bXMgZW5hYmxlZCBp biBjbHVzdGVyXG4iKSk7CisJCWVsc2UKKwkJCXByaW50ZihfKCJDaGVja3N1bXMgZGlzYWJsZWQg aW4gY2x1c3RlclxuIikpOworCX0KIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ192ZXJpZnlfY2hlY2tzdW1zL3QvMDAyX2FjdGlvbnMucGwgYi9zcmMvYmluL3BnX3Zlcmlm eV9jaGVja3N1bXMvdC8wMDJfYWN0aW9ucy5wbAppbmRleCA3NGFkNWFkNzIzLi4zNjRjMjE1Y2Jh IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMvdC8wMDJfYWN0aW9ucy5w bAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMvdC8wMDJfYWN0aW9ucy5wbApAQCAt NSw3ICs1LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIHVzZSBQb3N0Z3Jlc05vZGU7 CiB1c2UgVGVzdExpYjsKLXVzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDQ1OwordXNlIFRlc3Q6Ok1v cmUgdGVzdHMgPT4gNTk7CiAKIAogIyBVdGlsaXR5IHJvdXRpbmUgdG8gY3JlYXRlIGFuZCBjaGVj ayBhIHRhYmxlIHdpdGggY29ycnVwdGVkIGNoZWNrc3VtcwpAQCAtMzgsOCArMzgsOCBAQCBzdWIg Y2hlY2tfcmVsYXRpb25fY29ycnVwdGlvbgogCiAJIyBDaGVja3N1bXMgYXJlIGNvcnJlY3QgZm9y IHNpbmdsZSByZWxmaWxlbm9kZSBhcyB0aGUgdGFibGUgaXMgbm90CiAJIyBjb3JydXB0ZWQgeWV0 LgotCWNvbW1hbmRfb2soWydwZ192ZXJpZnlfY2hlY2tzdW1zJywgICctRCcsICRwZ2RhdGEsCi0J CSctcicsICRyZWxmaWxlbm9kZV9jb3JydXB0ZWRdLAorCWNvbW1hbmRfb2soWydwZ192ZXJpZnlf Y2hlY2tzdW1zJywgICctYycsICctRCcsICRwZ2RhdGEsICctcicsCisJCQkgICAkcmVsZmlsZW5v ZGVfY29ycnVwdGVkXSwKIAkJInN1Y2NlZWRzIGZvciBzaW5nbGUgcmVsZmlsZW5vZGUgb24gdGFi bGVzcGFjZSAkdGFibGVzcGFjZSB3aXRoIG9mZmxpbmUgY2x1c3RlciIpOwogCiAJIyBUaW1lIHRv IGNyZWF0ZSBzb21lIGNvcnJ1cHRpb24KQEAgLTQ5LDE1ICs0OSwxNSBAQCBzdWIgY2hlY2tfcmVs YXRpb25fY29ycnVwdGlvbgogCWNsb3NlICRmaWxlOwogCiAJIyBDaGVja3N1bSBjaGVja3Mgb24g c2luZ2xlIHJlbGZpbGVub2RlIGZhaWwKLQkkbm9kZS0+Y29tbWFuZF9jaGVja3NfYWxsKFsgJ3Bn X3ZlcmlmeV9jaGVja3N1bXMnLCAnLUQnLCAkcGdkYXRhLCAnLXInLAotCQkJCQkJCQkkcmVsZmls ZW5vZGVfY29ycnVwdGVkXSwKKwkkbm9kZS0+Y29tbWFuZF9jaGVja3NfYWxsKFsgJ3BnX3Zlcmlm eV9jaGVja3N1bXMnLCAnLWMnLCAnLUQnLCAkcGdkYXRhLAorCQkJCQkJCSAgJy1yJywgJHJlbGZp bGVub2RlX2NvcnJ1cHRlZF0sCiAJCQkJCQkJICAxLAogCQkJCQkJCSAgW3FyL0JhZCBjaGVja3N1 bXM6LioxL10sCiAJCQkJCQkJICBbcXIvY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGZhaWxlZC9dLAog CQkJCQkJCSAgImZhaWxzIHdpdGggY29ycnVwdGVkIGRhdGEgZm9yIHNpbmdsZSByZWxmaWxlbm9k ZSBvbiB0YWJsZXNwYWNlICR0YWJsZXNwYWNlIik7CiAKIAkjIEdsb2JhbCBjaGVja3N1bSBjaGVj a3MgZmFpbCBhcyB3ZWxsCi0JJG5vZGUtPmNvbW1hbmRfY2hlY2tzX2FsbChbICdwZ192ZXJpZnlf Y2hlY2tzdW1zJywgJy1EJywgJHBnZGF0YV0sCisJJG5vZGUtPmNvbW1hbmRfY2hlY2tzX2FsbChb ICdwZ192ZXJpZnlfY2hlY2tzdW1zJywgJy1jJywgJy1EJywgJHBnZGF0YV0sCiAJCQkJCQkJICAx LAogCQkJCQkJCSAgW3FyL0JhZCBjaGVja3N1bXM6LioxL10sCiAJCQkJCQkJICBbcXIvY2hlY2tz dW0gdmVyaWZpY2F0aW9uIGZhaWxlZC9dLApAQCAtNjcsMjIgKzY3LDIyIEBAIHN1YiBjaGVja19y ZWxhdGlvbl9jb3JydXB0aW9uCiAJJG5vZGUtPnN0YXJ0OwogCSRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkRST1AgVEFCTEUgJHRhYmxlOyIpOwogCSRub2RlLT5zdG9wOwotCSRub2RlLT5j b21tYW5kX29rKFsncGdfdmVyaWZ5X2NoZWNrc3VtcycsICctRCcsICRwZ2RhdGFdLAorCSRub2Rl LT5jb21tYW5kX29rKFsncGdfdmVyaWZ5X2NoZWNrc3VtcycsICctYycsICctRCcsICRwZ2RhdGFd LAogCSAgICAgICAgInN1Y2NlZWRzIGFnYWluIGFmdGVyIHRhYmxlIGRyb3Agb24gdGFibGVzcGFj ZSAkdGFibGVzcGFjZSIpOwogCiAJJG5vZGUtPnN0YXJ0OwogCXJldHVybjsKIH0KIAotIyBJbml0 aWFsaXplIG5vZGUgd2l0aCBjaGVja3N1bXMgZW5hYmxlZC4KKyMgSW5pdGlhbGl6ZSBub2RlIHdp dGggY2hlY2tzdW1zIGRpc2FibGVkLgogbXkgJG5vZGUgPSBnZXRfbmV3X25vZGUoJ25vZGVfY2hl Y2tzdW0nKTsKLSRub2RlLT5pbml0KGV4dHJhID0+IFsnLS1kYXRhLWNoZWNrc3VtcyddKTsKKyRu b2RlLT5pbml0KCk7CiBteSAkcGdkYXRhID0gJG5vZGUtPmRhdGFfZGlyOwogCi0jIENvbnRyb2wg ZmlsZSBzaG91bGQga25vdyB0aGF0IGNoZWNrc3VtcyBhcmUgZW5hYmxlZC4KKyMgQ29udHJvbCBm aWxlIHNob3VsZCBrbm93IHRoYXQgY2hlY2tzdW1zIGFyZSBkaXNhYmxlZC4KIGNvbW1hbmRfbGlr ZShbJ3BnX2NvbnRyb2xkYXRhJywgJHBnZGF0YV0sCi0JICAgICBxci9EYXRhIHBhZ2UgY2hlY2tz dW0gdmVyc2lvbjouKjEvLAotCQkgJ2NoZWNrc3VtcyBlbmFibGVkIGluIGNvbnRyb2wgZmlsZScp OworCSAgICAgcXIvRGF0YSBwYWdlIGNoZWNrc3VtIHZlcnNpb246LiowLywKKwkJICdjaGVja3N1 bXMgZGlzYWJsZWQgaW4gY29udHJvbCBmaWxlJyk7CiAKICMgVGhlc2UgYXJlIGNvcnJlY3QgYnV0 IGVtcHR5IGZpbGVzLCBzbyB0aGV5IHNob3VsZCBwYXNzIHRocm91Z2guCiBhcHBlbmRfdG9fZmls ZSAiJHBnZGF0YS9nbG9iYWwvOTk5OTkiLCAiIjsKQEAgLTEwMCwxMyArMTAwLDQ5IEBAIGFwcGVu ZF90b19maWxlICIkcGdkYXRhL2dsb2JhbC9wZ3NxbF90bXBfMTIzIiwgImZvbyI7CiBta2RpciAi JHBnZGF0YS9nbG9iYWwvcGdzcWxfdG1wIjsKIGFwcGVuZF90b19maWxlICIkcGdkYXRhL2dsb2Jh bC9wZ3NxbF90bXAvMS4xIiwgImZvbyI7CiAKKyMgRW5hYmxlIGNoZWNrc3VtcworY29tbWFuZF9v ayhbJ3BnX3ZlcmlmeV9jaGVja3N1bXMnLCAnLWUnLCAnLUQnLCAkcGdkYXRhXSwKKwkJICAgImNo ZWNrc3VtcyBzdWNjZXNzZnVsbHkgZW5hYmxlZCBpbiBjbHVzdGVyIik7CisKKyMgQ29udHJvbCBm aWxlIHNob3VsZCBrbm93IHRoYXQgY2hlY2tzdW1zIGFyZSBlbmFibGVkLgorY29tbWFuZF9saWtl KFsncGdfY29udHJvbGRhdGEnLCAkcGdkYXRhXSwKKwkgICAgIHFyL0RhdGEgcGFnZSBjaGVja3N1 bSB2ZXJzaW9uOi4qMS8sCisJCSAnY2hlY2tzdW1zIGVuYWJsZWQgaW4gY29udHJvbCBmaWxlJyk7 CisKKyMgRGlzYWJsZSBjaGVja3N1bXMgYWdhaW4KK2NvbW1hbmRfb2soWydwZ192ZXJpZnlfY2hl Y2tzdW1zJywgJy1kJywgJy1EJywgJHBnZGF0YV0sCisJCSAgICJjaGVja3N1bXMgc3VjY2Vzc2Z1 bGx5IGRpc2FibGVkIGluIGNsdXN0ZXIiKTsKKworIyBDb250cm9sIGZpbGUgc2hvdWxkIGtub3cg dGhhdCBjaGVja3N1bXMgYXJlIGRpc2FibGVkLgorY29tbWFuZF9saWtlKFsncGdfY29udHJvbGRh dGEnLCAkcGdkYXRhXSwKKwkgICAgIHFyL0RhdGEgcGFnZSBjaGVja3N1bSB2ZXJzaW9uOi4qMC8s CisJCSAnY2hlY2tzdW1zIGRpc2FibGVkIGluIGNvbnRyb2wgZmlsZScpOworCisjIEVuYWJsZSBj aGVja3N1bXMgYWdhaW4gd2l0aCBsb25nIG9wdGlvbgorY29tbWFuZF9vayhbJ3BnX3ZlcmlmeV9j aGVja3N1bXMnLCAnLS1lbmFibGUnLCAnLUQnLCAkcGdkYXRhXSwKKwkJICAgImNoZWNrc3VtcyBz dWNjZXNzZnVsbHkgZW5hYmxlZCBpbiBjbHVzdGVyIik7CisKKyMgQ29udHJvbCBmaWxlIHNob3Vs ZCBrbm93IHRoYXQgY2hlY2tzdW1zIGFyZSBlbmFibGVkLgorY29tbWFuZF9saWtlKFsncGdfY29u dHJvbGRhdGEnLCAkcGdkYXRhXSwKKwkgICAgIHFyL0RhdGEgcGFnZSBjaGVja3N1bSB2ZXJzaW9u Oi4qMS8sCisJCSAnY2hlY2tzdW1zIGVuYWJsZWQgaW4gY29udHJvbCBmaWxlJyk7CisKICMgQ2hl Y2tzdW1zIHBhc3Mgb24gYSBuZXdseS1jcmVhdGVkIGNsdXN0ZXIKLWNvbW1hbmRfb2soWydwZ192 ZXJpZnlfY2hlY2tzdW1zJywgICctRCcsICRwZ2RhdGFdLAorY29tbWFuZF9vayhbJ3BnX3Zlcmlm eV9jaGVja3N1bXMnLCAnLWMnLCAnLUQnLCAkcGdkYXRhXSwKIAkJICAgInN1Y2NlZWRzIHdpdGgg b2ZmbGluZSBjbHVzdGVyIik7CiAKKyMgQ2hlY2tzdW1zIGFyZSB2ZXJpZmllZCBpZiBubyBvdGhl ciBhcmd1bWVudHMgYXJlIHNwZWNpZmllZAorY29tbWFuZF9vayhbJ3BnX3ZlcmlmeV9jaGVja3N1 bXMnLCAnLUQnLCAkcGdkYXRhXSwKKwkJICAgInZlcmlmaWVzIGNoZWNrc3VtcyBhcyBkZWZhdWx0 IGFjdGlvbiIpOworCisjIFNwZWNpZmljIHJlbGF0aW9uIGZpbGVzIGNhbm5vdCBiZSByZXF1ZXN0 ZWQgd2hlbiBhY3Rpb24gaXMgZGlzYWJsZQorY29tbWFuZF9mYWlscyhbJ3BnX3ZlcmlmeV9jaGVj a3N1bXMnLCAnLWQnLCAnLXInLCAnMTIzNCcsICctRCcsCisJCQkgICRwZ2RhdGFdLAorCQkJICAi ZmFpbHMgd2hlbiByZWxmaWxub2RlcyBhcmUgcmVxdWVzdGVkIGFuZCBhY3Rpb24gaXMgbm90IHZl cmlmeSIpOworCiAjIENoZWNrcyBjYW5ub3QgaGFwcGVuIHdpdGggYW4gb25saW5lIGNsdXN0ZXIK ICRub2RlLT5zdGFydDsKLWNvbW1hbmRfZmFpbHMoWydwZ192ZXJpZnlfY2hlY2tzdW1zJywgICct RCcsICRwZ2RhdGFdLAorY29tbWFuZF9mYWlscyhbJ3BnX3ZlcmlmeV9jaGVja3N1bXMnLCAnLWMn LCAnLUQnLCAkcGdkYXRhXSwKIAkJCSAgImZhaWxzIHdpdGggb25saW5lIGNsdXN0ZXIiKTsKIAog IyBDaGVjayBjb3JydXB0aW9uIG9mIHRhYmxlIG9uIGRlZmF1bHQgdGFibGVzcGFjZS4KQEAgLTEz Myw3ICsxNjksNyBAQCBzdWIgZmFpbF9jb3JydXB0CiAJbXkgJGZpbGVfbmFtZSA9ICIkcGdkYXRh L2dsb2JhbC8kZmlsZSI7CiAJYXBwZW5kX3RvX2ZpbGUgJGZpbGVfbmFtZSwgImZvbyI7CiAKLQkk bm9kZS0+Y29tbWFuZF9jaGVja3NfYWxsKFsgJ3BnX3ZlcmlmeV9jaGVja3N1bXMnLCAnLUQnLCAk cGdkYXRhXSwKKwkkbm9kZS0+Y29tbWFuZF9jaGVja3NfYWxsKFsgJ3BnX3ZlcmlmeV9jaGVja3N1 bXMnLCAnLWMnLCAnLUQnLCAkcGdkYXRhXSwKIAkJCQkJCSAgMSwKIAkJCQkJCSAgW3FyL14kL10s CiAJCQkJCQkgIFtxci9jb3VsZCBub3QgcmVhZCBibG9jayAwIGluIGZpbGUuKiRmaWxlXCI6L10s CmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmMgYi9zcmMvY29tbW9u L2NvbnRyb2xkYXRhX3V0aWxzLmMKaW5kZXggYWJmZTcwNjVmNS4uM2Q5YjE5MGRmZiAxMDA2NDQK LS0tIGEvc3JjL2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5jCisrKyBiL3NyYy9jb21tb24vY29u dHJvbGRhdGFfdXRpbHMuYwpAQCAtMjQsMTIgKzI0LDE0IEBACiAjaW5jbHVkZSA8c3lzL3N0YXQu aD4KICNpbmNsdWRlIDxmY250bC5oPgogCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21tb24vY29u dHJvbGRhdGFfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5jbHVk ZSAicG9ydC9wZ19jcmMzMmMuaCIKIAogLyoKLSAqIGdldF9jb250cm9sZmlsZShjaGFyICpEYXRh RGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSwgYm9vbCAqY3JjX29rX3ApCisgKiBnZXRfY29udHJv bGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwgY29uc3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgKmNy Y19va19wKQogICoKICAqIEdldCBjb250cm9sZmlsZSB2YWx1ZXMuICBUaGUgcmVzdWx0IGlzIHJl dHVybmVkIGFzIGEgcGFsbG9jJ2QgY29weSBvZiB0aGUKICAqIGNvbnRyb2wgZmlsZSBkYXRhLgpA QCAtMTIwLDMgKzEyMiw3NSBAQCBnZXRfY29udHJvbGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwg Y29uc3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgKmNyY19va19wKQogCiAJcmV0dXJuIENvbnRyb2xG aWxlOwogfQorCisvKgorICogdXBkYXRlX2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIgKkRhdGFEaXIs IGNvbnN0IGNoYXIgKnByb2duYW1lLAorICogICAgICAgICAgICAgICAgICAgIENvbnRyb2xGaWxl RGF0YSAqQ29udHJvbEZpbGUpCisgKgorICogVXBkYXRlIGNvbnRyb2xmaWxlIHZhbHVlcyB3aXRo IHRoZSBjb250ZW50IG9mIENvbnRyb2xGaWxlLgorICovCit2b2lkCit1cGRhdGVfY29udHJvbGZp bGUoY29uc3QgY2hhciAqRGF0YURpciwgY29uc3QgY2hhciAqcHJvZ25hbWUsIENvbnRyb2xGaWxl RGF0YSAqQ29udHJvbEZpbGUpCit7CisJaW50CQkJZmQ7CisJY2hhcgkJYnVmZmVyW1BHX0NPTlRS T0xfRklMRV9TSVpFXTsKKwljaGFyCQlDb250cm9sRmlsZVBhdGhbTUFYUEdQQVRIXTsKKworCS8q CisJICogRm9yIGdvb2QgbHVjaywgYXBwbHkgdGhlIHNhbWUgc3RhdGljIGFzc2VydGlvbnMgYXMg aW4gYmFja2VuZCdzCisJICogV3JpdGVDb250cm9sRmlsZSgpLgorCSAqLworCVN0YXRpY0Fzc2Vy dFN0bXQoc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkgPD0gUEdfQ09OVFJPTF9NQVhfU0FGRV9TSVpF LAorCQkJCQkgInBnX2NvbnRyb2wgaXMgdG9vIGxhcmdlIGZvciBhdG9taWMgZGlzayB3cml0ZXMi KTsKKwlTdGF0aWNBc3NlcnRTdG10KHNpemVvZihDb250cm9sRmlsZURhdGEpIDw9IFBHX0NPTlRS T0xfRklMRV9TSVpFLAorCQkJCQkgInNpemVvZihDb250cm9sRmlsZURhdGEpIGV4Y2VlZHMgUEdf Q09OVFJPTF9GSUxFX1NJWkUiKTsKKworCS8qIFJlY2FsY3VsYXRlIENSQyBvZiBjb250cm9sIGZp bGUgKi8KKwlJTklUX0NSQzMyQyhDb250cm9sRmlsZS0+Y3JjKTsKKwlDT01QX0NSQzMyQyhDb250 cm9sRmlsZS0+Y3JjLAorCQkJCShjaGFyICopIENvbnRyb2xGaWxlLAorCQkJCW9mZnNldG9mKENv bnRyb2xGaWxlRGF0YSwgY3JjKSk7CisJRklOX0NSQzMyQyhDb250cm9sRmlsZS0+Y3JjKTsKKwor CS8qCisJICogV3JpdGUgb3V0IFBHX0NPTlRST0xfRklMRV9TSVpFIGJ5dGVzIGludG8gcGdfY29u dHJvbCBieSB6ZXJvLXBhZGRpbmcKKwkgKiB0aGUgZXhjZXNzIG92ZXIgc2l6ZW9mKENvbnRyb2xG aWxlRGF0YSksIHRvIGF2b2lkIHByZW1hdHVyZSBFT0YgcmVsYXRlZAorCSAqIGVycm9ycyB3aGVu IHJlYWRpbmcgaXQuCisJICovCisJbWVtc2V0KGJ1ZmZlciwgMCwgUEdfQ09OVFJPTF9GSUxFX1NJ WkUpOworCW1lbWNweShidWZmZXIsIENvbnRyb2xGaWxlLCBzaXplb2YoQ29udHJvbEZpbGVEYXRh KSk7CisKKwlzbnByaW50ZihDb250cm9sRmlsZVBhdGgsIHNpemVvZihDb250cm9sRmlsZVBhdGgp LCAiJXMvJXMiLCBEYXRhRGlyLCBYTE9HX0NPTlRST0xfRklMRSk7CisKKwlmZCA9IG9wZW4oQ29u dHJvbEZpbGVQYXRoLCBPX1dST05MWSB8IFBHX0JJTkFSWSwKKwkJCSAgcGdfZmlsZV9jcmVhdGVf bW9kZSk7CisJaWYgKGZkIDwgMCkKKwl7CisJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IG9wZW4gY29udHJvbCBmaWxlOiAlc1xuIiksCisJCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVy cm5vKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisKKwllcnJubyA9IDA7CisJaWYgKHdy aXRlKGZkLCBidWZmZXIsIFBHX0NPTlRST0xfRklMRV9TSVpFKSAhPSBQR19DT05UUk9MX0ZJTEVf U0laRSkKKwl7CisJCS8qIGlmIHdyaXRlIGRpZG4ndCBzZXQgZXJybm8sIGFzc3VtZSBwcm9ibGVt IGlzIG5vIGRpc2sgc3BhY2UgKi8KKwkJaWYgKGVycm5vID09IDApCisJCQllcnJubyA9IEVOT1NQ QzsKKwkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgY29udHJvbCBmaWxl OiAlc1xuIiksCisJCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCWV4aXQoRVhJVF9G QUlMVVJFKTsKKwl9CisKKwlpZiAoZnN5bmMoZmQpICE9IDApCisJeworCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGZzeW5jIGVycm9yOiAlc1xuIiksIHByb2duYW1lLCBzdHJlcnJvcihlcnJubykp OworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCisJaWYgKGNsb3NlKGZkKSA8IDApCisJewor CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBjb250cm9sIGZpbGU6ICVz XG4iKSwgcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK Kwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tb24vY29udHJvbGRhdGFfdXRpbHMu aCBiL3NyYy9pbmNsdWRlL2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5oCmluZGV4IDBmZmEyMDAw ZmMuLjAzMDhmMTMxZTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1vbi9jb250cm9sZGF0 YV91dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5oCkBA IC0xMyw1ICsxMyw2IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAKIGV4dGVy biBDb250cm9sRmlsZURhdGEgKmdldF9jb250cm9sZmlsZShjb25zdCBjaGFyICpEYXRhRGlyLCBj b25zdCBjaGFyICpwcm9nbmFtZSwgYm9vbCAqY3JjX29rX3ApOworZXh0ZXJuIHZvaWQgdXBkYXRl X2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIgKkRhdGFEaXIsIGNvbnN0IGNoYXIgKnByb2duYW1lLCBD b250cm9sRmlsZURhdGEgKkNvbnRyb2xGaWxlKTsKIAogI2VuZGlmCQkJCQkJCS8qIENPTU1PTl9D T05UUk9MREFUQV9VVElMU19IICovCi== --=-eH4exbrk+fmXVmEAecPg--