From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [Xen-devel][PATCH 0/2] sndif: add explicit back and front synchronization Date: Tue, 06 Mar 2018 13:52:23 +0100 Message-ID: References: <1517819100-1029-1-git-send-email-andr2000@gmail.com> <1531a22b-5df6-a66e-72ee-775538aeff4d@gmail.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id E36512670A1 for ; Tue, 6 Mar 2018 13:52:24 +0100 (CET) In-Reply-To: <1531a22b-5df6-a66e-72ee-775538aeff4d@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Oleksandr Andrushchenko Cc: xen-devel@lists.xenproject.org, alsa-devel@alsa-project.org, Oleksandr Andrushchenko List-Id: alsa-devel@alsa-project.org T24gVHVlLCAwNiBNYXIgMjAxOCAxMzowNToxNiArMDEwMCwKT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gd3JvdGU6Cj4gCj4gT24gMDMvMDYvMjAxOCAwMTozMiBQTSwgVGFrYXNoaSBJd2FpIHdyb3Rl Ogo+ID4gT24gVHVlLCAwNiBNYXIgMjAxOCAxMjoyNTowNyArMDEwMCwKPiA+IE9sZWtzYW5kciBB bmRydXNoY2hlbmtvIHdyb3RlOgo+ID4+IE9uIDAzLzA2LzIwMTggMTI6NTIgUE0sIFRha2FzaGkg SXdhaSB3cm90ZToKPiA+Pj4gT24gTW9uLCAwNSBGZWIgMjAxOCAwOToyNDo1OCArMDEwMCwKPiA+ Pj4gT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4gPj4+PiBGcm9tOiBPbGVrc2FuZHIg QW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4gPj4+Pgo+ ID4+Pj4gSGksIGFsbCEKPiA+Pj4+Cj4gPj4+PiBGb3Jld29yZAo+ID4+Pj4gPT09PT09PT0KPiA+ Pj4+Cj4gPj4+PiBUaGlzIGNoYW5nZSBpcyBhaW1lZCB0byBhZGQgc3VwcG9ydCBmb3IgZXhwbGlj aXQgYmFjayBhbmQgZnJvbnQKPiA+Pj4+IHN5bmNocm9uaXphdGlvbiBkdXJpbmcgcGxheWJhY2sg YW5kIGNhcHR1cmUgaW4gcmVzcG9uc2UgdG8gY29tbWVudHMKPiA+Pj4+IHJhaXNlZCBkdXJpbmcg dXBzdHJlYW0gYXR0ZW1wdCBvZiB0aGUgcGFyYS12aXJ0dWFsaXplZCBzb3VuZCBmcm9udGVuZAo+ ID4+Pj4gZHJpdmVyIGZvciBYZW4gWzFdLCBbMl0gYW5kIGdhdGhlciBvcGluaW9ucyBmcm9tIHRo ZSByZWxldmFudCBjb21tdW5pdGllcwo+ID4+Pj4gKEFMU0EsIFhlbikgb24gdGhlIGNoYW5nZS4K PiA+Pj4+Cj4gPj4+PiBUaGUgcmVsZXZhbnQgYmFja2VuZCBpcyBpbXBsZW1lbnRlZCBhcyBhIHVz ZXItc3BhY2UgYXBwbGljYXRpb24gWzNdCj4gPj4+PiBhbmQgdXNlcyBhY2NvbXBhbnlpbmcgaGVs cGVyIGxpYnJhcnkgWzRdLgo+ID4+Pj4KPiA+Pj4+IEJvdGggZnJvbnRlbmQgZHJpdmVyIGFuZCBi YWNrZW5kIHdlcmUgdGVzdGVkIG9uIHJlYWwgSFcgcnVubmluZyBYZW4gaHlwZXJ2aXNvcgo+ID4+ Pj4gKFJlbmVzYXMgUi1DYXIgQVJNIGJhc2VkIEgzL00zIGJvYXJkcywgeDg2KSB0byBtYWtlIHN1 cmUgdGhlIHByb3Bvc2VkCj4gPj4+PiBzb2x1dGlvbiBkb2VzIHdvcmsuCj4gPj4+Pgo+ID4+Pj4g UmF0aW9uYWxlCj4gPj4+PiA9PT09PT09PT0KPiA+Pj4+Cj4gPj4+PiBEdXJpbmcgdGhlIGZpcnN0 IGF0dGVtcHQgdG8gdXBzdHJlYW0gdGhlIExpbnV4IGZyb250IGRyaXZlciBbNV0gbnVtYmVyCj4g Pj4+PiBvZiBjb21tZW50cyBhbmQgY29uY2VybnMgd2VyZSByYWlzZWQsIG9uZSBvZiB0aGUgYmln Z2VzdCBmbGF3cyBpbiB0aGUKPiA+Pj4+IGRlc2lnbiB3ZXJlIHF1ZXN0aW9uZWQgYnkgYm90aCBD bGVtZW5zIExhZGlzY2ggWzZdIGFuZAo+ID4+Pj4gVGFrYXNoaSBTYWthbW90byBbN106IHRoZSBh YnNlbmNlIG9mIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIGZyb250ZW5kCj4gPj4+PiBhbmQgYmFj a2VuZCBkdXJpbmcgY2FwdHVyZS9wbGF5YmFjay4gVHdvIG9wdGlvbnMgd2VyZSBkaXNjdXNzZWQ6 Cj4gPj4+Pgo+ID4+Pj4g4oCcSW4gZGVzaWduIG9mIEFMU0EgUENNIGNvcmUsIGRyaXZlcnMgYXJl IGV4cGVjdGVkIHRvIHN5bmNocm9uaXplIHRvCj4gPj4+PiBhY3R1YWwgaGFyZHdhcmVzIGZvciBz ZW1pLXJlYWx0aW1lIGRhdGEgdHJhbnNtaXNzaW9uLiBUaGUKPiA+Pj4+IHN5bmNocm9uaXphdGlv biBpcyBkb25lIGJ5IHR3byBwb2ludHM6Cj4gPj4+PiAxKSBJbnRlcnJ1cHRzIHRvIHJlc3BvbmQg ZXZlbnRzIGZyb20gYWN0dWFsIGhhcmR3YXJlcy4KPiA+Pj4+IDIpIFBvc2l0aW9ucyBvZiBhY3R1 YWwgZGF0YSB0cmFuc21pc3Npb24gaW4gYW55IHNlcmlhbCBzb3VuZCBpbnRlcmZhY2VzCj4gPj4+ PiAgICAgICBvZiBhY3R1YWwgaGFyZHdhcmVzLgo+ID4+Pj4g4oCcCj4gPj4+Pgo+ID4+Pj4gYW5k IGZpbmFsbHkgYSBjaGFuZ2UgdG8gdGhlIGV4aXN0aW5nIHByb3RvY29sIHdhcyBzdWdnZXN0ZWQ6 Cj4gPj4+Pgo+ID4+Pj4g4oCcSW4gJ2luY2x1ZGUveGVuL2ludGVyZmFjZS9pby9zbmRpZi5oJywg dGhlcmUncyBubyBmdW5jdGlvbmFsaXRpZXMgSQo+ID4+Pj4gZGVzY3JpYmVkIHRoZSBhYm92ZToK PiA+Pj4+IDEuIG5vdGlmaWNhdGlvbnMgZnJvbSBEb21VIHRvIERvbTAgYWJvdXQgdGhlIHNpemUg b2YgcGVyaW9kIGZvcgo+ID4+Pj4gICAgICAgaW50ZXJydXB0cyBmcm9tIGFjdHVhbCBoYXJkd2Fy ZXMuIE9yIG5vIHdheSBmcm9tIERvbTAgdG8gRG9tVSBhYm91dAo+ID4+Pj4gICAgICAgdGhlIGNv bmZpZ3VyZWQgc2l6ZSBvZiB0aGUgcGVyaW9kLgo+ID4+Pj4gMi4gbm90aWZpY2F0aW9ucyBvZiB0 aGUgaW50ZXJydXB0cyBmcm9tIGFjdHVhbCBoYXJkd2FyZXMgdG8gRG9tVS7igJ0KPiA+Pj4+Cj4g Pj4+PiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgY2hhbmdlIHRvIHRoZSBzbmRpZiBwcm90b2Nv bCBhbmQgYWxsb3dzIHJlbW92aW5nCj4gPj4+PiBwZXJpb2QgZW11bGF0aW9uOgo+ID4+Pj4gMS4g SW50cm9kdWNlZCBhIG5ldyBldmVudCBjaGFubmVsIGZyb20gYmFjayB0byBmcm9udAo+ID4+Pj4g Mi4gTmV3IGV2ZW50IHdpdGggbnVtYmVyIG9mIGJ5dGVzIHBsYXllZC9jYXB0dXJlZCAoWEVOU05E X0VWVF9DVVJfUE9TLAo+ID4+Pj4gICAgICB0byBiZSB1c2VkIGZvciBzZW5kaW5nIHNuZF9wY21f cGVyaW9kX2VsYXBzZWQgYXQgZnJvbnRlbmQgKGluIExpbnV4Cj4gPj4+PiAgICAgIGltcGxlbWVu dGF0aW9uKS4gU2VudCBpbiBieXRlcywgbm90IGZyYW1lcyB0byBtYWtlIHRoZSBwcm90b2NvbAo+ ID4+Pj4gICAgICBnZW5lcmljIGFuZCBjb25zaXN0ZW50KQo+ID4+Pj4gMy4gTmV3IHJlcXVlc3Qg Zm9yIHBsYXliYWNrL2NhcHR1cmUgY29udHJvbCAoWEVOU05EX09QX1RSSUdHRVIpIHdpdGgKPiA+ Pj4+ICAgICAgc3RhcnQvcGF1c2Uvc3RvcC9yZXN1bWUgc3ViLW9wcwo+ID4+Pj4gNC4gUGxheWJh Y2svY2FwdHVyZSBidWZmZXIgc2l6ZSBpcyBzZXQgb24gdGhlIGJhY2tlbmQgc2lkZSB2aWEKPiA+ Pj4+ICAgICAgWEVOU05EX0ZJRUxEX0JVRkZFUl9TSVpFIFhlblN0b3JlIGVudHJ5Cj4gPj4+IFNv IHRoZSBuZXcgYWRkaXRpb24gbG9va3Mgc2VydmluZyB3ZWxsIGZvciB0aGUgcG9pbnQgdGhhdCB3 YXMKPiA+Pj4gc3VnZ2VzdGVkIGluIHRoZSBwcmV2aW91cyB0aHJlYWQuICBBcyBJIHNlZSBubyBm cm9udGVuZCBkcml2ZXIKPiA+Pj4gaW1wbGVtZW50YXRpb24sIGl0J3MgaGFyZCB0byB0ZWxsIGFi b3V0IHRoZSBkZXRhaWxzLCBidXQgdGhyb3VnaCBhCj4gPj4+IHF1aWNrIGdsYW5jZSwgdGhlIHBy b3RvY29sIHNob3VsZCBiZSBPSy4KPiA+PiBUaGFuayB5b3UsIHRoZSBkcml2ZXIgaXMgYXQgWzFd Cj4gPj4+IE5vdywgZ29pbmcgYmFjayB0byBhIGJpZyBwaWN0dXJlOiBJIHRvb2sgYSBsb29rIGF0 IHRoZSBwcmV2aW91cwo+ID4+PiBwYXRjaHNldCwgYW5kIHdvbmRlciB3aGF0IGFib3V0IHRoZSBo d19wYXJhbXMgc2V0dXAuICBCYXNpY2FsbHkgdGhlCj4gPj4+IChmcm9udGVuZCkgYXBwbGljYXRp b24gbWF5IHJlcXVlc3QgYW55IHNpemUgb2YgYnVmZmVyIGFuZCBwZXJpb2RzCj4gPj4+IHVubGVz cyB0aGUgZHJpdmVyIHNldHMgdXAgdGhlIGh3IGNvbnN0cmFpbnRzIGF0IG9wZW4gY2FsbGJhY2su ICBUaGF0Cj4gPj4+IGlzLCBhcHAgbWF5IHJlcXVlc3QgZXZlbiB0aGUgMTYgYnl0ZXMgb2YgYnVm ZmVyIHNpemUsIG9yIDFHQiBvZgo+ID4+PiBidWZmZXIuICBUaGUgcGVyaW9kcyBhcmVuJ3QgYWx3 YXlzIGludGVnZXIsIHNvIGl0IGNhbiBiZSAxMDI0IGJ5dGVzIG9mCj4gPj4+IGJ1ZmZlciB3aXRo IDQwMCBieXRlcyBvZiBwZXJpb2RzLgo+ID4+Pgo+ID4+PiBBbmQsIGlmIHN1Y2ggcGFyYW1ldGVy cyBhcmUgc2V0IHVwIGZyZWVseSBpbiB0aGUgZnJvbnRlbmQgc2lkZSwgaG93Cj4gPj4+IHRoZSBi YWNrZW5kIGlzIHN1cHBvc2VkIHRvIGJlaGF2ZT8gIEZyb20gdGhlIGZyb250ZW5kIFBPViwgaXQg ZXhwZWN0cwo+ID4+PiByZWNlaXZpbmcgdGhlIHdha2V1cC9ub3RpZmljYXRpb24gYXQgZWFjaCBw ZXJpb2QgcHJvY2Vzc2luZyAoZS5nLiA0MDAKPiA+Pj4gYnl0ZXMgaW4gdGhlIGNhc2UgYWJvdmUp LiAgQnV0LCB0aGUgYmFja2VuZCBpcyBhbm90aGVyIGFwcGxpY2F0aW9uLCBzbwo+ID4+PiBob3cg d291bGQgaXQgd29yayBmb3Igc3VjaCByZXF1aXJlbWVudHM/ICBBbSBJIG1pc3Npbmcgc29tZXRo aW5nIGhlcmU/Cj4gPj4gV2VsbCwgdGhlIGZyb250ZW5kIGlzIG5vdCB0aGF0IGZyZWUgdG8gZGVj aWRlIGFzIGl0IG1pZ2h0IGxvb2sgbGlrZSwKPiA+PiBlLmcuIHBsZWFzZSBzZWUgWzJdLiBCYXNp Y2FsbHkgcGFydCBvZiBod19wYXJhbXMgY29uZmlndXJhdGlvbiBpcyB3cml0dGVuCj4gPj4gdG8g WGVuU3RvcmUgWzNdIGFzIGEgcGFydCBvZiBkb21haW4gY29uZmlndXJhdGlvbiB3aGljaCBkZXBl bmRzIG9uCj4gPj4gc3lzdGVtL2JhY2tlbmQKPiA+PiBjYXBhYmlsaXRpZXMuIEUuZy4sIHdlIHVz dWFsbHkgc2V0IGJ1ZmZlciBzaXplcyB0byBtYXRjaCByZWFsIEhXIGF0Cj4gPj4gYmFja2VuZCBz aWRlCj4gPj4gaWYgd2UgdXNlIEFMU0EgYW5kIHdlIGhhdmUgbW9yZSBmcmVlZG9tIGlmIHdlIHVz ZSBQdWxzZUF1ZGlvIHRoZXJlLgo+ID4+IEZpbmFsbHksIGlmIGJhY2tlbmQgZGVjaWRlcyB0aGF0 IHRoZSByZXF1ZXN0ZWQgYnVmZmVyL3BlcmlvZCBzaXplcyBhcmUKPiA+PiBub3QgYWNjZXB0YWJs ZSBpdCB3aWxsIHJlamVjdCBzdWNoIGEgY29uZmlndXJhdGlvbi4KPiA+IE9LLCB0aGF0IHJlc3Ry aWN0cyBtaW5pbWFsbHkuICBTbyBhdCBsZWFzdCB0aGVyZSBpcyB0aGUgcmVzdHJpY3Rpb24gLwo+ ID4gY29tbXVuaWNhdGlvbiBhYm91dCB0aGUgYnVmZmVyIHNpemUuICBCdXQgaXQgbWVyZWx5IG1l YW5zIHRoZQo+ID4gKm1heGltdW0qIGJ1ZmZlciBzaXplIGlzIHNldC4gIEFwcGxpY2F0aW9uIG1h eSByZXF1ZXN0IHN0aWxsIGFueQo+ID4gc2hvcnRlciB2YWx1ZSB0aGFuIHRoYXQuCj4gPgo+ID4g QW5kLCB0aGVyZSBhcmUgbm8gcmVzdHJpY3Rpb24gYWJvdXQgcGVyaW9kIHNpemVzIChleGNlcHQg Zm9yIHRoZQo+ID4gcGVyaW9kc19tYXgsIHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSBidWZmZXJf Ynl0ZXNfbWF4KS4KPiA+IFRoYXQgaXMsIGFwcGxpY2F0aW9uIG1heSByZXF1ZXN0IGFueSBzaXpl IGJldHdlZW4gdGhlbTsgYW5kIGl0IGV4cGVjdHMKPiA+IHRoZSB3YWtlIHVwIGJ5IHRoaXMgdmFs dWUuCj4gPgo+ID4gSSB0aGluayB0aGF0J3MgYSBzdGlsbCBtaXNzaW5nIHN0b25lIGluIHRoZSBk ZXNpZ24uCj4gV2VsbCwgc28gd2hhdCB3b3VsZCBhIHJlYWwgSFcgZHJpdmVyIGRvIGluIHRoYXQg Y2FzZT8KPiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaW4gdGhpcyBjYXNlIFNXIGNhbiBzdGls bCByZXF1ZXN0Cj4gc29tZXRoaW5nIHRoYXQgSFcgY2FuJ3QgZG8gYW5kIGRyaXZlciB3aWxsIHJl amVjdCBzdWNoIGNvbmZpZ3VyYXRpb25zLgo+IEluIG15IGNhc2UsIHRoZSByb2xlIG9mIHRoYXQg SFcgZHJpdmVyIGNvZGUgd2hpY2gganVkZ2VzIG9uIGlmIGNvbmZpZ3VyYXRpb24KPiBpcyBhY2Nl cHRhYmxlIGp1c3QgcnVucyBvbiB0aGUgYmFja2VuZCBzaWRlLCBlLmcuIGZyb250ZW5kIGRyaXZl ciBpcyBqdXN0Cj4gYSBwcm94eSB3aGljaCB0YWxrcyB0byB0aGUgYmFja2VuZCB0byBjaGVjayBp ZiB0aGUgYmFja2VuZCBjYW4gZG8gd2hhdAo+IHJlcXVlc3RlZC4KPiBBbmQgaXQgaXMgdXAgdG8g YmFja2VuZCB0byBkZWNpZGUuCj4gCj4gRG9lcyB0aGF0IHNvdW5kIHJlYXNvbmFibGUgb3IgeW91 IGhhdmUgc29tZXRoaW5nIGVsc2Ugb24geW91ciBtaW5kPwoKVXN1YWxseSB0aGUgaGFyZHdhcmUg ZHJpdmVyIGtub3dzIGFscmVhZHkgdGhlIHJlc3RyaWN0aW9ucyBhbmQgc2V0cyB1cAp0aGUgcnVs ZXMgdmlhIGh3IGNvbnN0cmFpbnRzIGF0IG9wZW4gY2FsbGJhY2suICBUaGVyZSBhcmUgbG90cyBv ZgpzbmRfcGNtX2h3X2NvbnN0cmFpbnRfKigpIGhlbHBlcnMgKGFuZCB0aGUgcmVsZXZhbnQgb25l cykgdG8gZ2l2ZSBtb3JlCmFkZGl0aW9uYWwgcnVsZXMgZm9yIHRoZSBwYXJhbWV0ZXIgcmVzdHJp Y3Rpb25zLiAgRm9yIGV4YW1wbGUsIGlmIHRoZQpwZXJpb2RzIG11c3QgYmUgYWxpZ25lZCB3aXRo IHRoZSBidWZmZXIgc2l6ZSAoaS5lLiBidWZmZXJfc2l6ZSAlCnBlcmlvZF9zaXplID09IDApIGFz IG9uIG1hbnkgZGV2aWNlcywgeW91IGNhbiBjYWxsIGxpa2U6CiAgc25kX3BjbV9od19jb25zdHJh aW50X2ludGVnZXIoc3Vic3RyZWFtLT5ydW50aW1lLAoJU05EUlZfUENNX0hXX1BBUkFNX1BFUklP RFMpOwppbiB0aGUgb3BlbiBjYWxsYmFjay4KCkFuZCwgbm93IGFuIG9wZW4gcXVlc3Rpb24gZm9y IFhFTiBjb21lczogd2hhdCBraW5kIG9mIHJlc3RyaWN0aW9uCnNob3VsZCBiZSBhcHBsaWVkIHRv IHRoZSBmcm9udGVuZC4gIE9idmlvdXNseSBpdCBkZXBlbmRzIG9uIHRoZQpiYWNrZW5kLCBzbyB0 aGVyZSBtdXN0IGJlIHNvbWUgY29tbXVuaWNhdGlvbiwgYW5kIHRoZSByZXN0cmljdGlvbiBtdXN0 CmJlIHByb3BhZ2F0ZWQgYXQgb3BlbiwgaS5lLiAqYmVmb3JlKiBhY3R1YWxseSBod19wYXJhbXMg aXMgcGVyZm9ybWVkLgoKCnRoYW5rcywKClRha2FzaGkKCj4gCj4gPgo+ID4gdGhhbmtzLAo+ID4K PiA+IFRha2FzaGkKPiBUaGFuayB5b3UsCj4gT2xla3NhbmRyCj4gPj4+IHRoYW5rcywKPiA+Pj4K PiA+Pj4gVGFrYXNoaQo+ID4+Pgo+ID4+Pgo+ID4+Pj4gV2FpdGluZyBmb3IgeW91ciB2YWx1YWJs ZSBjb21tZW50cywKPiA+Pj4+Cj4gPj4+PiBUaGFuayB5b3UsCj4gPj4+PiBPbGVrc2FuZHIKPiA+ Pj4+Cj4gPj4+PiBbMV0gaHR0cHM6Ly9naXRodWIuY29tL2FuZHIyMDAwL2xpbnV4L2NvbW1pdHMv c25kX3Vwc3RyZWFtX3YxCj4gPj4+PiBbMl0gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt L2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUvaW5jbHVkZS94ZW4vaW50 ZXJmYWNlL2lvL3NuZGlmLmgKPiA+Pj4+IFszXSBodHRwczovL2dpdGh1Yi5jb20veGVuLXRyb29w cy9zbmRfYmUKPiA+Pj4+IFs0XSBodHRwczovL2dpdGh1Yi5jb20veGVuLXRyb29wcy9saWJ4ZW5i ZQo+ID4+Pj4gWzVdIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE3LzgvNy8zNjMKPiA+Pj4+IFs2 XSBodHRwOi8vbWFpbG1hbi5hbHNhLXByb2plY3Qub3JnL3BpcGVybWFpbC9hbHNhLWRldmVsLzIw MTctQXVndXN0LzEyMzYxNy5odG1sCj4gPj4+PiBbN10gaHR0cDovL21haWxtYW4uYWxzYS1wcm9q ZWN0Lm9yZy9waXBlcm1haWwvYWxzYS1kZXZlbC8yMDE3LUF1Z3VzdC8xMjM3NDQuaHRtbAo+ID4+ Pj4KPiA+Pj4+Cj4gPj4+PiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyAoMik6Cj4gPj4+PiAgICAg c25kaWY6IGludHJvZHVjZSBwcm90b2NvbCB2ZXJzaW9uCj4gPj4+PiAgICAgc25kaWY6IGFkZCBl eHBsaWNpdCBiYWNrIGFuZCBmcm9udCBzeW5jaHJvbml6YXRpb24KPiA+Pj4+Cj4gPj4+PiAgICB4 ZW4vaW5jbHVkZS9wdWJsaWMvaW8vc25kaWYuaCB8IDE3MyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KPiA+Pj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCAxNzAgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiA+Pj4+Cj4gPj4+PiAtLSAKPiA+Pj4+IDIuNy40Cj4g Pj4+Pgo+ID4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiA+Pj4+IEFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPj4+PiBBbHNhLWRldmVsQGFsc2Et cHJvamVjdC5vcmcKPiA+Pj4+IGh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby9hbHNhLWRldmVsCj4gPj4gWzFdCj4gPj4gaHR0cHM6Ly9naXRodWIuY29tL2Fu ZHIyMDAwL2xpbnV4L2NvbW1pdHMvdGl3YWlfc291bmRfZm9yX25leHRfcHZfc25kX3Vwc3RyZWFt X3YxCj4gPj4gWzJdCj4gPj4gaHR0cHM6Ly9naXRodWIuY29tL2FuZHIyMDAwL2xpbnV4L2Jsb2Iv dGl3YWlfc291bmRfZm9yX25leHRfcHZfc25kX3Vwc3RyZWFtX3YxL3NvdW5kL3hlbi94ZW5fc25k X2Zyb250X2NmZy5jI0wyMzkKPiA+PiBbM10gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS94 ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZy9tc2cxMjQzNTYuaHRtbAo+ID4+Cj4gCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBs aXN0CkFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNhLXByb2pl Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vYWxzYS1kZXZlbAo=