From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.92.69.19; helo=eur02-ve1-obe.outbound.protection.outlook.com; envelope-from=marvin.haeuser@outlook.com; receiver=edk2-devel@lists.01.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-oln040092069019.outbound.protection.outlook.com [40.92.69.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A74D9209603CD for ; Tue, 15 May 2018 10:14:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=novIdyVINS9YV1H7wYUUwbgVAb2eaDbj81chc9BHM50=; b=bt0yzx1TwXicde+s7mf7F1coDfv3YFnKSY43eXYtwg48WOsdOwW8OXg3y88qhhQNMQltZUjn+jyh+GLfEFP+r5QicB+ldsvKCWX1oMPXpTW4PaIvx6bgCxEt39Ns2Dwf4Q2E/dPkYDyXvz0tGXt8fOK6pT/R365d0n4i7fyQ5Ue6Wh33kIqkeKc5STh0VlKqP1zPJbxt9JU9S7AO4SMqm4xpjAQXvq6JtAZw8FA3Yf4EblW5Y+yw4uJGdJL/cCDsA82XBPIYSa2gt2/AuMLBFMyWHuIG8CRpy8N/VrxtPn6z6ZDJ1X9r0eAi/Yr2oNp86P+Y2OJSJfnc9irJrwzIYQ== Received: from HE1EUR02FT042.eop-EUR02.prod.protection.outlook.com (10.152.10.58) by HE1EUR02HT192.eop-EUR02.prod.protection.outlook.com (10.152.11.212) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.735.16; Tue, 15 May 2018 17:14:44 +0000 Received: from VI1PR0801MB1790.eurprd08.prod.outlook.com (10.152.10.51) by HE1EUR02FT042.mail.protection.outlook.com (10.152.11.159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.735.16 via Frontend Transport; Tue, 15 May 2018 17:14:44 +0000 Received: from VI1PR0801MB1790.eurprd08.prod.outlook.com ([fe80::7c79:584b:2e12:783e]) by VI1PR0801MB1790.eurprd08.prod.outlook.com ([fe80::7c79:584b:2e12:783e%17]) with mapi id 15.20.0755.018; Tue, 15 May 2018 17:14:44 +0000 From: =?utf-8?B?TWFydmluIEjDpHVzZXI=?= To: Laszlo Ersek , "edk2-devel@lists.01.org" CC: "gsomlo@gmail.com" , "ard.biesheuvel@linaro.org" , "ruiyu.ni@intel.com" , "eric.dong@intel.com" , "star.zeng@intel.com" , "jordan.l.justen@intel.com" Thread-Topic: [edk2] Proposition of a BmEnumerateBootOptions() hook. Thread-Index: AdPrsgMo2EIXJLdYQImjwNC1Y2yr9AAc9lEAAABs7yAACxpkAAACocsgAAI81gAAAcNuIA== Date: Tue, 15 May 2018 17:14:44 +0000 Message-ID: References: <12b0e557-4f3b-3766-1e52-c069c02b692e@redhat.com> <9d7aa3e0-d342-ab5a-f54b-2a853a5fcf57@redhat.com> <2aaccb36-5b8b-6f63-a9bb-7f3e7910ae2f@redhat.com> In-Reply-To: <2aaccb36-5b8b-6f63-a9bb-7f3e7910ae2f@redhat.com> Accept-Language: de-DE, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:712E4D5A4453FBC80DAEB42BA6249EC8D0EC98951698F6407769CD5BA4AF674E; UpperCasedChecksum:9AA251B2717D1AD97910C8CE83DEA2B01E300AB602BACA4B0E621DCFE529EA19; SizeAsReceived:7773; Count:46 x-tmn: [Rx7+J/ZmVPKNFD7O7JINw4czONJLJmvv] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1EUR02HT192; 7:D45L2DkO0lZmYk7f8y4UqIzxpRC+hbxrw5IUTgJ5diCArn70masYrPhs+tDLpbnJPjiOI984vpl1zLgA2ZCabMvlhRUAV2toQNBTOFnnOWQIVOdEQrkyZLFEpEM207kQJjT9SPa+4JYwHZHsNSz8HPKGGY9H/japI0YtG3cT1rZhvB2pr3oCR62PYhVkNYUS2BH6BoNbbFUZvazfycIa09ypRI9LJPyFi0yICjUwU7LEPlyUGq3fVbayW1SgUHtd x-incomingheadercount: 46 x-eopattributedmessage: 0 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1603101448)(1601125464)(1701031045); SRVR:HE1EUR02HT192; x-ms-traffictypediagnostic: HE1EUR02HT192: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(444000031); SRVR:HE1EUR02HT192; BCL:0; PCL:0; RULEID:; SRVR:HE1EUR02HT192; x-forefront-prvs: 0673F5BE31 x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(6029001)(52314003)(199004)(51914003)(189003)(13464003)(14454004)(8936002)(33656002)(81156014)(8676002)(25786009)(54906003)(97736004)(105586002)(110136005)(4326008)(106356001)(2501003)(305945005)(85202003)(5250100002)(5890100001)(426003)(55016002)(93886005)(6246003)(5660300001)(3660700001)(11346002)(486006)(476003)(3280700002)(2900100001)(446003)(39060400002)(82202002)(229853002)(87572001)(68736007)(20460500001)(6436002)(104016004)(74316002)(86362001)(85182001)(72206003)(59450400001)(76176011)(99286004)(53546011)(102836004)(6346003)(7696005)(26005); DIR:OUT; SFP:1901; SCL:1; SRVR:HE1EUR02HT192; H:VI1PR0801MB1790.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:; received-spf: None (protection.outlook.com: outlook.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Marvin.Haeuser@outlook.com; x-microsoft-antispam-message-info: sxeoG4cJCFp6j6yaviWJ37IIm6cAB63IXo1IxZv73yDdXc1JMVQmDZi9nDMQrcVS46VSGpOGeQvrv64xiL++I5bntJRHFZpmJRzsbJQSKodNHGUgHZSzaloMszXXQ2TSTVjlO55QaT7KicPhGwq2dZjLxAcaa2HGIx/icteg7jBFfH8dMC3jg4eeG2qiO5XL MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 4134322d-c006-46b4-aefc-08d5ba875ab2 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 7181d4b0-87d6-4f4e-ba33-0d3746212cec X-MS-Exchange-CrossTenant-Network-Message-Id: 4134322d-c006-46b4-aefc-08d5ba875ab2 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 7181d4b0-87d6-4f4e-ba33-0d3746212cec X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2018 17:14:44.7022 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1EUR02HT192 Subject: Re: Proposition of a BmEnumerateBootOptions() hook. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 May 2018 17:14:49 -0000 Content-Language: de-DE Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIQ0KQ29tbWVudHMgaW5saW5lDQoNClJlZ2FyZHMsDQpN YXJ2aW4uDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVy c2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gU2VudDogVHVlc2RheSwgTWF5IDE1LCAyMDE4IDY6 MTIgUE0NCj4gVG86IE1hcnZpbiBIw6R1c2VyIDxNYXJ2aW4uSGFldXNlckBvdXRsb29rLmNvbT47 IGVkazItDQo+IGRldmVsQGxpc3RzLjAxLm9yZw0KPiBDYzogZ3NvbWxvQGdtYWlsLmNvbTsgYXJk LmJpZXNoZXV2ZWxAbGluYXJvLm9yZzsgcnVpeXUubmlAaW50ZWwuY29tOw0KPiBlcmljLmRvbmdA aW50ZWwuY29tOyBzdGFyLnplbmdAaW50ZWwuY29tOyBqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29t DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gUHJvcG9zaXRpb24gb2YgYSBCbUVudW1lcmF0ZUJvb3RP cHRpb25zKCkgaG9vay4NCj4gDQo+IE9uIDA1LzE1LzE4IDE3OjM4LCBNYXJ2aW4gSMOkdXNlciB3 cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogTGFzemxv IEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPj4gU2VudDogVHVlc2RheSwgTWF5IDE1LCAy MDE4IDM6NTMgUE0NCj4gPj4gVG86IE1hcnZpbiBIw6R1c2VyIDxNYXJ2aW4uSGFldXNlckBvdXRs b29rLmNvbT47IGVkazItDQo+ID4+IGRldmVsQGxpc3RzLjAxLm9yZw0KPiA+PiBDYzogZXJpYy5k b25nQGludGVsLmNvbTsgc3Rhci56ZW5nQGludGVsLmNvbTsNCj4gPj4gam9yZGFuLmwuanVzdGVu QGludGVsLmNvbTsgYXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZzsNCj4gPj4gcnVpeXUubmlAaW50 ZWwuY29tOyBHYWJyaWVsIEwuIFNvbWxvIChHTWFpbCkgPGdzb21sb0BnbWFpbC5jb20+OyBHZXJk DQo+ID4+IEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtl ZGsyXSBQcm9wb3NpdGlvbiBvZiBhIEJtRW51bWVyYXRlQm9vdE9wdGlvbnMoKSBob29rLg0KPiA+ Pg0KPiA+PiBPbiAwNS8xNS8xOCAxNTowMiwgTWFydmluIEjDpHVzZXIgd3JvdGU6DQo+IA0KPiA+ Pj4gMy4yOiBJIHRoaW5rIGFkZGluZyB0aGVtIGFzIHZvbGF0aWxlIHZhcmlhYmxlcyBpcyB0aGUg YmV0dGVyDQo+ID4+PiBhcHByb2FjaCwgZXhjZXB0IGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBjb2Rl LCB3aGljaCBzaG91bGQgYmUgY2FwYWJsZQ0KPiA+Pj4gb2YgYWRkaW5nIE5WIG9wdGlvbnMuIFRo ZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgdGhhdCB1c3VhbGx5IHRoZQ0KPiA+Pj4gZm91bmQg dm9sdW1lcyBhcmUgcmVtb3ZhYmxlIHZvbHVtZXMgKHN1Y2ggYXMgVVNCIEZsYXNoIERyaXZlcykg YW5kDQo+ID4+PiB3aWxsIGJlIGNsZWFuZWQgYXdheSBzb29uIGFnYWluIGFueXdheS4gIkV4dHJh IHdpc2hlcyIgZm9yIGJvb3QNCj4gPj4+IG9wdGlvbnMgc2hvdWxkIGJlIGFkZGVkIHZpYSB0aGUg VUVGSSBTZXR1cCBtZW51IG9yIFVFRkkgU2hlbGwuDQo+ID4+DQo+ID4+IEkgY2FuJ3QgcmVhbGx5 IGNvbW1lbnQgb24gdGhpcyAtLSB0aGUgZmFjdCB0aGF0IEJvb3QjIyMjIG9wdGlvbnMgYXJlDQo+ ID4+IG5vbi0gdm9sYXRpbGUgY29tZXMgZnJvbSB0aGUgVUVGSSBzcGVjLiBJJ20gbm90IGltbWVk aWF0ZWx5IHN1cmUgd2hhdA0KPiA+PiBJIHRoaW5rIG9mIHRoZWlyIHN1Z2dlc3RlZCB2b2xhdGls aXR5LCBidXQgdGhpcyBpcyBsaWtlbHkgc29tZXRoaW5nIGZvciB0aGUNCj4gVVNXRyB0byBkaXNj dXNzLg0KPiA+DQo+ID4gSSB0aGluayBJIG1pZ2h0IGhhdmUgYmVlbiB1bmNsZWFyIGhlcmUsIEkg d2FzIHNvbGVseSByZWZlcnJpbmcgdG8gdGhlIEJvb3QNCj4gb3B0aW9ucyBjcmVhdGVkIGJ5IHRo ZSBlbnVtZXJhdGlvbiBwcm9jZXNzIGFuZCBub3QgQm9vdCMjIyMgaW4gZ2VuZXJhbC4NCj4gPiBJ IHdvdWxkbid0IGtub3cgb2YgYW55dGhpbmcgcmVzdHJpY3RpbmcgYWxsIEJvb3QjIyMjIHZhcmlh YmxlcyB0byBiZSBOViwgZG8NCj4geW91IGhhcHBlbiB0byBoYXZlIGEgcXVvdGU/DQo+IA0KPiBT ZWUgIjMuMyBHbG9iYWxseSBEZWZpbmVkIFZhcmlhYmxlcyIgYW5kICJUYWJsZSAxMC4gR2xvYmFs IFZhcmlhYmxlcyIgaW4gdGhlDQo+IFVFRkktMi43IHNwZWM6DQo+IA0KPiAgIFsuLi5dIFRoZSB2 YXJpYWJsZXMgd2l0aCBhbiBhdHRyaWJ1dGUgb2YgTlYgYXJlIG5vbnZvbGF0aWxlLiBbLi4uXQ0K PiANCj4gICBbLi4uXQ0KPiANCj4gICBWYXJpYWJsZSBOYW1lICBBdHRyaWJ1dGUgICBEZXNjcmlw dGlvbg0KPiAgIC0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tDQo+ICAgWy4u Ll0NCj4gICBCb290IyMjIyAgICAgICBOViwgQlMsIFJUICBbLi4uXQ0KPiAgIFsuLi5dDQoNCkkg aGFkIGhvcGVkIGl0IHdhcyBhIHJlY29tbWVuZGF0aW9uLCBidXQgaW5kZWVkIGl0IHNlZW1zIHRv IGJlIG1hbmRhdG9yeS4NCldoYXQncyB5b3VyIG9waW5pb24gb24gdGhpcyBmYWN0IGFuZCBob3cg ZG8geW91IHRoaW5rIHRoZSBjaGFuY2VzIGFyZSBOViBjb3VsZCBiZSBtYWRlIG9wdGlvbmFsPw0K DQo+IA0KPiA+PiBTZWNvbmQsIGp1c3QgYmVjYXVzZSBhIGJvb3Qgb3B0aW9uIGZhaWxzLCBpdCBz aG91bGQgbm90IGJlIHJlbW92ZWQuDQo+ID4+IEZvciBleGFtcGxlLCBhIG5ldGJvb3Qgb3B0aW9u IGNvdWxkIGZhaWwsIG9yIGEgVVNCIGRyaXZlIG1pZ2h0IG5vdCBiZQ0KPiA+PiBjb25uZWN0ZWQg KHRlbXBvcmFyaWx5KS4gSSBkb24ndCB0aGluayB0aGF0J3MgZ3JvdW5kcyBlbm91Z2ggZm9yDQo+ ID4+IHN1bW1hcmlseSByZW1vdmluZyBhIGJvb3Qgb3B0aW9uLCBpbiBzaGFyZWQgcmVmZXJlbmNl IGNvZGUuDQo+ID4NCj4gPiBPaCwgSSB3YXMganVzdCB0YWxraW5nIGFib3V0IHRoZSBwb3NzaWJp bGl0eSwgYmVjYXVzZSB0aGUgY3VycmVudCBjb2RlIGRvZXMNCj4gcmVtb3ZlIG9wdGlvbnMgdW5k ZXIgY2VydGFpbiBjb25kaXRpb25zLg0KPiA+IEhvd2V2ZXIsIGZvciBVU0IgZGV2aWNlcyBhcyB5 b3UgaGF2ZSBtZW50aW9uZWQsIEkgZG8gc2VlIHRoaXMgZ29vZA0KPiBwcmFjdGljZSBzbyBsb25n IGFzIHRoZSBvcHRpb24gaXMgdm9sYXRpbGUuDQo+ID4gVGhlcmUgaXMgbm8gcG9pbnQgaW4gZXhw b3NpbmcgYSBib290IG9wdGlvbiB0byBhIHJlbW92YWJsZSBkZXZpY2UgdGhhdCBpcw0KPiBub3Qg YXR0YWNoZWQgaWYgbm90IHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgRmxhc2ggY3ljbGVzIGFzIGZh ciBhcyBJIGNhbiB0aGluay4NCj4gPiBEbyB5b3UgaGFwcGVuIHRvIGhhdmUgd29ycmllcyBhYm91 dCBhIHNjZW5hcmlvIEkgZGlkIG5vdCBjb25zaWRlcj8NCj4gDQo+IFN1cmU7IGl0J3MgYSBzaW1w bGUgc2NlbmFyaW86IHRoZSB1c2VyIG1pZ2h0IHdhbnQgdGhlIHN5c3RlbSB0byBhdXRvbWF0aWNh bGx5DQo+IGJvb3Qgb2ZmIG9mIGEgVVNCIGRyaXZlIHdoZW5ldmVyIHRoZXkgY29ubmVjdCBpdCwg YmVmb3JlIHBvd2VyaW5nIG9uIG9yDQo+IHJlYm9vdGluZyB0aGUgc3lzdGVtLCByYXRoZXIgdGhh biBib290IGZyb20gdGhlIGhhcmQgZHJpdmUuDQoNClJlbWVtYmVyIHRoYXQgcG9pbnQgd2FzIG1h ZGUgaW4gdGhlIGNvbnRleHQgb2YgZW51bWVyYXRpb24uIFdoYXQgSSB3YXMgc2F5aW5nIGlzIHRo YXQgYm9vdCBvcHRpb25zIGNyZWF0ZWQgYnkgdGhlIGVudW0gY29kZSwgZm9yIHJlbW92YWJsZSBk cml2ZXMsIGFyZSBmaW5lIHRvIGJlIGdvbmUgKGFzIHRoZXkgYXJlIHZvbGF0aWxlLCBvciBwcm9h Y3RpdmVseSByZW1vdmVkIHdoZW4gTlYpIGFmdGVyIGEgcmVib290Lg0KSWYgYSB1c2VyIHdhbnRz IHRvIGJvb3QgZnJvbSBzdWNoIGFuIFVTQiBkZXZpY2UgYnkgZGVmYXVsdCwgaW4gbXkgb3Bpbmlv biB0aGV5IHNob3VsZCBtYW51YWxseSBjcmVhdGUgYSBib290IG9wdGlvbiBmb3IgaXQuIE90aGVy d2lzZSwgaWYgSSBkbyBub3QgbWlzdW5kZXJzdGFuZCB5b3VyIHBvaW50LCB5b3UgYXJlIHN1Z2dl c3RpbmcgdGhlIGZpcm13YXJlIHRvIGtlZXAgdHJhY2sgb2YgZXZlcnkgc2luZ2xlIGJvb3RhYmxl IFVTQiBkZXZpY2UgZXZlciBhdHRhY2hlZC4NCg0KPiANCj4gKEZvciBVU0IgZGV2aWNlcywgIlVT QiBXV0lEIiBhbmQgIlVTQiBDbGFzcyIgZGV2aWNlIHBhdGggbm9kZXMgYXJlDQo+IGRlZmluZWQg YnkgdGhlIHNwZWMsIHNvIHRoZSB1c2VyIGlzbid0IGV2ZW4gZXhwZWN0ZWQgdG8gcGx1ZyB0aGUg ZHJpdmUgaW50bw0KPiB0aGUgc2FtZSBVU0IgcG9ydCwgZm9yIHRoZSBkcml2ZSB0byBiZSBmb3Vu ZCB1bmlxdWVseS4pDQoNCkFjdHVhbGx5IGRpZG4ndCBrbm93IHRoYXQsIHRoYW5rcyBmb3IgdGhl IGZhY3QhDQoNCj4gDQo+ID4+PiBQcmltYXJ5IHBhcnRpdGlvbjogVGhlIHNvLWNhbGxlZCAiU3Rh cnR1cCBWb2x1bWUiIHVuZm9ydHVuYXRlbHkgaXMgYQ0KPiA+Pj4gYml0IHRyaWNraWVyLiBGb3Ig aXQsIGEgcHJhY3RpY2FsbHkgaW52YWxpZCBCb290IE9wdGlvbiBpcyBhZGRlZCwNCj4gPj4+IHdo aWNoIGlzIGFuIGV4cGFuZGVkIGRldmljZSBwYXRoIHRvIHRoZSB2b2x1bWUgdG8gYmUgYm9vdGVk LCBob3dldmVyDQo+ID4+PiB3aXRob3V0IGhhdmluZyBhIEZpbGUgRGV2aWNlIFBhdGggTm9kZSBh cHBlbmRlZC4NCj4gPj4NCj4gPj4gVGhpcyBkb2Vzbid0IGltbWVkaWF0ZWx5IHNlZW0gaW52YWxp ZCAtLSBpZiBtZW1vcnkgc2VydmVzLCB5b3UgY2FuDQo+ID4+IGhhdmUgXEVGSVxCT09UXEJPT1Q8 YXJjaD4uZWZpIG9uIGZpeGVkIG1lZGlhIGFzIHdlbGwsIGFuZCBpZiBhIGJvb3QNCj4gPj4gb3B0 aW9uIG9ubHkgbmFtZXMgdGhlIEhEKCkgaW4gcXVlc3Rpb24sIHRoYXQgZGVmYXVsdCBib290IHBh dGggd2lsbCBiZQ0KPiBsYXVuY2hlZCBvZmYgb2YgaXQuDQo+ID4NCj4gPiBJIHRoaW5rIGZvciBh IEJvb3QjIyMjIG9wdGlvbiwgaXQgaXMgYWx3YXlzIGludmFsaWQsDQo+IA0KPiBJIGRpc2FncmVl LiBJJ2xsIGhhdmUgdG8gZGVmZXIgdG8gUmF5IGhlcmUsIGJ1dCBpbiBteSBleHBlcmllbmNlLCBl ZGsyIHByYWN0aWNlDQo+IGlzIHRoYXQgaWYgeW91IGhhdmUgYSBib290IG9wdGlvbiB3aG9zZSBk ZXZwYXRoIGVuZHMgaW4gYSBIRCgpIG5vZGUsIHRoZW4gYW4NCj4gVUVGSSBpbWFnZSBvbiB0aGF0 IHBhcnRpdGlvbiB1bmRlciB0aGUgZmlsZXBhdGggXEVGSVxCT09UXEJPT1Q8YXJjaD4uZWZpDQo+ IHdpbGwgYmUgdHJpZWQgZm9yIGJvb3RpbmcuIEFzIGZhciBhcyBJIGNhbiBzZWUsIHRoaXMgaXMg bmVpdGhlciBtYW5kYXRlZCBub3INCj4gZm9yYmlkZGVuIGJ5IHRoZSBzcGVjLiBBbnl3YXksIGZv ciBSYXkgdG8gYW5zd2VyIGF1dGhvcml0YXRpdmVseS4NCg0KSW5kZWVkIGl0IGlzIG5laXRoZXIg ZXhwbGljaXRseSBhbGxvd2VkIG5vciBmb3JiaWRkZW4sIEkgY29uY2x1ZGVkIGl0IGJlaW5nIGlu dmFsaWQgZnJvbSB0aGUgc3RyaWN0bmVzcyBvZiBob3cgdGhlIGJvb3RpbmcgcHJvdG9jb2wgaXMg ZGVmaW5lZC4NCklmIGl0IGlzIGZvcmJpZGRlbiwgaXQgaXMgaW1wbGljaXQsIGJ1dCBpZiBpdCdz IG5vdCB0aGUgY2FzZSwgdGhlIGJldHRlciBpdCBpcyBmb3IgdGhpcyBwdXJwb3NlLg0KDQo+IA0K PiA+IGJlY2F1c2UgdGhlIGRlZmF1bHQgcGF0aCBpcyBkZWZpbmVkIHRvIGJlIHVzZWQgaW4gdGhl ICJzY2FubmluZyBwaGFzZSINCj4gb25jZSBubyBCb290IyMjIyB2YXJpYWJsZSBjb3VsZCBiZSBm b3VuZC4NCj4gPiBBbHNvLCB1bmZvcnR1bmF0ZWx5IHRoZSBwYXRoIGlzIGFsc28gc3RvcmVkIHZp YSBibGVzcyBhbmQgZGVmaW5pdGVseSBuZXZlciB0aGUNCj4gVUVGSSBzdGFuZGFyZCBvbmUsIHNv IHN1cHBvcnRpbmcgdGhpcyB2ZW5kb3Itc3BlY2lmaWMgc2NlbmFyaW8gZGVmaW5pdGVseQ0KPiBy ZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nLg0KPiA+IERvIHlvdSBoYXZlIGFueSBvcGluaW9uIG9u IHRoZSBwcm9wb3NlZCBzZWNvbmQgaG9vaz8NCj4gDQo+IFBlcnNvbmFsbHkgSSByZW1haW4gdW5j b252aW5jZWQgdGhhdCB0aGUgc2Vjb25kIGhvb2sgaXMgbmVlZGVkICh0byBiZQ0KPiBpbnZva2Vk IGZyb20gY29yZSBCZHNEeGUgb3IgVWVmaUJvb3RNYW5hZ2VyTGliIGNvZGUpLiBCdXQsIHRoYXQn cyBqdXN0IG15DQo+IG9waW5pb24gOikNCg0KV2VsbCwgdGhlIG9ubHkgYWx0ZXJuYXRpdmUgSSBz ZWUgYXJlIG1vZGlmeWluZyB0aGUgZW50cnkgcHJlLUJEUyAoc2xpZ2h0bHkgdW5jbGVhbiksIGZv cmtpbmcgb2ZmICh1bnBsZWFzYW50KSBvciBub3Qgc3VwcG9ydGluZyBpdCBhdCBhbGwgKHVucGxl YXNhbnQgdG9vLCBidXQgc3VwcG9ydCBpcyBub3QgdGVycmlibHkgaW1wb3J0YW50LCBhbHRob3Vn aCB3b3VsZCBiZSBuaWNlIHRvIGhhdmUpLg0KDQo+IA0KPiBJbiBnZW5lcmFsIEkgZmluZCB0aGF0 IGxpYnJhcnkgQVBJcyAoZXNwZWNpYWxseSBhICpzZXQqIG9mIGxpYnJhcnkgQVBJcykgYXJlIHZl cnkNCj4gaGFyZCB0byBkZXNpZ24gKGJlY2F1c2Ugd2UgY2FuJ3Qgc2VlIHRoZSBmdXR1cmUpLiBT bywgIm9yZ2FuaWMgZ3Jvd3RoIiB3b3Jrcw0KPiBiZXR0ZXIgaW4gcHJhY3RpY2UgKGV2ZW4gaWYg aXQgbGVhZHMgdG8gImxlc3Mgd2VsbCBvcmdhbml6ZWQiIHNldHMgb2YgQVBJcykuIFRoaXMgaXMN Cj4gdG8gc2F5IHRoYXQsIGlmIHlvdSBjYW4gcHJvcG9zZSBhIGhvb2sgYW5kIGltbWVkaWF0ZWx5 IGRlbW9uc3RyYXRlIHRoYXQgaXQNCj4gc2F2ZXMgY29kZSBmb3IsIGFuZC9vciBzaW1wbGlmaWVz LCBtdWx0aXBsZSBwbGF0Zm9ybXMsIHRoZW4gdGhlIG5ldyBBUEkgbWlnaHQNCj4gYmUganVzdGlm aWVkLiAoUGVyc29uYWxseSwgSSB1c3VhbGx5IGFyZ3VlIGZvciAidGhyZWUgY2FsbCBzaXRlcyIg YXMgYSBtaW5pbXVtLg0KPiBUd28gbWlnaHQgYmUgZW5vdWdoIGlmIHRoZSBjb2RlIGV4dHJhY3Rl ZCBpcyBwYXJ0aWN1bGFybHkgYmFyb3F1ZSwgb3INCj4gdW5kZXJnb2VzIGZyZXF1ZW50DQo+IGNo YW5nZXMuKQ0KDQpUaGUgInByb2JsZW0iIGlzIHRoYXQgYm90aCBob29rcyBhcmUgbm90IGludHJv ZHVjZWQgZm9yIHNoYXJpbmcgY29kZSBidXQgZm9yIGdpdmluZyB0aGUgcGxhdGZvcm0gZGV2ZWxv cGVyIG1vcmUgZnJlZWRvbSB3aXRob3V0IGZvcmtpbmcgb2ZmLg0KV2hldGhlciBzdWNoIGFyZSBh Y2NlcHRlZCBlbmRzIHVwIGJlaW5nIGVudGlyZWx5IHRoZSBtYWludGFpbmVyJ3MgcHJlZmVyZW5j ZSwgSSBndWVzcy4NCg0KPiANCj4gPj4gSSBoYXZlIGEgbW9yZSBnZW5lcmFsIGNvbW1lbnQgaW4g dGhlIGVuZDogSSBkb3VidCBJIGNvdWxkIGxlZ2FsbHkNCj4gPj4gdGVzdCBhbiBPU1ggZ3Vlc3Qg b24gbm9uLUFwcGxlIGhhcmR3YXJlLCBzbyBJIHdvbid0IHRyeSAoYW5kIEknbGwNCj4gPj4gbW9z dCBsaWtlbHkgbm90IGJ1eSBvciBvdGhlcndpc2UgcHJvY3VyZSBPU1gsIGxldCBhbG9uZSBBcHBs ZQ0KPiA+PiBoYXJkd2FyZSwganVzdCBmb3IgdGhpcykuIFRoYXQgbWVhbnMsIGlmIHlvdSBwb3N0 IHBhdGNoZXMsIG15IG1haW4NCj4gPj4gZm9jdXMgd2lsbCBiZSBvbiBrZWVwaW5nIHRoZSBjdXJy ZW50IGJlaGF2aW9yIHJlZ3Jlc3Npb24tZnJlZSwgYW5kDQo+ID4+IChzZWNvbmRhcmlseSkgdGhl IGltcGxlbWVudGF0aW9uIHByZWZlcmFibHkgc2ltcGxlICYgc2VwYXJhdGVkLg0KPiA+DQo+ID4g VGhhbmsgeW91IHRoYXQgeW91IGFyZSByZWFkeSB0byBtZXJnZSBjaGFuZ2VzIHlvdSBjYW5ub3Qg ZXZlbiByZWFsbHkNCj4gdGVzdC4NCj4gDQo+IEkgZGVmaW5pdGVseSBpbnRlbmQgdG8gcmVncmVz c2lvbiB0ZXN0IGFueSBzdWNoIGNoYW5nZXMgOikNCg0KU3VyZSwgSSBqdXN0IG9mdGVuIGNvbWUg YWNyb3NzIGEgIkkgZG9uJ3QgbWVyZ2Ugd2hhdCBJIGNhbm5vdCB0ZXN0IiBtZW50YWxpdHkuIDop DQoNCj4gDQo+IE9UT0gsIGluIGFueSBsYXJnZXIgcHJvamVjdCwgYW55IGdpdmVuIG1haW50YWlu ZXIgaXMgc3VyZWx5IHVuYWJsZSB0bw0KPiBpbnRlZ3JhdGlvbi10ZXN0ICphbGwqIGZlYXR1cmVz IGluIHRoZSBzdWJzeXN0ZW0gdGhhdCB0aGV5IGNvLW1haW50YWluLg0KPiBXaGF0J3MgaW1wb3J0 YW50IGlzIHRoYXQgZWFjaCBtYWpvciBmZWF0dXJlIGhhcyBhdCBsZWFzdCBvbmUgbWFpbnRhaW5l ciB0aGF0DQo+IGNhbiBpbnRlZ3JhdGlvbi10ZXN0IGl0IChwb3NzaWJseSB3aXRoIHRoZSBoZWxw IG9mIGFuIGF1dG9tYXRlZCB0ZXN0IHN1aXRlKS4NCj4gDQo+IEZvciBleGFtcGxlLCBJIHRvdGFs bHkgY2Fubm90IHRlc3QgWGVuIGNvZGUgaW4gT3ZtZlBrZyBvciBBcm1WaXJ0UGtnLCBidXQNCj4g dGhhdCdzIHdoeSB3ZSBoYXZlIHNldmVyYWwgcGVybWFuZW50IFJldmlld2VycyBmcm9tIHRoZSBY ZW4gcHJvamVjdCwgZm9yDQo+IE92bWZQa2cgYW5kIEFybVZpcnRQa2cuDQo+IA0KPiBUaGFua3Ms DQo+IExhc3psbw0K