From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=linux.dev (client-ip=188.165.223.204; helo=out2.migadu.com; envelope-from=martin.lau@linux.dev; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=linux.dev header.i=@linux.dev header.a=rsa-sha256 header.s=key1 header.b=WSGspNZV Received: from out2.migadu.com (out2.migadu.com [188.165.223.204]) by mail.toke.dk (Postfix) with ESMTPS id B880A9BE8E7 for ; Fri, 11 Nov 2022 02:26:19 +0100 (CET) Message-ID: <2e3c1e2d-bc60-b406-31e3-6e922eea3f9f@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1668129978; h=from:from: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; bh=IpJQ800sy78+a8kmRcchPk+xzAsgLINxEGbosp0MZ6M=; b=WSGspNZV58xAl4fDEq8lwjV5YbmNymLaeb43fC9tHUvtseT+y+TdlzQ6Brk3zbB8YOCs8y xIcgIpXSoL/y9/2iHAwyh/us0pWvuVoQh7UuitPUl5mgHVzeBefGFwZ+Ye57ObMwJQ6W1l IGmLkWxrgiKXp9pECIFCvcbIfv23MxA= Date: Thu, 10 Nov 2022 17:26:12 -0800 MIME-Version: 1.0 Content-Language: en-US To: Stanislav Fomichev References: <20221104032532.1615099-1-sdf@google.com> <20221104032532.1615099-7-sdf@google.com> <187e89c3-d7de-7bec-c72e-d9d6eb5bcca0@linux.dev> <9a8fefe4-2fcb-95b7-cda0-06509feee78e@linux.dev> <6f57370f-7ec3-07dd-54df-04423cab6d1f@linux.dev> <87leokz8lq.fsf@toke.dk> <5a23b856-88a3-a57a-2191-b673f4160796@linux.dev> <32f81955-8296-6b9a-834a-5184c69d3aac@linux.dev> <87y1siyjf6.fsf@toke.dk> <87o7texv08.fsf@toke.dk> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Martin KaFai Lau In-Reply-To: Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-Migadu-Flow: FLOW_OUT Message-ID-Hash: 4J5NQFB53XKQ7OZWJ7DUBXVGUICWF7HI X-Message-ID-Hash: 4J5NQFB53XKQ7OZWJ7DUBXVGUICWF7HI X-MailFrom: martin.lau@linux.dev X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, song@kernel.org, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, haoluo@google.com, jolsa@kernel.org, David Ahern , Jakub Kicinski , Willem de Bruijn , Jesper Dangaard Brouer , Anatoly Burakov , Alexander Lobakin , Magnus Karlsson , Maryam Tahhan , xdp-hints@xdp-project.net, netdev@vger.kernel.org, bpf@vger.kernel.org X-Mailman-Version: 3.3.6 Precedence: list Subject: [xdp-hints] Re: [RFC bpf-next v2 06/14] xdp: Carry over xdp metadata into skb context List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gMTEvMTAvMjIgNDo1NyBQTSwgU3RhbmlzbGF2IEZvbWljaGV2IHdyb3RlOg0KPiBPbiBUaHUs IE5vdiAxMCwgMjAyMiBhdCA0OjMzIFBNIE1hcnRpbiBLYUZhaSBMYXUgPG1hcnRpbi5sYXVAbGlu dXguZGV2PiB3cm90ZToNCj4+DQo+PiBPbiAxMS8xMC8yMiAzOjUyIFBNLCBTdGFuaXNsYXYgRm9t aWNoZXYgd3JvdGU6DQo+Pj4gT24gVGh1LCBOb3YgMTAsIDIwMjIgYXQgMzoxNCBQTSBUb2tlIEjD uGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAcmVkaGF0LmNvbT4gd3JvdGU6DQo+Pj4+DQo+Pj4+IFNr aXBwaW5nIHRvIHRoZSBsYXN0IGJpdDoNCj4+Pj4NCj4+Pj4+Pj4+PiAgICAgIH0gZWxzZSB7DQo+ Pj4+Pj4+Pj4gICAgICAgIHVzZSBrZnVuY3MNCj4+Pj4+Pj4+PiAgICAgIH0NCj4+Pj4+Pj4+Pg0K Pj4+Pj4+Pj4+IDUuIFN1cHBvcnQgdGhlIGNhc2Ugd2hlcmUgd2Uga2VlcCBwcm9ncmFtJ3MgbWV0 YWRhdGEgYW5kIGtlcm5lbCdzDQo+Pj4+Pj4+Pj4geGRwX3RvX3NrYl9tZXRhZGF0YQ0KPj4+Pj4+ Pj4+ICAgICAgLSBza2JfbWV0YWRhdGFfaW1wb3J0X2Zyb21feGRwKCkgd2lsbCAiY29uc3VtZSIg aXQgYnkgbWVtLW1vdmluZyB0aGUNCj4+Pj4+Pj4+PiByZXN0IG9mIHRoZSBtZXRhZGF0YSBvdmVy IGl0IGFuZCBhZGp1c3RpbmcgdGhlIGhlYWRyb29tDQo+Pj4+Pj4+Pg0KPj4+Pj4+Pj4gSSB3YXMg dGhpbmtpbmcgdGhlIGtlcm5lbCdzIHhkcF90b19za2JfbWV0YWRhdGEgaXMgYWx3YXlzIGJlZm9y ZSB0aGUgcHJvZ3JhbSdzDQo+Pj4+Pj4+PiBtZXRhZGF0YS4gIHhkcCBwcm9nIHNob3VsZCB1c3Vh bGx5IHdvcmsgaW4gdGhpcyBvcmRlciBhbHNvOiByZWFkL3dyaXRlIGhlYWRlcnMsDQo+Pj4+Pj4+ PiB3cml0ZSBpdHMgb3duIG1ldGFkYXRhLCBjYWxsIGJwZl94ZHBfbWV0YWRhdGFfZXhwb3J0X3Rv X3NrYigpLCBhbmQgcmV0dXJuDQo+Pj4+Pj4+PiBYRFBfUEFTUy9YRFBfUkVESVJFQ1QuICBXaGVu IGl0IGlzIFhEUF9QQVNTLCB0aGUga2VybmVsIGp1c3QgbmVlZHMgdG8gcG9wIHRoZQ0KPj4+Pj4+ Pj4geGRwX3RvX3NrYl9tZXRhZGF0YSBhbmQgcGFzcyB0aGUgcmVtYWluaW5nIHByb2dyYW0ncyBt ZXRhZGF0YSB0byB0aGUgYnBmLXRjLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IEZvciB0aGUga2VybmVs IGFuZCB4ZHAgcHJvZywgSSBkb24ndCB0aGluayBpdCBtYXR0ZXJzIHdoZXJlIHRoZQ0KPj4+Pj4+ Pj4geGRwX3RvX3NrYl9tZXRhZGF0YSBpcy4gIEhvd2V2ZXIsIHRoZSB4ZHAtPmRhdGFfbWV0YSAo cHJvZ3JhbSdzIG1ldGFkYXRhKSBoYXMgdG8NCj4+Pj4+Pj4+IGJlIGJlZm9yZSB4ZHAtPmRhdGEg YmVjYXVzZSBvZiB0aGUgY3VycmVudCBkYXRhX21ldGEgYW5kIGRhdGEgY29tcGFyaXNvbiB1c2Fn ZQ0KPj4+Pj4+Pj4gaW4gdGhlIHhkcCBwcm9nLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IFRoZSBvcmRl ciBvZiB0aGUga2VybmVsJ3MgeGRwX3RvX3NrYl9tZXRhZGF0YSBhbmQgdGhlIHByb2dyYW0ncyBt ZXRhZGF0YQ0KPj4+Pj4+Pj4gcHJvYmFibHkgb25seSBtYXR0ZXJzIHRvIHRoZSB1c2Vyc3BhY2Ug QUZfWERQLiAgSG93ZXZlciwgSSBkb24ndCBzZWUgaG93IEFGX1hEUA0KPj4+Pj4+Pj4gc3VwcG9y dHMgdGhlIHByb2dyYW0ncyBtZXRhZGF0YSBub3cuICBhZmFpY3QsIGl0IGNhbiBvbmx5IHdvcmsg bm93IGlmIHRoZXJlIGlzDQo+Pj4+Pj4+PiBzb21lIHNvcnQgb2YgY29udHJhY3QgYmV0d2VlbiB0 aGVtIG9yIHRoZSBBRl9YRFAgY3VycmVudGx5IGRvZXMgbm90IHVzZSB0aGUNCj4+Pj4+Pj4+IHBy b2dyYW0ncyBtZXRhZGF0YS4gIEVpdGhlciB3YXksIHdlIGNhbiBkbyB0aGUgbWVtLW1vdmluZyBv bmx5IGZvciBBRl9YRFAgYW5kIGl0DQo+Pj4+Pj4+PiBzaG91bGQgYmUgYSBubyBvcCBpZiB0aGVy ZSBpcyBubyBwcm9ncmFtJ3MgbWV0YWRhdGE/ICBUaGlzIGJlaGF2aW9yIGNvdWxkIGFsc28NCj4+ Pj4+Pj4+IGJlIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIHNldHNvY2tvcHQ/DQo+Pj4+Pj4+DQo+Pj4+ Pj4+IEFncmVlZCBvbiBhbGwgb2YgdGhlIGFib3ZlLiBGb3Igbm93IGl0IHNlZW1zIGxpa2UgdGhl IHNhZmVzdCB0aGluZyB0bw0KPj4+Pj4+PiBkbyBpcyB0byBwdXQgeGRwX3RvX3NrYl9tZXRhZGF0 YSBsYXN0IHRvIGFsbG93IGFmX3hkcCB0byBwcm9wZXJseQ0KPj4+Pj4+PiBsb2NhdGUgYnRmX2lk Lg0KPj4+Pj4+PiBMZXQncyBzZWUgaWYgVG9rZSBkaXNhZ3JlZXMgOi0pDQo+Pj4+Pj4NCj4+Pj4+ PiBBcyBJIHJlcGxpZWQgdG8gTWFydGluLCBJJ20gbm90IHN1cmUgaXQncyB3b3J0aCB0aGUgY29t cGxleGl0eSB0bw0KPj4+Pj4+IGxvZ2ljYWxseSBzcGxpdCB0aGUgU0tCIG1ldGFkYXRhIGZyb20g dGhlIHByb2dyYW0ncyBvd24gbWV0YWRhdGEgKGFzDQo+Pj4+Pj4gb3Bwb3NlZCB0byBqdXN0IHJl dXNpbmcgdGhlIGV4aXN0aW5nIGRhdGFfbWV0YSBwb2ludGVyKT8NCj4+Pj4+DQo+Pj4+PiBJJ2Qg Z2xhZGx5IGtlZXAgbXkgY3VycmVudCByZXF1aXJlbWVudCB3aGVyZSBpdCdzIGVpdGhlciBvciwg YnV0IG5vdCBib3RoIDotKQ0KPj4+Pj4gV2UgY2FuIHJlbGF4IGl0IGxhdGVyIGlmIHJlcXVpcmVk Pw0KPj4+Pg0KPj4+PiBTbyB0aGUgd2F5IEkndmUgYmVlbiB0aGlua2luZyBhYm91dCBpdCBpcyBz aW1wbHkgdGhhdCB0aGUgc2tiX21ldGFkYXRhDQo+Pj4+IHdvdWxkIGxpdmUgaW4gdGhlIHNhbWUg cGxhY2UgYXQgdGhlIGRhdGFfbWV0YSBwb2ludGVyIChpbmNsdWRpbmcNCj4+Pj4gYWRqdXN0aW5n IHRoYXQgcG9pbnRlciB0byBhY2NvbW1vZGF0ZSBpdCksIGFuZCBqdXN0IG92ZXJyaWRpbmcgdGhl DQo+Pj4+IGV4aXN0aW5nIHByb2dyYW0gbWV0YWRhdGEsIGlmIGFueSBleGlzdHMuIEJ1dCBsb29r aW5nIGF0IGl0IG5vdywgSSBndWVzcw0KPj4+PiBoYXZpbmcgdGhlIHNwbGl0IG1ha2VzIGl0IGVh c2llciBmb3IgYSBwcm9ncmFtIHRvIHdyaXRlIGl0cyBvd24gY3VzdG9tDQo+Pj4+IG1ldGFkYXRh IGFuZCBzdGlsbCB1c2UgdGhlIHNrYiBtZXRhZGF0YS4gU2VlIGJlbG93IGFib3V0IHRoZSBvcmRl cmluZy4NCj4+Pj4NCj4+Pj4+PiBIb3dldmVyLCBpZiB3ZSBkbywgdGhlIGxheW91dCB0aGF0IG1h a2VzIG1vc3Qgc2Vuc2UgdG8gbWUgaXMgcHV0dGluZyB0aGUNCj4+Pj4+PiBza2IgbWV0YWRhdGEg YmVmb3JlIHRoZSBwcm9ncmFtIG1ldGFkYXRhLCBsaWtlOg0KPj4+Pj4+DQo+Pj4+Pj4gLS0tLS0t LS0tLS0tLS0NCj4+Pj4+PiB8IHNrYl9tZXRhZGF0YQ0KPj4+Pj4+IC0tLS0tLS0tLS0tLS0tDQo+ Pj4+Pj4gfCBkYXRhX21ldGENCj4+Pj4+PiAtLS0tLS0tLS0tLS0tLQ0KPj4+Pj4+IHwgZGF0YQ0K Pj4+Pj4+IC0tLS0tLS0tLS0tLS0tDQo+Pj4+Pj4NCj4+DQo+PiBZZWFoLCBmb3IgdGhlIGtlcm5l bCBhbmQgeGRwIHByb2cgKGllIG5vdCBBRl9YRFApLCBJIG1lYW50IHRoaXM6DQo+Pg0KPj4gfCBz a2JfbWV0YWRhdGEgfCBjdXN0b20gbWV0YWRhdGEgfCBkYXRhIHwNCj4+DQo+Pj4+Pj4gTm90IHN1 cmUgaWYgdGhhdCdzIHdoYXQgeW91IG1lYW50PyA6KQ0KPj4+Pj4NCj4+Pj4+IEkgd2FzIHN1Z2dl c3RpbmcgdGhlIG90aGVyIHdheSBhcm91bmQ6IHxjdXN0b20gbWV0YXxza2JfbWV0YWRhdGF8ZGF0 YXwNCj4+Pj4+IChidXQsIGFzIE1hcnRpbiBwb2ludHMgb3V0LCBjb25zdW1pbmcgc2tiX21ldGFk YXRhIGluIHRoZSBrZXJuZWwNCj4+Pj4+IGJlY29tZXMgbWVzc2llcikNCj4+Pj4+DQo+Pj4+PiBh Zl94ZHAgY2FuIGNoZWNrIHdoZXRoZXIgc2tiX21ldGRhdGEgaXMgcHJlc2VudCBieSBsb29raW5n IGF0IGRhdGEgLQ0KPj4+Pj4gb2Zmc2V0b2Yoc3RydWN0IHNrYl9tZXRhZGF0YSwgYnRmX2lkKS4N Cj4+Pj4+IHByb2dzIHRoYXQga25vdyBob3cgdG8gaGFuZGxlIGN1c3RvbSBtZXRhZGF0YSwgd2ls bCBsb29rIGF0IGRhdGEgLQ0KPj4+Pj4gc2l6ZW9mKHNrYl9tZXRhZGF0YSkNCj4+Pj4+DQo+Pj4+ PiBPdGhlcndpc2UsIGlmIGl0J3MgdGhlIG90aGVyIHdheSBhcm91bmQsIGhvdyBkbyB3ZSBmaW5k IHNrYl9tZXRhZGF0YQ0KPj4+Pj4gaW4gYSByZWRpcmVjdGVkIGZyYW1lPw0KPj4+Pj4gTGV0J3Mg c2F5IHdlIGhhdmUgfHNrYl9tZXRhZGF0YXxjdXN0b20gbWV0YXxkYXRhfCwgaG93IGRvZXMgdGhl IGZpbmFsDQo+Pj4+PiBwcm9ncmFtIGZpbmQgc2tiX21ldGFkYXRhPw0KPj4+Pj4gQWxsIHRoZSBw cm9ncyBoYXZlIHRvIGFncmVlIG9uIHRoZSBzaXplb2YodGMvY3VzdG9tIG1ldGEpLCByaWdodD8N Cj4+Pj4NCj4+Pj4gRXJtLCBtYXliZSBJJ20gbWlzc2luZyBzb21ldGhpbmcgaGVyZSwgYnV0IHNr Yl9tZXRhZGF0YSBpcyBmaXhlZCBzaXplLA0KPj4+PiByaWdodD8gU28gaWYgdGhlICJza2JfbWV0 YWRhdGEgaXMgcHJlc2VudCIgZmxhZyBpcyBzZXQsIHdlIGtub3cgdGhhdCB0aGUNCj4+Pj4gc2l6 ZW9mKHNrYl9tZXRhZGF0YSkgYnl0ZXMgYmVmb3JlIHRoZSBkYXRhX21ldGEgcG9pbnRlciBjb250 YWlucyB0aGUNCj4+Pj4gbWV0YWRhdGEsIGFuZCBpZiB0aGUgZmxhZyBpcyBub3Qgc2V0LCB3ZSBr bm93IHRob3NlIGJ5dGVzIGFyZSBub3QgdmFsaWQNCj4+Pj4gbWV0YWRhdGEuDQo+Pg0KPj4gcmln aHQsIHNvIHRvIGdldCB0byB0aGUgc2tiX21ldGFkYXRhLCBpdCB3aWxsIGJlDQo+PiBkYXRhX21l dGEgLT0gc2l6ZW9mKHNrYl9tZXRhZGF0YSk7ICAvKiBwcm9iYWJseSBuZWVkIGFsaWdubWVudCAq Lw0KPj4NCj4+Pj4NCj4+Pj4gRm9yIEFGX1hEUCwgd2UnZCBuZWVkIHRvIHRyYW5zZmVyIHRoZSBm bGFnIGFzIHdlbGwsIGFuZCBpdCBjb3VsZCBhcHBseQ0KPj4+PiB0aGUgc2FtZSBsb2dpYyAoZ2V0 dGluZyB0aGUgc2l6ZSBmcm9tIHRoZSB2bWxpbnV4IEJURikuDQo+Pj4+DQo+Pj4+IEJ5IHRoaXMg bG9naWMsIHRoZSBCVEZfSUQgc2hvdWxkIGJlIHRoZSAqZmlyc3QqIGVudHJ5IG9mIHN0cnVjdA0K Pj4+PiBza2JfbWV0YWRhdGEsIHNpbmNlIHRoYXQgd2lsbCBiZSB0aGUgZmllbGQgQUZfWERQIHBy b2dyYW1zIGNhbiBmaW5kDQo+Pj4+IHJpZ2h0IG9mZiB0aGUgYmF0LCBubz8gPg0KPj4+IFRoZSBw cm9ibGVtIHdpdGggQUZfWERQIGlzIHRoYXQsIElJVUMsIGl0IGRvZXNuJ3QgaGF2ZSBhIGRhdGFf bWV0YQ0KPj4+IHBvaW50ZXIgaW4gdGhlIHVzZXJzcGFjZS4NCj4+DQo+PiBZZXAuIEl0IGlzIG15 IHVuZGVyc3RhbmRpbmcgYWxzby4gIE1pc3NpbmcgZGF0YV9tZXRhIHBvaW50ZXIgaW4gdGhlIEFG X1hEUA0KPj4gcnhfZGVzYyBpcyBhIHBvdGVudGlhbCBwcm9ibGVtLiAgSGF2aW5nIEJURl9JRCBv ciBub3Qgd29uJ3QgaGVscC4NCj4+DQo+Pj4NCj4+PiBZb3UgZ2V0IGFuIHJ4IGRlc2NyaXB0b3Ig d2hlcmUgdGhlIGFkZHJlc3MgcG9pbnRzIHRvIHRoZSAnZGF0YSc6DQo+Pj4gfCAyNTYgYnl0ZXMg aGVhZHJvb20gd2hlcmUgbWV0YWRhdGEgY2FuIGdvIHwgZGF0YSB8DQo+Pj4NCj4+PiBTbyB5b3Ug aGF2ZSAoYXQgbW9zdCkgMjU2IGJ5dGVzIG9mIGhlYWRyb29tLCBzb21lIG9mIHRoYXQgbWlnaHQg YmUgdGhlDQo+Pj4gbWV0YWRhdGEsIGJ1dCB5b3UgcmVhbGx5IGRvbid0IGtub3cgd2hlcmUgaXQg c3RhcnRzLiBCdXQgeW91IGtub3cgaXQNCj4+PiBkZWZpbml0ZWx5IGVuZHMgd2hlcmUgdGhlIGRh dGEgYmVnaW5zLg0KPj4+DQo+Pj4gU28gaWYgd2UgaGF2ZSB0aGUgZm9sbG93aW5nLCB3ZSBjYW4g bG9jYXRlIHNrYl9tZXRhZGF0YToNCj4+PiB8IDI1Ni1zaXplb2Yoc2tiX21ldGFkYXRhKSBoZWFk cm9vbSB8IGN1c3RvbSBtZXRhZGF0YSB8IHNrYl9tZXRhZGF0YSB8IGRhdGEgfA0KPj4+IGRhdGEg LSBzaXplb2Yoc2tiX21ldGFkYXRhKSB3aWxsIGdldCB5b3UgdGhlcmUNCj4+Pg0KPj4+IEJ1dCBp ZiBpdCdzIHRoZSBvdGhlciB3YXkgYXJvdW5kLCB0aGUgcHJvZ3JhbSBoYXMgdG8ga25vdw0KPj4+ IHNpemVvZihjdXN0b20gbWV0YWRhdGEpIHRvIGxvY2F0ZSBza2JfbWV0YWRhdGE6DQo+Pj4gfCAy NTYtc2l6ZW9mKHNrYl9tZXRhZGF0YSkgaGVhZHJvb20gfCBza2JfbWV0YWRhdGEgfCBjdXN0b20g bWV0YWRhdGEgfCBkYXRhIHwNCj4+DQo+PiBSaWdodCwgdGhpcyB3b24ndCB3b3JrIGlmIHRoZSBB Rl9YRFAgdXNlciBkb2VzIG5vdCBrbm93IGhvdyBiaWcgdGhlIGN1c3RvbQ0KPj4gbWV0YWRhdGEg aXMuICBUaGUga2VybmVsIHRoZW4gbmVlZHMgdG8gc3dhcCB0aGUgInNrYl9tZXRhZGF0YSIgYW5k ICJjdXN0b20NCj4+IG1ldGFkYXRhIiArIHNldHRpbmcgYSBmbGFnIGluIHRoZSBBRl9YRFAgcnhf ZGVzYy0+b3B0aW9ucyB0byBtYWtlIGl0IGxvb2tzIGxpa2UNCj4+IHRoaXM6DQo+PiB8IGN1c3Rv bSBtZXRhZGF0YSB8IHNrYl9tZXRhZGF0YSB8IGRhdGEgfA0KPj4NCj4+IEhvd2V2ZXIsIHNpbmNl IGRhdGFfbWV0YSBpcyBtaXNzaW5nIGZyb20gdGhlIHJ4X2Rlc2MsIG1heSBiZSB3ZSBjYW4gc2Fm ZWx5DQo+PiBhc3N1bWUgdGhlIEFGX1hEUCB1c2VyIGFsd2F5cyBrbm93cyB0aGUgc2l6ZSBvZiB0 aGUgY3VzdG9tIG1ldGFkYXRhIG9yIHRoZXJlIGlzDQo+PiB1c3VhbGx5IG5vICJjdXN0b20gbWV0 YWRhdGEiIGFuZCBubyBzd2FwIGlzIG5lZWRlZD8NCj4gDQo+IElmIHdlIGNhbiBhc3N1bWUgdGhl eSBjYW4gc2hhcmUgdGhhdCBpbmZvLCBjYW4gdGhleSBhbHNvIHNoYXJlIG1vcmUNCj4gaW5mbyBv biB3aGF0IGtpbmQgb2YgbWV0YWRhdGEgdGhleSB3b3VsZCBwcmVmZXIgdG8gZ2V0Pw0KPiBJZiB0 aGV5IGNhbiBhZ3JlZSBvbiB0aGUgc2l6ZSwgbWF5YmUgdGhleSBhbHNvIGNhbiBhZ3JlZSBvbiB0 aGUgZmxvd3MNCj4gdGhhdCBuZWVkIHNrYl9tZXRkYXRhIHZzIHRoZSBmbG93cyB0aGF0IG5lZWQg YSBjdXN0b20gb25lPw0KPiANCj4gU2VlbXMgbGlrZSB3ZSBjYW4gc3RhcnQgd2l0aCBzdXBwb3J0 aW5nIGVpdGhlciBvbmUsIGJ1dCBub3QgYm90aCBhbmQNCj4gZXh0ZW5kIGluIHRoZSBmdXR1cmUg b25jZSB3ZSBoYXZlIG1vcmUgdW5kZXJzdGFuZGluZyBvbiB3aGV0aGVyIGl0J3MNCj4gYWN0dWFs bHkgbmVlZGVkIG9yIG5vdD8NCj4gDQo+IGJwZl94ZHBfbWV0YWRhdGFfZXhwb3J0X3RvX3NrYjog YWRqdXN0IGRhdGEgbWV0YSwgYWRkIHVzZXMtc2tiLW1ldGFkYXRhIGZsYWcNCj4gYnBmX3hkcF9h ZGp1c3RfbWV0YTogdW5jb25kaXRpb25hbGx5IHJlc2V0IHVzZXMtc2tiLW1ldGFkYXRhIGZsYWcN CmhtbS4uLiBJIGFtIHRoaW5raW5nOg0KDQpicGZfeGRwX2FkanVzdF9tZXRhOiBtb3ZlIHRoZSBl eGlzdGluZyAoaWYgYW55KSBza2JfbWV0YWRhdGEgYW5kIGFkanVzdCANCnhkcC0+ZGF0YV9tZXRh Lg0KDQpicGZfeGRwX21ldGFkYXRhX2V4cG9ydF90b19za2I6IElmIHNrYl9tZXRhZGF0YSBleGlz dHMsIG92ZXJ3cml0ZXMgdGhlIGV4aXN0aW5nIA0Kb25lLiAgSWYgbm90IGV4aXN0cywgZ2V0cyBo ZWFkcm9vbSBiZWZvcmUgeGRwLT5kYXRhX21ldGEgYW5kIHdyaXRlcyBoaW50cy4NCg==