From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 1/1] cameraif: add ABI for para-virtual camera Date: Mon, 10 Sep 2018 14:49:10 +0300 Message-ID: References: <20180731093142.3828-1-andr2000@gmail.com> <20180731093142.3828-2-andr2000@gmail.com> <73b69e31-d36d-d89f-20d6-d59dbefe395e@xs4all.nl> <7134b3ad-9fcf-0139-41b3-67a3dbc8224d@xs4all.nl> <51f97715-454a-0242-b381-29944d77d5b5@gmail.com> <3c6bb5c8-eeb4-fd09-407a-5a77b29b56c3@xs4all.nl> <2a39c994-118f-a17e-c40a-f5fbbad1cb03@epam.com> <30d7c91a-4515-157b-fc29-90c2e6f0008b@xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fzKgu-0005nW-CT for xen-devel@lists.xenproject.org; Mon, 10 Sep 2018 11:49:16 +0000 Received: by mail-lf1-x12c.google.com with SMTP id l26-v6so17167287lfc.8 for ; Mon, 10 Sep 2018 04:49:14 -0700 (PDT) In-Reply-To: <30d7c91a-4515-157b-fc29-90c2e6f0008b@xs4all.nl> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Hans Verkuil , "Oleksandr_Andrushchenko@epam.com" , xen-devel@lists.xenproject.org, konrad.wilk@oracle.com, jgross@suse.com, boris.ostrovsky@oracle.com, mchehab@kernel.org, linux-media@vger.kernel.org, sakari.ailus@linux.intel.com, koji.matsuoka.xm@renesas.com List-Id: xen-devel@lists.xenproject.org T24gMDkvMTAvMjAxOCAwMjowOSBQTSwgSGFucyBWZXJrdWlsIHdyb3RlOgo+IE9uIDA5LzEwLzIw MTggMTE6NTIgQU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiBPbiAwOS8xMC8y MDE4IDEyOjA0IFBNLCBIYW5zIFZlcmt1aWwgd3JvdGU6Cj4+PiBPbiAwOS8xMC8yMDE4IDEwOjI0 IEFNLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+PiBPbiAwOS8xMC8yMDE4IDEw OjUzIEFNLCBIYW5zIFZlcmt1aWwgd3JvdGU6Cj4+Pj4+IEhpIE9sZWtzYW5kciwKPj4+Pj4KPj4+ Pj4gT24gMDkvMTAvMjAxOCAwOToxNiBBTSwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6 Cj4+PiA8c25pcD4KPj4+Cj4+Pj4+Pj4gSSBzdXNwZWN0IHRoYXQgeW91IGxpa2VseSB3aWxsIHdh bnQgdG8gc3VwcG9ydCBzdWNoIHNvdXJjZXMgZXZlbnR1YWxseSwgc28KPj4+Pj4+PiBpdCBwYXlz IHRvIGRlc2lnbiB0aGlzIHdpdGggdGhhdCBpbiBtaW5kLgo+Pj4+Pj4gQWdhaW4sIEkgdGhpbmsg dGhhdCB0aGlzIGlzIHRoZSBiYWNrZW5kIHRvIGhpZGUgdGhlc2UKPj4+Pj4+IHVzZS1jYXNlcyBm cm9tIHRoZSBmcm9udGVuZC4KPj4+Pj4gSSdtIG5vdCBzdXJlIHlvdSBjYW46IHNheSB5b3UgYXJl IHBsYXlpbmcgYSBibHVyYXkgY29ubmVjdGVkIHRvIHRoZSBzeXN0ZW0KPj4+Pj4gd2l0aCBIRE1J LCB0aGVuIGlmIHRoZXJlIGlzIGEgcmVzb2x1dGlvbiBjaGFuZ2UsIHdoYXQgZG8geW91IGRvPyBZ b3UgY2FuIHRlYXIKPj4+Pj4gZXZlcnl0aGluZyBkb3duIGFuZCBidWlsZCBpdCB1cCBhZ2Fpbiwg b3IgeW91IGNhbiBqdXN0IHRlbGwgZnJvbnRlbmRzIHRoYXQKPj4+Pj4gc29tZXRoaW5nIGNoYW5n ZWQgYW5kIHRoYXQgdGhleSBoYXZlIHRvIGxvb2sgYXQgdGhlIG5ldyB2Y2FtZXJhIGNvbmZpZ3Vy YXRpb24uCj4+Pj4+Cj4+Pj4+IFRoZSBsYXR0ZXIgc2VlbXMgdG8gYmUgbW9yZSBzZW5zaWJsZSB0 byBtZS4gSXQgaXMgcmVhbGx5IG5vdCBtdWNoIHRoYXQgeW91Cj4+Pj4+IG5lZWQgdG8gZG86IGFs bCB5b3UgcmVhbGx5IG5lZWQgaXMgYW4gZXZlbnQgc2lnbmFsbGluZyB0aGF0IHNvbWV0aGluZyBj aGFuZ2VkLgo+Pj4+PiBJbiBWNEwyIHRoYXQncyB0aGUgVjRMMl9FVkVOVF9TT1VSQ0VfQ0hBTkdF Lgo+Pj4+IHdlbGwsIHRoaXMgY29tcGxpY2F0ZXMgdGhpbmdzIGEgbG90IGFzIEknbGwgaGF2ZSB0 bwo+Pj4+IHJlLWFsbG9jYXRlIGJ1ZmZlcnMgLSByaWdodD8KPj4+IFJpZ2h0LiBEaWZmZXJlbnQg cmVzb2x1dGlvbnMgbWVhbnMgZGlmZmVyZW50IHNpemVkIGJ1ZmZlcnMgYW5kIHVzdWFsbHkgbG90 cyBvZgo+Pj4gY2hhbmdlcyB0aHJvdWdob3V0IHRoZSB3aG9sZSB2aWRlbyBwaXBlbGluZSwgd2hp Y2ggaW4gdGhpcyBjYXNlIGNhbiBldmVuCj4+PiBnbyBpbnRvIG11bHRpcGxlIFZNcy4KPj4+Cj4+ PiBPbmUgYWRkaXRpb25hbCB0aGluZyB0byBrZWVwIGluIG1pbmQgZm9yIHRoZSBmdXR1cmU6IFY0 TDJfRVZFTlRfU09VUkNFX0NIQU5HRQo+Pj4gaGFzIGEgZmxhZ3MgZmllbGQgdGhhdCB0ZWxscyB1 c2Vyc3BhY2Ugd2hhdCBjaGFuZ2VkLiBSaWdodCBub3cgdGhhdCBpcyBqdXN0IHRoZQo+Pj4gcmVz b2x1dGlvbiwgYnV0IGluIHRoZSBmdXR1cmUgeW91IGNhbiBleHBlY3QgZmxhZ3MgZm9yIGNhc2Vz IHdoZXJlIGp1c3QgdGhlCj4+PiBjb2xvcnNwYWNlIGluZm9ybWF0aW9uIGNoYW5nZXMsIGJ1dCBu b3QgdGhlIHJlc29sdXRpb24uCj4+Pgo+Pj4gV2hpY2ggcmVtaW5kcyBtZSBvZiB0d28gaW1wb3J0 YW50IG1pc3NpbmcgcGllY2VzIG9mIGluZm9ybWF0aW9uIGluIHlvdXIgcHJvdG9jb2w6Cj4+Pgo+ Pj4gMSkgWW91IG5lZWQgdG8gY29tbXVuaWNhdGUgdGhlIGNvbG9yc3BhY2UgZGF0YToKPj4+Cj4+ PiAtIGNvbG9yc3BhY2UKPj4+IC0geGZlcl9mdW5jCj4+PiAtIHljYmNyX2VuYy9oc3ZfZW5jICh1 bmxpa2VseSB5b3UgZXZlciB3YW50IHRvIHN1cHBvcnQgSFNWIHBpeGVsZm9ybWF0cywgc28gSQo+ Pj4gICAgIHRoaW5rIHlvdSBjYW4gaWdub3JlIGhzdl9lbmMpCj4+PiAtIHF1YW50aXphdGlvbgo+ Pj4KPj4+IFNlZSBodHRwczovL2h2ZXJrdWlsLmhvbWUueHM0YWxsLm5sL3NwZWMvdWFwaS92NGwv cGl4Zm10LXY0bDIuaHRtbCNjLnY0bDJfcGl4X2Zvcm1hdAo+Pj4gYW5kIHRoZSBsaW5rcyB0byB0 aGUgY29sb3JzcGFjZSBzZWN0aW9ucyBpbiB0aGUgVjRMMiBzcGVjIGZvciBkZXRhaWxzKS4KPj4+ Cj4+PiBUaGlzIGluZm9ybWF0aW9uIGlzIHBhcnQgb2YgdGhlIGZvcm1hdCwgaXQgaXMgcmVwb3J0 ZWQgYnkgdGhlIGRyaXZlci4KPj4gSSdsbCB0YWtlIGEgbG9vayBhbmQgdGhpbmsgd2hhdCBjYW4g YmUgcHV0IGFuZCBob3cgaW50byB0aGUgcHJvdG9jb2wsCj4+IGRvIHlvdSB0aGluayBJJ2xsIGhh dmUgdG8gaW1wbGVtZW50IGFsbCB0aGUgYWJvdmUgZm9yCj4+IHRoaXMgc3RhZ2U/Cj4gWWVzLiBX aXRob3V0IGl0IFZNcyB3aWxsIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgaG93IHRvIHJlcHJvZHVj ZSB0aGUgcmlnaHQgY29sb3JzLgo+IFRoZXkgZG9uJ3QgKmhhdmUqIHRvIHVzZSB0aGlzIGluZm9y bWF0aW9uLCBidXQgaXQgc2hvdWxkIGJlIHRoZXJlLiBGb3IgY2FtZXJhcwo+IHRoaXMgaXNuJ3Qg YWxsIHRoYXQgaW1wb3J0YW50LCBmb3IgU0RUVi9IRFRWIHNvdXJjZXMgdGhpcyBiZWNvbWVzIG1v cmUgcmVsZXZhbnQKPiAoZXNwLiB0aGUgcXVhbnRpemF0aW9uIGFuZCB5Y2Jjcl9lbmMgaW5mb3Jt YXRpb24pIGFuZCBmb3Igc291cmNlcyB3aXRoIEJULjIwMjAvSERSCj4gZm9ybWF0cyB0aGlzIGlz IGNyaXRpY2FsLgpvaywgdGhlbiBJJ2xsIGFkZCB0aGUgZm9sbG93aW5nIHRvIHRoZSBzZXRfY29u ZmlnIHJlcXVlc3QvcmVzcG9uc2U6CgogwqDCoMKgIHVpbnQzMl90IGNvbG9yc3BhY2U7CiDCoMKg wqAgdWludDMyX3QgeGZlcl9mdW5jOwogwqDCoMKgIHVpbnQzMl90IHljYmNyX2VuYzsKIMKgwqDC oCB1aW50MzJfdCBxdWFudGl6YXRpb247CgpXaXRoIHRoaXMgcmVzcGVjdCwgSSB3aWxsIG5lZWQg dG8gcHV0IHNvbWUgT1MgYWdub3N0aWMgY29uc3RhbnRzCmludG8gdGhlIHByb3RvY29sLCBzbyBp ZiBiYWNrZW5kIGFuZCBmcm9udGVuZCBhcmUgbm90IExpbnV4L1Y0TDIKYmFzZWQgdGhleSBjYW4g c3RpbGwgdGFsayB0byBlYWNoIG90aGVyLgpJIHNlZSB0aGF0IFY0TDIgYWxyZWFkeSBkZWZpbmVz IGNvbnN0YW50cyBmb3IgdGhlIGFib3ZlOiBbMV0sIFsyXSwgWzNdLCBbNF0uCgpEbyB5b3UgdGhp bmsgSSBjYW4gZGVmaW5lIHRoZSBzYW1lIHJlcGxhY2luZyBWNEwyXyBwcmVmaXgKd2l0aCBYRU5D QU1FUkFfLCBlLmcuIFY0TDJfWEZFUl9GVU5DX1NSR0IgLT4gWEVOQ0FNRVJBX1hGRVJfRlVOQ19T UkdCPwoKRG8gSSBuZWVkIHRvIGRlZmluZSBhbGwgdGhvc2Ugb3IgdGhlcmUgY2FuIGJlIHNvbWUg c3Vic2V0IG9mIHRoZQphYm92ZSBmb3IgbXkgc2ltcGxlciB1c2UtY2FzZT8KCj4gVGhlIHZpdmlk IGRyaXZlciBjYW4gYWN0dWFsbHkgcmVwcm9kdWNlIGFsbCBjb21iaW5hdGlvbnMsIHNvIHRoYXQn cyBhIGdvb2QgZHJpdmVyCj4gdG8gdGVzdCB0aGlzIHdpdGguCllvdSBtZWFuIEkgY2FuIHVzZSBp dCBvbiBiYWNrZW5kIHNpZGUgaW5zdGVhZCBvZiByZWFsIEhXIGNhbWVyYSBhbmQKdGVzdCBhbGwg dGhlIGNvbmZpZ3VyYXRpb25zIHBvc3NpYmxlL3Rob3NlIG9mIGludGVyZXN0Pwo+Pj4gMikgSWYg eW91IHN1cHBvcnQgaW50ZXJsYWNlZCBmb3JtYXRzIGFuZCBWNEwyX0ZJRUxEX0FMVEVSTkFURSAo aS5lLgo+Pj4gICAgICBlYWNoIGJ1ZmZlciBjb250YWlucyBhIHNpbmdsZSBmaWVsZCksIHRoZW4g eW91IG5lZWQgdG8gYmUgYWJsZSB0byB0ZWxsCj4+PiAgICAgIHVzZXJzcGFjZSB3aGV0aGVyIHRo ZSBkZXF1ZXVlZCBidWZmZXIgY29udGFpbnMgYSB0b3Agb3IgYm90dG9tIGZpZWxkLgo+PiBJIHRo aW5rIGF0IHRoZSBmaXJzdCBzdGFnZSB3ZSBjYW4gYXNzdW1lIHRoYXQgaW50ZXJsYWNlZAo+PiBm b3JtYXRzIGFyZSBub3Qgc3VwcG9ydGVkIGFuZCBhZGQgc3VjaCBzdXBwb3J0IGxhdGVyIGlmIG5l ZWQgYmUuCj4gRnJhbmtseSBJIGNvbnNpZGVyIHRoYXQgYSBzbWFydCBtb3ZlIDotKSBJbnRlcmxh Y2VkIGZvcm1hdHMgYXJlIGF3ZnVsLi4uCj4KPiBZb3UganVzdCBoYXZlIHRvIGtlZXAgdGhpcyBp biBtaW5kIGlmIHlvdSBldmVyIGhhdmUgdG8gYWRkIHN1cHBvcnQgZm9yIHRoaXMuCkFncmVlZAo+ Cj4+PiBBbHNvLCB3aGF0IHRvIGRvIHdpdGggZHJvcHBlZCBmcmFtZXMvZmllbGRzOiBWNEwyIGhh cyBhIHNlcXVlbmNlIGNvdW50ZXIgYW5kCj4+PiB0aW1lc3RhbXAgdGhhdCBjYW4gaGVscCBkZXRl Y3RpbmcgdGhhdC4gWW91IHByb2JhYmx5IG5lZWQgc29tZXRoaW5nIHNpbWlsYXIuCj4+IE9rLCB0 aGlzIGNhbiBiZSByZXBvcnRlZCBhcyBwYXJ0IG9mIFhFTkNBTUVSQV9FVlRfRlJBTUVfQVZBSUwg ZXZlbnQKPj4+PiBCdXQgYW55d2F5cywgSSBjYW4gYWRkCj4+Pj4gI2RlZmluZSBYRU5DQU1FUkFf RVZUX0NGR19DSEFOR0UgICAgICAgMHgwMQo+Pj4+IGluIHRoZSBwcm90b2NvbCwgc28gd2UgY2Fu IGFkZHJlc3MgdGhpcyB1c2UtY2FzZQo+Pj4gPHNuaXA+Cj4+Pgo+Pj4+Pj4gMS4gc2V0IGZvcm1h dCBjb21tYW5kOgo+Pj4+Pj4gICAgICAqIHBpeGVsX2Zvcm1hdCAtIHVpbnQzMl90LCBwaXhlbCBm b3JtYXQgdG8gYmUgdXNlZCwgRk9VUkNDIGNvZGUuCj4+Pj4+PiAgICAgICogd2lkdGggLSB1aW50 MzJfdCwgd2lkdGggaW4gcGl4ZWxzLgo+Pj4+Pj4gICAgICAqIGhlaWdodCAtIHVpbnQzMl90LCBo ZWlnaHQgaW4gcGl4ZWxzLgo+Pj4+Pj4KPj4+Pj4+IDIuIFNldCBmcmFtZSByYXRlIGNvbW1hbmQ6 Cj4+Pj4+PiAgICAgICsgKiBmcmFtZV9yYXRlX251bWVyIC0gdWludDMyX3QsIG51bWVyYXRvciBv ZiB0aGUgZnJhbWUgcmF0ZS4KPj4+Pj4+ICAgICAgKyAqIGZyYW1lX3JhdGVfZGVub20gLSB1aW50 MzJfdCwgZGVub21pbmF0b3Igb2YgdGhlIGZyYW1lIHJhdGUuCj4+Pj4+Pgo+Pj4+Pj4gMy4gU2V0 L3JlcXVlc3QgbnVtIGJ1ZnM6Cj4+Pj4+PiAgICAgICogbnVtX2J1ZnMgLSB1aW50OF90LCBkZXNp cmVkIG51bWJlciBvZiBidWZmZXJzIHRvIGJlIHVzZWQuCj4+Pj4+IEkgbGlrZSB0aGlzIG11Y2gg YmV0dGVyLiAxKzIgY291bGQgYmUgY29tYmluZWQsIGJ1dCAzIHNob3VsZCBkZWZpbml0ZWx5IHJl bWFpbgo+Pj4+PiBzZXBhcmF0ZS4KPj4+PiBvaywgdGhlbiAxKzIgY29tYmluZWQgKyAzIHNlcGFy YXRlLgo+Pj4+IERvIHlvdSB0aGluayB3ZSBjYW4gc3RpbGwgbmFtZSAxKzIgYXMgInNldF9mb3Jt YXQiIG9yICJzZXRfY29uZmlnIgo+Pj4+IHdpbGwgZml0IGJldHRlcj8KPj4+IHNldF9mb3JtYXQg aXMgY2xvc2VyIHRvIFNfRk1UIGFzIHVzZWQgaW4gVjRMMiwgc28gSSBoYXZlIGEgc2xpZ2h0IHBy ZWZlcmVuY2UKPj4+IGZvciB0aGF0LCBidXQgaXQgaXMgcmVhbGx5IHVwIHRvIHlvdS4KPj4gSSds bCBwcm9iYWJseSBzdGljayB0byBTRVRfQ09ORklHIGhlcmUKPj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+ ICsgKiBTZWUgcmVzcG9uc2UgZm9ybWF0IGZvciB0aGlzIHJlcXVlc3QuCj4+Pj4+Pj4+ICsgKgo+ Pj4+Pj4+PiArICogTm90ZXM6Cj4+Pj4+Pj4+ICsgKiAgLSBmcm9udGVuZCBtdXN0IGNoZWNrIHRo ZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlIGluIG9yZGVyIHRvIHNlZQo+Pj4+Pj4+PiArICogICAg aWYgdGhlIHZhbHVlcyByZXBvcnRlZCBiYWNrIGJ5IHRoZSBiYWNrZW5kIGRvIG1hdGNoIHRoZSBk ZXNpcmVkIG9uZXMKPj4+Pj4+Pj4gKyAqICAgIGFuZCBjYW4gYmUgYWNjZXB0ZWQuCj4+Pj4+Pj4+ ICsgKiAgLSBmcm9udGVuZCBtYXkgc2VuZCBtdWx0aXBsZSBYRU5DQU1FUkFfT1BfU0VUX0NPTkZJ RyByZXF1ZXN0cyBiZWZvcmUKPj4+Pj4+Pj4gKyAqICAgIHNlbmRpbmcgWEVOQ0FNRVJBX09QX1NU UkVBTV9TVEFSVCByZXF1ZXN0IHRvIHVwZGF0ZSBvciB0dW5lIHRoZQo+Pj4+Pj4+PiArICogICAg Y29uZmlndXJhdGlvbi4KPj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+PiArc3RydWN0IHhlbmNhbWVyYV9j b25maWcgewo+Pj4+Pj4+PiArICAgIHVpbnQzMl90IHBpeGVsX2Zvcm1hdDsKPj4+Pj4+Pj4gKyAg ICB1aW50MzJfdCB3aWR0aDsKPj4+Pj4+Pj4gKyAgICB1aW50MzJfdCBoZWlnaHQ7Cj4+Pj4+Pj4+ ICsgICAgdWludDMyX3QgZnJhbWVfcmF0ZV9ub207Cj4+Pj4+Pj4+ICsgICAgdWludDMyX3QgZnJh bWVfcmF0ZV9kZW5vbTsKPj4+Pj4+Pj4gKyAgICB1aW50OF90IG51bV9idWZzOwo+Pj4+Pj4+PiAr fTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArLyoKPj4+Pj4+Pj4gKyAqIFJlcXVlc3QgYnVmZmVyIGRl dGFpbHMgLSByZXF1ZXN0IGNhbWVyYSBidWZmZXIncyBtZW1vcnkgbGF5b3V0Lgo+Pj4+Pj4+PiAr ICogZGV0YWlsZWQgZGVzY3JpcHRpb246Cj4+Pj4+Pj4+ICsgKiAgICAgICAgIDAgICAgICAgICAg ICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4+ Pj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICBpZCAg ICAgICAgICAgICAgICB8X0dFVF9CVUZfREVUQUlMU3wgICByZXNlcnZlZCAgICAgfCA0Cj4+Pj4+ Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4+Pj4+Pj4+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+Pj4+PiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4+Pj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKPj4+Pj4+Pj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+Pj4+Pj4+PiArICoKPj4+Pj4+Pj4gKyAqIFNlZSByZXNwb25zZSBmb3JtYXQg Zm9yIHRoaXMgcmVxdWVzdC4KPj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+PiArICog UmVxdWVzdCBjYW1lcmEgYnVmZmVyIGNyZWF0aW9uOgo+Pj4+Pj4+PiArICogICAgICAgICAwICAg ICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBv Y3RldAo+Pj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Pj4+ICsgKiB8ICAgICAgICAgICAg ICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfQlVGX0NSRUFURSB8ICAgcmVzZXJ2ZWQgICAgIHwg NAo+Pj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAo+ Pj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Pj4+ICsgKiB8ICAgICAgaW5kZXggICAgIHwg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwgMTIKPj4+ Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdyZWZfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2Cj4+Pj4+ Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAo+Pj4+Pj4+ PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Pj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+Pj4+Pj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKwo+Pj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4+Pj4+Pj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+ICsgKiBBbiBhdHRlbXB0IHRvIGNyZWF0 ZSBtdWx0aXBsZSBidWZmZXJzIHdpdGggdGhlIHNhbWUgaW5kZXggaXMgYW4gZXJyb3IuCj4+Pj4+ Pj4+ICsgKiBpbmRleCBjYW4gYmUgcmUtdXNlZCBhZnRlciBkZXN0cm95aW5nIHRoZSBjb3JyZXNw b25kaW5nIGNhbWVyYSBidWZmZXIuCj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+PiArICogaW5kZXggLSB1 aW50OF90LCBpbmRleCBvZiB0aGUgYnVmZmVyIHRvIGJlIGNyZWF0ZWQuCj4+Pj4+Pj4+ICsgKiBn cmVmX2RpcmVjdG9yeSAtIGdyYW50X3JlZl90LCBhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3Qgc2hh cmVkIHBhZ2UKPj4+Pj4+Pj4gKyAqICAgZGVzY3JpYmluZyBzaGFyZWQgYnVmZmVyIHJlZmVyZW5j ZXMuIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgaXMgZXF1YWwgdG8KPj4+Pj4+Pj4gKyAqICAgWEVO Q0FNRVJBX09QX0dFVF9CVUZfREVUQUlMUy5zaXplIHJlc3BvbnNlLiBBdCBsZWFzdCBvbmUgcGFn ZSBleGlzdHMuIElmCj4+Pj4+Pj4+ICsgKiAgIHNoYXJlZCBidWZmZXIgc2l6ZSBleGNlZWRzIHdo YXQgY2FuIGJlIGFkZHJlc3NlZCBieSB0aGlzIHNpbmdsZSBwYWdlLAo+Pj4+Pj4+PiArICogICB0 aGVuIHJlZmVyZW5jZSB0byB0aGUgbmV4dCBzaGFyZWQgcGFnZSBtdXN0IGJlIHN1cHBsaWVkIChz ZWUKPj4+Pj4+Pj4gKyAqICAgZ3JlZl9kaXJfbmV4dF9wYWdlIGJlbG93KS4KPj4+Pj4+PiBJdCBt aWdodCBiZSBiZXR0ZXIgdG8gYWxsb2NhdGUgYWxsIGJ1ZmZlcnMgaW4gb25lIGdvLCBpLmUuIHdo YXQgVklESU9DX1JFUUJVRlMKPj4+Pj4+PiBkb2VzLgo+Pj4+Pj4gV2VsbCwgSSBzdGlsbCB0aGlu ayBpdCBpcyBiZXR0ZXIgdG8gaGF2ZSBhIHBlciBidWZmZXIgaW50ZXJmYWNlCj4+Pj4+PiBpbiB0 aGUgcHJvdG9jb2wgYXMgaXQgaXMgZG9uZSBmb3Igb3RoZXIgWGVuIHZpcnR1YWwgZGV2aWNlcy4K Pj4+Pj4+IFNvLCBJJ2xsIGtlZXAgdGhpcyBhcyBpcyBmb3Igbm93OiBWSURJT0NfUkVRQlVGUyBj YW4gc3RpbGwgZG8KPj4+Pj4+IHdoYXQgaXQgZG9lcyBpbnRlcm5hbGx5IGluIHRoZSBmcm9udGVu ZCBkcml2ZXIKPj4+Pj4gSSBtYXkgaGF2ZSBtaXN1bmRlcnN0b29kIHRoZSBvcmlnaW5hbCBBUEku IFRoZSBuZXdseSBwcm9wb3NlZCBYRU5DQU1FUkFfT1BfQlVGX1JFUVVFU1QKPj4+Pj4gbWFwcyB0 byBSRVFCVUZTLCByaWdodD8gQW5kIHRoZW4gQlVGX0NSRUFURS9ERVNUUk9ZIGp1c3Qgc2V0IHVw IHRoZSBzaGFyZWQgYnVmZmVyCj4+Pj4+IG1hcHBpbmdzIGZvciB0aGUgYnVmZmVycyBjcmVhdGVk IGJ5IFJFUUJVRlMuIElmIHRoYXQncyB0aGUgc2VxdWVuY2UsIHRoZW4gaXQgbWFrZXMKPj4+Pj4g c2Vuc2UuIEknbSBub3Qgc3VyZSBhYm91dCB0aGUgbmFtaW5nLgo+Pj4+Pgo+Pj4+PiBZb3UgbWln aHQgd2FudCB0byBtYWtlIGl0IGNsZWFyIHRoYXQgWEVOQ0FNRVJBX09QX0JVRl9SRVFVRVNUIGFs bG9jYXRlcyB0aGUgYnVmZmVycwo+Pj4+PiBvbiB0aGUgYmFja2VuZCwgYW5kIHNvIGNhbiBmYWls LiBBbHNvLCB0aGUgYWN0dWFsIG51bWJlciBvZiBhbGxvY2F0ZWQgYnVmZmVycyBpbgo+Pj4+PiBj YXNlIG9mIHN1Y2Nlc3MgY2FuIGJlIG1vcmUgb3IgbGVzcyB0aGFuIHdoYXQgd2FzIHJlcXVlc3Rl ZC4KPj4+PiBUaGUgYnVmZmVycyBjYW4gYmUgYWxsb2NhdGVkIGFuZCBzaGFyZWQgYnkgZWl0aGVy IGJhY2tlbmQgb3IgZnJvbnRlbmQ6IHNlZQo+Pj4+ICJiZS1hbGxvYyIgY29uZmlndXJhdGlvbiBv cHRpb24gdGVsbGluZyB3aGljaCBkb21haW4gKFZNKSBzaGFyZXMKPj4+PiB0aGUgWGVuIGdyYW50 IHJlZmVyZW5jZXMgdG8gdGhlIHBhZ2VzIG9mIHRoZSBidWZmZXI6IGVpdGhlciBmcm9udGVuZAo+ Pj4+IG9yIGJhY2tlbmQuCj4+PiBJZiB5b3Ugd2FudCB0byBkbyB6ZXJvLWNvcHkgdmlkZW8gY2Fw dHVyZSwKPj4gdGhpcyBpcyB0aGUgZ29hbAo+Pj4gICAgdGhlbiB5b3UgbmVlZCB0byBrbm93IHdo aWNoCj4+PiBkZXZpY2UgaW4geW91ciB2aWRlbyBwaXBlbGluZSAod2hpY2ggbm93IGNvdmVycyBi b3RoIGFjdHVhbCBoYXJkd2FyZSBhbmQKPj4+IG11bHRpcGxlIFZNcykgaGFzIHRoZSBzdHJpY3Rl c3QgbWVtb3J5IGxheW91dCByZXF1aXJlbWVudHMuIE9mdGVuIHRoZQo+Pj4gdmlkZW8gSFcgcmVx dWlyZXMgY29udGlndW91cyBwaHlzaWNhbCBtZW1vcnkgZm9yIHRoZSBidWZmZXJzLCB3aGljaCBt ZWFucwo+Pj4geW91IGNhbid0IGp1c3QgZ2l2ZSBpdCBhIHBpZWNlIG9mIG5vbi1jb250aWcgbWVt b3J5IGFsbG9jYXRlZCBlbHNld2hlcmUuCj4+IFdlIGhhdmUgYWxyZWFkeSBpbXBsZW1lbnRlZCB6 ZXJvIGNvcHlpbmcgdXNlLWNhc2VzIGZvcgo+PiB2aXJ0dWFsIGRpc3BsYXksIHBsZWFzZSBzZWUg WzFdIGFuZCBbMl0gd2hpY2ggYXJlIGRtYS1idWYKPj4gYmFzZWQgd2hpY2ggY2FuIGNvcGUgd2l0 aCByZWFsIEhXIHJlc3RyaWN0aW9ucyB5b3UgbWVudGlvbi4KPj4gQW5kIGluIHRoYXQgY2FzZSB3 ZSBjYW4gaW1wbGVtZW50IHplcm8tY29weWluZyBib3RoIHdheXMsCj4+IGUuZy4gd2hlbiB0aGUg WGVuIGdyYW50IHJlZmVyZW5jZXMgYXJlIHNoYXJlZCBieSBlaXRoZXIKPj4gYmFja2VuZCBvciBm cm9udGVuZC4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBjYW1lcmEgdXNlLWNhc2VzOgo+PiBhIHNp bmdsZSBidWZmZXIgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggbXVsdGlwbGUgZnJvbnRlbmRzLAo+ PiBzbyB6ZXJvLWNvcHlpbmcgaXMgb25seSBwb3NzaWJsZSB3aGVuIGJhY2tlbmQgYWxsb2NhdGVz IHRoZSByZWZlcmVuY2VzCj4+IGFuZCBzaGFyZXMgdGhvc2Ugd2l0aCBmcm9udGVuZHMuIFRoZSB3 YXkgd2hlbiBmcm9udGVuZCBhbGxvY2F0ZXMKPj4gdGhlIGJ1ZmZlcnMgYW5kIHN0aWxsIHdlIGNh biBpbXBsZW1lbnQgemVyby1jb3B5aW5nIGlzIHdoZW4KPj4gdGhlcmUgaXMgYSBzaW5nbGUgZnJv bnRlbmQgaW4gdGhlIHN5c3RlbSwgb3RoZXJ3aXNlIHdlCj4+IG5lZWQgdG8gY29weSB0aGUgaW1h Z2VzIGZyb20gYmFja2VuZCdzIGJ1ZmZlcnMgaW50byBmcm9udGVuZCdzCj4+IG9uZXMuCj4gT0su IFRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCB5b3UgdGhvdWdodCBhYm91dCB0aGlzIDotKQpT dXJlLCBjb3B5aW5nIGtpbGxzIHBlcmZvcm1hbmNlLi4uCj4KPj4+IEluIHByYWN0aWNlIHlvdSBo YXZlIHR3byBwb3NzaWJsZSBtZW1vcnkgbW9kZWxzIHlvdSBjYW4gdXNlIHdpdGggVjRMMiBkcml2 ZXJzOgo+Pj4gTU1BUCAoaS5lLiBhbGxvY2F0ZWQgYnkgdGhlIGRyaXZlciBhbmQgdGhlIGJ1ZmZl cnMgY2FuLCBpZiBuZWVkZWQsIGJlIGV4cG9ydGVkCj4+PiBhcyBkbWFidWYgaGFuZGxlcyB3aXRo IFZJRElPQ19FWFBCVUYpLCBvciBETUFCVUYgd2hlcmUgYnVmZmVycyBhcmUgYWxsb2NhdGVkCj4+ PiBlbHNld2hlcmUgYW5kIGltcG9ydGVkIHRvIFY0TDIsIHdoaWNoIG1heSBmYWlsIGlmIGl0IGRv ZXNuJ3QgbWF0Y2ggdGhlIEhXCj4+PiByZXF1aXJlbWVudHMuCj4+IEZvciB0aGUgZnJvbnRlbmQg aXQgaXMgcG9zc2libGUgdG8gd29yayB3aXRoIGJvdGggTU1BUC9ETUFCVUYKPj4gYW5kIHRoZSBy ZXN0IGlzIG9uIHRoZSBiYWNrZW5kJ3Mgc2lkZSAtIHRoaXMgd2FzIHByb3ZlbiBieQo+PiB2aXJ0 dWFsIGRpc3BsYXkgaW1wbGVtZW50YXRpb24sIHNvIEkgc2VlIG5vIHByb2JsZW0gaGVyZQo+PiBm b3IgdmlydHVhbCBjYW1lcmEuCj4+Pj4gU28sIEkgd2FzIG1vcmUgdGhpbmtpbmcgdGhhdCBpbiBj YXNlIG9mIFY0TDIgYmFzZWQgZnJvbnRlbmQgZHJpdmVyOgo+Pj4+IDEuIEZyb250ZW5kIHNlcnZl cyBSRVFCVUZTIGlvY3RsIGFuZCBhc2tzIHRoZSBiYWNrZW5kIHdpdGgKPj4+PiBYRU5DQU1FUkFf T1BfQlVGX1JFUVVFU1QKPj4+PiBpZiBpdCBjYW4gaGFuZGxlIHRoYXQgbWFueSBidWZmZXJzIGFu ZCBnZXRzIG51bWJlciBvZiBidWZmZXJzIHRvIGJlIHVzZWQKPj4+PiBhbmQgYnVmZmVyIHN0cnVj dHVyZSAobnVtYmVyIG9mIHBsYW5lcywgc2l6ZXMsIG9mZnNldHMgZXRjLikgYXMgdGhlIHJlcGx5 Cj4+Pj4gdG8gdGhhdCByZXF1ZXN0Cj4+Pj4gMi4gRnJvbnRlbmQgY3JlYXRlcyBuIGJ1ZmZlcnMg d2l0aCBYRU5DQU1FUkFfT1BfQlVGX0NSRUFURQo+Pj4+IDMuIEZyb250ZW5kIHJldHVybnMgZnJv bSBSRVFCVUZTIGlvY3RsIHdpdGggYWN0dWFsIG51bWJlciBvZiBidWZmZXJzCj4+Pj4gYWxsb2Nh dGVkCj4gUmVnYXJkcywKPgo+IAlIYW5zClRoYW5rIHlvdSwKT2xla3NhbmRyCgpbMV0gCmh0dHBz Oi8vaHZlcmt1aWwuaG9tZS54czRhbGwubmwvc3BlYy91YXBpL3Y0bC9jb2xvcnNwYWNlcy1kZWZz Lmh0bWwjYy52NGwyX2NvbG9yc3BhY2UKWzJdIApodHRwczovL2h2ZXJrdWlsLmhvbWUueHM0YWxs Lm5sL3NwZWMvdWFwaS92NGwvY29sb3JzcGFjZXMtZGVmcy5odG1sI2MudjRsMl95Y2Jjcl9lbmNv ZGluZwpbM10gCmh0dHBzOi8vaHZlcmt1aWwuaG9tZS54czRhbGwubmwvc3BlYy91YXBpL3Y0bC9j b2xvcnNwYWNlcy1kZWZzLmh0bWwjYy52NGwyX3F1YW50aXphdGlvbgpbNF0gCmh0dHBzOi8vaHZl cmt1aWwuaG9tZS54czRhbGwubmwvc3BlYy91YXBpL3Y0bC9jb2xvcnNwYWNlcy1kZWZzLmh0bWwj Yy52NGwyX3hmZXJfZnVuYwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1k ZXZlbA==