From owner-dev-commits-src-main@freebsd.org Mon Feb 22 14:01:52 2021 Return-Path: Delivered-To: dev-commits-src-main@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 BA57E5555B1; Mon, 22 Feb 2021 14:01:52 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4DkkPr2bBCz3QWf; Mon, 22 Feb 2021 14:01:52 +0000 (UTC) (envelope-from ohartmann@walstatt.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1614002510; bh=RshxKn7DxHBVrpQFHH9KW00K6KP1MchdXQIihxjjFDU=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=FkrMHOYnYdt4/NWzl9j+f5rkDLO22EtWp5Nwqftcsxd9ehF4hg6Qu2K+yQiHSb8if x21kGhKKCiMGRY86fdDGPLLVJRWqGLez6WhXp1FyaUvQYN0fgN8sCCqAkLm0BQbXKr 6LFTXGf5L6hG/4OENX+XzN301FigQMd4SfY4YFUE= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from thor.intern.walstatt.dynvpn.de ([78.54.86.30]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MowGU-1lckN92ZY6-00qThr; Mon, 22 Feb 2021 15:01:49 +0100 Date: Mon, 22 Feb 2021 15:01:15 +0100 From: "O. Hartmann" To: Martin Matuska Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: ba27dd8be821 - main - zfs: merge OpenZFS master-9312e0fd1 Message-ID: <20210222150142.4b76b7c6@thor.intern.walstatt.dynvpn.de> In-Reply-To: <202102221202.11MC24EB071531@gitrepo.freebsd.org> References: <202102221202.11MC24EB071531@gitrepo.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:H6bAXWu+woGj6FYzyVt9ydG9d011msmErMRVoTp63+Chr6c7Sio +FXNYrfG7Ox3Ojg82XJWB1trztPj0tplwuSl9GMkbOIacjSezTiouKljyQHKFQMQhVE2lrJ S754erfwzvSFl9PfTLAtDWUfPS4bNIX3gibsgwAfvaXQCQHRENJVrFsAiYHz14DQe70W+Fg yzDpwNUFiBm2gh1vl2qwA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:D+m0HsgFXjo=:gwdKAGPNriQZD5ExDy6pFE wkjs7BsZ2H5j8VfTCbdufHpoLp6zhJXPQBWMawG0PLQq9eSucw9r1O7R83w/wYEh7oH1JwMLJ 3lo0Fo76Lw1nQ4ONtq5slvSLTCiXuFpgPD26SPeiq6/DA+URopTKVqONhe0uiZcLdptv7EGtF 0u4zCn3xk+q++ixEQMK/RYoOpWODASfyAojYHkHZ8ojVv4UmwUh9CMxT6PnJwc8qvsfm9ZJy1 5en+KxICAuujSLUUhUTyMa097Maq3YSjpyQ3Nculea1fD7siWaE/iNujri4E7eec8b/sq0mvd Gp2rkl9U+sJlWYEcxAlWTnKK0M1MERuaNia0xAdNvAjgmhWccbdv3XFnXYA4RAbkoCi/vlEPk muzwxZb3hQ7iVy9QnS4OMZkkG25kmvpuAX0uXYoU2Phl986wvNYu1Q6vx2K7pAS5FgtxIavAx mG3cdBlmbzQsukFfOPt7NUXG+IifDd2mvuJ+CSAIVGYv8yunwQ2xaQFHEFuc9S8Xebkgv3zY6 OgZe3aOxwxLvskbkSd/CP1gHC+BZExesY1OKneN5U5jDBj4vgrzWQ5EU7hgeit1ks2pmsa3nb +/VVTByWjtCtS+PESOvsVXacGPlAMRZoJjtcIrQbG0a45GIw+1f/FrI1YNGZMYx+tIKopBF76 LYHe7YFN01QNDR0zxQiBfbyNJS4i677ID+j7SmNXzkTtsbqetj5R0QeP5N2O7LRyWrKPSdf3F 42Xfw31CiPK+gbkhQpe4eyFz9hyg8qPjfQg7iPsoSFeAJRtgRY9KmBH73ropnqeoRHNJ3Z2Sw nlk0Ft+wExka+tZz2RCNM0Wxp0rOde+1RFbxybHAE36qRsYXKqR1Ey4BimCS9eWtfPLFhIFtx iqlkmeu7MWug5blI5eVA== X-Rspamd-Queue-Id: 4DkkPr2bBCz3QWf X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-main@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for the main branch of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Feb 2021 14:01:52 -0000 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMjU2DQoNCkFtIE1v biwgMjIgRmViIDIwMjEgMTI6MDI6MDQgR01UDQpNYXJ0aW4gTWF0dXNrYSA8bW1ARnJlZUJTRC5v cmc+IHNjaHJpZWI6DQoNCj4gVGhlIGJyYW5jaCBtYWluIGhhcyBiZWVuIHVwZGF0ZWQgYnkgbW06 DQo+IA0KPiBVUkw6IGh0dHBzOi8vY2dpdC5GcmVlQlNELm9yZy9zcmMvY29tbWl0Lz9pZD1iYTI3 ZGQ4YmU4MjE3OTJlMTViZGFiZmFjNjlmZDZjYWIwY2Y5ZGQzDQo+IA0KPiBjb21taXQgYmEyN2Rk OGJlODIxNzkyZTE1YmRhYmZhYzY5ZmQ2Y2FiMGNmOWRkMw0KPiBNZXJnZTogYzAyYTI4NzU0YmMy IDA2MjY5MTdkMDc4Ng0KPiBBdXRob3I6ICAgICBNYXJ0aW4gTWF0dXNrYSA8bW1ARnJlZUJTRC5v cmc+DQo+IEF1dGhvckRhdGU6IDIwMjEtMDItMjIgMTE6MzU6NTYgKzAwMDANCj4gQ29tbWl0OiAg ICAgTWFydGluIE1hdHVza2EgPG1tQEZyZWVCU0Qub3JnPg0KPiBDb21taXREYXRlOiAyMDIxLTAy LTIyIDEyOjAxOjE3ICswMDAwDQo+IA0KPiAgICAgemZzOiBtZXJnZSBPcGVuWkZTIG1hc3Rlci05 MzEyZTBmZDENCj4gICAgIA0KPiAgICAgTm90YWJsZSB1cHN0cmVhbSBjaGFuZ2VzOg0KPiAgICAg ICA3Nzg4NjlmYTEgRml4IHJlcG9ydGluZyBvZiBtb3VudCBwcm9ncmVzcw0KPiAgICAgICBlN2Fk Y2NmN2YgRGlzYWJsZSB1c2Ugb2YgaGFyZHdhcmUgY3J5cHRvIG9mZmxvYWQgZHJpdmVycyBvbiBG cmVlQlNEDQo+ICAgICAgIDAzZTAyZTViNSBGaXggY2hlY2tzdW0gZXJyb3JzIG5vdCBiZWluZyBj b3VudGVkIG9uIHJlcGVhdGVkIHJlcGFpcg0KPiAgICAgICA2NGUwZmUxNGYgUmVzdG9yZSBGcmVl QlNEIHJlc291cmNlIHVzYWdlIGFjY291bnRpbmcNCj4gICAgICAgMTFmMmU5YTQ5IEZpeCBwYW5p YyBpZiBzY3J1YmJpbmcgYWZ0ZXIgcmVtb3ZpbmcgYSBzbG9nIGRldmljZQ0KPiAgICAgDQo+ICAg ICBNRkMgYWZ0ZXI6ICAgICAgMiB3ZWVrcw0KPiANCj4gIGNkZGwvbGliL2xpYnpwb29sL01ha2Vm aWxlICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gIHN0YW5kL2xpYnNhL3pmcy96 c3RkX3NoaW0uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsNCj4gIHN5cy9jb250cmli L29wZW56ZnMvY21kL3pmcy96ZnNfbWFpbi5jICAgICAgICAgICAgIHwgICAzIC0NCj4gIHN5cy9j b250cmliL29wZW56ZnMvY21kL3p0ZXN0L3p0ZXN0LmMgICAgICAgICAgICAgIHwgMTEzICsrKysr KysrLQ0KPiAgLi4uL29wZW56ZnMvaW5jbHVkZS9vcy9mcmVlYnNkL3NwbC9zeXMvdWlvLmggICAg ICAgfCAgNDMgKy0tLQ0KPiAgc3lzL2NvbnRyaWIvb3Blbnpmcy9pbmNsdWRlL29zL2xpbnV4L3Nw bC9zeXMvdWlvLmggfCAgMjIgKy0NCj4gIC4uLi9pbmNsdWRlL29zL2xpbnV4L3pmcy9zeXMvemZz X2NvbnRleHRfb3MuaCAgICAgIHwgICAxIC0NCj4gIHN5cy9jb250cmliL29wZW56ZnMvaW5jbHVk ZS9zeXMvTWFrZWZpbGUuYW0gICAgICAgIHwgICAxICsNCj4gIHN5cy9jb250cmliL29wZW56ZnMv aW5jbHVkZS9zeXMvc3BhLmggICAgICAgICAgICAgIHwgICAzICstDQo+ICBzeXMvY29udHJpYi9v cGVuemZzL2luY2x1ZGUvc3lzL3Vpb19pbXBsLmggICAgICAgICB8ICAyMSArLQ0KPiAgc3lzL2Nv bnRyaWIvb3Blbnpmcy9pbmNsdWRlL3N5cy96ZnNfY29udGV4dC5oICAgICAgfCAgIDMgKy0NCj4g IHN5cy9jb250cmliL29wZW56ZnMvaW5jbHVkZS9zeXMvemZzX3JhY2N0LmggICAgICAgIHwgIDM3 ICsrKw0KPiAgc3lzL2NvbnRyaWIvb3Blbnpmcy9saWIvbGlienBvb2wvTWFrZWZpbGUuYW0gICAg ICAgfCAgIDEgKw0KPiAgc3lzL2NvbnRyaWIvb3Blbnpmcy9saWIvbGlienBvb2wvdXRpbC5jICAg ICAgICAgICAgfCAgNzQgKysrKy0tDQo+ICAuLi4vbGliL2xpYnp1dGlsL29zL2xpbnV4L3p1dGls X2RldmljZV9wYXRoX29zLmMgICB8IDI1MiArKysrKysrKysrKystLS0tLS0tLS0NCj4gIHN5cy9j b250cmliL29wZW56ZnMvbW9kdWxlL01ha2VmaWxlLmJzZCAgICAgICAgICAgIHwgICAxICsNCj4g IC4uLi9vcGVuemZzL21vZHVsZS9vcy9mcmVlYnNkL3NwbC9zcGxfdWlvLmMgICAgICAgIHwgICA5 ICstDQo+ICAuLi4vb3Blbnpmcy9tb2R1bGUvb3MvZnJlZWJzZC96ZnMvY3J5cHRvX29zLmMgICAg ICB8ICAxNSArLQ0KPiAgLi4uL29wZW56ZnMvbW9kdWxlL29zL2ZyZWVic2QvemZzL3pmc19yYWNj dC5jICAgICAgfCAgNTUgKysrKysNCj4gIC4uLi9vcGVuemZzL21vZHVsZS9vcy9saW51eC96ZnMv TWFrZWZpbGUuaW4gICAgICAgIHwgICAxICsNCj4gIC4uLi9vcGVuemZzL21vZHVsZS9vcy9saW51 eC96ZnMvemZzX3JhY2N0LmMgICAgICAgIHwgIDM2ICsrKw0KPiAgc3lzL2NvbnRyaWIvb3Blbnpm cy9tb2R1bGUvemZzL2FyYy5jICAgICAgICAgICAgICAgfCAgIDIgKw0KPiAgc3lzL2NvbnRyaWIv b3Blbnpmcy9tb2R1bGUvemZzL2RtdS5jICAgICAgICAgICAgICAgfCAgIDUgKw0KPiAgc3lzL2Nv bnRyaWIvb3Blbnpmcy9tb2R1bGUvemZzL2RzbF9zY2FuLmMgICAgICAgICAgfCAgIDYgKy0NCj4g IHN5cy9jb250cmliL29wZW56ZnMvbW9kdWxlL3pmcy9zcGFfY29uZmlnLmMgICAgICAgIHwgICAy ICstDQo+ICBzeXMvY29udHJpYi9vcGVuemZzL21vZHVsZS96ZnMvdmRldi5jICAgICAgICAgICAg ICB8ICAgOSArLQ0KPiAgc3lzL2NvbnRyaWIvb3Blbnpmcy9tb2R1bGUvemZzL3ZkZXZfaW5kaXJl Y3QuYyAgICAgfCAgMTAgKy0NCj4gIHN5cy9jb250cmliL29wZW56ZnMvbW9kdWxlL3pmcy92ZGV2 X3JhaWR6LmMgICAgICAgIHwgIDIwICstDQo+ICBzeXMvY29udHJpYi9vcGVuemZzL21vZHVsZS96 ZnMvdmRldl9yZWJ1aWxkLmMgICAgICB8ICAgMyArDQo+ICBzeXMvY29udHJpYi9vcGVuemZzL21v ZHVsZS96ZnMvemZzX2ZtLmMgICAgICAgICAgICB8ICA0NiArKystDQo+ICBzeXMvY29udHJpYi9v cGVuemZzL21vZHVsZS96ZnMvemZzX2lvY3RsLmMgICAgICAgICB8ICAgMiArLQ0KPiAgc3lzL2Nv bnRyaWIvb3Blbnpmcy9tb2R1bGUvemZzL3pmc192bm9wcy5jICAgICAgICAgfCAgIDIgKy0NCj4g IHN5cy9jb250cmliL29wZW56ZnMvbW9kdWxlL3pmcy96aW8uYyAgICAgICAgICAgICAgIHwgIDEx ICstDQo+ICBzeXMvY29udHJpYi9vcGVuemZzL3NjcmlwdHMvemZzLnNoICAgICAgICAgICAgICAg ICB8ICAgMiArLQ0KPiAgc3lzL2NvbnRyaWIvb3Blbnpmcy90ZXN0cy9ydW5maWxlcy9jb21tb24u cnVuICAgICAgfCAgIDMgKy0NCj4gIC4uLi9mdW5jdGlvbmFsL2NsaV9yb290L3pwb29sX2V2ZW50 cy9NYWtlZmlsZS5hbSAgIHwgICAzICstDQo+ICAuLi4venBvb2xfZXZlbnRzL3pwb29sX2V2ZW50 c19jbGVhcl9yZXRhaW5lZC5rc2ggICB8IDEzNSArKysrKysrKysrKw0KPiAgLi4uL3pwb29sX2V2 ZW50cy96cG9vbF9ldmVudHNfZHVwbGljYXRlcy5rc2ggICAgICAgfCAgMTEgLQ0KPiAgc3lzL21v ZHVsZXMvemZzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAg c3lzL21vZHVsZXMvemZzL3pmc19jb25maWcuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg Ky0NCj4gIDQwIGZpbGVzIGNoYW5nZWQsIDcyNCBpbnNlcnRpb25zKCspLCAyNDggZGVsZXRpb25z KC0pDQo+IA0KPiBkaWZmIC0tY2MgY2RkbC9saWIvbGlienBvb2wvTWFrZWZpbGUNCj4gaW5kZXgg ZDliMmU2NzA5NGUzLDAwMDAwMDAwMDAwMC4uNjg5M2UzMWZmMjBhDQo+IG1vZGUgMTAwNjQ0LDAw MDAwMC4uMTAwNjQ0DQo+IC0tLSBhL2NkZGwvbGliL2xpYnpwb29sL01ha2VmaWxlDQo+ICsrKyBi L2NkZGwvbGliL2xpYnpwb29sL01ha2VmaWxlDQo+IEBAQCAtMSwyNjYgLTEsMCArMSwyNjcgQEBA DQo+ICArIyAkRnJlZUJTRCQNCj4gICsNCj4gICtaRlNUT1A9CSR7U1JDVE9QfS9zeXMvY29udHJp Yi9vcGVuemZzDQo+ICArDQo+ICArIyBaRlNfQ09NTU9OX1NSQ1MNCj4gICsuUEFUSDogJHtaRlNU T1B9L21vZHVsZS96ZnMNCj4gICsuUEFUSDogJHtaRlNUT1B9L21vZHVsZS96Y29tbW9uDQo+ICAr LlBBVEg6ICR7WkZTVE9QfS9tb2R1bGUvdW5pY29kZQ0KPiAgKyMgTFVBX1NSQ1MNCj4gICsuUEFU SDogJHtaRlNUT1B9L21vZHVsZS9sdWENCj4gICsjIFpTVERfU1JDUw0KPiAgKy5QQVRIOiAke1pG U1RPUH0vbW9kdWxlL3pzdGQNCj4gICsuUEFUSDogJHtaRlNUT1B9L21vZHVsZS96c3RkL2xpYg0K PiAgKw0KPiAgKy5QQVRIOiAke1pGU1RPUH0vbW9kdWxlL29zL2xpbnV4L3pmcw0KPiAgKw0KPiAg Ky5QQVRIOiAke1pGU1RPUH0vbGliL2xpYnpwb29sDQo+ICArDQo+ICArLmlmDQo+IGV4aXN0cygk e1NSQ1RPUH0vc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy9jb21tb24vYXRvbWljLyR7TUFD SElORV9BUkNIfS9vcGVuc29sYXJpc19hdG9taWMuUykNCj4gKy5QQVRIOiAke1NSQ1RPUH0vc3lz L2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy9jb21tb24vYXRvbWljLyR7TUFDSElORV9BUkNIfQ0K PiArQVRPTUlDX1NSQ1M9CW9wZW5zb2xhcmlzX2F0b21pYy5TICtBQ0ZMQUdTKz0JLVdhLC0tbm9l eGVjc3RhY2sNCj4gICsuZWxzZQ0KPiAgKy5QQVRIOiAke1NSQ1RPUH0vc3lzL2NkZGwvY29tcGF0 L29wZW5zb2xhcmlzL2tlcm4NCj4gICtBVE9NSUNfU1JDUz0Jb3BlbnNvbGFyaXNfYXRvbWljLmMN Cj4gICsuZW5kaWYNCj4gICsNCj4gICsuaWYgJHtNQUNISU5FX0FSQ0h9ID09ICJwb3dlcnBjIiB8 fCAke01BQ0hJTkVfQVJDSH0gPT0gInBvd2VycGNzcGUiDQo+ICArIyBEb24ndCB3YXN0ZSBHT1Qg ZW50cmllcyBvbiBzbWFsbCBkYXRhLg0KPiAgK1BJQ0ZMQUc9CS1mUElDDQo+ICArLmVuZGlmDQo+ ICArDQo+ICArTElCPQkJenBvb2wNCj4gICsNCj4gICtVU0VSX0MgPSBcDQo+ICArCWtlcm5lbC5j IFwNCj4gICsJdGFza3EuYyBcDQo+ICArCXV0aWwuYw0KPiAgKw0KPiAgK0tFUk5FTF9DID0gXA0K PiAgKwl6ZmVhdHVyZV9jb21tb24uYyBcDQo+ICArCXpmc19jb211dGlsLmMgXA0KPiAgKwl6ZnNf ZGVsZWcuYyBcDQo+ICArCXpmc19mbGV0Y2hlci5jIFwNCj4gICsJemZzX2ZsZXRjaGVyX3N1cGVy c2NhbGFyLmMgXA0KPiAgKwl6ZnNfZmxldGNoZXJfc3VwZXJzY2FsYXI0LmMgXA0KPiAgKwl6ZnNf bmFtZWNoZWNrLmMgXA0KPiAgKwl6ZnNfcHJvcC5jIFwNCj4gICsJemZzX3pzdGQuYyBcDQo+ICAr CXpwb29sX3Byb3AuYyBcDQo+ICArCXpwcm9wX2NvbW1vbi5jIFwNCj4gICsJYWJkLmMgXA0KPiAg KwlhYmRfb3MuYyBcDQo+ICArCWFnZ3N1bS5jIFwNCj4gICsJYXJjLmMgXA0KPiAgKwlhcmNfb3Mu YyBcDQo+ICArCWJsa3B0ci5jIFwNCj4gICsJYnBsaXN0LmMgXA0KPiAgKwlicG9iai5jIFwNCj4g ICsJYnB0cmVlLmMgXA0KPiAgKwlidHJlZS5jIFwNCj4gICsJYnF1ZXVlLmMgXA0KPiAgKwljaXR5 aGFzaC5jIFwNCj4gICsJZGJ1Zi5jIFwNCj4gICsJZGJ1Zl9zdGF0cy5jIFwNCj4gICsJZGR0LmMg XA0KPiAgKwlkZHRfemFwLmMgXA0KPiAgKwlkbXUuYyBcDQo+ICArCWRtdV9kaWZmLmMgXA0KPiAg KwlkbXVfb2JqZWN0LmMgXA0KPiAgKwlkbXVfb2Jqc2V0LmMgXA0KPiAgKwlkbXVfcmVjdi5jIFwN Cj4gICsJZG11X3JlZGFjdC5jIFwNCj4gICsJZG11X3NlbmQuYyBcDQo+ICArCWRtdV90cmF2ZXJz ZS5jIFwNCj4gICsJZG11X3R4LmMgXA0KPiAgKwlkbXVfemZldGNoLmMgXA0KPiAgKwlkbm9kZS5j IFwNCj4gICsJZG5vZGVfc3luYy5jIFwNCj4gICsJZHNsX2Jvb2ttYXJrLmMgXA0KPiAgKwlkc2xf ZGF0YXNldC5jIFwNCj4gICsJZHNsX2RlYWRsaXN0LmMgXA0KPiAgKwlkc2xfZGVsZWcuYyBcDQo+ ICArCWRzbF9kaXIuYyBcDQo+ICArCWRzbF9jcnlwdC5jIFwNCj4gICsJZHNsX3Bvb2wuYyBcDQo+ ICArCWRzbF9wcm9wLmMgXA0KPiAgKwlkc2xfc2Nhbi5jIFwNCj4gICsJZHNsX3N5bmN0YXNrLmMg XA0KPiAgKwlkc2xfZGVzdHJveS5jIFwNCj4gICsJZHNsX3VzZXJob2xkLmMgXA0KPiAgKwllZG9u cl96ZnMuYyBcDQo+ICArCWhrZGYuYyBcDQo+ICArCWZtLmMgXA0KPiAgKwlnemlwLmMgXA0KPiAg KwlsempiLmMgXA0KPiAgKwlsejQuYyBcDQo+ICArCW1ldGFzbGFiLmMgXA0KPiAgKwltbXAuYyBc DQo+ICArCW11bHRpbGlzdC5jIFwNCj4gICsJb2JqbGlzdC5jIFwNCj4gICsJcGF0aG5hbWUuYyBc DQo+ICArCXJhbmdlX3RyZWUuYyBcDQo+ICArCXJlZmNvdW50LmMgXA0KPiAgKwlycndsb2NrLmMg XA0KPiAgKwlzYS5jIFwNCj4gICsJc2hhMjU2LmMgXA0KPiAgKwlza2Vpbl96ZnMuYyBcDQo+ICAr CXNwYS5jIFwNCj4gICsJc3BhX2Jvb3QuYyBcDQo+ICArCXNwYV9jaGVja3BvaW50LmMgXA0KPiAg KwlzcGFfY29uZmlnLmMgXA0KPiAgKwlzcGFfZXJybG9nLmMgXA0KPiAgKwlzcGFfaGlzdG9yeS5j IFwNCj4gICsJc3BhX2xvZ19zcGFjZW1hcC5jIFwNCj4gICsJc3BhX21pc2MuYyBcDQo+ICArCXNw YV9zdGF0cy5jIFwNCj4gICsJc3BhY2VfbWFwLmMgXA0KPiAgKwlzcGFjZV9yZWZ0cmVlLmMgXA0K PiAgKwl0eGcuYyBcDQo+ICArCXRyYWNlLmMgXA0KPiAgKwl1YmVyYmxvY2suYyBcDQo+ICArCXVu aXF1ZS5jIFwNCj4gICsJdmRldi5jIFwNCj4gICsJdmRldl9jYWNoZS5jIFwNCj4gICsJdmRldl9k cmFpZC5jIFwNCj4gICsJdmRldl9kcmFpZF9yYW5kLmMgXA0KPiAgKwl2ZGV2X2ZpbGUuYyBcDQo+ ICArCXZkZXZfaW5kaXJlY3RfYmlydGhzLmMgXA0KPiAgKwl2ZGV2X2luZGlyZWN0LmMgXA0KPiAg Kwl2ZGV2X2luZGlyZWN0X21hcHBpbmcuYyBcDQo+ICArCXZkZXZfaW5pdGlhbGl6ZS5jIFwNCj4g ICsJdmRldl9sYWJlbC5jIFwNCj4gICsJdmRldl9taXJyb3IuYyBcDQo+ICArCXZkZXZfbWlzc2lu Zy5jIFwNCj4gICsJdmRldl9xdWV1ZS5jIFwNCj4gICsJdmRldl9yYWlkei5jIFwNCj4gICsJdmRl dl9yYWlkel9tYXRoX2FhcmNoNjRfbmVvbi5jIFwNCj4gICsJdmRldl9yYWlkel9tYXRoX2FhcmNo NjRfbmVvbngyLmMgXA0KPiAgKwl2ZGV2X3JhaWR6X21hdGhfYXZ4Mi5jIFwNCj4gICsJdmRldl9y YWlkel9tYXRoX2F2eDUxMmJ3LmMgXA0KPiAgKwl2ZGV2X3JhaWR6X21hdGhfYXZ4NTEyZi5jIFwN Cj4gICsJdmRldl9yYWlkel9tYXRoLmMgXA0KPiAgKwl2ZGV2X3JhaWR6X21hdGhfc2NhbGFyLmMg XA0KPiAgKwl2ZGV2X3JlYnVpbGQuYyBcDQo+ICArCXZkZXZfcmVtb3ZhbC5jIFwNCj4gICsJdmRl dl9yb290LmMgXA0KPiAgKwl2ZGV2X3RyaW0uYyBcDQo+ICArCXphcC5jIFwNCj4gICsJemFwX2xl YWYuYyBcDQo+ICArCXphcF9taWNyby5jIFwNCj4gICsJemNwLmMgXA0KPiAgKwl6Y3BfZ2V0LmMg XA0KPiAgKwl6Y3BfZ2xvYmFsLmMgXA0KPiAgKwl6Y3BfaXRlci5jIFwNCj4gICsJemNwX3NldC5j IFwNCj4gICsJemNwX3N5bmN0YXNrLmMgXA0KPiAgKwl6ZmVhdHVyZS5jIFwNCj4gICsJemZzX2J5 dGVzd2FwLmMgXA0KPiAgKwl6ZnNfZGVidWcuYyBcDQo+ICArCXpmc19mbS5jIFwNCj4gICsJemZz X2Z1aWQuYyBcDQo+ICArCXpmc19zYS5jIFwNCj4gICsJemZzX3pub2RlLmMgXA0KPiArKwl6ZnNf cmFjY3QuYyBcDQo+ICArCXpmc19yYXRlbGltaXQuYyBcDQo+ICArCXpmc19ybG9jay5jIFwNCj4g ICsJemlsLmMgXA0KPiAgKwl6aW8uYyBcDQo+ICArCXppb19jaGVja3N1bS5jIFwNCj4gICsJemlv X2NvbXByZXNzLmMgXA0KPiAgKwl6aW9fY3J5cHQuYyBcDQo+ICArCXppb19pbmplY3QuYyBcDQo+ ICArCXpsZS5jIFwNCj4gICsJenJsb2NrLmMgXA0KPiAgKwl6c3RkLmMgXA0KPiAgKwl6dGhyLmMN Cj4gICsNCj4gICtBUkNIX0MgPQ0KPiAgKy5pZiAke01BQ0hJTkVfQVJDSH0gPT0gImFtZDY0IiB8 fCAke01BQ0hJTkVfQVJDSH0gPT0gImkzODYiDQo+ICArQVJDSF9DICs9IAl2ZGV2X3JhaWR6X21h dGhfc3NlMi5jIFwNCj4gICsJCXZkZXZfcmFpZHpfbWF0aF9zc3NlMy5jIFwNCj4gICsJCXpmc19m bGV0Y2hlcl9pbnRlbC5jIFwNCj4gICsJCXpmc19mbGV0Y2hlcl9zc2UuYyANCj4gICtDRkxBR1Mg Kz0gIC1ESEFWRV9TU0UyIAktREhBVkVfU1NFMw0KPiAgKy5lbmRpZg0KPiAgKy5pZiAke01BQ0hJ TkVfQVJDSH0gPT0gImFtZDY0Ig0KPiAgK0FSQ0hfQyArPQl6ZnNfZmxldGNoZXJfYXZ4NTEyLmMN Cj4gICtDRkxBR1MrPSAtREhBVkVfQVZYMiAtREhBVkVfQVZYIC1EX194ODZfNjQgLURIQVZFX0FW WDUxMkYgXA0KPiAgKwktREhBVkVfQVZYNTEyQlcNCj4gICsuZW5kaWYNCj4gICsuaWYgJHtNQUNI SU5FX0NQVUFSQ0h9ID09ICJhYXJjaDY0Ig0KPiAgK0FSQ0hfQyArPQl6ZnNfZmxldGNoZXJfYWFy Y2g2NF9uZW9uLmMNCj4gICsuZW5kaWYNCj4gICsNCj4gICtMVUFfQyA9IFwNCj4gICsJbGFwaS5j IFwNCj4gICsJbGF1eGxpYi5jIFwNCj4gICsJbGJhc2VsaWIuYyBcDQo+ICArCWxjb2RlLmMgXA0K PiAgKwlsY29tcGF0LmMgXA0KPiAgKwlsY29yb2xpYi5jIFwNCj4gICsJbGN0eXBlLmMgXA0KPiAg KwlsZGVidWcuYyBcDQo+ICArCWxkby5jIFwNCj4gICsJbGZ1bmMuYyBcDQo+ICArCWxnYy5jIFwN Cj4gICsJbGxleC5jIFwNCj4gICsJbG1lbS5jIFwNCj4gICsJbG9iamVjdC5jIFwNCj4gICsJbG9w Y29kZXMuYyBcDQo+ICArCWxwYXJzZXIuYyBcDQo+ICArCWxzdGF0ZS5jIFwNCj4gICsJbHN0cmlu Zy5jIFwNCj4gICsJbHN0cmxpYi5jIFwNCj4gICsJbHRhYmxlLmMgXA0KPiAgKwlsdGFibGliLmMg XA0KPiAgKwlsdG0uYyBcDQo+ICArCWx2bS5jIFwNCj4gICsJbHppby5jDQo+ICArDQo+ICArVU5J Q09ERV9DID0gdThfdGV4dHByZXAuYyB1Y29udi5jDQo+ICArDQo+ICArU1JDUz0JCSR7VVNFUl9D fSAke0tFUk5FTF9DfSAke0xVQV9DfSAke1VOSUNPREVfQ30gJHtBUkNIX0N9DQo+ICArDQo+ICAr V0FSTlM/PQkJMg0KPiAgK0NGTEFHUys9IFwNCj4gICsJLURJTl9CQVNFIFwNCj4gICsJLUkke1pG U1RPUH0vaW5jbHVkZSBcDQo+ICArCS1JJHtaRlNUT1B9L2xpYi9saWJzcGwvaW5jbHVkZSBcDQo+ ICArCS1JJHtaRlNUT1B9L2xpYi9saWJzcGwvaW5jbHVkZS9vcy9mcmVlYnNkIFwNCj4gICsJLUkk e1NSQ1RPUH0vc3lzIFwNCj4gICsJLUkke1pGU1RPUH0vaW5jbHVkZS9vcy9mcmVlYnNkL3pmcyBc DQo+ICArCS1JJHtTUkNUT1B9L2NkZGwvY29tcGF0L29wZW5zb2xhcmlzL2luY2x1ZGUgXA0KPiAg KwktSSR7WkZTVE9QfS9tb2R1bGUvaWNwL2luY2x1ZGUgXA0KPiAgKwktaW5jbHVkZSAke1pGU1RP UH0vaW5jbHVkZS9vcy9mcmVlYnNkL3NwbC9zeXMvY2NvbXBpbGUuaCBcDQo+ICArCS1ESEFWRV9J U1NFVFVHSUQgXA0KPiAgKwktaW5jbHVkZSAke1NSQ1RPUH0vc3lzL21vZHVsZXMvemZzL3pmc19j b25maWcuaCBcDQo+ICArCS1JJHtTUkNUT1B9L3N5cy9tb2R1bGVzL3pmcyBcDQo+ICArCS1JJHta RlNUT1B9L2luY2x1ZGUvb3MvZnJlZWJzZC96ZnMgXA0KPiAgKwktRExJQl9aUE9PTF9CVUlMRCAt RFpGU19ERUJVRyBcDQo+ICArDQo+ICArIyBYWFg6IHB0aHJlYWQgZG9lc24ndCBoYXZlIG11dGV4 X293bmVkKCkgZXF1aXZhbGVudCwgc28gd2UgbmVlZCB0byBsb29rDQo+ICArIyAgICAgIGludG8g bGlidGhyIHByaXZhdGUgc3RydWN0dXJlcy4gVGhhdCdzIHNvb28gZXZpbCwgYnV0IGl0J3Mgb25s eSBmb3INCj4gICsjICAgICAgWkZTIGRlYnVnZ2luZyB0b29scyBuZWVkcy4NCj4gICtDRkxBR1Mr PQktRFdBTlRTX01VVEVYX09XTkVEDQo+ICArQ0ZMQUdTKz0JLUkke1NSQ1RPUH0vbGliL2xpYnB0 aHJlYWQvdGhyZWFkDQo+ICArQ0ZMQUdTKz0JLUkke1NSQ1RPUH0vbGliL2xpYnB0aHJlYWQvc3lz DQo+ICArQ0ZMQUdTKz0JLUkke1NSQ1RPUH0vbGliL2xpYnRoci9hcmNoLyR7TUFDSElORV9DUFVB UkNIfS9pbmNsdWRlDQo+ICArQ0ZMQUdTLmdjYys9CS1mbXMtZXh0ZW5zaW9ucw0KPiAgKw0KPiAg K0xJQkFERD0JCW1kIHB0aHJlYWQgeiBzcGwgaWNwIG52cGFpciBhdmwgdW1lbQ0KPiAgKw0KPiAg KyMgYXRvbWljLlMgZG9lc24ndCBsaWtlIHByb2ZpbGluZy4NCj4gICtNS19QUk9GSUxFPQlubw0K PiAgKw0KPiAgK0NTVEQ9CWM5OQ0KPiAgKw0KPiAgKyMgU2luY2UgdGhlcmUgYXJlIG1hbnkgYXNz ZXJ0cyBpbiB0aGlzIGxpYnJhcnksIGl0IG1ha2VzIG5vIHNlbnNlIHRvIGNvbXBpbGUNCj4gICsj IGl0IHdpdGhvdXQgZGVidWdnaW5nLg0KPiAgKw0KPiAgK0NGTEFHUys9CS1nIC1EREVCVUc9MQ0K PiAgKw0KPiAgK0NGTEFHUy56ZnNfenN0ZC5jPQktV25vLWNhc3QtcXVhbCAtV25vLXBvaW50ZXIt YXJpdGgNCj4gICtDRkxBR1MuenN0ZC5jKz0JLWZuby10cmVlLXZlY3Rvcml6ZQ0KPiAgKw0KPiAg Ky5pbmNsdWRlIDxic2QubGliLm1rPg0KPiBkaWZmIC0tY2Mgc3RhbmQvbGlic2EvemZzL3pzdGRf c2hpbS5jDQo+IGluZGV4IGI5NGRmNmY1MTkxMywwMDAwMDAwMDAwMDAuLjkxZjUxNzFhNzJiNQ0K PiBtb2RlIDEwMDY0NCwwMDAwMDAuLjEwMDY0NA0KPiAtLS0gYS9zdGFuZC9saWJzYS96ZnMvenN0 ZF9zaGltLmMNCj4gKysrIGIvc3RhbmQvbGlic2EvemZzL3pzdGRfc2hpbS5jDQo+IEBAQCAtMSw0 MCAtMSwwICsxLDQ1IEBAQA0KPiAgKy8qLQ0KPiAgKyAqIENvcHlyaWdodCAoYykgMjAyMCBNLiBX YXJuZXIgTG9zaCA8aW1wQEZyZWVCU0Qub3JnPg0KPiAgKyAqDQo+ICArICogUmVkaXN0cmlidXRp b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+ ICArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zDQo+ICArICogYXJlIG1ldDoNCj4gICsgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAgKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4NCj4gICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAgKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4gICsg KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLg0KPiAgKyAqDQo+ICArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORA0KPiAgKyAqIEFO WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFRIRQ0KPiAgKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQo+ICArICogQVJFIERJU0NMQUlN RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC TEUNCj4gICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0KPiAgKyAqIERBTUFHRVMgKElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQo+ICAr ICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pDQo+ICArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QNCj4gICsgKiBMSUFCSUxJ VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZDQo+ICArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiAgKyAqIFNVQ0ggREFNQUdFLg0KPiAg KyAqDQo+ICArICovDQo+ICArI2luY2x1ZGUgPHN5cy9jZGVmcy5oPg0KPiAgK19fRkJTRElEKCIk RnJlZUJTRCQiKTsNCj4gICsNCj4gICsvKg0KPiAgKyAqIFNtYWxsIGFtb3VudCBvZiBzaGltIGNv ZGUgbmVlZGVkIHRvIGdldCB6ZnNfenN0ZC5jIHRvIGNvbXBpbGUuIFRoZXNlIGl0ZW1zDQo+ICAr ICogaGVyZSBzaG91bGQgYWxsIGJlIGRlZmluZWQgaW4gdGhlIFNQTCBvciBhcyBwYXJ0IG9mIGxp YnN0YW5kIHNvbWV3aGVyZSwgYnV0DQo+ICArICogYXJlbid0IGZvciByZWFzb25zIHRoYXQgaGF2 ZW4ndCBiZWVuIHRyYWNrZWQgZG93biB5ZXQuIElkZWFsbHksIHRoZXkgd291bGQNCj4gICsgKiBh bGwgZ28gYXdheSBhbmQgd2UnZCBjb21waWxlIHpmc196c3RkLmMgZGlyZWN0bHkuIEJhc2VkIG9u IGFuIG9yaWdpbmFsIGJ5DQo+ICArICogTWF0dCBNYWNleSwgYnV0IG9ubHkgdGhlICNpbmNsdWRl IHJlbWFpbnMgdW50b3VjaGVkIGZyb20gdGhhdC4NCj4gICsgKi8NCj4gICsNCj4gICsjZGVmaW5l IFpGU19NT0RVTEVfUEFSQU1fQVJHUyB2b2lkDQo+ICArdHlwZWRlZiBpbnQgYm9vbGVhbl90Owkv KiBUaGlzIG9uZSBtYXkgYmUgdG91Z2ggdG8gZ2V0IHJpZCBvZiAqLw0KPiAgKw0KPiArKy8qIFRP RE86IG9wZW56ZnMvaW5jbHVkZS9zeXMvdWlvX2ltcGwuaCBtdXN0IG5vdCBiZSBpbmNsdWRlZCAq Lw0KPiArKyNpZm5kZWYgX1NZU19VSU9fSU1QTF9IDQo+ICsrI2RlZmluZSBfU1lTX1VJT19JTVBM X0gNCj4gKysjZW5kaWYNCj4gKysNCj4gICsjaW5jbHVkZSA8Y29udHJpYi9vcGVuemZzL21vZHVs ZS96c3RkL3pmc196c3RkLmM+DQo+IGRpZmYgLS1jYyBzeXMvY29udHJpYi9vcGVuemZzL2luY2x1 ZGUvc3lzL3pmc19yYWNjdC5oDQo+IGluZGV4IDAwMDAwMDAwMDAwMCxjZmNkZDMzNmVhNDIuLmNm Y2RkMzM2ZWE0Mg0KPiBtb2RlIDAwMDAwMCwxMDA2NDQuLjEwMDY0NA0KPiAtLS0gYS9zeXMvY29u dHJpYi9vcGVuemZzL2luY2x1ZGUvc3lzL3pmc19yYWNjdC5oDQo+ICsrKyBiL3N5cy9jb250cmli L29wZW56ZnMvaW5jbHVkZS9zeXMvemZzX3JhY2N0LmgNCj4gZGlmZiAtLWNjIHN5cy9jb250cmli L29wZW56ZnMvbW9kdWxlL29zL2ZyZWVic2QvemZzL3pmc19yYWNjdC5jDQo+IGluZGV4IDAwMDAw MDAwMDAwMCxiNDZjYzA0NjI2OGUuLmI0NmNjMDQ2MjY4ZQ0KPiBtb2RlIDAwMDAwMCwxMDA2NDQu LjEwMDY0NA0KPiAtLS0gYS9zeXMvY29udHJpYi9vcGVuemZzL21vZHVsZS9vcy9mcmVlYnNkL3pm cy96ZnNfcmFjY3QuYw0KPiArKysgYi9zeXMvY29udHJpYi9vcGVuemZzL21vZHVsZS9vcy9mcmVl YnNkL3pmcy96ZnNfcmFjY3QuYw0KPiBkaWZmIC0tY2Mgc3lzL2NvbnRyaWIvb3Blbnpmcy9tb2R1 bGUvb3MvbGludXgvemZzL3pmc19yYWNjdC5jDQo+IGluZGV4IDAwMDAwMDAwMDAwMCw3ODk3ZTBm OWVkYzEuLjc4OTdlMGY5ZWRjMQ0KPiBtb2RlIDAwMDAwMCwxMDA2NDQuLjEwMDY0NA0KPiAtLS0g YS9zeXMvY29udHJpYi9vcGVuemZzL21vZHVsZS9vcy9saW51eC96ZnMvemZzX3JhY2N0LmMNCj4g KysrIGIvc3lzL2NvbnRyaWIvb3Blbnpmcy9tb2R1bGUvb3MvbGludXgvemZzL3pmc19yYWNjdC5j DQo+IGRpZmYgLS1jYyBzeXMvY29udHJpYi9vcGVuemZzL21vZHVsZS96ZnMvemZzX2lvY3RsLmMN Cj4gaW5kZXggMGUzNWZkMDY5Y2JiLDAwMDAwMDAwMDAwMC4uOTIyMjUzNDY5ZmJhDQo+IG1vZGUg MTAwNjQ0LDAwMDAwMC4uMTAwNjQ0DQo+IC0tLSBhL3N5cy9jb250cmliL29wZW56ZnMvbW9kdWxl L3pmcy96ZnNfaW9jdGwuYw0KPiArKysgYi9zeXMvY29udHJpYi9vcGVuemZzL21vZHVsZS96ZnMv emZzX2lvY3RsLmMNCj4gQEBAIC0xLDc2ODggLTEsMCArMSw3Njg4IEBAQA0KPiAgKy8qDQo+ICAr ICogQ0RETCBIRUFERVIgU1RBUlQNCj4gICsgKg0KPiAgKyAqIFRoZSBjb250ZW50cyBvZiB0aGlz IGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZQ0KPiAgKyAqIENvbW1vbiBEZXZl bG9wbWVudCBhbmQgRGlzdHJpYnV0aW9uIExpY2Vuc2UgKHRoZSAiTGljZW5zZSIpLg0KPiAgKyAq IFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg TGljZW5zZS4NCj4gICsgKg0KPiAgKyAqIFlvdSBjYW4gb2J0YWluIGEgY29weSBvZiB0aGUgbGlj ZW5zZSBhdCB1c3Ivc3JjL09QRU5TT0xBUklTLkxJQ0VOU0UNCj4gICsgKiBvciBodHRwOi8vd3d3 Lm9wZW5zb2xhcmlzLm9yZy9vcy9saWNlbnNpbmcuDQo+ICArICogU2VlIHRoZSBMaWNlbnNlIGZv ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zDQo+ICArICogYW5k IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KPiAgKyAqDQo+ICArICogV2hlbiBkaXN0 cmlidXRpbmcgQ292ZXJlZCBDb2RlLCBpbmNsdWRlIHRoaXMgQ0RETCBIRUFERVIgaW4gZWFjaA0K PiAgKyAqIGZpbGUgYW5kIGluY2x1ZGUgdGhlIExpY2Vuc2UgZmlsZSBhdCB1c3Ivc3JjL09QRU5T T0xBUklTLkxJQ0VOU0UuDQo+ICArICogSWYgYXBwbGljYWJsZSwgYWRkIHRoZSBmb2xsb3dpbmcg YmVsb3cgdGhpcyBDRERMIEhFQURFUiwgd2l0aCB0aGUNCj4gICsgKiBmaWVsZHMgZW5jbG9zZWQg YnkgYnJhY2tldHMgIltdIiByZXBsYWNlZCB3aXRoIHlvdXIgb3duIGlkZW50aWZ5aW5nDQo+ICAr ICogaW5mb3JtYXRpb246IFBvcnRpb25zIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJp Z2h0IG93bmVyXQ0KPiAgKyAqDQo+ICArICogQ0RETCBIRUFERVIgRU5EDQo+ICArICovDQo+ICAr DQo+ICArLyoNCj4gICsgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMTAsIE9yYWNsZSBhbmQvb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICArICogUG9ydGlvbnMgQ29w eXJpZ2h0IDIwMTEgTWFydGluIE1hdHVza2ENCj4gICsgKiBDb3B5cmlnaHQgMjAxNSwgT21uaVRJ IENvbXB1dGVyIENvbnN1bHRpbmcsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gICsgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgMjAxMiBQYXdlbCBKYWt1YiBEYXdpZGVrIDxwYXdlbEBkYXdpZGVr Lm5ldD4NCj4gICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTYgSm95ZW50LCBJbmMuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+ICArICogQ29weXJpZ2h0IDIwMTYgTmV4ZW50YSBTeXN0ZW1zLCBJ bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAgKyAqIENvcHlyaWdodCAoYykgMjAxNCwgSm95 ZW50LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICArICogQ29weXJpZ2h0IChjKSAyMDEx LCAyMDIwIGJ5IERlbHBoaXguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICArICogQ29weXJpZ2h0 IChjKSAyMDEzIGJ5IFNhc28gS2lzZWxrb3YuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICArICog Q29weXJpZ2h0IChjKSAyMDEzIFN0ZXZlbiBIYXJ0bGFuZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQgSW50ZWdyb3MgW2ludGVncm9zLmNvbV0NCj4gICsg KiBDb3B5cmlnaHQgMjAxNiBUb29tYXMgU29vbWUgPHRzb29tZUBtZS5jb20+DQo+ICArICogQ29w eXJpZ2h0IChjKSAyMDE2IEFjdGlmaW8sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gICsg KiBDb3B5cmlnaHQgKGMpIDIwMTgsIGxvbGkxMEsgPGV6b21vcmkubm96b211QGdtYWlsLmNvbT4u IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICArICogQ29weXJpZ2h0IDIwMTcgUmFja1RvcCBTeXN0 ZW1zLg0KPiAgKyAqIENvcHlyaWdodCAoYykgMjAxNyBPcGVuLUUsIEluYy4gQWxsIFJpZ2h0cyBS ZXNlcnZlZC4NCj4gICsgKiBDb3B5cmlnaHQgKGMpIDIwMTkgRGF0dG8gSW5jLg0KPiAgKyAqIENv cHlyaWdodCAoYykgMjAxOSwgMjAyMCBieSBDaHJpc3RpYW4gU2Nod2Fyei4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIEtsYXJhIEluYy4NCj4gICsgKiBD b3B5cmlnaHQgKGMpIDIwMTksIEFsbGFuIEp1ZGUNCj4gICsgKi8NCj4gICsNCj4gICsvKg0KPiAg KyAqIFpGUyBpb2N0bHMuDQo+ICArICoNCj4gICsgKiBUaGlzIGZpbGUgaGFuZGxlcyB0aGUgaW9j dGxzIHRvIC9kZXYvemZzLCB1c2VkIGZvciBjb25maWd1cmluZyBaRlMgc3RvcmFnZQ0KPiAgKyAq IHBvb2xzIGFuZCBmaWxlc3lzdGVtcywgZS5nLiB3aXRoIC9zYmluL3pmcyBhbmQgL3NiaW4venBv b2wuDQo+ICArICoNCj4gICsgKiBUaGVyZSBhcmUgdHdvIHdheXMgdGhhdCB3ZSBoYW5kbGUgaW9j dGxzOiB0aGUgbGVnYWN5IHdheSB3aGVyZSBhbG1vc3QNCj4gICsgKiBhbGwgb2YgdGhlIGxvZ2lj IGlzIGluIHRoZSBpb2N0bCBjYWxsYmFjaywgYW5kIHRoZSBuZXcgd2F5IHdoZXJlIG1vc3QNCj4g ICsgKiBvZiB0aGUgbWFyc2hhbGxpbmcgaXMgaGFuZGxlZCBpbiB0aGUgY29tbW9uIGVudHJ5IHBv aW50LCB6ZnNkZXZfaW9jdGwoKS4NCj4gICsgKg0KPiAgKyAqIE5vbi1sZWdhY3kgaW9jdGxzIHNo b3VsZCBiZSByZWdpc3RlcmVkIGJ5IGNhbGxpbmcNCj4gICsgKiB6ZnNfaW9jdGxfcmVnaXN0ZXIo KSBmcm9tIHpmc19pb2N0bF9pbml0KCkuICBUaGUgaW9jdGwgaXMgaW52b2tlZA0KPiAgKyAqIGZy b20gdXNlcmxhbmQgYnkgbHpjX2lvY3RsKCkuDQo+ICArICoNCj4gICsgKiBUaGUgcmVnaXN0cmF0 aW9uIGFyZ3VtZW50cyBhcmUgYXMgZm9sbG93czoNCj4gICsgKg0KPiAgKyAqIGNvbnN0IGNoYXIg Km5hbWUNCj4gICsgKiAgIFRoZSBuYW1lIG9mIHRoZSBpb2N0bC4gIFRoaXMgaXMgdXNlZCBmb3Ig aGlzdG9yeSBsb2dnaW5nLiAgSWYgdGhlDQo+ICArICogICBpb2N0bCByZXR1cm5zIHN1Y2Nlc3Nm dWxseSAodGhlIGNhbGxiYWNrIHJldHVybnMgMCksIGFuZCBhbGxvd19sb2cNCj4gICsgKiAgIGlz IHRydWUsIHRoZW4gYSBoaXN0b3J5IGxvZyBlbnRyeSB3aWxsIGJlIHJlY29yZGVkIHdpdGggdGhl IGlucHV0ICYNCj4gICsgKiAgIG91dHB1dCBudmxpc3RzLiAgVGhlIGxvZyBlbnRyeSBjYW4gYmUg cHJpbnRlZCB3aXRoICJ6cG9vbCBoaXN0b3J5IC1pIi4NCj4gICsgKg0KPiAgKyAqIHpmc19pb2Nf dCBpb2MNCj4gICsgKiAgIFRoZSBpb2N0bCByZXF1ZXN0IG51bWJlciwgd2hpY2ggdXNlcmxhbmQg d2lsbCBwYXNzIHRvIGlvY3RsKDIpLg0KPiAgKyAqICAgV2Ugd2FudCBuZXdlciB2ZXJzaW9ucyBv ZiBsaWJ6ZnMgYW5kIGxpYnpmc19jb3JlIHRvIHJ1biBhZ2FpbnN0DQo+ICArICogICBleGlzdGlu ZyB6ZnMga2VybmVsIG1vZHVsZXMgKGkuZS4gYSBkZWZlcnJlZCByZWJvb3QgYWZ0ZXIgYW4gdXBk YXRlKS4NCj4gICsgKiAgIFRoZXJlZm9yZSB0aGUgaW9jdGwgbnVtYmVycyBjYW5ub3QgY2hhbmdl IGZyb20gcmVsZWFzZSB0byByZWxlYXNlLg0KPiAgKyAqDQo+ICArICogemZzX3NlY3BvbGljeV9m dW5jX3QgKnNlY3BvbGljeQ0KPiAgKyAqICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBi ZWZvcmUgdGhlIHpmc19pb2NfZnVuY190LCB0bw0KPiAgKyAqICAgZGV0ZXJtaW5lIGlmIHRoaXMg b3BlcmF0aW9uIGlzIHBlcm1pdHRlZC4gIEl0IHNob3VsZCByZXR1cm4gRVBFUk0NCj4gICsgKiAg IG9uIGZhaWx1cmUsIGFuZCAwIG9uIHN1Y2Nlc3MuICBDaGVja3MgaW5jbHVkZSBkZXRlcm1pbmlu ZyBpZiB0aGUNCj4gICsgKiAgIGRhdGFzZXQgaXMgdmlzaWJsZSBpbiB0aGlzIHpvbmUsIGFuZCBp ZiB0aGUgdXNlciBoYXMgZWl0aGVyIGFsbA0KPiAgKyAqICAgemZzIHByaXZpbGVnZXMgaW4gdGhl IHpvbmUgKFNZU19NT1VOVCksIG9yIGhhcyBiZWVuIGdyYW50ZWQgcGVybWlzc2lvbg0KPiAgKyAq ICAgdG8gZG8gdGhpcyBvcGVyYXRpb24gb24gdGhpcyBkYXRhc2V0IHdpdGggInpmcyBhbGxvdyIu DQo+ICArICoNCj4gICsgKiB6ZnNfaW9jX25hbWVjaGVja190IG5hbWVjaGVjaw0KPiAgKyAqICAg VGhpcyBzcGVjaWZpZXMgd2hhdCB0byBleHBlY3QgaW4gdGhlIHpmc19jbWRfdDp6Y19uYW1lIC0t IGEgcG9vbA0KPiAgKyAqICAgbmFtZSwgYSBkYXRhc2V0IG5hbWUsIG9yIG5vdGhpbmcuICBJZiB0 aGUgbmFtZSBpcyBub3Qgd2VsbC1mb3JtZWQsDQo+ICArICogICB0aGUgaW9jdGwgd2lsbCBmYWls IGFuZCB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkLg0KPiAgKyAqICAgVGhlcmVmb3Jl LCB0aGUgY2FsbGJhY2sgY2FuIGFzc3VtZSB0aGF0IHRoZSBuYW1lIGlzIHdlbGwtZm9ybWVkDQo+ ICArICogICAoZS5nLiBpcyBudWxsLXRlcm1pbmF0ZWQsIGRvZXNuJ3QgaGF2ZSBtb3JlIHRoYW4g b25lICdAJyBjaGFyYWN0ZXIsDQo+ICArICogICBkb2Vzbid0IGhhdmUgaW52YWxpZCBjaGFyYWN0 ZXJzKS4NCj4gICsgKg0KPiAgKyAqIHpmc19pb2NfcG9vbGNoZWNrX3QgcG9vbF9jaGVjaw0KPiAg KyAqICAgVGhpcyBzcGVjaWZpZXMgcmVxdWlyZW1lbnRzIG9uIHRoZSBwb29sIHN0YXRlLiAgSWYg dGhlIHBvb2wgZG9lcw0KPiAgKyAqICAgbm90IG1lZXQgdGhlbSAoaXMgc3VzcGVuZGVkIG9yIGlz IHJlYWRvbmx5KSwgdGhlIGlvY3RsIHdpbGwgZmFpbA0KPiAgKyAqICAgYW5kIHRoZSBjYWxsYmFj ayB3aWxsIG5vdCBiZSBjYWxsZWQuICBJZiBhbnkgY2hlY2tzIGFyZSBzcGVjaWZpZWQNCj4gICsg KiAgIChpLmUuIGl0IGlzIG5vdCBQT09MX0NIRUNLX05PTkUpLCBuYW1lY2hlY2sgbXVzdCBub3Qg YmUgTk9fTkFNRS4NCj4gICsgKiAgIE11bHRpcGxlIGNoZWNrcyBjYW4gYmUgb3ItZWQgdG9nZXRo ZXIgKGUuZy4gUE9PTF9DSEVDS19TVVNQRU5ERUQgfA0KPiAgKyAqICAgUE9PTF9DSEVDS19SRUFE T05MWSkuDQo+ICArICoNCj4gICsgKiB6ZnNfaW9jX2tleV90ICpudmxfa2V5cw0KPiAgKyAqICBU aGUgbGlzdCBvZiBleHBlY3RlZC9hbGxvd2FibGUgaW5udmwgaW5wdXQga2V5cy4gVGhpcyBsaXN0 IGlzIHVzZWQNCj4gICsgKiAgdG8gdmFsaWRhdGUgdGhlIG52bGlzdCBpbnB1dCB0byB0aGUgaW9j dGwuDQo+ICArICoNCj4gICsgKiBib29sZWFuX3Qgc211c2hfb3V0bnZsaXN0DQo+ICArICogICBJ ZiBzbXVzaF9vdXRudmxpc3QgaXMgdHJ1ZSwgdGhlbiB0aGUgb3V0cHV0IGlzIHByZXN1bWVkIHRv IGJlIGENCj4gICsgKiAgIGxpc3Qgb2YgZXJyb3JzLCBhbmQgaXQgd2lsbCBiZSAic211c2hlZCIg ZG93biB0byBmaXQgaW50byB0aGUNCj4gICsgKiAgIGNhbGxlcidzIGJ1ZmZlciwgYnkgcmVtb3Zp bmcgc29tZSBlbnRyaWVzIGFuZCByZXBsYWNpbmcgdGhlbSB3aXRoIGENCj4gICsgKiAgIHNpbmds ZSAiTl9NT1JFX0VSUk9SUyIgZW50cnkgaW5kaWNhdGluZyBob3cgbWFueSB3ZXJlIHJlbW92ZWQu ICBTZWUNCj4gICsgKiAgIG52bGlzdF9zbXVzaCgpIGZvciBkZXRhaWxzLiAgSWYgc211c2hfb3V0 bnZsaXN0IGlzIGZhbHNlLCBhbmQgdGhlDQo+ICArICogICBvdXRudmxpc3QgZG9lcyBub3QgZml0 IGludG8gdGhlIHVzZXJsYW5kLXByb3ZpZGVkIGJ1ZmZlciwgdGhlbiB0aGUNCj4gICsgKiAgIGlv Y3RsIHdpbGwgZmFpbCB3aXRoIEVOT01FTS4NCj4gICsgKg0KPiAgKyAqIHpmc19pb2NfZnVuY190 ICpmdW5jDQo+ICArICogICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB3aWxsIHBlcmZvcm0g dGhlIG9wZXJhdGlvbi4NCj4gICsgKg0KPiAgKyAqICAgVGhlIGNhbGxiYWNrIHNob3VsZCByZXR1 cm4gMCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBudW1iZXIgb24NCj4gICsgKiAgIGZhaWx1cmUu ICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIHRoZSB1c2VybGFuZCBpb2N0bCB3aWxsIHJldHVybiAt MSwNCj4gICsgKiAgIGFuZCBlcnJubyB3aWxsIGJlIHNldCB0byB0aGUgY2FsbGJhY2sncyByZXR1 cm4gdmFsdWUuICBUaGUgY2FsbGJhY2sNCj4gICsgKiAgIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhl IGZvbGxvd2luZyBhcmd1bWVudHM6DQo+ICArICoNCj4gICsgKiAgIGNvbnN0IGNoYXIgKm5hbWUN Cj4gICsgKiAgICAgVGhlIG5hbWUgb2YgdGhlIHBvb2wgb3IgZGF0YXNldCB0byBvcGVyYXRlIG9u LCBmcm9tDQo+ICArICogICAgIHpmc19jbWRfdDp6Y19uYW1lLiAgVGhlICduYW1lY2hlY2snIGFy Z3VtZW50IHNwZWNpZmllcyB0aGUNCj4gICsgKiAgICAgZXhwZWN0ZWQgdHlwZSAocG9vbCwgZGF0 YXNldCwgb3Igbm9uZSkuDQo+ICArICoNCj4gICsgKiAgIG52bGlzdF90ICppbm52bA0KPiAgKyAq ICAgICBUaGUgaW5wdXQgbnZsaXN0LCBkZXNlcmlhbGl6ZWQgZnJvbSB6ZnNfY21kX3Q6emNfbnZs aXN0X3NyYy4gIE9yDQo+ICArICogICAgIE5VTEwgaWYgbm8gaW5wdXQgbnZsaXN0IHdhcyBwcm92 aWRlZC4gIENoYW5nZXMgdG8gdGhpcyBudmxpc3QgYXJlDQo+ICArICogICAgIGlnbm9yZWQuICBJ ZiB0aGUgaW5wdXQgbnZsaXN0IGNvdWxkIG5vdCBiZSBkZXNlcmlhbGl6ZWQsIHRoZQ0KPiAgKyAq ICAgICBpb2N0bCB3aWxsIGZhaWwgYW5kIHRoZSBjYWxsYmFjayB3aWxsIG5vdCBiZSBjYWxsZWQu DQo+ICArICoNCj4gICsgKiAgIG52bGlzdF90ICpvdXRudmwNCj4gICsgKiAgICAgVGhlIG91dHB1 dCBudmxpc3QsIGluaXRpYWxseSBlbXB0eS4gIFRoZSBjYWxsYmFjayBjYW4gZmlsbCBpdCBpbiwN Cj4gICsgKiAgICAgYW5kIGl0IHdpbGwgYmUgcmV0dXJuZWQgdG8gdXNlcmxhbmQgYnkgc2VyaWFs aXppbmcgaXQgaW50bw0KPiAgKyAqICAgICB6ZnNfY21kX3Q6emNfbnZsaXN0X2RzdC4gIElmIGl0 IGlzIG5vbi1lbXB0eSwgYW5kIHNlcmlhbGl6YXRpb24NCj4gICsgKiAgICAgZmFpbHMgKGUuZy4g YmVjYXVzZSB0aGUgY2FsbGVyIGRpZG4ndCBzdXBwbHkgYSBsYXJnZSBlbm91Z2gNCj4gICsgKiAg ICAgYnVmZmVyKSwgdGhlbiB0aGUgb3ZlcmFsbCBpb2N0bCB3aWxsIGZhaWwuICBTZWUgdGhlDQo+ ICArICogICAgICdzbXVzaF9udmxpc3QnIGFyZ3VtZW50IGFib3ZlIGZvciBhZGRpdGlvbmFsIGJl aGF2aW9ycy4NCj4gICsgKg0KPiAgKyAqICAgICBUaGVyZSBhcmUgdHdvIHR5cGljYWwgdXNlcyBv ZiB0aGUgb3V0cHV0IG52bGlzdDoNCj4gICsgKiAgICAgICAtIFRvIHJldHVybiBzdGF0ZSwgZS5n LiBwcm9wZXJ0eSB2YWx1ZXMuICBJbiB0aGlzIGNhc2UsDQo+ICArICogICAgICAgICBzbXVzaF9v dXRudmxpc3Qgc2hvdWxkIGJlIGZhbHNlLiAgSWYgdGhlIGJ1ZmZlciB3YXMgbm90IGxhcmdlDQo+ ICArICogICAgICAgICBlbm91Z2gsIHRoZSBjYWxsZXIgd2lsbCByZWFsbG9jYXRlIGEgbGFyZ2Vy IGJ1ZmZlciBhbmQgdHJ5DQo+ICArICogICAgICAgICB0aGUgaW9jdGwgYWdhaW4uDQo+ICArICoN Cj4gICsgKiAgICAgICAtIFRvIHJldHVybiBtdWx0aXBsZSBlcnJvcnMgZnJvbSBhbiBpb2N0bCB3 aGljaCBtYWtlcyBvbi1kaXNrDQo+ICArICogICAgICAgICBjaGFuZ2VzLiAgSW4gdGhpcyBjYXNl LCBzbXVzaF9vdXRudmxpc3Qgc2hvdWxkIGJlIHRydWUuDQo+ICArICogICAgICAgICBJb2N0bHMg d2hpY2ggbWFrZSBvbi1kaXNrIG1vZGlmaWNhdGlvbnMgc2hvdWxkIGdlbmVyYWxseSBub3QNCj4g ICsgKiAgICAgICAgIHVzZSB0aGUgb3V0bnZsIGlmIHRoZXkgc3VjY2VlZCwgYmVjYXVzZSB0aGUg Y2FsbGVyIGNhbiBub3QNCj4gICsgKiAgICAgICAgIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIG9w ZXJhdGlvbiBmYWlsaW5nLCBhbmQNCj4gICsgKiAgICAgICAgIGRlc2VyaWFsaXphdGlvbiBmYWls aW5nLg0KPiAgKyAqDQo+ICArICogSU9DVEwgSW50ZXJmYWNlIEVycm9ycw0KPiAgKyAqDQo+ICAr ICogVGhlIGZvbGxvd2luZyBpb2N0bCBpbnB1dCBlcnJvcnMgY2FuIGJlIHJldHVybmVkOg0KPiAg KyAqICAgWkZTX0VSUl9JT0NfQ01EX1VOQVZBSUwJdGhlIGlvY3RsIG51bWJlciBpcyBub3Qgc3Vw cG9ydGVkIGJ5IGtlcm5lbA0KPiAgKyAqICAgWkZTX0VSUl9JT0NfQVJHX1VOQVZBSUwJYW4gaW5w dXQgYXJndW1lbnQgaXMgbm90IHN1cHBvcnRlZCBieSBrZXJuZWwNCj4gICsgKiAgIFpGU19FUlJf SU9DX0FSR19SRVFVSVJFRAlhIHJlcXVpcmVkIGlucHV0IGFyZ3VtZW50IGlzIG1pc3NpbmcNCj4g ICsgKiAgIFpGU19FUlJfSU9DX0FSR19CQURUWVBFCWFuIGlucHV0IGFyZ3VtZW50IGhhcyBhbiBp bnZhbGlkIHR5cGUNCj4gICsgKi8NCj4gICsNCj4gICsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQo+ ICArI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvZXJybm8uaD4NCj4g LSAjaW5jbHVkZSA8c3lzL3Vpby5oPg0KPiArKyNpbmNsdWRlIDxzeXMvdWlvX2ltcGwuaD4NCj4g ICsjaW5jbHVkZSA8c3lzL2ZpbGUuaD4NCj4gICsjaW5jbHVkZSA8c3lzL2ttZW0uaD4NCj4gICsj aW5jbHVkZSA8c3lzL2Ntbl9lcnIuaD4NCj4gICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4NCj4gICsj aW5jbHVkZSA8c3lzL3pmc19pb2N0bC5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvemZzX3F1b3RhLmg+ DQo+ICArI2luY2x1ZGUgPHN5cy96ZnNfdmZzb3BzLmg+DQo+ICArI2luY2x1ZGUgPHN5cy96ZnNf em5vZGUuaD4NCj4gICsjaW5jbHVkZSA8c3lzL3phcC5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvc3Bh Lmg+DQo+ICArI2luY2x1ZGUgPHN5cy9zcGFfaW1wbC5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvdmRl di5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvdmRldl9pbXBsLmg+DQo+ICArI2luY2x1ZGUgPHN5cy9k bXUuaD4NCj4gICsjaW5jbHVkZSA8c3lzL2RzbF9kaXIuaD4NCj4gICsjaW5jbHVkZSA8c3lzL2Rz bF9kYXRhc2V0Lmg+DQo+ICArI2luY2x1ZGUgPHN5cy9kc2xfcHJvcC5oPg0KPiAgKyNpbmNsdWRl IDxzeXMvZHNsX2RlbGVnLmg+DQo+ICArI2luY2x1ZGUgPHN5cy9kbXVfb2Jqc2V0Lmg+DQo+ICAr I2luY2x1ZGUgPHN5cy9kbXVfaW1wbC5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvZG11X3JlZGFjdC5o Pg0KPiAgKyNpbmNsdWRlIDxzeXMvZG11X3R4Lmg+DQo+ICArI2luY2x1ZGUgPHN5cy9zdW5kZGku aD4NCj4gICsjaW5jbHVkZSA8c3lzL3BvbGljeS5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvem9uZS5o Pg0KPiAgKyNpbmNsdWRlIDxzeXMvbnZwYWlyLmg+DQo+ICArI2luY2x1ZGUgPHN5cy9wYXRobmFt ZS5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvZnMvemZzLmg+DQo+ICArI2luY2x1ZGUgPHN5cy96ZnNf Y3RsZGlyLmg+DQo+ICArI2luY2x1ZGUgPHN5cy96ZnNfZGlyLmg+DQo+ICArI2luY2x1ZGUgPHN5 cy96ZnNfb25leGl0Lmg+DQo+ICArI2luY2x1ZGUgPHN5cy96dm9sLmg+DQo+ICArI2luY2x1ZGUg PHN5cy9kc2xfc2Nhbi5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvZm0vdXRpbC5oPg0KPiAgKyNpbmNs dWRlIDxzeXMvZHNsX2NyeXB0Lmg+DQo+ICArI2luY2x1ZGUgPHN5cy9ycndsb2NrLmg+DQo+ICAr I2luY2x1ZGUgPHN5cy96ZnNfZmlsZS5oPg0KPiAgKw0KPiAgKyNpbmNsdWRlIDxzeXMvZG11X3Jl Y3YuaD4NCj4gICsjaW5jbHVkZSA8c3lzL2RtdV9zZW5kLmg+DQo+ICArI2luY2x1ZGUgPHN5cy9k bXVfcmVjdi5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvZHNsX2Rlc3Ryb3kuaD4NCj4gICsjaW5jbHVk ZSA8c3lzL2RzbF9ib29rbWFyay5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvZHNsX3VzZXJob2xkLmg+ DQo+ICArI2luY2x1ZGUgPHN5cy96ZmVhdHVyZS5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvemNwLmg+ DQo+ICArI2luY2x1ZGUgPHN5cy96aW9fY2hlY2tzdW0uaD4NCj4gICsjaW5jbHVkZSA8c3lzL3Zk ZXZfcmVtb3ZhbC5oPg0KPiAgKyNpbmNsdWRlIDxzeXMvdmRldl9pbXBsLmg+DQo+ICArI2luY2x1 ZGUgPHN5cy92ZGV2X2luaXRpYWxpemUuaD4NCj4gICsjaW5jbHVkZSA8c3lzL3ZkZXZfdHJpbS5o Pg0KPiAgKw0KPiAgKyNpbmNsdWRlICJ6ZnNfbmFtZWNoZWNrLmgiDQo+ICArI2luY2x1ZGUgInpm c19wcm9wLmgiDQo+ICArI2luY2x1ZGUgInpmc19kZWxlZy5oIg0KPiAgKyNpbmNsdWRlICJ6ZnNf Y29tdXRpbC5oIg0KPiAgKw0KPiAgKyNpbmNsdWRlIDxzeXMvbHVhL2x1YS5oPg0KPiAgKyNpbmNs dWRlIDxzeXMvbHVhL2xhdXhsaWIuaD4NCj4gICsjaW5jbHVkZSA8c3lzL3pmc19pb2N0bF9pbXBs Lmg+DQo+ICArDQo+ICAra211dGV4X3QgemZzZGV2X3N0YXRlX2xvY2s7DQo+ICAremZzZGV2X3N0 YXRlX3QgKnpmc2Rldl9zdGF0ZV9saXN0Ow0KPiAgKw0KPiAgKy8qDQo+ICArICogTGltaXQgbWF4 aW11bSBudmxpc3Qgc2l6ZS4gIFdlIGRvbid0IHdhbnQgdXNlcnMgcGFzc2luZyBpbiBpbnNhbmUg dmFsdWVzDQo+ICArICogZm9yIHpjLT56Y19udmxpc3Rfc3JjX3NpemUsIHNpbmNlIHdlIHdpbGwg bmVlZCB0byBhbGxvY2F0ZSB0aGF0IG11Y2ggbWVtb3J5Lg0KPiAgKyAqIERlZmF1bHRzIHRvIDA9 YXV0byB3aGljaCBpcyBoYW5kbGVkIGJ5IHBsYXRmb3JtIGNvZGUuDQo+ICArICovDQo+ICArdW5z aWduZWQgbG9uZyB6ZnNfbWF4X252bGlzdF9zcmNfc2l6ZSA9IDA7DQo+ICArDQo+ICArLyoNCj4g ICsgKiBXaGVuIGxvZ2dpbmcgdGhlIG91dHB1dCBudmxpc3Qgb2YgYW4gaW9jdGwgaW4gdGhlIG9u LWRpc2sgaGlzdG9yeSwgbGltaXQNCj4gICsgKiB0aGUgbG9nZ2VkIHNpemUgdG8gdGhpcyBtYW55 IGJ5dGVzLiAgVGhpcyBtdXN0IGJlIGxlc3MgdGhlbiBETVVfTUFYX0FDQ0VTUy4NCj4gICsgKiBU aGlzIGFwcGxpZXMgcHJpbWFyaWx5IHRvIHpmc19pb2NfY2hhbm5lbF9wcm9ncmFtKCkuDQo+ICAr ICovDQo+ICArdW5zaWduZWQgbG9uZyB6ZnNfaGlzdG9yeV9vdXRwdXRfbWF4ID0gMTAyNCAqIDEw MjQ7DQo+ICArDQo+ICArdWludF90IHpmc19mc3luY2VyX2tleTsNCj4gICt1aW50X3QgemZzX2Fs bG93X2xvZ19rZXk7DQo+ICArDQo+ICArLyogREFUQV9UWVBFX0FOWSBpcyB1c2VkIHdoZW4gemtl eV90eXBlIGNhbiB2YXJ5LiAqLw0KPiAgKyNkZWZpbmUJREFUQV9UWVBFX0FOWQlEQVRBX1RZUEVf VU5LTk9XTg0KPiAgKw0KPiAgK3R5cGVkZWYgc3RydWN0IHpmc19pb2NfdmVjIHsNCj4gICsJemZz X2lvY19sZWdhY3lfZnVuY190CSp6dmVjX2xlZ2FjeV9mdW5jOw0KPiAgKwl6ZnNfaW9jX2Z1bmNf dAkJKnp2ZWNfZnVuYzsNCj4gICsJemZzX3NlY3BvbGljeV9mdW5jX3QJKnp2ZWNfc2VjcG9saWN5 Ow0KPiAgKwl6ZnNfaW9jX25hbWVjaGVja190CXp2ZWNfbmFtZWNoZWNrOw0KPiAgKwlib29sZWFu X3QJCXp2ZWNfYWxsb3dfbG9nOw0KPiAgKwl6ZnNfaW9jX3Bvb2xjaGVja190CXp2ZWNfcG9vbF9j aGVjazsNCj4gICsJYm9vbGVhbl90CQl6dmVjX3NtdXNoX291dG52bGlzdDsNCj4gICsJY29uc3Qg Y2hhcgkJKnp2ZWNfbmFtZTsNCj4gICsJY29uc3QgemZzX2lvY19rZXlfdAkqenZlY19udmxfa2V5 czsNCj4gICsJc2l6ZV90CQkJenZlY19udmxfa2V5X2NvdW50Ow0KPiAgK30gemZzX2lvY192ZWNf dDsNCj4gICsNCj4gICsvKiBUaGlzIGFycmF5IGlzIGluZGV4ZWQgYnkgemZzX3VzZXJxdW90YV9w cm9wX3QgKi8NCj4gICtzdGF0aWMgY29uc3QgY2hhciAqdXNlcnF1b3RhX3Blcm1zW10gPSB7DQo+ ICArCVpGU19ERUxFR19QRVJNX1VTRVJVU0VELA0KPiAgKwlaRlNfREVMRUdfUEVSTV9VU0VSUVVP VEEsDQo+ICArCVpGU19ERUxFR19QRVJNX0dST1VQVVNFRCwNCj4gICsJWkZTX0RFTEVHX1BFUk1f R1JPVVBRVU9UQSwNCj4gICsJWkZTX0RFTEVHX1BFUk1fVVNFUk9CSlVTRUQsDQo+ICArCVpGU19E RUxFR19QRVJNX1VTRVJPQkpRVU9UQSwNCj4gICsJWkZTX0RFTEVHX1BFUk1fR1JPVVBPQkpVU0VE LA0KPiAgKwlaRlNfREVMRUdfUEVSTV9HUk9VUE9CSlFVT1RBLA0KPiAgKwlaRlNfREVMRUdfUEVS TV9QUk9KRUNUVVNFRCwNCj4gICsJWkZTX0RFTEVHX1BFUk1fUFJPSkVDVFFVT1RBLA0KPiAgKwla RlNfREVMRUdfUEVSTV9QUk9KRUNUT0JKVVNFRCwNCj4gICsJWkZTX0RFTEVHX1BFUk1fUFJPSkVD VE9CSlFVT1RBLA0KPiAgK307DQo+ICArDQo+ICArc3RhdGljIGludCB6ZnNfaW9jX3VzZXJzcGFj ZV91cGdyYWRlKHpmc19jbWRfdCAqemMpOw0KPiAgK3N0YXRpYyBpbnQgemZzX2lvY19pZF9xdW90 YV91cGdyYWRlKHpmc19jbWRfdCAqemMpOw0KPiAgK3N0YXRpYyBpbnQgemZzX2NoZWNrX3NldHRh YmxlKGNvbnN0IGNoYXIgKm5hbWUsIG52cGFpcl90ICpwcm9wZXJ0eSwNCj4gICsgICAgY3JlZF90 ICpjcik7DQo+ICArc3RhdGljIGludCB6ZnNfY2hlY2tfY2xlYXJhYmxlKGNvbnN0IGNoYXIgKmRh dGFzZXQsIG52bGlzdF90ICpwcm9wcywNCj4gICsgICAgbnZsaXN0X3QgKiplcnJvcnMpOw0KPiAg K3N0YXRpYyBpbnQgemZzX2ZpbGxfenBscHJvcHNfcm9vdCh1aW50NjRfdCwgbnZsaXN0X3QgKiwg bnZsaXN0X3QgKiwNCj4gICsgICAgYm9vbGVhbl90ICopOw0KPiAgK2ludCB6ZnNfc2V0X3Byb3Bf bnZsaXN0KGNvbnN0IGNoYXIgKiwgenByb3Bfc291cmNlX3QsIG52bGlzdF90ICosIG52bGlzdF90 ICopOw0KPiAgK3N0YXRpYyBpbnQgZ2V0X252bGlzdCh1aW50NjRfdCBudmwsIHVpbnQ2NF90IHNp emUsIGludCBpZmxhZywgbnZsaXN0X3QgKipudnApOw0KPiAgKw0KPiAgK3N0YXRpYyB2b2lkDQo+ ICAraGlzdG9yeV9zdHJfZnJlZShjaGFyICpidWYpDQo+ICArew0KPiAgKwlrbWVtX2ZyZWUoYnVm LCBISVNfTUFYX1JFQ09SRF9MRU4pOw0KPiAgK30NCj4gICsNCj4gICtzdGF0aWMgY2hhciAqDQo+ ICAraGlzdG9yeV9zdHJfZ2V0KHpmc19jbWRfdCAqemMpDQo+ICArew0KPiAgKwljaGFyICpidWY7 DQo+ICArDQo+ICArCWlmICh6Yy0+emNfaGlzdG9yeSA9PSAwKQ0KPiAgKwkJcmV0dXJuIChOVUxM KTsNCj4gICsNCj4gICsJYnVmID0ga21lbV9hbGxvYyhISVNfTUFYX1JFQ09SRF9MRU4sIEtNX1NM RUVQKTsNCj4gICsJaWYgKGNvcHlpbnN0cigodm9pZCAqKSh1aW50cHRyX3QpemMtPnpjX2hpc3Rv cnksDQo+ICArCSAgICBidWYsIEhJU19NQVhfUkVDT1JEX0xFTiwgTlVMTCkgIT0gMCkgew0KPiAg KwkJaGlzdG9yeV9zdHJfZnJlZShidWYpOw0KPiAgKwkJcmV0dXJuIChOVUxMKTsNCj4gICsJfQ0K PiAgKw0KPiAgKwlidWZbSElTX01BWF9SRUNPUkRfTEVOIC0xXSA9ICdcMCc7DQo+ICArDQo+ICAr CXJldHVybiAoYnVmKTsNCj4gICt9DQo+ICArDQo+ICArLyoNCj4gICsgKiBSZXR1cm4gbm9uLXpl cm8gaWYgdGhlIHNwYSB2ZXJzaW9uIGlzIGxlc3MgdGhhbiByZXF1ZXN0ZWQgdmVyc2lvbi4NCj4g ICsgKi8NCj4gICtzdGF0aWMgaW50DQo+ICAremZzX2VhcmxpZXJfdmVyc2lvbihjb25zdCBjaGFy ICpuYW1lLCBpbnQgdmVyc2lvbikNCj4gICt7DQo+ICArCXNwYV90ICpzcGE7DQo+ICArDQo+ICAr CWlmIChzcGFfb3BlbihuYW1lLCAmc3BhLCBGVEFHKSA9PSAwKSB7DQo+ICArCQlpZiAoc3BhX3Zl cnNpb24oc3BhKSA8IHZlcnNpb24pIHsNCj4gICsJCQlzcGFfY2xvc2Uoc3BhLCBGVEFHKTsNCj4g ICsJCQlyZXR1cm4gKDEpOw0KPiAgKwkJfQ0KPiAgKwkJc3BhX2Nsb3NlKHNwYSwgRlRBRyk7DQo+ ICArCX0NCj4gICsJcmV0dXJuICgwKTsNCj4gICt9DQo+ICArDQo+ICArLyoNCj4gICsgKiBSZXR1 cm4gVFJVRSBpZiB0aGUgWlBMIHZlcnNpb24gaXMgbGVzcyB0aGFuIHJlcXVlc3RlZCB2ZXJzaW9u Lg0KPiAgKyAqLw0KPiAgK3N0YXRpYyBib29sZWFuX3QNCj4gICt6cGxfZWFybGllcl92ZXJzaW9u KGNvbnN0IGNoYXIgKm5hbWUsIGludCB2ZXJzaW9uKQ0KPiAgK3sNCj4gICsJb2Jqc2V0X3QgKm9z Ow0KPiAgKwlib29sZWFuX3QgcmMgPSBCX1RSVUU7DQo+ICArDQo+ICArCWlmIChkbXVfb2Jqc2V0 X2hvbGQobmFtZSwgRlRBRywgJm9zKSA9PSAwKSB7DQo+ICArCQl1aW50NjRfdCB6cGx2ZXJzaW9u Ow0KPiAgKw0KPiAgKwkJaWYgKGRtdV9vYmpzZXRfdHlwZShvcykgIT0gRE1VX09TVF9aRlMpIHsN Cj4gICsJCQlkbXVfb2Jqc2V0X3JlbGUob3MsIEZUQUcpOw0KPiAgKwkJCXJldHVybiAoQl9UUlVF KTsNCj4gICsJCX0NCj4gICsJCS8qIFhYWCByZWFkaW5nIGZyb20gbm9uLW93bmVkIG9ianNldCAq Lw0KPiAgKwkJaWYgKHpmc19nZXRfenBscHJvcChvcywgWkZTX1BST1BfVkVSU0lPTiwgJnpwbHZl cnNpb24pID09IDApDQo+ICArCQkJcmMgPSB6cGx2ZXJzaW9uIDwgdmVyc2lvbjsNCj4gICsJCWRt dV9vYmpzZXRfcmVsZShvcywgRlRBRyk7DQo+ICArCX0NCj4gICsJcmV0dXJuIChyYyk7DQo+ICAr fQ0KPiAgKw0KPiAgK3N0YXRpYyB2b2lkDQo+ICAremZzX2xvZ19oaXN0b3J5KHpmc19jbWRfdCAq emMpDQo+ICArew0KPiAgKwlzcGFfdCAqc3BhOw0KPiAgKwljaGFyICpidWY7DQo+ICArDQo+ICAr CWlmICgoYnVmID0gaGlzdG9yeV9zdHJfZ2V0KHpjKSkgPT0gTlVMTCkNCj4gICsJCXJldHVybjsN Cj4gICsNCj4gICsJaWYgKHNwYV9vcGVuKHpjLT56Y19uYW1lLCAmc3BhLCBGVEFHKSA9PSAwKSB7 DQo+ICArCQlpZiAoc3BhX3ZlcnNpb24oc3BhKSA+PSBTUEFfVkVSU0lPTl9aUE9PTF9ISVNUT1JZ KQ0KPiAgKwkJCSh2b2lkKSBzcGFfaGlzdG9yeV9sb2coc3BhLCBidWYpOw0KPiAgKwkJc3BhX2Ns b3NlKHNwYSwgRlRBRyk7DQo+ICArCX0NCj4gICsJaGlzdG9yeV9zdHJfZnJlZShidWYpOw0KPiAg K30NCj4gICsNCj4gICsvKg0KPiAgKyAqIFBvbGljeSBmb3IgdG9wLWxldmVsIHJlYWQgb3BlcmF0 aW9ucyAobGlzdCBwb29scykuICBSZXF1aXJlcyBubyBwcml2aWxlZ2VzLA0KPiAgKyAqIGFuZCBj YW4gYmUgdXNlZCBpbiB0aGUgbG9jYWwgem9uZSwgYXMgdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBk YXRhc2V0Lg0KPiAgKyAqLw0KPiAgKy8qIEFSR1NVU0VEICovDQo+ICArc3RhdGljIGludA0KPiAg K3pmc19zZWNwb2xpY3lfbm9uZSh6ZnNfY21kX3QgKnpjLCBudmxpc3RfdCAqaW5udmwsIGNyZWRf dCAqY3IpDQo+ICArew0KPiAgKwlyZXR1cm4gKDApOw0KPiAgK30NCj4gICsNCj4gICsvKg0KPiAg KyAqIFBvbGljeSBmb3IgZGF0YXNldCByZWFkIG9wZXJhdGlvbnMgKGxpc3QgY2hpbGRyZW4sIGdl dCBzdGF0aXN0aWNzKS4gIFJlcXVpcmVzDQo+ICArICogbm8gcHJpdmlsZWdlcywgYnV0IG11c3Qg YmUgdmlzaWJsZSBpbiB0aGUgbG9jYWwgem9uZS4NCj4gICsgKi8NCj4gICsvKiBBUkdTVVNFRCAq Lw0KPiAgK3N0YXRpYyBpbnQNCj4gICt6ZnNfc2VjcG9saWN5X3JlYWQoemZzX2NtZF90ICp6Yywg bnZsaXN0X3QgKmlubnZsLCBjcmVkX3QgKmNyKQ0KPiAgK3sNCj4gICsJaWYgKElOR0xPQkFMWk9O RShjdXJwcm9jKSB8fA0KPiAgKwkgICAgem9uZV9kYXRhc2V0X3Zpc2libGUoemMtPnpjX25hbWUs IE5VTEwpKQ0KPiAgKwkJcmV0dXJuICgwKTsNCj4gICsNCj4gICsJcmV0dXJuIChTRVRfRVJST1Io RU5PRU5UKSk7DQo+ICArfQ0KPiAgKw0KPiAgK3N0YXRpYyBpbnQNCj4gICt6ZnNfZG96b25lY2hl Y2tfaW1wbChjb25zdCBjaGFyICpkYXRhc2V0LCB1aW50NjRfdCB6b25lZCwgY3JlZF90ICpjcikN Cj4gICt7DQo+ICArCWludCB3cml0YWJsZSA9IDE7DQo+ICArDQo+ICArCS8qDQo+ICArCSAqIFRo ZSBkYXRhc2V0IG11c3QgYmUgdmlzaWJsZSBieSB0aGlzIHpvbmUgLS0gY2hlY2sgdGhpcyBmaXJz dA0KPiAgKwkgKiBzbyB0aGV5IGRvbid0IHNlZSBFUEVSTSBvbiBzb21ldGhpbmcgdGhleSBzaG91 bGRuJ3Qga25vdyBhYm91dC4NCj4gICsJICovDQo+ICArCWlmICghSU5HTE9CQUxaT05FKGN1cnBy b2MpICYmDQo+ICArCSAgICAhem9uZV9kYXRhc2V0X3Zpc2libGUoZGF0YXNldCwgJndyaXRhYmxl KSkNCj4gICsJCXJldHVybiAoU0VUX0VSUk9SKEVOT0VOVCkpOw0KPiAgKw0KPiAgKwlpZiAoSU5H TE9CQUxaT05FKGN1cnByb2MpKSB7DQo+ICArCQkvKg0KPiAgKwkJICogSWYgdGhlIGZzIGlzIHpv bmVkLCBvbmx5IHJvb3QgY2FuIGFjY2VzcyBpdCBmcm9tIHRoZQ0KPiAgKwkJICogZ2xvYmFsIHpv bmUuDQo+ICArCQkgKi8NCj4gICsJCWlmIChzZWNwb2xpY3lfemZzKGNyKSAmJiB6b25lZCkNCj4g ICsJCQlyZXR1cm4gKFNFVF9FUlJPUihFUEVSTSkpOw0KPiAgKwl9IGVsc2Ugew0KPiAgKwkJLyoN Cj4gICsJCSAqIElmIHdlIGFyZSBpbiBhIGxvY2FsIHpvbmUsIHRoZSAnem9uZWQnIHByb3BlcnR5 IG11c3QgYmUgc2V0Lg0KPiAgKwkJICovDQo+ICArCQlpZiAoIXpvbmVkKQ0KPiAgKwkJCXJldHVy biAoU0VUX0VSUk9SKEVQRVJNKSk7DQo+ICArDQo+ICArCQkvKiBtdXN0IGJlIHdyaXRhYmxlIGJ5 IHRoaXMgem9uZSAqLw0KPiAgKwkJaWYgKCF3cml0YWJsZSkNCj4gICsJCQlyZXR1cm4gKFNFVF9F UlJPUihFUEVSTSkpOw0KPiAgKwl9DQo+ICArCXJldHVybiAoMCk7DQo+ICArfQ0KPiAgKw0KPiAg K3N0YXRpYyBpbnQNCj4gICt6ZnNfZG96b25lY2hlY2soY29uc3QgY2hhciAqZGF0YXNldCwgY3Jl ZF90ICpjcikNCj4gICt7DQo+ICArCXVpbnQ2NF90IHpvbmVkOw0KPiAgKw0KPiAgKwlpZiAoZHNs X3Byb3BfZ2V0X2ludGVnZXIoZGF0YXNldCwgemZzX3Byb3BfdG9fbmFtZShaRlNfUFJPUF9aT05F RCksDQo+ICArCSAgICAmem9uZWQsIE5VTEwpKQ0KPiAgKwkJcmV0dXJuIChTRVRfRVJST1IoRU5P RU5UKSk7DQo+ICArDQo+ICArCXJldHVybiAoemZzX2Rvem9uZWNoZWNrX2ltcGwoZGF0YXNldCwg em9uZWQsIGNyKSk7DQo+ICArfQ0KPiAgKw0KPiAgK3N0YXRpYyBpbnQNCj4gICt6ZnNfZG96b25l Y2hlY2tfZHMoY29uc3QgY2hhciAqZGF0YXNldCwgZHNsX2RhdGFzZXRfdCAqZHMsIGNyZWRfdCAq Y3IpDQo+ICArew0KPiAgKwl1aW50NjRfdCB6b25lZDsNCj4gICsNCj4gICsJaWYgKGRzbF9wcm9w X2dldF9pbnRfZHMoZHMsIHpmc19wcm9wX3RvX25hbWUoWkZTX1BST1BfWk9ORUQpLCAmem9uZWQp KQ0KPiAgKwkJcmV0dXJuIChTRVRfRVJST1IoRU5PRU5UKSk7DQo+ICArDQo+ICArCXJldHVybiAo emZzX2Rvem9uZWNoZWNrX2ltcGwoZGF0YXNldCwgem9uZWQsIGNyKSk7DQo+ICArfQ0KPiAgKw0K PiAgK3N0YXRpYyBpbnQNCj4gICt6ZnNfc2VjcG9saWN5X3dyaXRlX3Blcm1zX2RzKGNvbnN0IGNo YXIgKm5hbWUsIGRzbF9kYXRhc2V0X3QgKmRzLA0KPiAgKyAgICBjb25zdCBjaGFyICpwZXJtLCBj cmVkX3QgKmNyKQ0KPiAgK3sNCj4gICsJaW50IGVycm9yOw0KPiAgKw0KPiAgKwllcnJvciA9IHpm c19kb3pvbmVjaGVja19kcyhuYW1lLCBkcywgY3IpOw0KPiAgKwlpZiAoZXJyb3IgPT0gMCkgew0K PiAgKwkJZXJyb3IgPSBzZWNwb2xpY3lfemZzKGNyKTsNCj4gICsJCWlmIChlcnJvciAhPSAwKQ0K PiAgKwkJCWVycm9yID0gZHNsX2RlbGVnX2FjY2Vzc19pbXBsKGRzLCBwZXJtLCBjcik7DQo+ICAr CX0NCj4gICsJcmV0dXJuIChlcnJvcik7DQo+ICArfQ0KPiAgKw0KPiAgK3N0YXRpYyBpbnQNCj4g ICt6ZnNfc2VjcG9saWN5X3dyaXRlX3Blcm1zKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIg KnBlcm0sIGNyZWRfdCAqY3IpDQo+ICArew0KPiAgKwlpbnQgZXJyb3I7DQo+ICArCWRzbF9kYXRh c2V0X3QgKmRzOw0KPiAgKwlkc2xfcG9vbF90ICpkcDsNCj4gICsNCj4gICsJLyoNCj4gICsJICog Rmlyc3QgZG8gYSBxdWljayBjaGVjayBmb3Igcm9vdCBpbiB0aGUgZ2xvYmFsIHpvbmUsIHdoaWNo DQo+ICArCSAqIGlzIGFsbG93ZWQgdG8gZG8gYWxsIHdyaXRlX3Blcm1zLiAgVGhpcyBlbnN1cmVz IHRoYXQgemZzX2lvY18qDQo+ICArCSAqIHdpbGwgZ2V0IHRvIGhhbmRsZSBub25leGlzdGVudCBk YXRhc2V0cy4NCj4gICsJICovDQo+ICArCWlmIChJTkdMT0JBTFpPTkUoY3VycHJvYykgJiYgc2Vj cG9saWN5X3pmcyhjcikgPT0gMCkNCj4gICsJCXJldHVybiAoMCk7DQo+ICArDQo+ICArCWVycm9y ID0gZHNsX3Bvb2xfaG9sZChuYW1lLCBGVEFHLCAmZHApOw0KPiAgKwlpZiAoZXJyb3IgIT0gMCkN Cj4gICsJCXJldHVybiAoZXJyb3IpOw0KPiAgKw0KPiAgKwllcnJvciA9IGRzbF9kYXRhc2V0X2hv bGQoZHAsIG5hbWUsIEZUQUcsICZkcyk7DQo+ICArCWlmIChlcnJvciAhPSAwKSB7DQo+ICArCQlk c2xfcG9vbF9yZWxlKGRwLCBGVEFHKTsNCj4gICsJCXJldHVybiAoZXJyb3IpOw0KPiAgKwl9DQo+ ICArDQo+ICArCWVycm9yID0gemZzX3NlY3BvbGljeV93cml0ZV9wZXJtc19kcyhuYW1lLCBkcywg cGVybSwgY3IpOw0KPiAgKw0KPiAgKwlkc2xfZGF0YXNldF9yZWxlKGRzLCBGVEFHKTsNCj4gICsJ ZHNsX3Bvb2xfcmVsZShkcCwgRlRBRyk7DQo+ICArCXJldHVybiAoZXJyb3IpOw0KPiAgK30NCj4g ICsNCj4gICsvKg0KPiAgKyAqIFBvbGljeSBmb3Igc2V0dGluZyB0aGUgc2VjdXJpdHkgbGFiZWwg cHJvcGVydHkuDQo+ICArICoNCj4gICsgKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG5vbi16ZXJv IGZvciBhY2Nlc3MgYW5kIG90aGVyIGVycm9ycy4NCj4gICsgKi8NCj4gICtzdGF0aWMgaW50DQo+ ICAremZzX3NldF9zbGFiZWxfcG9saWN5KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnN0 cnZhbCwgY3JlZF90ICpjcikNCj4gICt7DQo+ICArI2lmZGVmIEhBVkVfTUxTTEFCRUwNCj4gICsJ Y2hhcgkJZHNfaGV4c2xbTUFYTkFNRUxFTl07DQo+ICArCWJzbGFiZWxfdAlkc19zbCwgbmV3X3Ns Ow0KPiAgKwlib29sZWFuX3QJbmV3X2RlZmF1bHQgPSBGQUxTRTsNCj4gICsJdWludDY0X3QJem9u ZWQ7DQo+ICArCWludAkJbmVlZGVkX3ByaXYgPSAtMTsNCj4gICsJaW50CQllcnJvcjsNCj4gICsN Cj4gICsJLyogRmlyc3QgZ2V0IHRoZSBleGlzdGluZyBkYXRhc2V0IGxhYmVsLiAqLw0KPiAgKwll cnJvciA9IGRzbF9wcm9wX2dldChuYW1lLCB6ZnNfcHJvcF90b19uYW1lKFpGU19QUk9QX01MU0xB QkVMKSwNCj4gICsJICAgIDEsIHNpemVvZiAoZHNfaGV4c2wpLCAmZHNfaGV4c2wsIE5VTEwpOw0K PiAgKwlpZiAoZXJyb3IgIT0gMCkNCj4gICsJCXJldHVybiAoU0VUX0VSUk9SKEVQRVJNKSk7DQo+ ICArDQo+ICArCWlmIChzdHJjYXNlY21wKHN0cnZhbCwgWkZTX01MU0xBQkVMX0RFRkFVTFQpID09 IDApDQo+ICArCQluZXdfZGVmYXVsdCA9IFRSVUU7DQo+ICArDQo+ICArCS8qIFRoZSBsYWJlbCBt dXN0IGJlIHRyYW5zbGF0YWJsZSAqLw0KPiAgKwlpZiAoIW5ld19kZWZhdWx0ICYmIChoZXhzdHJf dG9fbGFiZWwoc3RydmFsLCAmbmV3X3NsKSAhPSAwKSkNCj4gICsJCXJldHVybiAoU0VUX0VSUk9S KEVJTlZBTCkpOw0KPiAgKw0KPiAgKwkvKg0KPiAgKwkgKiBJbiBhIG5vbi1nbG9iYWwgem9uZSwg ZGlzYWxsb3cgYXR0ZW1wdHMgdG8gc2V0IGEgbGFiZWwgdGhhdA0KPiAgKwkgKiBkb2Vzbid0IG1h dGNoIHRoYXQgb2YgdGhlIHpvbmU7IG90aGVyd2lzZSBubyBvdGhlciBjaGVja3MNCj4gICsJICog YXJlIG5lZWRlZC4NCj4gICsJICovDQo+ICArCWlmICghSU5HTE9CQUxaT05FKGN1cnByb2MpKSB7 DQo+ICArCQlpZiAobmV3X2RlZmF1bHQgfHwgIWJsZXF1YWwoJm5ld19zbCwgQ1JfU0woQ1JFRCgp KSkpDQo+ICArCQkJcmV0dXJuIChTRVRfRVJST1IoRVBFUk0pKTsNCj4gICsJCXJldHVybiAoMCk7 DQo+ICArCX0NCj4gICsNCj4gICsJLyoNCj4gICsJICogRm9yIGdsb2JhbC16b25lIGRhdGFzZXRz IChpLmUuLCB0aG9zZSB3aG9zZSB6b25lZCBwcm9wZXJ0eSBpcw0KPiAgKwkgKiAib2ZmIiwgdmVy aWZ5IHRoYXQgdGhlIHNwZWNpZmllZCBuZXcgbGFiZWwgaXMgdmFsaWQgZm9yIHRoZQ0KPiAgKwkg KiBnbG9iYWwgem9uZS4NCj4gICsJICovDQo+ICArCWlmIChkc2xfcHJvcF9nZXRfaW50ZWdlcihu YW1lLA0KPiAgKwkgICAgemZzX3Byb3BfdG9fbmFtZShaRlNfUFJPUF9aT05FRCksICZ6b25lZCwg TlVMTCkpDQo+ICArCQlyZXR1cm4gKFNFVF9FUlJPUihFUEVSTSkpOw0KPiAgKwlpZiAoIXpvbmVk KSB7DQo+ICArCQlpZiAoemZzX2NoZWNrX2dsb2JhbF9sYWJlbChuYW1lLCBzdHJ2YWwpICE9IDAp DQo+ICArCQkJcmV0dXJuIChTRVRfRVJST1IoRVBFUk0pKTsNCj4gICsJfQ0KPiAgKw0KPiAgKwkv Kg0KPiAgKwkgKiBJZiB0aGUgZXhpc3RpbmcgZGF0YXNldCBsYWJlbCBpcyBub25kZWZhdWx0LCBj aGVjayBpZiB0aGUNCj4gICsJICogZGF0YXNldCBpcyBtb3VudGVkIChsYWJlbCBjYW5ub3QgYmUg Y2hhbmdlZCB3aGlsZSBtb3VudGVkKS4NCj4gICsJICogR2V0IHRoZSB6ZnN2ZnNfdDsgaWYgdGhl cmUgaXNuJ3Qgb25lLCB0aGVuIHRoZSBkYXRhc2V0IGlzbid0DQo+ICArCSAqIG1vdW50ZWQgKG9y IGlzbid0IGEgZGF0YXNldCwgZG9lc24ndCBleGlzdCwgLi4uKS4NCj4gICsJICovDQo+ICArCWlm IChzdHJjYXNlY21wKGRzX2hleHNsLCBaRlNfTUxTTEFCRUxfREVGQVVMVCkgIT0gMCkgew0KPiAg KwkJb2Jqc2V0X3QgKm9zOw0KPiAgKwkJc3RhdGljIGNvbnN0IGNoYXIgKnNldHNsX3RhZyA9ICJz ZXRzbF90YWciOw0KPiAgKw0KPiAgKwkJLyoNCj4gICsJCSAqIFRyeSB0byBvd24gdGhlIGRhdGFz ZXQ7IGFib3J0IGlmIHRoZXJlIGlzIGFueSBlcnJvciwNCj4gICsJCSAqIChlLmcuLCBhbHJlYWR5 IG1vdW50ZWQsIGluIHVzZSwgb3Igb3RoZXIgZXJyb3IpLg0KPiAgKwkJICovDQo+ICArCQllcnJv ciA9IGRtdV9vYmpzZXRfb3duKG5hbWUsIERNVV9PU1RfWkZTLCBCX1RSVUUsIEJfVFJVRSwNCj4g ICsJCSAgICBzZXRzbF90YWcsICZvcyk7DQo+ICArCQlpZiAoZXJyb3IgIT0gMCkNCj4gICsJCQly ZXR1cm4gKFNFVF9FUlJPUihFUEVSTSkpOw0KPiAgKw0KPiAgKwkJZG11X29ianNldF9kaXNvd24o b3MsIEJfVFJVRSwgc2V0c2xfdGFnKTsNCj4gICsNCj4gICsJCWlmIChuZXdfZGVmYXVsdCkgew0K PiAgKwkJCW5lZWRlZF9wcml2ID0gUFJJVl9GSUxFX0RPV05HUkFERV9TTDsNCj4gKioqIDEzMjky IExJTkVTIFNLSVBQRUQgKioqDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQo+IGRldi1jb21taXRzLXNyYy1tYWluQGZyZWVic2Qub3JnIG1haWxpbmcg bGlzdA0KPiBodHRwczovL2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlzdGluZm8vZGV2LWNv bW1pdHMtc3JjLW1haW4NCj4gVG8gdW5zdWJzY3JpYmUsIHNlbmQgYW55IG1haWwgdG8gImRldi1j b21taXRzLXNyYy1tYWluLXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIg0KDQpPbiBGcmVlQlNEIDE0 LUNVUlJFTlQsIHdpdGggWkZTIHN0YXRpY2FsbHkgYnVpbHRpbiB0aGUga2VybmVsLCB0aGlzIGNv bW1pdCByZW5kZXJzICJtYWtlDQpidWlsZGtlcm5lbCIgdG8gZmFpbDoNCg0KWy4uLl0NCg0KPT09 PiBjYW0gKGFsbCkNCi0gLS0tIGtlcm5lbCAtLS0NCmxkOiBlcnJvcjogdW5kZWZpbmVkIHN5bWJv bDogemZzX3JhY2N0X3JlYWQNCj4+PiByZWZlcmVuY2VkIGJ5IGFyYy5jDQo+Pj4gICAgICAgICAg ICAgICBhcmMubzooYXJjX3JlYWQpDQotIC0tLSBtb2R1bGVzLWFsbCAtLS0NCi0gLS0tIGFsbF9z dWJkaXJfY2FyZGJ1cyAtLS0NCj09PT4gY2FyZGJ1cyAoYWxsKQ0KLSAtLS0ga2VybmVsIC0tLQ0K DQpsZDogZXJyb3I6IHVuZGVmaW5lZCBzeW1ib2w6IHpmc19yYWNjdF93cml0ZQ0KPj4+IHJlZmVy ZW5jZWQgYnkgZG11LmMNCj4+PiAgICAgICAgICAgICAgIGRtdS5vOihkbXVfYnVmX2hvbGRfYXJy YXlfYnlfZG5vZGUpDQo+Pj4gcmVmZXJlbmNlZCBieSBkbXUuYw0KPj4+ICAgICAgICAgICAgICAg ZG11Lm86KGRtdV9hc3NpZ25fYXJjYnVmX2J5X2Rub2RlKQ0KKioqIFtrZXJuZWxdIEVycm9yIGNv ZGUgMQ0KDQptYWtlWzJdOiBzdG9wcGVkIGluIC91c3Ivb2JqL3Vzci9zcmMvYW1kNjQuYW1kNjQv c3lzL0NVUlJFTlQxNA0KLSAtLS0gbW9kdWxlcy1hbGwgLS0tDQoqKiogW21vZHVsZXMtYWxsXSBF cnJvciBjb2RlIDYNCg0KDQoNCi0gLS0gDQpPLiBIYXJ0bWFubg0KDQpJY2ggd2lkZXJzcHJlY2hl IGRlciBOdXR6dW5nIG9kZXIgw5xiZXJtaXR0bHVuZyBtZWluZXIgRGF0ZW4gZsO8cg0KV2VyYmV6 d2Vja2Ugb2RlciBmw7xyIGRpZSBNYXJrdC0gb2RlciBNZWludW5nc2ZvcnNjaHVuZyAowqcgMjgg QWJzLiA0IEJEU0cpLg0KLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0NCg0KaUhVRUFSWUlB QjBXSVFTeThJQnhBUERrcVZCYVRKNDROMVpaUGJhNVJ3VUNZRE81UmdBS0NSQTROMVpaUGJhNQ0K Uno0L0FRRGhoYnNJV1FZWjNaZ3JNZnpTczBtNDEwQ3B2bzVtek9VMXlJSDNQSVhKMUFEL2JVUHgv UlVoRXVZWA0KMTdXbVFSNSt1dVVMOXcxL3JUTldwczViYVBIbWFBdz0NCj03aWd0DQotLS0tLUVO RCBQR1AgU0lHTkFUVVJFLS0tLS0NCg==