From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.93; helo=mga11.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 622DB223CCEE5 for ; Thu, 1 Feb 2018 16:28:38 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Feb 2018 16:34:15 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,444,1511856000"; d="scan'208";a="14838282" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga008.fm.intel.com with ESMTP; 01 Feb 2018 16:34:15 -0800 Received: from fmsmsx114.amr.corp.intel.com (10.18.116.8) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 1 Feb 2018 16:34:15 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX114.amr.corp.intel.com (10.18.116.8) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 1 Feb 2018 16:34:14 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.127]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.145]) with mapi id 14.03.0319.002; Fri, 2 Feb 2018 08:34:13 +0800 From: "Ni, Ruiyu" To: Ard Biesheuvel CC: "Guo Heyi , Dong Wei" , "Dong, Eric" , "edk2-devel@lists.01.org" , linaro-uefi , "Kinney, Michael D" , "Zeng, Star" Thread-Topic: [edk2] [RFC] MdeModulePkg/PciHostBridgeDxe: Add support for address translation Thread-Index: AQHTjg+65ExkB2uTz0aBTGBgh27idKN3lvUAgAC9lYCABvOlAIAK0fcAgAT9yQCAAEhqgIAA/kHg Date: Fri, 2 Feb 2018 00:34:12 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BB73CBF@SHSMSX104.ccr.corp.intel.com> References: <1516027600-32172-1-git-send-email-heyi.guo@linaro.org> <20180118012639.GA113567@SZX1000114654> <20180129085020.GA127987@SZX1000114654> <685b27a9-e620-e7e7-e0fb-8cebe16e7b1a@Intel.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZGQ2YjUwMTktZmMyMy00Y2Y2LTlmZTYtYWFmNDEwZWVjYzc4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiI3OXpsbksrWk9LUWJwOXBWdWJPdzV4N0YxTG53UnVQc0o5N3hOa2x0a1wvdVdGVmdPZjJsMjVVc1B5QlFRdlpGQSJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [RFC] MdeModulePkg/PciHostBridgeDxe: Add support for address translation X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Feb 2018 00:28:38 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg W21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiBGcmlkYXksIEZlYnJ1 YXJ5IDIsIDIwMTggMToyMyBBTQ0KPiBUbzogTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+ DQo+IENjOiBHdW8gSGV5aSA8aGV5aS5ndW9AbGluYXJvLm9yZz4sRG9uZyBXZWkgPERvbmcuV2Vp QGFybS5jb20+OyBEb25nLA0KPiBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgZWRrMi1kZXZl bEBsaXN0cy4wMS5vcmc7IGxpbmFyby11ZWZpIDxsaW5hcm8tDQo+IHVlZmlAbGlzdHMubGluYXJv Lm9yZz47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IFpl bmcsDQo+IFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0g W1JGQ10gTWRlTW9kdWxlUGtnL1BjaUhvc3RCcmlkZ2VEeGU6IEFkZCBzdXBwb3J0IGZvcg0KPiBh ZGRyZXNzIHRyYW5zbGF0aW9uDQo+IA0KPiBPbiAxIEZlYnJ1YXJ5IDIwMTggYXQgMDU6MDMsIE5p LCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPiB3cm90ZToNCj4gPiBPbiAxLzI5LzIwMTggNDo1 MCBQTSwgR3VvIEhleWkgd3JvdGU6DQo+ID4+DQo+ID4+IFNvcnJ5IGZvciB0aGUgbGF0ZTsgSSBj YXVnaHQgY29sZCBhbmQgZGlkbid0IHdvcmsgZm9yIHNldmVyYWwgZGF5cw0KPiA+PiBsYXN0IHdl ZWsgOiggUGxlYXNlIHNlZSBteSBjb21tZW50cyBiZWxvdzoNCj4gPj4NCj4gPj4NCj4gPj4gT24g TW9uLCBKYW4gMjIsIDIwMTggYXQgMTE6MzY6MTRBTSArMDgwMCwgTmksIFJ1aXl1IHdyb3RlOg0K PiA+Pj4NCj4gPj4+IE9uIDEvMTgvMjAxOCA5OjI2IEFNLCBHdW8gSGV5aSB3cm90ZToNCj4gPj4+ Pg0KPiA+Pj4+IE9uIFdlZCwgSmFuIDE3LCAyMDE4IGF0IDAyOjA4OjA2UE0gKzAwMDAsIEFyZCBC aWVzaGV1dmVsIHdyb3RlOg0KPiA+Pj4+Pg0KPiA+Pj4+PiBPbiAxNSBKYW51YXJ5IDIwMTggYXQg MTQ6NDYsIEhleWkgR3VvIDxoZXlpLmd1b0BsaW5hcm8ub3JnPiB3cm90ZToNCj4gPj4+Pj4+DQo+ ID4+Pj4+PiBUaGlzIGlzIHRoZSBkcmFmdCBwYXRjaCBmb3IgdGhlIGRpc2N1c3Npb24gcG9zdGVk IGluIGVkazItZGV2ZWwNCj4gPj4+Pj4+IG1haWxpbmcgbGlzdDoNCj4gPj4+Pj4+IGh0dHBzOi8v bGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRldmVsLzIwMTctRGVjZW1iZXIvMDE5Mjg5Lmh0 DQo+ID4+Pj4+PiBtbA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEFzIGRpc2N1c3NlZCBpbiB0aGUgbWFp bGluZyBsaXN0LCB3ZSdkIGxpa2UgdG8gYWRkIHN1cHBvcnQgZm9yDQo+ID4+Pj4+PiBQQ0kgYWRk cmVzcyB0cmFuc2xhdGlvbiB3aGljaCBpcyBuZWNlc3NhcnkgZm9yIHNvbWUgbm9uLXg4Ng0KPiA+ Pj4+Pj4gcGxhdGZvcm1zLiBJIGFsc28gd2FudCB0byBtaW5pbWl6ZSB0aGUgY2hhbmdlcyB0byB0 aGUgZ2VuZXJpYw0KPiA+Pj4+Pj4gaG9zdCBicmlkZ2UgZHJpdmVyIGFuZCBwbGF0Zm9ybSBQY2lI b3N0QnJpZGdlTGliIGltcGxlbWV0YXRpb25zLA0KPiA+Pj4+Pj4gc28gYWRkaXRpb25hbCB0d28g aW50ZXJmYWNlcyBhcmUgYWRkZWQgdG8gZXhwb3NlIHRyYW5zbGF0aW9uDQo+ID4+Pj4+PiBpbmZv cm1hdGlvbiBvZiB0aGUgcGxhdGZvcm0uIFRvIGJlIGdlbmVyaWMsIEkgYWRkIHRyYW5zbGF0aW9u IGZvcg0KPiA+Pj4+Pj4gZWFjaCB0eXBlIG9mIElPIG9yIG1lbW9yeSByZXNvdXJjZXMuDQo+ID4+ Pj4+Pg0KPiA+Pj4+Pj4gVGhlIHBhdGNoIGlzIHN0aWxsIGEgUkZDLCBzbyBJIG9ubHkgcGFzc2Vk IHRoZSBidWlsZCBmb3IgcWVtdTY0DQo+ID4+Pj4+PiBhbmQgdGhlIGZ1bmN0aW9uIGhhcyBub3Qg YmVlbiB0ZXN0ZWQgeWV0Lg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFBsZWFzZSBsZXQgbWUga25vdyB5 b3VyIGNvbW1lbnRzIGFib3V0IGl0Lg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFRoYW5rcy4NCj4gPj4+ Pj4+DQo+ID4+Pj4+PiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBB Z3JlZW1lbnQgMS4xDQo+ID4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBIZXlpIEd1byA8aGV5aS5ndW9A bGluYXJvLm9yZz4NCj4gPj4+Pj4+IENjOiBSdWl5dSBOaSA8cnVpeXUubmlAaW50ZWwuY29tPg0K PiA+Pj4+Pj4gQ2M6IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0K PiA+Pj4+Pj4gQ2M6IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gPj4+Pj4+IENj OiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+ID4+Pj4+PiAtLS0NCj4gPj4+Pj4+ ICAgLi4uL0ZkdFBjaUhvc3RCcmlkZ2VMaWIvRmR0UGNpSG9zdEJyaWRnZUxpYi5jICAgICAgfCAg MTkgKysrKw0KPiA+Pj4+Pj4gICAuLi4vQnVzL1BjaS9QY2lIb3N0QnJpZGdlRHhlL1BjaUhvc3RC cmlkZ2UuYyAgICAgICB8ICA1MyArKysrKysrKy0tLQ0KPiA+Pj4+Pj4gICAuLi4vQnVzL1BjaS9Q Y2lIb3N0QnJpZGdlRHhlL1BjaVJvb3RCcmlkZ2UuaCAgICAgICB8ICAgOCArLQ0KPiA+Pj4+Pj4g ICAuLi4vQnVzL1BjaS9QY2lIb3N0QnJpZGdlRHhlL1BjaVJvb3RCcmlkZ2VJby5jICAgICB8IDEw MQ0KPiA+Pj4+Pj4gKysrKysrKysrKysrKysrKysrLS0tDQo+ID4+Pj4+PiAgIE1kZU1vZHVsZVBr Zy9JbmNsdWRlL0xpYnJhcnkvUGNpSG9zdEJyaWRnZUxpYi5oICAgIHwgIDM2ICsrKysrKysrDQo+ ID4+Pj4+PiAgIDUgZmlsZXMgY2hhbmdlZCwgMTkyIGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9u cygtKQ0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4+IGEvQXJtVmlydFBr Zy9MaWJyYXJ5L0ZkdFBjaUhvc3RCcmlkZ2VMaWIvRmR0UGNpSG9zdEJyaWRnZUxpYi5jDQo+ID4+ Pj4+PiBiL0FybVZpcnRQa2cvTGlicmFyeS9GZHRQY2lIb3N0QnJpZGdlTGliL0ZkdFBjaUhvc3RC cmlkZ2VMaWIuYw0KPiA+Pj4+Pj4gaW5kZXggNWI5Yzg4Ny4uMGM4MzcxYSAxMDA2NDQNCj4gPj4+ Pj4+IC0tLQ0KPiA+Pj4+Pj4gYS9Bcm1WaXJ0UGtnL0xpYnJhcnkvRmR0UGNpSG9zdEJyaWRnZUxp Yi9GZHRQY2lIb3N0QnJpZGdlTGliLmMNCj4gPj4+Pj4+ICsrKyBiL0FybVZpcnRQa2cvTGlicmFy eS9GZHRQY2lIb3N0QnJpZGdlTGliL0ZkdFBjaUhvc3RCcmlkZ2VMaWIuDQo+ID4+Pj4+PiArKysg Yw0KPiA+Pj4+Pj4gQEAgLTM2MCw2ICszNjAsMTYgQEAgUGNpSG9zdEJyaWRnZUdldFJvb3RCcmlk Z2VzICgNCj4gPj4+Pj4+ICAgICByZXR1cm4gJm1Sb290QnJpZGdlOw0KPiA+Pj4+Pj4gICB9DQo+ ID4+Pj4+Pg0KPiA+Pj4+Pj4gK1BDSV9ST09UX0JSSURHRV9UUkFOU0xBVElPTiAqDQo+ID4+Pj4+ PiArRUZJQVBJDQo+ID4+Pj4+PiArUGNpSG9zdEJyaWRnZUdldFRyYW5zbGF0aW9ucyAoDQo+ID4+ Pj4+PiArICBVSU5UTiAqQ291bnQNCj4gPj4+Pj4+ICsgICkNCj4gPj4+Pj4+ICt7DQo+ID4+Pj4+ PiArICAqQ291bnQgPSAwOw0KPiA+Pj4+Pj4gKyAgcmV0dXJuIE5VTEw7DQo+ID4+Pj4+PiArfQ0K PiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gICAvKioNCj4gPj4+Pj4+ICAgICBGcmVlIHRoZSByb290IGJy aWRnZSBpbnN0YW5jZXMgYXJyYXkgcmV0dXJuZWQgZnJvbQ0KPiA+Pj4+Pj4gICAgIFBjaUhvc3RC cmlkZ2VHZXRSb290QnJpZGdlcygpLg0KPiA+Pj4+Pj4gQEAgLTM3Nyw2ICszODcsMTUgQEAgUGNp SG9zdEJyaWRnZUZyZWVSb290QnJpZGdlcyAoDQo+ID4+Pj4+PiAgICAgQVNTRVJUIChDb3VudCA9 PSAxKTsNCj4gPj4+Pj4+ICAgfQ0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ICtWT0lEDQo+ID4+Pj4+PiAr RUZJQVBJDQo+ID4+Pj4+PiArUGNpSG9zdEJyaWRnZUZyZWVUcmFuc2xhdGlvbnMgKA0KPiA+Pj4+ Pj4gKyAgUENJX1JPT1RfQlJJREdFX1RSQU5TTEFUSU9OICpUcmFuc2xhdGlvbnMsDQo+ID4+Pj4+ PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgQ291bnQNCj4gPj4+Pj4+ICsgICkNCj4g Pj4+Pj4+ICt7DQo+ID4+Pj4+PiArfQ0KPiA+Pj4+Pj4gKw0KPiA+Pj4+Pj4gICAvKioNCj4gPj4+ Pj4+ICAgICBJbmZvcm0gdGhlIHBsYXRmb3JtIHRoYXQgdGhlIHJlc291cmNlIGNvbmZsaWN0IGhh cHBlbnMuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gZGlmZiAtLWdpdA0KPiA+Pj4+Pj4gYXNhbWUvTWRl TW9kdWxlUGtnL0J1cy9QY2kvUGNpSG9zdEJyaWRnZUR4ZS9QY2lIb3N0QnJpZGdlLmMNCj4gPj4+ Pj4+IGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvUGNpSG9zdEJyaWRnZUR4ZS9QY2lIb3N0QnJpZGdl LmMNCj4gPj4+Pj4+IGluZGV4IDE0OTQ4NDguLjgzNWU0MTEgMTAwNjQ0DQo+ID4+Pj4+PiAtLS0g YS9NZGVNb2R1bGVQa2cvQnVzL1BjaS9QY2lIb3N0QnJpZGdlRHhlL1BjaUhvc3RCcmlkZ2UuYw0K PiA+Pj4+Pj4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvUGNpSG9zdEJyaWRnZUR4ZS9QY2lI b3N0QnJpZGdlLmMNCj4gPj4+Pj4+IEBAIC0zNjAsMTggKzM2MCwzOCBAQCBJbml0aWFsaXplUGNp SG9zdEJyaWRnZSAoDQo+ID4+Pj4+PiAgICAgUENJX0hPU1RfQlJJREdFX0lOU1RBTkNFICAgICpI b3N0QnJpZGdlOw0KPiA+Pj4+Pj4gICAgIFBDSV9ST09UX0JSSURHRV9JTlNUQU5DRSAgICAqUm9v dEJyaWRnZTsNCj4gPj4+Pj4+ICAgICBQQ0lfUk9PVF9CUklER0UgICAgICAgICAgICAgKlJvb3RC cmlkZ2VzOw0KPiA+Pj4+Pj4gKyAgUENJX1JPT1RfQlJJREdFX1RSQU5TTEFUSU9OICpUcmFuc2xh dGlvbnM7DQo+ID4+Pj4+PiAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgIFJvb3RCcmlk Z2VDb3VudDsNCj4gPj4+Pj4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xh dGlvbkNvdW50Ow0KPiA+Pj4+Pj4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBJbmRl eDsNCj4gPj4+Pj4+ICAgICBQQ0lfUk9PVF9CUklER0VfQVBFUlRVUkUgICAgKk1lbUFwZXJ0dXJl c1s0XTsNCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gV291bGRuJ3QgaXQgYmUgbXVjaCBiZXR0 ZXIgdG8gYWRkIGEgJ3RyYW5zbGF0aW9uJyBtZW1iZXIgdG8NCj4gPj4+Pj4gUENJX1JPT1RfQlJJ REdFX0FQRVJUVVJFPyBUaGF0IHdheSwgZXhpc3RpbmcgY29kZSBqdXN0IGRlZmF1bHQgdG8NCj4g Pj4+Pj4gYSB0cmFuc2xhdGlvbiBvZiAwLCBhbmQgYWxsIHRoZSBoYW5kbGluZyBvZiB0aGUgc2Vw YXJhdGUgYXJyYXkgY2FuDQo+ID4+Pj4+IGJlIGRyb3BwZWQuDQo+ID4+Pj4+DQo+ID4+Pj4gQWN0 dWFsbHkgbXkgZmlyc3QgaWRlYSB3YXMgdGhlIHNhbWUsIGJ1dCB3aGVuIEkgbG9va2VkIGF0IHRo ZQ0KPiA+Pj4+IGltcGxlbWVudGF0aW9uIG9mIFBjaUhvc3RCcmlkZ2VMaWIgb2YgT3ZtZiwgSSBm b3VuZCBpdCBhIGxpdHRsZQ0KPiA+Pj4+IHRlZGlvdXMgdG8gY2hhbmdlIHRoZSBleGlzdGluZyBj b2RlIGluIHRoaXMgd2F5LiBXZSdsbCBuZWVkIHRvDQo+ID4+Pj4gY2hlY2sgZXZlcnl3aGVyZSBQ Q0lfUk9PVF9CUklER0VfQVBFUlRVUkUgb3IgUENJX1JPT1RfQlJJREdFIGlzDQo+ID4+Pj4gdXNl ZCwgdG8gbWFrZSBzdXJlIHRoZSB0cmFuc2xhdGlvbiBmaWVsZCBpcyBpbml0aWFsaXplZCB0byBi ZSB6ZXJvLA0KPiA+Pj4+IGUuZy4gbGluZSAyMzV+MjQ1Lg0KPiA+Pj4+DQo+ID4+Pj4gV2hhdCBJ IGRpZCBpbiB0aGlzIFJGQyBpcyBub3Qgc28gc3RyYWlnaHRmb3J3YXJkIGluZGVlZC4gU28gSSBj YW4NCj4gPj4+PiBjaGFuZ2UgdGhlIGNvZGUgaWYgd2UgYWxsIGFncmVlIHRvIGFkZCBUcmFuc2xh dGlvbiBmaWVsZCBpbnRvDQo+ID4+Pj4gUENJX1JPT1RfQlJJREdFX0FQRVJUVVJFIGRpcmVjdGx5 Lg0KPiA+Pj4+DQo+ID4+Pj4gVGhhbmtzLA0KPiA+Pj4+DQo+ID4+Pj4gR2FyeSAoSGV5aSBHdW8p DQo+ID4+Pg0KPiA+Pj4NCj4gPj4+IEkgYWxzbyBhZ3JlZSB0byBwdXQgdGhlIHRyYW5zbGF0aW9u IGZpZWxkcyBpbnRvIHRoZQ0KPiA+Pj4gUENJX1JPT1RfQlJJREdFX0FQRVJUVVJFLg0KPiA+Pj4N Cj4gPj4+DQo+ID4+PiBCdXQgSSB0aGluayB3ZSBtYXkgaGF2ZSBkaWZmZXJlbnQgdW5kZXJzdGFu ZGluZ3MgdG8gdGhlIGFkZHJlc3MNCj4gPj4+IHRyYW5zbGF0aW9uLg0KPiA+Pj4gTXkgdW5kZXJz dGFuZGluZyB0byB0aGUgd2hvbGUgdHJhbnNsYXRpb246DQo+ID4+PiAxLiBQY2lIb3N0QnJpZHNh bWVzYW1lZ2UuR2V0UHJvcG9zZWRSZXNvdXJjZXMgKCkgcmV0dXJucyByZXNvdXJjZQ0KPiBpbmZv cm1hdGlvbg0KPiA+Pj4gICAgIGZvciBhIHNpbmdsZSByb290IGJyaWRnZS4gSXQgb25seSBjYXJy aWVzIHRoZSBhZGRyZXNzIHJhbmdlIGluIFBDSQ0KPiA+Pj4gICAgIHZpZXcuDQo+ID4+PiAgICAg VGhlIGFkZHJlc3MgcmFuZ2UvcmVzb3VyY2UgaXMgcmVwb3J0ZWQvc3VibWl0dGVkIGJ5IFBjaUhv c3RCcmlkZ2VMaWIuDQo+ID4+PiAgICAgQmVmb3JlIHRoZSBjaGFuZ2UsIENQVSB2aWV3IGVxdWFs cyB0byBQQ0kgdmlldy4gU28gUGNpSG9zdEJyaWRnZUR4ZQ0KPiA+Pj4gICAgIGRyaXZlciBkaXJl Y3RseSBhZGRzIHRoZSByZXNvdXJjZSB0byBHQ0QuDQo+ID4+PiAgICAgSW4geW91ciBjaGFuZ2Us IFBjaUhvc3RCcmlkZ2VEeGUgYXNzdW1lcyB0aGUgc291cmNlIGlzIGluIFBDSSB2aWV3DQo+ID4+ PiAgICAgYW5kIGl0IGFkZHMgb2Zmc2V0IHRvIGNvbnZlcnQgdG8gQ1BVIHZpZXcuDQo+ID4+PiAg ICAgQ1BVLWFkZHJlc3MgPSBQQ0ktYWRkcmVzcyArIG9mZnNldC4gPC0tIEVxdWF0aW9uICNBDQo+ ID4+Pg0KPiA+Pj4NCj4gPj4+IDIuIFBjaVJvb3RCcmlkZ2VJby5Db25maWd1cmF0aW9uKCkgcmV0 dXJucyB0aGUgcmVzb3VyY2UgaW5mb3JtYXRpb24NCj4gPj4+ICAgICBmb3IgYSBzaW5nbGUgcm9v dCBicmlkZ2UuIEl0IGNhcnJpZXMgdGhlIGFkZHJlc3MgcmFuZ2UgaW4gQ1BVIHZpZXcsDQo+ID4+ PiAgICAgYW5kIHRoZSB0cmFuc2xhdGlvbiBvZmZzZXQuDQo+ID4+PiAgICAgSG93ZXZlciwgcGVy IFVFRkkgc3BlYywgIkFkZHJlc3MgVHJhbnNsYXRpb24gT2Zmc2V0LiBPZmZzZXQgdG8gYXBwbHkN Cj4gPj4+ICAgICB0byB0aGUgU3RhcnRpbmcgYWRkcmVzcyBvZiBhIEJBUiB0byBjb252ZXJ0IGl0 IHRvIGEgUENJIGFkZHJlc3MuICINCj4gPj4+ICAgICBQQ0ktYWRkcmVzcyA9IENQVS1hZGRyZXNz ICsgb2Zmc2V0LiA8LS0gRXF1YXRpb24gI0INCj4gPj4NCj4gPj4NCj4gPj4gSWYgd2UgZ2V0IEVx dWF0aW9uICNCIGZyb20gdGhlIHN0YXRlbWVudCBpbiBVRUZJIHNwZWMsIGRvZXMgaXQgYWxzbw0K PiA+PiBpbXBseSBTdGFydGluZyBhZGRyZXNzIGlzICJBZGRyZXNzIFJhbmdlIE1pbmltdW0iIGFu ZCBzbyBpdCBpcyBDUFUgdmlldw0KPiBhZGRyZXNzPw0KPiA+Pg0KPiA+PiBJZiB3ZSB1c2UgRXF1 YXRpb24gI0IsIGNhbiBvZmZzZXQgYmUgYSBuZWdhdGl2ZSB2YWx1ZT8gSWYgaXQgaXMgbm90LA0K PiA+PiB0aGVuIGl0IHdpbGwgbWFrZSB0cmFuc2xhdGlvbiB1c2VsZXNzLCBzaW5jZSB3ZSBjYW5u b3QgY2hhbmdlIENQVQ0KPiA+PiBhZGRyZXNzIGFib3ZlIDRHIGludG8gUENJIGFkZHJlc3MgdW5k ZXIgNEcgZm9yIGxlZ2FjeSBjb21wYXRpYmlsaXR5Lg0KPiA+Pg0KPiA+PiBFcXVhdGlvbiAjQiBp cyBhbHNvIG5vdCBjb25zaXN0ZW50IHdpdGggaG93IE9TIHRyZWF0cyBhZGRyZXNzDQo+ID4+IHRy YW5zbGF0aW9uOyBwbGVhc2Ugc2VlIHRoZSBBQ1BJIEFTTCBjb2RlIHdoaWNoIHdvcmtzIHdlbGwg Zm9yIE9TOg0KPiA+Pg0KPiA+PiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItcGxh dGZvcm1zL2Jsb2IvbWFzdGVyL1NpbGljb24vSGlzaWwNCj4gPj4gaWNvbi9IaTE2MTYvRDA1QWNw aVRhYmxlcy9Ec2R0L0QwNVBjaS5hc2wjTDIwMQ0KPiA+DQo+ID4NCj4gPiBJIGFncmVlIHdpdGgg eW91ciBzdGF0ZW1lbnQgYWJvdXQgdGhlIEFTTCBjb2RlLg0KPiA+IEkgY29waWVkIHRoZSBmb2xs b3dpbmcgd29yZGluZ3MgZnJvbSBBQ1BJIHNwZWM6DQo+ID4NCj4gPiBCeXRlIDE0IEFkZHJlc3Mg cmFuZ2UgbWluaW11bSwNCj4gPiBfTUlOIGJpdHNbNzowXQ0KPiA+IEZvciBicmlkZ2VzIHRoYXQg dHJhbnNsYXRlIGFkZHJlc3NlcywgdGhpcyBpcyB0aGUgYWRkcmVzcyBzcGFjZSBvbiB0aGUNCj4g PiBzZWNvbmRhcnkgc2lkZSBvZiB0aGUgYnJpZGdlLg0KPiA+DQo+ID4gQnl0ZSAzMCBBZGRyZXNz IFRyYW5zbGF0aW9uDQo+ID4gb2Zmc2V0LCBfVFJBIGJpdHNbNzowXQ0KPiA+IEZvciBicmlkZ2Vz IHRoYXQgdHJhbnNsYXRlIGFkZHJlc3NlcyBhY3Jvc3MgdGhlIGJyaWRnZSwgdGhpcyBpcyB0aGUN Cj4gPiBvZmZzZXQgdGhhdCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBhZGRyZXNzIG9uIHRoZSBzZWNv bmRhcnkgc2lkZSB0bw0KPiA+IG9idGFpbiB0aGUgYWRkcmVzcyBvbiB0aGUgcHJpbWFyeSBzaWRl LiBOb24tYnJpZGdlIGRldmljZXMgbXVzdCBsaXN0IDANCj4gPiBmb3IgYWxsIEFkZHJlc3MgVHJh bnNsYXRpb24gb2Zmc2V0IGJpdHMuDQo+ID4NCj4gPiBJdCBzZWVtcyBVRUZJIFNwZWMgY29uZmxp Y3RzIHdpdGggQUNQSSBTcGVjLg0KPiA+IFVFRkkgU3BlYzogQWRkcmVzc1JhbmdlTWluID0gQ1BV LXZpZXcgYWRkcmVzcyBBQ1BJIFNwZWM6DQo+ID4gQWRkcmVzc1JhbmdlTWluID0gUENJLXZpZXcg YWRkcmVzcw0KPiA+DQo+ID4gSSByZW1lbWJlcmVkIHRoYXQgdGhpcyB0b3BpYyB3YXMgZGlzY3Vz c2VkIGxvbmcgdGltZSBhZ28gYW5kDQo+ID4gcmUtZGlzY3Vzc2VkIGluIHllYXIgMjAxNy4NCj4g PiBUaGVyZSBpcyBubyBjb25jbHVzaW9uLg0KPiA+DQo+ID4gSSB0ZW5kIHRvIGFncmVlIHRvIGFs aWduIHRvIEFDUEkgc3BlYy4NCj4gPiBCdXQgSSBhbSBub3Qgc3VyZSB3aGF0IGltcGFjdCBpdCBt YXkgY2F1c2UuDQo+ID4NCj4gPiBBY3R1YWxseSB0aGlzIENQVS9QQ0kgYWRkcmVzcyB0b3BpYyB3 YXMgZGlzY3Vzc2VkIGxvbmcgdGltZSBhZ28gYW5kDQo+ID4gcmUtZGlzY3Vzc2VkIGluIHBhdGNo IG1haWw6DQo+ID4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvcGlwZXJtYWlsL2VkazItZGV2ZWwvMjAx Ny1TZXB0ZW1iZXIvMDE0NDI1Lmh0bWwNCj4gPiBObyBjb25jbHVzaW9uIHNvIHRoZSBwYXRjaCB3 YXMgYWxzbyBub3QgY2hlY2tlZCBpbi4NCj4gPg0KPiA+IFdpdGggeW91ciBwcm9wb3NlZCBwYXRj aCAobWF5YmUgcmVmaW5lIG9yIGFkZHJlc3MgdHJhbnNsYXRpb24gbG9naWMNCj4gPiB1cGRhdGVz IGFyZSBuZWVkZWQpLCBJIHRoaW5rIGl0J3MgYSBnb29kIG9wcG9ydHVuaXR5IGZvciB1cyB0byBy ZXZpZXcNCj4gPiB0aGUgd2hvbGUgUENJIHJlc291cmNlIGFsbG9jYXRpb24gbG9naWMgaW4gUGNp SG9zdEJyaWRnZS9QY2lCdXMgL0dDRCwNCj4gPiBhbmQgcHJvcG9zZSBhIGNvbnNpc3RlbnQvY2xl YXIgc29sdXRpb24uDQo+ID4NCj4gPg0KPiANCj4gVGhpcyBoYXMgaW5kZWVkIGJlZW4gZGlzY3Vz c2VkIG1hbnkgdGltZXMsIGJ1dCB0aGUgVUVGSSBzcGVjIGlzIHF1aXRlIGNsZWFyIHRoYXQNCj4g aXRzIGRlZmluaXRpb24gb2YgdGhlIFFXT1JEIGFkZHJlc3Mgc3BhY2UgZGVzY3JpcHRvciBzdXBl cnNlZGVzIHRoZSBvbmUgaW4gdGhlDQo+IEFDUEkgc3BlYy4NCj4gDQo+IEdpdmVuIHRoYXQgYW4g b2Zmc2V0IGNhbiBiZSBib3RoIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSwgaXQgaXMgcmVhc29uYWJs ZSB0bw0KPiBhc3N1bWUgdGhhdCB0aGlzIGZpZWxkIG1heSBiZSBpbnRlcnByZXRlZCBhcyBzaWdu ZWQgYW5kL29yIG1heSBiZSB0cnVuY2F0ZWQgb24NCj4gNjQtYml0IG92ZXJmbG93ICh3aGljaCBj b21lIGRvd24gdG8gdGhlIHNhbWUgdGhpbmcpDQo+IA0KPiBJIHdvdWxkIHJhdGhlciBub3QgcGFy ayB0aGlzIGRpc2N1c3Npb24gYWdhaW4uIFRoZSBVRUZJIHNwZWMgbWF5IGJlIHF1aXJreSBpbiB0 aGlzDQo+IHJlZ2FyZCwgYnV0IGl0IGlzIHBlcmZlY3RseSBjbGVhci4NCg0KQXJkLA0KSW4gbXkg b3BpbmlvbiwgdG8gYWxpZ24gVUVGSSBTcGVjIHRvIEFDUEkgc3BlYyBvbiB0aGlzIHNvdW5kcyBs aWtlIHJlYXNvbmFibGUuDQpEbyB5b3Ugc2VlIGFueSByZWFsIHByb2JsZW0gaWYgd2UgY2hhbmdl IHRoZSBtZWV0aW5nIG9mIEFkZHJlc3NSYW5nZU1pbj8NCg0KVGhhbmtzLA0KUmF5DQo=