From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 1/1] public/io/netif.h: add gref mapping control messages Date: Thu, 7 Sep 2017 07:40:12 +0000 Message-ID: References: <20170901145057.17414-1-joao.m.martins@oracle.com> <20170901145057.17414-2-joao.m.martins@oracle.com> <4056c903a6b6433d9f576a0e7701d0b2@AMSPEX02CL03.citrite.net> <72d311f0970a4f349acd434e23424766@AMSPEX02CL03.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: 'Joao Martins' Cc: Wei Liu , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEpvYW8gTWFydGlucyBbbWFpbHRv OmpvYW8ubS5tYXJ0aW5zQG9yYWNsZS5jb21dCj4gU2VudDogMDYgU2VwdGVtYmVyIDIwMTcgMTc6 MDcKPiBUbzogUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT4KPiBTdWJqZWN0 OiBSZTogW1BBVENIIHYyIDEvMV0gcHVibGljL2lvL25ldGlmLmg6IGFkZCBncmVmIG1hcHBpbmcg Y29udHJvbAo+IG1lc3NhZ2VzCj4gCj4gW0lzIGl0IG1lYW50IHRvIGJlIG9mZmxpc3Q/XQoKTm9w ZS4gTXkgbWlzdGFrZS4KCj4gCj4gT24gMDkvMDYvMjAxNyAwMzo0OSBQTSwgUGF1bCBEdXJyYW50 IHdyb3RlOgo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPj4gRnJvbTogSm9hbyBN YXJ0aW5zIFttYWlsdG86am9hby5tLm1hcnRpbnNAb3JhY2xlLmNvbV0KPiA+PiBTZW50OiAwNiBT ZXB0ZW1iZXIgMjAxNyAxNTozNwo+ID4+IFRvOiBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBj aXRyaXguY29tPgo+ID4+IENjOiBYZW4tZGV2ZWwgPHhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnPjsg V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT47Cj4gPj4gS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjIgMS8x XSBwdWJsaWMvaW8vbmV0aWYuaDogYWRkIGdyZWYgbWFwcGluZyBjb250cm9sCj4gPj4gbWVzc2Fn ZXMKPiA+Pgo+ID4+IE9uIDA5LzA2LzIwMTcgMDI6NDkgUE0sIFBhdWwgRHVycmFudCB3cm90ZToK PiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPj4+PiBGcm9tOiBKb2FvIE1hcnRp bnMgW21haWx0bzpqb2FvLm0ubWFydGluc0BvcmFjbGUuY29tXQo+ID4+Pj4gU2VudDogMDEgU2Vw dGVtYmVyIDIwMTcgMTU6NTEKPiA+Pj4+IFRvOiBYZW4tZGV2ZWwgPHhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnPgo+ID4+Pj4gQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+OyBQYXVsIER1 cnJhbnQKPiA+PiA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Owo+ID4+Pj4gS29ucmFkIFJ6ZXN6 dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPjsgSm9hbyBNYXJ0aW5zCj4gPj4+PiA8 am9hby5tLm1hcnRpbnNAb3JhY2xlLmNvbT4KPiA+Pj4+IFN1YmplY3Q6IFtQQVRDSCB2MiAxLzFd IHB1YmxpYy9pby9uZXRpZi5oOiBhZGQgZ3JlZiBtYXBwaW5nIGNvbnRyb2wKPiA+PiBtZXNzYWdl cwo+ID4+Pj4KPiA+Pj4+IEFkZHMgMyBtZXNzYWdlcyB0byBhbGxvdyBndWVzdCB0byBsZXQgYmFj a2VuZCBrZWVwIGdyYW50cyBtYXBwZWQsCj4gPj4+PiBzdWNoIHRoYXQgMSkgZ3Vlc3RzIGFsbG93 aW5nIGZhc3QgcmVjeWNsaW5nIG9mIHBhZ2VzIGNhbiBhdm9pZCBkb2luZwo+ID4+Pj4gZ3JhbnQg b3BzIGZvciB0aG9zZSBjYXNlcywgb3Igb3RoZXJ3aXNlIDIpIHByZWZlcnJpbmcgY29waWVzIG92 ZXIKPiA+Pj4+IGdyYW50cyBhbmQgMykgYWx3YXlzIHVzaW5nIGEgZml4ZWQgc2V0IG9mIHBhZ2Vz IGZvciBuZXR3b3JrIEkvTy4KPiA+Pj4+Cj4gPj4+PiBUaGUgdGhyZWUgY29udHJvbCByaW5nIG1l c3NhZ2VzIGFkZGVkIGFyZToKPiA+Pj4+ICAtIEFkZCBncmVmcyB0byBiZSBtYXBwZWQgYnkgYmFj a2VuZAo+ID4+Pj4gIC0gUmVtb3ZlIGdyZWZzIG1hcHBpbmdzIChJZiB0aGV5IGFyZSBub3QgaW4g dXNlKQo+ID4+Pj4gIC0gR2V0IG1heGltdW0gYW1vdW50IG9mIGdyZWZzIGtlcHQgbWFwcGVkLgo+ ID4+Pj4KPiA+Pj4+IFNpZ25lZC1vZmYtYnk6IEpvYW8gTWFydGlucyA8am9hby5tLm1hcnRpbnNA b3JhY2xlLmNvbT4KPiA+Pj4+IC0tLQo+ID4+Pj4gIHhlbi9pbmNsdWRlL3B1YmxpYy9pby9uZXRp Zi5oIHwgMTE0Cj4gPj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiA+Pj4+ICAxIGZpbGUgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKykKPiA+Pj4+Cj4gPj4+ PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL25ldGlmLmgKPiBiL3hlbi9pbmNs dWRlL3B1YmxpYy9pby9uZXRpZi5oCj4gPj4+PiBpbmRleCBjYTAwNjE0MTBkLi4yNjRjMzE3NDcx IDEwMDY0NAo+ID4+Pj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2lvL25ldGlmLmgKPiA+Pj4+ ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9uZXRpZi5oCj4gPj4+PiBAQCAtMzUzLDYgKzM1 Myw5IEBAIHN0cnVjdCB4ZW5fbmV0aWZfY3RybF9yZXF1ZXN0IHsKPiA+Pj4+ICAjZGVmaW5lIFhF Tl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfTUFQUElOR19TSVpFIDUKPiA+Pj4+ICAjZGVmaW5l IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfTUFQUElORyAgICAgIDYKPiA+Pj4+ICAjZGVm aW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfQUxHT1JJVEhNICAgIDcKPiA+Pj4+ICsj ZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfR0VUX0dSRUZfTUFQUElOR19TSVpFIDgKPiA+Pj4+ ICsjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfQUREX0dSRUZfTUFQUElORyAgICAgIDkKPiA+ Pj4+ICsjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX1RZUEVfUFVUX0dSRUZfTUFQUElORyAgICAgMTAK PiA+Pj4+Cj4gPj4+PiAgICAgIHVpbnQzMl90IGRhdGFbM107Cj4gPj4+PiAgfTsKPiA+Pj4+IEBA IC0zOTEsNiArMzk0LDQxIEBAIHN0cnVjdCB4ZW5fbmV0aWZfY3RybF9yZXNwb25zZSB7Cj4gPj4+ PiAgfTsKPiA+Pj4+Cj4gPj4+PiAgLyoKPiA+Pj4+ICsgKiBTdGF0aWMgR3JhbnRzIChzdHJ1Y3Qg eGVuX25ldGlmX2dyZWZfYWxsb2MpCj4gPj4+PiArICogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQo+ID4+Pj4gKyAqCj4gPj4+PiArICogQSBmcm9udGVuZCBtYXkg cHJvdmlkZSBhIGZpeGVkIHNldCBvZiBncmFudCByZWZlcmVuY2VzIHRvIGJlCj4gbWFwcGVkCj4g Pj4gb24KPiA+Pj4+ICsgKiB0aGUgYmFja2VuZC4gVGhlIG1lc3NhZ2Ugb2YgdHlwZQo+ID4+Pj4g WEVOX05FVElGX0NUUkxfVFlQRV9BRERfR1JFRl9NQVBQSU5HCj4gPj4+PiArICogcHJpb3IgaXRz IHVzYWdlIGluIHRoZSBjb21tYW5kIHJpbmcgYWxsb3dzIGZvciBjcmVhdGlvbiBvZiB0aGVzZQo+ ID4+IG1hcHBpbmdzLgo+ID4+Pj4gKyAqIFRoZSBiYWNrZW5kIHdpbGwgbWFpbnRhaW4gYSBmaXhl ZCBhbW91bnQgb2YgdGhlc2UgbWFwcGluZ3MuCj4gPj4+PiArICoKPiA+Pj4+ICsgKiBYRU5fTkVU SUZfQ1RSTF9UWVBFX0dFVF9HUkVGX01BUFBJTkdfU0laRSBsZXRzIGEgZnJvbnRlbmQKPiA+Pj4+ IHF1ZXJ5IGhvdyBtYW55Cj4gPj4+PiArICogb2YgdGhlc2UgbWFwcGluZ3MgY2FuIGJlIGtlcHQu Cj4gPj4+PiArICoKPiA+Pj4+ICsgKiBFYWNoIGVudHJ5IGluIHRoZQo+ID4+IFhFTl9ORVRJRl9D VFJMX1RZUEVfe0FERCxQVVR9X0dSRUZfTUFQUElORwo+ID4+Pj4gaW5wdXQgdGFibGUgaGFzCj4g Pj4+Cj4gPj4+IEFERCBhbmQgUFVUIGFyZSBzbGlnaHRseSBvZGQgY2hvaWNlcyBmb3Igb3Bwb3Np dGVzLiBOb3JtYWxseSB5b3UnZCBoYXZlCj4gPj4gJ2dldCcgYW5kICdwdXQnIG9yICdhZGQnIGFu ZCAncmVtb3ZlJyAob3IgJ2RlbGV0ZScpLgo+ID4+Pgo+ID4+IFRoYXQncyB0cnVlIC0gSSBwcm9i YWJseSB3YXMgdG9vIG9ic2Vzc2VkIGludG8gZml0dGluZyBpbiAzIGNoYXJhY3RlcnMgdG8KPiBh dm9pZAo+ID4+IHJlYWxpZ25pbmcgdGhlIGVhcmxpZXIgY2h1bmsgbGlzdGluZyBhbGwgY3RybCBt ZXNzYWdlcyB0eXBlcy4gQURELCBERUwKPiBwcm9iYWJseQo+ID4+IGlzIGEgYmV0dGVyIG9uZSAo R0VUIHdvdWxkIHNvdW5kIGEgYml0IHN0cmFuZ2UgZm9yIHRoZXNlIG9wcykuCj4gPgo+ID4gQURE L0RFTCBzb3VuZHMgZmluZSB0byBtZS4KPiA+Cj4gT0suIEluIGNhc2UgeW91IHByZWZlciBhIHNs aWdodGx5IGxlc3MgdmVyYm9zZS9sb25nIG5hbWUgbGlrZQo+IFhFTl9ORVRJRl9DVFJMX1RZUEVf e01BUCxVTk1BUH1fR1JFRiBsZXQgbWUga25vdyA6KQo+IAo+ID4+Cj4gPj4+PiArICogdGhlIGZv bGxvd2luZyBmb3JtYXQ6Cj4gPj4+PiArICoKPiA+Pj4+ICsgKiAgICAwICAgICAxICAgICAyICAg ICAzICAgICA0ICAgICA1ICAgICA2ICAgICA3ICBvY3RldAo+ID4+Pj4gKyAqICstLS0tLSstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKPiA+Pj4+ICsgKiB8IGdyYW50 IHJlZiAgICAgICAgICAgICB8ICBmbGFncyAgICB8ICBwYWRkaW5nICB8Cj4gPj4+PiArICogKy0t LS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKwo+ID4+Pj4gKyAq Cj4gPj4+PiArICogZ3JhbnQgcmVmOiBncmFudCByZWZlcmVuY2UKPiA+Pj4+ICsgKiBmbGFnczog ZmxhZ3MgZGVzY3JpYmluZyB0aGUgY29udHJvbCBvcGVyYXRpb24KPiA+Pj4+ICsgKgo+ID4+Pj4g KyAqLwo+ID4+Pj4gKwo+ID4+Pj4gK3N0cnVjdCB4ZW5fbmV0aWZfZ3JlZl9hbGxvYyB7Cj4gPj4+ Cj4gPj4+IElzICdhbGxvYycgcmVhbGx5IGRlc2lyYWJsZSBoZXJlPyBXaGF0J3MgYmVpbmcgYWxs b2NhdGVkPwo+ID4+Pgo+ID4+IFByb2JhYmx5IG5vdCBteSBiZXN0IGNob2ljZSBvZiBuYW1pbmcs IGJ1dCBnaXZlbiB0aGF0IHdlIGFyZW4ndCBhY3R1YWxseQo+ID4+IG1hcHBpbmcKPiA+PiBvbiB0 aGUgZnJvbnRlbmQgYnV0IHJhdGhlciB0aGUgYmFja2VuZCBoZW5jZSBJIGNob29zZSAnYWxsb2Mn LiBCdXQgYXMgeW91Cj4gaGludAo+ID4+IGl0IG1pZ2h0IGJlIG1pc2xlYWRpbmcuIFdvdWxkICdt YXAnIG9yICdtYXBwaW5nJyBiZSBiZXR0ZXIgY2FuZGlkYXRlcz8KPiA+Cj4gPiBJIHdvdWxkIGp1 c3QgY2FsbCBpdCAneGVuX25ldGlmX2dyZWYnLiBJdCdzIHVzZWQgZm9yIG1hcHBpbmcgYW5kIHVu bWFwcGluZy4KPiA+Cj4gT0ssIGdvdCBpdC4KPiAKPiA+Pj4+ICsgKiAgZGF0YVsyXSA9IHNpemUg b2YgbGlzdCBpbiBlbnRyaWVzCj4gPj4+PiArICoKPiA+Pj4+ICsgKiBSZXNwb25zZToKPiA+Pj4+ ICsgKgo+ID4+Pj4gKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBP UlRFRCAgICAgLQo+IE9wZXJhdGlvbgo+ID4+IG5vdAo+ID4+Pj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQKPiA+Pj4+ICsg KiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSIC0gT3Bl cmF0aW9uCj4gPj4gZmFpbGVkCj4gPj4+PiArICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NU QVRVU19TVUNDRVNTICAgICAgICAgICAtIE9wZXJhdGlvbgo+IHN1Y2Nlc3NmdWwKPiA+Pj4+ICsg Kgo+ID4+Pj4gKyAqIE5PVEU6IEVhY2ggZW50cnkgaW4gdGhlIGlucHV0IHRhYmxlIGhhcyB0aGUg Zm9ybWF0IG91dGxpbmVkCj4gPj4+PiArICogICAgICAgaW4gc3RydWN0IHhlbl9uZXRpZl9ncmVm X2FsbG9jLgo+ID4+Pj4gKyAqCj4gPj4+Cj4gPj4+IFdoYXQgaGFwcGVucyBpZiB0aGUgYmFja2Vu ZCBjYW4gc3VjY2Vzc2Z1bGx5IG1hcCBzb21lIG9mIHRoZSByZWZzLCBidXQKPiA+PiBub3QgYWxs Pwo+ID4+PiBEb2VzIHRoZSB3aG9sZSBvcGVyYXRpb24gZmFpbCAodGhlIGJhY2tlbmQgYmVpbmcg cmVxdWlyZWQgdG8gdW5tYXAKPiA+PiBhbnl0aGluZyB0aGF0Cj4gPj4+IGl0IHN1Y2Nlc3NmdWxs eSBtYXBwZWQpCj4gPj4KPiA+PiBSaWdodCBub3csIEkgYW0gZG9pbmcgYWxsLW9yLW5vdGhpbmcg YXBwcm9hY2ggbWVhbmluZyB0aGUgd2hvbGUKPiBvcGVyYXRpb24KPiA+PiBmYWlscwo+ID4+IChh bmQgYmFja2VuZCB1bm1hcHMgZXZlcnl0aGluZykKPiA+Pgo+ID4+PiBvciB3b3VsZCBpdCBiZSBi ZXR0ZXIgdG8gaGF2ZSBhIHBlci1yZWYgc3RhdHVzIGNvZGUgaW4KPiA+Pj4gdGhlIHN0cnVjdHVy ZSwgYW5kIGFsbG93IHBhcnRpYWwgc3VjY2Vzcz8KPiA+Pj4KPiA+PiBUaGVyZSdzIHR3byBieXRl cyBpbiBwYWRkaW5nLCBJIGNvdWxkIGNyYW0gYSBzdGF0dXMgZmllbGQgdGhlcmUgKDggYnl0ZXMK PiBzaG91bGQKPiA+PiBzdWZmaWNlPykuIERvIHlvdSB0aGluayBpdCdzIHdvcnRoIGl0PyBUaGUg dXNlZnVsbmVzcyBJIHNlZSBpcyBhbGxvd2luZwo+ID4+IHVuYm91bmRlZCBtYXBwaW5ncyBpLmUu IHdpdGhvdXQga25vd2luZyBiZWZvcmUgdGhlIG9wZXJhdGlvbiBob3cKPiBtYW55Cj4gPj4gaXQg aGFzCj4gPj4gbGVmdCAtIGJ1dCB3aGlsZSBpdCB3b3VsZCBiZSBhIG5pY2VyIGludGVyZmFjZSwg aXQgd291bGQgYWRkIG92ZXJoZWFkIG9uIHRoZQo+ID4+IGJhY2tlbmQsIGVpdGhlciAxKSBhIHNl Y29uZCBjb3B5IHRvIHRoZSB0YWJsZSBncmVmIDIpIG9yIGVsc2UgYmFja2VuZAo+IGNvdWxkCj4g Pj4gbWFwCj4gPj4gdGhlIHRhYmxlIGRpcmVjdGx5IGFuZCB1bm1hcCBhZnRlcndhcmRzIFt3aXRo IGNhcmUgdG8gYXZvaWQgdGhpbmdzIGxpa2UKPiBYU0EtCj4gPj4gMTU1XS4KPiA+Cj4gPiBJJ20g ZmluZSB3aXRoIGFuICdhbGwgb3Igbm90aGluZycgc2VtYW50aWMgYXMgbG9uZyBhcyBpdCdzIGNs ZWFybHkgZG9jdW1lbnRlZAo+ID4gc28gdGhhdCBiYWNrZW5kcyBhbmQgZnJvbnRlbmRzIGtub3cg d2hhdCB0byBleHBlY3QuIFlvdSBtYXkgYWxzbyB3YW50IGEKPiA+IGRpc3RpbmN0IGZhaWx1cmUg Y29kZSBmb3IgJ2ZhaWxlZCB0byBtYXAgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUKPiA+IHhlbl9u ZXRpZl9ncmVmcycgdnMuICdmYWlsZWQgdG8gbWFwL3VubWFwIGFuZCBpbmRpdmlkdWFsIHhlbl9u ZXRpZl9ncmVmJy4KPiA+Cj4gT0ssIGdvb2QgcG9pbnQuIEFuZCBnaXZlbiB3aGF0IHlvdSBtZW50 aW9uIHJpZ2h0IGFmdGVyLCB0aGUgbWFwL3VubWFwIG9mCj4gaW5kaXZpZHVhbCBncmVmcyBtaWdo dCBtYWtlIG1vcmUgc2Vuc2UuIEFuZCB0aGlzIHJldHVybiBjb2RlIGlzIHVzZWZ1bCBmb3IKPiBi b3RoCj4gY2FzZXMgc3VjaCB0aGF0IG9uIGluZGl2aWR1YWwgZ3JlZiBjYXNlIHdlIGNvdWxkIGF2 b2lkIHRyYW5zdmVyc2luZyB0aGUgbGlzdCB0bwo+IHNlZSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bGx5 IG1hcHBlZCAoYWxiZWl0IHByb2JhYmx5IGEgYmVuZWZpdCBpcyB0aW55KQo+IAo+ID4+Pj4gKyAq IFhFTl9ORVRJRl9DVFJMX1RZUEVfUFVUX0dSRUZfTUFQUElORwo+ID4+Pj4gKyAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+Pj4gKyAqCj4gPj4+PiArICogVGhpcyBp cyBzZW50IGJ5IHRoZSBmcm9udGVuZCBmb3IgYmFja2VuZCB0byB1bm1hcCBhIGxpc3Qgb2YgZ3Jh bnQKPiA+Pj4+ICsJICogcmVmZXJlbmNlcy4KPiA+Pj4+ICsgKgo+ID4+Pj4gKyAqIFJlcXVlc3Q6 Cj4gPj4+PiArICoKPiA+Pj4+ICsgKiAgdHlwZSAgICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfUFVU X0dSRUZfTUFQUElORwo+ID4+Pj4gKyAqICBkYXRhWzBdID0gcXVldWUgaW5kZXgKPiA+Pj4+ICsg KiAgZGF0YVsxXSA9IGdyYW50IHJlZmVyZW5jZSBvZiBwYWdlIGNvbnRhaW5pbmcgdGhlIG1hcHBp bmcgbGlzdAo+ID4+Pj4gKyAqICAgICAgICAgICAgKGFzc3VtZWQgdG8gc3RhcnQgYXQgYmVnaW5u aW5nIG9mIHBhZ2UpCj4gPj4+PiArICogIGRhdGFbMl0gPSBzaXplIG9mIGxpc3QgaW4gZW50cmll cwo+ID4+Pj4gKyAqCj4gPj4+PiArICogUmVzcG9uc2U6Cj4gPj4+PiArICoKPiA+Pj4+ICsgKiAg c3RhdHVzID0gWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0KPiBPcGVy YXRpb24KPiA+PiBub3QKPiA+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkCj4gPj4+PiArICogICAgICAgICAgIFhFTl9O RVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAtIE9wZXJhdGlvbgo+ID4+IGZhaWxl ZAo+ID4+Pj4gKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAg ICAgICAgLSBPcGVyYXRpb24KPiBzdWNjZXNzZnVsCj4gPj4+PiArICoKPiA+Pj4+ICsgKiBOT1RF OiBFYWNoIGVudHJ5IGluIHRoZSBpbnB1dCB0YWJsZSBoYXMgdGhlIGZvcm1hdCBvdXRsaW5lZCBp bgo+ID4+Pj4gKyAqICAgICAgIHN0cnVjdCB4ZW5fbmV0aWZfZ3JlZl9hbGxvYy4gVGhlIG9ubHkg dmFsaWQgZW50cmllcyBhcmUgdGhvc2UKPiA+Pj4+ICsgKgkgcHJldmlvdXNseSBhZGRlZCB3aXRo IG1lc3NhZ2UKPiA+Pj4+IFhFTl9ORVRJRl9DVFJMX1RZUEVfQUREX0dSRUZfTUFQUElORwo+ID4+ Pj4gKyAqCSBhcmUgdmFsaWQuIEFkZGl0aW9uYWxseSwgZW50cmllcyBpbiBpbmZsaWdodCB3aWxs IGRlbGl2ZXIgYW4gZXJyb3IuCj4gPj4+Cj4gPj4+IENvdWxkIHlvdSBlbGFib3JhdGUgb24gd2hh dCAnaW5mbGlnaHQnIG1lYW5zPwo+ID4+Pgo+ID4+ICdpbmZsaWdodCcgcmVmZXJzIHRvIGdyZWZz IGFscmVhZHkgc3VibWl0dGVkIGluIHJlcXVlc3RzIGJ5IHRoZSBmcm9udGVuZCBmb3IKPiA+PiB3 aGljaCB3ZSBoYXZlbid0IHJlY2VpdmVkIHJlc3BvbnNlcyB5ZXQuIFRoaXMgbWVudGlvbiBpcyB0 byBhdm9pZAo+IG1hbGljaW91cwo+ID4+IGZyb250ZW5kIHBsYXlpbmcgZ2FtZXMgd2l0aCB0aGUg c3RhdGUgb2YgdGhlIGdyZWYuIFdlIGNvdWxkIHVzZSB0aGUKPiBzdGF0dXMKPiA+PiB5b3UKPiA+ PiBzdWdnZXN0ZWQgYWJvdmUgYW5kIGxldCB0aGUgZnJvbnRlbmQga25vdyB0aGF0IHRoZSBncmVm IGlzIGluIHVzZSAtCj4gdGhvdWdoIEkKPiA+PiBhbQo+ID4+IG5vdCBzdXJlIGlmIHRoaXMgaXMg dGhlIHJpZ2h0IGJlaGF2aW91ciBpLmUuIGluIGNhc2Ugd2UgYXJlIGdpdmluZyB0b28gbXVjaAo+ ID4+IGluZm9ybWF0aW9uIGZvciB0aGUgZ3Vlc3QuCj4gPgo+ID4gV2VsbCwgZmFpbHVyZXMgYXJl IG1vcmUgcHJvYmxlbWF0aWMgaGVyZSBzaW5jZSBmb3IgYW4gJ2FsbCBvciBub3RoaW5nJwo+IHNl bWFudGljCj4gPiB5b3UnZCBuZWVkIHRvIGhhdmUgdGhlIGJhY2tlbmQgcmUtbWFwIHdoYXQgaXQg bWF5IGhhdmUgYWxyZWFkeQo+IHVubWFwcGVkLCBhbmQgYQo+ID4gbWFsaWNpb3VzIGZyb250ZW5k IG1heSByZXZva2UgdGhlIGdyYW50IGJlZm9yZSBpdCBjYW4gZG8gc28uCj4gPgo+IE9oIHdlbGws IHRoZSBhbGwtb3Itbm90aGluZyBhcHByb2FjaCBtaWdodCBiZSBiYWQgZm9yIHRoZSB1bm1hcCBj YXNlLiBTbyBJCj4gdGhpbmsKPiBJJ2xsIGdvIHdpdGggeW91ciBzdGF0dXMgY29kZS4gUmVhbGx5 IHdhbm5hIG1ha2Ugc3VyZSBJIGFtIG5vdCBhZGRpbmcgYQo+IHNpZGUtY2hhbm5lbCBmb3IgYXR0 YWNraW5nL2JyZWFraW5nIHVwIHRoZSBiYWNrZW5kLgoKT2ggZGVmaW5pdGVseS4gVGhlIGJhY2tl bmQgbmVlZHMgdG8gYmUgY29kZWQgZGVmZW5zaXZlbHkuIEl0IG5lZWRzIHRvIGJlIGFibGUgdG8g ZmFpbCB0aGUgZnJvbnRlbmRzIHJlcXVlc3RzIGdyYWNlZnVsbHkuCgpDaGVlcnMsCgogIFBhdWwK Cj4gCj4gQ2hlZXJzLAo+IEpvYW8KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=