From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tiwei Bie Subject: Re: [virtio-dev] Re: [PATCH net-next v2 0/5] virtio: support packed ring Date: Thu, 13 Sep 2018 16:59:20 +0800 Message-ID: <20180913085919.GA42049__31022.8147580803$1536829188$gmane$org@fbsd1.sh.intel.com> References: <20180711022711.7090-1-tiwei.bie@intel.com> <20180827170005-mutt-send-email-mst@kernel.org> <20180907012225.GA32677@debian> <20180907084509-mutt-send-email-mst@kernel.org> <20180910030053.GA15645@debian> <20180911053726.GA7472@debian> <20180912121457-mutt-send-email-mst@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180912121457-mutt-send-email-mst@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: "Michael S. Tsirkin" Cc: virtio-dev@lists.oasis-open.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, wexu@redhat.com List-Id: virtualization@lists.linuxfoundation.org T24gV2VkLCBTZXAgMTIsIDIwMTggYXQgMTI6MTY6MzJQTSAtMDQwMCwgTWljaGFlbCBTLiBUc2ly a2luIHdyb3RlOgo+IE9uIFR1ZSwgU2VwIDExLCAyMDE4IGF0IDAxOjM3OjI2UE0gKzA4MDAsIFRp d2VpIEJpZSB3cm90ZToKPiA+IE9uIE1vbiwgU2VwIDEwLCAyMDE4IGF0IDExOjMzOjE3QU0gKzA4 MDAsIEphc29uIFdhbmcgd3JvdGU6Cj4gPiA+IE9uIDIwMTjlubQwOeaciDEw5pelIDExOjAwLCBU aXdlaSBCaWUgd3JvdGU6Cj4gPiA+ID4gT24gRnJpLCBTZXAgMDcsIDIwMTggYXQgMDk6MDA6NDlB TSAtMDQwMCwgTWljaGFlbCBTLiBUc2lya2luIHdyb3RlOgo+ID4gPiA+ID4gT24gRnJpLCBTZXAg MDcsIDIwMTggYXQgMDk6MjI6MjVBTSArMDgwMCwgVGl3ZWkgQmllIHdyb3RlOgo+ID4gPiA+ID4g PiBPbiBNb24sIEF1ZyAyNywgMjAxOCBhdCAwNTowMDo0MFBNICswMzAwLCBNaWNoYWVsIFMuIFRz aXJraW4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gQXJlIHRoZXJlIHN0aWxsIHBsYW5zIHRvIHRlc3Qg dGhlIHBlcmZvcm1hbmNlIHdpdGggdm9zdCBwbWQ/Cj4gPiA+ID4gPiA+ID4gdmhvc3QgZG9lc24n dCBzZWVtIHRvIHNob3cgYSBwZXJmb3JtYW5jZSBnYWluIC4uLgo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiBJIHRyaWVkIHNvbWUgcGVyZm9ybWFuY2UgdGVzdHMgd2l0aCB2aG9zdCBQTUQuIElu IGd1ZXN0LCB0aGUKPiA+ID4gPiA+ID4gWERQIHByb2dyYW0gd2lsbCByZXR1cm4gWERQX0RST1Ag ZGlyZWN0bHkuIEFuZCBpbiBob3N0LCB0ZXN0cG1kCj4gPiA+ID4gPiA+IHdpbGwgZG8gdHhvbmx5 IGZ3ZC4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFdoZW4gYnVyc3Qgc2l6ZSBpcyAxIGFuZCBw YWNrZXQgc2l6ZSBpcyA2NCBpbiB0ZXN0cG1kIGFuZAo+ID4gPiA+ID4gPiB0ZXN0cG1kIG5lZWRz IHRvIGl0ZXJhdGUgNSBUeCBxdWV1ZXMgKGJ1dCBvbmx5IHRoZSBmaXJzdCB0d28KPiA+ID4gPiA+ ID4gcXVldWVzIGFyZSBlbmFibGVkKSB0byBwcmVwYXJlIGFuZCBpbmplY3QgcGFja2V0cywgSSBn b3QgfjEyJQo+ID4gPiA+ID4gPiBwZXJmb3JtYW5jZSBib29zdCAoNS43TXBwcyAtPiA2LjRNcHBz KS4gQW5kIGlmIHRoZSB2aG9zdCBQTUQKPiA+ID4gPiA+ID4gaXMgZmFzdGVyIChlLmcuIGp1c3Qg bmVlZCB0byBpdGVyYXRlIHRoZSBmaXJzdCB0d28gcXVldWVzIHRvCj4gPiA+ID4gPiA+IHByZXBh cmUgYW5kIGluamVjdCBwYWNrZXRzKSwgdGhlbiBJIGdvdCBzaW1pbGFyIHBlcmZvcm1hbmNlCj4g PiA+ID4gPiA+IGZvciBib3RoIHJpbmdzICh+OS45TXBwcykgKHBhY2tlZCByaW5nJ3MgcGVyZm9y bWFuY2UgY2FuIGJlCj4gPiA+ID4gPiA+IGxvd2VyLCBiZWNhdXNlIGl0J3MgbW9yZSBjb21wbGlj YXRlZCBpbiBkcml2ZXIuKQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gSSB0aGluayBwYWNrZWQg cmluZyBtYWtlcyB2aG9zdCBQTUQgZmFzdGVyLCBidXQgaXQgZG9lc24ndCBtYWtlCj4gPiA+ID4g PiA+IHRoZSBkcml2ZXIgZmFzdGVyLiBJbiBwYWNrZWQgcmluZywgdGhlIHJpbmcgaXMgc2ltcGxp ZmllZCwgYW5kCj4gPiA+ID4gPiA+IHRoZSBoYW5kbGluZyBvZiB0aGUgcmluZyBpbiB2aG9zdCAo ZGV2aWNlKSBpcyBhbHNvIHNpbXBsaWZpZWQsCj4gPiA+ID4gPiA+IGJ1dCB0aGluZ3MgYXJlIG5v dCBzaW1wbGlmaWVkIGluIGRyaXZlciwgZS5nLiBhbHRob3VnaCB0aGVyZSBpcwo+ID4gPiA+ID4g PiBubyBkZXNjIHRhYmxlIGluIHRoZSB2aXJ0cXVldWUgYW55bW9yZSwgZHJpdmVyIHN0aWxsIG5l ZWRzIHRvCj4gPiA+ID4gPiA+IG1haW50YWluIGEgcHJpdmF0ZSBkZXNjIHN0YXRlIHRhYmxlICh3 aGljaCBpcyBzdGlsbCBtYW5hZ2VkIGFzCj4gPiA+ID4gPiA+IGEgbGlzdCBpbiB0aGlzIHBhdGNo IHNldCkgdG8gc3VwcG9ydCB0aGUgb3V0LW9mLW9yZGVyIGRlc2MKPiA+ID4gPiA+ID4gcHJvY2Vz c2luZyBpbiB2aG9zdCAoZGV2aWNlKS4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEkgdGhpbmsg dGhpcyBwYXRjaCBzZXQgaXMgbWFpbmx5IHRvIG1ha2UgdGhlIGRyaXZlciBoYXZlIGEgZnVsbAo+ ID4gPiA+ID4gPiBmdW5jdGlvbmFsIHN1cHBvcnQgZm9yIHRoZSBwYWNrZWQgcmluZywgd2hpY2gg bWFrZXMgaXQgcG9zc2libGUKPiA+ID4gPiA+ID4gdG8gbGV2ZXJhZ2UgdGhlIHBhY2tlZCByaW5n IGZlYXR1cmUgaW4gdmhvc3QgKGRldmljZSkuIEJ1dCBJJ20KPiA+ID4gPiA+ID4gbm90IHN1cmUg d2hldGhlciB0aGVyZSBpcyBhbnkgb3RoZXIgYmV0dGVyIGlkZWEsIEknZCBsaWtlIHRvCj4gPiA+ ID4gPiA+IGhlYXIgeW91ciB0aG91Z2h0cy4gVGhhbmtzIQo+ID4gPiA+ID4gSnVzdCB0aGlzOiBK ZW5zIHNlZW1zIHRvIHJlcG9ydCBhIG5pY2UgZ2FpbiB3aXRoIHZpcnRpbyBhbmQKPiA+ID4gPiA+ IHZob3N0IHBtZCBhY3Jvc3MgdGhlIGJvYXJkLiBUcnkgdG8gY29tcGFyZSB2aXJ0aW8gYW5kCj4g PiA+ID4gPiB2aXJ0aW8gcG1kIHRvIHNlZSB3aGF0IGRvZXMgcG1kIGRvIGJldHRlcj8KPiA+ID4g PiBUaGUgdmlydGlvIFBNRCAoZHJpdmVycy9uZXQvdmlydGlvKSBpbiBEUERLIGRvZXNuJ3QgbmVl ZCB0byBzaGFyZQo+ID4gPiA+IHRoZSB2aXJ0aW8gcmluZyBvcGVyYXRpb24gY29kZSB3aXRoIG90 aGVyIGRyaXZlcnMgYW5kIGlzIGhpZ2hseQo+ID4gPiA+IG9wdGltaXplZCBmb3IgbmV0d29yay4g RS5nLiBpbiBSeCwgdGhlIFJ4IGJ1cnN0IGZ1bmN0aW9uIHdvbid0Cj4gPiA+ID4gY2hhaW4gZGVz Y3MuIFNvIHRoZSBJRCBtYW5hZ2VtZW50IGZvciB0aGUgUnggcmluZyBjYW4gYmUgcXVpdGUKPiA+ ID4gPiBzaW1wbGUgYW5kIHN0cmFpZ2h0Zm9yd2FyZCwgd2UganVzdCBuZWVkIHRvIGluaXRpYWxp emUgdGhlc2UgSURzCj4gPiA+ID4gd2hlbiBpbml0aWFsaXppbmcgdGhlIHJpbmcgYW5kIGRvbid0 IG5lZWQgdG8gY2hhbmdlIHRoZXNlIElEcwo+ID4gPiA+IGluIGRhdGEgcGF0aCBhbnltb3JlICh0 aGUgbWVyZ2FibGUgUnggY29kZSBpbiB0aGF0IHBhdGNoIHNldAo+ID4gPiA+IGFzc3VtZXMgdGhl IGRlc2NzIHdpbGwgYmUgd3JpdHRlbiBiYWNrIGluIG9yZGVyLCB3aGljaCBzaG91bGQgYmUKPiA+ ID4gPiBmaXhlZC4gSS5lLiwgdGhlIElEIGluIHRoZSBkZXNjIHNob3VsZCBiZSB1c2VkIHRvIGlu ZGV4IHZxLT5kZXNjeFtdKS4KPiA+ID4gPiBUaGUgVHggY29kZSBpbiB0aGF0IHBhdGNoIHNldCBh bHNvIGFzc3VtZXMgdGhlIGRlc2NzIHdpbGwgYmUKPiA+ID4gPiB3cml0dGVuIGJhY2sgYnkgZGV2 aWNlIGluIG9yZGVyLCB3aGljaCBzaG91bGQgYmUgZml4ZWQuCj4gPiA+IAo+ID4gPiBZZXMgaXQg aXMuIEkgdGhpbmsgSSd2ZSBwb2ludGVkIGl0IG91dCBpbiBzb21lIGVhcmx5IHZlcnNpb24gb2Yg cG1kIHBhdGNoLgo+ID4gPiBTbyBJIHN1c3BlY3QgcGFydCAob3IgYWxsKSBvZiB0aGUgYm9vc3Qg bWF5IGNvbWUgZnJvbSBpbiBvcmRlciBmZWF0dXJlLgo+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiBC dXQgaW4ga2VybmVsIHZpcnRpbyBkcml2ZXIsIHRoZSB2aXJ0aW9fcmluZy5jIGlzIHZlcnkgZ2Vu ZXJpYy4KPiA+ID4gPiBUaGUgZW5xdWV1ZSAodmlydHF1ZXVlX2FkZCgpKSBhbmQgZGVxdWV1ZSAo dmlydHF1ZXVlX2dldF9idWZfY3R4KCkpCj4gPiA+ID4gZnVuY3Rpb25zIG5lZWQgdG8gc3VwcG9y dCBhbGwgdGhlIHZpcnRpbyBkZXZpY2VzIGFuZCBzaG91bGQgYmUKPiA+ID4gPiBhYmxlIHRvIGhh bmRsZSBhbGwgdGhlIHBvc3NpYmxlIGNhc2VzIHRoYXQgbWF5IGhhcHBlbi4gU28gYWx0aG91Z2gK PiA+ID4gPiB0aGUgcGFja2VkIHJpbmcgY2FuIGJlIHZlcnkgZWZmaWNpZW50IGluIHNvbWUgY2Fz ZXMsIGN1cnJlbnRseQo+ID4gPiA+IHRoZSByb29tIHRvIG9wdGltaXplIHRoZSBwZXJmb3JtYW5j ZSBpbiBrZXJuZWwncyB2aXJ0aW9fcmluZy5jCj4gPiA+ID4gaXNuJ3QgdGhhdCBtdWNoLiBJZiB3 ZSB3YW50IHRvIHRha2UgdGhlIGZ1bGx5IGFkdmFudGFnZSBvZiB0aGUKPiA+ID4gPiBwYWNrZWQg cmluZydzIGVmZmljaWVuY3ksIHdlIG5lZWQgc29tZSBmdXJ0aGVyIGUuZy4gQVBJIGNoYW5nZXMK PiA+ID4gPiBpbiB2aXJ0aW9fcmluZy5jLCB3aGljaCBzaG91bGRuJ3QgYmUgcGFydCBvZiB0aGlz IHBhdGNoIHNldC4KPiA+ID4gCj4gPiA+IENvdWxkIHlvdSBwbGVhc2Ugc2hhcmUgbW9yZSB0aG91 Z2h0cyBvbiB0aGlzIGUuZyBob3cgdG8gaW1wcm92ZSB0aGUgQVBJPwo+ID4gPiBOb3RpY2Ugc2lu Y2UgdGhlIEFQSSBpcyBzaGFyZWQgYnkgYm90aCBzcGxpdCByaW5nIGFuZCBwYWNrZWQgcmluZywg aXQgbWF5Cj4gPiA+IGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHNwbGl0IHJpbmcgYXMgd2Vs bC4gT25lIGNhbiBlYXNpbHkgaW1hZ2luZSBhCj4gPiA+IGJhdGNoaW5nIEFQSSwgYnV0IGl0IGRv ZXMgbm90IGhhdmUgbWFueSByZWFsIHVzZXJzIG5vdywgdGhlIG9ubHkgY2FzZSBpcyB0aGUKPiA+ ID4gWERQIHRyYW5zbWlzc2lvbiB3aGljaCBjYW4gYWNjZXB0IGFuIGFycmF5IG9mIFhEUCBmcmFt ZXMuCj4gPiAKPiA+IEkgZG9uJ3QgaGF2ZSBkZXRhaWxlZCB0aG91Z2h0cyBvbiB0aGlzIHlldC4g QnV0IGtlcm5lbCdzCj4gPiB2aXJ0aW9fcmluZy5jIGlzIHF1aXRlIGdlbmVyaWMgY29tcGFyZWQg d2l0aCB3aGF0IHdlIGRpZAo+ID4gaW4gdmlydGlvIFBNRC4KPiAKPiBJbiB3aGF0IHdheT8gV2hh dCBhcmUgc29tZSB0aGluZ3MgdGhhdCBhcmVuJ3QgaW1wbGVtZW50ZWQgdGhlcmU/CgpCZWxvdyBp cyB0aGUgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSB2aXJ0cXVldWVfYWRkKCkKZm9yIFJ4IHJp bmcgaW4gdmlydGlvIFBNRDoKCmh0dHBzOi8vZ2l0aHViLmNvbS9EUERLL2RwZGsvYmxvYi8zNjA1 OTY4YzJmYTcvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19yeHR4LmMjTDI3OC1MMzA0CgpBbmQg YmVsb3cgaXMgdGhlIGNvZGUgb2YgdmlydHF1ZXVlX2FkZCgpIGluIExpbnV4OgoKaHR0cHM6Ly9n aXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2Jsb2IvNTRlZGE5ZGYxN2YzL2RyaXZlcnMvdmlydGlv L3ZpcnRpb19yaW5nLmMjTDI3NS1MNDE3CgpJbiB2aXJ0aW8gUE1ELCBmb3IgZWFjaCBwYWNrZXQg KG1idWYpLCB0aGUgY29kZSBpcyBwcmV0dHkKc3RyYWlnaHRmb3J3YXJkLCBpdCB3aWxsIGp1c3Qg Y2hlY2sgd2hldGhlciB0aGVyZSBpcyBvbmUKYXZhaWxhYmxlIGRlc2MuIElmIGl0J3MgdHJ1ZSwg aXQgd2lsbCBqdXN0IGZpbGwgdGhpcyBkZXNjCmRpcmVjdGx5LgoKQnV0IGluIHZpcnRxdWV1ZV9h ZGQoKSwgaXQncyBvYnZpb3VzIHRoYXQsIHRoZSBsb2dpYyBpcwptdWNoIG1vcmUgY29tcGxpY2F0 ZWQgb3IgZ2VuZXJpYy4gSXQncyBzdXBwb3NlZCB0byBiZQphYmxlIHRvIGhhbmRsZSBzZ2xpc3Qg KHdoaWNoIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIElOCmJ1ZmZlcnMgYW5kIG11bHRpcGxlIE9V VCBidWZmZXJzIGF0IHRoZSBzYW1lIHRpbWUpLCBhbmQKaXQgd2lsbCB0cnkgdG8gdXNlIGluZGly ZWN0IGRlc2NyaXB0b3JzLiBUaGVuIGl0IG5lZWRzCnNldmVyYWwgbG9vcHMgdG8gcGFyc2UgdGhl IHNnbGlzdC4gVGhhdCdzIHdoeSBJIHNhaWQKaXQncyBxdWl0ZSBnZW5lcmljLgoKPiAKPiBJZiB3 aGF0IHlvdSBzYXkgaXMgdHJ1ZSB0aGVuIHdlIHNob3VsZCB0YWtlIGEgY2FyZWZ1bCBsb29rCj4g YW5kIG5vdCBzdXBwb3J0aW5nIHRoZXNlIGdlbmVyaWMgdGhpbmdzIHdpdGggcGFja2VkIGxheW91 dC4KPiBPbmNlIHdlIGRvIHN1cHBvcnQgdGhlbSBpdCB3aWxsIGJlIHRvbyBsYXRlIGFuZCB3ZSB3 b24ndAo+IGJlIGFibGUgdG8gZ2V0IHBlcmZvcm1hbmNlIGJhY2suCgpJIHRoaW5rIGl0J3MgYSBn b29kIHBvaW50IHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBzdXBwb3J0CmV2ZXJ5dGhpbmcgaW4gcGFj a2VkIHJpbmcgKGVzcGVjaWFsbHkgdGhlc2Ugd2hpY2ggd291bGQKaHVydCB0aGUgcGVyZm9ybWFu Y2UpLCBhcyB0aGUgcGFja2VkIHJpbmcgYWltcyBhdCBoaWdoCnBlcmZvcm1hbmNlLiBJJ20gYWxz byB3b25kZXJpbmcgYWJvdXQgdGhlIGZlYXR1cmVzLiBJcwp0aGVyZSBhbnkgcG9zc2liaWxpdHkg dGhhdCB3ZSB3b24ndCBzdXBwb3J0IHRoZSBvdXQgb2YKb3JkZXIgcHJvY2Vzc2luZyAoYXQgbGVh c3Qgbm90IGJ5IGRlZmF1bHQpIGluIHBhY2tlZCByaW5nPwpJZiBJIGRpZG4ndCBtaXNzIGFueXRo aW5nLCB0aGUgbmVlZCB0byBzdXBwb3J0IG91dCBvZiBvcmRlcgpwcm9jZXNzaW5nIGluIHBhY2tl ZCByaW5nIHdpbGwgbWFrZSB0aGUgZGF0YSBzdHJ1Y3R1cmUKaW5zaWRlIHRoZSBkcml2ZXIgbm90 IGNhY2hlIGZyaWVuZGx5IHdoaWNoIGlzIHNpbWlsYXIgdG8KdGhlIGNhc2Ugb2YgdGhlIGRlc2Ny aXB0b3IgdGFibGUgaW4gdGhlIHNwbGl0IHJpbmcgKHRoZQpkaWZmZXJlbmNlIGlzIHRoYXQsIGl0 IG9ubHkgaGFwcGVucyBpbiBkcml2ZXIgbm93KS4KCgo+IAo+IAo+IAo+ID4gPiAKPiA+ID4gPiBT bwo+ID4gPiA+IEkgc3RpbGwgdGhpbmsgdGhpcyBwYXRjaCBzZXQgaXMgbWFpbmx5IHRvIG1ha2Ug dGhlIGtlcm5lbCB2aXJ0aW8KPiA+ID4gPiBkcml2ZXIgdG8gaGF2ZSBhIGZ1bGwgZnVuY3Rpb25h bCBzdXBwb3J0IG9mIHRoZSBwYWNrZWQgcmluZywgYW5kCj4gPiA+ID4gd2UgY2FuJ3QgZXhwZWN0 IGltcHJlc3NpdmUgcGVyZm9ybWFuY2UgYm9vc3Qgd2l0aCBpdC4KPiA+ID4gCj4gPiA+IFdlIGNh biBvbmx5IGdhaW4gd2hlbiB2aXJ0aW8gcmluZyBsYXlvdXQgaXMgdGhlIGJvdHRsZW5lY2suIElm IHRoZXJlJ3JlCj4gPiA+IGJvdHRsZW5lY2tzIGVsc2V3aGVyZSwgd2UgcHJvYmFibHkgd29uJ3Qg c2VlIGFueSBpbmNyZWFzaW5nIGluIHRoZSBudW1iZXJzLgo+ID4gPiBWaG9zdC1uZXQgaXMgYW4g ZXhhbXBsZSwgYW5kIGxvdHMgb2Ygb3B0aW1pemF0aW9ucyBoYXZlIHByb3ZlZCB0aGF0IHZpcnRp bwo+ID4gPiByaW5nIGlzIG5vdCB0aGUgbWFpbiBib3R0bGVuZWNrIGZvciB0aGUgY3VycmVudCBj b2Rlcy4gSSBzdXNwZWN0IGl0IGFsc28gdGhlCj4gPiA+IGNhc2Ugb2YgdmlydGlvIGRyaXZlci4g RGlkIHBlcmYgdGVsbCB1cyBhbnkgaW50ZXJlc3RpbmcgdGhpbmdzIGluIHZpcnRpbwo+ID4gPiBk cml2ZXI/Cj4gPiA+IAo+ID4gPiBUaGFua3MKPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiBPbiBXZWQsIEp1bCAxMSwgMjAxOCBhdCAxMDoyNzowNkFNICswODAwLCBUaXdl aSBCaWUgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiBIZWxsbyBldmVyeW9uZSwKPiA+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gVGhpcyBwYXRjaCBzZXQgaW1wbGVtZW50cyBwYWNrZWQgcmlu ZyBzdXBwb3J0IGluIHZpcnRpbyBkcml2ZXIuCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiA+IFNvbWUgZnVuY3Rpb25hbCB0ZXN0cyBoYXZlIGJlZW4gZG9uZSB3aXRoIEphc29uJ3MKPiA+ ID4gPiA+ID4gPiA+IHBhY2tlZCByaW5nIGltcGxlbWVudGF0aW9uIGluIHZob3N0Ogo+ID4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxOC83LzMv MzMKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gQm90aCBvZiBwaW5nIGFuZCBuZXRw ZXJmIHdvcmtlZCBhcyBleHBlY3RlZC4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4g djEgLT4gdjI6Cj4gPiA+ID4gPiA+ID4gPiAtIFVzZSBSRUFEX09OQ0UoKSB0byByZWFkIGV2ZW50 IG9mZl93cmFwIGFuZCBmbGFncyB0b2dldGhlciAoSmFzb24pOwo+ID4gPiA+ID4gPiA+ID4gLSBB ZGQgY29tbWVudHMgcmVsYXRlZCB0byBjY3cgKEphc29uKTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+ID4gUkZDICh2NikgLT4gdjE6Cj4gPiA+ID4gPiA+ID4gPiAtIEF2b2lkIGV4dHJh IHZpcnRpb193bWIoKSBpbiB2aXJ0cXVldWVfZW5hYmxlX2NiX2RlbGF5ZWRfcGFja2VkKCkKPiA+ ID4gPiA+ID4gPiA+ICAgIHdoZW4gZXZlbnQgaWR4IGlzIG9mZiAoSmFzb24pOwo+ID4gPiA+ID4g PiA+ID4gLSBGaXggYnVmcyBjYWxjdWxhdGlvbiBpbiB2aXJ0cXVldWVfZW5hYmxlX2NiX2RlbGF5 ZWRfcGFja2VkKCkgKEphc29uKTsKPiA+ID4gPiA+ID4gPiA+IC0gVGVzdCB0aGUgc3RhdGUgb2Yg dGhlIGRlc2MgYXQgdXNlZF9pZHggaW5zdGVhZCBvZiBsYXN0X3VzZWRfaWR4Cj4gPiA+ID4gPiA+ ID4gPiAgICBpbiB2aXJ0cXVldWVfZW5hYmxlX2NiX2RlbGF5ZWRfcGFja2VkKCkgKEphc29uKTsK PiA+ID4gPiA+ID4gPiA+IC0gU2F2ZSB3cmFwIGNvdW50ZXIgKGFzIHBhcnQgb2YgcXVldWUgc3Rh dGUpIGluIHRoZSByZXR1cm4gdmFsdWUKPiA+ID4gPiA+ID4gPiA+ICAgIG9mIHZpcnRxdWV1ZV9l bmFibGVfY2JfcHJlcGFyZV9wYWNrZWQoKTsKPiA+ID4gPiA+ID4gPiA+IC0gUmVmaW5lIHRoZSBw YWNrZWQgcmluZyBkZWZpbml0aW9ucyBpbiB1YXBpOwo+ID4gPiA+ID4gPiA+ID4gLSBSZWJhc2Ug b24gdGhlIG5ldC1uZXh0IHRyZWU7Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IFJG QyB2NSAtPiBSRkMgdjY6Cj4gPiA+ID4gPiA+ID4gPiAtIEF2b2lkIHRyYWNraW5nIGFkZHIvbGVu L2ZsYWdzIHdoZW4gRE1BIEFQSSBpc24ndCB1c2VkIChNU1QvSmFzb24pOwo+ID4gPiA+ID4gPiA+ ID4gLSBEZWZpbmUgd3JhcCBjb3VudGVyIGFzIGJvb2wgKEphc29uKTsKPiA+ID4gPiA+ID4gPiA+ IC0gVXNlIEFMSUdOKCkgaW4gdnJpbmdfaW5pdF9wYWNrZWQoKSAoSmFzb24pOwo+ID4gPiA+ID4g PiA+ID4gLSBBdm9pZCB1c2luZyBwb2ludGVyIHRvIHRyYWNrIGBuZXh0YCBpbiBkZXRhY2hfYnVm X3BhY2tlZCgpIChKYXNvbik7Cj4gPiA+ID4gPiA+ID4gPiAtIEFkZCBjb21tZW50cyBmb3IgYmFy cmllcnMgKEphc29uKTsKPiA+ID4gPiA+ID4gPiA+IC0gRG9uJ3QgZW5hYmxlIFJJTkdfUEFDS0VE IG9uIGNjdyBmb3Igbm93IChub3RpY2VkIGJ5IEphc29uKTsKPiA+ID4gPiA+ID4gPiA+IC0gUmVm aW5lIHRoZSBtZW1vcnkgYmFycmllciBpbiB2aXJ0cXVldWVfcG9sbCgpOwo+ID4gPiA+ID4gPiA+ ID4gLSBBZGQgYSBtaXNzaW5nIG1lbW9yeSBiYXJyaWVyIGluIHZpcnRxdWV1ZV9lbmFibGVfY2Jf ZGVsYXllZF9wYWNrZWQoKTsKPiA+ID4gPiA+ID4gPiA+IC0gUmVtb3ZlIHRoZSBoYWNrcyBpbiB2 aXJ0cXVldWVfZW5hYmxlX2NiX3ByZXBhcmVfcGFja2VkKCk7Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+IFJGQyB2NCAtPiBSRkMgdjU6Cj4gPiA+ID4gPiA+ID4gPiAtIFNhdmUgRE1B IGFkZHIsIGV0YyBpbiBkZXNjIHN0YXRlIChKYXNvbik7Cj4gPiA+ID4gPiA+ID4gPiAtIFRyYWNr IHVzZWQgd3JhcCBjb3VudGVyOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBSRkMg djMgLT4gUkZDIHY0Ogo+ID4gPiA+ID4gPiA+ID4gLSBNYWtlIElEIGFsbG9jYXRpb24gc3VwcG9y dCBvdXQtb2Ytb3JkZXIgKEphc29uKTsKPiA+ID4gPiA+ID4gPiA+IC0gVmFyaW91cyBmaXhlcyBm b3IgRVZFTlRfSURYIHN1cHBvcnQ7Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IFJG QyB2MiAtPiBSRkMgdjM6Cj4gPiA+ID4gPiA+ID4gPiAtIFNwbGl0IGludG8gc21hbGwgcGF0Y2hl cyAoSmFzb24pOwo+ID4gPiA+ID4gPiA+ID4gLSBBZGQgaGVscGVyIHZpcnRxdWV1ZV91c2VfaW5k aXJlY3QoKSAoSmFzb24pOwo+ID4gPiA+ID4gPiA+ID4gLSBKdXN0IHNldCBpZCBmb3IgdGhlIGxh c3QgZGVzY3JpcHRvciBvZiBhIGxpc3QgKEphc29uKTsKPiA+ID4gPiA+ID4gPiA+IC0gQ2FsY3Vs YXRlIHRoZSBwcmV2IGluIHZpcnRxdWV1ZV9hZGRfcGFja2VkKCkgKEphc29uKTsKPiA+ID4gPiA+ ID4gPiA+IC0gRml4L2ltcHJvdmUgZGVzYyBzdXBwcmVzc2lvbiBjb2RlIChKYXNvbi9NU1QpOwo+ ID4gPiA+ID4gPiA+ID4gLSBSZWZpbmUgdGhlIGNvZGUgbGF5b3V0IGZvciBYWFhfc3BsaXQvcGFj a2VkIGFuZCB3cmFwcGVycyAoTVNUKTsKPiA+ID4gPiA+ID4gPiA+IC0gRml4IHRoZSBjb21tZW50 cyBhbmQgQVBJIGluIHVhcGkgKE1TVCk7Cj4gPiA+ID4gPiA+ID4gPiAtIFJlbW92ZSB0aGUgQlVH X09OKCkgZm9yIGluZGlyZWN0IChKYXNvbik7Cj4gPiA+ID4gPiA+ID4gPiAtIFNvbWUgb3RoZXIg cmVmaW5lbWVudHMgYW5kIGJ1ZyBmaXhlczsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ ID4gUkZDIHYxIC0+IFJGQyB2MjoKPiA+ID4gPiA+ID4gPiA+IC0gQWRkIGluZGlyZWN0IGRlc2Ny aXB0b3Igc3VwcG9ydCAtIGNvbXBpbGUgdGVzdCBvbmx5Owo+ID4gPiA+ID4gPiA+ID4gLSBBZGQg ZXZlbnQgc3VwcHJlc3Npb24gc3VwcHJ0IC0gY29tcGlsZSB0ZXN0IG9ubHk7Cj4gPiA+ID4gPiA+ ID4gPiAtIE1vdmUgdnJpbmdfcGFja2VkX2luaXQoKSBvdXQgb2YgdWFwaSAoSmFzb24sIE1TVCk7 Cj4gPiA+ID4gPiA+ID4gPiAtIE1lcmdlIHR3byBsb29wcyBpbnRvIG9uZSBpbiB2aXJ0cXVldWVf YWRkX3BhY2tlZCgpIChKYXNvbik7Cj4gPiA+ID4gPiA+ID4gPiAtIFNwbGl0IHZyaW5nX3VubWFw X29uZSgpIGZvciBwYWNrZWQgcmluZyBhbmQgc3BsaXQgcmluZyAoSmFzb24pOwo+ID4gPiA+ID4g PiA+ID4gLSBBdm9pZCB1c2luZyAnJScgb3BlcmF0b3IgKEphc29uKTsKPiA+ID4gPiA+ID4gPiA+ IC0gUmVuYW1lIGZyZWVfaGVhZCAtPiBuZXh0X2F2YWlsX2lkeCAoSmFzb24pOwo+ID4gPiA+ID4g PiA+ID4gLSBBZGQgY29tbWVudHMgZm9yIHZpcnRpb193bWIoKSBpbiB2aXJ0cXVldWVfYWRkX3Bh Y2tlZCgpIChKYXNvbik7Cj4gPiA+ID4gPiA+ID4gPiAtIFNvbWUgb3RoZXIgcmVmaW5lbWVudHMg YW5kIGJ1ZyBmaXhlczsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gVGhhbmtzIQo+ ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBUaXdlaSBCaWUgKDUpOgo+ID4gPiA+ID4g PiA+ID4gICAgdmlydGlvOiBhZGQgcGFja2VkIHJpbmcgZGVmaW5pdGlvbnMKPiA+ID4gPiA+ID4g PiA+ICAgIHZpcnRpb19yaW5nOiBzdXBwb3J0IGNyZWF0aW5nIHBhY2tlZCByaW5nCj4gPiA+ID4g PiA+ID4gPiAgICB2aXJ0aW9fcmluZzogYWRkIHBhY2tlZCByaW5nIHN1cHBvcnQKPiA+ID4gPiA+ ID4gPiA+ICAgIHZpcnRpb19yaW5nOiBhZGQgZXZlbnQgaWR4IHN1cHBvcnQgaW4gcGFja2VkIHJp bmcKPiA+ID4gPiA+ID4gPiA+ICAgIHZpcnRpb19yaW5nOiBlbmFibGUgcGFja2VkIHJpbmcKPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gICBkcml2ZXJzL3MzOTAvdmlydGlvL3ZpcnRp b19jY3cuYyAgIHwgICAxNCArCj4gPiA+ID4gPiA+ID4gPiAgIGRyaXZlcnMvdmlydGlvL3ZpcnRp b19yaW5nLmMgICAgICAgfCAxMzY1ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0KPiA+ID4g PiA+ID4gPiA+ICAgaW5jbHVkZS9saW51eC92aXJ0aW9fcmluZy5oICAgICAgICB8ICAgIDggKy0K PiA+ID4gPiA+ID4gPiA+ICAgaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19jb25maWcuaCB8ICAg IDMgKwo+ID4gPiA+ID4gPiA+ID4gICBpbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX3JpbmcuaCAg IHwgICA0MyArCj4gPiA+ID4gPiA+ID4gPiAgIDUgZmlsZXMgY2hhbmdlZCwgMTE1NyBpbnNlcnRp b25zKCspLCAyNzYgZGVsZXRpb25zKC0pCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ IC0tIAo+ID4gPiA+ID4gPiA+ID4gMi4xOC4wCj4gPiA+ID4gPiA+ID4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g PiA+ID4gPiA+ID4gVG8gdW5zdWJzY3JpYmUsIGUtbWFpbDogdmlydGlvLWRldi11bnN1YnNjcmli ZUBsaXN0cy5vYXNpcy1vcGVuLm9yZwo+ID4gPiA+ID4gPiA+IEZvciBhZGRpdGlvbmFsIGNvbW1h bmRzLCBlLW1haWw6IHZpcnRpby1kZXYtaGVscEBsaXN0cy5vYXNpcy1vcGVuLm9yZwo+ID4gPiA+ ID4gPiA+IAo+ID4gPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxp bnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWls bWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u