From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [alsa-devel] [PATCH 0/2] sndif: add explicit back and front synchronization Date: Tue, 6 Mar 2018 16:13:13 +0200 Message-ID: <621aaaa9-5994-176c-b243-c2fc9823a699__35027.4147968323$1520345537$gmane$org@gmail.com> References: <1517819100-1029-1-git-send-email-andr2000@gmail.com> <1531a22b-5df6-a66e-72ee-775538aeff4d@gmail.com> 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.84_2) (envelope-from ) id 1etDLE-0007ss-5g for xen-devel@lists.xenproject.org; Tue, 06 Mar 2018 14:13:20 +0000 Received: by mail-lf0-x243.google.com with SMTP id r80so28640372lfe.13 for ; Tue, 06 Mar 2018 06:13:17 -0800 (PST) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Takashi Iwai Cc: xen-devel@lists.xenproject.org, alsa-devel@alsa-project.org, Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org T24gMDMvMDYvMjAxOCAwMzo0OCBQTSwgVGFrYXNoaSBJd2FpIHdyb3RlOgo+IE9uIFR1ZSwgMDYg TWFyIDIwMTggMTQ6MzA6MDUgKzAxMDAsCj4gT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6 Cj4+IE9uIDAzLzA2LzIwMTggMDI6NTIgUE0sIFRha2FzaGkgSXdhaSB3cm90ZToKPj4+IE9uIFR1 ZSwgMDYgTWFyIDIwMTggMTM6MDU6MTYgKzAxMDAsCj4+PiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5r byB3cm90ZToKPj4+PiBPbiAwMy8wNi8yMDE4IDAxOjMyIFBNLCBUYWthc2hpIEl3YWkgd3JvdGU6 Cj4+Pj4+IE9uIFR1ZSwgMDYgTWFyIDIwMTggMTI6MjU6MDcgKzAxMDAsCj4+Pj4+IE9sZWtzYW5k ciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+Pj4+Pj4gT24gMDMvMDYvMjAxOCAxMjo1MiBQTSwgVGFr YXNoaSBJd2FpIHdyb3RlOgo+Pj4+Pj4+IE9uIE1vbiwgMDUgRmViIDIwMTggMDk6MjQ6NTggKzAx MDAsCj4+Pj4+Pj4gT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+Pj4+Pj4+IEZyb206 IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNv bT4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gSGksIGFsbCEKPj4+Pj4+Pj4KPj4+Pj4+Pj4gRm9yZXdvcmQK Pj4+Pj4+Pj4gPT09PT09PT0KPj4+Pj4+Pj4KPj4+Pj4+Pj4gVGhpcyBjaGFuZ2UgaXMgYWltZWQg dG8gYWRkIHN1cHBvcnQgZm9yIGV4cGxpY2l0IGJhY2sgYW5kIGZyb250Cj4+Pj4+Pj4+IHN5bmNo cm9uaXphdGlvbiBkdXJpbmcgcGxheWJhY2sgYW5kIGNhcHR1cmUgaW4gcmVzcG9uc2UgdG8gY29t bWVudHMKPj4+Pj4+Pj4gcmFpc2VkIGR1cmluZyB1cHN0cmVhbSBhdHRlbXB0IG9mIHRoZSBwYXJh LXZpcnR1YWxpemVkIHNvdW5kIGZyb250ZW5kCj4+Pj4+Pj4+IGRyaXZlciBmb3IgWGVuIFsxXSwg WzJdIGFuZCBnYXRoZXIgb3BpbmlvbnMgZnJvbSB0aGUgcmVsZXZhbnQgY29tbXVuaXRpZXMKPj4+ Pj4+Pj4gKEFMU0EsIFhlbikgb24gdGhlIGNoYW5nZS4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gVGhlIHJl bGV2YW50IGJhY2tlbmQgaXMgaW1wbGVtZW50ZWQgYXMgYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9u IFszXQo+Pj4+Pj4+PiBhbmQgdXNlcyBhY2NvbXBhbnlpbmcgaGVscGVyIGxpYnJhcnkgWzRdLgo+ Pj4+Pj4+Pgo+Pj4+Pj4+PiBCb3RoIGZyb250ZW5kIGRyaXZlciBhbmQgYmFja2VuZCB3ZXJlIHRl c3RlZCBvbiByZWFsIEhXIHJ1bm5pbmcgWGVuIGh5cGVydmlzb3IKPj4+Pj4+Pj4gKFJlbmVzYXMg Ui1DYXIgQVJNIGJhc2VkIEgzL00zIGJvYXJkcywgeDg2KSB0byBtYWtlIHN1cmUgdGhlIHByb3Bv c2VkCj4+Pj4+Pj4+IHNvbHV0aW9uIGRvZXMgd29yay4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gUmF0aW9u YWxlCj4+Pj4+Pj4+ID09PT09PT09PQo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBEdXJpbmcgdGhlIGZpcnN0 IGF0dGVtcHQgdG8gdXBzdHJlYW0gdGhlIExpbnV4IGZyb250IGRyaXZlciBbNV0gbnVtYmVyCj4+ Pj4+Pj4+IG9mIGNvbW1lbnRzIGFuZCBjb25jZXJucyB3ZXJlIHJhaXNlZCwgb25lIG9mIHRoZSBi aWdnZXN0IGZsYXdzIGluIHRoZQo+Pj4+Pj4+PiBkZXNpZ24gd2VyZSBxdWVzdGlvbmVkIGJ5IGJv dGggQ2xlbWVucyBMYWRpc2NoIFs2XSBhbmQKPj4+Pj4+Pj4gVGFrYXNoaSBTYWthbW90byBbN106 IHRoZSBhYnNlbmNlIG9mIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIGZyb250ZW5kCj4+Pj4+Pj4+ IGFuZCBiYWNrZW5kIGR1cmluZyBjYXB0dXJlL3BsYXliYWNrLiBUd28gb3B0aW9ucyB3ZXJlIGRp c2N1c3NlZDoKPj4+Pj4+Pj4KPj4+Pj4+Pj4g4oCcSW4gZGVzaWduIG9mIEFMU0EgUENNIGNvcmUs IGRyaXZlcnMgYXJlIGV4cGVjdGVkIHRvIHN5bmNocm9uaXplIHRvCj4+Pj4+Pj4+IGFjdHVhbCBo YXJkd2FyZXMgZm9yIHNlbWktcmVhbHRpbWUgZGF0YSB0cmFuc21pc3Npb24uIFRoZQo+Pj4+Pj4+ PiBzeW5jaHJvbml6YXRpb24gaXMgZG9uZSBieSB0d28gcG9pbnRzOgo+Pj4+Pj4+PiAxKSBJbnRl cnJ1cHRzIHRvIHJlc3BvbmQgZXZlbnRzIGZyb20gYWN0dWFsIGhhcmR3YXJlcy4KPj4+Pj4+Pj4g MikgUG9zaXRpb25zIG9mIGFjdHVhbCBkYXRhIHRyYW5zbWlzc2lvbiBpbiBhbnkgc2VyaWFsIHNv dW5kIGludGVyZmFjZXMKPj4+Pj4+Pj4gICAgICAgICBvZiBhY3R1YWwgaGFyZHdhcmVzLgo+Pj4+ Pj4+PiDigJwKPj4+Pj4+Pj4KPj4+Pj4+Pj4gYW5kIGZpbmFsbHkgYSBjaGFuZ2UgdG8gdGhlIGV4 aXN0aW5nIHByb3RvY29sIHdhcyBzdWdnZXN0ZWQ6Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IOKAnEluICdp bmNsdWRlL3hlbi9pbnRlcmZhY2UvaW8vc25kaWYuaCcsIHRoZXJlJ3Mgbm8gZnVuY3Rpb25hbGl0 aWVzIEkKPj4+Pj4+Pj4gZGVzY3JpYmVkIHRoZSBhYm92ZToKPj4+Pj4+Pj4gMS4gbm90aWZpY2F0 aW9ucyBmcm9tIERvbVUgdG8gRG9tMCBhYm91dCB0aGUgc2l6ZSBvZiBwZXJpb2QgZm9yCj4+Pj4+ Pj4+ICAgICAgICAgaW50ZXJydXB0cyBmcm9tIGFjdHVhbCBoYXJkd2FyZXMuIE9yIG5vIHdheSBm cm9tIERvbTAgdG8gRG9tVSBhYm91dAo+Pj4+Pj4+PiAgICAgICAgIHRoZSBjb25maWd1cmVkIHNp emUgb2YgdGhlIHBlcmlvZC4KPj4+Pj4+Pj4gMi4gbm90aWZpY2F0aW9ucyBvZiB0aGUgaW50ZXJy dXB0cyBmcm9tIGFjdHVhbCBoYXJkd2FyZXMgdG8gRG9tVS7igJ0KPj4+Pj4+Pj4KPj4+Pj4+Pj4g VGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIGNoYW5nZSB0byB0aGUgc25kaWYgcHJvdG9jb2wgYW5k IGFsbG93cyByZW1vdmluZwo+Pj4+Pj4+PiBwZXJpb2QgZW11bGF0aW9uOgo+Pj4+Pj4+PiAxLiBJ bnRyb2R1Y2VkIGEgbmV3IGV2ZW50IGNoYW5uZWwgZnJvbSBiYWNrIHRvIGZyb250Cj4+Pj4+Pj4+ IDIuIE5ldyBldmVudCB3aXRoIG51bWJlciBvZiBieXRlcyBwbGF5ZWQvY2FwdHVyZWQgKFhFTlNO RF9FVlRfQ1VSX1BPUywKPj4+Pj4+Pj4gICAgICAgIHRvIGJlIHVzZWQgZm9yIHNlbmRpbmcgc25k X3BjbV9wZXJpb2RfZWxhcHNlZCBhdCBmcm9udGVuZCAoaW4gTGludXgKPj4+Pj4+Pj4gICAgICAg IGltcGxlbWVudGF0aW9uKS4gU2VudCBpbiBieXRlcywgbm90IGZyYW1lcyB0byBtYWtlIHRoZSBw cm90b2NvbAo+Pj4+Pj4+PiAgICAgICAgZ2VuZXJpYyBhbmQgY29uc2lzdGVudCkKPj4+Pj4+Pj4g My4gTmV3IHJlcXVlc3QgZm9yIHBsYXliYWNrL2NhcHR1cmUgY29udHJvbCAoWEVOU05EX09QX1RS SUdHRVIpIHdpdGgKPj4+Pj4+Pj4gICAgICAgIHN0YXJ0L3BhdXNlL3N0b3AvcmVzdW1lIHN1Yi1v cHMKPj4+Pj4+Pj4gNC4gUGxheWJhY2svY2FwdHVyZSBidWZmZXIgc2l6ZSBpcyBzZXQgb24gdGhl IGJhY2tlbmQgc2lkZSB2aWEKPj4+Pj4+Pj4gICAgICAgIFhFTlNORF9GSUVMRF9CVUZGRVJfU0la RSBYZW5TdG9yZSBlbnRyeQo+Pj4+Pj4+IFNvIHRoZSBuZXcgYWRkaXRpb24gbG9va3Mgc2Vydmlu ZyB3ZWxsIGZvciB0aGUgcG9pbnQgdGhhdCB3YXMKPj4+Pj4+PiBzdWdnZXN0ZWQgaW4gdGhlIHBy ZXZpb3VzIHRocmVhZC4gIEFzIEkgc2VlIG5vIGZyb250ZW5kIGRyaXZlcgo+Pj4+Pj4+IGltcGxl bWVudGF0aW9uLCBpdCdzIGhhcmQgdG8gdGVsbCBhYm91dCB0aGUgZGV0YWlscywgYnV0IHRocm91 Z2ggYQo+Pj4+Pj4+IHF1aWNrIGdsYW5jZSwgdGhlIHByb3RvY29sIHNob3VsZCBiZSBPSy4KPj4+ Pj4+IFRoYW5rIHlvdSwgdGhlIGRyaXZlciBpcyBhdCBbMV0KPj4+Pj4+PiBOb3csIGdvaW5nIGJh Y2sgdG8gYSBiaWcgcGljdHVyZTogSSB0b29rIGEgbG9vayBhdCB0aGUgcHJldmlvdXMKPj4+Pj4+ PiBwYXRjaHNldCwgYW5kIHdvbmRlciB3aGF0IGFib3V0IHRoZSBod19wYXJhbXMgc2V0dXAuICBC YXNpY2FsbHkgdGhlCj4+Pj4+Pj4gKGZyb250ZW5kKSBhcHBsaWNhdGlvbiBtYXkgcmVxdWVzdCBh bnkgc2l6ZSBvZiBidWZmZXIgYW5kIHBlcmlvZHMKPj4+Pj4+PiB1bmxlc3MgdGhlIGRyaXZlciBz ZXRzIHVwIHRoZSBodyBjb25zdHJhaW50cyBhdCBvcGVuIGNhbGxiYWNrLiAgVGhhdAo+Pj4+Pj4+ IGlzLCBhcHAgbWF5IHJlcXVlc3QgZXZlbiB0aGUgMTYgYnl0ZXMgb2YgYnVmZmVyIHNpemUsIG9y IDFHQiBvZgo+Pj4+Pj4+IGJ1ZmZlci4gIFRoZSBwZXJpb2RzIGFyZW4ndCBhbHdheXMgaW50ZWdl ciwgc28gaXQgY2FuIGJlIDEwMjQgYnl0ZXMgb2YKPj4+Pj4+PiBidWZmZXIgd2l0aCA0MDAgYnl0 ZXMgb2YgcGVyaW9kcy4KPj4+Pj4+Pgo+Pj4+Pj4+IEFuZCwgaWYgc3VjaCBwYXJhbWV0ZXJzIGFy ZSBzZXQgdXAgZnJlZWx5IGluIHRoZSBmcm9udGVuZCBzaWRlLCBob3cKPj4+Pj4+PiB0aGUgYmFj a2VuZCBpcyBzdXBwb3NlZCB0byBiZWhhdmU/ICBGcm9tIHRoZSBmcm9udGVuZCBQT1YsIGl0IGV4 cGVjdHMKPj4+Pj4+PiByZWNlaXZpbmcgdGhlIHdha2V1cC9ub3RpZmljYXRpb24gYXQgZWFjaCBw ZXJpb2QgcHJvY2Vzc2luZyAoZS5nLiA0MDAKPj4+Pj4+PiBieXRlcyBpbiB0aGUgY2FzZSBhYm92 ZSkuICBCdXQsIHRoZSBiYWNrZW5kIGlzIGFub3RoZXIgYXBwbGljYXRpb24sIHNvCj4+Pj4+Pj4g aG93IHdvdWxkIGl0IHdvcmsgZm9yIHN1Y2ggcmVxdWlyZW1lbnRzPyAgQW0gSSBtaXNzaW5nIHNv bWV0aGluZyBoZXJlPwo+Pj4+Pj4gV2VsbCwgdGhlIGZyb250ZW5kIGlzIG5vdCB0aGF0IGZyZWUg dG8gZGVjaWRlIGFzIGl0IG1pZ2h0IGxvb2sgbGlrZSwKPj4+Pj4+IGUuZy4gcGxlYXNlIHNlZSBb Ml0uIEJhc2ljYWxseSBwYXJ0IG9mIGh3X3BhcmFtcyBjb25maWd1cmF0aW9uIGlzIHdyaXR0ZW4K Pj4+Pj4+IHRvIFhlblN0b3JlIFszXSBhcyBhIHBhcnQgb2YgZG9tYWluIGNvbmZpZ3VyYXRpb24g d2hpY2ggZGVwZW5kcyBvbgo+Pj4+Pj4gc3lzdGVtL2JhY2tlbmQKPj4+Pj4+IGNhcGFiaWxpdGll cy4gRS5nLiwgd2UgdXN1YWxseSBzZXQgYnVmZmVyIHNpemVzIHRvIG1hdGNoIHJlYWwgSFcgYXQK Pj4+Pj4+IGJhY2tlbmQgc2lkZQo+Pj4+Pj4gaWYgd2UgdXNlIEFMU0EgYW5kIHdlIGhhdmUgbW9y ZSBmcmVlZG9tIGlmIHdlIHVzZSBQdWxzZUF1ZGlvIHRoZXJlLgo+Pj4+Pj4gRmluYWxseSwgaWYg YmFja2VuZCBkZWNpZGVzIHRoYXQgdGhlIHJlcXVlc3RlZCBidWZmZXIvcGVyaW9kIHNpemVzIGFy ZQo+Pj4+Pj4gbm90IGFjY2VwdGFibGUgaXQgd2lsbCByZWplY3Qgc3VjaCBhIGNvbmZpZ3VyYXRp b24uCj4+Pj4+IE9LLCB0aGF0IHJlc3RyaWN0cyBtaW5pbWFsbHkuICBTbyBhdCBsZWFzdCB0aGVy ZSBpcyB0aGUgcmVzdHJpY3Rpb24gLwo+Pj4+PiBjb21tdW5pY2F0aW9uIGFib3V0IHRoZSBidWZm ZXIgc2l6ZS4gIEJ1dCBpdCBtZXJlbHkgbWVhbnMgdGhlCj4+Pj4+ICptYXhpbXVtKiBidWZmZXIg c2l6ZSBpcyBzZXQuICBBcHBsaWNhdGlvbiBtYXkgcmVxdWVzdCBzdGlsbCBhbnkKPj4+Pj4gc2hv cnRlciB2YWx1ZSB0aGFuIHRoYXQuCj4+Pj4+Cj4+Pj4+IEFuZCwgdGhlcmUgYXJlIG5vIHJlc3Ry aWN0aW9uIGFib3V0IHBlcmlvZCBzaXplcyAoZXhjZXB0IGZvciB0aGUKPj4+Pj4gcGVyaW9kc19t YXgsIHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSBidWZmZXJfYnl0ZXNfbWF4KS4KPj4+Pj4gVGhh dCBpcywgYXBwbGljYXRpb24gbWF5IHJlcXVlc3QgYW55IHNpemUgYmV0d2VlbiB0aGVtOyBhbmQg aXQgZXhwZWN0cwo+Pj4+PiB0aGUgd2FrZSB1cCBieSB0aGlzIHZhbHVlLgo+Pj4+Pgo+Pj4+PiBJ IHRoaW5rIHRoYXQncyBhIHN0aWxsIG1pc3Npbmcgc3RvbmUgaW4gdGhlIGRlc2lnbi4KPj4+PiBX ZWxsLCBzbyB3aGF0IHdvdWxkIGEgcmVhbCBIVyBkcml2ZXIgZG8gaW4gdGhhdCBjYXNlPwo+Pj4+ IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpbiB0aGlzIGNhc2UgU1cgY2FuIHN0aWxsIHJlcXVl c3QKPj4+PiBzb21ldGhpbmcgdGhhdCBIVyBjYW4ndCBkbyBhbmQgZHJpdmVyIHdpbGwgcmVqZWN0 IHN1Y2ggY29uZmlndXJhdGlvbnMuCj4+Pj4gSW4gbXkgY2FzZSwgdGhlIHJvbGUgb2YgdGhhdCBI VyBkcml2ZXIgY29kZSB3aGljaCBqdWRnZXMgb24gaWYgY29uZmlndXJhdGlvbgo+Pj4+IGlzIGFj Y2VwdGFibGUganVzdCBydW5zIG9uIHRoZSBiYWNrZW5kIHNpZGUsIGUuZy4gZnJvbnRlbmQgZHJp dmVyIGlzIGp1c3QKPj4+PiBhIHByb3h5IHdoaWNoIHRhbGtzIHRvIHRoZSBiYWNrZW5kIHRvIGNo ZWNrIGlmIHRoZSBiYWNrZW5kIGNhbiBkbyB3aGF0Cj4+Pj4gcmVxdWVzdGVkLgo+Pj4+IEFuZCBp dCBpcyB1cCB0byBiYWNrZW5kIHRvIGRlY2lkZS4KPj4+Pgo+Pj4+IERvZXMgdGhhdCBzb3VuZCBy ZWFzb25hYmxlIG9yIHlvdSBoYXZlIHNvbWV0aGluZyBlbHNlIG9uIHlvdXIgbWluZD8KPj4+IFVz dWFsbHkgdGhlIGhhcmR3YXJlIGRyaXZlciBrbm93cyBhbHJlYWR5IHRoZSByZXN0cmljdGlvbnMg YW5kIHNldHMgdXAKPj4+IHRoZSBydWxlcyB2aWEgaHcgY29uc3RyYWludHMgYXQgb3BlbiBjYWxs YmFjay4gIFRoZXJlIGFyZSBsb3RzIG9mCj4+PiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfKigpIGhl bHBlcnMgKGFuZCB0aGUgcmVsZXZhbnQgb25lcykgdG8gZ2l2ZSBtb3JlCj4+PiBhZGRpdGlvbmFs IHJ1bGVzIGZvciB0aGUgcGFyYW1ldGVyIHJlc3RyaWN0aW9ucy4gIEZvciBleGFtcGxlLCBpZiB0 aGUKPj4+IHBlcmlvZHMgbXVzdCBiZSBhbGlnbmVkIHdpdGggdGhlIGJ1ZmZlciBzaXplIChpLmUu IGJ1ZmZlcl9zaXplICUKPj4+IHBlcmlvZF9zaXplID09IDApIGFzIG9uIG1hbnkgZGV2aWNlcywg eW91IGNhbiBjYWxsIGxpa2U6Cj4+PiAgICAgc25kX3BjbV9od19jb25zdHJhaW50X2ludGVnZXIo c3Vic3RyZWFtLT5ydW50aW1lLAo+Pj4gCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RTKTsKPj4+ IGluIHRoZSBvcGVuIGNhbGxiYWNrLgo+PiBZb3UgYXJlIHJpZ2h0LCBJIHNhdyB0aG9zZSBpbiBv dGhlciBkcml2ZXJzCj4+PiBBbmQsIG5vdyBhbiBvcGVuIHF1ZXN0aW9uIGZvciBYRU4gY29tZXM6 IHdoYXQga2luZCBvZiByZXN0cmljdGlvbgo+Pj4gc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIGZy b250ZW5kLiAgT2J2aW91c2x5IGl0IGRlcGVuZHMgb24gdGhlCj4+PiBiYWNrZW5kLCBzbyB0aGVy ZSBtdXN0IGJlIHNvbWUgY29tbXVuaWNhdGlvbiwgYW5kIHRoZSByZXN0cmljdGlvbiBtdXN0Cj4+ PiBiZSBwcm9wYWdhdGVkIGF0IG9wZW4sIGkuZS4gKmJlZm9yZSogYWN0dWFsbHkgaHdfcGFyYW1z IGlzIHBlcmZvcm1lZC4KPj4gQ291bGQgeW91IHBsZWFzZSBnaXZlIG1lIGEgaGludCBvZiB3aGF0 IHRob3NlIHJlc3RyaWN0aW9ucwo+PiBjb3VsZCBsb29rIGxpa2U/IEUuZy4gbWFwIG9mIHN1cHBv cnRlZCBidWZmZXIvcGVyaW9kIHNpemVzLCB3aGF0IGVsc2U/Cj4gSGVoLCB0aGF0IHZlcnkgbXVj aCBkZXBlbmRzIG9uIHRoZSBoYXJkd2FyZSAtLSBhbmQgaW4gdGhpcyBjYXNlLCBvbgo+IHRoZSBp bXBsZW1lbnRhdGlvbiBvZiB0aGUgYmFja2VuZC4KVGhhdCBpcyBjb3JyZWN0LCBidXQgd2UgdHJ5 IHRvIGJlIGJhY2tlbmQgYWdub3N0aWMsIHRob3VnaAo+Cj4gUHJhY3RpY2FsbHkgc2VlbiwgdGhl IGJ1ZmZlciBhbmQgdGhlIHBlcmlvZCBzaXplIHNldHVwcyBhcmUgbWFuZGF0b3J5LAo+IHllcy4g IEhlcmUgaXMgdGhlIHF1ZXN0aW9uIHdoZXRoZXIgeW91IHdhbnQgdG8gbGltaXQgdGhlbSBieSBs aXN0Cj4gKGUuZy4gcmVhZCB2aWEgc29tZSBYRU5TTkRfKiBwcm90b2NvbCksIG9yIG5lZ290aWF0 ZSB0aGUgc2l6ZSBhdCBlYWNoCj4gaHdfcGFyYW1zIHNldHVwIChlLmcuIGdldHRpbmcgb25seSBt aW4vbWF4IGF0IG9wZW4sIGFuZCBhdCBlYWNoCj4gaHdfcGFyYW1zIGNhbGwsIG5lZ290aWF0ZSB3 aXRoIHRoZSBiYWNrZW5kIGZvciBwZXJpb2QgYW5kIGJ1ZmZlciBzaXplCj4gY2hhbmdlcykuClRo ZSBwcm9ibGVtIEkgc2VlIGhlcmUgaXMgdGhhdCBhdCAub3BlbiByZWFsIEhXIGRyaXZlcgphbHJl YWR5IGtub3dzIGl0cyBjb25zdHJhaW50cyBhbmQgY2FuIHByb3Blcmx5IHNldHVwLgpTbywgaW4g b3VyIGNhc2UgYXQgb3BlbiB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIGFsbCB0aGUKY29uc3RyYWlu dHMgYXZhaWxhYmxlIHRvIHRoZSBmcm9udGVuZCBhcyB3ZWxsLgpUaGF0IHdpbGwgbGVhZCB0byBs b3RzIG9mIHRleHQgaW4gZG9tYWluIGNvbmZpZ3VyYXRpb24gZmlsZQppZiBwcm9wYWdhdGVkIHZp YSBYZW5TdG9yZSAoZS5nLiB5b3UgaGF2ZSB0byBwdXQgYWxsIHBvc3NpYmxlCmNvbWJpbmF0aW9u cyBvZiBidWZmZXJzL3BlcmlvZHMgZGVwZW5kaW5nIG9uIG51bWJlciBvZgpjaGFubmVscywgc2Ft cGxlIHJhdGVzIGV0Yy4sIHlvdSBjYW5ub3QgdXNlIGxvZ2ljIGhlcmUgYXMgeW91IGNhbgppbiBh IHJlYWwgSFcgZHJpdmVyLCBvbmx5IHZhbHVlcykuIFNvLCBzdWNoIGNvbmZpZ3VyYXRpb24gZG9l c24ndApzZWVtIHRvIGJlIGFuIG9wdGlvbiBoZXJlLgoKSWYgd2UgZGVjaWRlIHRvIG5lZ290aWF0 ZSB0aGUgcGFyYW1ldGVycywgdGhlbiBpdCBjYW4ndCBiZSBkb25lCmF0IC5vcGVuIHN0YWdlIGFz IHdlbGwsIGFzIGF0IHRoaXMgbW9tZW50IHdlIGRvbid0IGtub3cgc3RyZWFtCnBhcmFtZXRlcnMg eWV0LCBlLmcuIHdlIGRvbid0IGtub3cgdGhlIG51bWJlciBvZiBjaGFubmVscywgUENNCmZvcm1h dCBldGMuLCBzbyB3ZSBjYW5ub3QgZXhwbGFpbiB0byB0aGUgYmFja2VuZCB3aGF0IHdlIHdhbnQu ClRodXMsIGl0IHNlZW1zIHRoYXQgd2UgbmVlZCB0byBtb3ZlIHRoZSBuZWdvdGlhdGlvbiB0byAu aHdfcGFyYW1zCmNhbGxiYWNrIHdoZXJlIHN0cmVhbSBwcm9wZXJ0aWVzIGFyZSBrbm93bi4gQnV0 IHRoaXMgbGVhdmVzIHRoZQpvbmx5IG9wdGlvbiB0byBhc2sgdGhlIGJhY2tlbmQgaWYgaXQgY2Fu IGhhbmRsZSB0aGUgcmVxdWVzdGVkCmJ1ZmZlci9wZXJpb2QgYW5kIG90aGVyIHBhcmFtZXRlcnMg b3Igbm90Li4uIFRoaXMgaXMgd2hhdCBJIGRvIG5vdyA6KAoKQW0gSSBtaXNzaW5nIHNvbWV0aGlu ZyBoZXJlPwo+IFRoZSBmb3JtYXQsIHRoZSBjaGFubmVscyBhbmQgdGhlIHNhbXBsZSByYXRlIGFy ZSBhbHJlYWR5IGluY2x1ZGVkIGluCj4gc25kX3BjbV9oYXJkd2FyZSBzZXR1cCwgc28gdGhpcyBz aG91bGQgYmUgT0ssIHVubGVzcyB0aGV5IGhhdmUKPiBpbXBsaWNpdCBsaW1pdGF0aW9ucyB3aXRo IGVhY2ggb3RoZXIgKGUuZy4gc29tZSBmb3JtYXQgaXMgYXZhaWxhYmxlCj4gb25seSB1bmRlciBz b21lIHJhdGUpLgpUaGFuayB5b3UsIHRoaXMgc2hvdWxkIGJlIHVwIHRvIHRoZSBvbmUgd2hvIHNl dHMgdXAgdGhlCmRvbWFpbiBjb25maWd1cmF0aW9uLiBUYWtpbmcgaW50byBhY2NvdW50IGVtYmVk ZGVkIG5hdHVyZSBvZgpvdXIgdXNlLWNhc2VzIHRoaXMgaXMgYWxtb3N0IGFsd2F5cyBkb2FibGUs IGFzIHRoZXNlIGFyZQpkZWZpbmVkIGF0IHN5c3RlbSBkZXNpZ24gdGltZSwgZS5nLiB3ZSBkZWZp bmUgbnVtYmVyIG9mIGNoYW5uZWxzCmFuZCB0aGVpciBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiBk b21haW4gZnVuY3Rpb25hbGl0eSBhbmQgbmVlZHMuCj4KPiBNYXliZSB0aGUgY2hhbm5lbHMgbmVl ZCB0byBiZSByZXZpc2l0ZWQsIHRob3VnaDsgdXN1YWxseSB5b3UgY2FuJ3QKPiBoYW5kbGUgYWxs IG51bWJlciBvZiBjaGFubmVscyBiZXR3ZWVuIG1pbiBhbmQgbWF4IGJ1dCBvbmx5IGV2ZW4KPiBu dW1iZXJzIG9yIHN1Y2guCkJ1dCBpZiBiYWNrZW5kIGNhbiBpbXBsZW1lbnQgc29tZSBmYW5jeSBz dHVmZiB3aXRoIHNvZnR3YXJlCm1peGluZyBldGMuLi4gVGhpcyBpcyB3aHkgSSBkaWRuJ3QgbGlt aXQgb24gdGhhdAo+Cj4gdGhhbmtzLAo+Cj4gVGFrYXNoaQpUaGFuayB5b3UsCk9sZWtzYW5kcgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==