From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Josefsson Subject: Re: [PATCH RFT] Improve iptables error reporting Date: Tue, 11 Sep 2007 10:42:20 +0200 (CEST) Message-ID: References: Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1017779964-335938581-1189500140=:17234" To: netfilter-devel@lists.netfilter.org Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: netfilter-devel-bounces@lists.netfilter.org Errors-To: netfilter-devel-bounces@lists.netfilter.org List-Id: netfilter-devel.vger.kernel.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1017779964-335938581-1189500140=:17234 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Sun, 12 Aug 2007, Martin Josefsson wrote: > Here's a small patch that reworks the iptables/ip6tables error reporting a > bit. The purpose of this patch is to try to provide more resonable error > messages. [snip] > Please test and report success or failure. I'm likely to have missed > some/many errors. No takers on this? Maybe we should merge it to make people test it? :) I've attached an updated patch (diffed against 070910 snapshot) /Martin ---1017779964-335938581-1189500140=:17234 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=iptables-errorreport.patch-20070910 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=iptables-errorreport.patch-20070910 ZGlmZiAtWCAvaG9tZS9nYW5kYWxmL2RvbnRkaWZmLm55IC11ck5wIGlwdGFi bGVzLTEuMy44LTIwMDcwOTEwLm9yaWcvaW5jbHVkZS9saWJpcHRjL2xpYmlw NnRjLmggaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAvaW5jbHVkZS9saWJpcHRj L2xpYmlwNnRjLmgNCi0tLSBpcHRhYmxlcy0xLjMuOC0yMDA3MDkxMC5vcmln L2luY2x1ZGUvbGliaXB0Yy9saWJpcDZ0Yy5oCTIwMDMtMDUtMDUgMjE6MzM6 NDAuMDAwMDAwMDAwICswMjAwDQorKysgaXB0YWJsZXMtMS4zLjgtMjAwNzA5 MTAvaW5jbHVkZS9saWJpcHRjL2xpYmlwNnRjLmgJMjAwNy0wOS0xMSAxMDoy MDo0NS4wMDAwMDAwMDAgKzAyMDANCkBAIC0xNyw2ICsxNywxMCBAQCB0eXBl ZGVmIGNoYXIgaXA2dF9jaGFpbmxhYmVsWzMyXTsNCiAjZGVmaW5lIElQNlRD X0xBQkVMX1FVRVVFICAgIlFVRVVFIg0KICNkZWZpbmUgSVA2VENfTEFCRUxf UkVUVVJOICJSRVRVUk4iDQogDQorI2lmbmRlZiBUQ19MSUJOQU1FDQorI2Rl ZmluZSBUQ19MSUJOQU1FICJsaWJpcDZ0YyINCisjZW5kaWYNCisNCiAvKiBU cmFuc3BhcmVudCBoYW5kbGUgdHlwZS4gKi8NCiB0eXBlZGVmIHN0cnVjdCBp cDZ0Y19oYW5kbGUgKmlwNnRjX2hhbmRsZV90Ow0KIA0KQEAgLTE0NSw4ICsx NDksMTEgQEAgaW50IGlwNnRjX2NvbW1pdChpcDZ0Y19oYW5kbGVfdCAqaGFu ZGxlKQ0KIC8qIEdldCByYXcgc29ja2V0LiAqLw0KIGludCBpcDZ0Y19nZXRf cmF3X3NvY2tldCgpOw0KIA0KKy8qIFJlcG9ydCBlcnJvcnMgKi8NCit2b2lk IGlwNnRjX2Vycm9yKGNvbnN0IGNoYXIgKiwgaW50KTsNCisNCiAvKiBUcmFu c2xhdGVzIGVycm5vIG51bWJlcnMgaW50byBtb3JlIGh1bWFuLXJlYWRhYmxl IGZvcm0gdGhhbiBzdHJlcnJvci4gKi8NCi1jb25zdCBjaGFyICppcDZ0Y19z dHJlcnJvcihpbnQgZXJyKTsNCitjb25zdCBjaGFyICppcDZ0Y19zdHJlcnJv cigpOw0KIA0KIC8qIFJldHVybiBwcmVmaXggbGVuZ3RoLCBvciAtMSBpZiBu b3QgY29udGlndW91cyAqLw0KIGludCBpcHY2X3ByZWZpeF9sZW5ndGgoY29u c3Qgc3RydWN0IGluNl9hZGRyICphKTsNCmRpZmYgLVggL2hvbWUvZ2FuZGFs Zi9kb250ZGlmZi5ueSAtdXJOcCBpcHRhYmxlcy0xLjMuOC0yMDA3MDkxMC5v cmlnL2luY2x1ZGUvbGliaXB0Yy9saWJpcHRjLmggaXB0YWJsZXMtMS4zLjgt MjAwNzA5MTAvaW5jbHVkZS9saWJpcHRjL2xpYmlwdGMuaA0KLS0tIGlwdGFi bGVzLTEuMy44LTIwMDcwOTEwLm9yaWcvaW5jbHVkZS9saWJpcHRjL2xpYmlw dGMuaAkyMDAzLTA1LTAyIDE3OjMwOjExLjAwMDAwMDAwMCArMDIwMA0KKysr IGlwdGFibGVzLTEuMy44LTIwMDcwOTEwL2luY2x1ZGUvbGliaXB0Yy9saWJp cHRjLmgJMjAwNy0wOS0xMSAxMDoyMDo0NS4wMDAwMDAwMDAgKzAyMDANCkBA IC0yNSw2ICsyNSwxMCBAQCB0eXBlZGVmIGNoYXIgaXB0X2NoYWlubGFiZWxb MzJdOw0KICNkZWZpbmUgSVBUQ19MQUJFTF9RVUVVRSAgICJRVUVVRSINCiAj ZGVmaW5lIElQVENfTEFCRUxfUkVUVVJOICAiUkVUVVJOIg0KIA0KKyNpZm5k ZWYgVENfTElCTkFNRQ0KKyNkZWZpbmUgVENfTElCTkFNRSAibGliaXA0dGMi DQorI2VuZGlmDQorDQogLyogVHJhbnNwYXJlbnQgaGFuZGxlIHR5cGUuICov DQogdHlwZWRlZiBzdHJ1Y3QgaXB0Y19oYW5kbGUgKmlwdGNfaGFuZGxlX3Q7 DQogDQpAQCAtMTU1LDggKzE1OSwxMSBAQCBpbnQgaXB0Y19jb21taXQoaXB0 Y19oYW5kbGVfdCAqaGFuZGxlKTsNCiAvKiBHZXQgcmF3IHNvY2tldC4gKi8N CiBpbnQgaXB0Y19nZXRfcmF3X3NvY2tldCgpOw0KIA0KKy8qIFJlcG9ydCBl cnJvcnMgKi8NCit2b2lkIGlwdGNfZXJyb3IoY29uc3QgY2hhciAqLCBpbnQp Ow0KKw0KIC8qIFRyYW5zbGF0ZXMgZXJybm8gbnVtYmVycyBpbnRvIG1vcmUg aHVtYW4tcmVhZGFibGUgZm9ybSB0aGFuIHN0cmVycm9yLiAqLw0KLWNvbnN0 IGNoYXIgKmlwdGNfc3RyZXJyb3IoaW50IGVycik7DQorY29uc3QgY2hhciAq aXB0Y19zdHJlcnJvcigpOw0KIA0KICNpZmRlZiBfX2NwbHVzcGx1cw0KIH0N CmRpZmYgLVggL2hvbWUvZ2FuZGFsZi9kb250ZGlmZi5ueSAtdXJOcCBpcHRh Ymxlcy0xLjMuOC0yMDA3MDkxMC5vcmlnL2lwNnRhYmxlcy1yZXN0b3JlLmMg aXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAvaXA2dGFibGVzLXJlc3RvcmUuYw0K LS0tIGlwdGFibGVzLTEuMy44LTIwMDcwOTEwLm9yaWcvaXA2dGFibGVzLXJl c3RvcmUuYwkyMDA3LTA3LTI0IDA3OjUyOjA3LjAwMDAwMDAwMCArMDIwMA0K KysrIGlwdGFibGVzLTEuMy44LTIwMDcwOTEwL2lwNnRhYmxlcy1yZXN0b3Jl LmMJMjAwNy0wOS0xMSAxMDoyMDo0NS4wMDAwMDAwMDAgKzAyMDANCkBAIC0y NDAsMTQgKzI0MCwxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQ0KIAkJCQkJCWV4aXRfZXJyb3IoUEFSQU1FVEVSX1BST0JMRU0sDQog CQkJCQkJCSAgICJlcnJvciBmbHVzaGluZyBjaGFpbiAiDQogCQkJCQkJCSAg ICInJXMnOiVzXG4iLCBjaGFpbiwNCi0JCQkJCQkJICAgc3RyZXJyb3IoZXJy bm8pKTsNCisJCQkJCQkJICAgaXA2dGNfc3RyZXJyb3IoKSk7DQogCQkJCX0g ZWxzZSB7DQogCQkJCQlERUJVR1AoIkNyZWF0aW5nIG5ldyBjaGFpbiAnJXMn XG4iLCBjaGFpbik7DQogCQkJCQlpZiAoIWlwNnRjX2NyZWF0ZV9jaGFpbihj aGFpbiwgJmhhbmRsZSkpDQogCQkJCQkJZXhpdF9lcnJvcihQQVJBTUVURVJf UFJPQkxFTSwNCiAJCQkJCQkJICAgImVycm9yIGNyZWF0aW5nIGNoYWluICIN CiAJCQkJCQkJICAgIiclcyc6JXNcbiIsIGNoYWluLA0KLQkJCQkJCQkgICBz dHJlcnJvcihlcnJubykpOw0KKwkJCQkJCQkgICBpcDZ0Y19zdHJlcnJvcigp KTsNCiAJCQkJfQ0KIAkJCX0NCiANCkBAIC0yODYsNyArMjg2LDcgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCiAJCQkJCQkiQ2FuJ3Qg c2V0IHBvbGljeSBgJXMnIg0KIAkJCQkJCSIgb24gYCVzJyBsaW5lICV1OiAl c1xuIiwNCiAJCQkJCQljaGFpbiwgcG9saWN5LCBsaW5lLA0KLQkJCQkJCWlw NnRjX3N0cmVycm9yKGVycm5vKSk7DQorCQkJCQkJaXA2dGNfc3RyZXJyb3Io KSk7DQogCQkJfQ0KIA0KIAkJCXJldCA9IDE7DQpkaWZmIC1YIC9ob21lL2dh bmRhbGYvZG9udGRpZmYubnkgLXVyTnAgaXB0YWJsZXMtMS4zLjgtMjAwNzA5 MTAub3JpZy9pcDZ0YWJsZXMtc2F2ZS5jIGlwdGFibGVzLTEuMy44LTIwMDcw OTEwL2lwNnRhYmxlcy1zYXZlLmMNCi0tLSBpcHRhYmxlcy0xLjMuOC0yMDA3 MDkxMC5vcmlnL2lwNnRhYmxlcy1zYXZlLmMJMjAwNy0wNS0xMCAxNzowMDoz OS4wMDAwMDAwMDAgKzAyMDANCisrKyBpcHRhYmxlcy0xLjMuOC0yMDA3MDkx MC9pcDZ0YWJsZXMtc2F2ZS5jCTIwMDctMDktMTEgMTA6MjA6NDUuMDAwMDAw MDAwICswMjAwDQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBpbnQgZG9f b3V0cHV0KGNvbnN0IGNoYXIgKnRhYmxlbmENCiAJaCA9IGlwNnRjX2luaXQo dGFibGVuYW1lKTsNCiAJaWYgKCFoKQ0KICAJCWV4aXRfZXJyb3IoT1RIRVJf UFJPQkxFTSwgIkNhbid0IGluaXRpYWxpemU6ICVzXG4iLA0KLQkJCSAgIGlw NnRjX3N0cmVycm9yKGVycm5vKSk7DQorCQkJICAgaXA2dGNfc3RyZXJyb3Io KSk7DQogDQogCWlmICghYmluYXJ5KSB7DQogCQl0aW1lX3Qgbm93ID0gdGlt ZShOVUxMKTsNCmRpZmYgLVggL2hvbWUvZ2FuZGFsZi9kb250ZGlmZi5ueSAt dXJOcCBpcHRhYmxlcy0xLjMuOC0yMDA3MDkxMC5vcmlnL2lwNnRhYmxlcy1z dGFuZGFsb25lLmMgaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAvaXA2dGFibGVz LXN0YW5kYWxvbmUuYw0KLS0tIGlwdGFibGVzLTEuMy44LTIwMDcwOTEwLm9y aWcvaXA2dGFibGVzLXN0YW5kYWxvbmUuYwkyMDA0LTEyLTI3IDIwOjQ5OjI4 LjAwMDAwMDAwMCArMDEwMA0KKysrIGlwdGFibGVzLTEuMy44LTIwMDcwOTEw L2lwNnRhYmxlcy1zdGFuZGFsb25lLmMJMjAwNy0wOS0xMSAxMDoyMDo0NS4w MDAwMDAwMDAgKzAyMDANCkBAIC02MCw3ICs2MCw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkNCiANCiAJaWYgKCFyZXQpDQogCQlmcHJpbnRm KHN0ZGVyciwgImlwNnRhYmxlczogJXNcbiIsDQotCQkJaXA2dGNfc3RyZXJy b3IoZXJybm8pKTsNCisJCQlpcDZ0Y19zdHJlcnJvcigpKTsNCiANCiAJZXhp dCghcmV0KTsNCiB9DQpkaWZmIC1YIC9ob21lL2dhbmRhbGYvZG9udGRpZmYu bnkgLXVyTnAgaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAub3JpZy9pcDZ0YWJs ZXMuYyBpcHRhYmxlcy0xLjMuOC0yMDA3MDkxMC9pcDZ0YWJsZXMuYw0KLS0t IGlwdGFibGVzLTEuMy44LTIwMDcwOTEwLm9yaWcvaXA2dGFibGVzLmMJMjAw Ny0wOS0wOCAxODowMDowMS4wMDAwMDAwMDAgKzAyMDANCisrKyBpcHRhYmxl cy0xLjMuOC0yMDA3MDkxMC9pcDZ0YWJsZXMuYwkyMDA3LTA5LTExIDEwOjIw OjQ1LjAwMDAwMDAwMCArMDIwMA0KQEAgLTEzMzAsNyArMTMzMCw5IEBAIGxp c3RfZW50cmllcyhjb25zdCBpcDZ0X2NoYWlubGFiZWwgY2hhaW4NCiAJCWZv dW5kID0gMTsNCiAJfQ0KIA0KLQllcnJubyA9IEVOT0VOVDsNCisJaWYgKCFm b3VuZCkNCisJCWlwNnRjX2Vycm9yKF9fRlVOQ1RJT05fXywgRU5PRU5UKTsN CisNCiAJcmV0dXJuIGZvdW5kOw0KIH0NCiANCkBAIC0xODk4LDcgKzE5MDAs NyBAQCBpbnQgZG9fY29tbWFuZDYoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwg DQogCWlmICghKmhhbmRsZSkNCiAJCWV4aXRfZXJyb3IoVkVSU0lPTl9QUk9C TEVNLA0KIAkJCSJjYW4ndCBpbml0aWFsaXplIGlwNnRhYmxlcyB0YWJsZSBg JXMnOiAlcyIsDQotCQkJKnRhYmxlLCBpcDZ0Y19zdHJlcnJvcihlcnJubykp Ow0KKwkJCSp0YWJsZSwgaXA2dGNfc3RyZXJyb3IoKSk7DQogDQogCWlmIChj b21tYW5kID09IENNRF9BUFBFTkQNCiAJICAgIHx8IGNvbW1hbmQgPT0gQ01E X0RFTEVURQ0KZGlmZiAtWCAvaG9tZS9nYW5kYWxmL2RvbnRkaWZmLm55IC11 ck5wIGlwdGFibGVzLTEuMy44LTIwMDcwOTEwLm9yaWcvaXB0YWJsZXMtcmVz dG9yZS5jIGlwdGFibGVzLTEuMy44LTIwMDcwOTEwL2lwdGFibGVzLXJlc3Rv cmUuYw0KLS0tIGlwdGFibGVzLTEuMy44LTIwMDcwOTEwLm9yaWcvaXB0YWJs ZXMtcmVzdG9yZS5jCTIwMDctMDktMDUgMTY6MTA6NTMuMDAwMDAwMDAwICsw MjAwDQorKysgaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAvaXB0YWJsZXMtcmVz dG9yZS5jCTIwMDctMDktMTEgMTA6MjA6NDUuMDAwMDAwMDAwICswMjAwDQpA QCAtMjQ3LDE0ICsyNDcsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQ0KIAkJCQkJCWV4aXRfZXJyb3IoUEFSQU1FVEVSX1BST0JMRU0sDQog CQkJCQkJCSAgICJlcnJvciBmbHVzaGluZyBjaGFpbiAiDQogCQkJCQkJCSAg ICInJXMnOiVzXG4iLCBjaGFpbiwNCi0JCQkJCQkJICAgc3RyZXJyb3IoZXJy bm8pKTsNCisJCQkJCQkJICAgaXB0Y19zdHJlcnJvcigpKTsNCiAJCQkJfSBl bHNlIHsNCiAJCQkJCURFQlVHUCgiQ3JlYXRpbmcgbmV3IGNoYWluICclcydc biIsIGNoYWluKTsNCiAJCQkJCWlmICghaXB0Y19jcmVhdGVfY2hhaW4oY2hh aW4sICZoYW5kbGUpKQ0KIAkJCQkJCWV4aXRfZXJyb3IoUEFSQU1FVEVSX1BS T0JMRU0sDQogCQkJCQkJCSAgICJlcnJvciBjcmVhdGluZyBjaGFpbiAiDQog CQkJCQkJCSAgICInJXMnOiVzXG4iLCBjaGFpbiwNCi0JCQkJCQkJICAgc3Ry ZXJyb3IoZXJybm8pKTsNCisJCQkJCQkJICAgaXB0Y19zdHJlcnJvcigpKTsN CiAJCQkJfQ0KIAkJCX0NCiANCkBAIC0yOTMsNyArMjkzLDcgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQ0KIAkJCQkJCSJDYW4ndCBzZXQgcG9s aWN5IGAlcyciDQogCQkJCQkJIiBvbiBgJXMnIGxpbmUgJXU6ICVzXG4iLA0K IAkJCQkJCWNoYWluLCBwb2xpY3ksIGxpbmUsDQotCQkJCQkJaXB0Y19zdHJl cnJvcihlcnJubykpOw0KKwkJCQkJCWlwdGNfc3RyZXJyb3IoKSk7DQogCQkJ fQ0KIA0KIAkJCXJldCA9IDE7DQpkaWZmIC1YIC9ob21lL2dhbmRhbGYvZG9u dGRpZmYubnkgLXVyTnAgaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAub3JpZy9p cHRhYmxlcy1zYXZlLmMgaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAvaXB0YWJs ZXMtc2F2ZS5jDQotLS0gaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAub3JpZy9p cHRhYmxlcy1zYXZlLmMJMjAwNy0wNS0xMCAxNzowMDozOS4wMDAwMDAwMDAg KzAyMDANCisrKyBpcHRhYmxlcy0xLjMuOC0yMDA3MDkxMC9pcHRhYmxlcy1z YXZlLmMJMjAwNy0wOS0xMSAxMDoyMDo0NS4wMDAwMDAwMDAgKzAyMDANCkBA IC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIGludCBkb19vdXRwdXQoY29uc3Qg Y2hhciAqdGFibGVuYQ0KIAloID0gaXB0Y19pbml0KHRhYmxlbmFtZSk7DQog CWlmICghaCkNCiAgCQlleGl0X2Vycm9yKE9USEVSX1BST0JMRU0sICJDYW4n dCBpbml0aWFsaXplOiAlc1xuIiwNCi0JCQkgICBpcHRjX3N0cmVycm9yKGVy cm5vKSk7DQorCQkJICAgaXB0Y19zdHJlcnJvcigpKTsNCiANCiAJaWYgKCFi aW5hcnkpIHsNCiAJCXRpbWVfdCBub3cgPSB0aW1lKE5VTEwpOw0KZGlmZiAt WCAvaG9tZS9nYW5kYWxmL2RvbnRkaWZmLm55IC11ck5wIGlwdGFibGVzLTEu My44LTIwMDcwOTEwLm9yaWcvaXB0YWJsZXMtc3RhbmRhbG9uZS5jIGlwdGFi bGVzLTEuMy44LTIwMDcwOTEwL2lwdGFibGVzLXN0YW5kYWxvbmUuYw0KLS0t IGlwdGFibGVzLTEuMy44LTIwMDcwOTEwLm9yaWcvaXB0YWJsZXMtc3RhbmRh bG9uZS5jCTIwMDYtMDYtMTkgMTg6NTM6MDMuMDAwMDAwMDAwICswMjAwDQor KysgaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAvaXB0YWJsZXMtc3RhbmRhbG9u ZS5jCTIwMDctMDktMTEgMTA6MjA6NDUuMDAwMDAwMDAwICswMjAwDQpAQCAt NjYsNyArNjYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQog DQogCWlmICghcmV0KSB7DQogCQlmcHJpbnRmKHN0ZGVyciwgImlwdGFibGVz OiAlc1xuIiwNCi0JCQlpcHRjX3N0cmVycm9yKGVycm5vKSk7DQorCQkJaXB0 Y19zdHJlcnJvcigpKTsNCiAJCWlmIChlcnJubyA9PSBFQUdBSU4pIHsNCiAJ CQlleGl0KFJFU09VUkNFX1BST0JMRU0pOw0KIAkJfQ0KZGlmZiAtWCAvaG9t ZS9nYW5kYWxmL2RvbnRkaWZmLm55IC11ck5wIGlwdGFibGVzLTEuMy44LTIw MDcwOTEwLm9yaWcvaXB0YWJsZXMuYyBpcHRhYmxlcy0xLjMuOC0yMDA3MDkx MC9pcHRhYmxlcy5jDQotLS0gaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAub3Jp Zy9pcHRhYmxlcy5jCTIwMDctMDktMDggMTg6MDA6MDEuMDAwMDAwMDAwICsw MjAwDQorKysgaXB0YWJsZXMtMS4zLjgtMjAwNzA5MTAvaXB0YWJsZXMuYwky MDA3LTA5LTExIDEwOjIwOjQ1LjAwMDAwMDAwMCArMDIwMA0KQEAgLTEzNzEs NyArMTM3MSw5IEBAIGxpc3RfZW50cmllcyhjb25zdCBpcHRfY2hhaW5sYWJl bCBjaGFpbiwNCiAJCWZvdW5kID0gMTsNCiAJfQ0KIA0KLQllcnJubyA9IEVO T0VOVDsNCisJaWYgKCFmb3VuZCkNCisJCWlwdGNfZXJyb3IoX19GVU5DVElP Tl9fLCBFTk9FTlQpOw0KKw0KIAlyZXR1cm4gZm91bmQ7DQogfQ0KIA0KQEAg LTE5NjMsNyArMTk2NSw3IEBAIGludCBkb19jb21tYW5kKGludCBhcmdjLCBj aGFyICphcmd2W10sIGMNCiAJaWYgKCEqaGFuZGxlKQ0KIAkJZXhpdF9lcnJv cihWRVJTSU9OX1BST0JMRU0sDQogCQkJICAgImNhbid0IGluaXRpYWxpemUg aXB0YWJsZXMgdGFibGUgYCVzJzogJXMiLA0KLQkJCSAgICp0YWJsZSwgaXB0 Y19zdHJlcnJvcihlcnJubykpOw0KKwkJCSAgICp0YWJsZSwgaXB0Y19zdHJl cnJvcigpKTsNCiANCiAJaWYgKGNvbW1hbmQgPT0gQ01EX0FQUEVORA0KIAkg ICAgfHwgY29tbWFuZCA9PSBDTURfREVMRVRFDQpkaWZmIC1YIC9ob21lL2dh bmRhbGYvZG9udGRpZmYubnkgLXVyTnAgaXB0YWJsZXMtMS4zLjgtMjAwNzA5 MTAub3JpZy9saWJpcHRjL2xpYmlwNHRjLmMgaXB0YWJsZXMtMS4zLjgtMjAw NzA5MTAvbGliaXB0Yy9saWJpcDR0Yy5jDQotLS0gaXB0YWJsZXMtMS4zLjgt MjAwNzA5MTAub3JpZy9saWJpcHRjL2xpYmlwNHRjLmMJMjAwNy0wOS0wMiAx NTowOTowNy4wMDAwMDAwMDAgKzAyMDANCisrKyBpcHRhYmxlcy0xLjMuOC0y MDA3MDkxMC9saWJpcHRjL2xpYmlwNHRjLmMJMjAwNy0wOS0xMSAxMDoyMDo0 NS4wMDAwMDAwMDAgKzAyMDANCkBAIC05Myw2ICs5Myw3IEBAIHR5cGVkZWYg dW5zaWduZWQgaW50IHNvY2tsZW5fdDsNCiAjZGVmaW5lIFRDX0lOSVQJCQlp cHRjX2luaXQNCiAjZGVmaW5lIFRDX0ZSRUUJCQlpcHRjX2ZyZWUNCiAjZGVm aW5lIFRDX0NPTU1JVAkJaXB0Y19jb21taXQNCisjZGVmaW5lIFRDX0VSUk9S CQlpcHRjX2Vycm9yDQogI2RlZmluZSBUQ19TVFJFUlJPUgkJaXB0Y19zdHJl cnJvcg0KICNkZWZpbmUgVENfTlVNX1JVTEVTCQlpcHRjX251bV9ydWxlcw0K ICNkZWZpbmUgVENfR0VUX1JVTEUJCWlwdGNfZ2V0X3J1bGUNCkBAIC0xMTUs NiArMTE2LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgc29ja2xlbl90Ow0K ICNkZWZpbmUgQUxJR04JCQlJUFRfQUxJR04NCiAjZGVmaW5lIFJFVFVSTgkJ CUlQVF9SRVRVUk4NCiANCisjZGVmaW5lIFRDX0VSUih4KQkJVENfRVJST1Io X19GVU5DVElPTl9fLCAoeCkpDQorDQogI2luY2x1ZGUgImxpYmlwdGMuYyIN CiANCiAjZGVmaW5lIElQX1BBUlRTX05BVElWRShuKQkJCVwNCmRpZmYgLVgg L2hvbWUvZ2FuZGFsZi9kb250ZGlmZi5ueSAtdXJOcCBpcHRhYmxlcy0xLjMu OC0yMDA3MDkxMC5vcmlnL2xpYmlwdGMvbGliaXA2dGMuYyBpcHRhYmxlcy0x LjMuOC0yMDA3MDkxMC9saWJpcHRjL2xpYmlwNnRjLmMNCi0tLSBpcHRhYmxl cy0xLjMuOC0yMDA3MDkxMC5vcmlnL2xpYmlwdGMvbGliaXA2dGMuYwkyMDA3 LTA5LTAyIDE1OjA5OjA3LjAwMDAwMDAwMCArMDIwMA0KKysrIGlwdGFibGVz LTEuMy44LTIwMDcwOTEwL2xpYmlwdGMvbGliaXA2dGMuYwkyMDA3LTA5LTEx IDEwOjIwOjQ1LjAwMDAwMDAwMCArMDIwMA0KQEAgLTg4LDYgKzg4LDcgQEAg dHlwZWRlZiB1bnNpZ25lZCBpbnQgc29ja2xlbl90Ow0KICNkZWZpbmUgVENf SU5JVAkJCWlwNnRjX2luaXQNCiAjZGVmaW5lIFRDX0ZSRUUJCQlpcDZ0Y19m cmVlDQogI2RlZmluZSBUQ19DT01NSVQJCWlwNnRjX2NvbW1pdA0KKyNkZWZp bmUgVENfRVJST1IJCWlwNnRjX2Vycm9yDQogI2RlZmluZSBUQ19TVFJFUlJP UgkJaXA2dGNfc3RyZXJyb3INCiAjZGVmaW5lIFRDX05VTV9SVUxFUwkJaXA2 dGNfbnVtX3J1bGVzDQogI2RlZmluZSBUQ19HRVRfUlVMRQkJaXA2dGNfZ2V0 X3J1bGUNCkBAIC0xMTAsNiArMTExLDggQEAgdHlwZWRlZiB1bnNpZ25lZCBp bnQgc29ja2xlbl90Ow0KICNkZWZpbmUgQUxJR04JCQlJUDZUX0FMSUdODQog I2RlZmluZSBSRVRVUk4JCQlJUDZUX1JFVFVSTg0KIA0KKyNkZWZpbmUgVENf RVJSKHgpCQlUQ19FUlJPUihfX0ZVTkNUSU9OX18sICh4KSkNCisNCiAjaW5j bHVkZSAibGliaXB0Yy5jIg0KIA0KICNkZWZpbmUgQklUNihhLCBsKSBcDQpk aWZmIC1YIC9ob21lL2dhbmRhbGYvZG9udGRpZmYubnkgLXVyTnAgaXB0YWJs ZXMtMS4zLjgtMjAwNzA5MTAub3JpZy9saWJpcHRjL2xpYmlwdGMuYyBpcHRh Ymxlcy0xLjMuOC0yMDA3MDkxMC9saWJpcHRjL2xpYmlwdGMuYw0KLS0tIGlw dGFibGVzLTEuMy44LTIwMDcwOTEwLm9yaWcvbGliaXB0Yy9saWJpcHRjLmMJ MjAwNy0wOS0wOCAxODo1MjoyNS4wMDAwMDAwMDAgKzAyMDANCisrKyBpcHRh Ymxlcy0xLjMuOC0yMDA3MDkxMC9saWJpcHRjL2xpYmlwdGMuYwkyMDA3LTA5 LTExIDEwOjI5OjE0LjAwMDAwMDAwMCArMDIwMA0KQEAgLTQ2LDcgKzQ2LDEz IEBADQogDQogc3RhdGljIGludCBzb2NrZmQgPSAtMTsNCiBzdGF0aWMgaW50 IHNvY2tmZF91c2UgPSAwOw0KLXN0YXRpYyB2b2lkICppcHRjX2ZuID0gTlVM TDsNCisNCisvKiBTaWxseSBnYW1lcyB0byBnZXQgY3BwIHRvIHBlcmZvcm0g cmVjdXJzaXZlIG1hY3JvIGV4cGFuc2lvbiB3aGVuIHF1b3RpbmcgKi8NCisj ZGVmaW5lIFFVT1RFKHgpICN4DQorI2RlZmluZSBRRih4KSBRVU9URSh4KQ0K Kw0KK3N0YXRpYyBpbnQgaXB0Y19lcnJubyA9IDA7DQorc3RhdGljIGNoYXIg aXB0Y19lcnJmbls2NF07DQogDQogc3RhdGljIGNvbnN0IGNoYXIgKmhvb2tu YW1lc1tdID0gew0KIAlbSE9PS19QUkVfUk9VVElOR10JPSAiUFJFUk9VVElO RyIsDQpAQCAtNDU2LDcgKzQ2Miw3IEBAIHN0YXRpYyBpbnQgY2FjaGVfYWRk X2VudHJ5KFNUUlVDVF9FTlRSWSANCiAJCURFQlVHUF9DKCIldToldTpuZXcg dXNlcmRlZmluZWQgY2hhaW4gJXM6ICVwXG4iLCAqbnVtLCBvZmZzZXQsIA0K IAkJCShjaGFyICopYy0+bmFtZSwgYyk7DQogCQlpZiAoIWMpIHsNCi0JCQll cnJubyA9IC1FTk9NRU07DQorCQkJVENfRVJSKEVOT01FTSk7DQogCQkJcmV0 dXJuIC0xOw0KIAkJfQ0KIA0KQEAgLTQ2OSw3ICs0NzUsNyBAQCBzdGF0aWMg aW50IGNhY2hlX2FkZF9lbnRyeShTVFJVQ1RfRU5UUlkgDQogCQlERUJVR1Bf QygiJXU6JXUgbmV3IGJ1aWx0aW4gY2hhaW46ICVwIChydWxlcz0lcClcbiIs IA0KIAkJCSpudW0sIG9mZnNldCwgYywgJmMtPnJ1bGVzKTsNCiAJCWlmICgh Yykgew0KLQkJCWVycm5vID0gLUVOT01FTTsNCisJCQlUQ19FUlIoRU5PTUVN KTsNCiAJCQlyZXR1cm4gLTE7DQogCQl9DQogDQpAQCAtNDg2LDkgKzQ5Miwx MCBAQCBuZXdfcnVsZToNCiANCiAJCWlmICghKHIgPSBpcHRjY19hbGxvY19y dWxlKGgtPmNoYWluX2l0ZXJhdG9yX2N1ciwgDQogCQkJCQkgICBlLT5uZXh0 X29mZnNldCkpKSB7DQotCQkJZXJybm8gPSBFTk9NRU07DQorCQkJVENfRVJS KEVOT01FTSk7DQogCQkJcmV0dXJuIC0xOw0KIAkJfQ0KKw0KIAkJREVCVUdQ X0MoIiV1OiV1IG5vcm1hbCBydWxlOiAlcDogIiwgKm51bSwgb2Zmc2V0LCBy KTsNCiANCiAJCXItPmluZGV4ID0gKm51bTsNCkBAIC01MDQsNyArNTExLDcg QEAgbmV3X3J1bGU6DQogCQkJdCA9IChTVFJVQ1RfU1RBTkRBUkRfVEFSR0VU ICopR0VUX1RBUkdFVChlKTsNCiAJCQlpZiAodC0+dGFyZ2V0LnUudGFyZ2V0 X3NpemUNCiAJCQkgICAgIT0gQUxJR04oc2l6ZW9mKFNUUlVDVF9TVEFOREFS RF9UQVJHRVQpKSkgew0KLQkJCQllcnJubyA9IEVJTlZBTDsNCisJCQkJVENf RVJSKEVJTlZBTCk7DQogCQkJCXJldHVybiAtMTsNCiAJCQl9DQogDQpAQCAt NzcwLDcgKzc3Nyw3IEBAIGFsbG9jX2hhbmRsZShjb25zdCBjaGFyICp0YWJs ZW5hbWUsIHVuc2kNCiANCiAJaCA9IG1hbGxvYyhzaXplb2YoU1RSVUNUX1RD X0hBTkRMRSkpOw0KIAlpZiAoIWgpIHsNCi0JCWVycm5vID0gRU5PTUVNOw0K KwkJVENfRVJSKEVOT01FTSk7DQogCQlyZXR1cm4gTlVMTDsNCiAJfQ0KIAlt ZW1zZXQoaCwgMCwgc2l6ZW9mKCpoKSk7DQpAQCAtNzc4LDggKzc4NSwxMCBA QCBhbGxvY19oYW5kbGUoY29uc3QgY2hhciAqdGFibGVuYW1lLCB1bnNpDQog CXN0cmNweShoLT5pbmZvLm5hbWUsIHRhYmxlbmFtZSk7DQogDQogCWgtPmVu dHJpZXMgPSBtYWxsb2Moc2l6ZW9mKFNUUlVDVF9HRVRfRU5UUklFUykgKyBz aXplKTsNCi0JaWYgKCFoLT5lbnRyaWVzKQ0KKwlpZiAoIWgtPmVudHJpZXMp IHsNCisJCVRDX0VSUihFTk9NRU0pOw0KIAkJZ290byBvdXRfZnJlZV9oYW5k bGU7DQorCX0NCiANCiAJc3RyY3B5KGgtPmVudHJpZXMtPm5hbWUsIHRhYmxl bmFtZSk7DQogCWgtPmVudHJpZXMtPnNpemUgPSBzaXplOw0KQEAgLTgwMSwx NyArODEwLDIxIEBAIFRDX0lOSVQoY29uc3QgY2hhciAqdGFibGVuYW1lKQ0K IAl1bnNpZ25lZCBpbnQgdG1wOw0KIAlzb2NrbGVuX3QgczsNCiANCi0JaXB0 Y19mbiA9IFRDX0lOSVQ7DQorCS8qIHVnbHkgaGFjayB0byBhdm9pZCB3YXJu aW5ncyBpZiBjYWxsZWQgbXVsdGlwbGUgdGltZXMgKi8NCisJbWVtc2V0KGlw dGNfZXJyZm4sIDAsIDY0KTsNCisJaXB0Y19lcnJubyA9IDA7DQogDQogCWlm IChzdHJsZW4odGFibGVuYW1lKSA+PSBUQUJMRV9NQVhOQU1FTEVOKSB7DQot CQllcnJubyA9IEVJTlZBTDsNCisJCVRDX0VSUihFMkJJRyk7DQogCQlyZXR1 cm4gTlVMTDsNCiAJfQ0KIAkNCiAJaWYgKHNvY2tmZF91c2UgPT0gMCkgew0K IAkJc29ja2ZkID0gc29ja2V0KFRDX0FGLCBTT0NLX1JBVywgSVBQUk9UT19S QVcpOw0KLQkJaWYgKHNvY2tmZCA8IDApDQorCQlpZiAoc29ja2ZkIDwgMCkg ew0KKwkJCVRDX0VSUihlcnJubyk7DQogCQkJcmV0dXJuIE5VTEw7DQorCQl9 DQogCX0NCiAJc29ja2ZkX3VzZSsrOw0KIA0KQEAgLTgyMyw2ICs4MzYsNyBA QCBUQ19JTklUKGNvbnN0IGNoYXIgKnRhYmxlbmFtZSkNCiAJCQljbG9zZShz b2NrZmQpOw0KIAkJCXNvY2tmZCA9IC0xOw0KIAkJfQ0KKwkJVENfRVJSKGVy cm5vKTsNCiAJCXJldHVybiBOVUxMOw0KIAl9DQogDQpAQCAtODM1LDYgKzg0 OSw3IEBAIFRDX0lOSVQoY29uc3QgY2hhciAqdGFibGVuYW1lKQ0KIAkJCWNs b3NlKHNvY2tmZCk7DQogCQkJc29ja2ZkID0gLTE7DQogCQl9DQorCQlUQ19F UlIoRU5PTUVNKTsNCiAJCXJldHVybiBOVUxMOw0KIAl9DQogDQpAQCAtODQ2 LDggKzg2MSwxMCBAQCBUQ19JTklUKGNvbnN0IGNoYXIgKnRhYmxlbmFtZSkN CiAJdG1wID0gc2l6ZW9mKFNUUlVDVF9HRVRfRU5UUklFUykgKyBoLT5pbmZv LnNpemU7DQogDQogCWlmIChnZXRzb2Nrb3B0KHNvY2tmZCwgVENfSVBQUk9U TywgU09fR0VUX0VOVFJJRVMsIGgtPmVudHJpZXMsDQotCQkgICAgICAgJnRt cCkgPCAwKQ0KKwkJICAgICAgICZ0bXApIDwgMCkgew0KKwkJVENfRVJSKGVy cm5vKTsNCiAJCWdvdG8gZXJyb3I7DQorCX0NCiANCiAjaWZkZWYgSVBUQ19E RUJVRzINCiAJew0KQEAgLTg3OSw3ICs4OTYsNiBAQCBUQ19GUkVFKFRDX0hB TkRMRV9UICpoKQ0KIHsNCiAJc3RydWN0IGNoYWluX2hlYWQgKmMsICp0bXA7 DQogDQotCWlwdGNfZm4gPSBUQ19GUkVFOw0KIAlpZiAoLS1zb2NrZmRfdXNl ID09IDApIHsNCiAJCWNsb3NlKHNvY2tmZCk7DQogCQlzb2NrZmQgPSAtMTsN CkBAIC05MTMsNyArOTI5LDYgQEAgc3RhdGljIGludCBkdW1wX2VudHJ5KFNU UlVDVF9FTlRSWSAqZSwgYw0KIHZvaWQNCiBUQ19EVU1QX0VOVFJJRVMoY29u c3QgVENfSEFORExFX1QgaGFuZGxlKQ0KIHsNCi0JaXB0Y19mbiA9IFRDX0RV TVBfRU5UUklFUzsNCiAJQ0hFQ0soaGFuZGxlKTsNCiANCiAJcHJpbnRmKCJs aWJpcHRjIHYlcy4gJXUgYnl0ZXMuXG4iLA0KQEAgLTkzOSw3ICs5NTQsNiBA QCBUQ19EVU1QX0VOVFJJRVMoY29uc3QgVENfSEFORExFX1QgaGFuZGxlDQog LyogRG9lcyB0aGlzIGNoYWluIGV4aXN0PyAqLw0KIGludCBUQ19JU19DSEFJ Tihjb25zdCBjaGFyICpjaGFpbiwgY29uc3QgVENfSEFORExFX1QgaGFuZGxl KQ0KIHsNCi0JaXB0Y19mbiA9IFRDX0lTX0NIQUlOOw0KIAlyZXR1cm4gaXB0 Y2NfZmluZF9sYWJlbChjaGFpbiwgaGFuZGxlKSAhPSBOVUxMOw0KIH0NCiAN CkBAIC05NjEsMTEgKzk3NSw5IEBAIFRDX0ZJUlNUX0NIQUlOKFRDX0hBTkRM RV9UICpoYW5kbGUpDQogCXN0cnVjdCBjaGFpbl9oZWFkICpjID0gbGlzdF9l bnRyeSgoKmhhbmRsZSktPmNoYWlucy5uZXh0LA0KIAkJCQkJICBzdHJ1Y3Qg Y2hhaW5faGVhZCwgbGlzdCk7DQogDQotCWlwdGNfZm4gPSBUQ19GSVJTVF9D SEFJTjsNCi0NCi0NCiAJaWYgKGxpc3RfZW1wdHkoJigqaGFuZGxlKS0+Y2hh aW5zKSkgew0KIAkJREVCVUdQKCI6IG5vIGNoYWluc1xuIik7DQorCQlUQ19F UlIoRU5PRU5UKTsNCiAJCXJldHVybiBOVUxMOw0KIAl9DQogDQpAQCAtOTgy LDggKzk5NCw2IEBAIFRDX05FWFRfQ0hBSU4oVENfSEFORExFX1QgKmhhbmRs ZSkNCiB7DQogCXN0cnVjdCBjaGFpbl9oZWFkICpjID0gKCpoYW5kbGUpLT5j aGFpbl9pdGVyYXRvcl9jdXI7DQogDQotCWlwdGNfZm4gPSBUQ19ORVhUX0NI QUlOOw0KLQ0KIAlpZiAoIWMpIHsNCiAJCURFQlVHUCgiOiBubyBtb3JlIGNo YWluc1xuIik7DQogCQlyZXR1cm4gTlVMTDsNCkBAIC0xMDAyLDEzICsxMDEy LDExIEBAIFRDX0ZJUlNUX1JVTEUoY29uc3QgY2hhciAqY2hhaW4sIFRDX0hB TkQNCiAJc3RydWN0IGNoYWluX2hlYWQgKmM7DQogCXN0cnVjdCBydWxlX2hl YWQgKnI7DQogDQotCWlwdGNfZm4gPSBUQ19GSVJTVF9SVUxFOw0KLQ0KIAlE RUJVR1AoImZpcnN0IHJ1bGUoJXMpOiAiLCBjaGFpbik7DQogDQogCWMgPSBp cHRjY19maW5kX2xhYmVsKGNoYWluLCAqaGFuZGxlKTsNCiAJaWYgKCFjKSB7 DQotCQllcnJubyA9IEVOT0VOVDsNCisJCVRDX0VSUihFTk9FTlQpOw0KIAkJ cmV0dXJuIE5VTEw7DQogCX0NCiANCkBAIC0xMDMxLDcgKzEwMzksNiBAQCBU Q19ORVhUX1JVTEUoY29uc3QgU1RSVUNUX0VOVFJZICpwcmV2LCBUDQogew0K IAlzdHJ1Y3QgcnVsZV9oZWFkICpyOw0KIA0KLQlpcHRjX2ZuID0gVENfTkVY VF9SVUxFOw0KIAlERUJVR1AoInJ1bGVfaXRlcmF0b3JfY3VyPSVwLi4uIiwg KCpoYW5kbGUpLT5ydWxlX2l0ZXJhdG9yX2N1cik7DQogDQogCWlmICghKCpo YW5kbGUpLT5ydWxlX2l0ZXJhdG9yX2N1cikgew0KQEAgLTEwNDIsOCArMTA0 OSw2IEBAIFRDX05FWFRfUlVMRShjb25zdCBTVFJVQ1RfRU5UUlkgKnByZXYs IFQNCiAJciA9IGxpc3RfZW50cnkoKCpoYW5kbGUpLT5ydWxlX2l0ZXJhdG9y X2N1ci0+bGlzdC5uZXh0LCANCiAJCQlzdHJ1Y3QgcnVsZV9oZWFkLCBsaXN0 KTsNCiANCi0JaXB0Y19mbiA9IFRDX05FWFRfUlVMRTsNCi0NCiAJREVCVUdQ X0MoIm5leHQ9JXAsIGhlYWQ9JXAuLi4iLCAmci0+bGlzdCwgDQogCQkmKCpo YW5kbGUpLT5ydWxlX2l0ZXJhdG9yX2N1ci0+Y2hhaW4tPnJ1bGVzKTsNCiAN CkBAIC0xMDY1LDEyICsxMDcwLDExIEBAIHVuc2lnbmVkIGludA0KIFRDX05V TV9SVUxFUyhjb25zdCBjaGFyICpjaGFpbiwgVENfSEFORExFX1QgKmhhbmRs ZSkNCiB7DQogCXN0cnVjdCBjaGFpbl9oZWFkICpjOw0KLQlpcHRjX2ZuID0g VENfTlVNX1JVTEVTOw0KIAlDSEVDSygqaGFuZGxlKTsNCiANCiAJYyA9IGlw dGNjX2ZpbmRfbGFiZWwoY2hhaW4sICpoYW5kbGUpOw0KIAlpZiAoIWMpIHsN Ci0JCWVycm5vID0gRU5PRU5UOw0KKwkJVENfRVJSKEVOT0VOVCk7DQogCQly ZXR1cm4gKHVuc2lnbmVkIGludCktMTsNCiAJfQ0KIAkNCkBAIC0xMDg0LDEz ICsxMDg4LDExIEBAIGNvbnN0IFNUUlVDVF9FTlRSWSAqVENfR0VUX1JVTEUo Y29uc3QgY2gNCiAJc3RydWN0IGNoYWluX2hlYWQgKmM7DQogCXN0cnVjdCBy dWxlX2hlYWQgKnI7DQogCQ0KLQlpcHRjX2ZuID0gVENfR0VUX1JVTEU7DQot DQogCUNIRUNLKCpoYW5kbGUpOw0KIA0KIAljID0gaXB0Y2NfZmluZF9sYWJl bChjaGFpbiwgKmhhbmRsZSk7DQogCWlmICghYykgew0KLQkJZXJybm8gPSBF Tk9FTlQ7DQorCQlUQ19FUlIoRU5PRU5UKTsNCiAJCXJldHVybiBOVUxMOw0K IAl9DQogDQpAQCAtMTEzMyw4ICsxMTM1LDYgQEAgY29uc3QgY2hhciAqVENf R0VUX1RBUkdFVChjb25zdCBTVFJVQ1RfRQ0KIAlTVFJVQ1RfRU5UUlkgKmUg PSAoU1RSVUNUX0VOVFJZICopY2U7DQogCXN0cnVjdCBydWxlX2hlYWQgKnIg PSBjb250YWluZXJfb2YoZSwgc3RydWN0IHJ1bGVfaGVhZCwgZW50cnlbMF0p Ow0KIA0KLQlpcHRjX2ZuID0gVENfR0VUX1RBUkdFVDsNCi0NCiAJc3dpdGNo KHItPnR5cGUpIHsNCiAJCWludCBzcG9zOw0KIAkJY2FzZSBJUFRDQ19SX0ZB TExUSFJPVUdIOg0KQEAgLTExNjEsMTMgKzExNjEsOSBAQCBUQ19CVUlMVElO KGNvbnN0IGNoYXIgKmNoYWluLCBjb25zdCBUQ19IDQogew0KIAlzdHJ1Y3Qg Y2hhaW5faGVhZCAqYzsNCiAJDQotCWlwdGNfZm4gPSBUQ19CVUlMVElOOw0K LQ0KIAljID0gaXB0Y2NfZmluZF9sYWJlbChjaGFpbiwgaGFuZGxlKTsNCi0J aWYgKCFjKSB7DQotCQllcnJubyA9IEVOT0VOVDsNCisJaWYgKCFjKQ0KIAkJ cmV0dXJuIDA7DQotCX0NCiANCiAJcmV0dXJuIGlwdGNjX2lzX2J1aWx0aW4o Yyk7DQogfQ0KQEAgLTExODAsMTMgKzExNzYsMTEgQEAgVENfR0VUX1BPTElD WShjb25zdCBjaGFyICpjaGFpbiwNCiB7DQogCXN0cnVjdCBjaGFpbl9oZWFk ICpjOw0KIA0KLQlpcHRjX2ZuID0gVENfR0VUX1BPTElDWTsNCi0NCiAJREVC VUdQKCJjYWxsZWQgZm9yIGNoYWluICVzXG4iLCBjaGFpbik7DQogDQogCWMg PSBpcHRjY19maW5kX2xhYmVsKGNoYWluLCAqaGFuZGxlKTsNCiAJaWYgKCFj KSB7DQotCQllcnJubyA9IEVOT0VOVDsNCisJCVRDX0VSUihFTk9FTlQpOw0K IAkJcmV0dXJuIE5VTEw7DQogCX0NCiANCkBAIC0xMjA4LDcgKzEyMDIsNyBA QCBpcHRjY19zdGFuZGFyZF9tYXAoc3RydWN0IHJ1bGVfaGVhZCAqciwgDQog DQogCWlmICh0LT50YXJnZXQudS50YXJnZXRfc2l6ZQ0KIAkgICAgIT0gQUxJ R04oc2l6ZW9mKFNUUlVDVF9TVEFOREFSRF9UQVJHRVQpKSkgew0KLQkJZXJy bm8gPSBFSU5WQUw7DQorCQlUQ19FUlIoRUlOVkFMKTsNCiAJCXJldHVybiAw Ow0KIAl9DQogCS8qIG1lbXNldCBmb3IgbWVtY21wIGNvbnZlbmllbmNlIG9u IGRlbGV0ZS9yZXBsYWNlICovDQpAQCAtMTI0NCw3ICsxMjM4LDcgQEAgaXB0 Y2NfbWFwX3RhcmdldChjb25zdCBUQ19IQU5ETEVfVCBoYW5kbA0KIAkJcmV0 dXJuIGlwdGNjX3N0YW5kYXJkX21hcChyLCBSRVRVUk4pOw0KIAllbHNlIGlm IChUQ19CVUlMVElOKHQtPnUudXNlci5uYW1lLCBoYW5kbGUpKSB7DQogCQkv KiBDYW4ndCBqdW1wIHRvIGJ1aWx0aW5zLiAqLw0KLQkJZXJybm8gPSBFSU5W QUw7DQorCQlUQ19FUlIoRUlOVkFMKTsNCiAJCXJldHVybiAwOw0KIAl9IGVs c2Ugew0KIAkJLyogTWF5YmUgaXQncyBhbiBleGlzdGluZyBjaGFpbiBuYW1l LiAqLw0KQEAgLTEyODMsMTcgKzEyNzcsMTUgQEAgVENfSU5TRVJUX0VOVFJZ KGNvbnN0IElQVF9DSEFJTkxBQkVMIGNoYQ0KIAlzdHJ1Y3QgcnVsZV9oZWFk ICpyOw0KIAlzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2Ow0KIA0KLQlpcHRjX2Zu ID0gVENfSU5TRVJUX0VOVFJZOw0KLQ0KIAlpZiAoIShjID0gaXB0Y2NfZmlu ZF9sYWJlbChjaGFpbiwgKmhhbmRsZSkpKSB7DQotCQllcnJubyA9IEVOT0VO VDsNCisJCVRDX0VSUihFTk9FTlQpOw0KIAkJcmV0dXJuIDA7DQogCX0NCiAN CiAJLyogZmlyc3QgcnVsZW51bSBpbmRleCA9IDANCiAJICAgZmlyc3QgYy0+ bnVtX3J1bGVzIGluZGV4ID0gMSAqLw0KIAlpZiAocnVsZW51bSA+IGMtPm51 bV9ydWxlcykgew0KLQkJZXJybm8gPSBFMkJJRzsNCisJCVRDX0VSUihFMkJJ Ryk7DQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0KQEAgLTEzMTEsNyArMTMwMyw3 IEBAIFRDX0lOU0VSVF9FTlRSWShjb25zdCBJUFRfQ0hBSU5MQUJFTCBjaGEN CiAJfQ0KIA0KIAlpZiAoIShyID0gaXB0Y2NfYWxsb2NfcnVsZShjLCBlLT5u ZXh0X29mZnNldCkpKSB7DQotCQllcnJubyA9IEVOT01FTTsNCisJCVRDX0VS UihFTk9NRU0pOw0KIAkJcmV0dXJuIDA7DQogCX0NCiANCkBAIC0xMzQxLDE1 ICsxMzMzLDEzIEBAIFRDX1JFUExBQ0VfRU5UUlkoY29uc3QgSVBUX0NIQUlO TEFCRUwgY2gNCiAJc3RydWN0IGNoYWluX2hlYWQgKmM7DQogCXN0cnVjdCBy dWxlX2hlYWQgKnIsICpvbGQ7DQogDQotCWlwdGNfZm4gPSBUQ19SRVBMQUNF X0VOVFJZOw0KLQ0KIAlpZiAoIShjID0gaXB0Y2NfZmluZF9sYWJlbChjaGFp biwgKmhhbmRsZSkpKSB7DQotCQllcnJubyA9IEVOT0VOVDsNCisJCVRDX0VS UihFTk9FTlQpOw0KIAkJcmV0dXJuIDA7DQogCX0NCiANCiAJaWYgKHJ1bGVu dW0gPj0gYy0+bnVtX3J1bGVzKSB7DQotCQllcnJubyA9IEUyQklHOw0KKwkJ VENfRVJSKEUyQklHKTsNCiAJCXJldHVybiAwOw0KIAl9DQogDQpAQCAtMTM2 MSw3ICsxMzUxLDcgQEAgVENfUkVQTEFDRV9FTlRSWShjb25zdCBJUFRfQ0hB SU5MQUJFTCBjaA0KIAl9DQogDQogCWlmICghKHIgPSBpcHRjY19hbGxvY19y dWxlKGMsIGUtPm5leHRfb2Zmc2V0KSkpIHsNCi0JCWVycm5vID0gRU5PTUVN Ow0KKwkJVENfRVJSKEVOT01FTSk7DQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0K QEAgLTEzOTEsMTYgKzEzODEsMTUgQEAgVENfQVBQRU5EX0VOVFJZKGNvbnN0 IElQVF9DSEFJTkxBQkVMIGNoYQ0KIAlzdHJ1Y3QgY2hhaW5faGVhZCAqYzsN CiAJc3RydWN0IHJ1bGVfaGVhZCAqcjsNCiANCi0JaXB0Y19mbiA9IFRDX0FQ UEVORF9FTlRSWTsNCiAJaWYgKCEoYyA9IGlwdGNjX2ZpbmRfbGFiZWwoY2hh aW4sICpoYW5kbGUpKSkgew0KIAkJREVCVUdQKCJ1bmFibGUgdG8gZmluZCBj aGFpbiBgJXMnXG4iLCBjaGFpbik7DQotCQllcnJubyA9IEVOT0VOVDsNCisJ CVRDX0VSUihFTk9FTlQpOw0KIAkJcmV0dXJuIDA7DQogCX0NCiANCiAJaWYg KCEociA9IGlwdGNjX2FsbG9jX3J1bGUoYywgZS0+bmV4dF9vZmZzZXQpKSkg ew0KIAkJREVCVUdQKCJ1bmFibGUgdG8gYWxsb2NhdGUgcnVsZSBmb3IgY2hh aW4gYCVzJ1xuIiwgY2hhaW4pOw0KLQkJZXJybm8gPSBFTk9NRU07DQorCQlU Q19FUlIoRU5PTUVNKTsNCiAJCXJldHVybiAwOw0KIAl9DQogDQpAQCAtMTQ5 OSwxNiArMTQ4OCwxNSBAQCBUQ19ERUxFVEVfRU5UUlkoY29uc3QgSVBUX0NI QUlOTEFCRUwgY2hhDQogCXN0cnVjdCBjaGFpbl9oZWFkICpjOw0KIAlzdHJ1 Y3QgcnVsZV9oZWFkICpyLCAqaTsNCiANCi0JaXB0Y19mbiA9IFRDX0RFTEVU RV9FTlRSWTsNCiAJaWYgKCEoYyA9IGlwdGNjX2ZpbmRfbGFiZWwoY2hhaW4s ICpoYW5kbGUpKSkgew0KLQkJZXJybm8gPSBFTk9FTlQ7DQorCQlUQ19FUlIo RU5PRU5UKTsNCiAJCXJldHVybiAwOw0KIAl9DQogDQogCS8qIENyZWF0ZSBh IHJ1bGVfaGVhZCBmcm9tIG9yaWdmdy4gKi8NCiAJciA9IGlwdGNjX2FsbG9j X3J1bGUoYywgb3JpZ2Z3LT5uZXh0X29mZnNldCk7DQogCWlmICghcikgew0K LQkJZXJybm8gPSBFTk9NRU07DQorCQlUQ19FUlIoRU5PTUVNKTsNCiAJCXJl dHVybiAwOw0KIAl9DQogDQpAQCAtMTU1Niw3ICsxNTQ0LDcgQEAgVENfREVM RVRFX0VOVFJZKGNvbnN0IElQVF9DSEFJTkxBQkVMIGNoYQ0KIAl9DQogDQog CWZyZWUocik7DQotCWVycm5vID0gRU5PRU5UOw0KKwlUQ19FUlIoRUlOVkFM KTsNCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTE1NzAsMTUgKzE1NTgsMTMg QEAgVENfREVMRVRFX05VTV9FTlRSWShjb25zdCBJUFRfQ0hBSU5MQUJFTA0K IAlzdHJ1Y3QgY2hhaW5faGVhZCAqYzsNCiAJc3RydWN0IHJ1bGVfaGVhZCAq cjsNCiANCi0JaXB0Y19mbiA9IFRDX0RFTEVURV9OVU1fRU5UUlk7DQotDQog CWlmICghKGMgPSBpcHRjY19maW5kX2xhYmVsKGNoYWluLCAqaGFuZGxlKSkp IHsNCi0JCWVycm5vID0gRU5PRU5UOw0KKwkJVENfRVJSKEVOT0VOVCk7DQog CQlyZXR1cm4gMDsNCiAJfQ0KIA0KIAlpZiAocnVsZW51bSA+PSBjLT5udW1f cnVsZXMpIHsNCi0JCWVycm5vID0gRTJCSUc7DQorCQlUQ19FUlIoRTJCSUcp Ow0KIAkJcmV0dXJuIDA7DQogCX0NCiANCkBAIC0xNjEzLDggKzE1OTksNyBA QCBUQ19DSEVDS19QQUNLRVQoY29uc3QgSVBUX0NIQUlOTEFCRUwgY2hhDQog CQlTVFJVQ1RfRU5UUlkgKmVudHJ5LA0KIAkJVENfSEFORExFX1QgKmhhbmRs ZSkNCiB7DQotCWlwdGNfZm4gPSBUQ19DSEVDS19QQUNLRVQ7DQotCWVycm5v ID0gRU5PU1lTOw0KKwlUQ19FUlIoRU5PU1lTKTsNCiAJcmV0dXJuIE5VTEw7 DQogfQ0KIA0KQEAgLTE2MjUsOSArMTYxMCw4IEBAIFRDX0ZMVVNIX0VOVFJJ RVMoY29uc3QgSVBUX0NIQUlOTEFCRUwgY2gNCiAJc3RydWN0IGNoYWluX2hl YWQgKmM7DQogCXN0cnVjdCBydWxlX2hlYWQgKnIsICp0bXA7DQogDQotCWlw dGNfZm4gPSBUQ19GTFVTSF9FTlRSSUVTOw0KIAlpZiAoIShjID0gaXB0Y2Nf ZmluZF9sYWJlbChjaGFpbiwgKmhhbmRsZSkpKSB7DQotCQllcnJubyA9IEVO T0VOVDsNCisJCVRDX0VSUihFTk9FTlQpOw0KIAkJcmV0dXJuIDA7DQogCX0N CiANCkBAIC0xNjQ5LDkgKzE2MzMsOCBAQCBUQ19aRVJPX0VOVFJJRVMoY29u c3QgSVBUX0NIQUlOTEFCRUwgY2hhDQogCXN0cnVjdCBjaGFpbl9oZWFkICpj Ow0KIAlzdHJ1Y3QgcnVsZV9oZWFkICpyOw0KIA0KLQlpcHRjX2ZuID0gVENf WkVST19FTlRSSUVTOw0KIAlpZiAoIShjID0gaXB0Y2NfZmluZF9sYWJlbChj aGFpbiwgKmhhbmRsZSkpKSB7DQotCQllcnJubyA9IEVOT0VOVDsNCisJCVRD X0VSUihFTk9FTlQpOw0KIAkJcmV0dXJuIDA7DQogCX0NCiANCkBAIC0xNjc2 LDE2ICsxNjU5LDE1IEBAIFRDX1JFQURfQ09VTlRFUihjb25zdCBJUFRfQ0hB SU5MQUJFTCBjaGENCiAJc3RydWN0IGNoYWluX2hlYWQgKmM7DQogCXN0cnVj dCBydWxlX2hlYWQgKnI7DQogDQotCWlwdGNfZm4gPSBUQ19SRUFEX0NPVU5U RVI7DQogCUNIRUNLKCpoYW5kbGUpOw0KIA0KIAlpZiAoIShjID0gaXB0Y2Nf ZmluZF9sYWJlbChjaGFpbiwgKmhhbmRsZSkpKSB7DQotCQllcnJubyA9IEVO T0VOVDsNCisJCVRDX0VSUihFTk9FTlQpOw0KIAkJcmV0dXJuIE5VTEw7DQog CX0NCiANCiAJaWYgKCEociA9IGlwdGNjX2dldF9ydWxlX251bShjLCBydWxl bnVtKSkpIHsNCi0JCWVycm5vID0gRTJCSUc7DQorCQlUQ19FUlIoRTJCSUcp Ow0KIAkJcmV0dXJuIE5VTEw7DQogCX0NCiANCkBAIC0xNzAwLDE2ICsxNjgy LDE1IEBAIFRDX1pFUk9fQ09VTlRFUihjb25zdCBJUFRfQ0hBSU5MQUJFTCBj aGENCiAJc3RydWN0IGNoYWluX2hlYWQgKmM7DQogCXN0cnVjdCBydWxlX2hl YWQgKnI7DQogCQ0KLQlpcHRjX2ZuID0gVENfWkVST19DT1VOVEVSOw0KIAlD SEVDSygqaGFuZGxlKTsNCiANCiAJaWYgKCEoYyA9IGlwdGNjX2ZpbmRfbGFi ZWwoY2hhaW4sICpoYW5kbGUpKSkgew0KLQkJZXJybm8gPSBFTk9FTlQ7DQor CQlUQ19FUlIoRU5PRU5UKTsNCiAJCXJldHVybiAwOw0KIAl9DQogDQogCWlm ICghKHIgPSBpcHRjY19nZXRfcnVsZV9udW0oYywgcnVsZW51bSkpKSB7DQot CQllcnJubyA9IEUyQklHOw0KKwkJVENfRVJSKEUyQklHKTsNCiAJCXJldHVy biAwOw0KIAl9DQogDQpAQCAtMTczMSwxNiArMTcxMiwxNSBAQCBUQ19TRVRf Q09VTlRFUihjb25zdCBJUFRfQ0hBSU5MQUJFTCBjaGFpDQogCXN0cnVjdCBy dWxlX2hlYWQgKnI7DQogCVNUUlVDVF9FTlRSWSAqZTsNCiANCi0JaXB0Y19m biA9IFRDX1NFVF9DT1VOVEVSOw0KIAlDSEVDSygqaGFuZGxlKTsNCiANCiAJ aWYgKCEoYyA9IGlwdGNjX2ZpbmRfbGFiZWwoY2hhaW4sICpoYW5kbGUpKSkg ew0KLQkJZXJybm8gPSBFTk9FTlQ7DQorCQlUQ19FUlIoRU5PRU5UKTsNCiAJ CXJldHVybiAwOw0KIAl9DQogDQogCWlmICghKHIgPSBpcHRjY19nZXRfcnVs ZV9udW0oYywgcnVsZW51bSkpKSB7DQotCQllcnJubyA9IEUyQklHOw0KKwkJ VENfRVJSKEUyQklHKTsNCiAJCXJldHVybiAwOw0KIAl9DQogDQpAQCAtMTc2 Miw4ICsxNzQyLDYgQEAgVENfQ1JFQVRFX0NIQUlOKGNvbnN0IElQVF9DSEFJ TkxBQkVMIGNoYQ0KIHsNCiAJc3RhdGljIHN0cnVjdCBjaGFpbl9oZWFkICpj Ow0KIA0KLQlpcHRjX2ZuID0gVENfQ1JFQVRFX0NIQUlOOw0KLQ0KIAkvKiBm aW5kX2xhYmVsIGRvZXNuJ3QgY292ZXIgYnVpbHQtaW4gdGFyZ2V0czogRFJP UCwgQUNDRVBULA0KICAgICAgICAgICAgUVVFVUUsIFJFVFVSTi4gKi8NCiAJ aWYgKGlwdGNjX2ZpbmRfbGFiZWwoY2hhaW4sICpoYW5kbGUpDQpAQCAtMTc3 MiwyMCArMTc1MCwyMCBAQCBUQ19DUkVBVEVfQ0hBSU4oY29uc3QgSVBUX0NI QUlOTEFCRUwgY2hhDQogCSAgICB8fCBzdHJjbXAoY2hhaW4sIExBQkVMX1FV RVVFKSA9PSAwDQogCSAgICB8fCBzdHJjbXAoY2hhaW4sIExBQkVMX1JFVFVS TikgPT0gMCkgew0KIAkJREVCVUdQKCJDaGFpbiBgJXMnIGFscmVhZHkgZXhp c3RzXG4iLCBjaGFpbik7DQotCQllcnJubyA9IEVFWElTVDsNCisJCVRDX0VS UihFRVhJU1QpOw0KIAkJcmV0dXJuIDA7DQogCX0NCiANCiAJaWYgKHN0cmxl bihjaGFpbikrMSA+IHNpemVvZihJUFRfQ0hBSU5MQUJFTCkpIHsNCiAJCURF QlVHUCgiQ2hhaW4gbmFtZSBgJXMnIHRvbyBsb25nXG4iLCBjaGFpbik7DQot CQllcnJubyA9IEVJTlZBTDsNCisJCVRDX0VSUihFMkJJRyk7DQogCQlyZXR1 cm4gMDsNCiAJfQ0KIA0KIAljID0gaXB0Y2NfYWxsb2NfY2hhaW5faGVhZChj aGFpbiwgMCk7DQogCWlmICghYykgew0KIAkJREVCVUdQKCJDYW5ub3QgYWxs b2NhdGUgbWVtb3J5IGZvciBjaGFpbiBgJXMnXG4iLCBjaGFpbik7DQotCQll cnJubyA9IEVOT01FTTsNCisJCVRDX0VSUihFTk9NRU0pOw0KIAkJcmV0dXJu IDA7DQogDQogCX0NCkBAIC0xODA1LDkgKzE3ODMsOCBAQCBUQ19HRVRfUkVG RVJFTkNFUyh1bnNpZ25lZCBpbnQgKnJlZiwgY29uDQogew0KIAlzdHJ1Y3Qg Y2hhaW5faGVhZCAqYzsNCiANCi0JaXB0Y19mbiA9IFRDX0dFVF9SRUZFUkVO Q0VTOw0KIAlpZiAoIShjID0gaXB0Y2NfZmluZF9sYWJlbChjaGFpbiwgKmhh bmRsZSkpKSB7DQotCQllcnJubyA9IEVOT0VOVDsNCisJCVRDX0VSUihFTk9F TlQpOw0KIAkJcmV0dXJuIDA7DQogCX0NCiANCkBAIC0xODIzLDM0ICsxODAw LDMzIEBAIFRDX0RFTEVURV9DSEFJTihjb25zdCBJUFRfQ0hBSU5MQUJFTCBj aGENCiAJdW5zaWduZWQgaW50IHJlZmVyZW5jZXM7DQogCXN0cnVjdCBjaGFp bl9oZWFkICpjOw0KIA0KLQlpcHRjX2ZuID0gVENfREVMRVRFX0NIQUlOOw0K LQ0KIAlpZiAoIShjID0gaXB0Y2NfZmluZF9sYWJlbChjaGFpbiwgKmhhbmRs ZSkpKSB7DQogCQlERUJVR1AoImNhbm5vdCBmaW5kIGNoYWluIGAlcydcbiIs IGNoYWluKTsNCi0JCWVycm5vID0gRU5PRU5UOw0KKwkJVENfRVJSKEVOT0VO VCk7DQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0KIAlpZiAoVENfQlVJTFRJTihj aGFpbiwgKmhhbmRsZSkpIHsNCiAJCURFQlVHUCgiY2Fubm90IHJlbW92ZSBi dWlsdGluIGNoYWluIGAlcydcbiIsIGNoYWluKTsNCi0JCWVycm5vID0gRUlO VkFMOw0KKwkJVENfRVJSKEVJTlZBTCk7DQogCQlyZXR1cm4gMDsNCiAJfQ0K IA0KIAlpZiAoIVRDX0dFVF9SRUZFUkVOQ0VTKCZyZWZlcmVuY2VzLCBjaGFp biwgaGFuZGxlKSkgew0KIAkJREVCVUdQKCJjYW5ub3QgZ2V0IHJlZmVyZW5j ZXMgb24gY2hhaW4gYCVzJ1xuIiwgY2hhaW4pOw0KKwkJVENfRVJSKEVOT1NZ Uyk7DQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0KIAlpZiAocmVmZXJlbmNlcyA+ IDApIHsNCiAJCURFQlVHUCgiY2hhaW4gYCVzJyBzdGlsbCBoYXMgcmVmZXJl bmNlc1xuIiwgY2hhaW4pOw0KLQkJZXJybm8gPSBFTUxJTks7DQorCQlUQ19F UlIoRU1MSU5LKTsNCiAJCXJldHVybiAwOw0KIAl9DQogDQogCWlmIChjLT5u dW1fcnVsZXMpIHsNCiAJCURFQlVHUCgiY2hhaW4gYCVzJyBpcyBub3QgZW1w dHlcbiIsIGNoYWluKTsNCi0JCWVycm5vID0gRU5PVEVNUFRZOw0KKwkJVENf RVJSKEVOT1RFTVBUWSk7DQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0KQEAgLTE4 NzUsNyArMTg1MSwxNyBAQCBpbnQgVENfUkVOQU1FX0NIQUlOKGNvbnN0IElQ VF9DSEFJTkxBQkVMDQogCQkgICAgVENfSEFORExFX1QgKmhhbmRsZSkNCiB7 DQogCXN0cnVjdCBjaGFpbl9oZWFkICpjOw0KLQlpcHRjX2ZuID0gVENfUkVO QU1FX0NIQUlOOw0KKw0KKwlpZiAoIShjID0gaXB0Y2NfZmluZF9sYWJlbChv bGRuYW1lLCAqaGFuZGxlKSkNCisJICAgIHx8IFRDX0JVSUxUSU4ob2xkbmFt ZSwgKmhhbmRsZSkpIHsNCisJCVRDX0VSUihFTk9FTlQpOw0KKwkJcmV0dXJu IDA7DQorCX0NCisNCisJaWYgKHN0cmxlbihuZXduYW1lKSsxID4gc2l6ZW9m KElQVF9DSEFJTkxBQkVMKSkgew0KKwkJVENfRVJSKEUyQklHKTsNCisJCXJl dHVybiAwOw0KKwl9DQogDQogCS8qIGZpbmRfbGFiZWwgZG9lc24ndCBjb3Zl ciBidWlsdC1pbiB0YXJnZXRzOiBEUk9QLCBBQ0NFUFQsDQogICAgICAgICAg ICBRVUVVRSwgUkVUVVJOLiAqLw0KQEAgLTE4ODQsMTggKzE4NzAsNyBAQCBp bnQgVENfUkVOQU1FX0NIQUlOKGNvbnN0IElQVF9DSEFJTkxBQkVMDQogCSAg ICB8fCBzdHJjbXAobmV3bmFtZSwgTEFCRUxfQUNDRVBUKSA9PSAwDQogCSAg ICB8fCBzdHJjbXAobmV3bmFtZSwgTEFCRUxfUVVFVUUpID09IDANCiAJICAg IHx8IHN0cmNtcChuZXduYW1lLCBMQUJFTF9SRVRVUk4pID09IDApIHsNCi0J CWVycm5vID0gRUVYSVNUOw0KLQkJcmV0dXJuIDA7DQotCX0NCi0NCi0JaWYg KCEoYyA9IGlwdGNjX2ZpbmRfbGFiZWwob2xkbmFtZSwgKmhhbmRsZSkpDQot CSAgICB8fCBUQ19CVUlMVElOKG9sZG5hbWUsICpoYW5kbGUpKSB7DQotCQll cnJubyA9IEVOT0VOVDsNCi0JCXJldHVybiAwOw0KLQl9DQotDQotCWlmIChz dHJsZW4obmV3bmFtZSkrMSA+IHNpemVvZihJUFRfQ0hBSU5MQUJFTCkpIHsN Ci0JCWVycm5vID0gRUlOVkFMOw0KKwkJVENfRVJSKEVFWElTVCk7DQogCQly ZXR1cm4gMDsNCiAJfQ0KIA0KQEAgLTE5MTUsMTcgKzE4OTAsMTUgQEAgVENf U0VUX1BPTElDWShjb25zdCBJUFRfQ0hBSU5MQUJFTCBjaGFpbg0KIHsNCiAJ c3RydWN0IGNoYWluX2hlYWQgKmM7DQogDQotCWlwdGNfZm4gPSBUQ19TRVRf UE9MSUNZOw0KLQ0KIAlpZiAoIShjID0gaXB0Y2NfZmluZF9sYWJlbChjaGFp biwgKmhhbmRsZSkpKSB7DQogCQlERUJVR1AoImNhbm5vdCBmaW5kIGNoYWlu IGAlcydcbiIsIGNoYWluKTsNCi0JCWVycm5vID0gRU5PRU5UOw0KKwkJVENf RVJSKEVOT0VOVCk7DQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0KIAlpZiAoIWlw dGNjX2lzX2J1aWx0aW4oYykpIHsNCiAJCURFQlVHUCgiY2Fubm90IHNldCBw b2xpY3kgb2YgdXNlcmRlZmluZWRjaGFpbiBgJXMnXG4iLCBjaGFpbik7DQot CQllcnJubyA9IEVOT0VOVDsNCisJCVRDX0VSUihFTk9FTlQpOw0KIAkJcmV0 dXJuIDA7DQogCX0NCiANCkBAIC0xOTM0LDcgKzE5MDcsNyBAQCBUQ19TRVRf UE9MSUNZKGNvbnN0IElQVF9DSEFJTkxBQkVMIGNoYWluDQogCWVsc2UgaWYg KHN0cmNtcChwb2xpY3ksIExBQkVMX0RST1ApID09IDApDQogCQljLT52ZXJk aWN0ID0gLU5GX0RST1AgLSAxOw0KIAllbHNlIHsNCi0JCWVycm5vID0gRUlO VkFMOw0KKwkJVENfRVJSKEVJTlZBTCk7DQogCQlyZXR1cm4gMDsNCiAJfQ0K IA0KQEAgLTIwMzQsNyArMjAwNyw2IEBAIFRDX0NPTU1JVChUQ19IQU5ETEVf VCAqaGFuZGxlKQ0KIAlpbnQgbmV3X251bWJlcjsNCiAJdW5zaWduZWQgaW50 IG5ld19zaXplOw0KIA0KLQlpcHRjX2ZuID0gVENfQ09NTUlUOw0KIAlDSEVD SygqaGFuZGxlKTsNCiANCiAJLyogRG9uJ3QgY29tbWl0IGlmIG5vdGhpbmcg Y2hhbmdlZC4gKi8NCkBAIC0yMDQzLDEzICsyMDE1LDEzIEBAIFRDX0NPTU1J VChUQ19IQU5ETEVfVCAqaGFuZGxlKQ0KIA0KIAluZXdfbnVtYmVyID0gaXB0 Y2NfY29tcGlsZV90YWJsZV9wcmVwKCpoYW5kbGUsICZuZXdfc2l6ZSk7DQog CWlmIChuZXdfbnVtYmVyIDwgMCkgew0KLQkJZXJybm8gPSBFTk9NRU07DQor CQlUQ19FUlIoRU5PTUVNKTsNCiAJCWdvdG8gb3V0X3plcm87DQogCX0NCiAN CiAJcmVwbCA9IG1hbGxvYyhzaXplb2YoKnJlcGwpICsgbmV3X3NpemUpOw0K IAlpZiAoIXJlcGwpIHsNCi0JCWVycm5vID0gRU5PTUVNOw0KKwkJVENfRVJS KEVOT01FTSk7DQogCQlnb3RvIG91dF96ZXJvOw0KIAl9DQogCW1lbXNldChy ZXBsLCAwLCBzaXplb2YoKnJlcGwpICsgbmV3X3NpemUpOw0KQEAgLTIwNjUs MTMgKzIwMzcsMTMgQEAgVENfQ09NTUlUKFRDX0hBTkRMRV9UICpoYW5kbGUp DQogCXJlcGwtPmNvdW50ZXJzID0gbWFsbG9jKHNpemVvZihTVFJVQ1RfQ09V TlRFUlMpDQogCQkJCSogKCpoYW5kbGUpLT5pbmZvLm51bV9lbnRyaWVzKTsN CiAJaWYgKCFyZXBsLT5jb3VudGVycykgew0KLQkJZXJybm8gPSBFTk9NRU07 DQorCQlUQ19FUlIoRU5PTUVNKTsNCiAJCWdvdG8gb3V0X2ZyZWVfcmVwbDsN CiAJfQ0KIAkvKiBUaGVzZSBhcmUgdGhlIGNvdW50ZXJzIHdlJ3JlIGdvaW5n IHRvIHB1dCBiYWNrLCBsYXRlci4gKi8NCiAJbmV3Y291bnRlcnMgPSBtYWxs b2MoY291bnRlcmxlbik7DQogCWlmICghbmV3Y291bnRlcnMpIHsNCi0JCWVy cm5vID0gRU5PTUVNOw0KKwkJVENfRVJSKEVOT01FTSk7DQogCQlnb3RvIG91 dF9mcmVlX3JlcGxfY291bnRlcnM7DQogCX0NCiAJbWVtc2V0KG5ld2NvdW50 ZXJzLCAwLCBjb3VudGVybGVuKTsNCkBAIC0yMDg4LDcgKzIwNjAsNyBAQCBU Q19DT01NSVQoVENfSEFORExFX1QgKmhhbmRsZSkNCiANCiAJcmV0ID0gaXB0 Y2NfY29tcGlsZV90YWJsZSgqaGFuZGxlLCByZXBsKTsNCiAJaWYgKHJldCA8 IDApIHsNCi0JCWVycm5vID0gcmV0Ow0KKwkJVENfRVJSKEVJTlZBTCk7DQog CQlnb3RvIG91dF9mcmVlX25ld2NvdW50ZXJzOw0KIAl9DQogDQpAQCAtMjEw Niw4ICsyMDc4LDEwIEBAIFRDX0NPTU1JVChUQ19IQU5ETEVfVCAqaGFuZGxl KQ0KIA0KIAlyZXQgPSBzZXRzb2Nrb3B0KHNvY2tmZCwgVENfSVBQUk9UTywg U09fU0VUX1JFUExBQ0UsIHJlcGwsDQogCQkJIHNpemVvZigqcmVwbCkgKyBy ZXBsLT5zaXplKTsNCi0JaWYgKHJldCA8IDApDQorCWlmIChyZXQgPCAwKSB7 DQorCQlUQ19FUlIoZXJybm8pOw0KIAkJZ290byBvdXRfZnJlZV9uZXdjb3Vu dGVyczsNCisJfQ0KIA0KIAkvKiBQdXQgY291bnRlcnMgYmFjay4gKi8NCiAJ c3RyY3B5KG5ld2NvdW50ZXJzLT5uYW1lLCAoKmhhbmRsZSktPmluZm8ubmFt ZSk7DQpAQCAtMjE4Miw4ICsyMTU2LDEwIEBAIFRDX0NPTU1JVChUQ19IQU5E TEVfVCAqaGFuZGxlKQ0KIA0KIAlyZXQgPSBzZXRzb2Nrb3B0KHNvY2tmZCwg VENfSVBQUk9UTywgU09fU0VUX0FERF9DT1VOVEVSUywNCiAJCQkgbmV3Y291 bnRlcnMsIGNvdW50ZXJsZW4pOw0KLQlpZiAocmV0IDwgMCkNCisJaWYgKHJl dCA8IDApIHsNCisJCVRDX0VSUihlcnJubyk7DQogCQlnb3RvIG91dF9mcmVl X25ld2NvdW50ZXJzOw0KKwl9DQogDQogCWZyZWUocmVwbC0+Y291bnRlcnMp Ow0KIAlmcmVlKHJlcGwpOw0KQEAgLTIyMTAsNTcgKzIxODYsOTggQEAgVENf R0VUX1JBV19TT0NLRVQodm9pZCkNCiAJcmV0dXJuIHNvY2tmZDsNCiB9DQog DQordm9pZA0KK1RDX0VSUk9SKGNvbnN0IGNoYXIgKmZ1bmN0aW9uLCBpbnQg ZXJyb3IpDQorew0KKwlpZiAoc3RybGVuKGlwdGNfZXJyZm4pKQ0KKwkJcHJp bnRmKCIlczogJXNcbiIsIFRDX0xJQk5BTUUsIFRDX1NUUkVSUk9SKCkpOw0K KwlzdHJuY3B5KGlwdGNfZXJyZm4sIGZ1bmN0aW9uLCA2Myk7DQorCWlwdGNf ZXJybm8gPSBlcnJvcjsNCit9DQorDQogLyogVHJhbnNsYXRlcyBlcnJubyBu dW1iZXJzIGludG8gbW9yZSBodW1hbi1yZWFkYWJsZSBmb3JtIHRoYW4gc3Ry ZXJyb3IuICovDQogY29uc3QgY2hhciAqDQotVENfU1RSRVJST1IoaW50IGVy cikNCitUQ19TVFJFUlJPUigpDQogew0KLQl1bnNpZ25lZCBpbnQgaTsNCisJ dW5zaWduZWQgaW50IGksIGxlbmd0aDsNCisJc3RhdGljIGNoYXIgc3RyYnVm WzI1Nl07DQorDQogCXN0cnVjdCB0YWJsZV9zdHJ1Y3Qgew0KLQkJdm9pZCAq Zm47DQorCQljb25zdCBjaGFyICpmbjsNCiAJCWludCBlcnI7DQogCQljb25z dCBjaGFyICptZXNzYWdlOw0KIAl9IHRhYmxlIFtdID0NCi0JICB7IHsgVENf SU5JVCwgRVBFUk0sICJQZXJtaXNzaW9uIGRlbmllZCAoeW91IG11c3QgYmUg cm9vdCkiIH0sDQotCSAgICB7IFRDX0lOSVQsIEVJTlZBTCwgIk1vZHVsZSBp cyB3cm9uZyB2ZXJzaW9uIiB9LA0KLQkgICAgeyBUQ19JTklULCBFTk9FTlQs IA0KLQkJICAgICJUYWJsZSBkb2VzIG5vdCBleGlzdCAoZG8geW91IG5lZWQg dG8gaW5zbW9kPykiIH0sDQotCSAgICB7IFRDX0RFTEVURV9DSEFJTiwgRU5P VEVNUFRZLCAiQ2hhaW4gaXMgbm90IGVtcHR5IiB9LA0KLQkgICAgeyBUQ19E RUxFVEVfQ0hBSU4sIEVJTlZBTCwgIkNhbid0IGRlbGV0ZSBidWlsdC1pbiBj aGFpbiIgfSwNCi0JICAgIHsgVENfREVMRVRFX0NIQUlOLCBFTUxJTkssDQot CSAgICAgICJDYW4ndCBkZWxldGUgY2hhaW4gd2l0aCByZWZlcmVuY2VzIGxl ZnQiIH0sDQotCSAgICB7IFRDX0NSRUFURV9DSEFJTiwgRUVYSVNULCAiQ2hh aW4gYWxyZWFkeSBleGlzdHMiIH0sDQotCSAgICB7IFRDX0lOU0VSVF9FTlRS WSwgRTJCSUcsICJJbmRleCBvZiBpbnNlcnRpb24gdG9vIGJpZyIgfSwNCi0J ICAgIHsgVENfUkVQTEFDRV9FTlRSWSwgRTJCSUcsICJJbmRleCBvZiByZXBs YWNlbWVudCB0b28gYmlnIiB9LA0KLQkgICAgeyBUQ19ERUxFVEVfTlVNX0VO VFJZLCBFMkJJRywgIkluZGV4IG9mIGRlbGV0aW9uIHRvbyBiaWciIH0sDQot CSAgICB7IFRDX1JFQURfQ09VTlRFUiwgRTJCSUcsICJJbmRleCBvZiBjb3Vu dGVyIHRvbyBiaWciIH0sDQotCSAgICB7IFRDX1pFUk9fQ09VTlRFUiwgRTJC SUcsICJJbmRleCBvZiBjb3VudGVyIHRvbyBiaWciIH0sDQotCSAgICB7IFRD X0lOU0VSVF9FTlRSWSwgRUxPT1AsICJMb29wIGZvdW5kIGluIHRhYmxlIiB9 LA0KLQkgICAgeyBUQ19JTlNFUlRfRU5UUlksIEVJTlZBTCwgIlRhcmdldCBw cm9ibGVtIiB9LA0KLQkgICAgLyogRUlOVkFMIGZvciBDSEVDSyBwcm9iYWJs eSBtZWFucyBiYWQgaW50ZXJmYWNlLiAqLw0KLQkgICAgeyBUQ19DSEVDS19Q QUNLRVQsIEVJTlZBTCwNCi0JICAgICAgIkJhZCBhcmd1bWVudHMgKGRvZXMg dGhhdCBpbnRlcmZhY2UgZXhpc3Q/KSIgfSwNCi0JICAgIHsgVENfQ0hFQ0tf UEFDS0VULCBFTk9TWVMsDQorCSAgeyB7IFFGKFRDX0FQUEVORF9FTlRSWSks IEVOT0VOVCwgIk5vIGNoYWluIGJ5IHRoYXQgbmFtZSIgfSwNCisJICAgIHsg UUYoVENfQ0hFQ0tfUEFDS0VUKSwgRU5PU1lTLA0KIAkgICAgICAiQ2hlY2tp bmcgd2lsbCBtb3N0IGxpa2VseSBuZXZlciBnZXQgaW1wbGVtZW50ZWQiIH0s DQotCSAgICAvKiBFTk9FTlQgZm9yIERFTEVURSBwcm9iYWJseSBtZWFucyBu byBtYXRjaGluZyBydWxlICovDQotCSAgICB7IFRDX0RFTEVURV9FTlRSWSwg RU5PRU5ULA0KKwkgICAgeyBRRihUQ19DT01NSVQpLCBFSU5WQUwsICJUYWJs ZSBjb21waWxhdGlvbiBmYWlsZWQiIH0sDQorCSAgICB7IFFGKFRDX0NPTU1J VCksIEVMT09QLCAiTG9vcCBmb3VuZCBpbiB0YWJsZSIgfSwNCisJICAgIHsg UUYoVENfQ09NTUlUKSwgRVBFUk0sICJQZXJtaXNzaW9uIGRlbmllZCAoeW91 IG11c3QgYmUgcm9vdCkiIH0sDQorCSAgICB7IFFGKFRDX0NSRUFURV9DSEFJ TiksIEVFWElTVCwgIkNoYWluIGFscmVhZHkgZXhpc3RzIiB9LA0KKwkgICAg eyBRRihUQ19DUkVBVEVfQ0hBSU4pLCBFMkJJRywgIkNoYWluIG5hbWUgdG9v IGxvbmciIH0sDQorCSAgICB7IFFGKFRDX0RFTEVURV9DSEFJTiksIEVOT1RF TVBUWSwgIkNoYWluIGlzIG5vdCBlbXB0eSIgfSwNCisJICAgIHsgUUYoVENf REVMRVRFX0NIQUlOKSwgRUlOVkFMLCAiQ2FuJ3QgZGVsZXRlIGJ1aWx0LWlu IGNoYWluIiB9LA0KKwkgICAgeyBRRihUQ19ERUxFVEVfQ0hBSU4pLCBFTUxJ TkssDQorCSAgICAgICJDYW4ndCBkZWxldGUgY2hhaW4gd2l0aCByZWZlcmVu Y2VzIGxlZnQiIH0sDQorCSAgICB7IFFGKFRDX0RFTEVURV9DSEFJTiksIEVO T0VOVCwgIk5vIGNoYWluIGJ5IHRoYXQgbmFtZSIgfSwNCisJICAgIHsgUUYo VENfREVMRVRFX0NIQUlOKSwgRU5PU1lTLCAiQ291bGRuJ3QgZ2V0IHJlZmVy ZW5jZSBsaXN0IGZvciBjaGFpbiIgfSwNCisJICAgIHsgUUYoVENfREVMRVRF X0VOVFJZKSwgRU5PRU5ULCAiTm8gY2hhaW4gYnkgdGhhdCBuYW1lIiB9LA0K KwkgICAgeyBRRihUQ19ERUxFVEVfRU5UUlkpLCBFSU5WQUwsDQogCSAgICAg ICJCYWQgcnVsZSAoZG9lcyBhIG1hdGNoaW5nIHJ1bGUgZXhpc3QgaW4gdGhh dCBjaGFpbj8pIiB9LA0KLQkgICAgeyBUQ19TRVRfUE9MSUNZLCBFTk9FTlQs DQotCSAgICAgICJCYWQgYnVpbHQtaW4gY2hhaW4gbmFtZSIgfSwNCi0JICAg IHsgVENfU0VUX1BPTElDWSwgRUlOVkFMLA0KLQkgICAgICAiQmFkIHBvbGlj eSBuYW1lIiB9LA0KKwkgICAgeyBRRihUQ19ERUxFVEVfTlVNX0VOVFJZKSwg RU5PRU5ULCAiTm8gY2hhaW4gYnkgdGhhdCBuYW1lIiB9LA0KKwkgICAgeyBR RihUQ19ERUxFVEVfTlVNX0VOVFJZKSwgRTJCSUcsICJJbmRleCBvZiBkZWxl dGlvbiB0b28gYmlnIiB9LA0KKwkgICAgeyBRRihUQ19GSVJTVF9DSEFJTiks IEVOT0VOVCwgIk5vIGNoYWlucyB0byBiZSBmb3VuZCIgfSwNCisJICAgIHsg UUYoVENfRklSU1RfUlVMRSksIEVOT0VOVCwgIk5vIGNoYWluIGJ5IHRoYXQg bmFtZSIgfSwNCisJICAgIHsgUUYoVENfRkxVU0hfRU5UUklFUyksIEVOT0VO VCwgIk5vIGNoYWluIGJ5IHRoYXQgbmFtZSIgfSwNCisJICAgIHsgUUYoVENf R0VUX1BPTElDWSksIEVOT0VOVCwgIk5vIGNoYWluIGJ5IHRoYXQgbmFtZSIg fSwNCisJICAgIHsgUUYoVENfR0VUX1JFRkVSRU5DRVMpLCBFTk9FTlQsICJO byBjaGFpbiBieSB0aGF0IG5hbWUiIH0sDQorCSAgICB7IFFGKFRDX0dFVF9S VUxFKSwgRU5PRU5ULCAiTm8gY2hhaW4gYnkgdGhhdCBuYW1lIiB9LA0KKwkg ICAgeyBRRihUQ19JTklUKSwgRVBFUk0sICJQZXJtaXNzaW9uIGRlbmllZCAo eW91IG11c3QgYmUgcm9vdCkiIH0sDQorCSAgICB7IFFGKFRDX0lOSVQpLCBF SU5WQUwsICJNb2R1bGUgaXMgd3JvbmcgdmVyc2lvbiIgfSwNCisJICAgIHsg UUYoVENfSU5JVCksIEUyQklHLCAiVGFibGUgbmFtZSB0b28gbG9uZyIgfSwN CisJICAgIHsgUUYoVENfSU5JVCksIEVOT0VOVCwgDQorCQkgICAgIlRhYmxl IGRvZXMgbm90IGV4aXN0IChkbyB5b3UgbmVlZCB0byBpbnNtb2Q/KSIgfSwN CisJICAgIHsgUUYoVENfSU5TRVJUX0VOVFJZKSwgRTJCSUcsICJJbmRleCBv ZiBpbnNlcnRpb24gdG9vIGJpZyIgfSwNCisJICAgIHsgUUYoVENfSU5TRVJU X0VOVFJZKSwgRU5PRU5ULCAiTm8gY2hhaW4gYnkgdGhhdCBuYW1lIiB9LA0K KwkgICAgeyBRRihUQ19OVU1fUlVMRVMpLCBFTk9FTlQsICJObyBjaGFpbiBi eSB0aGF0IG5hbWUiIH0sDQorCSAgICB7IFFGKFRDX1JFQURfQ09VTlRFUiks IEUyQklHLCAiSW5kZXggb2YgY291bnRlciByZWFkIHRvbyBiaWciIH0sDQor CSAgICB7IFFGKFRDX1JFQURfQ09VTlRFUiksIEVOT0VOVCwgIk5vIGNoYWlu IGJ5IHRoYXQgbmFtZSIgfSwNCisJICAgIHsgUUYoVENfUkVOQU1FX0NIQUlO KSwgRTJCSUcsICJDaGFpbiBuYW1lIHRvbyBsb25nIiB9LA0KKwkgICAgeyBR RihUQ19SRU5BTUVfQ0hBSU4pLCBFTk9FTlQsICJObyBjaGFpbiBieSB0aGF0 IG5hbWUiIH0sDQorCSAgICB7IFFGKFRDX1JFTkFNRV9DSEFJTiksIEVFWElT VCwgIkNoYWluIGFscmVhZHkgZXhpc3RzIiB9LA0KKwkgICAgeyBRRihUQ19S RVBMQUNFX0VOVFJZKSwgRTJCSUcsICJJbmRleCBvZiByZXBsYWNlbWVudCB0 b28gYmlnIiB9LA0KKwkgICAgeyBRRihUQ19SRVBMQUNFX0VOVFJZKSwgRU5P RU5ULCAiTm8gY2hhaW4gYnkgdGhhdCBuYW1lIiB9LA0KKwkgICAgeyBRRihU Q19TRVRfQ09VTlRFUiksIEUyQklHLCAiSW5kZXggb2YgY291bnRlciB0b28g YmlnIiB9LA0KKwkgICAgeyBRRihUQ19TRVRfQ09VTlRFUiksIEVOT0VOVCwg Ik5vIGNoYWluIGJ5IHRoYXQgbmFtZSIgfSwNCisJICAgIHsgUUYoVENfU0VU X1BPTElDWSksIEVOT0VOVCwgIkJhZCBidWlsdC1pbiBjaGFpbiBuYW1lIiB9 LA0KKwkgICAgeyBRRihUQ19TRVRfUE9MSUNZKSwgRUlOVkFMLCAiQmFkIHBv bGljeSBuYW1lIiB9LA0KKwkgICAgeyBRRihUQ19aRVJPX0NPVU5URVIpLCBF MkJJRywgIkluZGV4IG9mIGNvdW50ZXIgdG9vIGJpZyIgfSwNCisJICAgIHsg UUYoVENfWkVST19DT1VOVEVSKSwgRU5PRU5ULCAiTm8gY2hhaW4gYnkgdGhh dCBuYW1lIiB9LA0KKwkgICAgeyBRRihUQ19aRVJPX0VOVFJJRVMpLCBFTk9F TlQsICJObyBjaGFpbiBieSB0aGF0IG5hbWUiIH0sDQorDQorCSAgICB7IFFG KGNhY2hlX2FkZF9lbnRyeSksIEVJTlZBTCwgIlRhcmdldCBwcm9ibGVtIiB9 LA0KKwkgICAgeyBRRihpcHRjY19tYXBfdGFyZ2V0KSwgRUlOVkFMLCAiQ2Fu J3QganVtcCB0byBhIGJ1aWx0LWluIHRhcmdldCIgfSwNCisJICAgIHsgUUYo aXB0Y2Nfc3RhbmRhcmRfbWFwKSwgRUlOVkFMLCAiVGFyZ2V0IHByb2JsZW0i IH0sDQorCSAgICB7IFFGKGxpc3RfZW50cmllcyksIEVOT0VOVCwgIk5vIGNo YWluIGJ5IHRoYXQgbmFtZSIgfSwNCiANCi0JICAgIHsgTlVMTCwgMCwgIklu Y29tcGF0aWJsZSB3aXRoIHRoaXMga2VybmVsIiB9LA0KIAkgICAgeyBOVUxM LCBFTk9QUk9UT09QVCwgImlwdGFibGVzIHdobz8gKGRvIHlvdSBuZWVkIHRv IGluc21vZD8pIiB9LA0KLQkgICAgeyBOVUxMLCBFTk9TWVMsICJXaWxsIGJl IGltcGxlbWVudGVkIHJlYWwgc29vbi4gIEkgcHJvbWlzZSA7KSIgfSwNCiAJ ICAgIHsgTlVMTCwgRU5PTUVNLCAiTWVtb3J5IGFsbG9jYXRpb24gcHJvYmxl bSIgfSwNCi0JICAgIHsgTlVMTCwgRU5PRU5ULCAiTm8gY2hhaW4vdGFyZ2V0 L21hdGNoIGJ5IHRoYXQgbmFtZSIgfSwNCiAJICB9Ow0KKwkgIA0KKwlpZiAo IXN0cmxlbihpcHRjX2VycmZuKSkNCisJCXJldHVybiAiU29tZXRoaW5nIGZv cmdvdCB0byBzZXQgdGhlIGVycm9yIHJlYXNvbiI7DQogDQogCWZvciAoaSA9 IDA7IGkgPCBzaXplb2YodGFibGUpL3NpemVvZihzdHJ1Y3QgdGFibGVfc3Ry dWN0KTsgaSsrKSB7DQotCQlpZiAoKCF0YWJsZVtpXS5mbiB8fCB0YWJsZVtp XS5mbiA9PSBpcHRjX2ZuKQ0KLQkJICAgICYmIHRhYmxlW2ldLmVyciA9PSBl cnIpDQorCQlpZiAoKCF0YWJsZVtpXS5mbiB8fCAhc3RyY21wKHRhYmxlW2ld LmZuLCBpcHRjX2VycmZuKSkNCisJCSAgICAmJiB0YWJsZVtpXS5lcnIgPT0g aXB0Y19lcnJubykNCiAJCQlyZXR1cm4gdGFibGVbaV0ubWVzc2FnZTsNCiAJ fQ0KIA0KLQlyZXR1cm4gc3RyZXJyb3IoZXJyKTsNCisJbGVuZ3RoID0gc25w cmludGYoc3RyYnVmLCAyNTYsICJVbmtub3duIGVycm9yLCAlczogJWkiLCBp cHRjX2VycmZuLCBpcHRjX2Vycm5vKTsNCisNCisJLyogQXZvaWQgcHJpbnRp bmcgIihTdWNjZXNzKSIgKi8NCisJaWYgKGlwdGNfZXJybm8pDQorCQlzbnBy aW50ZihzdHJidWYgKyBsZW5ndGgsIDI1NiAtIGxlbmd0aCwgIiAoJXMpIiwg c3RyZXJyb3IoaXB0Y19lcnJubykpOw0KKw0KKwlyZXR1cm4gc3RyYnVmOw0K IH0NCg== ---1017779964-335938581-1189500140=:17234--