From owner-svn-src-all@freebsd.org Tue Oct 15 15:54:23 2019 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0A78B14B853; Tue, 15 Oct 2019 15:54:23 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46t0NY5nzXz4PkB; Tue, 15 Oct 2019 15:54:21 +0000 (UTC) (envelope-from ohartmann@walstatt.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1571154854; bh=7aL/U2L5iuzCdCZyMR6oWuX5vARcPzO06SLuukVu42c=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=ePqWeI8q2cJH5ofaLmFiTawpT5ZOQgG+3JOB0sYyqsYjAnCcLHvfipa8FfJRjtysw 71SWW0HMpFOYI6e1UIP2oOdMtgSBAxlfBqVfPwkpAYypls6EKmnNYLwNBaY4eB18zd IeRNh0OoI919520kwsFhX/Ej/eP/6LfluFRJoeNs= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from thor.intern.walstatt.dynvpn.de ([77.191.155.27]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MatVh-1hnX2b1D1X-00cTJ6; Tue, 15 Oct 2019 17:54:14 +0200 Date: Tue, 15 Oct 2019 17:53:39 +0200 From: "O. Hartmann" To: Andriy Gapon Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r353565 - in head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys Message-ID: <20191015175357.3ee91a1c@thor.intern.walstatt.dynvpn.de> In-Reply-To: <201910151509.x9FF9a2B031347@repo.freebsd.org> References: <201910151509.x9FF9a2B031347@repo.freebsd.org> Organization: WALSTATT User-Agent: OutScare 3.1415926 X-Operating-System: ImNotAnOperatingSystem 3.141592527 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:NhcWL/brajS0YKzXYMGMyVhZBGFi5LXs2F8nYueFbeBfXLttfHu dPBcrUyUBmEWd+jD9JNqD05GwmuD47EdV1fRP4C0a7lEV916s1ZvqAv7lRW2aKtLwjSkhjA gSsUOLRotW/18EZ26HoubLSVmYRp29SnaBRxCsGjgutmQB9ODHBT06xHNwH6zYfbDsLCLeL Vy4rjTyEqILZliAnRxtwQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:KKfgG8DC4NU=:JAHjXzdsRK394m4mPmETdT 13UODzo1rMbllJ/tkMeL/CMZgiAF7q6M1zYjrbDv5ptS/wgLa72SDoVlqxcw26OSirYKdZ5AY knlTHzD1OTDSWVu1BfW04q6lq/GQgx0kTL/wGuRK2XQlISZ2hhz+muTLv51xxUtdqT/EPhEFg Eaj8DI5Ke1On6nXoKrOP6fRl/CNncw4/hiIDE+jx09ehTReFFfo/EIcDVldkHqlmNfTyBeNSp paCMxvGKM/P0Jecju2Akk7IQ5aUB2J9ahtcse29Iv6tC0Llck0BuE0tphx0h6KUNawGiIPQRD 0S/x4U0U5tLSh3Tw733ZbHtOQOUuzywmInJxGh/+/Pa/SlIB62kkJp8Dh1uOz4e6dgzx9TODs IxzNvYNfojmEICPLIaG3VINL8yG/cHyaQanMAMU3Um19xcV8vzl/r9Gzi65DUajU8Cqlq1CgX MvUfEA5r0pbDyI9MH0yg/U37Q2a/613ZbRwBGMmdP2s3SYrGr8DkIDmW7RHW/FwUrzAsU6EDe 8+BWXHcm3+J8XA3kFM/SfyhimRbSgPwrVt3Xh4i0DrRzmTrR/fB35F+Gpxv13pLbo0at9dbaI MUxjjNBm7Bc+kXYsKLYEj5a+3LhgDanw2qYzNlM0c8ZhmHEGbpmtFkXwTuwJvIpPNc4tOc+ux m14mEmniO5k7CsZhHZmpluN2yLq96muJVFxMuTWToPolqvVLL3H2hJlRLTjr4JVnkEISW7d19 GxlA2r5lOcyjTegEN0rkoVejQOIY5FQTdZaEsy6eRcnn3O9PhCOHvcwRDeR5sMBBUz/4Nztlc WabqU0i6j/ao4VdPIPLKmZwvO2F2GiojeLOAqF0CurB9b5SE8WQl+wMHVZkRq5X3FPvQdrqD/ 21hETope71CjwNr8Nl3ttho06hRM60oEtf+U5T7mMF8dJu0WNK3hRMhR02U4kLQ4yPlYg8Msi aitqnLfLZgIQ+N6lZjPTEhKwWa43H7QtKJrgQsXTxDaRpFoZeSPd30WXr0pbIAMPVrOzGLo5j n35HhxuDlFXydFgCP+wBKBeeJgNBMqcONLn64Kg7lyavYC0BoiLp+F2ltnjNbNEp/cCco4P4m PuUw2xTKkKB2Nzh1MaLu5gAYHtFRz/5EO1HVY25a6lbB6nJTKNeMCI3ltO6BzhaimQyOfFFoq eqHfx61Gfh1+I1qe2DvHa/mmzQLiUITtnCNnsnL4Ice3+alH55G9EpfJo4FzKRE14jX/dsjhd jPvLoavTQq+fM2uwDIyMYeOPBr1WdMVGri4BK8Te4/fMCN1sWrdihgvT6OxE= X-Rspamd-Queue-Id: 46t0NY5nzXz4PkB X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmx.net header.s=badeba3b8450 header.b=ePqWeI8q; dmarc=none; spf=none (mx1.freebsd.org: domain of ohartmann@walstatt.org has no SPF policy when checking 212.227.15.18) smtp.mailfrom=ohartmann@walstatt.org X-Spamd-Result: default: False [-3.52 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[gmx.net:s=badeba3b8450]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[walstatt.org]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; HAS_ORG_HEADER(0.00)[]; IP_SCORE(-1.32)[ip: (-7.30), ipnet: 212.227.0.0/16(-1.30), asn: 8560(2.02), country: DE(-0.01)]; DKIM_TRACE(0.00)[gmx.net:+]; MIME_BASE64_TEXT(0.10)[]; RCVD_IN_DNSWL_NONE(0.00)[18.15.227.212.list.dnswl.org : 127.0.3.0]; R_SPF_NA(0.00)[]; RECEIVED_SPAMHAUS_PBL(0.00)[27.155.191.77.khpj7ygk5idzvmvt5x4ziurxhy.zen.dq.spamhaus.net : 127.0.0.10]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:8560, ipnet:212.227.0.0/16, country:DE]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Oct 2019 15:54:23 -0000 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMjU2DQoNCkFtIFR1 ZSwgMTUgT2N0IDIwMTkgMTU6MDk6MzYgKzAwMDAgKFVUQykNCkFuZHJpeSBHYXBvbiA8YXZnQEZy ZWVCU0Qub3JnPiBzY2hyaWViOg0KDQo+IEF1dGhvcjogYXZnDQo+IERhdGU6IFR1ZSBPY3QgMTUg MTU6MDk6MzYgMjAxOQ0KPiBOZXcgUmV2aXNpb246IDM1MzU2NQ0KPiBVUkw6IGh0dHBzOi8vc3Zu d2ViLmZyZWVic2Qub3JnL2NoYW5nZXNldC9iYXNlLzM1MzU2NQ0KPiANCj4gTG9nOg0KPiAgIE1G ViByMzUzNTYxOiAxMDM0MyBab0w6IFByZWZpeCBhbGwgcmVmY291bnQgZnVuY3Rpb25zIHdpdGgg emZzXw0KPiAgIA0KPiAgIGlsbHVtb3MvaWxsdW1vcy1nYXRlQGU5MTRhY2UyZTlkOWJmMmRiZjlh MWYxY2U4MWNiNzc2MDIyMDk2ZjUNCj4gICBodHRwczovL2dpdGh1Yi5jb20vaWxsdW1vcy9pbGx1 bW9zLWdhdGUvY29tbWl0L2U5MTRhY2UyZTlkOWJmMmRiZjlhMWYxY2U4MWNiNzc2MDIyMDk2ZjUN Cj4gICANCj4gICBodHRwczovL3d3dy5pbGx1bW9zLm9yZy9pc3N1ZXMvMTAzNDMNCj4gICAgIE9u IHRoZSBvcGVuemZzIGZlYXR1cmUvcG9ydGluZyBtYXRyaXgsIHRoaXMgaXMgbGlzdGVkIGFzOg0K PiAgICAgcHJlZml4IHRvIHJlZmNvdW50IGZ1bmNzL3R5cGVzDQo+ICAgICBIYXZpbmcgdGhlc2Ug Y2hhbmdlcyB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIHNoYXJlIG90aGVyIHdvcmsgYWNyb3NzIHRo ZQ0KPiAgICAgZGlmZmVyZW50IFpGUyBvcGVyYXRpbmcgc3lzdGVtcy4NCj4gICAgIFBSIDc5NjMg NDI0ZmQ3YzNlIFByZWZpeCBhbGwgcmVmY291bnQgZnVuY3Rpb25zIHdpdGggemZzXw0KPiAgICAg UFIgNzg4NSAmIDc5MzIgYzEzMDYwZTQ3IExpbnV4IDQuMTktcmMzKyBjb21wYXQ6IFJlbW92ZSBy ZWZjb3VudF90IGNvbXBhdA0KPiAgICAgUFIgNTgyMyAmIDU4NDIgNDg1OWZlNzk2IExpbnV4IDQu MTEgY29tcGF0OiBhdm9pZCByZWZjb3VudF90IG5hbWUgY29uZmxpY3QNCj4gICANCj4gICBBdXRo b3I6IFRpbSBTY2h1bWFjaGVyIDx0aW1zY2h1bWlAZ214LmRlPg0KPiAgIE9idGFpbmVkIGZyb206 CWlsbHVtb3MsIFpvTA0KPiAgIE1GQyBhZnRlcjoJMyB3ZWVrcw0KPiANCj4gTW9kaWZpZWQ6DQo+ ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL2Fi ZC5jDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMv emZzL2FyYy5jDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21t b24vZnMvemZzL2RidWYuYw0KPiAgIGhlYWQvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91 dHMvY29tbW9uL2ZzL3pmcy9kbXUuYw0KPiAgIGhlYWQvc3lzL2NkZGwvY29udHJpYi9vcGVuc29s YXJpcy91dHMvY29tbW9uL2ZzL3pmcy9kbXVfdHguYw0KPiAgIGhlYWQvc3lzL2NkZGwvY29udHJp Yi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9kbm9kZS5jDQo+ICAgaGVhZC9zeXMvY2Rk bC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL2Rub2RlX3N5bmMuYw0KPiAg IGhlYWQvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9kc2xf ZGF0YXNldC5jDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21t b24vZnMvemZzL2RzbF9kZXN0cm95LmMNCj4gICBoZWFkL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNv bGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvbWV0YXNsYWIuYw0KPiAgIGhlYWQvc3lzL2NkZGwvY29u dHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9yZWZjb3VudC5jDQo+ICAgaGVhZC9z eXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3Jyd2xvY2suYw0K PiAgIGhlYWQvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9z YS5jDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMv emZzL3NwYS5jDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21t b24vZnMvemZzL3NwYV9taXNjLmMNCj4gICBoZWFkL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFy aXMvdXRzL2NvbW1vbi9mcy96ZnMvc3lzL2FiZC5oDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250cmli L29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3N5cy9kYnVmLmgNCj4gICBoZWFkL3N5cy9j ZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvc3lzL2RtdV90eC5oDQo+ ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3N5 cy9kbm9kZS5oDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21t b24vZnMvemZzL3N5cy9kc2xfZGF0YXNldC5oDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250cmliL29w ZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3N5cy9tZXRhc2xhYl9pbXBsLmgNCj4gICBoZWFk L3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvc3lzL3JlZmNv dW50LmgNCj4gICBoZWFkL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9m cy96ZnMvc3lzL3Jyd2xvY2suaA0KPiAgIGhlYWQvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJp cy91dHMvY29tbW9uL2ZzL3pmcy9zeXMvc2FfaW1wbC5oDQo+ICAgaGVhZC9zeXMvY2RkbC9jb250 cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3N5cy9zcGFfaW1wbC5oDQo+ICAgaGVh ZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3N5cy96YXAu aA0KPiAgIGhlYWQvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pm cy96aW8uYw0KPiBEaXJlY3RvcnkgUHJvcGVydGllczoNCj4gICBoZWFkL3N5cy9jZGRsL2NvbnRy aWIvb3BlbnNvbGFyaXMvICAgKHByb3BzIGNoYW5nZWQpDQo+IA0KPiBNb2RpZmllZDogaGVhZC9z eXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL2FiZC5jDQo+ID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KPiAtLS0gaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xh cmlzL3V0cy9jb21tb24vZnMvemZzL2FiZC5jCVR1ZSBPY3QgMTUgMTQ6NTE6MjINCj4gMjAxOQko cjM1MzU2NCkgKysrIGhlYWQvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9u L2ZzL3pmcy9hYmQuYw0KPiBUdWUgT2N0IDE1IDE1OjA5OjM2IDIwMTkJKHIzNTM1NjUpIEBAIC0z MDQsNyArMzA0LDcgQEAgYWJkX2FsbG9jKHNpemVfdCBzaXplLA0KPiBib29sZWFuX3QgaXNfbWV0 YWRhdGEpIH0NCj4gIAlhYmQtPmFiZF9zaXplID0gc2l6ZTsNCj4gIAlhYmQtPmFiZF9wYXJlbnQg PSBOVUxMOw0KPiAtCXJlZmNvdW50X2NyZWF0ZSgmYWJkLT5hYmRfY2hpbGRyZW4pOw0KPiArCXpm c19yZWZjb3VudF9jcmVhdGUoJmFiZC0+YWJkX2NoaWxkcmVuKTsNCj4gIA0KPiAgCWFiZC0+YWJk X3UuYWJkX3NjYXR0ZXIuYWJkX29mZnNldCA9IDA7DQo+ICAJYWJkLT5hYmRfdS5hYmRfc2NhdHRl ci5hYmRfY2h1bmtfc2l6ZSA9IHpmc19hYmRfY2h1bmtfc2l6ZTsNCj4gQEAgLTMzMSw3ICszMzEs NyBAQCBhYmRfZnJlZV9zY2F0dGVyKGFiZF90ICphYmQpDQo+ICAJCWFiZF9mcmVlX2NodW5rKGFi ZC0+YWJkX3UuYWJkX3NjYXR0ZXIuYWJkX2NodW5rc1tpXSk7DQo+ICAJfQ0KPiAgDQo+IC0JcmVm Y291bnRfZGVzdHJveSgmYWJkLT5hYmRfY2hpbGRyZW4pOw0KPiArCXpmc19yZWZjb3VudF9kZXN0 cm95KCZhYmQtPmFiZF9jaGlsZHJlbik7DQo+ICAJQUJEU1RBVF9CVU1QRE9XTihhYmRzdGF0X3Nj YXR0ZXJfY250KTsNCj4gIAlBQkRTVEFUX0lOQ1IoYWJkc3RhdF9zY2F0dGVyX2RhdGFfc2l6ZSwg LShpbnQpYWJkLT5hYmRfc2l6ZSk7DQo+ICAJQUJEU1RBVF9JTkNSKGFiZHN0YXRfc2NhdHRlcl9j aHVua193YXN0ZSwNCj4gQEAgLTM1OCw3ICszNTgsNyBAQCBhYmRfYWxsb2NfbGluZWFyKHNpemVf dCBzaXplLCBib29sZWFuX3QgaXNfbWV0YWRhdGEpDQo+ICAJfQ0KPiAgCWFiZC0+YWJkX3NpemUg PSBzaXplOw0KPiAgCWFiZC0+YWJkX3BhcmVudCA9IE5VTEw7DQo+IC0JcmVmY291bnRfY3JlYXRl KCZhYmQtPmFiZF9jaGlsZHJlbik7DQo+ICsJemZzX3JlZmNvdW50X2NyZWF0ZSgmYWJkLT5hYmRf Y2hpbGRyZW4pOw0KPiAgDQo+ICAJaWYgKGlzX21ldGFkYXRhKSB7DQo+ICAJCWFiZC0+YWJkX3Uu YWJkX2xpbmVhci5hYmRfYnVmID0gemlvX2J1Zl9hbGxvYyhzaXplKTsNCj4gQEAgLTM4MSw3ICsz ODEsNyBAQCBhYmRfZnJlZV9saW5lYXIoYWJkX3QgKmFiZCkNCj4gIAkJemlvX2RhdGFfYnVmX2Zy ZWUoYWJkLT5hYmRfdS5hYmRfbGluZWFyLmFiZF9idWYsIGFiZC0+YWJkX3NpemUpOw0KPiAgCX0N Cj4gIA0KPiAtCXJlZmNvdW50X2Rlc3Ryb3koJmFiZC0+YWJkX2NoaWxkcmVuKTsNCj4gKwl6ZnNf cmVmY291bnRfZGVzdHJveSgmYWJkLT5hYmRfY2hpbGRyZW4pOw0KPiAgCUFCRFNUQVRfQlVNUERP V04oYWJkc3RhdF9saW5lYXJfY250KTsNCj4gIAlBQkRTVEFUX0lOQ1IoYWJkc3RhdF9saW5lYXJf ZGF0YV9zaXplLCAtKGludClhYmQtPmFiZF9zaXplKTsNCj4gIA0KPiBAQCAtNDg3LDggKzQ4Nyw4 IEBAIGFiZF9nZXRfb2Zmc2V0KGFiZF90ICpzYWJkLCBzaXplX3Qgb2ZmKQ0KPiAgDQo+ICAJYWJk LT5hYmRfc2l6ZSA9IHNhYmQtPmFiZF9zaXplIC0gb2ZmOw0KPiAgCWFiZC0+YWJkX3BhcmVudCA9 IHNhYmQ7DQo+IC0JcmVmY291bnRfY3JlYXRlKCZhYmQtPmFiZF9jaGlsZHJlbik7DQo+IC0JKHZv aWQpIHJlZmNvdW50X2FkZF9tYW55KCZzYWJkLT5hYmRfY2hpbGRyZW4sIGFiZC0+YWJkX3NpemUs IGFiZCk7DQo+ICsJemZzX3JlZmNvdW50X2NyZWF0ZSgmYWJkLT5hYmRfY2hpbGRyZW4pOw0KPiAr CSh2b2lkKSB6ZnNfcmVmY291bnRfYWRkX21hbnkoJnNhYmQtPmFiZF9jaGlsZHJlbiwgYWJkLT5h YmRfc2l6ZSwgYWJkKTsNCj4gIA0KPiAgCXJldHVybiAoYWJkKTsNCj4gIH0NCj4gQEAgLTUxMiw3 ICs1MTIsNyBAQCBhYmRfZ2V0X2Zyb21fYnVmKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpDQo+ICAJ YWJkLT5hYmRfZmxhZ3MgPSBBQkRfRkxBR19MSU5FQVI7DQo+ICAJYWJkLT5hYmRfc2l6ZSA9IHNp emU7DQo+ICAJYWJkLT5hYmRfcGFyZW50ID0gTlVMTDsNCj4gLQlyZWZjb3VudF9jcmVhdGUoJmFi ZC0+YWJkX2NoaWxkcmVuKTsNCj4gKwl6ZnNfcmVmY291bnRfY3JlYXRlKCZhYmQtPmFiZF9jaGls ZHJlbik7DQo+ICANCj4gIAlhYmQtPmFiZF91LmFiZF9saW5lYXIuYWJkX2J1ZiA9IGJ1ZjsNCj4g IA0KPiBAQCAtNTMwLDExICs1MzAsMTEgQEAgYWJkX3B1dChhYmRfdCAqYWJkKQ0KPiAgCUFTU0VS VCghKGFiZC0+YWJkX2ZsYWdzICYgQUJEX0ZMQUdfT1dORVIpKTsNCj4gIA0KPiAgCWlmIChhYmQt PmFiZF9wYXJlbnQgIT0gTlVMTCkgew0KPiAtCQkodm9pZCkgcmVmY291bnRfcmVtb3ZlX21hbnko JmFiZC0+YWJkX3BhcmVudC0+YWJkX2NoaWxkcmVuLA0KPiArCQkodm9pZCkgemZzX3JlZmNvdW50 X3JlbW92ZV9tYW55KCZhYmQtPmFiZF9wYXJlbnQtPmFiZF9jaGlsZHJlbiwNCj4gIAkJICAgIGFi ZC0+YWJkX3NpemUsIGFiZCk7DQo+ICAJfQ0KPiAgDQo+IC0JcmVmY291bnRfZGVzdHJveSgmYWJk LT5hYmRfY2hpbGRyZW4pOw0KPiArCXpmc19yZWZjb3VudF9kZXN0cm95KCZhYmQtPmFiZF9jaGls ZHJlbik7DQo+ICAJYWJkX2ZyZWVfc3RydWN0KGFiZCk7DQo+ICB9DQo+ICANCj4gQEAgLTU2Niw3 ICs1NjYsNyBAQCBhYmRfYm9ycm93X2J1ZihhYmRfdCAqYWJkLCBzaXplX3QgbikNCj4gIAl9IGVs c2Ugew0KPiAgCQlidWYgPSB6aW9fYnVmX2FsbG9jKG4pOw0KPiAgCX0NCj4gLQkodm9pZCkgcmVm Y291bnRfYWRkX21hbnkoJmFiZC0+YWJkX2NoaWxkcmVuLCBuLCBidWYpOw0KPiArCSh2b2lkKSB6 ZnNfcmVmY291bnRfYWRkX21hbnkoJmFiZC0+YWJkX2NoaWxkcmVuLCBuLCBidWYpOw0KPiAgDQo+ ICAJcmV0dXJuIChidWYpOw0KPiAgfQ0KPiBAQCAtNTk4LDcgKzU5OCw3IEBAIGFiZF9yZXR1cm5f YnVmKGFiZF90ICphYmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IG4pDQo+ICAJCUFTU0VSVDAoYWJkX2Nt cF9idWYoYWJkLCBidWYsIG4pKTsNCj4gIAkJemlvX2J1Zl9mcmVlKGJ1Ziwgbik7DQo+ICAJfQ0K PiAtCSh2b2lkKSByZWZjb3VudF9yZW1vdmVfbWFueSgmYWJkLT5hYmRfY2hpbGRyZW4sIG4sIGJ1 Zik7DQo+ICsJKHZvaWQpIHpmc19yZWZjb3VudF9yZW1vdmVfbWFueSgmYWJkLT5hYmRfY2hpbGRy ZW4sIG4sIGJ1Zik7DQo+ICB9DQo+ICANCj4gIHZvaWQNCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5 cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvYXJjLmMNCj4gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+IC0tLSBoZWFkL3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFy aXMvdXRzL2NvbW1vbi9mcy96ZnMvYXJjLmMJVHVlIE9jdCAxNSAxNDo1MToyMg0KPiAyMDE5CShy MzUzNTY0KSArKysgaGVhZC9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24v ZnMvemZzL2FyYy5jDQo+IFR1ZSBPY3QgMTUgMTU6MDk6MzYgMjAxOQkocjM1MzU2NSkgQEAgLTUz OCwxMiArNTM4LDEyIEBAIHR5cGVkZWYgc3RydWN0IGFyY19zdGF0ZSB7DQo+ICAJLyoNCj4gIAkg KiB0b3RhbCBhbW91bnQgb2YgZXZpY3RhYmxlIGRhdGEgaW4gdGhpcyBzdGF0ZQ0KPiAgCSAqLw0K PiAtCXJlZmNvdW50X3QgYXJjc19lc2l6ZVtBUkNfQlVGQ19OVU1UWVBFU107DQo+ICsJemZzX3Jl ZmNvdW50X3QgYXJjc19lc2l6ZVtBUkNfQlVGQ19OVU1UWVBFU107DQo+ICAJLyoNCj4gIAkgKiB0 b3RhbCBhbW91bnQgb2YgZGF0YSBpbiB0aGlzIHN0YXRlOyB0aGlzIGluY2x1ZGVzOiBldmljdGFi bGUsDQo+ICAJICogbm9uLWV2aWN0YWJsZSwgQVJDX0JVRkNfREFUQSwgYW5kIEFSQ19CVUZDX01F VEFEQVRBLg0KPiAgCSAqLw0KPiAtCXJlZmNvdW50X3QgYXJjc19zaXplOw0KPiArCXpmc19yZWZj b3VudF90IGFyY3Nfc2l6ZTsNCj4gIAkvKg0KPiAgCSAqIHN1cHBvcnRzIHRoZSAiZGJ1ZnMiIGtz dGF0DQo+ICAJICovDQo+IEBAIC0xMTU4LDcgKzExNTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBsMWFy Y19idWZfaGRyIHsNCj4gIAl1aW50MzJfdAkJYl9sMl9oaXRzOw0KPiAgDQo+ICAJLyogc2VsZiBw cm90ZWN0aW5nICovDQo+IC0JcmVmY291bnRfdAkJYl9yZWZjbnQ7DQo+ICsJemZzX3JlZmNvdW50 X3QJCWJfcmVmY250Ow0KPiAgDQo+ICAJYXJjX2NhbGxiYWNrX3QJCSpiX2FjYjsNCj4gIAlhYmRf dAkJCSpiX3BhYmQ7DQo+IEBAIC0xNTM0LDcgKzE1MzQsNyBAQCBzdHJ1Y3QgbDJhcmNfZGV2IHsN Cj4gIAlrbXV0ZXhfdAkJbDJhZF9tdHg7CS8qIGxvY2sgZm9yIGJ1ZmZlciBsaXN0ICovDQo+ICAJ bGlzdF90CQkJbDJhZF9idWZsaXN0OwkvKiBidWZmZXIgbGlzdCAqLw0KPiAgCWxpc3Rfbm9kZV90 CQlsMmFkX25vZGU7CS8qIGRldmljZSBsaXN0IG5vZGUgKi8NCj4gLQlyZWZjb3VudF90CQlsMmFk X2FsbG9jOwkvKiBhbGxvY2F0ZWQgYnl0ZXMgKi8NCj4gKwl6ZnNfcmVmY291bnRfdAkJbDJhZF9h bGxvYzsJLyogYWxsb2NhdGVkIGJ5dGVzICovDQo+ICB9Ow0KPiAgDQo+ICBzdGF0aWMgbGlzdF90 IEwyQVJDX2Rldl9saXN0OwkJCS8qIGRldmljZSBsaXN0ICovDQo+IEBAIC0xNzY1LDcgKzE3NjUs NyBAQCBoZHJfZnVsbF9jb25zKHZvaWQgKnZidWYsIHZvaWQgKnVudXNlZCwgaW50IGttZmxhZykN Cj4gIA0KPiAgCWJ6ZXJvKGhkciwgSERSX0ZVTExfU0laRSk7DQo+ICAJY3ZfaW5pdCgmaGRyLT5i X2wxaGRyLmJfY3YsIE5VTEwsIENWX0RFRkFVTFQsIE5VTEwpOw0KPiAtCXJlZmNvdW50X2NyZWF0 ZSgmaGRyLT5iX2wxaGRyLmJfcmVmY250KTsNCj4gKwl6ZnNfcmVmY291bnRfY3JlYXRlKCZoZHIt PmJfbDFoZHIuYl9yZWZjbnQpOw0KPiAgCW11dGV4X2luaXQoJmhkci0+Yl9sMWhkci5iX2ZyZWV6 ZV9sb2NrLCBOVUxMLCBNVVRFWF9ERUZBVUxULCBOVUxMKTsNCj4gIAltdWx0aWxpc3RfbGlua19p bml0KCZoZHItPmJfbDFoZHIuYl9hcmNfbm9kZSk7DQo+ICAJYXJjX3NwYWNlX2NvbnN1bWUoSERS X0ZVTExfU0laRSwgQVJDX1NQQUNFX0hEUlMpOw0KPiBAQCAtMTgxMCw3ICsxODEwLDcgQEAgaGRy X2Z1bGxfZGVzdCh2b2lkICp2YnVmLCB2b2lkICp1bnVzZWQpDQo+ICANCj4gIAlBU1NFUlQoSERS X0VNUFRZKGhkcikpOw0KPiAgCWN2X2Rlc3Ryb3koJmhkci0+Yl9sMWhkci5iX2N2KTsNCj4gLQly ZWZjb3VudF9kZXN0cm95KCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpOw0KPiArCXpmc19yZWZjb3Vu dF9kZXN0cm95KCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpOw0KPiAgCW11dGV4X2Rlc3Ryb3koJmhk ci0+Yl9sMWhkci5iX2ZyZWV6ZV9sb2NrKTsNCj4gIAlBU1NFUlQoIW11bHRpbGlzdF9saW5rX2Fj dGl2ZSgmaGRyLT5iX2wxaGRyLmJfYXJjX25vZGUpKTsNCj4gIAlhcmNfc3BhY2VfcmV0dXJuKEhE Ul9GVUxMX1NJWkUsIEFSQ19TUEFDRV9IRFJTKTsNCj4gQEAgLTI0OTUsMjEgKzI0OTUsMjEgQEAg YXJjX2V2aWN0YWJsZV9zcGFjZV9pbmNyZW1lbnQoYXJjX2J1Zl9oZHJfdCAqaGRyLCBhcmNfDQo+ ICAJCUFTU0VSVDAoaGRyLT5iX2wxaGRyLmJfYnVmY250KTsNCj4gIAkJQVNTRVJUM1AoaGRyLT5i X2wxaGRyLmJfYnVmLCA9PSwgTlVMTCk7DQo+ICAJCUFTU0VSVDNQKGhkci0+Yl9sMWhkci5iX3Bh YmQsID09LCBOVUxMKTsNCj4gLQkJKHZvaWQpIHJlZmNvdW50X2FkZF9tYW55KCZzdGF0ZS0+YXJj c19lc2l6ZVt0eXBlXSwNCj4gKwkJKHZvaWQpIHpmc19yZWZjb3VudF9hZGRfbWFueSgmc3RhdGUt PmFyY3NfZXNpemVbdHlwZV0sDQo+ICAJCSAgICBIRFJfR0VUX0xTSVpFKGhkciksIGhkcik7DQo+ ICAJCXJldHVybjsNCj4gIAl9DQo+ICANCj4gIAlBU1NFUlQoIUdIT1NUX1NUQVRFKHN0YXRlKSk7 DQo+ICAJaWYgKGhkci0+Yl9sMWhkci5iX3BhYmQgIT0gTlVMTCkgew0KPiAtCQkodm9pZCkgcmVm Y291bnRfYWRkX21hbnkoJnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdLA0KPiArCQkodm9pZCkgemZz X3JlZmNvdW50X2FkZF9tYW55KCZzdGF0ZS0+YXJjc19lc2l6ZVt0eXBlXSwNCj4gIAkJICAgIGFy Y19oZHJfc2l6ZShoZHIpLCBoZHIpOw0KPiAgCX0NCj4gIAlmb3IgKGFyY19idWZfdCAqYnVmID0g aGRyLT5iX2wxaGRyLmJfYnVmOyBidWYgIT0gTlVMTDsNCj4gIAkgICAgYnVmID0gYnVmLT5iX25l eHQpIHsNCj4gIAkJaWYgKGFyY19idWZfaXNfc2hhcmVkKGJ1ZikpDQo+ICAJCQljb250aW51ZTsN Cj4gLQkJKHZvaWQpIHJlZmNvdW50X2FkZF9tYW55KCZzdGF0ZS0+YXJjc19lc2l6ZVt0eXBlXSwN Cj4gKwkJKHZvaWQpIHpmc19yZWZjb3VudF9hZGRfbWFueSgmc3RhdGUtPmFyY3NfZXNpemVbdHlw ZV0sDQo+ICAJCSAgICBhcmNfYnVmX3NpemUoYnVmKSwgYnVmKTsNCj4gIAl9DQo+ICB9DQo+IEBA IC0yNTMwLDIxICsyNTMwLDIxIEBAIGFyY19ldmljdGFibGVfc3BhY2VfZGVjcmVtZW50KGFyY19i dWZfaGRyX3QgKmhkciwgYXJjXw0KPiAgCQlBU1NFUlQwKGhkci0+Yl9sMWhkci5iX2J1ZmNudCk7 DQo+ICAJCUFTU0VSVDNQKGhkci0+Yl9sMWhkci5iX2J1ZiwgPT0sIE5VTEwpOw0KPiAgCQlBU1NF UlQzUChoZHItPmJfbDFoZHIuYl9wYWJkLCA9PSwgTlVMTCk7DQo+IC0JCSh2b2lkKSByZWZjb3Vu dF9yZW1vdmVfbWFueSgmc3RhdGUtPmFyY3NfZXNpemVbdHlwZV0sDQo+ICsJCSh2b2lkKSB6ZnNf cmVmY291bnRfcmVtb3ZlX21hbnkoJnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdLA0KPiAgCQkgICAg SERSX0dFVF9MU0laRShoZHIpLCBoZHIpOw0KPiAgCQlyZXR1cm47DQo+ICAJfQ0KPiAgDQo+ICAJ QVNTRVJUKCFHSE9TVF9TVEFURShzdGF0ZSkpOw0KPiAgCWlmIChoZHItPmJfbDFoZHIuYl9wYWJk ICE9IE5VTEwpIHsNCj4gLQkJKHZvaWQpIHJlZmNvdW50X3JlbW92ZV9tYW55KCZzdGF0ZS0+YXJj c19lc2l6ZVt0eXBlXSwNCj4gKwkJKHZvaWQpIHpmc19yZWZjb3VudF9yZW1vdmVfbWFueSgmc3Rh dGUtPmFyY3NfZXNpemVbdHlwZV0sDQo+ICAJCSAgICBhcmNfaGRyX3NpemUoaGRyKSwgaGRyKTsN Cj4gIAl9DQo+ICAJZm9yIChhcmNfYnVmX3QgKmJ1ZiA9IGhkci0+Yl9sMWhkci5iX2J1ZjsgYnVm ICE9IE5VTEw7DQo+ICAJICAgIGJ1ZiA9IGJ1Zi0+Yl9uZXh0KSB7DQo+ICAJCWlmIChhcmNfYnVm X2lzX3NoYXJlZChidWYpKQ0KPiAgCQkJY29udGludWU7DQo+IC0JCSh2b2lkKSByZWZjb3VudF9y ZW1vdmVfbWFueSgmc3RhdGUtPmFyY3NfZXNpemVbdHlwZV0sDQo+ICsJCSh2b2lkKSB6ZnNfcmVm Y291bnRfcmVtb3ZlX21hbnkoJnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdLA0KPiAgCQkgICAgYXJj X2J1Zl9zaXplKGJ1ZiksIGJ1Zik7DQo+ICAJfQ0KPiAgfQ0KPiBAQCAtMjU2MSwxMyArMjU2MSwx MyBAQCBhZGRfcmVmZXJlbmNlKGFyY19idWZfaGRyX3QgKmhkciwgdm9pZCAqdGFnKQ0KPiAgCUFT U0VSVChIRFJfSEFTX0wxSERSKGhkcikpOw0KPiAgCWlmICghTVVURVhfSEVMRChIRFJfTE9DSyho ZHIpKSkgew0KPiAgCQlBU1NFUlQoaGRyLT5iX2wxaGRyLmJfc3RhdGUgPT0gYXJjX2Fub24pOw0K PiAtCQlBU1NFUlQocmVmY291bnRfaXNfemVybygmaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7DQo+ ICsJCUFTU0VSVCh6ZnNfcmVmY291bnRfaXNfemVybygmaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7 DQo+ICAJCUFTU0VSVDNQKGhkci0+Yl9sMWhkci5iX2J1ZiwgPT0sIE5VTEwpOw0KPiAgCX0NCj4g IA0KPiAgCWFyY19zdGF0ZV90ICpzdGF0ZSA9IGhkci0+Yl9sMWhkci5iX3N0YXRlOw0KPiAgDQo+ IC0JaWYgKChyZWZjb3VudF9hZGQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCwgdGFnKSA9PSAxKSAm Jg0KPiArCWlmICgoemZzX3JlZmNvdW50X2FkZCgmaGRyLT5iX2wxaGRyLmJfcmVmY250LCB0YWcp ID09IDEpICYmDQo+ICAJICAgIChzdGF0ZSAhPSBhcmNfYW5vbikpIHsNCj4gIAkJLyogV2UgZG9u J3QgdXNlIHRoZSBMMi1vbmx5IHN0YXRlIGxpc3QuICovDQo+ICAJCWlmIChzdGF0ZSAhPSBhcmNf bDJjX29ubHkpIHsNCj4gQEAgLTI1OTksNyArMjU5OSw3IEBAIHJlbW92ZV9yZWZlcmVuY2UoYXJj X2J1Zl9oZHJfdCAqaGRyLCBrbXV0ZXhfdCAqaGFzaF9sbw0KPiAgCSAqIGFyY19sMmNfb25seSBj b3VudHMgYXMgYSBnaG9zdCBzdGF0ZSBzbyB3ZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkNCj4g IAkgKiBjaGVjayB0byBwcmV2ZW50IHVzYWdlIG9mIHRoZSBhcmNfbDJjX29ubHkgbGlzdC4NCj4g IAkgKi8NCj4gLQlpZiAoKChjbnQgPSByZWZjb3VudF9yZW1vdmUoJmhkci0+Yl9sMWhkci5iX3Jl ZmNudCwgdGFnKSkgPT0gMCkgJiYNCj4gKwlpZiAoKChjbnQgPSB6ZnNfcmVmY291bnRfcmVtb3Zl KCZoZHItPmJfbDFoZHIuYl9yZWZjbnQsIHRhZykpID09IDApICYmDQo+ICAJICAgIChzdGF0ZSAh PSBhcmNfYW5vbikpIHsNCj4gIAkJbXVsdGlsaXN0X2luc2VydChzdGF0ZS0+YXJjc19saXN0W2Fy Y19idWZfdHlwZShoZHIpXSwgaGRyKTsNCj4gIAkJQVNTRVJUM1UoaGRyLT5iX2wxaGRyLmJfYnVm Y250LCA+LCAwKTsNCj4gQEAgLTI2NDQsNyArMjY0NCw3IEBAIGFyY19idWZfaW5mbyhhcmNfYnVm X3QgKmFiLCBhcmNfYnVmX2luZm9fdCAqYWJpLCBpbnQgcw0KPiAgCQlhYmktPmFiaV9tcnVfZ2hv c3RfaGl0cyA9IGwxaGRyLT5iX21ydV9naG9zdF9oaXRzOw0KPiAgCQlhYmktPmFiaV9tZnVfaGl0 cyA9IGwxaGRyLT5iX21mdV9oaXRzOw0KPiAgCQlhYmktPmFiaV9tZnVfZ2hvc3RfaGl0cyA9IGwx aGRyLT5iX21mdV9naG9zdF9oaXRzOw0KPiAtCQlhYmktPmFiaV9ob2xkcyA9IHJlZmNvdW50X2Nv dW50KCZsMWhkci0+Yl9yZWZjbnQpOw0KPiArCQlhYmktPmFiaV9ob2xkcyA9IHpmc19yZWZjb3Vu dF9jb3VudCgmbDFoZHItPmJfcmVmY250KTsNCj4gIAl9DQo+ICANCj4gIAlpZiAobDJoZHIpIHsN Cj4gQEAgLTI2ODAsNyArMjY4MCw3IEBAIGFyY19jaGFuZ2Vfc3RhdGUoYXJjX3N0YXRlX3QgKm5l d19zdGF0ZSwgYXJjX2J1Zl9oZHJfdA0KPiAgCSAqLw0KPiAgCWlmIChIRFJfSEFTX0wxSERSKGhk cikpIHsNCj4gIAkJb2xkX3N0YXRlID0gaGRyLT5iX2wxaGRyLmJfc3RhdGU7DQo+IC0JCXJlZmNu dCA9IHJlZmNvdW50X2NvdW50KCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpOw0KPiArCQlyZWZjbnQg PSB6ZnNfcmVmY291bnRfY291bnQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCk7DQo+ICAJCWJ1ZmNu dCA9IGhkci0+Yl9sMWhkci5iX2J1ZmNudDsNCj4gIAkJdXBkYXRlX29sZCA9IChidWZjbnQgPiAw IHx8IGhkci0+Yl9sMWhkci5iX3BhYmQgIT0gTlVMTCk7DQo+ICAJfSBlbHNlIHsNCj4gQEAgLTI3 NTAsNyArMjc1MCw3IEBAIGFyY19jaGFuZ2Vfc3RhdGUoYXJjX3N0YXRlX3QgKm5ld19zdGF0ZSwg YXJjX2J1Zl9oZHJfdA0KPiAgCQkJICogdGhlIHJlZmVyZW5jZS4gQXMgYSByZXN1bHQsIHdlIHVz ZSB0aGUgYXJjDQo+ICAJCQkgKiBoZWFkZXIgcG9pbnRlciBmb3IgdGhlIHJlZmVyZW5jZS4NCj4g IAkJCSAqLw0KPiAtCQkJKHZvaWQpIHJlZmNvdW50X2FkZF9tYW55KCZuZXdfc3RhdGUtPmFyY3Nf c2l6ZSwNCj4gKwkJCSh2b2lkKSB6ZnNfcmVmY291bnRfYWRkX21hbnkoJm5ld19zdGF0ZS0+YXJj c19zaXplLA0KPiAgCQkJICAgIEhEUl9HRVRfTFNJWkUoaGRyKSwgaGRyKTsNCj4gIAkJCUFTU0VS VDNQKGhkci0+Yl9sMWhkci5iX3BhYmQsID09LCBOVUxMKTsNCj4gIAkJfSBlbHNlIHsNCj4gQEAg LTI3NzYsMTMgKzI3NzYsMTUgQEAgYXJjX2NoYW5nZV9zdGF0ZShhcmNfc3RhdGVfdCAqbmV3X3N0 YXRlLCBhcmNfYnVmX2hkcl90DQo+ICAJCQkJaWYgKGFyY19idWZfaXNfc2hhcmVkKGJ1ZikpDQo+ ICAJCQkJCWNvbnRpbnVlOw0KPiAgDQo+IC0JCQkJKHZvaWQpIHJlZmNvdW50X2FkZF9tYW55KCZu ZXdfc3RhdGUtPmFyY3Nfc2l6ZSwNCj4gKwkJCQkodm9pZCkgemZzX3JlZmNvdW50X2FkZF9tYW55 KA0KPiArCQkJCSAgICAmbmV3X3N0YXRlLT5hcmNzX3NpemUsDQo+ICAJCQkJICAgIGFyY19idWZf c2l6ZShidWYpLCBidWYpOw0KPiAgCQkJfQ0KPiAgCQkJQVNTRVJUM1UoYnVmY250LCA9PSwgYnVm ZmVycyk7DQo+ICANCj4gIAkJCWlmIChoZHItPmJfbDFoZHIuYl9wYWJkICE9IE5VTEwpIHsNCj4g LQkJCQkodm9pZCkgcmVmY291bnRfYWRkX21hbnkoJm5ld19zdGF0ZS0+YXJjc19zaXplLA0KPiAr CQkJCSh2b2lkKSB6ZnNfcmVmY291bnRfYWRkX21hbnkoDQo+ICsJCQkJICAgICZuZXdfc3RhdGUt PmFyY3Nfc2l6ZSwNCj4gIAkJCQkgICAgYXJjX2hkcl9zaXplKGhkciksIGhkcik7DQo+ICAJCQl9 IGVsc2Ugew0KPiAgCQkJCUFTU0VSVChHSE9TVF9TVEFURShvbGRfc3RhdGUpKTsNCj4gQEAgLTI4 MDQsNyArMjgwNiw3IEBAIGFyY19jaGFuZ2Vfc3RhdGUoYXJjX3N0YXRlX3QgKm5ld19zdGF0ZSwg YXJjX2J1Zl9oZHJfdA0KPiAgCQkJICogaGVhZGVyIG9uIHRoZSBnaG9zdCBzdGF0ZS4NCj4gIAkJ CSAqLw0KPiAgDQo+IC0JCQkodm9pZCkgcmVmY291bnRfcmVtb3ZlX21hbnkoJm9sZF9zdGF0ZS0+ YXJjc19zaXplLA0KPiArCQkJKHZvaWQpIHpmc19yZWZjb3VudF9yZW1vdmVfbWFueSgmb2xkX3N0 YXRlLT5hcmNzX3NpemUsDQo+ICAJCQkgICAgSERSX0dFVF9MU0laRShoZHIpLCBoZHIpOw0KPiAg CQl9IGVsc2Ugew0KPiAgCQkJdWludDMyX3QgYnVmZmVycyA9IDA7DQo+IEBAIC0yODI5LDEzICsy ODMxLDEzIEBAIGFyY19jaGFuZ2Vfc3RhdGUoYXJjX3N0YXRlX3QgKm5ld19zdGF0ZSwgYXJjX2J1 Zl9oZHJfdA0KPiAgCQkJCWlmIChhcmNfYnVmX2lzX3NoYXJlZChidWYpKQ0KPiAgCQkJCQljb250 aW51ZTsNCj4gIA0KPiAtCQkJCSh2b2lkKSByZWZjb3VudF9yZW1vdmVfbWFueSgNCj4gKwkJCQko dm9pZCkgemZzX3JlZmNvdW50X3JlbW92ZV9tYW55KA0KPiAgCQkJCSAgICAmb2xkX3N0YXRlLT5h cmNzX3NpemUsIGFyY19idWZfc2l6ZShidWYpLA0KPiAgCQkJCSAgICBidWYpOw0KPiAgCQkJfQ0K PiAgCQkJQVNTRVJUM1UoYnVmY250LCA9PSwgYnVmZmVycyk7DQo+ICAJCQlBU1NFUlQzUChoZHIt PmJfbDFoZHIuYl9wYWJkLCAhPSwgTlVMTCk7DQo+IC0JCQkodm9pZCkgcmVmY291bnRfcmVtb3Zl X21hbnkoDQo+ICsJCQkodm9pZCkgemZzX3JlZmNvdW50X3JlbW92ZV9tYW55KA0KPiAgCQkJICAg ICZvbGRfc3RhdGUtPmFyY3Nfc2l6ZSwgYXJjX2hkcl9zaXplKGhkciksIGhkcik7DQo+ICAJCX0N Cj4gIAl9DQo+IEBAIC0zMTAxLDggKzMxMDMsOCBAQCBhcmNfcmV0dXJuX2J1ZihhcmNfYnVmX3Qg KmJ1Ziwgdm9pZCAqdGFnKQ0KPiAgDQo+ICAJQVNTRVJUM1AoYnVmLT5iX2RhdGEsICE9LCBOVUxM KTsNCj4gIAlBU1NFUlQoSERSX0hBU19MMUhEUihoZHIpKTsNCj4gLQkodm9pZCkgcmVmY291bnRf YWRkKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQsIHRhZyk7DQo+IC0JKHZvaWQpIHJlZmNvdW50X3Jl bW92ZSgmaGRyLT5iX2wxaGRyLmJfcmVmY250LCBhcmNfb25sb2FuX3RhZyk7DQo+ICsJKHZvaWQp IHpmc19yZWZjb3VudF9hZGQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCwgdGFnKTsNCj4gKwkodm9p ZCkgemZzX3JlZmNvdW50X3JlbW92ZSgmaGRyLT5iX2wxaGRyLmJfcmVmY250LCBhcmNfb25sb2Fu X3RhZyk7DQo+ICANCj4gIAlhcmNfbG9hbmVkX2J5dGVzX3VwZGF0ZSgtYXJjX2J1Zl9zaXplKGJ1 ZikpOw0KPiAgfQ0KPiBAQCAtMzExNSw4ICszMTE3LDggQEAgYXJjX2xvYW5faW51c2VfYnVmKGFy Y19idWZfdCAqYnVmLCB2b2lkICp0YWcpDQo+ICANCj4gIAlBU1NFUlQzUChidWYtPmJfZGF0YSwg IT0sIE5VTEwpOw0KPiAgCUFTU0VSVChIRFJfSEFTX0wxSERSKGhkcikpOw0KPiAtCSh2b2lkKSBy ZWZjb3VudF9hZGQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCwgYXJjX29ubG9hbl90YWcpOw0KPiAt CSh2b2lkKSByZWZjb3VudF9yZW1vdmUoJmhkci0+Yl9sMWhkci5iX3JlZmNudCwgdGFnKTsNCj4g Kwkodm9pZCkgemZzX3JlZmNvdW50X2FkZCgmaGRyLT5iX2wxaGRyLmJfcmVmY250LCBhcmNfb25s b2FuX3RhZyk7DQo+ICsJKHZvaWQpIHpmc19yZWZjb3VudF9yZW1vdmUoJmhkci0+Yl9sMWhkci5i X3JlZmNudCwgdGFnKTsNCj4gIA0KPiAgCWFyY19sb2FuZWRfYnl0ZXNfdXBkYXRlKGFyY19idWZf c2l6ZShidWYpKTsNCj4gIH0NCj4gQEAgLTMxNDMsMTMgKzMxNDUsMTMgQEAgYXJjX2hkcl9mcmVl X29uX3dyaXRlKGFyY19idWZfaGRyX3QgKmhkcikNCj4gIA0KPiAgCS8qIHByb3RlY3RlZCBieSBo YXNoIGxvY2ssIGlmIGluIHRoZSBoYXNoIHRhYmxlICovDQo+ICAJaWYgKG11bHRpbGlzdF9saW5r X2FjdGl2ZSgmaGRyLT5iX2wxaGRyLmJfYXJjX25vZGUpKSB7DQo+IC0JCUFTU0VSVChyZWZjb3Vu dF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gKwkJQVNTRVJUKHpmc19yZWZj b3VudF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gIAkJQVNTRVJUKHN0YXRl ICE9IGFyY19hbm9uICYmIHN0YXRlICE9IGFyY19sMmNfb25seSk7DQo+ICANCj4gLQkJKHZvaWQp IHJlZmNvdW50X3JlbW92ZV9tYW55KCZzdGF0ZS0+YXJjc19lc2l6ZVt0eXBlXSwNCj4gKwkJKHZv aWQpIHpmc19yZWZjb3VudF9yZW1vdmVfbWFueSgmc3RhdGUtPmFyY3NfZXNpemVbdHlwZV0sDQo+ ICAJCSAgICBzaXplLCBoZHIpOw0KPiAgCX0NCj4gLQkodm9pZCkgcmVmY291bnRfcmVtb3ZlX21h bnkoJnN0YXRlLT5hcmNzX3NpemUsIHNpemUsIGhkcik7DQo+ICsJKHZvaWQpIHpmc19yZWZjb3Vu dF9yZW1vdmVfbWFueSgmc3RhdGUtPmFyY3Nfc2l6ZSwgc2l6ZSwgaGRyKTsNCj4gIAlpZiAodHlw ZSA9PSBBUkNfQlVGQ19NRVRBREFUQSkgew0KPiAgCQlhcmNfc3BhY2VfcmV0dXJuKHNpemUsIEFS Q19TUEFDRV9NRVRBKTsNCj4gIAl9IGVsc2Ugew0KPiBAQCAtMzE3OSw3ICszMTgxLDcgQEAgYXJj X3NoYXJlX2J1ZihhcmNfYnVmX2hkcl90ICpoZHIsIGFyY19idWZfdCAqYnVmKQ0KPiAgCSAqIHJl ZmNvdW50IG93bmVyc2hpcCB0byB0aGUgaGRyIHNpbmNlIGl0IGFsd2F5cyBvd25zDQo+ICAJICog dGhlIHJlZmNvdW50IHdoZW5ldmVyIGFuIGFyY19idWZfdCBpcyBzaGFyZWQuDQo+ICAJICovDQo+ IC0JcmVmY291bnRfdHJhbnNmZXJfb3duZXJzaGlwKCZzdGF0ZS0+YXJjc19zaXplLCBidWYsIGhk cik7DQo+ICsJemZzX3JlZmNvdW50X3RyYW5zZmVyX293bmVyc2hpcCgmc3RhdGUtPmFyY3Nfc2l6 ZSwgYnVmLCBoZHIpOw0KPiAgCWhkci0+Yl9sMWhkci5iX3BhYmQgPSBhYmRfZ2V0X2Zyb21fYnVm KGJ1Zi0+Yl9kYXRhLCBhcmNfYnVmX3NpemUoYnVmKSk7DQo+ICAJYWJkX3Rha2Vfb3duZXJzaGlw X29mX2J1ZihoZHItPmJfbDFoZHIuYl9wYWJkLA0KPiAgCSAgICBIRFJfSVNUWVBFX01FVEFEQVRB KGhkcikpOw0KPiBAQCAtMzIwOSw3ICszMjExLDcgQEAgYXJjX3Vuc2hhcmVfYnVmKGFyY19idWZf aGRyX3QgKmhkciwgYXJjX2J1Zl90ICpidWYpDQo+ICAJICogV2UgYXJlIG5vIGxvbmdlciBzaGFy aW5nIHRoaXMgYnVmZmVyIHNvIHdlIG5lZWQNCj4gIAkgKiB0byB0cmFuc2ZlciBpdHMgb3duZXJz aGlwIHRvIHRoZSByaWdodGZ1bCBvd25lci4NCj4gIAkgKi8NCj4gLQlyZWZjb3VudF90cmFuc2Zl cl9vd25lcnNoaXAoJnN0YXRlLT5hcmNzX3NpemUsIGhkciwgYnVmKTsNCj4gKwl6ZnNfcmVmY291 bnRfdHJhbnNmZXJfb3duZXJzaGlwKCZzdGF0ZS0+YXJjc19zaXplLCBoZHIsIGJ1Zik7DQo+ICAJ YXJjX2hkcl9jbGVhcl9mbGFncyhoZHIsIEFSQ19GTEFHX1NIQVJFRF9EQVRBKTsNCj4gIAlhYmRf cmVsZWFzZV9vd25lcnNoaXBfb2ZfYnVmKGhkci0+Yl9sMWhkci5iX3BhYmQpOw0KPiAgCWFiZF9w dXQoaGRyLT5iX2wxaGRyLmJfcGFiZCk7DQo+IEBAIC0zNDM2LDcgKzM0MzgsNyBAQCBhcmNfaGRy X2FsbG9jKHVpbnQ2NF90IHNwYSwgaW50MzJfdCBwc2l6ZSwgaW50MzJfdCBsc2kNCj4gIAkgKiBp dCByZWZlcmVuY2VzIGFuZCBjb21wcmVzc2VkIGFyYyBlbmFibGVtZW50Lg0KPiAgCSAqLw0KPiAg CWFyY19oZHJfYWxsb2NfcGFiZChoZHIsIEJfVFJVRSk7DQo+IC0JQVNTRVJUKHJlZmNvdW50X2lz X3plcm8oJmhkci0+Yl9sMWhkci5iX3JlZmNudCkpOw0KPiArCUFTU0VSVCh6ZnNfcmVmY291bnRf aXNfemVybygmaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7DQo+ICANCj4gIAlyZXR1cm4gKGhkcik7 DQo+ICB9DQo+IEBAIC0zNTM4LDggKzM1NDAsMTAgQEAgYXJjX2hkcl9yZWFsbG9jKGFyY19idWZf aGRyX3QgKmhkciwga21lbV9jYWNoZV90ICpvbGQsDQo+ICAJICogdGhlIHdyb25nIHBvaW50ZXIg YWRkcmVzcyB3aGVuIGNhbGxpbmcgYXJjX2hkcl9kZXN0cm95KCkgbGF0ZXIuDQo+ICAJICovDQo+ ICANCj4gLQkodm9pZCkgcmVmY291bnRfcmVtb3ZlX21hbnkoJmRldi0+bDJhZF9hbGxvYywgYXJj X2hkcl9zaXplKGhkciksIGhkcik7DQo+IC0JKHZvaWQpIHJlZmNvdW50X2FkZF9tYW55KCZkZXYt PmwyYWRfYWxsb2MsIGFyY19oZHJfc2l6ZShuaGRyKSwgbmhkcik7DQo+ICsJKHZvaWQpIHpmc19y ZWZjb3VudF9yZW1vdmVfbWFueSgmZGV2LT5sMmFkX2FsbG9jLCBhcmNfaGRyX3NpemUoaGRyKSwN Cj4gKwkgICAgaGRyKTsNCj4gKwkodm9pZCkgemZzX3JlZmNvdW50X2FkZF9tYW55KCZkZXYtPmwy YWRfYWxsb2MsIGFyY19oZHJfc2l6ZShuaGRyKSwNCj4gKwkgICAgbmhkcik7DQo+ICANCj4gIAli dWZfZGlzY2FyZF9pZGVudGl0eShoZHIpOw0KPiAgCWttZW1fY2FjaGVfZnJlZShvbGQsIGhkcik7 DQo+IEBAIC0zNjE5LDcgKzM2MjMsNyBAQCBhcmNfaGRyX2wyaGRyX2Rlc3Ryb3koYXJjX2J1Zl9o ZHJfdCAqaGRyKQ0KPiAgDQo+ICAJdmRldl9zcGFjZV91cGRhdGUoZGV2LT5sMmFkX3ZkZXYsIC1w c2l6ZSwgMCwgMCk7DQo+ICANCj4gLQkodm9pZCkgcmVmY291bnRfcmVtb3ZlX21hbnkoJmRldi0+ bDJhZF9hbGxvYywgcHNpemUsIGhkcik7DQo+ICsJKHZvaWQpIHpmc19yZWZjb3VudF9yZW1vdmVf bWFueSgmZGV2LT5sMmFkX2FsbG9jLCBwc2l6ZSwgaGRyKTsNCj4gIAlhcmNfaGRyX2NsZWFyX2Zs YWdzKGhkciwgQVJDX0ZMQUdfSEFTX0wySERSKTsNCj4gIH0NCj4gIA0KPiBAQCAtMzYyOSw3ICsz NjMzLDcgQEAgYXJjX2hkcl9kZXN0cm95KGFyY19idWZfaGRyX3QgKmhkcikNCj4gIAlpZiAoSERS X0hBU19MMUhEUihoZHIpKSB7DQo+ICAJCUFTU0VSVChoZHItPmJfbDFoZHIuYl9idWYgPT0gTlVM TCB8fA0KPiAgCQkgICAgaGRyLT5iX2wxaGRyLmJfYnVmY250ID4gMCk7DQo+IC0JCUFTU0VSVChy ZWZjb3VudF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gKwkJQVNTRVJUKHpm c19yZWZjb3VudF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gIAkJQVNTRVJU M1AoaGRyLT5iX2wxaGRyLmJfc3RhdGUsID09LCBhcmNfYW5vbik7DQo+ICAJfQ0KPiAgCUFTU0VS VCghSERSX0lPX0lOX1BST0dSRVNTKGhkcikpOw0KPiBAQCAtMzc5Myw3ICszNzk3LDcgQEAgYXJj X2V2aWN0X2hkcihhcmNfYnVmX2hkcl90ICpoZHIsIGttdXRleF90ICpoYXNoX2xvY2spDQo+ICAJ CXJldHVybiAoYnl0ZXNfZXZpY3RlZCk7DQo+ICAJfQ0KPiAgDQo+IC0JQVNTRVJUMChyZWZjb3Vu dF9jb3VudCgmaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7DQo+ICsJQVNTRVJUMCh6ZnNfcmVmY291 bnRfY291bnQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCkpOw0KPiAgCXdoaWxlIChoZHItPmJfbDFo ZHIuYl9idWYpIHsNCj4gIAkJYXJjX2J1Zl90ICpidWYgPSBoZHItPmJfbDFoZHIuYl9idWY7DQo+ ICAJCWlmICghbXV0ZXhfdHJ5ZW50ZXIoJmJ1Zi0+Yl9ldmljdF9sb2NrKSkgew0KPiBAQCAtNDEw Nyw3ICs0MTExLDcgQEAgYXJjX2ZsdXNoX3N0YXRlKGFyY19zdGF0ZV90ICpzdGF0ZSwgdWludDY0 X3Qgc3BhLCBhcmNfDQo+ICB7DQo+ICAJdWludDY0X3QgZXZpY3RlZCA9IDA7DQo+ICANCj4gLQl3 aGlsZSAocmVmY291bnRfY291bnQoJnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdKSAhPSAwKSB7DQo+ ICsJd2hpbGUgKHpmc19yZWZjb3VudF9jb3VudCgmc3RhdGUtPmFyY3NfZXNpemVbdHlwZV0pICE9 IDApIHsNCj4gIAkJZXZpY3RlZCArPSBhcmNfZXZpY3Rfc3RhdGUoc3RhdGUsIHNwYSwgQVJDX0VW SUNUX0FMTCwgdHlwZSk7DQo+ICANCj4gIAkJaWYgKCFyZXRyeSkNCj4gQEAgLTQxMzAsNyArNDEz NCw3IEBAIGFyY19wcnVuZV90YXNrKHZvaWQgKnB0cikNCj4gIAlpZiAoZnVuYyAhPSBOVUxMKQ0K PiAgCQlmdW5jKGFwLT5wX2FkanVzdCwgYXAtPnBfcHJpdmF0ZSk7DQo+ICANCj4gLQlyZWZjb3Vu dF9yZW1vdmUoJmFwLT5wX3JlZmNudCwgZnVuYyk7DQo+ICsJemZzX3JlZmNvdW50X3JlbW92ZSgm YXAtPnBfcmVmY250LCBmdW5jKTsNCj4gIH0NCj4gIA0KPiAgLyoNCj4gQEAgLTQxNTMsMTQgKzQx NTcsMTQgQEAgYXJjX3BydW5lX2FzeW5jKGludDY0X3QgYWRqdXN0KQ0KPiAgCWZvciAoYXAgPSBs aXN0X2hlYWQoJmFyY19wcnVuZV9saXN0KTsgYXAgIT0gTlVMTDsNCj4gIAkgICAgYXAgPSBsaXN0 X25leHQoJmFyY19wcnVuZV9saXN0LCBhcCkpIHsNCj4gIA0KPiAtCQlpZiAocmVmY291bnRfY291 bnQoJmFwLT5wX3JlZmNudCkgPj0gMikNCj4gKwkJaWYgKHpmc19yZWZjb3VudF9jb3VudCgmYXAt PnBfcmVmY250KSA+PSAyKQ0KPiAgCQkJY29udGludWU7DQo+ICANCj4gLQkJcmVmY291bnRfYWRk KCZhcC0+cF9yZWZjbnQsIGFwLT5wX3BmdW5jKTsNCj4gKwkJemZzX3JlZmNvdW50X2FkZCgmYXAt PnBfcmVmY250LCBhcC0+cF9wZnVuYyk7DQo+ICAJCWFwLT5wX2FkanVzdCA9IGFkanVzdDsNCj4g IAkJaWYgKHRhc2txX2Rpc3BhdGNoKGFyY19wcnVuZV90YXNrcSwgYXJjX3BydW5lX3Rhc2ssDQo+ ICAJCSAgICBhcCwgVFFfU0xFRVApID09IFRBU0tRSURfSU5WQUxJRCkgew0KPiAtCQkJcmVmY291 bnRfcmVtb3ZlKCZhcC0+cF9yZWZjbnQsIGFwLT5wX3BmdW5jKTsNCj4gKwkJCXpmc19yZWZjb3Vu dF9yZW1vdmUoJmFwLT5wX3JlZmNudCwgYXAtPnBfcGZ1bmMpOw0KPiAgCQkJY29udGludWU7DQo+ ICAJCX0NCj4gIAkJQVJDU1RBVF9CVU1QKGFyY3N0YXRfcHJ1bmUpOw0KPiBAQCAtNDE4Miw4ICs0 MTg2LDkgQEAgYXJjX2FkanVzdF9pbXBsKGFyY19zdGF0ZV90ICpzdGF0ZSwgdWludDY0X3Qgc3Bh LCBpbnQ2DQo+ICB7DQo+ICAJaW50NjRfdCBkZWx0YTsNCj4gIA0KPiAtCWlmIChieXRlcyA+IDAg JiYgcmVmY291bnRfY291bnQoJnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdKSA+IDApIHsNCj4gLQkJ ZGVsdGEgPSBNSU4ocmVmY291bnRfY291bnQoJnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdKSwgYnl0 ZXMpOw0KPiArCWlmIChieXRlcyA+IDAgJiYgemZzX3JlZmNvdW50X2NvdW50KCZzdGF0ZS0+YXJj c19lc2l6ZVt0eXBlXSkgPiAwKSB7DQo+ICsJCWRlbHRhID0gTUlOKHpmc19yZWZjb3VudF9jb3Vu dCgmc3RhdGUtPmFyY3NfZXNpemVbdHlwZV0pLA0KPiArCQkgICAgYnl0ZXMpOw0KPiAgCQlyZXR1 cm4gKGFyY19ldmljdF9zdGF0ZShzdGF0ZSwgc3BhLCBkZWx0YSwgdHlwZSkpOw0KPiAgCX0NCj4g IA0KPiBAQCAtNDIyNiw4ICs0MjMxLDkgQEAgcmVzdGFydDoNCj4gIAkgKi8NCj4gIAlhZGp1c3Rt bnQgPSBtZXRhX3VzZWQgLSBhcmNfbWV0YV9saW1pdDsNCj4gIA0KPiAtCWlmIChhZGp1c3RtbnQg PiAwICYmIHJlZmNvdW50X2NvdW50KCZhcmNfbXJ1LT5hcmNzX2VzaXplW3R5cGVdKSA+IDApIHsN Cj4gLQkJZGVsdGEgPSBNSU4ocmVmY291bnRfY291bnQoJmFyY19tcnUtPmFyY3NfZXNpemVbdHlw ZV0pLA0KPiArCWlmIChhZGp1c3RtbnQgPiAwICYmDQo+ICsJICAgIHpmc19yZWZjb3VudF9jb3Vu dCgmYXJjX21ydS0+YXJjc19lc2l6ZVt0eXBlXSkgPiAwKSB7DQo+ICsJCWRlbHRhID0gTUlOKHpm c19yZWZjb3VudF9jb3VudCgmYXJjX21ydS0+YXJjc19lc2l6ZVt0eXBlXSksDQo+ICAJCSAgICBh ZGp1c3RtbnQpOw0KPiAgCQl0b3RhbF9ldmljdGVkICs9IGFyY19hZGp1c3RfaW1wbChhcmNfbXJ1 LCAwLCBkZWx0YSwgdHlwZSk7DQo+ICAJCWFkanVzdG1udCAtPSBkZWx0YTsNCj4gQEAgLTQyNDMs OCArNDI0OSw5IEBAIHJlc3RhcnQ6DQo+ICAJICogc2ltcGx5IGRlY3JlbWVudCB0aGUgYW1vdW50 IG9mIGRhdGEgZXZpY3RlZCBmcm9tIHRoZSBNUlUuDQo+ICAJICovDQo+ICANCj4gLQlpZiAoYWRq dXN0bW50ID4gMCAmJiByZWZjb3VudF9jb3VudCgmYXJjX21mdS0+YXJjc19lc2l6ZVt0eXBlXSkg PiAwKSB7DQo+IC0JCWRlbHRhID0gTUlOKHJlZmNvdW50X2NvdW50KCZhcmNfbWZ1LT5hcmNzX2Vz aXplW3R5cGVdKSwNCj4gKwlpZiAoYWRqdXN0bW50ID4gMCAmJg0KPiArCSAgICB6ZnNfcmVmY291 bnRfY291bnQoJmFyY19tZnUtPmFyY3NfZXNpemVbdHlwZV0pID4gMCkgew0KPiArCQlkZWx0YSA9 IE1JTih6ZnNfcmVmY291bnRfY291bnQoJmFyY19tZnUtPmFyY3NfZXNpemVbdHlwZV0pLA0KPiAg CQkgICAgYWRqdXN0bW50KTsNCj4gIAkJdG90YWxfZXZpY3RlZCArPSBhcmNfYWRqdXN0X2ltcGwo YXJjX21mdSwgMCwgZGVsdGEsIHR5cGUpOw0KPiAgCX0NCj4gQEAgLTQyNTIsMTcgKzQyNTksMTcg QEAgcmVzdGFydDoNCj4gIAlhZGp1c3RtbnQgPSBtZXRhX3VzZWQgLSBhcmNfbWV0YV9saW1pdDsN Cj4gIA0KPiAgCWlmIChhZGp1c3RtbnQgPiAwICYmDQo+IC0JICAgIHJlZmNvdW50X2NvdW50KCZh cmNfbXJ1X2dob3N0LT5hcmNzX2VzaXplW3R5cGVdKSA+IDApIHsNCj4gKwkgICAgemZzX3JlZmNv dW50X2NvdW50KCZhcmNfbXJ1X2dob3N0LT5hcmNzX2VzaXplW3R5cGVdKSA+IDApIHsNCj4gIAkJ ZGVsdGEgPSBNSU4oYWRqdXN0bW50LA0KPiAtCQkgICAgcmVmY291bnRfY291bnQoJmFyY19tcnVf Z2hvc3QtPmFyY3NfZXNpemVbdHlwZV0pKTsNCj4gKwkJICAgIHpmc19yZWZjb3VudF9jb3VudCgm YXJjX21ydV9naG9zdC0+YXJjc19lc2l6ZVt0eXBlXSkpOw0KPiAgCQl0b3RhbF9ldmljdGVkICs9 IGFyY19hZGp1c3RfaW1wbChhcmNfbXJ1X2dob3N0LCAwLCBkZWx0YSwgdHlwZSk7DQo+ICAJCWFk anVzdG1udCAtPSBkZWx0YTsNCj4gIAl9DQo+ICANCj4gIAlpZiAoYWRqdXN0bW50ID4gMCAmJg0K PiAtCSAgICByZWZjb3VudF9jb3VudCgmYXJjX21mdV9naG9zdC0+YXJjc19lc2l6ZVt0eXBlXSkg PiAwKSB7DQo+ICsJICAgIHpmc19yZWZjb3VudF9jb3VudCgmYXJjX21mdV9naG9zdC0+YXJjc19l c2l6ZVt0eXBlXSkgPiAwKSB7DQo+ICAJCWRlbHRhID0gTUlOKGFkanVzdG1udCwNCj4gLQkJICAg IHJlZmNvdW50X2NvdW50KCZhcmNfbWZ1X2dob3N0LT5hcmNzX2VzaXplW3R5cGVdKSk7DQo+ICsJ CSAgICB6ZnNfcmVmY291bnRfY291bnQoJmFyY19tZnVfZ2hvc3QtPmFyY3NfZXNpemVbdHlwZV0p KTsNCj4gIAkJdG90YWxfZXZpY3RlZCArPSBhcmNfYWRqdXN0X2ltcGwoYXJjX21mdV9naG9zdCwg MCwgZGVsdGEsIHR5cGUpOw0KPiAgCX0NCj4gIA0KPiBAQCAtNDMxMSw4ICs0MzE4LDggQEAgYXJj X2FkanVzdF9tZXRhX29ubHkodWludDY0X3QgbWV0YV91c2VkKQ0KPiAgCSAqIGV2aWN0IHNvbWUg ZnJvbSB0aGUgTVJVIGhlcmUsIGFuZCBzb21lIGZyb20gdGhlIE1GVSBiZWxvdy4NCj4gIAkgKi8N Cj4gIAl0YXJnZXQgPSBNSU4oKGludDY0X3QpKG1ldGFfdXNlZCAtIGFyY19tZXRhX2xpbWl0KSwN Cj4gLQkgICAgKGludDY0X3QpKHJlZmNvdW50X2NvdW50KCZhcmNfYW5vbi0+YXJjc19zaXplKSAr DQo+IC0JICAgIHJlZmNvdW50X2NvdW50KCZhcmNfbXJ1LT5hcmNzX3NpemUpIC0gYXJjX3ApKTsN Cj4gKwkgICAgKGludDY0X3QpKHpmc19yZWZjb3VudF9jb3VudCgmYXJjX2Fub24tPmFyY3Nfc2l6 ZSkgKw0KPiArCSAgICB6ZnNfcmVmY291bnRfY291bnQoJmFyY19tcnUtPmFyY3Nfc2l6ZSkgLSBh cmNfcCkpOw0KPiAgDQo+ICAJdG90YWxfZXZpY3RlZCArPSBhcmNfYWRqdXN0X2ltcGwoYXJjX21y dSwgMCwgdGFyZ2V0LCBBUkNfQlVGQ19NRVRBREFUQSk7DQo+ICANCj4gQEAgLTQzMjIsNyArNDMy OSw3IEBAIGFyY19hZGp1c3RfbWV0YV9vbmx5KHVpbnQ2NF90IG1ldGFfdXNlZCkNCj4gIAkgKiBz cGFjZSBhbGxvdHRlZCB0byB0aGUgTUZVICh3aGljaCBpcyBkZWZpbmVkIGFzIGFyY19jIC0gYXJj X3ApLg0KPiAgCSAqLw0KPiAgCXRhcmdldCA9IE1JTigoaW50NjRfdCkobWV0YV91c2VkIC0gYXJj X21ldGFfbGltaXQpLA0KPiAtCSAgICAoaW50NjRfdCkocmVmY291bnRfY291bnQoJmFyY19tZnUt PmFyY3Nfc2l6ZSkgLQ0KPiArCSAgICAoaW50NjRfdCkoemZzX3JlZmNvdW50X2NvdW50KCZhcmNf bWZ1LT5hcmNzX3NpemUpIC0NCj4gIAkgICAgKGFyY19jIC0gYXJjX3ApKSk7DQo+ICANCj4gIAl0 b3RhbF9ldmljdGVkICs9IGFyY19hZGp1c3RfaW1wbChhcmNfbWZ1LCAwLCB0YXJnZXQsIEFSQ19C VUZDX01FVEFEQVRBKTsNCj4gQEAgLTQ0NDMsOCArNDQ1MCw4IEBAIGFyY19hZGp1c3Qodm9pZCkN Cj4gIAkgKiBhcmNfcCBoZXJlLCBhbmQgdGhlbiBldmljdCBtb3JlIGZyb20gdGhlIE1GVSBiZWxv dy4NCj4gIAkgKi8NCj4gIAl0YXJnZXQgPSBNSU4oKGludDY0X3QpKGFzaXplIC0gYXJjX2MpLA0K PiAtCSAgICAoaW50NjRfdCkocmVmY291bnRfY291bnQoJmFyY19hbm9uLT5hcmNzX3NpemUpICsN Cj4gLQkgICAgcmVmY291bnRfY291bnQoJmFyY19tcnUtPmFyY3Nfc2l6ZSkgKyBhbWV0YSAtIGFy Y19wKSk7DQo+ICsJICAgIChpbnQ2NF90KSh6ZnNfcmVmY291bnRfY291bnQoJmFyY19hbm9uLT5h cmNzX3NpemUpICsNCj4gKwkgICAgemZzX3JlZmNvdW50X2NvdW50KCZhcmNfbXJ1LT5hcmNzX3Np emUpICsgYW1ldGEgLSBhcmNfcCkpOw0KPiAgDQo+ICAJLyoNCj4gIAkgKiBJZiB3ZSdyZSBiZWxv dyBhcmNfbWV0YV9taW4sIGFsd2F5cyBwcmVmZXIgdG8gZXZpY3QgZGF0YS4NCj4gQEAgLTQ1MzQs OCArNDU0MSw4IEBAIGFyY19hZGp1c3Qodm9pZCkNCj4gIAkgKiBjYWNoZS4gVGhlIGZvbGxvd2lu ZyBsb2dpYyBlbmZvcmNlcyB0aGVzZSBsaW1pdHMgb24gdGhlIGdob3N0DQo+ICAJICogY2FjaGVz LCBhbmQgZXZpY3RzIGZyb20gdGhlbSBhcyBuZWVkZWQuDQo+ICAJICovDQo+IC0JdGFyZ2V0ID0g cmVmY291bnRfY291bnQoJmFyY19tcnUtPmFyY3Nfc2l6ZSkgKw0KPiAtCSAgICByZWZjb3VudF9j b3VudCgmYXJjX21ydV9naG9zdC0+YXJjc19zaXplKSAtIGFyY19jOw0KPiArCXRhcmdldCA9IHpm c19yZWZjb3VudF9jb3VudCgmYXJjX21ydS0+YXJjc19zaXplKSArDQo+ICsJICAgIHpmc19yZWZj b3VudF9jb3VudCgmYXJjX21ydV9naG9zdC0+YXJjc19zaXplKSAtIGFyY19jOw0KPiAgDQo+ICAJ Ynl0ZXMgPSBhcmNfYWRqdXN0X2ltcGwoYXJjX21ydV9naG9zdCwgMCwgdGFyZ2V0LCBBUkNfQlVG Q19EQVRBKTsNCj4gIAl0b3RhbF9ldmljdGVkICs9IGJ5dGVzOw0KPiBAQCAtNDU1Myw4ICs0NTYw LDggQEAgYXJjX2FkanVzdCh2b2lkKQ0KPiAgCSAqCW1ydSArIG1mdSArIG1ydSBnaG9zdCArIG1m dSBnaG9zdCA8PSAyICogYXJjX2MNCj4gIAkgKgkJICAgIG1ydSBnaG9zdCArIG1mdSBnaG9zdCA8 PSBhcmNfYw0KPiAgCSAqLw0KPiAtCXRhcmdldCA9IHJlZmNvdW50X2NvdW50KCZhcmNfbXJ1X2do b3N0LT5hcmNzX3NpemUpICsNCj4gLQkgICAgcmVmY291bnRfY291bnQoJmFyY19tZnVfZ2hvc3Qt PmFyY3Nfc2l6ZSkgLSBhcmNfYzsNCj4gKwl0YXJnZXQgPSB6ZnNfcmVmY291bnRfY291bnQoJmFy Y19tcnVfZ2hvc3QtPmFyY3Nfc2l6ZSkgKw0KPiArCSAgICB6ZnNfcmVmY291bnRfY291bnQoJmFy Y19tZnVfZ2hvc3QtPmFyY3Nfc2l6ZSkgLSBhcmNfYzsNCj4gIA0KPiAgCWJ5dGVzID0gYXJjX2Fk anVzdF9pbXBsKGFyY19tZnVfZ2hvc3QsIDAsIHRhcmdldCwgQVJDX0JVRkNfREFUQSk7DQo+ICAJ dG90YWxfZXZpY3RlZCArPSBieXRlczsNCj4gQEAgLTUwNjksOCArNTA3Niw4IEBAIGFyY19hZGFw dChpbnQgYnl0ZXMsIGFyY19zdGF0ZV90ICpzdGF0ZSkNCj4gIHsNCj4gIAlpbnQgbXVsdDsNCj4g IAl1aW50NjRfdCBhcmNfcF9taW4gPSAoYXJjX2MgPj4gYXJjX3BfbWluX3NoaWZ0KTsNCj4gLQlp bnQ2NF90IG1ydWdfc2l6ZSA9IHJlZmNvdW50X2NvdW50KCZhcmNfbXJ1X2dob3N0LT5hcmNzX3Np emUpOw0KPiAtCWludDY0X3QgbWZ1Z19zaXplID0gcmVmY291bnRfY291bnQoJmFyY19tZnVfZ2hv c3QtPmFyY3Nfc2l6ZSk7DQo+ICsJaW50NjRfdCBtcnVnX3NpemUgPSB6ZnNfcmVmY291bnRfY291 bnQoJmFyY19tcnVfZ2hvc3QtPmFyY3Nfc2l6ZSk7DQo+ICsJaW50NjRfdCBtZnVnX3NpemUgPSB6 ZnNfcmVmY291bnRfY291bnQoJmFyY19tZnVfZ2hvc3QtPmFyY3Nfc2l6ZSk7DQo+ICANCj4gIAlp ZiAoc3RhdGUgPT0gYXJjX2wyY19vbmx5KQ0KPiAgCQlyZXR1cm47DQo+IEBAIC01MjQ4LDcgKzUy NTUsNyBAQCBhcmNfZ2V0X2RhdGFfaW1wbChhcmNfYnVmX2hkcl90ICpoZHIsIHVpbnQ2NF90IHNp emUsIHYNCj4gIAkgKi8NCj4gIAlpZiAoIUdIT1NUX1NUQVRFKHN0YXRlKSkgew0KPiAgDQo+IC0J CSh2b2lkKSByZWZjb3VudF9hZGRfbWFueSgmc3RhdGUtPmFyY3Nfc2l6ZSwgc2l6ZSwgdGFnKTsN Cj4gKwkJKHZvaWQpIHpmc19yZWZjb3VudF9hZGRfbWFueSgmc3RhdGUtPmFyY3Nfc2l6ZSwgc2l6 ZSwgdGFnKTsNCj4gIA0KPiAgCQkvKg0KPiAgCQkgKiBJZiB0aGlzIGlzIHJlYWNoZWQgdmlhIGFy Y19yZWFkLCB0aGUgbGluayBpcw0KPiBAQCAtNTI2MCw4ICs1MjY3LDggQEAgYXJjX2dldF9kYXRh X2ltcGwoYXJjX2J1Zl9oZHJfdCAqaGRyLCB1aW50NjRfdCBzaXplLCB2DQo+ICAJCSAqIHRyeWlu ZyB0byBbYWRkfHJlbW92ZV1fcmVmZXJlbmNlIGl0Lg0KPiAgCQkgKi8NCj4gIAkJaWYgKG11bHRp bGlzdF9saW5rX2FjdGl2ZSgmaGRyLT5iX2wxaGRyLmJfYXJjX25vZGUpKSB7DQo+IC0JCQlBU1NF UlQocmVmY291bnRfaXNfemVybygmaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7DQo+IC0JCQkodm9p ZCkgcmVmY291bnRfYWRkX21hbnkoJnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdLA0KPiArCQkJQVNT RVJUKHpmc19yZWZjb3VudF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gKwkJ CSh2b2lkKSB6ZnNfcmVmY291bnRfYWRkX21hbnkoJnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdLA0K PiAgCQkJICAgIHNpemUsIHRhZyk7DQo+ICAJCX0NCj4gIA0KPiBAQCAtNTI3MSw4ICs1Mjc4LDgg QEAgYXJjX2dldF9kYXRhX2ltcGwoYXJjX2J1Zl9oZHJfdCAqaGRyLCB1aW50NjRfdCBzaXplLCB2 DQo+ICAJCSAqLw0KPiAgCQlpZiAoYWdnc3VtX3VwcGVyX2JvdW5kKCZhcmNfc2l6ZSkgPCBhcmNf YyAmJg0KPiAgCQkgICAgaGRyLT5iX2wxaGRyLmJfc3RhdGUgPT0gYXJjX2Fub24gJiYNCj4gLQkJ ICAgIChyZWZjb3VudF9jb3VudCgmYXJjX2Fub24tPmFyY3Nfc2l6ZSkgKw0KPiAtCQkgICAgcmVm Y291bnRfY291bnQoJmFyY19tcnUtPmFyY3Nfc2l6ZSkgPiBhcmNfcCkpDQo+ICsJCSAgICAoemZz X3JlZmNvdW50X2NvdW50KCZhcmNfYW5vbi0+YXJjc19zaXplKSArDQo+ICsJCSAgICB6ZnNfcmVm Y291bnRfY291bnQoJmFyY19tcnUtPmFyY3Nfc2l6ZSkgPiBhcmNfcCkpDQo+ICAJCQlhcmNfcCA9 IE1JTihhcmNfYywgYXJjX3AgKyBzaXplKTsNCj4gIAl9DQo+ICAJQVJDU1RBVF9CVU1QKGFyY3N0 YXRfYWxsb2NhdGVkKTsNCj4gQEAgLTUzMTAsMTMgKzUzMTcsMTMgQEAgYXJjX2ZyZWVfZGF0YV9p bXBsKGFyY19idWZfaGRyX3QgKmhkciwgdWludDY0X3Qgc2l6ZSwgDQo+ICANCj4gIAkvKiBwcm90 ZWN0ZWQgYnkgaGFzaCBsb2NrLCBpZiBpbiB0aGUgaGFzaCB0YWJsZSAqLw0KPiAgCWlmIChtdWx0 aWxpc3RfbGlua19hY3RpdmUoJmhkci0+Yl9sMWhkci5iX2FyY19ub2RlKSkgew0KPiAtCQlBU1NF UlQocmVmY291bnRfaXNfemVybygmaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7DQo+ICsJCUFTU0VS VCh6ZnNfcmVmY291bnRfaXNfemVybygmaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7DQo+ICAJCUFT U0VSVChzdGF0ZSAhPSBhcmNfYW5vbiAmJiBzdGF0ZSAhPSBhcmNfbDJjX29ubHkpOw0KPiAgDQo+ IC0JCSh2b2lkKSByZWZjb3VudF9yZW1vdmVfbWFueSgmc3RhdGUtPmFyY3NfZXNpemVbdHlwZV0s DQo+ICsJCSh2b2lkKSB6ZnNfcmVmY291bnRfcmVtb3ZlX21hbnkoJnN0YXRlLT5hcmNzX2VzaXpl W3R5cGVdLA0KPiAgCQkgICAgc2l6ZSwgdGFnKTsNCj4gIAl9DQo+IC0JKHZvaWQpIHJlZmNvdW50 X3JlbW92ZV9tYW55KCZzdGF0ZS0+YXJjc19zaXplLCBzaXplLCB0YWcpOw0KPiArCSh2b2lkKSB6 ZnNfcmVmY291bnRfcmVtb3ZlX21hbnkoJnN0YXRlLT5hcmNzX3NpemUsIHNpemUsIHRhZyk7DQo+ ICANCj4gIAlWRVJJRlkzVShoZHItPmJfdHlwZSwgPT0sIHR5cGUpOw0KPiAgCWlmICh0eXBlID09 IEFSQ19CVUZDX01FVEFEQVRBKSB7DQo+IEBAIC01MzYzLDcgKzUzNzAsNyBAQCBhcmNfYWNjZXNz KGFyY19idWZfaGRyX3QgKmhkciwga211dGV4X3QgKmhhc2hfbG9jaykNCj4gIAkJICogICBhbm90 aGVyIHByZWZldGNoICh0byBtYWtlIGl0IGxlc3MgbGlrZWx5IHRvIGJlIGV2aWN0ZWQpLg0KPiAg CQkgKi8NCj4gIAkJaWYgKEhEUl9QUkVGRVRDSChoZHIpIHx8IEhEUl9QUkVTQ0lFTlRfUFJFRkVU Q0goaGRyKSkgew0KPiAtCQkJaWYgKHJlZmNvdW50X2NvdW50KCZoZHItPmJfbDFoZHIuYl9yZWZj bnQpID09IDApIHsNCj4gKwkJCWlmICh6ZnNfcmVmY291bnRfY291bnQoJmhkci0+Yl9sMWhkci5i X3JlZmNudCkgPT0gMCkgew0KPiAgCQkJCS8qIGxpbmsgcHJvdGVjdGVkIGJ5IGhhc2ggbG9jayAq Lw0KPiAgCQkJCUFTU0VSVChtdWx0aWxpc3RfbGlua19hY3RpdmUoDQo+ICAJCQkJICAgICZoZHIt PmJfbDFoZHIuYl9hcmNfbm9kZSkpOw0KPiBAQCAtNTQwNCw3ICs1NDExLDcgQEAgYXJjX2FjY2Vz cyhhcmNfYnVmX2hkcl90ICpoZHIsIGttdXRleF90ICpoYXNoX2xvY2spDQo+ICANCj4gIAkJaWYg KEhEUl9QUkVGRVRDSChoZHIpIHx8IEhEUl9QUkVTQ0lFTlRfUFJFRkVUQ0goaGRyKSkgew0KPiAg CQkJbmV3X3N0YXRlID0gYXJjX21ydTsNCj4gLQkJCWlmIChyZWZjb3VudF9jb3VudCgmaGRyLT5i X2wxaGRyLmJfcmVmY250KSA+IDApIHsNCj4gKwkJCWlmICh6ZnNfcmVmY291bnRfY291bnQoJmhk ci0+Yl9sMWhkci5iX3JlZmNudCkgPiAwKSB7DQo+ICAJCQkJYXJjX2hkcl9jbGVhcl9mbGFncyho ZHIsDQo+ICAJCQkJICAgIEFSQ19GTEFHX1BSRUZFVENIIHwNCj4gIAkJCQkgICAgQVJDX0ZMQUdf UFJFU0NJRU5UX1BSRUZFVENIKTsNCj4gQEAgLTU2NzgsNyArNTY4NSw3IEBAIGFyY19yZWFkX2Rv bmUoemlvX3QgKnppbykNCj4gIAkJQVNTRVJUM1AoaGRyLT5iX2wxaGRyLmJfcGFiZCwgIT0sIE5V TEwpOw0KPiAgCX0NCj4gIA0KPiAtCUFTU0VSVChyZWZjb3VudF9pc196ZXJvKCZoZHItPmJfbDFo ZHIuYl9yZWZjbnQpIHx8DQo+ICsJQVNTRVJUKHpmc19yZWZjb3VudF9pc196ZXJvKCZoZHItPmJf bDFoZHIuYl9yZWZjbnQpIHx8DQo+ICAJICAgIGNhbGxiYWNrX2xpc3QgIT0gTlVMTCk7DQo+ICAN Cj4gIAlpZiAobm9femlvX2Vycm9yKSB7DQo+IEBAIC01Njg5LDcgKzU2OTYsNyBAQCBhcmNfcmVh ZF9kb25lKHppb190ICp6aW8pDQo+ICAJCQlhcmNfY2hhbmdlX3N0YXRlKGFyY19hbm9uLCBoZHIs IGhhc2hfbG9jayk7DQo+ICAJCWlmIChIRFJfSU5fSEFTSF9UQUJMRShoZHIpKQ0KPiAgCQkJYnVm X2hhc2hfcmVtb3ZlKGhkcik7DQo+IC0JCWZyZWVhYmxlID0gcmVmY291bnRfaXNfemVybygmaGRy LT5iX2wxaGRyLmJfcmVmY250KTsNCj4gKwkJZnJlZWFibGUgPSB6ZnNfcmVmY291bnRfaXNfemVy bygmaGRyLT5iX2wxaGRyLmJfcmVmY250KTsNCj4gIAl9DQo+ICANCj4gIAkvKg0KPiBAQCAtNTcw OSw3ICs1NzE2LDcgQEAgYXJjX3JlYWRfZG9uZSh6aW9fdCAqemlvKQ0KPiAgCQkgKiBpbiB0aGUg Y2FjaGUpLg0KPiAgCQkgKi8NCj4gIAkJQVNTRVJUM1AoaGRyLT5iX2wxaGRyLmJfc3RhdGUsID09 LCBhcmNfYW5vbik7DQo+IC0JCWZyZWVhYmxlID0gcmVmY291bnRfaXNfemVybygmaGRyLT5iX2wx aGRyLmJfcmVmY250KTsNCj4gKwkJZnJlZWFibGUgPSB6ZnNfcmVmY291bnRfaXNfemVybygmaGRy LT5iX2wxaGRyLmJfcmVmY250KTsNCj4gIAl9DQo+ICANCj4gIAkvKiBleGVjdXRlIGVhY2ggY2Fs bGJhY2sgYW5kIGZyZWUgaXRzIHN0cnVjdHVyZSAqLw0KPiBAQCAtNTg3NSw3ICs1ODgyLDcgQEAg dG9wOg0KPiAgCQkJQVNTRVJUKCh6aW9fZmxhZ3MgJiBaSU9fRkxBR19TUEVDVUxBVElWRSkgfHwN Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9PSAwIHx8IHJjICE9IEVOT0VOVCk7 DQo+ICAJCX0gZWxzZSBpZiAoKmFyY19mbGFncyAmIEFSQ19GTEFHX1BSRUZFVENIICYmDQo+IC0J CSAgICByZWZjb3VudF9jb3VudCgmaGRyLT5iX2wxaGRyLmJfcmVmY250KSA9PSAwKSB7DQo+ICsJ CSAgICB6ZnNfcmVmY291bnRfY291bnQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCkgPT0gMCkgew0K PiAgCQkJYXJjX2hkcl9zZXRfZmxhZ3MoaGRyLCBBUkNfRkxBR19QUkVGRVRDSCk7DQo+ICAJCX0N Cj4gIAkJRFRSQUNFX1BST0JFMShhcmNfX2hpdCwgYXJjX2J1Zl9oZHJfdCAqLCBoZHIpOw0KPiBA QCAtNTkzMyw3ICs1OTQwLDcgQEAgdG9wOg0KPiAgCQkJQVNTRVJUM1AoaGRyLT5iX2wxaGRyLmJf cGFiZCwgPT0sIE5VTEwpOw0KPiAgCQkJQVNTRVJUKEdIT1NUX1NUQVRFKGhkci0+Yl9sMWhkci5i X3N0YXRlKSk7DQo+ICAJCQlBU1NFUlQoIUhEUl9JT19JTl9QUk9HUkVTUyhoZHIpKTsNCj4gLQkJ CUFTU0VSVChyZWZjb3VudF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gKwkJ CUFTU0VSVCh6ZnNfcmVmY291bnRfaXNfemVybygmaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7DQo+ ICAJCQlBU1NFUlQzUChoZHItPmJfbDFoZHIuYl9idWYsID09LCBOVUxMKTsNCj4gIAkJCUFTU0VS VDNQKGhkci0+Yl9sMWhkci5iX2ZyZWV6ZV9ja3N1bSwgPT0sIE5VTEwpOw0KPiAgDQo+IEBAIC02 MTU0LDEwICs2MTYxLDEwIEBAIGFyY19hZGRfcHJ1bmVfY2FsbGJhY2soYXJjX3BydW5lX2Z1bmNf dCAqZnVuYywgdm9pZCAqcA0KPiAgCXAtPnBfcGZ1bmMgPSBmdW5jOw0KPiAgCXAtPnBfcHJpdmF0 ZSA9IHByaXZhdGU7DQo+ICAJbGlzdF9saW5rX2luaXQoJnAtPnBfbm9kZSk7DQo+IC0JcmVmY291 bnRfY3JlYXRlKCZwLT5wX3JlZmNudCk7DQo+ICsJemZzX3JlZmNvdW50X2NyZWF0ZSgmcC0+cF9y ZWZjbnQpOw0KPiAgDQo+ICAJbXV0ZXhfZW50ZXIoJmFyY19wcnVuZV9tdHgpOw0KPiAtCXJlZmNv dW50X2FkZCgmcC0+cF9yZWZjbnQsICZhcmNfcHJ1bmVfbGlzdCk7DQo+ICsJemZzX3JlZmNvdW50 X2FkZCgmcC0+cF9yZWZjbnQsICZhcmNfcHJ1bmVfbGlzdCk7DQo+ICAJbGlzdF9pbnNlcnRfaGVh ZCgmYXJjX3BydW5lX2xpc3QsIHApOw0KPiAgCW11dGV4X2V4aXQoJmFyY19wcnVuZV9tdHgpOw0K PiAgDQo+IEBAIC02MTcwLDE1ICs2MTc3LDE1IEBAIGFyY19yZW1vdmVfcHJ1bmVfY2FsbGJhY2so YXJjX3BydW5lX3QgKnApDQo+ICAJYm9vbGVhbl90IHdhaXQgPSBCX0ZBTFNFOw0KPiAgCW11dGV4 X2VudGVyKCZhcmNfcHJ1bmVfbXR4KTsNCj4gIAlsaXN0X3JlbW92ZSgmYXJjX3BydW5lX2xpc3Qs IHApOw0KPiAtCWlmIChyZWZjb3VudF9yZW1vdmUoJnAtPnBfcmVmY250LCAmYXJjX3BydW5lX2xp c3QpID4gMCkNCj4gKwlpZiAoemZzX3JlZmNvdW50X3JlbW92ZSgmcC0+cF9yZWZjbnQsICZhcmNf cHJ1bmVfbGlzdCkgPiAwKQ0KPiAgCQl3YWl0ID0gQl9UUlVFOw0KPiAgCW11dGV4X2V4aXQoJmFy Y19wcnVuZV9tdHgpOw0KPiAgDQo+ICAJLyogd2FpdCBmb3IgYXJjX3BydW5lX3Rhc2sgdG8gZmlu aXNoICovDQo+ICAJaWYgKHdhaXQpDQo+ICAJCXRhc2txX3dhaXQoYXJjX3BydW5lX3Rhc2txKTsN Cj4gLQlBU1NFUlQwKHJlZmNvdW50X2NvdW50KCZwLT5wX3JlZmNudCkpOw0KPiAtCXJlZmNvdW50 X2Rlc3Ryb3koJnAtPnBfcmVmY250KTsNCj4gKwlBU1NFUlQwKHpmc19yZWZjb3VudF9jb3VudCgm cC0+cF9yZWZjbnQpKTsNCj4gKwl6ZnNfcmVmY291bnRfZGVzdHJveSgmcC0+cF9yZWZjbnQpOw0K PiAgCWttZW1fZnJlZShwLCBzaXplb2YgKCpwKSk7DQo+ICB9DQo+ICANCj4gQEAgLTYyMjEsNyAr NjIyOCw3IEBAIGFyY19mcmVlZChzcGFfdCAqc3BhLCBjb25zdCBibGtwdHJfdCAqYnApDQo+ICAJ ICogdGhpcyBoZHIsIHRoZW4gd2UgZG9uJ3QgZGVzdHJveSB0aGUgaGRyLg0KPiAgCSAqLw0KPiAg CWlmICghSERSX0hBU19MMUhEUihoZHIpIHx8ICghSERSX0lPX0lOX1BST0dSRVNTKGhkcikgJiYN Cj4gLQkgICAgcmVmY291bnRfaXNfemVybygmaGRyLT5iX2wxaGRyLmJfcmVmY250KSkpIHsNCj4g KwkgICAgemZzX3JlZmNvdW50X2lzX3plcm8oJmhkci0+Yl9sMWhkci5iX3JlZmNudCkpKSB7DQo+ ICAJCWFyY19jaGFuZ2Vfc3RhdGUoYXJjX2Fub24sIGhkciwgaGFzaF9sb2NrKTsNCj4gIAkJYXJj X2hkcl9kZXN0cm95KGhkcik7DQo+ICAJCW11dGV4X2V4aXQoaGFzaF9sb2NrKTsNCj4gQEAgLTYy NjQsNyArNjI3MSw3IEBAIGFyY19yZWxlYXNlKGFyY19idWZfdCAqYnVmLCB2b2lkICp0YWcpDQo+ ICAJCUFTU0VSVCghSERSX0hBU19MMkhEUihoZHIpKTsNCj4gIAkJQVNTRVJUKEhEUl9FTVBUWSho ZHIpKTsNCj4gIAkJQVNTRVJUM1UoaGRyLT5iX2wxaGRyLmJfYnVmY250LCA9PSwgMSk7DQo+IC0J CUFTU0VSVDNTKHJlZmNvdW50X2NvdW50KCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpLCA9PSwgMSk7 DQo+ICsJCUFTU0VSVDNTKHpmc19yZWZjb3VudF9jb3VudCgmaGRyLT5iX2wxaGRyLmJfcmVmY250 KSwgPT0sIDEpOw0KPiAgCQlBU1NFUlQoIWxpc3RfbGlua19hY3RpdmUoJmhkci0+Yl9sMWhkci5i X2FyY19ub2RlKSk7DQo+ICANCj4gIAkJaGRyLT5iX2wxaGRyLmJfYXJjX2FjY2VzcyA9IDA7DQo+ IEBAIC02MjkyLDcgKzYyOTksNyBAQCBhcmNfcmVsZWFzZShhcmNfYnVmX3QgKmJ1Ziwgdm9pZCAq dGFnKQ0KPiAgCUFTU0VSVDNQKHN0YXRlLCAhPSwgYXJjX2Fub24pOw0KPiAgDQo+ICAJLyogdGhp cyBidWZmZXIgaXMgbm90IG9uIGFueSBsaXN0ICovDQo+IC0JQVNTRVJUM1MocmVmY291bnRfY291 bnQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCksID4sIDApOw0KPiArCUFTU0VSVDNTKHpmc19yZWZj b3VudF9jb3VudCgmaGRyLT5iX2wxaGRyLmJfcmVmY250KSwgPiwgMCk7DQo+ICANCj4gIAlpZiAo SERSX0hBU19MMkhEUihoZHIpKSB7DQo+ICAJCW11dGV4X2VudGVyKCZoZHItPmJfbDJoZHIuYl9k ZXYtPmwyYWRfbXR4KTsNCj4gQEAgLTYzODQsMTIgKzYzOTEsMTMgQEAgYXJjX3JlbGVhc2UoYXJj X2J1Zl90ICpidWYsIHZvaWQgKnRhZykNCj4gIAkJQVNTRVJUM1AoaGRyLT5iX2wxaGRyLmJfcGFi ZCwgIT0sIE5VTEwpOw0KPiAgCQlBU1NFUlQzUChzdGF0ZSwgIT0sIGFyY19sMmNfb25seSk7DQo+ ICANCj4gLQkJKHZvaWQpIHJlZmNvdW50X3JlbW92ZV9tYW55KCZzdGF0ZS0+YXJjc19zaXplLA0K PiArCQkodm9pZCkgemZzX3JlZmNvdW50X3JlbW92ZV9tYW55KCZzdGF0ZS0+YXJjc19zaXplLA0K PiAgCQkgICAgYXJjX2J1Zl9zaXplKGJ1ZiksIGJ1Zik7DQo+ICANCj4gLQkJaWYgKHJlZmNvdW50 X2lzX3plcm8oJmhkci0+Yl9sMWhkci5iX3JlZmNudCkpIHsNCj4gKwkJaWYgKHpmc19yZWZjb3Vu dF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKSB7DQo+ICAJCQlBU1NFUlQzUChzdGF0 ZSwgIT0sIGFyY19sMmNfb25seSk7DQo+IC0JCQkodm9pZCkgcmVmY291bnRfcmVtb3ZlX21hbnko JnN0YXRlLT5hcmNzX2VzaXplW3R5cGVdLA0KPiArCQkJKHZvaWQpIHpmc19yZWZjb3VudF9yZW1v dmVfbWFueSgNCj4gKwkJCSAgICAmc3RhdGUtPmFyY3NfZXNpemVbdHlwZV0sDQo+ICAJCQkgICAg YXJjX2J1Zl9zaXplKGJ1ZiksIGJ1Zik7DQo+ICAJCX0NCj4gIA0KPiBAQCAtNjQwOCwyMSArNjQx NiwyMSBAQCBhcmNfcmVsZWFzZShhcmNfYnVmX3QgKmJ1Ziwgdm9pZCAqdGFnKQ0KPiAgCQluaGRy ID0gYXJjX2hkcl9hbGxvYyhzcGEsIHBzaXplLCBsc2l6ZSwgY29tcHJlc3MsIHR5cGUpOw0KPiAg CQlBU1NFUlQzUChuaGRyLT5iX2wxaGRyLmJfYnVmLCA9PSwgTlVMTCk7DQo+ICAJCUFTU0VSVDAo bmhkci0+Yl9sMWhkci5iX2J1ZmNudCk7DQo+IC0JCUFTU0VSVDAocmVmY291bnRfY291bnQoJm5o ZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gKwkJQVNTRVJUMCh6ZnNfcmVmY291bnRfY291bnQo Jm5oZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gIAkJVkVSSUZZM1Uobmhkci0+Yl90eXBlLCA9 PSwgdHlwZSk7DQo+ICAJCUFTU0VSVCghSERSX1NIQVJFRF9EQVRBKG5oZHIpKTsNCj4gIA0KPiAg CQluaGRyLT5iX2wxaGRyLmJfYnVmID0gYnVmOw0KPiAgCQluaGRyLT5iX2wxaGRyLmJfYnVmY250 ID0gMTsNCj4gLQkJKHZvaWQpIHJlZmNvdW50X2FkZCgmbmhkci0+Yl9sMWhkci5iX3JlZmNudCwg dGFnKTsNCj4gKwkJKHZvaWQpIHpmc19yZWZjb3VudF9hZGQoJm5oZHItPmJfbDFoZHIuYl9yZWZj bnQsIHRhZyk7DQo+ICAJCWJ1Zi0+Yl9oZHIgPSBuaGRyOw0KPiAgDQo+ICAJCW11dGV4X2V4aXQo JmJ1Zi0+Yl9ldmljdF9sb2NrKTsNCj4gLQkJKHZvaWQpIHJlZmNvdW50X2FkZF9tYW55KCZhcmNf YW5vbi0+YXJjc19zaXplLA0KPiArCQkodm9pZCkgemZzX3JlZmNvdW50X2FkZF9tYW55KCZhcmNf YW5vbi0+YXJjc19zaXplLA0KPiAgCQkgICAgYXJjX2J1Zl9zaXplKGJ1ZiksIGJ1Zik7DQo+ICAJ fSBlbHNlIHsNCj4gIAkJbXV0ZXhfZXhpdCgmYnVmLT5iX2V2aWN0X2xvY2spOw0KPiAtCQlBU1NF UlQocmVmY291bnRfY291bnQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCkgPT0gMSk7DQo+ICsJCUFT U0VSVCh6ZnNfcmVmY291bnRfY291bnQoJmhkci0+Yl9sMWhkci5iX3JlZmNudCkgPT0gMSk7DQo+ ICAJCS8qIHByb3RlY3RlZCBieSBoYXNoIGxvY2ssIG9yIGhkciBpcyBvbiBhcmNfYW5vbiAqLw0K PiAgCQlBU1NFUlQoIW11bHRpbGlzdF9saW5rX2FjdGl2ZSgmaGRyLT5iX2wxaGRyLmJfYXJjX25v ZGUpKTsNCj4gIAkJQVNTRVJUKCFIRFJfSU9fSU5fUFJPR1JFU1MoaGRyKSk7DQo+IEBAIC02NDU0 LDcgKzY0NjIsNyBAQCBhcmNfcmVmZXJlbmNlZChhcmNfYnVmX3QgKmJ1ZikNCj4gIAlpbnQgcmVm ZXJlbmNlZDsNCj4gIA0KPiAgCW11dGV4X2VudGVyKCZidWYtPmJfZXZpY3RfbG9jayk7DQo+IC0J cmVmZXJlbmNlZCA9IChyZWZjb3VudF9jb3VudCgmYnVmLT5iX2hkci0+Yl9sMWhkci5iX3JlZmNu dCkpOw0KPiArCXJlZmVyZW5jZWQgPSAoemZzX3JlZmNvdW50X2NvdW50KCZidWYtPmJfaGRyLT5i X2wxaGRyLmJfcmVmY250KSk7DQo+ICAJbXV0ZXhfZXhpdCgmYnVmLT5iX2V2aWN0X2xvY2spOw0K PiAgCXJldHVybiAocmVmZXJlbmNlZCk7DQo+ICB9DQo+IEBAIC02NDY5LDcgKzY0NzcsNyBAQCBh cmNfd3JpdGVfcmVhZHkoemlvX3QgKnppbykNCj4gIAl1aW50NjRfdCBwc2l6ZSA9IEJQX0lTX0hP TEUoemlvLT5pb19icCkgPyAwIDogQlBfR0VUX1BTSVpFKHppby0+aW9fYnApOw0KPiAgDQo+ICAJ QVNTRVJUKEhEUl9IQVNfTDFIRFIoaGRyKSk7DQo+IC0JQVNTRVJUKCFyZWZjb3VudF9pc196ZXJv KCZidWYtPmJfaGRyLT5iX2wxaGRyLmJfcmVmY250KSk7DQo+ICsJQVNTRVJUKCF6ZnNfcmVmY291 bnRfaXNfemVybygmYnVmLT5iX2hkci0+Yl9sMWhkci5iX3JlZmNudCkpOw0KPiAgCUFTU0VSVCho ZHItPmJfbDFoZHIuYl9idWZjbnQgPiAwKTsNCj4gIA0KPiAgCS8qDQo+IEBAIC02NjI0LDcgKzY2 MzIsNyBAQCBhcmNfd3JpdGVfZG9uZSh6aW9fdCAqemlvKQ0KPiAgCQkJCWlmICghQlBfRVFVQUwo Jnppby0+aW9fYnBfb3JpZywgemlvLT5pb19icCkpDQo+ICAJCQkJCXBhbmljKCJiYWQgb3Zlcndy aXRlLCBoZHI9JXAgZXhpc3RzPSVwIiwNCj4gIAkJCQkJICAgICh2b2lkICopaGRyLCAodm9pZCAq KWV4aXN0cyk7DQo+IC0JCQkJQVNTRVJUKHJlZmNvdW50X2lzX3plcm8oDQo+ICsJCQkJQVNTRVJU KHpmc19yZWZjb3VudF9pc196ZXJvKA0KPiAgCQkJCSAgICAmZXhpc3RzLT5iX2wxaGRyLmJfcmVm Y250KSk7DQo+ICAJCQkJYXJjX2NoYW5nZV9zdGF0ZShhcmNfYW5vbiwgZXhpc3RzLCBoYXNoX2xv Y2spOw0KPiAgCQkJCW11dGV4X2V4aXQoaGFzaF9sb2NrKTsNCj4gQEAgLTY2NTQsNyArNjY2Miw3 IEBAIGFyY193cml0ZV9kb25lKHppb190ICp6aW8pDQo+ICAJCWFyY19oZHJfY2xlYXJfZmxhZ3Mo aGRyLCBBUkNfRkxBR19JT19JTl9QUk9HUkVTUyk7DQo+ICAJfQ0KPiAgDQo+IC0JQVNTRVJUKCFy ZWZjb3VudF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gKwlBU1NFUlQoIXpm c19yZWZjb3VudF9pc196ZXJvKCZoZHItPmJfbDFoZHIuYl9yZWZjbnQpKTsNCj4gIAljYWxsYmFj ay0+YXdjYl9kb25lKHppbywgYnVmLCBjYWxsYmFjay0+YXdjYl9wcml2YXRlKTsNCj4gIA0KPiAg CWFiZF9wdXQoemlvLT5pb19hYmQpOw0KPiBAQCAtNjgwMCw3ICs2ODA4LDcgQEAgYXJjX3RlbXBy ZXNlcnZlX3NwYWNlKHNwYV90ICpzcGEsIHVpbnQ2NF90IHJlc2VydmUsIHVpDQo+ICAJLyogYXNz ZXJ0IHRoYXQgaXQgaGFzIG5vdCB3cmFwcGVkIGFyb3VuZCAqLw0KPiAgCUFTU0VSVDNTKGF0b21p Y19hZGRfNjRfbnYoJmFyY19sb2FuZWRfYnl0ZXMsIDApLCA+PSwgMCk7DQo+ICANCj4gLQlhbm9u X3NpemUgPSBNQVgoKGludDY0X3QpKHJlZmNvdW50X2NvdW50KCZhcmNfYW5vbi0+YXJjc19zaXpl KSAtDQo+ICsJYW5vbl9zaXplID0gTUFYKChpbnQ2NF90KSh6ZnNfcmVmY291bnRfY291bnQoJmFy Y19hbm9uLT5hcmNzX3NpemUpIC0NCj4gIAkgICAgYXJjX2xvYW5lZF9ieXRlcyksIDApOw0KPiAg DQo+ICAJLyoNCj4gQEAgLTY4MzUsOSArNjg0MywxMCBAQCBhcmNfdGVtcHJlc2VydmVfc3BhY2Uo c3BhX3QgKnNwYSwgdWludDY0X3QgcmVzZXJ2ZSwgdWkNCj4gIAkgICAgYW5vbl9zaXplID4gYXJj X2MgKiB6ZnNfYXJjX2Fub25fbGltaXRfcGVyY2VudCAvIDEwMCAmJg0KPiAgCSAgICBzcGFfZGly dHlfYW5vbiA+IGFub25fc2l6ZSAqIHpmc19hcmNfcG9vbF9kaXJ0eV9wZXJjZW50IC8gMTAwKSB7 DQo+ICAJCXVpbnQ2NF90IG1ldGFfZXNpemUgPQ0KPiAtCQkgICAgcmVmY291bnRfY291bnQoJmFy Y19hbm9uLT5hcmNzX2VzaXplW0FSQ19CVUZDX01FVEFEQVRBXSk7DQo+ICsJCSAgICB6ZnNfcmVm Y291bnRfY291bnQoDQo+ICsJCSAgICAmYXJjX2Fub24tPmFyY3NfZXNpemVbQVJDX0JVRkNfTUVU QURBVEFdKTsNCj4gIAkJdWludDY0X3QgZGF0YV9lc2l6ZSA9DQo+IC0JCSAgICByZWZjb3VudF9j b3VudCgmYXJjX2Fub24tPmFyY3NfZXNpemVbQVJDX0JVRkNfREFUQV0pOw0KPiArCQkgICAgemZz X3JlZmNvdW50X2NvdW50KCZhcmNfYW5vbi0+YXJjc19lc2l6ZVtBUkNfQlVGQ19EQVRBXSk7DQo+ ICAJCWRwcmludGYoImZhaWxpbmcsIGFyY190ZW1wcmVzZXJ2ZT0lbGx1SyBhbm9uX21ldGE9JWxs dUsgIg0KPiAgCQkgICAgImFub25fZGF0YT0lbGx1SyB0ZW1wcmVzZXJ2ZT0lbGx1SyBhcmNfYz0l bGx1S1xuIiwNCj4gIAkJICAgIGFyY190ZW1wcmVzZXJ2ZSA+PiAxMCwgbWV0YV9lc2l6ZSA+PiAx MCwNCj4gQEAgLTY4NTIsMTEgKzY4NjEsMTEgQEAgc3RhdGljIHZvaWQNCj4gIGFyY19rc3RhdF91 cGRhdGVfc3RhdGUoYXJjX3N0YXRlX3QgKnN0YXRlLCBrc3RhdF9uYW1lZF90ICpzaXplLA0KPiAg ICAgIGtzdGF0X25hbWVkX3QgKmV2aWN0X2RhdGEsIGtzdGF0X25hbWVkX3QgKmV2aWN0X21ldGFk YXRhKQ0KPiAgew0KPiAtCXNpemUtPnZhbHVlLnVpNjQgPSByZWZjb3VudF9jb3VudCgmc3RhdGUt PmFyY3Nfc2l6ZSk7DQo+ICsJc2l6ZS0+dmFsdWUudWk2NCA9IHpmc19yZWZjb3VudF9jb3VudCgm c3RhdGUtPmFyY3Nfc2l6ZSk7DQo+ICAJZXZpY3RfZGF0YS0+dmFsdWUudWk2NCA9DQo+IC0JICAg IHJlZmNvdW50X2NvdW50KCZzdGF0ZS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19EQVRBXSk7DQo+ICsJ ICAgIHpmc19yZWZjb3VudF9jb3VudCgmc3RhdGUtPmFyY3NfZXNpemVbQVJDX0JVRkNfREFUQV0p Ow0KPiAgCWV2aWN0X21ldGFkYXRhLT52YWx1ZS51aTY0ID0NCj4gLQkgICAgcmVmY291bnRfY291 bnQoJnN0YXRlLT5hcmNzX2VzaXplW0FSQ19CVUZDX01FVEFEQVRBXSk7DQo+ICsJICAgIHpmc19y ZWZjb3VudF9jb3VudCgmc3RhdGUtPmFyY3NfZXNpemVbQVJDX0JVRkNfTUVUQURBVEFdKTsNCj4g IH0NCj4gIA0KPiAgc3RhdGljIGludA0KPiBAQCAtNzAyNSwyNSArNzAzNCwyNSBAQCBhcmNfc3Rh dGVfaW5pdCh2b2lkKQ0KPiAgCSAgICBvZmZzZXRvZihhcmNfYnVmX2hkcl90LCBiX2wxaGRyLmJf YXJjX25vZGUpLA0KPiAgCSAgICBhcmNfc3RhdGVfbXVsdGlsaXN0X2luZGV4X2Z1bmMpOw0KPiAg DQo+IC0JcmVmY291bnRfY3JlYXRlKCZhcmNfYW5vbi0+YXJjc19lc2l6ZVtBUkNfQlVGQ19NRVRB REFUQV0pOw0KPiAtCXJlZmNvdW50X2NyZWF0ZSgmYXJjX2Fub24tPmFyY3NfZXNpemVbQVJDX0JV RkNfREFUQV0pOw0KPiAtCXJlZmNvdW50X2NyZWF0ZSgmYXJjX21ydS0+YXJjc19lc2l6ZVtBUkNf QlVGQ19NRVRBREFUQV0pOw0KPiAtCXJlZmNvdW50X2NyZWF0ZSgmYXJjX21ydS0+YXJjc19lc2l6 ZVtBUkNfQlVGQ19EQVRBXSk7DQo+IC0JcmVmY291bnRfY3JlYXRlKCZhcmNfbXJ1X2dob3N0LT5h cmNzX2VzaXplW0FSQ19CVUZDX01FVEFEQVRBXSk7DQo+IC0JcmVmY291bnRfY3JlYXRlKCZhcmNf bXJ1X2dob3N0LT5hcmNzX2VzaXplW0FSQ19CVUZDX0RBVEFdKTsNCj4gLQlyZWZjb3VudF9jcmVh dGUoJmFyY19tZnUtPmFyY3NfZXNpemVbQVJDX0JVRkNfTUVUQURBVEFdKTsNCj4gLQlyZWZjb3Vu dF9jcmVhdGUoJmFyY19tZnUtPmFyY3NfZXNpemVbQVJDX0JVRkNfREFUQV0pOw0KPiAtCXJlZmNv dW50X2NyZWF0ZSgmYXJjX21mdV9naG9zdC0+YXJjc19lc2l6ZVtBUkNfQlVGQ19NRVRBREFUQV0p Ow0KPiAtCXJlZmNvdW50X2NyZWF0ZSgmYXJjX21mdV9naG9zdC0+YXJjc19lc2l6ZVtBUkNfQlVG Q19EQVRBXSk7DQo+IC0JcmVmY291bnRfY3JlYXRlKCZhcmNfbDJjX29ubHktPmFyY3NfZXNpemVb QVJDX0JVRkNfTUVUQURBVEFdKTsNCj4gLQlyZWZjb3VudF9jcmVhdGUoJmFyY19sMmNfb25seS0+ YXJjc19lc2l6ZVtBUkNfQlVGQ19EQVRBXSk7DQo+ICsJemZzX3JlZmNvdW50X2NyZWF0ZSgmYXJj X2Fub24tPmFyY3NfZXNpemVbQVJDX0JVRkNfTUVUQURBVEFdKTsNCj4gKwl6ZnNfcmVmY291bnRf Y3JlYXRlKCZhcmNfYW5vbi0+YXJjc19lc2l6ZVtBUkNfQlVGQ19EQVRBXSk7DQo+ICsJemZzX3Jl ZmNvdW50X2NyZWF0ZSgmYXJjX21ydS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19NRVRBREFUQV0pOw0K PiArCXpmc19yZWZjb3VudF9jcmVhdGUoJmFyY19tcnUtPmFyY3NfZXNpemVbQVJDX0JVRkNfREFU QV0pOw0KPiArCXpmc19yZWZjb3VudF9jcmVhdGUoJmFyY19tcnVfZ2hvc3QtPmFyY3NfZXNpemVb QVJDX0JVRkNfTUVUQURBVEFdKTsNCj4gKwl6ZnNfcmVmY291bnRfY3JlYXRlKCZhcmNfbXJ1X2do b3N0LT5hcmNzX2VzaXplW0FSQ19CVUZDX0RBVEFdKTsNCj4gKwl6ZnNfcmVmY291bnRfY3JlYXRl KCZhcmNfbWZ1LT5hcmNzX2VzaXplW0FSQ19CVUZDX01FVEFEQVRBXSk7DQo+ICsJemZzX3JlZmNv dW50X2NyZWF0ZSgmYXJjX21mdS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19EQVRBXSk7DQo+ICsJemZz X3JlZmNvdW50X2NyZWF0ZSgmYXJjX21mdV9naG9zdC0+YXJjc19lc2l6ZVtBUkNfQlVGQ19NRVRB REFUQV0pOw0KPiArCXpmc19yZWZjb3VudF9jcmVhdGUoJmFyY19tZnVfZ2hvc3QtPmFyY3NfZXNp emVbQVJDX0JVRkNfREFUQV0pOw0KPiArCXpmc19yZWZjb3VudF9jcmVhdGUoJmFyY19sMmNfb25s eS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19NRVRBREFUQV0pOw0KPiArCXpmc19yZWZjb3VudF9jcmVh dGUoJmFyY19sMmNfb25seS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19EQVRBXSk7DQo+ICANCj4gLQly ZWZjb3VudF9jcmVhdGUoJmFyY19hbm9uLT5hcmNzX3NpemUpOw0KPiAtCXJlZmNvdW50X2NyZWF0 ZSgmYXJjX21ydS0+YXJjc19zaXplKTsNCj4gLQlyZWZjb3VudF9jcmVhdGUoJmFyY19tcnVfZ2hv c3QtPmFyY3Nfc2l6ZSk7DQo+IC0JcmVmY291bnRfY3JlYXRlKCZhcmNfbWZ1LT5hcmNzX3NpemUp Ow0KPiAtCXJlZmNvdW50X2NyZWF0ZSgmYXJjX21mdV9naG9zdC0+YXJjc19zaXplKTsNCj4gLQly ZWZjb3VudF9jcmVhdGUoJmFyY19sMmNfb25seS0+YXJjc19zaXplKTsNCj4gKwl6ZnNfcmVmY291 bnRfY3JlYXRlKCZhcmNfYW5vbi0+YXJjc19zaXplKTsNCj4gKwl6ZnNfcmVmY291bnRfY3JlYXRl KCZhcmNfbXJ1LT5hcmNzX3NpemUpOw0KPiArCXpmc19yZWZjb3VudF9jcmVhdGUoJmFyY19tcnVf Z2hvc3QtPmFyY3Nfc2l6ZSk7DQo+ICsJemZzX3JlZmNvdW50X2NyZWF0ZSgmYXJjX21mdS0+YXJj c19zaXplKTsNCj4gKwl6ZnNfcmVmY291bnRfY3JlYXRlKCZhcmNfbWZ1X2dob3N0LT5hcmNzX3Np emUpOw0KPiArCXpmc19yZWZjb3VudF9jcmVhdGUoJmFyY19sMmNfb25seS0+YXJjc19zaXplKTsN Cj4gIA0KPiAgCWFnZ3N1bV9pbml0KCZhcmNfbWV0YV91c2VkLCAwKTsNCj4gIAlhZ2dzdW1faW5p dCgmYXJjX3NpemUsIDApOw0KPiBAQCAtNzA1OSwyNSArNzA2OCwyNSBAQCBhcmNfc3RhdGVfaW5p dCh2b2lkKQ0KPiAgc3RhdGljIHZvaWQNCj4gIGFyY19zdGF0ZV9maW5pKHZvaWQpDQo+ICB7DQo+ IC0JcmVmY291bnRfZGVzdHJveSgmYXJjX2Fub24tPmFyY3NfZXNpemVbQVJDX0JVRkNfTUVUQURB VEFdKTsNCj4gLQlyZWZjb3VudF9kZXN0cm95KCZhcmNfYW5vbi0+YXJjc19lc2l6ZVtBUkNfQlVG Q19EQVRBXSk7DQo+IC0JcmVmY291bnRfZGVzdHJveSgmYXJjX21ydS0+YXJjc19lc2l6ZVtBUkNf QlVGQ19NRVRBREFUQV0pOw0KPiAtCXJlZmNvdW50X2Rlc3Ryb3koJmFyY19tcnUtPmFyY3NfZXNp emVbQVJDX0JVRkNfREFUQV0pOw0KPiAtCXJlZmNvdW50X2Rlc3Ryb3koJmFyY19tcnVfZ2hvc3Qt PmFyY3NfZXNpemVbQVJDX0JVRkNfTUVUQURBVEFdKTsNCj4gLQlyZWZjb3VudF9kZXN0cm95KCZh cmNfbXJ1X2dob3N0LT5hcmNzX2VzaXplW0FSQ19CVUZDX0RBVEFdKTsNCj4gLQlyZWZjb3VudF9k ZXN0cm95KCZhcmNfbWZ1LT5hcmNzX2VzaXplW0FSQ19CVUZDX01FVEFEQVRBXSk7DQo+IC0JcmVm Y291bnRfZGVzdHJveSgmYXJjX21mdS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19EQVRBXSk7DQo+IC0J cmVmY291bnRfZGVzdHJveSgmYXJjX21mdV9naG9zdC0+YXJjc19lc2l6ZVtBUkNfQlVGQ19NRVRB REFUQV0pOw0KPiAtCXJlZmNvdW50X2Rlc3Ryb3koJmFyY19tZnVfZ2hvc3QtPmFyY3NfZXNpemVb QVJDX0JVRkNfREFUQV0pOw0KPiAtCXJlZmNvdW50X2Rlc3Ryb3koJmFyY19sMmNfb25seS0+YXJj c19lc2l6ZVtBUkNfQlVGQ19NRVRBREFUQV0pOw0KPiAtCXJlZmNvdW50X2Rlc3Ryb3koJmFyY19s MmNfb25seS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19EQVRBXSk7DQo+ICsJemZzX3JlZmNvdW50X2Rl c3Ryb3koJmFyY19hbm9uLT5hcmNzX2VzaXplW0FSQ19CVUZDX01FVEFEQVRBXSk7DQo+ICsJemZz X3JlZmNvdW50X2Rlc3Ryb3koJmFyY19hbm9uLT5hcmNzX2VzaXplW0FSQ19CVUZDX0RBVEFdKTsN Cj4gKwl6ZnNfcmVmY291bnRfZGVzdHJveSgmYXJjX21ydS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19N RVRBREFUQV0pOw0KPiArCXpmc19yZWZjb3VudF9kZXN0cm95KCZhcmNfbXJ1LT5hcmNzX2VzaXpl W0FSQ19CVUZDX0RBVEFdKTsNCj4gKwl6ZnNfcmVmY291bnRfZGVzdHJveSgmYXJjX21ydV9naG9z dC0+YXJjc19lc2l6ZVtBUkNfQlVGQ19NRVRBREFUQV0pOw0KPiArCXpmc19yZWZjb3VudF9kZXN0 cm95KCZhcmNfbXJ1X2dob3N0LT5hcmNzX2VzaXplW0FSQ19CVUZDX0RBVEFdKTsNCj4gKwl6ZnNf cmVmY291bnRfZGVzdHJveSgmYXJjX21mdS0+YXJjc19lc2l6ZVtBUkNfQlVGQ19NRVRBREFUQV0p Ow0KPiArCXpmc19yZWZjb3VudF9kZXN0cm95KCZhcmNfbWZ1LT5hcmNzX2VzaXplW0FSQ19CVUZD X0RBVEFdKTsNCj4gKwl6ZnNfcmVmY291bnRfZGVzdHJveSgmYXJjX21mdV9naG9zdC0+YXJjc19l c2l6ZVtBUkNfQlVGQ19NRVRBREFUQV0pOw0KPiArCXpmc19yZWZjb3VudF9kZXN0cm95KCZhcmNf bWZ1X2dob3N0LT5hcmNzX2VzaXplW0FSQ19CVUZDX0RBVEFdKTsNCj4gKwl6ZnNfcmVmY291bnRf ZGVzdHJveSgmYXJjX2wyY19vbmx5LT5hcmNzX2VzaXplW0FSQ19CVUZDX01FVEFEQVRBXSk7DQo+ ICsJemZzX3JlZmNvdW50X2Rlc3Ryb3koJmFyY19sMmNfb25seS0+YXJjc19lc2l6ZVtBUkNfQlVG Q19EQVRBXSk7DQo+ICANCj4gLQlyZWZjb3VudF9kZXN0cm95KCZhcmNfYW5vbi0+YXJjc19zaXpl KTsNCj4gLQlyZWZjb3VudF9kZXN0cm95KCZhcmNfbXJ1LT5hcmNzX3NpemUpOw0KPiAtCXJlZmNv dW50X2Rlc3Ryb3koJmFyY19tcnVfZ2hvc3QtPmFyY3Nfc2l6ZSk7DQo+IC0JcmVmY291bnRfZGVz dHJveSgmYXJjX21mdS0+YXJjc19zaXplKTsNCj4gLQlyZWZjb3VudF9kZXN0cm95KCZhcmNfbWZ1 X2dob3N0LT5hcmNzX3NpemUpOw0KPiAtCXJlZmNvdW50X2Rlc3Ryb3koJmFyY19sMmNfb25seS0+ YXJjc19zaXplKTsNCj4gKwl6ZnNfcmVmY291bnRfZGVzdHJveSgmYXJjX2Fub24tPmFyY3Nfc2l6 ZSk7DQo+ICsJemZzX3JlZmNvdW50X2Rlc3Ryb3koJmFyY19tcnUtPmFyY3Nfc2l6ZSk7DQo+ICsJ emZzX3JlZmNvdW50X2Rlc3Ryb3koJmFyY19tcnVfZ2hvc3QtPmFyY3Nfc2l6ZSk7DQo+ICsJemZz X3JlZmNvdW50X2Rlc3Ryb3koJmFyY19tZnUtPmFyY3Nfc2l6ZSk7DQo+ICsJemZzX3JlZmNvdW50 X2Rlc3Ryb3koJmFyY19tZnVfZ2hvc3QtPmFyY3Nfc2l6ZSk7DQo+ICsJemZzX3JlZmNvdW50X2Rl c3Ryb3koJmFyY19sMmNfb25seS0+YXJjc19zaXplKTsNCj4gIA0KPiAgCW11bHRpbGlzdF9kZXN0 cm95KGFyY19tcnUtPmFyY3NfbGlzdFtBUkNfQlVGQ19NRVRBREFUQV0pOw0KPiAgCW11bHRpbGlz dF9kZXN0cm95KGFyY19tcnVfZ2hvc3QtPmFyY3NfbGlzdFtBUkNfQlVGQ19NRVRBREFUQV0pOw0K PiBAQCAtNzM1OSw4ICs3MzY4LDggQEAgYXJjX2Zpbmkodm9pZCkNCj4gIAltdXRleF9lbnRlcigm YXJjX3BydW5lX210eCk7DQo+ICAJd2hpbGUgKChwID0gbGlzdF9oZWFkKCZhcmNfcHJ1bmVfbGlz dCkpICE9IE5VTEwpIHsNCj4gIAkJbGlzdF9yZW1vdmUoJmFyY19wcnVuZV9saXN0LCBwKTsNCj4g LQkJcmVmY291bnRfcmVtb3ZlKCZwLT5wX3JlZmNudCwgJmFyY19wcnVuZV9saXN0KTsNCj4gLQkJ cmVmY291bnRfZGVzdHJveSgmcC0+cF9yZWZjbnQpOw0KPiArCQl6ZnNfcmVmY291bnRfcmVtb3Zl KCZwLT5wX3JlZmNudCwgJmFyY19wcnVuZV9saXN0KTsNCj4gKwkJemZzX3JlZmNvdW50X2Rlc3Ry b3koJnAtPnBfcmVmY250KTsNCj4gIAkJa21lbV9mcmVlKHAsIHNpemVvZiAoKnApKTsNCj4gIAl9 DQo+ICAJbXV0ZXhfZXhpdCgmYXJjX3BydW5lX210eCk7DQo+IEBAIC03Nzg3LDcgKzc3OTYsNyBA QCB0b3A6DQo+ICAJCQlBUkNTVEFUX0lOQ1IoYXJjc3RhdF9sMl9sc2l6ZSwgLUhEUl9HRVRfTFNJ WkUoaGRyKSk7DQo+ICANCj4gIAkJCWJ5dGVzX2Ryb3BwZWQgKz0gYXJjX2hkcl9zaXplKGhkcik7 DQo+IC0JCQkodm9pZCkgcmVmY291bnRfcmVtb3ZlX21hbnkoJmRldi0+bDJhZF9hbGxvYywNCj4g KwkJCSh2b2lkKSB6ZnNfcmVmY291bnRfcmVtb3ZlX21hbnkoJmRldi0+bDJhZF9hbGxvYywNCj4g IAkJCSAgICBhcmNfaGRyX3NpemUoaGRyKSwgaGRyKTsNCj4gIAkJfQ0KPiAgDQo+IEBAIC04MjA1 LDcgKzgyMTQsOCBAQCBsMmFyY193cml0ZV9idWZmZXJzKHNwYV90ICpzcGEsIGwyYXJjX2Rldl90 ICpkZXYsIHVpbnQNCj4gIAkJCWxpc3RfaW5zZXJ0X2hlYWQoJmRldi0+bDJhZF9idWZsaXN0LCBo ZHIpOw0KPiAgCQkJbXV0ZXhfZXhpdCgmZGV2LT5sMmFkX210eCk7DQo+ICANCj4gLQkJCSh2b2lk KSByZWZjb3VudF9hZGRfbWFueSgmZGV2LT5sMmFkX2FsbG9jLCBwc2l6ZSwgaGRyKTsNCj4gKwkJ CSh2b2lkKSB6ZnNfcmVmY291bnRfYWRkX21hbnkoJmRldi0+bDJhZF9hbGxvYywgcHNpemUsDQo+ ICsJCQkgICAgaGRyKTsNCj4gIA0KPiAgCQkJLyoNCj4gIAkJCSAqIE5vcm1hbGx5IHRoZSBMMkFS QyBjYW4gdXNlIHRoZSBoZHIncyBkYXRhLCBidXQgaWYNCj4gQEAgLTg0MzksNyArODQ0OSw3IEBA IGwyYXJjX2FkZF92ZGV2KHNwYV90ICpzcGEsIHZkZXZfdCAqdmQpDQo+ICAJICAgIG9mZnNldG9m KGFyY19idWZfaGRyX3QsIGJfbDJoZHIuYl9sMm5vZGUpKTsNCj4gIA0KPiAgCXZkZXZfc3BhY2Vf dXBkYXRlKHZkLCAwLCAwLCBhZGRkZXYtPmwyYWRfZW5kIC0gYWRkZGV2LT5sMmFkX2hhbmQpOw0K PiAtCXJlZmNvdW50X2NyZWF0ZSgmYWRkZGV2LT5sMmFkX2FsbG9jKTsNCj4gKwl6ZnNfcmVmY291 bnRfY3JlYXRlKCZhZGRkZXYtPmwyYWRfYWxsb2MpOw0KPiAgDQo+ICAJLyoNCj4gIAkgKiBBZGQg ZGV2aWNlIHRvIGdsb2JhbCBsaXN0DQo+IEBAIC04NDg1LDcgKzg0OTUsNyBAQCBsMmFyY19yZW1v dmVfdmRldih2ZGV2X3QgKnZkKQ0KPiAgCWwyYXJjX2V2aWN0KHJlbWRldiwgMCwgQl9UUlVFKTsN Cj4gIAlsaXN0X2Rlc3Ryb3koJnJlbWRldi0+bDJhZF9idWZsaXN0KTsNCj4gIAltdXRleF9kZXN0 cm95KCZyZW1kZXYtPmwyYWRfbXR4KTsNCj4gLQlyZWZjb3VudF9kZXN0cm95KCZyZW1kZXYtPmwy YWRfYWxsb2MpOw0KPiArCXpmc19yZWZjb3VudF9kZXN0cm95KCZyZW1kZXYtPmwyYWRfYWxsb2Mp Ow0KPiAgCWttZW1fZnJlZShyZW1kZXYsIHNpemVvZiAobDJhcmNfZGV2X3QpKTsNCj4gIH0NCj4g IA0KPiANCj4gTW9kaWZpZWQ6IGhlYWQvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMv Y29tbW9uL2ZzL3pmcy9kYnVmLmMNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IC0tLSBoZWFk L3N5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvZGJ1Zi5jCVR1 ZSBPY3QgMTUgMTQ6NTE6MjINCj4gMjAxOQkocjM1MzU2NCkgKysrIGhlYWQvc3lzL2NkZGwvY29u dHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9kYnVmLmMNCj4gVHVlIE9jdCAxNSAx NTowOTozNiAyMDE5CShyMzUzNTY1KSBAQCAtMjI2LDcgKzIyNiw3IEBAIHN0YXRpYyBib29sZWFu X3QNCj4gZGJ1Zl9ldmljdF90aHJlYWRfZXhpdDsgKi8NCj4gIHR5cGVkZWYgc3RydWN0IGRidWZf Y2FjaGUgew0KPiAgCW11bHRpbGlzdF90ICpjYWNoZTsNCj4gLQlyZWZjb3VudF90IHNpemU7DQo+ ICsJemZzX3JlZmNvdW50X3Qgc2l6ZTsNCj4gIH0gZGJ1Zl9jYWNoZV90Ow0KPiAgZGJ1Zl9jYWNo ZV90IGRidWZfY2FjaGVzW0RCX0NBQ0hFX01BWF07DQo+ICANCj4gQEAgLTMxNiw3ICszMTYsNyBA QCBkYnVmX2NvbnModm9pZCAqdmRiLCB2b2lkICp1bnVzZWQsIGludCBrbWZsYWcpDQo+ICAJbXV0 ZXhfaW5pdCgmZGItPmRiX210eCwgTlVMTCwgTVVURVhfREVGQVVMVCwgTlVMTCk7DQo+ICAJY3Zf aW5pdCgmZGItPmRiX2NoYW5nZWQsIE5VTEwsIENWX0RFRkFVTFQsIE5VTEwpOw0KPiAgCW11bHRp bGlzdF9saW5rX2luaXQoJmRiLT5kYl9jYWNoZV9saW5rKTsNCj4gLQlyZWZjb3VudF9jcmVhdGUo JmRiLT5kYl9ob2xkcyk7DQo+ICsJemZzX3JlZmNvdW50X2NyZWF0ZSgmZGItPmRiX2hvbGRzKTsN Cj4gIA0KPiAgCXJldHVybiAoMCk7DQo+ICB9DQo+IEBAIC0zMjksNyArMzI5LDcgQEAgZGJ1Zl9k ZXN0KHZvaWQgKnZkYiwgdm9pZCAqdW51c2VkKQ0KPiAgCW11dGV4X2Rlc3Ryb3koJmRiLT5kYl9t dHgpOw0KPiAgCWN2X2Rlc3Ryb3koJmRiLT5kYl9jaGFuZ2VkKTsNCj4gIAlBU1NFUlQoIW11bHRp bGlzdF9saW5rX2FjdGl2ZSgmZGItPmRiX2NhY2hlX2xpbmspKTsNCj4gLQlyZWZjb3VudF9kZXN0 cm95KCZkYi0+ZGJfaG9sZHMpOw0KPiArCXpmc19yZWZjb3VudF9kZXN0cm95KCZkYi0+ZGJfaG9s ZHMpOw0KPiANCj4gKioqIERJRkYgT1VUUFVUIFRSVU5DQVRFRCBBVCAxMDAwIExJTkVTICoqKg0K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBzdm4t c3JjLWhlYWRAZnJlZWJzZC5vcmcgbWFpbGluZyBsaXN0DQo+IGh0dHBzOi8vbGlzdHMuZnJlZWJz ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9zdm4tc3JjLWhlYWQNCj4gVG8gdW5zdWJzY3JpYmUsIHNl bmQgYW55IG1haWwgdG8gInN2bi1zcmMtaGVhZC11bnN1YnNjcmliZUBmcmVlYnNkLm9yZyINCg0K QnVpbGR3b3JsZCBmYWlscyB3aXRoIHRoZSBlcnJvciBzaG93biBiZWxvdzoNCg0KWy4uLl0NCi0g LS0tIGNkZGwvbGliL2xpYnpmc19jb3JlX19MIC0tLQ0KLSAtLS0gbGliemZzX2NvcmUubyAtLS0N CkluIGZpbGUgaW5jbHVkZWQgZnJvbQ0KL3Vzci9zcmMvY2RkbC9jb250cmliL29wZW5zb2xhcmlz L2xpYi9saWJ6ZnNfY29yZS9jb21tb24vbGliemZzX2NvcmUuYzo4OTogSW4gZmlsZSBpbmNsdWRl ZA0KZnJvbSAvdXNyL3NyYy9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24v ZnMvemZzL3N5cy96ZnNfaW9jdGwuaDozNTogSW4gZmlsZQ0KaW5jbHVkZWQgZnJvbSAvdXNyL3Ny Yy9zeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3N5cy9kc2xf ZGVsZWcuaDozMDogSW4NCmZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL3NyYy9zeXMvY2RkbC9jb250 cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3N5cy9kc2xfcG9vbC5oOjM3Og0KL3Vz ci9zcmMvc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9zeXMv YXJjLmg6ODk6MjogZXJyb3I6IHVua25vd24gdHlwZQ0KbmFtZSAncmVmY291bnRfdCcgcmVmY291 bnRfdCAgICAgICAgICAgICAgcF9yZWZjbnQ7IF4NCjEgZXJyb3IgZ2VuZXJhdGVkLg0KKioqIFts aWJ6ZnNfY29yZS5vXSBFcnJvciBjb2RlIDENCg0KbWFrZVs0XTogc3RvcHBlZCBpbiAvdXNyL3Ny Yy9jZGRsL2xpYi9saWJ6ZnNfY29yZQ0KDQoNCi0gLS0gDQpPLiBIYXJ0bWFubg0KDQpJY2ggd2lk ZXJzcHJlY2hlIGRlciBOdXR6dW5nIG9kZXIgw5xiZXJtaXR0bHVuZyBtZWluZXIgRGF0ZW4gZsO8 cg0KV2VyYmV6d2Vja2Ugb2RlciBmw7xyIGRpZSBNYXJrdC0gb2RlciBNZWludW5nc2ZvcnNjaHVu ZyAowqcgMjggQWJzLiA0IEJEU0cpLg0KLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0NCg0K aUhVRUFSWUlBQjBXSVFTeThJQnhBUERrcVZCYVRKNDROMVpaUGJhNVJ3VUNYYVhybmdBS0NSQTRO MVpaUGJhNQ0KUjllNUFQOVpSMHFrR0Fqc0pKQmNWUTZDZER4Q0pETXlOaWpDQWNwKzBkUXZKMVV4 R2dFQWpnaUZzUHdrS3FrYw0KSWxIWFk5R3VJamZqSE12NFFsVytBU0hRd0RKc0t3bz0NCj1nVTRT DQotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCg==