From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A393C636CC for ; Wed, 8 Feb 2023 16:39:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1E54F6B0071; Wed, 8 Feb 2023 11:39:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 196796B0072; Wed, 8 Feb 2023 11:39:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 00EFE6B0078; Wed, 8 Feb 2023 11:38:59 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E2E666B0071 for ; Wed, 8 Feb 2023 11:38:59 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id B95A81C6625 for ; Wed, 8 Feb 2023 16:38:59 +0000 (UTC) X-FDA: 80444683998.10.639169C Received: from mailout2.w2.samsung.com (mailout2.w2.samsung.com [211.189.100.12]) by imf26.hostedemail.com (Postfix) with ESMTP id 9574D14001A for ; Wed, 8 Feb 2023 16:38:56 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=D7HGS1dj; spf=pass (imf26.hostedemail.com: domain of a.manzanares@samsung.com designates 211.189.100.12 as permitted sender) smtp.mailfrom=a.manzanares@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675874337; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ux/Wf1KFaL+Kzxhp/7GKAmlWg+BMUHvjlBy06n8YZPQ=; b=UdTkDGdDGEudYOGTJg/hPKRpg17e/qBbd0mqeFm+O2HewtDZplbBo2YzJcjEwTUevkXdss +k5CIXHQAANyvv3f5ttTlD13juiJ1EmidRrkuzUd/eExAL/wk/6o2ikRnvz/v/lEZip4I5 6gljHGOYBzDT23v7gCqzyr0zWZTr/qc= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=D7HGS1dj; spf=pass (imf26.hostedemail.com: domain of a.manzanares@samsung.com designates 211.189.100.12 as permitted sender) smtp.mailfrom=a.manzanares@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675874337; a=rsa-sha256; cv=none; b=1T0+xS7DGW/A3Zr1qKFS54kuNu7Rs4J7ZmVsT5GMS4qEMpVFaZpWOipDKjsxLROv36wH0J QZvV+Y0DXZ2UQEnU6Kkd/P/s3C++rBAZdrlB1JM+xw4n7bvZ+NWqWRmX9HNiixzT4HRPbh IywhmVHvG/wNDDuMjhReRXmChr1PUZY= Received: from uscas1p2.samsung.com (unknown [182.198.245.207]) by mailout2.w2.samsung.com (KnoxPortal) with ESMTP id 20230208163854usoutp02c126a1b10ed990442fb34d11026a50ae~B5tQPFV-W0569105691usoutp02N; Wed, 8 Feb 2023 16:38:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w2.samsung.com 20230208163854usoutp02c126a1b10ed990442fb34d11026a50ae~B5tQPFV-W0569105691usoutp02N DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1675874334; bh=ux/Wf1KFaL+Kzxhp/7GKAmlWg+BMUHvjlBy06n8YZPQ=; h=From:To:CC:Subject:Date:In-Reply-To:References:From; b=D7HGS1djN0Zgtqbr3uY/nuRxYMLHJpBE+3xpYPvRvkepAxXeS2YOVhus1dtbCLJkA uRJwnPQTjCiojpN8wCaHqw+hVG2hhYzEJRDQ2HBWSkvCTkDQuyZiu2e9aDd6AIHVPe mtCkTgLYxGvPm8Ss2BzGrtkPwcCa6hWK5zFMxSgg= Received: from ussmges1new.samsung.com (u109.gpu85.samsung.co.kr [203.254.195.109]) by uscas1p1.samsung.com (KnoxPortal) with ESMTP id 20230208163854uscas1p1fb01489635b958c73cf694c4623e9ad8~B5tQDm8b72600926009uscas1p1H; Wed, 8 Feb 2023 16:38:54 +0000 (GMT) Received: from uscas1p2.samsung.com ( [182.198.245.207]) by ussmges1new.samsung.com (USCPEMTA) with SMTP id BD.A4.06976.E10D3E36; Wed, 8 Feb 2023 11:38:54 -0500 (EST) Received: from ussmgxs3new.samsung.com (u92.gpu85.samsung.co.kr [203.254.195.92]) by uscas1p1.samsung.com (KnoxPortal) with ESMTP id 20230208163854uscas1p1280c9e7eea2821427c2a48cb117f25e6~B5tPv6zuR2598125981uscas1p1O; Wed, 8 Feb 2023 16:38:54 +0000 (GMT) X-AuditID: cbfec36d-afdff70000011b40-d1-63e3d01e794a Received: from SSI-EX4.ssi.samsung.com ( [105.128.2.145]) by ussmgxs3new.samsung.com (USCPEXMTA) with SMTP id E9.93.11346.D10D3E36; Wed, 8 Feb 2023 11:38:54 -0500 (EST) Received: from SSI-EX3.ssi.samsung.com (105.128.2.228) by SSI-EX4.ssi.samsung.com (105.128.2.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.2375.24; Wed, 8 Feb 2023 08:38:53 -0800 Received: from SSI-EX3.ssi.samsung.com ([105.128.5.228]) by SSI-EX3.ssi.samsung.com ([105.128.5.228]) with mapi id 15.01.2375.024; Wed, 8 Feb 2023 08:38:53 -0800 From: Adam Manzanares To: Jonathan Cameron CC: Viacheslav A.Dubeyko , "lsf-pc@lists.linux-foundation.org" , "linux-mm@kvack.org" , "linux-cxl@vger.kernel.org" , Dan Williams , "Cong Wang" , Viacheslav Dubeyko Subject: Re: [External] [LSF/MM/BPF TOPIC] CXL Fabric Manager (FM) architecture Thread-Topic: [External] [LSF/MM/BPF TOPIC] CXL Fabric Manager (FM) architecture Thread-Index: AQHZNN6wRi5UmtjKNECy+QNEa6vRjq65Us2AgAG6egCAAOemAIAJ3xWA Date: Wed, 8 Feb 2023 16:38:53 +0000 Message-ID: <20230208163844.GA407917@bgt-140510-bm01> In-Reply-To: <20230202095402.0000585d@Huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [105.128.2.176] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrLKsWRmVeSWpSXmKPExsWy7djX87pyFx4nG6xfpWDx8N85JovpUy8w WqxaeI3N4vysUywW99b8Z7XY93ovs8WnLbOZLDo2vGF04PD4d2INm8fB9W9YPFqOvGX1WLzn JZPHpk+T2D0m31jO6PF5k1wAexSXTUpqTmZZapG+XQJXxqr7q1kKHm1grJjzcw5LA+OcNYxd jJwcEgImEj833GDvYuTiEBJYySixYeoWFginlUni6qT3cFWHN2xggkisZZS4tGMjG4TzkVGi e+MaqMxSRomOBctZQVrYBAwkfh/fyAxiiwgYSVxZdhBsCbPACyaJf68OgyWEBQIlpi5/xghR FCTR27+aDcJ2k7i19DHYIBYBFYnHnefZQWxeAVOJM/9PsIDYnAKGEkePz2ICsRkFxCS+n1oD ZjMLiEvcejKfCeJuQYlFs/cwQ9hiEv92PWSDsBUl7n9/CTSTA6heU2L9Ln2IVjuJ/S8+s0LY ihJTuh9CrRWUODnzCQtEq6TEwRU3wGEkIfCBQ2LVnk+sEAkXiUtnpkPtkpaYvuYyVEO+xK62 K1DxComrr7uhbrCWWPhnPdMERpVZSM6ehXDSLCQnzUJy0iwkJy1gZF3FKF5aXJybnlpsmJda rlecmFtcmpeul5yfu4kRmMJO/zucu4Nxx62PeocYmTgYDzFKcDArifB+n/g4WYg3JbGyKrUo P76oNCe1+BCjNAeLkjivoe3JZCGB9MSS1OzU1ILUIpgsEwenVANTls9Nt003d/77Wbno0mP3 loM3BIsbb6U6b7B8+y1usfSOnS9jGqqnd6TvMzt79NiUEwL/osJXfknYcEnORju6wmf25g1b ziVortlpHmtZWWY8s8b9WM3+rUUit92uWdZe1FEPFonwk5jet+eTAf+M6mVdE7v4fyfe65i2 4mWY1g65rE+hme8sVyxt/pFw1UgnZaXXJqs7s0KWXe7ZkhY4b4r3q8UCO7vuCVyVZgkvum3E 3D4lYtUkE4/je7MC/CZdD2KfqHbOw21epMfNXH+7cMPKRgmrJc9W31mv9HvCzxJ/Mb3zJjFR u+bt1nwV6el0V+eH376n7VNPfz95oPxQSdJNN/dy/0Lper/CiwrsSizFGYmGWsxFxYkAfDJc htADAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNIsWRmVeSWpSXmKPExsWS2cA0UVfuwuNkg2ubuSwe/jvHZDF96gVG i1ULr7FZnJ91isXi3pr/rBb7Xu9ltvi0ZTaTRceGN4wOHB7/Tqxh8zi4/g2LR8uRt6wei/e8 ZPLY9GkSu8fkG8sZPT5vkgtgj+KySUnNySxLLdK3S+DKWHV/NUvBow2MFXN+zmFpYJyzhrGL kZNDQsBE4vCGDUxdjFwcQgKrGSXab0xmhHA+MkrsO/UMKrOUUaLh4wVWkBY2AQOJ38c3MoPY IgJGEleWHWQHKWIWeMEk8e/VYbCEsECgxNTlzxghioIkmm4ch7LdJG4tfQw2iEVAReJx53l2 EJtXwFTizP8TLBDbZjJJfP05lQUkwSlgKHH0+CwmEJtRQEzi+6k1YDazgLjErSfzmSCeEJBY suc8M4QtKvHy8T9WCFtR4v73l0ALOIDqNSXW79KHaLWT2P/iMyuErSgxpfsh1A2CEidnPmGB aJWUOLjiBssERolZSLbNQpg0C8mkWUgmzUIyaQEj6ypG8dLi4tz0imLjvNRyveLE3OLSvHS9 5PzcTYzA+D/973DMDsZ7tz7qHWJk4mA8xCjBwawkwvt94uNkId6UxMqq1KL8+KLSnNTiQ4zS HCxK4rwesRPjhQTSE0tSs1NTC1KLYLJMHJxSDUyFFzY0LfvQ2rMoTsnu1VV13xymqBNquiJ3 Hx+Unp/hcnhLwfPYDY9etKdt9t7HX31X53SX3bIe1aufHdKmzJeKMufNDbKWPLScVXplYasJ 2xqd3TqX9OVT1V4VX/Y1YXd4FxKuyT/xaL2wlIP2BNMHT1rWOt+R/6b4o6X5HEfmfgOPc5nu 9o1WBQHhz38vv1zgH1bc0idzcsuP0JJf7jbapU/3GkrMfi/r8Xy66o47qUWmF3scfQpqGthU d2YKP3+Z9m7ix7jm51oM7688m9LHOfuIznTrgob9zH8cvoiYPn0nyKyiFi8rNfvblpVz13X8 VBEOzkpcYRHN0rbnqEz5n9287cXphsXmP8RylViKMxINtZiLihMBUvDBW24DAAA= X-CMS-MailID: 20230208163854uscas1p1280c9e7eea2821427c2a48cb117f25e6 CMS-TYPE: 301P X-CMS-RootMailID: 20230202095410uscas1p18ff39cc89400e3bbecfef9036887758a References: <7F001EAF-C512-436A-A9DD-E08730C91214@bytedance.com> <20230131174115.00007493@Huawei.com> <5671D3B3-83B3-49FF-A662-509648E6D297@bytedance.com> <20230202095402.0000585d@Huawei.com> X-Rspamd-Queue-Id: 9574D14001A X-Stat-Signature: je96sm3enmdjho11t7ygxscpob5fh94i X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1675874336-814960 X-HE-Meta: U2FsdGVkX180EEzZQzIKZvMYzOutfooNx22rb9LDHV0/saD13HscJwGFDFplzHO/vhIYmgXlHN7n7ygFPK1MrZMFXD1NUoQjXJwic4Qn24tuIE2rlwhza85qpiipMEEOdLydjwHiMktABRoJ5SEOZWGTTYiojkC2eQxHZs2Oxhhd8lbJjMpaVURLNkXldJBknhhIvTAQM0Vsn1Fe5GHgSIfOSYvHv5X3over+5PVW4ALfzeqVSt2WAZFpd/bzhqgkzCgNS5ixtXe/nKpTQ5Z+izqCoXZQ2vy9G/PmsksWt23VYfZNu9gNhv5C19pX2rhdXvuyZtTVzA7r9eaZU8YbNFWVy6/VGZEkovgXX/8xIFmUtb+YNPzpNvmSzhLQpgU7oZGXeA2KhwVwrQ1nLx9tGA4RK4/+2OuInmaz+H3j5iswtyl+F2Yov40bdzBN+jl9zoUJ/wswaX37P+xLaGKxCXNyBmEEMla0iXJoutgAD0+hP/fRtVUwmuyiyat6rtKeESU4qqYX3qUxwyKqz6doNb6u/8Giabc1WeQ4MeGKX7TMAZm3SuRTV0dxgu7KUgmYhJvssYE9PDSCcxTyz8eQrOu6IwsKJjMOhZu7FkVjvuyTzAp0yHFou7CL/qkSlpOm0UDK/BaROwVy7Dxx3ARUzjRozaIveO0cQh4uUZQggY0LLQEjDWOS7p+XGuCmWsE8WKuTrkWqG9zw8W2KXNHKYId+kpd5SZ1UaYAEVZjK44C4qSa0HAapHTv5hacVPZ6LcBEOCa+I6Xh4tAxzncuBR6XUP56aW7H79KU+cuQPAeZUHj3MZ81xcRky/Cf53sa/vtHyEBF7TThyVZ8bWFyDyjd5gYTN8bt3uJe7vEp2I60uOmRdGQVb//ZsaJ+syY4SQwzUThWX1cfW6r0j0ccxjd7ENc9VtAbDN9OMBXKM9QleDVda9nTL3cXqrRu9xJWXFweJ3QdwnEG4rO3Z0c yU0ro8To /lh8IjYV47G9r5bzxKeuvlswFr1252Tp+qLHu5ysx5zcYZfiefo9I2b2I79lyPTwm0r1cA/MOXSzS0wrINIVyMCJAqy9gL7K9eVgHmwHVwtb06po= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: T24gVGh1LCBGZWIgMDIsIDIwMjMgYXQgMDk6NTQ6MDJBTSArMDAwMCwgSm9uYXRoYW4gQ2FtZXJv biB3cm90ZToNCj4gT24gV2VkLCAxIEZlYiAyMDIzIDEyOjA0OjU2IC0wODAwDQo+ICJWaWFjaGVz bGF2IEEuRHViZXlrbyIgPHZpYWNoZXNsYXYuZHViZXlrb0BieXRlZGFuY2UuY29tPiB3cm90ZToN Cj4gDQo+ID4gSGkgSm9uYXRoYW4sDQo+ID4gDQo+ID4gPiBPbiBKYW4gMzEsIDIwMjMsIGF0IDk6 NDEgQU0sIEpvbmF0aGFuIENhbWVyb24gPEpvbmF0aGFuLkNhbWVyb25AaHVhd2VpLmNvbT4gd3Jv dGU6DQo+ID4gPiANCj4gPiA+IE9uIE1vbiwgMzAgSmFuIDIwMjMgMTE6MTE6MjMgLTA4MDANCj4g PiA+ICJWaWFjaGVzbGF2IEEuRHViZXlrbyIgPHZpYWNoZXNsYXYuZHViZXlrb0BieXRlZGFuY2Uu Y29tPiB3cm90ZToNCj4gPiA+ICAgDQo+ID4gPj4gSGVsbG8sICANCj4gPiA+IA0KPiA+ID4gSGkg U2xhdmEsDQo+ID4gPiANCj4gPiA+IEknbGwgdGhyb3cgc29tZSBvcGluaW9ucyBhdCB0aGlzIDop DQo+ID4gPiAgIA0KPiA+ID4+IA0KPiA+ID4+IEkgd291bGQgbGlrZSB0byBzdWdnZXN0IEZhYnJp YyBNYW5hZ2VyIChGTSkgYXJjaGl0ZWN0dXJlIGRpc2N1c3Npb24uIEFzIGZhciBhcyBJIGNhbiBz ZWUsDQo+ID4gPj4gRk0gYXJjaGl0ZWN0dXJlIHJlcXVpcmVzOiAoMSkgRk0gY29uZmlndXJhdGlv biB0b29sLCAoMikgRk0gZGFlbW9uLCAoMykgUUVNVSBlbXVsYXRpb24NCj4gPiA+PiBvZiBDWEwg aGFyZHdhcmUgZmVhdHVyZXMuIEZNIGRhZW1vbiByZWNlaXZlcyByZXF1ZXN0cyBmcm9tIGNvbmZp Z3VyYXRpb24gdG9vbCBhbmQNCj4gPiA+PiBleGVjdXRlcyBjb21tYW5kcyBieSBtZWFucyBvZiBp bnRlcmFjdGlvbiB3aXRoIGtlcm5lbC1zcGFjZSBzdWJzeXN0ZW0gYW5kIENYTCBzd2l0Y2gNCj4g PiA+PiAodGhhdCBjYW4gYmUgZW11bGF0ZWQgYnkgUUVNVSkuIFNvLCB0aGUga2V5IHF1ZXN0aW9u cyBmb3IgZGlzY3Vzc2lvbjogIA0KPiA+ID4gDQo+ID4gPiBXb3J0aCBkZXNjcmliaW5nIG9wZXJh dGluZyBtb2RlcyB0byBiZSBzdXBwb3J0ZWQ6IFlvdSBraW5kIG9mIGNvdmVyIHRoaXMgbGF0ZXIN Cj4gPiA+IGJ1dCBJIHRoaW5rIHB1bGxpbmcgaXQgb3V0IG1ha2UgaXQgY2xlYXJlciB0aGF0IHdl IHdhbnQgb25lIGJpdCBvZiBzb2Z0d2FyZSB0bw0KPiA+ID4gZG8gc2V2ZXJhbCBkaWZmZXJlbnQg dGhpbmdzLg0KPiA+ID4gDQo+ID4gPiAxKSBGTSBzZXBhcmF0ZSBmcm9tIGhvc3RzIGFuZCB0YWxr ZWQgdG8gYnkgaGlnaGVyIGxldmVsIG9yY2hlc3RyYXRpb24gc29mdHdhcmUNCj4gPiA+ICAgYnV0 IHVzaW5nIGEgU3dpdGNoIENDSSBvciBNSEQgbWFpbGJveCAob3ZlciBQQ0kpDQo+ID4gPiAgIFRo aXMgb25lIGlzIGZhaXJseSBlYXN5IGJlY2F1c2UgYW55IHNlY3VyaXR5IC8gc2hvb3Rpbmcgc2Vs ZiBpbiBmb290IHByb2JsZW1zDQo+ID4gPiAgIGFyZSBhbiBpc3N1ZSBmb3IgaGlnaGVyIGxldmVs IHNvZnR3YXJlLiANCj4gPiA+IDIpIEZNIG9uIGhvc3QuICBQcm9iYWJseSBtb3N0bHkgZ29pbmcg YmUgcmVsZXZhbnQgZm9yIGRlYnVnIGJ1dCBtYXkgdXNlDQo+ID4gPiAgIHRoZSBzYW1lIG1haWxi b3ggYXMgaXMgYmVpbmcgdXNlZCBieSB0aGUgZXhpc3RpbmcgQ1hMIGRyaXZlcnMgKGZvciBNdWx0 aQ0KPiA+ID4gICBIZWFkIERldmljZSBpdCBtaWdodCBiZSB0aGUgZW5kIHBvaW50IG1haWxib3gs IGZvciBNdWx0aSBMb2dpY2FsIERldmljZQ0KPiA+ID4gICBiZWhpbmQgYSBzd2l0Y2ggaXQgbWln aHQgYmUgdGhlIHN3aXRjaCBtYWlsYm94KS4NCj4gPiA+IDMpIEFsbCBvdXQgb2YgYmFuZCAoTUNU UCBvciBzaW1pbGFyIC0gd2FudCBzb21lIHNoYXJlZCBjb2RlLCBidXQgbm8NCj4gPiA+ICAgbmVl ZCBmb3IgYW55dGhpbmcgaW4ga2VybmVsIGFzIGZhciBhcyBJIGNhbiB0ZWxsKS4NCj4gPiA+ICAg DQo+ID4gDQo+ID4gTW9zdCBwcm9iYWJseSwgd2Ugd2lsbCBoYXZlIG11bHRpcGxlIEZNIGltcGxl bWVudGF0aW9ucyBpbiBmaXJtd2FyZS4NCj4gPiBZZXMsIEZNIG9uIGhvc3QgY291bGQgYmUgaW1w b3J0YW50IGZvciBkZWJ1ZyBhbmQgdG8gdmVyaWZ5IGNvcnJlY3RuZXNzDQo+ID4gZmlybXdhcmUt YmFzZWQgaW1wbGVtZW50YXRpb25zLiBCdXQgRk0gZGFlbW9uIG9uIGhvc3QgY291bGQgYmUgaW1w b3J0YW50DQo+ID4gdG8gcmVjZWl2ZSBub3RpZmljYXRpb25zIGFuZCByZWFjdCBzb21laG93IG9u IHRoZXNlIGV2ZW50cy4gQWxzbywgam91cm5hbGxpbmcNCj4gPiBvZiBldmVudHMvbWVzc2FnZXMv ZXZlbnRzIGNvdWxkIGJlIGltcG9ydGFudCByZXNwb25zaWJpbGl0eSBvZiBGTSBkYWVtb24NCj4g PiBvbiBob3N0LiANCj4gDQo+IEkgYWdyZWUgd2l0aCBhbiBGTSBkYWVtb24gc29tZXdoZXJlIChw b3RlbnRpYWxseSBydW5uaW5nIG9uIHRoZSBCTUMgdHlwZSBjaGlwDQo+IHRoYXQgYWxzbyBoYXMg dGhlIGxvd2VyIGxldmVsIEZNLUFQSSBhY2Nlc3MpLiAgSSB0aGluayBpdCBpcyBzb21ld2hhdA0K PiBzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9mIHRoaXMgb24gYmFzaXMgaXQgbWF5IHdlbGwganVz dCBiZSB0YWxraW5nIHJlZGZpc2gNCj4gdG8gdGhlIEZNIGFuZCB0aGVyZSBhcmUgbG90cyBvZiB0 b29scyBmb3IgdGhhdCBzb3J0IG9mIGhhbmRsaW5nIGFscmVhZHkuDQo+IA0KDQpJIHdvdWxkIGJl IGludGVyZXN0ZWQgaW4gcGFydGljcGF0aW5nIGluIGEgQk9GIGFib3V0IHRoaXMgdG9waWMuIEkg d29uZGVyIHdoYXQNCmhhcHBlbnMgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIHN3aXRjaGVzIHdpdGgg bXVsdGlwbGUgRk1zIGVhY2ggb24gYSBzZXBhcmF0ZSBCTUMuDQpJbiB0aGlzIGNhc2UsIGRvZXMg aXQgbWFrZSBtb3JlIHNlbnNlIHRvIGhhdmUgYW4gb3duZXIgb2YgdGhlIGdsb2JhbCBGTSBzdGF0 ZSANCmJlIGEgdXNlciBzcGFjZSBhcHBsaWNhdGlvbi4gSXMgdGhpcyB0aGUgam9iIG9mIHRoZSBv cmNoZXN0cmF0b3I/DQoNClRoZSBCTUMgYmFzZWQgRk0gc2VlbXMgdG8gaGF2ZSBzY2FsYWJpbGl0 eSBpc3N1ZXMsIGJ1dCB3aWxsIHdlIGhpdCB0aGVtIGluDQpwcmFjdGljZSBhbnkgdGltZSBzb29u Lg0KDQo+ID4gDQo+ID4gPiAgIA0KPiA+ID4+ICgxKSBIb3cgdG8gZGlzdHJpYnV0ZSBmdW5jdGlv bmFsaXR5IGJldHdlZW4gdXNlci1zcGFjZSBhbmQga2VybmVsLXNwYWNlPyAgDQo+ID4gPiANCj4g PiA+IEtlcm5lbCBmb3IgdHJhbnNwb3J0IGlmIG1haWxib3ggYmFzZWQgKHN3aXRjaCBvciBNSEQp Lg0KPiA+ID4gUG9zc2libHkgaGVscCBpbiBrZXJuZWwgd2l0aCB0aGUgaG9zdCB0byBNdWx0aWhl YWRlZCBkZXZpY2UgRk0gTEQgdHVubmVsaW5nDQo+ID4gPiBhbmQgaG9zdCB0byBzd2l0Y2ggdG8g TXVsdGkgTG9naWNhbCBEZXZpY2UgLSBMb2dpY2FsIERldmljZSB0dW5uZWxpbmcNCj4gPiA+IGJ1 dCB0aGF0IGNvdWxkIGFsc28gYmUgbGVmdCB0byB1c2Vyc3BhY2UuDQo+ID4gPiAgIA0KPiA+IA0K PiA+IFBlb3BsZSBsb3ZlcyB0byBtb3ZlIGV2ZXJ5dGhpbmcgaW4gdXNlci1zcGFjZSBub3cuIEJ1 dCBJIGJlbGlldmUgd2UgY291bGQgaGF2ZQ0KPiA+IGFzIGtlcm5lbC1zcGFjZSBhcyB1c2VyLXNw YWNlIHNvbHV0aW9ucy4gSSB0aGluayB3ZSBuZWQgdG8gY2hlY2sgd2hhdCB3YXkgY291bGQgYmUN Cj4gPiBtb3JlIGVmZmljaWVudCBhbmQgZWxlZ2FudCBzb2x1dGlvbi4NCj4gDQo+IEFncmVlZCAt IHRob3VnaCBJIHRoaW5rIHdlIG5lZWQgdG8gcmVtZW1iZXIgcnVubmluZyB0aGlzIG9uIHRoZSBo b3N0IHRoYXQgaXMNCj4gdXNpbmcgdGhlIGRldmljZXMgaXNuJ3QgbGlrZWx5IHRvIGJlIGEgY29t bW9uIGFjdHVhbCB1c2VjYXNlLiAgU28gd2Ugc2hvdWxkDQo+IGRlc2lnbiBmb3IgdGhhdCB0byAn d29yaycgYnV0IG5vdCB0byBiZSB0aGUgYXNzdW1lZCBtZXRob2QuIEhlbmNlIGlmIGFueQ0KPiBz eW5jIHR5cGUgYWN0aXZpdHkgaXMgbmVlZGVkIGl0IG1pZ2h0IGJlIGEgY2FzZSBvZiBkb24ndCBk byB0aGUgd3JvbmcgdGhpbmcNCj4gcmF0aGVyIHRoYW4gaGFyZCBwcm90ZWN0aW9ucy4NCj4gDQo+ ID4gDQo+ID4gPiBJZiBNQ1RQIHVzZSB0aGUgZXhpc3RpbmcgTUNUUCBmcmFtZXdvcmsgd2hpY2gg aXMgdW5kZXJseWluZyB0cmFuc3BvcnQgaW5kZXBlbmRlbnQuDQo+ID4gPiBJIHBvc3RlZCBhIFBv QyBmb3IgaG93IHRoaXMgbWlnaHQgd29yayBhIHdoaWxlIGFnbyAoaGFjayBvbiB0b3Agb2YgTUNU UC1JMkMNCj4gPiA+IGFuZCBzb21lIGVtdWxhdGlvbikgSW4gdGhlIGNvdmVyIGxldHRlciBvZiB0 aGUgZW11bGF0aW9uIFBvQw0KPiA+ID4gICANCj4gPiANCj4gPiBTb3VuZHMgaW50ZXJlc3Rpbmcu IExldCBtZSBjaGVjayBpdC4gQnV0IEkgYmVsaWV2ZSBpdCBjb3VsZCBub3QgYmUgbm90IHRoZSBm aXJzdCB0YXNrDQo+ID4gaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4gOikNCj4gDQo+IFNvbWUgbGV2 ZWwgb2YgTUNUUCBzdXBwb3J0IG5lZWRzIHRvIGJlIGVhcmx5IGVub3VnaCB0aGF0IHdlIGRvbid0 IGdldA0KPiBhbnkgZGVzaWduIGRlY2lzaW9ucyB3cm9uZy4gIEZvciBNQ1RQIEkgdGhpbmsgdGhl IHZhc3QgbWFqb3JpdHkgb2YgaGFuZGxpbmcNCj4gaGFzIHRvIGJlIGluIHVzZXJzcGFjZS4gSSBk b24ndCB3YW50IHRvIGVuZCB1cCB3aXRoIGR1cGxpY2F0aW9uIGJlY2F1c2Ugd2UgZGlkDQo+IHNv bWUgb2YgdGhhdCBkb3duIGluIHRoZSBrZXJuZWwgZm9yIHRoZSBtYWlsYm94IHNvbHV0aW9uLg0K PiANCj4gPiANCj4gPiA+IA0KPiA+ID4gSSB0aGluayBldmVyeXRoaW5nIGVsc2UgYmVsb25ncyBp biB1c2Vyc3BhY2UuIEkgYmVsaWV2ZSB0aGVyZSBhcmUgcmVkZmlzaCBBUElzDQo+ID4gPiBldGMg dGhhdCB3b3VsZCB0aGVuIGJlIHVzZWQgdG8gcXVlcnkgYW5kIGRyaXZlIHRoZSB1c2Vyc3BhY2Ug cHJvZ3JhbSBmcm9tIGFuDQo+ID4gPiBvcmNoZXN0cmF0b3Igb3Igc2ltaWxhciBsZXZlbCBzb2Z0 d2FyZS4NCj4gPiA+ICAgDQo+ID4gDQo+ID4gSSBuZWVkIHRvIGNoZWNrIHRoZSByZWRmaXNoIEFQ SS4gSXQgc291bmRzIHJlYXNvbmFibGUgdG8gZW1wbG95IHNvbWUgZXhpc3RpbmcNCj4gPiBmcmFt ZXdvcmsuDQo+ID4gDQo+ID4gPj4gKDIpIFdoaWNoIGZ1bmN0aW9uYWxpdHkga2VybmVsLXNwYWNl IG5lZWRzIHRvIHByb3ZpZGUgZm9yIGltcGxlbWVudGF0aW9uIEZNIGZlYXR1cmVzPw0KPiA+ID4+ ICAgICAgV2hpY2gga2VybmVsLXNwYWNlIGZ1bmN0aW9uYWxpdHkgZG8gd2UgbmVlZCB0byBpbXBs ZW1lbnQgeWV0PyAgDQo+ID4gPiANCj4gPiA+IFZlcnkgbGl0dGxlIG5lZWRlZCBpZiB3ZSBqdXN0 IGV4cG9zZSB0aGUgdHJhbnNwb3J0IHZpYSBQQ0kgbWFpbGJveGVzLg0KPiA+ID4gVGhlcmUgaXMg YSBwb3NzaWJsZSBjb25jZXJuIHRoYXQgRk0tQVBJIGNvbW1hbmRzIGFyZSBmcmVxdWVudGx5DQo+ ID4gPiBkZXN0cnVjdGl2ZSBhbmQgY3VycmVudGx5IHdlIGRvbid0IGxldCB1c2Vyc3BhY2UgcG9r ZSBkZXN0cnVjdGl2ZQ0KPiA+ID4gY29tbWFuZHMuIFRoYXQgbWF5IGp1c3QgbmVlZCBhIHNwZWNp ZmljIG9wdCBpbiB0byBzYXkgd2Uga25vdyB3ZQ0KPiA+ID4gY2FuIHNob290IG91cnNlbHZlcyBp biB0aGUgZm9vdC4NCj4gPiA+ICAgDQo+ID4gDQo+ID4gSSB0aGluayB0aGlzIGlzIHdoeSB3ZSBu ZWVkIGtlcm5lbC4gSXQgc291bmRzIGZvciBtZSB0aGF0IHdlIGhhdmUgdG8gaGF2ZSB1c2VyLXNw YWNlDQo+ID4gYW5kIGtlcm5lbC1zcGFjZSBjb2xsYWJvcmF0aW9uIGhlcmUuDQo+IA0KPiBJIHRo aW5rIGl0IHdpbGwgYmUgbGlnaHR3ZWlnaHQgYW5kIGxvb2tzIGxpa2UgdGhlIGV4aXN0aW5nIENY TCBtYWlsYm94IHVzZXJzcGFjZQ0KPiBpbnRlcmZhY2UgKHNvbWUgY29tbWFuZHMgYXJlIHRoZSBz YW1lKS4NCj4gDQo+ID4gDQo+ID4gPj4gKDMpIERvIHdlIG5lZWQgTUNUUCAoTWFuYWdlbWVudCBD b21wb25lbnQgVHJhbnNwb3J0IFByb3RvY29sKSBvciBzb21lIG90aGVyDQo+ID4gPj4gICAgICBw cm90b2NvbCBjYW4gYmUgdXNlZCBmb3IgaW50ZXJhY3Rpb24gYmV0d2VlbiBjb25maWd1cmF0aW9u IHRvb2wsIEZNIGRhZW1vbiwgYW5kDQo+ID4gPj4gICAgICBDWEwgc3dpdGNoPyAgDQo+ID4gPiAN Cj4gPiA+IFllcyBNQ1RQIGlzIG5lZWRlZC4NCj4gPiA+IEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0 aGUgYWN0dWFsIG1hbmFnZW1lbnQgY29kZSB0byBiZSBkaWZmZXJlbnQNCj4gPiA+IGRlcGVuZGlu ZyBvbiB0cmFuc3BvcnQgLyBwcm90b2NvbC4gIEhvd2V2ZXIgd2UgbWlnaHQgbGF5ZXIgaXQgc28g dGhhdCB0aGVyZQ0KPiA+ID4gaXMgYW4gaW50ZXJmYWNlIHByb2dyYW0gdGhhdCBzaXRzIGJldHdl ZW4gdGhlIG1hbmFnZW1lbnQgbGlicmFyeSAvIHByb2dyYW0gYW5kDQo+ID4gPiB0aGUgRk0tQVBJ IHRyYW5zcG9ydC4NCj4gPiA+IA0KPiA+ID4gTm90ZSBJIHdhcyBzdHJ1Z2dsaW5nIHRvIGZpbmQg YSBzdWl0YWJsZSBNQ1RQIGludGVyZmFjZSB0byBlbXVsYXRlIC0gc28gd291bGQNCj4gPiA+IHdl bGNvbWUgc3VnZ2VzdGlvbnMgb24gdGhhdC4gIEkgaGFja2VkIHRoZSBhYm92ZSBQb0MgdXNpbmcg YW4gYXNwZWVkIGkyYw0KPiA+ID4gY29udHJvbGxlciB0aGF0IHN1cHBvcnRlZCB0aGUgcmlnaHQg bWFnaWMgY29tYmluYXRpb24gb2YgZmVhdHVyZXMgbmVlZGVkDQo+ID4gPiBmb3IgTUNUUCBvdmVy IEkyQyBidXQgaXQgZG9lc24ndCBoYXZlIEFDUEkgc3VwcG9ydCB3aGljaCByYXRoZXIgbGltaXRz DQo+ID4gPiB1c2FnZSAoYW5kIEkgZG91YnQgYW55b25lIHdpbGwgYmUga2VlbiBvbiBhZGRpbmcg QUNQSSBzdXBwb3J0IGp1c3QgdG8NCj4gPiA+IHRlc3QgQ1hMIHJlbGF0ZWQgY29kZSA6KSAgSWYg YW55b25lIGtub3dzIG9mIGEgc3VpdGFibGUgTUNUUCBob3N0IHdlDQo+ID4gPiBjb3VsZCB1c2Ug Zm9yIHRoaXMgdGhhdCB3b3VsZCBiZSBncmVhdCAoTUNUUCBvdmVyIFBDSSBWRE0gbWlnaHQgYmUg bmljZSBmb3INCj4gPiA+IGV4YW1wbGUpDQo+ID4gPiAgIA0KPiA+IA0KPiA+IExldCB1cyBzdGFy dCBzb21lIGNvbW1hbmQvZmVhdHVyZSBpbXBsZW1lbnRhdGlvbiBhbmQgd2Ugd2lsbCBmaWd1cmUg aXQgb3V0Lg0KPiA+IEJ1dCwgSSBhc3N1bWUgd2UgbmVlZCB0byBzdGFydCBmcm9tIHNvbWV0aGlu ZyBsaWtlIENYTCBkZXZpY2VzIGRpc2NvdmVyeSBhdCBmaXJzdC4NCj4gDQo+IFN1cmUgLSBzb21l IG9mIHRoZSBrZXJuZWwgc2lkZSBvZiB0aGF0IHdhcyBwcmVzZW50IGluIHRoZSBzd2l0Y2gtY2Np IG1haWxib3ggUG9DDQo+IE9idmlvdXNseSB0b29saW5nIHdhcyBhIHRlc3QgaGFjayB0aG91Z2gg OykNCj4gDQo+ID4gDQo+ID4gPj4gKDQpIFdoYXQgYXJjaGl0ZWN0dXJlIEZNIGltcGxlbWVudGF0 aW9uIHJlcXVpcmVzPw0KPiA+ID4+ICg1KSBEb2VzIGl0IG1ha2Ugc2Vuc2UgdG8gdXNlIFJ1c3Qg YXMgaW1wbGVtZW50YXRpb24gbGFuZ3VhZ2U/ICANCj4gPiA+IA0KPiA+ID4gVGFrZSB5b3VyIHBp Y2sgOykgRmlyc3QgcGVyc29uIHRvIHdyaXRlIGEgbG90IG9mIGNvZGUgZ2V0cyB0byBwaWNrIHRo ZSBsYW5ndWFnZS4NCj4gPiA+ICAgDQo+ID4gDQo+ID4gWWVhaCwgSSBzZWUgdGhlIHBvaW50LiBS dXN0IGNhbiBwcm92aWRlIHNvbWUgYmVuZWZpdHMgKG1lbW9yeSBzYWZldHkgbW9kZWwsIGZvciBl eGFtcGxlKS4NCj4gPiBCdXQgaXQgY291bGQgaW50cm9kdWNlIHNvbWUgaXNzdWUgd2l0aCBjb2xs YWJvcmF0aW9uIGFuZCBtYWtlcyBpbXBsZW1lbnRhdGlvbiBtb3JlDQo+ID4gc2xvdy4gRXZlcnli b2R5IGRldmVsb3BzIGluIEMgbGFuZ3VhZ2UuIEJ1dCBzd2l0Y2hpbmcgb24gUnVzdCBjb3VsZCBi ZSBub3Qgc28gZWFzeQ0KPiA+IHRhcmdldC4NCj4gPiANCj4gPiA8c2tpcHBlZD4NCj4gPiANCj4g PiA+PiANCj4gPiA+PiANCj4gPiA+PiBGTSBjb25maWd1cmF0aW9uIHRvb2wgcmVxdWlyZXMgc3Vj aCBjb21tYW5kczogIA0KPiA+ID4gDQo+ID4gPiBBIGNvbW1hbmQgbGluZSB0b29sIGlzIGZpbmUs IGJ1dCBsaWtlIHRoZSAncmVhbCcgRk0gY29uZmlndXJhdGlvbiBpbnRlcmZhY2Ugd2lsbCBiZSB2 aWENCj4gPiA+IGEgcHJvdG9jb2wgKGUuZy4gcmVkZmlzaCkuDQo+ID4gPiBUaGVyZSBpcyBhIFdJ UCBmb3IgQ1hMLCB0aG91Z2ggbm90IHN1cmUgb24gbGF0ZXN0IHN0YXR1cyBvbiB0aGlzIChkb2N1 bWVudCBvbiB0aGVyZSBpcyBmcm9tDQo+ID4gPiAyMDIxKQ0KPiA+ID4gDQo+ID4gPiBTbyB1bHRp bWF0ZWx5IEknZCBleHBlY3QgZm1fY2xpIHRvIGJlIGEgd3JhcHBlciBhcm91bmQgbGlicmVkZmlz aCAvIHJlZGZpc2h0b28NCj4gPiA+ICB0aGF0IGp1c3QgbWFrZXMgaXQgYSBiaXQgZWFzaWVyIHRv IHBva2UNCj4gPiA+IHdpdGggY29tbW9uIGNvbW1hbmRzLg0KPiA+ID4gDQo+ID4gPiBJJ20gZmFy IGZyb20gYW4gZXhwZXJ0IG9mIHJlZGZpc2ggc28gbWF5IGhhdmUgdGhpcyBhbGwgd3JvbmcuDQo+ ID4gPiAgIA0KPiA+IA0KPiA+IFNvdW5kcyByZWFzb25hYmxlIHRvIG1lLiBMZXQgbWUgY2hlY2sg aG93IGdvb2QgaXQgY291bGQgYmUgZm9yIHRoaXMgcHJvamVjdC4NCj4gPiANCj4gPiA+PiANCj4g PiA+PiBEaXNjb3ZlciAtIGRpc2NvdmVyIGF2YWlsYWJsZSBhZ2VudHMNCj4gPiA+PiBTdWJjb21t YW5kczoNCj4gPiA+PiAgICAtIGZtX2NsaSBkaXNjb3ZlciBmbSAtIGRpc2NvdmVyIEZNIGluc3Rh bmNlcyAgDQo+ID4gPiANCj4gPiA+IElmIHdlIGFyZSBhbGxvd2luZyBtb3JlIHRoYW4gb25lIEZN IHRoZW4gSSdkIGV4cGVjdCBhbGwgdGhlDQo+ID4gPiBvdGhlciBjb21tYW5kcyB0byBiZSBkaXJl Y3RlZCBhdCB0aGF0IGJ5IHNvbWUgc29ydCBvZiBGTSBzcGVjaWZpYw0KPiA+ID4gSUQuIElmIG9u bHkgb25lLCB3aGF0IGRvZXMgdGhpcyBjb21tYW5kIGRvIHRoYXQgaXNuJ3QgYmV0dGVyDQo+ID4g PiBkb25lIHdpdGggZm0gZ2V0X2luZm8NCj4gPiA+ICAgDQo+ID4gDQo+ID4gWWVzLCB3ZSBuZWVk IHRvIGlkZW50aWZ5IGV2ZXJ5IG9iamVjdCBzb21laG93LiBBbmQgaXTigJlzIGludGVyZXN0aW5n IHBvaW50Lg0KPiA+IEZyb20gcG9pbnQgb2Ygdmlldywgc29tZSBodW1hbi1mcmllbmRseSBuYW1l cyBjb3VsZCBiZSBnb29kLg0KPiA+IEJ1dCBmaXJtd2FyZS1iYXNlZCBGTSBpbXBsZW1lbnRhdGlv biBuZWVkcyB0byBmb2xsb3cgdGhlIHNhbWUgcnVsZXMuDQo+ID4gQW5kIGl0IHNvdW5kcyBmb3Ig bWUgdGhhdCBDWEwgc3BlY2lmaWNhdGlvbiBzaG91bGQgZGVmaW5lIGhvdyBDWEwgRk0gb3INCj4g PiBDWEwgZGV2aWNlIGlkZW50aWZ5IGl0c2VsZi4gQW55d2F5LCB3ZSBuZWVkIHRvIGFzayBDWEwg ZGV2aWNlIGFuZCBpdCBzaG91bGQNCj4gPiByZXR1cm4gdG8gdXMgc29tZSBJRC4gUHJvYmFibHks IGl0IHdpbGwgYmUgc29tZSBHVUlEIG9yIGxpa2V3aXNlIG51bWJlci4NCj4gPiANCj4gPiA+ICAg DQo+ID4gPj4gICAgLSBmbV9jbGkgZGlzY292ZXIgY3hsX2RldmljZXMgLSBkaXNjb3ZlciBDWEwg ZGV2aWNlcw0KPiA+ID4+ICAgIC0gZm1fY2xpIGRpc2NvdmVyIGxvZ2ljYWxfZGV2aWNlcyAtIGRp c2NvdmVyIGxvZ2ljYWwgZGV2aWNlcyAgDQo+ID4gPiANCj4gPiA+IERpc2NvdmVyIHN3aXRjaGVz IGFzIHdlbGwuDQo+ID4gPiAgIA0KPiA+IA0KPiA+IEkgYXNzdW1lZCB0aGF0IENYTCBzd2l0Y2gg aXMgYSBzdWJjbGFzcyBvZiBDWEwgZGV2aWNlcy4gRG8geW91IG1lYW4gdGhhdA0KPiA+IGl0IGlz IGluZGVwZW5kZW50IGNhc2U/DQo+IA0KPiBNYXliZSBzaW1wbGVyIGJyb2tlbiBvdXQuIFdoYXQg eW91IGRvIHdpdGggYSBzd2l0Y2ggaXMgb2Z0ZW4gdmVyeSBkaWZmZXJlbnQNCj4gZm9ybSB0eXBl IDMgZGV2aWNlcy4NCj4gDQo+ID4gDQo+ID4gPj4gDQo+ID4gPj4gRk0gLSBtYW5hZ2UgRmFicmlj IE1hbmFnZXINCj4gPiA+PiBTdWJjb21tYW5kczoNCj4gPiA+PiAgICAtIGZtX2NsaSBmbSBnZXRf aW5mbyAtIGdldCBGTSBzdGF0dXMvaW5mbw0KPiA+ID4+ICAgIC0gZm1fY2xpIGZtIHN0YXJ0IC0g c3RhcnQgRk0gaW5zdGFuY2UNCj4gPiA+PiAgICAtIGZtX2NsaSBmbSByZXN0YXJ0IC0gcmVzdGFy dCBGTSBpbnN0YW5jZQ0KPiA+ID4+ICAgIC0gZm1fY2xpIGZtIHN0b3AgLSBzdG9wIEZNIGluc3Rh bmNlDQo+ID4gPj4gICAgLSBmbV9jbGkgZm0gZ2V0X2NvbmZpZyAtIGdldCBGTSBjb25maWd1cmF0 aW9uDQo+ID4gPj4gICAgLSBmbV9jbGkgZm0gc2V0X2NvbmZpZyAtIHNldCBGTSBjb25maWd1cmF0 aW9uICANCj4gPiA+IA0KPiA+ID4gSSdkIGtlZXAgdGhpcyBzbGltIGZvciBub3cuICBObyBpZGVh IHdoYXQgRk0gY29uZmlnIHdlIG1pZ2h0IHdhbnQgdG8NCj4gPiA+IHNldCBzbyBkb24ndCBib3Ro ZXIgbGlzdGluZyBjb21tYW5kIHlldC4NCj4gPiA+ICAgDQo+ID4gDQo+ID4gWWVhaCwgaXTigJlz IG5vdCBjb21wbGV0ZWx5IGNsZWFyIHlldC4gQnV0IEkgYXNzdW1lIHdlIGNhbiBjb25zaWRlciBz dWNoDQo+ID4gY29uZmlndXJhdGlvbiBvcHRpb25zIGxpa2U6DQo+ID4gKDEpIHJlZ2lzdGVyIHRv IHJlY2VpdmUgZXZlbnQgbm90aWZpY2F0aW9ucw0KPiA+ICgyKSBsb2dnaW5nIG9mIGV2ZW50cw0K PiA+ICgzKSBlcnJvcnMgaGFuZGxpbmcNCj4gPiANCj4gPiA+PiAgICAtIGZtX2NsaSBmbSBnZXRf ZXZlbnRzIC0gZ2V0IGV2ZW50IHJlY29yZHMgIA0KPiA+ID4gTm90IHN1cmUgd2hhdCBGTSB3b3Vs ZCBoYXZlIGluIHRoZSB3YXkgb2YgZXZlbnRzIChhcyBvcHBvc2VkIHRvDQo+ID4gPiB0aGluZ3Mg aXQgaXMgdGFsa2luZyB0bykuDQo+ID4gPiAgIA0KPiA+IA0KPiA+IEkgdGhpbmsgRk0gY2FuIGxv ZyBldmVudHMuIElmIHdlIGNvbnNpZGVyIEZNIGRhZW1vbiBvbiBob3N0LCB0aGVuIGl0DQo+ID4g Y291bGQgaXNzdWUgbWVzc2FnZXMgdG8gZW5kIHVzZXIgYXMgcmVhY3Rpb24gdG8gc29tZSBldmVu dHMuDQo+ID4gDQo+ID4gPj4gDQo+ID4gPj4gU3dpdGNoIC0gbWFuYWdlIENYTCBzd2l0Y2gNCj4g PiA+PiBTdWJjb21tYW5kczoNCj4gPiA+PiAgICAtIGZtX2NsaSBzd2l0Y2ggZ2V0X2luZm8gLSBn ZXQgQ1hMIHN3aXRjaCBpbmZvL3N0YXR1cyAgDQo+ID4gPiANCj4gPiA+IFRoZXNlIGFsbCBuZWVk IGFuIElEIGZpZWxkIG9mIHNvbWUgdHlwZSB0byBpZGVudGlmeSB3aGljaCBzd2l0Y2guDQo+ID4g PiAgIA0KPiA+IA0KPiA+IFllYWgsIGl0IGlzIGV4YWN0bHkgd2hhdCB3ZSBuZWVkIGZvciBldmVy eSBjb21tYW5kLiBXZSBuZWVkIHRvIGlkZW50aWZ5DQo+ID4gYW4gb2JqZWN0IGZvciBhIHJlcXVl c3QuDQo+ID4gDQo+ID4gPj4gICAgLSBmbV9jbGkgc3dpdGNoIGdldF9jb25maWcgLSBnZXQgc3dp dGNoIGNvbmZpZ3VyYWl0b24NCj4gPiA+PiAgICAtIGZtX2NsaSBzd2l0Y2ggc2V0X2NvbmZpZyAt IHNldCBzd2l0Y2ggY29uZmlndXJhdGlvbiAgDQo+ID4gDQo+ID4gPHNraXBwZWQ+DQo+ID4gDQo+ ID4gPj4gDQo+ID4gPj4gRENEIChEeW5hbWljIENhcGFjaXR5IERldmljZSkgLSBtYW5hZ2UgRHlu YW1pYyBDYXBhY2l0eSBEZXZpY2UNCj4gPiA+PiBTdWJjb21tYW5kczoNCj4gPiA+PiAgICAtIGZt X2NsaSBkY2QgZ2V0X2luZm8gLSBHZXQgRENEIEluZm8gKHJldHJpZXZlcyB0aGUgbnVtYmVyIG9m IHN1cHBvcnRlZCBob3N0cywNCj4gPiA+PiAgICAgICAgIHRvdGFsIER5bmFtaWMgQ2FwYWNpdHkg b2YgdGhlIGRldmljZSwgYW5kIHN1cHBvcnRlZCByZWdpb24gY29uZmlndXJhdGlvbnMpDQo+ID4g Pj4gICAgLSBmbV9jbGkgZGNkIGdldF9jYXBhY2l0eV9jb25maWcgLSBHZXQgSG9zdCBEeW5hbWlj IENhcGFjaXR5IFJlZ2lvbiBDb25maWd1cmF0aW9uDQo+ID4gPj4gICAgICAgICAocmV0cmlldmVz IHRoZSBEeW5hbWljIENhcGFjaXR5IGNvbmZpZ3VyYXRpb24gZm9yIGEgc3BlY2lmaWVkIGhvc3Qp DQo+ID4gPj4gICAgLSBmbV9jbGkgZGNkIHNldF9jYXBhY2l0eV9jb25maWcgLSBTZXQgRHluYW1p YyBDYXBhY2l0eSBSZWdpb24gQ29uZmlndXJhdGlvbg0KPiA+ID4+ICAgICAgICAgKHNldHMgdGhl IGNvbmZpZ3VyYXRpb24gb2YgYSBEQyBSZWdpb24pDQo+ID4gPj4gICAgLSBmbV9jbGkgZGNkIGdl dF9leHRlbnRfbGlzdCAtIEdldCBEQ0QgRXh0ZW50IExpc3RzIChyZXRyaWV2ZXMgdGhlIER5bmFt aWMgQ2FwYWNpdHkNCj4gPiA+PiAgICAgICAgIEV4dGVudCBMaXN0IGZvciBhIHNwZWNpZmllZCBo b3N0KQ0KPiA+ID4+ICAgIC0gZm1fY2xpIGRjZCBhZGRfY2FwYWNpdHkgLSBJbml0aWF0ZSBEeW5h bWljIENhcGFjaXR5IEFkZCAoaW5pdGlhdGVzIHRoZSBhZGRpdGlvbiBvZg0KPiA+ID4+ICAgICAg ICAgRHluYW1pYyBDYXBhY2l0eSB0byB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBvbiBhIGhvc3QpICAN Cj4gPiA+IA0KPiA+ID4gVGhhdCBvbmUgaXMgY29tcGxleCA7KSBQcm9iYWJseSBuZWVkcyBhIHdo b2xlIG1hbiBwYWdlIHRvIGl0c2VsZi4NCj4gPiA+ICAgDQo+ID4gDQo+ID4gQ3VycmVudGx5LCBp dOKAmXMgb25seSBkZWNsYXJhdGlvbiBvZiBjb21tYW5kIHNldC4gWWVhaCwgaW1wbGVtZW50YXRp b24gd2lsbCBiZSBjb21wbGV4LiA6KQ0KPiA+IA0KPiA+ID4+ICAgIC0gZm1fY2xpIGRjZCByZWxl YXNlX2NhcGFjaXR5IC0gSW5pdGlhdGUgRHluYW1pYyBDYXBhY2l0eSBSZWxlYXNlIChpbml0aWF0 ZXMgdGhlIHJlbGVhc2Ugb2YNCj4gPiA+PiAgICAgICAgIER5bmFtaWMgQ2FwYWNpdHkgZnJvbSBh IGhvc3QpDQo+ID4gPj4gDQo+ID4gPj4gRk0gZGFlbW9uIHJlY2VpdmVzIHJlcXVlc3RzIGZyb20g Y29uZmlndXJhdGlvbiB0b29sIGFuZCBleGVjdXRlcyBjb21tYW5kcyBieSBtZWFucyBvZg0KPiA+ ID4+IGludGVyYWN0aW9uIHdpdGgga2VybmVsLXNwYWNlIHN1YnN5c3RlbXMuIFRoZSByZXNwb25z aWJpbGl0eSBvZiBGTSBkYWVtb24gY291bGQgYmU6DQo+ID4gPj4gICAgLSBFeGVjdXRlIGNvbmZp Z3VyYXRpb24gdG9vbCBjb21tYW5kcw0KPiA+ID4+ICAgIC0gTWFuYWdlIGhvdC1hZGQgYW5kIGhv dC1yZW1vdmFsIG9mIGRldmljZXMgIA0KPiA+ID4gDQo+ID4gPiBJbiB3aGF0IHNlbnNlPyAgSSdk IGV4cGVjdCBpdCB0byBub3RpZnkgc29tZSBoaWdoZXIgbGV2ZWwgZW50aXR5DQo+ID4gPiAob3Jj aGVzdHJhdG9yIG9yIHNpbWlsYXIpIGJ1dCBub3Qgc3VyZSBJIHNlZSB3aGF0IG1hbmFnZW1lbnQg dGhlDQo+ID4gPiBGTSB3b3VsZCBkby4gIA0KPiA+ID4gICANCj4gPiANCj4gPiBJIGFzc3VtZSB0 aGF0IGlmIEZNIG1hbmFnZXMgc29tZSBtZXRhZGF0YSwgdGhlbiBob3QtYWRkIG9yIGhvdC1yZW1v dmFsIGNvdWxkDQo+ID4gcmVxdWlyZSBzb21lIG1ldGFkYXRhIGNvcnJlY3Rpb25zLiBBbHNvLCBo b3QtYWRkIGFuZCBob3QtcmVtb3ZhbCBjYW4gZ2VuZXJhdGUgc29tZQ0KPiA+IGV2ZW50cyB0aGF0 IEZNIGNhbiByZWNlaXZlIGFuZCBwcm9jZXNzIHNvbWVob3cuIEZvciBleGFtcGxlLCBpdCBpcyBw b3NzaWJsZSB0byBsb2cNCj4gPiBldmVudCBtZXNzYWdlcyBpbnRvIHNvbWUgam91cm5hbC4NCj4g DQo+IE9rLiBQb3RlbnRpYWxseSBzdHVmZiB0aGVyZSAtIHRob3VnaCBleGFjdGx5IHdoaWNoIGxh eWVyIGVuZHMgdXAgbWFuYWdpbmcgdGhpcw0KPiBzdHVmZiBpc24ndCBvYnZpb3VzIHRvIG1lIHll dC4NCj4gDQo+ID4gDQo+ID4gPj4gICAgLSBNYW5hZ2Ugc3VycHJpc2UgcmVtb3ZhbCBvZiBkZXZp Y2VzICANCj4gPiA+IA0KPiA+ID4gTGlrZXdpc2UsIGJleW9uZCByZXBvcnRpbmcgSSB3b3VsZG4n dCBleHBlY3QgdGhlIEZNIGRhZW1vbiB0byBoYXZlIGFueSBpZGVhDQo+ID4gPiB3aGF0IHRvIGRv IGluIHRoZSB3YXkgb2YgbWFuYWdpbmcgdGhpcy4gIFNjcmVhbSBsb3VkbHk/DQo+ID4gPiAgIA0K PiA+IA0KPiA+IE1heWJlLCBpdCBjb3VsZCByZXF1aXJlIGFwcGxpY2F0aW9uKHMpIG5vdGlmaWNh dGlvbi4gTGV04oCZcyBpbWFnaW5lIHRoYXQgYXBwbGljYXRpb24NCj4gPiB1c2VzIHNvbWUgcmVz b3VyY2VzIGZyb20gcmVtb3ZlZCBkZXZpY2UuIE1heWJlLCBGTSBjYW4gbWFuYWdlIGtlcm5lbC1z cGFjZQ0KPiA+IG1ldGFkYXRhIGNvcnJlY3Rpb24gYW5kIGhlbHBpbmcgdG8gbWFuYWdlIGFwcGxp Y2F0aW9uIHJlcXVlc3RzIHRvIG5vdCBleGlzdGluZw0KPiA+IGVudGl0aWVzLg0KPiANCj4gTm90 aWZpY2F0aW9ucyBmb3IgdGhlIGhvc3QgYXJlIGxpa2VseSB0byBjb21lIHZpYSBpbmJhbmQgbWVh bnMgLSBzbyB0eXBlMyBkcml2ZXINCj4gaGFuZGxpbmcgcmF0aGVyIHRoYW4gcmVsYXRlZCB0byBG TS4gIEFzIGZhciBhcyB0aGUgaG9zdCBpcyBjb25jZXJuZWQgdGhpcyBpcyB0aGUNCj4gc2FtZSBh cyBjYXNlIHdoZXJlIHRoZXJlIGlzIG5vIEZNIGFuZCBzb21lb25lIHJpcHBlZCBhIGRldmljZSBv dXQuDQo+IA0KPiBUaGVyZSBtaWdodCBpbmRlZWQgYmUgbWV0YSBkYXRhIHRvIG1hbmFnZSwgYnV0 IGRvdWJ0IGl0IHdpbGwgaGF2ZSBhbnl0aGluZyB0bw0KPiBkbyB3aXRoIGtlcm5lbC4NCj4gDQoN CkkndmUgYWxzbyBoYWQgc2ltaWxhciB0aG91Z2h0cywgSSB0aGluayB0aGUgT1MgcmVzcG9uZHMg dG8gbm90aWZpY2F0aW9ucyB0aGF0DQphcmUgZ2VuZXJhdGVkIGluLWJhbmQgYWZ0ZXIgY2hhbmdl cyB0byB0aGUgc3RhdGUgb2YgdGhlIEZNIGFyZSBtYWRlIHRocm91Z2ggDQpPT0IgbWVhbnMuDQoN CkkgZW52aXNpb24gdGhlIGhvc3Qgc2VuZHMgUkVERklTSCByZXF1ZXN0cyB0byBhIHN3aXRjaCBC TUMgdGhhdCBoYXMgYW4gRk0NCmltcGxlbWVudGF0aW9uLiBPbmNlIHRoZSBjaGFuZ2VzIGFyZSBp bXBsZW1lbnRlZCBieSB0aGUgRk0gaXQgd291bGQgc2hvdyB1cA0KYXMgY2hhbmdlcyB0byB0aGUg UENJZSBoaWVyYXJjaHkgb24gYSBob3N0LCB3aGljaCBpcyBjYXBhYmxlIG9mIHJlc3BvbmRpbmcg dG8NCnN1Y2ggY2hhbmdlcy4NCg0KPiA+IA0KPiA+ID4+ICAgIC0gUmVjZWl2ZSBhbmQgaGFuZGxl IGV2ZW4gbm90aWZpY2F0aW9ucyBmcm9tIHRoZSBDWEwgc3dpdGNoDQo+ID4gPj4gICAgLSBMb2dn aW5nIGV2ZW50cw0KPiA+ID4+ICAgIC0gTWVtb3J5IGFsbG9jYXRpb24gYW5kIFFvUyBUZWxlbWV0 cnkgbWFuYWdlbWVudA0KPiA+ID4+ICAgIC0gRXJyb3IvRmFpbHVyZSBoYW5kbGluZyAgDQo+ID4g PiANCj4gPiA+IEknbSBub3Qgc3VyZSBvbiBzZXBhcmF0aW9uIG9mIHJvbGUgYmV0d2VlbiB0aGlz IGNvbXBvbmVudCBhbmQNCj4gPiA+IGhpZ2hlciBsZXZlbCBwb2xpY3kgLyBhZG1pbiBkcml2ZW4g c29mdHdhcmUuDQo+ID4gPiANCj4gPiA+IEZvciBtZW1vcnkgYWxsb2NhdGlvbiBpdCBtaWdodCB0 YWtlIGEgJ2dpdmUgaG9zdCBBIHRoaXMgbXVjaA0KPiA+ID4gbWVtb3J5IHdpdGggdGhpcyBjaGFy YWN0ZXJpc3RpYyBzZXQnIGNvbW1hbmQgYW5kIG93biB0aGUNCj4gPiA+IGFsbG9jYXRpb25zIGFj cm9zcyBhbGwgcHJlc2VudCBkZXZpY2VzLCBvciBpdCBtaWdodCBqdXN0DQo+ID4gPiBhY3QgYXMg YW4gaW50ZXJmYWNlIGxheWVyIHRvIGhpZ2hlciBsZXZlbCBzb2Z0d2FyZSB0aGF0IGRvZXMNCj4g PiA+IHRoZSBmaW5lIGRldGFpbCBvZiBmaWd1cmluZyBvdXQgd2hpY2ggZGV2aWNlIHRvIGFsbG9j YXRlIG1lbW9yeQ0KPiA+ID4gZnJvbSB0byBzYXRpc2Z5IHN1Y2ggYSByZXF1ZXN0Lg0KPiA+ID4g DQo+ID4gPiBXaGlsc3QgSSBhZ3JlZSBoYXZpbmcgYSBicm9hZCB2aXNpb24gZm9yIGFuIGludGVy ZmFjZSBpcyBnb29kDQo+ID4gPiB0aGVyZSBhcmUgYSBsb3Qgb2Ygc3VidGxlIGRldGFpbHMgaW4g c29tZSBvZiB0aGVzZSBjb21tYW5kcw0KPiA+ID4gc28gSSdkIG5vdCBzcGVuZCB0b28gbG9uZyBy ZWZpbmluZyB0aGUgd2hvbGUgbG90LiBQcm9iYWJseSBiZXR0ZXINCj4gPiA+IHRvIGxvb2sgYXQg dGhlbSBvbmUgYXQgYSB0aW1lIGFuZCB0aGVuIGp1c3QgaGF2ZSB3aG9ldmVyIGVuZHMNCj4gPiA+ IHVwIG1haW50YWluaW5nIC8gcmV2aWV3aW5nIHRoaXMgdGhpbmcgcmVzcG9uc2libGUgZm9yIG1h a2luZyBzdXJlIHRoZQ0KPiA+ID4gcGFyYW1ldGVyIGZvcm1hdCBldGMgaXMgY29uc2lzdGVudCBh Y3Jvc3MgY29tbWFuZHMuDQo+ID4gPiAgIA0KPiA+IA0KPiA+IFllcywgSSBhZ3JlZS4gTGV04oCZ cyBkbyBpdCBzdGVwIGJ5IHN0ZXAuIEkgYmVsaWV2ZSB3ZSBuZWVkIHRvIHN0YXJ0IGZyb20NCj4g PiBpbXBsZW1lbnRhdGlvbiB0aGUgYXBwbGljYXRpb24gdGhhdCBwcm9jZXNzIGNvbW1hbmRzIGFu ZCBkbyBub3RoaW5nDQo+ID4gYXQgZmlyc3QuIEFuZCBmaXJzdCBjb21tYW5kIHRoYXQgbmVlZHMg dG8gYmUgaW1wbGVtZW50ZWQgaXMgYSBkaXNjb3ZlcnkNCj4gPiBvZiBDWEwgZGV2aWNlcywgc3dp dGNoZXMsIGFuZCBGTSBpbnN0YW5jZXMgYmVjYXVzZSB3ZSBuZWVkIHRvIGlkZW50aWZ5DQo+ID4g Q1hMIG9iamVjdCBzb21laG93IGZvciBhbnkgb3RoZXIgY29tbWFuZC4NCj4gDQo+IEFncmVlZCBk aXNjb3ZlciBvZiBkZXZpY2VzIGFuZCBjYXBhYmlsaXRpZXMgaXMgZGVmaW5pdGVseSB3aGVyZSB0 byBzdGFydA0KPiArIEkgdGhpbmsgcHJlc2VudGluZyB0aGF0IGFzIGEgcmVkZmlzaCBtb2RlbC4N Cj4gDQo+IEpvbmF0aGFuDQo+IA0KPiA+IA0KPiA+IFRoYW5rcywNCj4gPiBTbGF2YS4NCj4gPiAN Cj4g