From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 19 Oct 2022 18:01:24 +0800 From: Tony Lu Subject: Re: [virtio-dev] [PATCH 0/2] introduce virtio-ism: internal shared memory device Message-ID: Reply-To: Tony Lu References: <20221017074724.89569-1-xuanzhuo@linux.alibaba.com> <1666146893.4959266-1-xuanzhuo@linux.alibaba.com> <1666152510.9531486-1-xuanzhuo@linux.alibaba.com> <1666159341.0495708-1-xuanzhuo@linux.alibaba.com> <36c27c6b-e8b5-5597-d1b0-c7fd3c3388dd@redhat.com> MIME-Version: 1.0 In-Reply-To: <36c27c6b-e8b5-5597-d1b0-c7fd3c3388dd@redhat.com> Content-Type: text/plain; charset="gb2312" Content-Disposition: inline Content-Transfer-Encoding: base64 To: Jason Wang Cc: Xuan Zhuo , virtio-dev@lists.oasis-open.org, hans@linux.alibaba.com, herongguang@linux.alibaba.com, zmlcc@linux.alibaba.com, dust.li@linux.alibaba.com, zhenzao@linux.alibaba.com, helinguo@linux.alibaba.com, gerry@linux.alibaba.com, mst@redhat.com, cohuck@redhat.com, Stefan Hajnoczi List-ID: T24gV2VkLCBPY3QgMTksIDIwMjIgYXQgMDU6MDQ6NThQTSArMDgwMCwgSmFzb24gV2FuZyB3cm90 ZToKPiAKPiDU2iAyMDIyLzEwLzE5IDE2OjA3LCBUb255IEx1INC0tcA6Cj4gPiBPbiBXZWQsIE9j dCAxOSwgMjAyMiBhdCAwMjowMjoyMVBNICswODAwLCBYdWFuIFpodW8gd3JvdGU6Cj4gPiA+IE9u IFdlZCwgMTkgT2N0IDIwMjIgMTI6MzY6MzUgKzA4MDAsIEphc29uIFdhbmcgPGphc293YW5nQHJl ZGhhdC5jb20+IHdyb3RlOgo+ID4gPiA+IE9uIFdlZCwgT2N0IDE5LCAyMDIyIGF0IDEyOjIyIFBN IFh1YW4gWmh1byA8eHVhbnpodW9AbGludXguYWxpYmFiYS5jb20+IHdyb3RlOgo+ID4gPiA+ID4g T24gV2VkLCAxOSBPY3QgMjAyMiAxMTo1Njo1MiArMDgwMCwgSmFzb24gV2FuZyA8amFzb3dhbmdA cmVkaGF0LmNvbT4gd3JvdGU6Cj4gPiA+ID4gPiA+IE9uIFdlZCwgT2N0IDE5LCAyMDIyIGF0IDEw OjQyIEFNIFh1YW4gWmh1byA8eHVhbnpodW9AbGludXguYWxpYmFiYS5jb20+IHdyb3RlOgo+ID4g PiA+ID4gPiA+IE9uIE1vbiwgMTcgT2N0IDIwMjIgMTY6MTc6MzEgKzA4MDAsIEphc29uIFdhbmcg PGphc293YW5nQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+IEhpIEphc29uLAo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IEkg dGhpbmsgdGhlcmUgbWF5IGJlIHNvbWUgcHJvYmxlbXMgd2l0aCB0aGUgZGlyZWN0aW9uIHdlIGFy ZSBkaXNjdXNzaW5nLgo+ID4gPiA+ID4gPiBQcm9iYWJseSBub3QuCj4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiBBcyBmYXIgYXMgd2UgYXJlIGZvY3VzaW5nIG9uIHRlY2hub2xvZ3ksIHRoZXJlJ3Mg bm90aGluZyB3cm9uZyBmcm9tIG15Cj4gPiA+ID4gPiA+IHBlcnNwZWN0aXZlLiBBbmQgdGhpcyBp cyBob3cgdGhlIGNvbW11bml0eSB3b3Jrcy4gWW91ciBpZGVhIG5lZWRzIHRvCj4gPiA+ID4gPiA+ IGJlIGp1c3RpZmllZCBhbmQgcGVvcGxlIGFyZSBmcmVlIHRvIHJhaXNlIGFueSB0ZWNobmljYWwg cXVlc3Rpb25zCj4gPiA+ID4gPiA+IGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgeW91J3ZlIHBvc3Rl ZCBhIHNwZWMgY2hhbmdlIHdpdGggcHJvdG90eXBlCj4gPiA+ID4gPiA+IGNvZGVzIGJ1dCBub3Qg b25seSB0aGUgaWRlYS4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gT3VyCj4gPiA+ID4gPiA+ ID4gZ29hbCBpcyB0byBhZGQgYW4gbmV3IGlzbSBkZXZpY2UuIEFzIGZhciBhcyB0aGUgc3BlYyBp cyBjb25jZXJuZWQsIHdlIGFyZSBub3QKPiA+ID4gPiA+ID4gPiBjb25jZXJuZWQgd2l0aCB0aGUg aW1wbGVtZW50YXRpb24gb2YgdGhlIGJhY2tlbmQuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gVGhlIGRpcmVjdGlvbiB3ZSBzaG91bGQgZGlzY3VzcyBpcyB3aGF0IGlzIHRoZSBkaWZmZXJl bmNlIGJldHdlZW4gdGhlIGlzbSBkZXZpY2UKPiA+ID4gPiA+ID4gPiBhbmQgb3RoZXIgZGV2aWNl cyBzdWNoIGFzIHZpcnRpby1uZXQsIGFuZCB3aGV0aGVyIGl0IGlzIG5lY2Vzc2FyeSB0byBpbnRy b2R1Y2UKPiA+ID4gPiA+ID4gPiB0aGlzIG5ldyBkZXZpY2UuCj4gPiA+ID4gPiA+IFRoaXMgaXMg c29tZWhvdyB3aGF0IEkgd2FudCB0byBhc2ssIGFjdHVhbGx5IGl0J3Mgbm90IGEgY29tcGFyaXNv bgo+ID4gPiA+ID4gPiB3aXRoIHZpcnRpby1uZXQgYnV0Ogo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gLSB2aXJ0aW8tcm9jZQo+ID4gPiA+ID4gPiAtIHZpcnRpby12aG9zdC11c2VyCj4gPiA+ID4g PiA+IC0gdmlydGlvLShwKW1lbQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gb3Igd2hldGhlciB3 ZSBjYW4gc2ltcGx5IGFkZCBmZWF0dXJlcyB0byB0aG9zZSBkZXZpY2VzIHRvIGFjaGlldmUgd2hh dAo+ID4gPiA+ID4gPiB5b3Ugd2FudCB0byBkbyBoZXJlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBZ ZXMsIHRoaXMgaXMgbXkgcHJpb3JpdHkgdG8gZGlzY3Vzcy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4g QXQgdGhlIG1vbWVudCwgSSB0aGluayB0aGUgbW9zdCBzaW1pbGFyIHRvIGlzbSBpcyB0aGUgVmhv c3QtdXNlciBEZXZpY2UgQmFja2VuZAo+ID4gPiA+ID4gb2YgdmlydGlvLXZob3N0LXVzZXIuCj4g PiA+ID4gPiAKPiA+ID4gPiA+IE15IHVuZGVyc3RhbmRpbmcgb2YgaXQgaXMgdG8gbWFwIGFueSB2 aXJ0aW8gZGV2aWNlIHRvIGFub3RoZXIgdm0gYXMgYSB2dnUKPiA+ID4gPiA+IGRldmljZS4KPiA+ ID4gPiBZZXMsIHNvIGEgcG9zc2libGUgd2F5IGlzIHRvIGhhdmUgYSBkZXZpY2Ugd2l0aCBtZW1v cnkgem9uZS9yZWdpb24KPiA+ID4gPiBwcm92aXNpb24gYW5kIG1hbmFnZW1lbnQgdGhlbiBtYXAg aXQgdmlhIHZpcnRpby12aG9zdC11c2VyLgo+ID4gPiAKPiA+ID4gWWVzLCB0aGVyZSBpcyBzdWNo IGEgcG9zc2liaWxpdHkuIHZpcnRpby12aG9zdC11c2VyIG1ha2VzIG1lIGZlZWwgdGhhdCB3aGF0 IGNhbgo+ID4gPiBiZSBzaGFyZWQgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIG9mIG1h cC4KPiA+ID4gCj4gPiA+IEJ1dCBpbiB0aGUgdm0gdG8gcHJvdmlkZSB0aGUgaW50ZXJmYWNlIHRv IHRoZSB1cHBlciBsYXllciwgSSB0aGluayB0aGlzIGlzIHRoZQo+ID4gPiB3b3JrIG9mIGlzbS4K PiA+ID4gCj4gPiA+IEJ1dCBvbmUgb2YgdGhlIHJlYXNvbnMgd2h5IEkgZGlkbid0IHVzZSB2aXJ0 aW8tdmhvc3QtdXNlciBkaXJlY3RseSBpcyB0aGF0IGluCj4gPiA+IGFub3RoZXIgdm0sIHRoZSBn dWVzdCBjYW4gb3BlcmF0ZSB0aGUgdnZ1IGRldmljZSwgd2hpY2ggd2UgaG9wZSB0aGF0IGJvdGgg c2lkZXMKPiA+ID4gYXJlIGVxdWFsIHRvIHRoZSBpc20gZGV2aWNlLgo+ID4gPiAKPiA+ID4gU28g SSB3YW50IHRvIGFncmVlIG9uIGEgcXVlc3Rpb24gZmlyc3Q6IHdobyB3aWxsIHByb3ZpZGUgdGhl IHVwcGVyIGxheWVyIHdpdGgKPiA+ID4gdGhlIGFiaWxpdHkgdG8gc2hhcmUgdGhlIG1lbW9yeSBh cmVhPwo+ID4gPiAKPiA+ID4gT3VyIGFuc3dlciBpcyBhIG5ldyBpc20gZGV2aWNlLiBIb3cgZG9l cyB0aGlzIGRldmljZSBhY2hpZXZlIG1lbW9yeSBzaGFyaW5nLCBJCj4gPiA+IHRoaW5rIGlzIHRo ZSBzZWNvbmQgcXVlc3Rpb24uCj4gPiA+IAo+ID4gPiAKPiA+ID4gPiA+ICBGcm9tIHRoaXMgZGVz aWduIHB1cnBvc2UsIEkgdGhpbmsgdGhlIHR3byBhcmUgZGlmZmVyZW50Lgo+ID4gPiA+ID4gCj4g PiA+ID4gPiBPZiBjb3Vyc2UsIHlvdSBtaWdodCB3YW50IHRvIGV4dGVuZCBpdCwgaXQgZG9lcyBo YXZlIHNvbWUgc2ltaWxhcml0aWVzIGFuZCB1c2VzCj4gPiA+ID4gPiBhIGxvdCBvZiBzaW1pbGFy IHRlY2huaXF1ZXMuCj4gPiA+ID4gSSBkb24ndCBoYXZlIGFueSBwcmVmZXJlbmNlIHNvIGZhci4g SWYgeW91IHRoaW5rIHlvdXIgaWRlYSBtYWtlcyBtb3JlCj4gPiA+ID4gc2Vuc2UsIHRoZW4gdHJ5 IHlvdXIgYmVzdCB0byBqdXN0aWZ5IGl0IGluIHRoZSBsaXN0Lgo+ID4gPiA+IAo+ID4gPiA+ID4g U28gd2UgY2FuIHJlYWxseSBkaXNjdXNzIGluIHRoaXMgZGlyZWN0aW9uLCB3aGV0aGVyCj4gPiA+ ID4gPiB0aGUgdnZ1IGRldmljZSBjYW4gYmUgZXh0ZW5kZWQgdG8gYWNoaWV2ZSB0aGUgcHVycG9z ZSBvZiBpc20sIG9yIHdoZXRoZXIgdGhlCj4gPiA+ID4gPiBkZXNpZ24gZ29hbHMgY2FuIGJlIGFn cmVlZC4KPiA+ID4gPiBJJ3ZlIGFkZGVkIFN0ZWZhbiBpbiB0aGUgbG9vcCwgbGV0J3MgaGVhciBm cm9tIGhpbS4KPiA+ID4gPiAKPiA+ID4gPiA+IE9yLCBpbiB0aGUgZGlyZWN0aW9uIG9mIG1lbW9y eSBzaGFyaW5nIGluIHRoZSBiYWNrZW5kLCBjYW4gaXNtIGFuZCB2dnUgYmUgbWVyZ2VkPwo+ID4g PiA+ID4gU2hvdWxkIGRldmljZS9kcml2ZXIgQVBJcyByZW1haW4gaW5kZXBlbmRlbnQ/Cj4gPiA+ ID4gQnR3LCB5b3UgbWVudGlvbmVkIHRoYXQgb25lIHBvc3NpYmxlIHVzZXIgb2YgaXNtIGlzIHRo ZSBzbWMsIGJ1dCBJCj4gPiA+ID4gZG9uJ3Qgc2VlIGhvdyBpdCBjb25uZWN0cyB0byB0aGF0IHdp dGggeW91ciBwcm90b3R5cGUgZHJpdmVyLgo+ID4gPiBZZXMsIHdlIG9yaWdpbmFsbHkgaGFkIHBs YW5zLCBidXQgdGhlIHZpcnRpbyBzcGVjIHdhcyBjb25zaWRlcmVkIGZvciBzdWJtaXNzaW9uLAo+ ID4gPiBzbyB0aGlzIHdhcyBub3QgaW5jbHVkZWQuIE1heWJlLCB3ZSBzaG91bGQgaGF2ZSBpbmNs dWRlZCB0aGlzIHBhcnQgQFRvbnkKPiA+ID4gCj4gPiA+IEEgYnJpZWYgaW50cm9kdWN0aW9uIGlz IHRoYXQgU01DIGN1cnJlbnRseSBoYXMgYSBjb3JyZXNwb25kaW5nCj4gPiA+IHMzOTAvbmV0L2lz bV9kcnYuYyBhbmQgd2Ugd2lsbCByZXBsYWNlIHRoaXMgaW4gdGhlIHZpcnR1YWxpemF0aW9uIHNj ZW5hcmlvLgo+IAo+IAo+IE9rLCBJIHNlZS4gU28gSSB0aGluayB0aGUgZ29hbCBpcyB0byBpbXBs ZW1lbnQgc29tZXRoaW5nIGluIHZpcnRpbyB0aGF0IGlzCj4gZnVuY3Rpb25hbCBlcXVpdmFsZW50 IHRvIElCTSBJU00gZGV2aWNlLgo+IAoKWWVzLCBJQk0gSVNNIGRldmljZXMgZG8gc29tZXRoaW5n IHNpbWlsYXIgYW5kIGl0IGluc3BpcmVkIHRoaXMuCgo+IAo+ID4gPiAKPiA+ID4gVGhhbmtzLgo+ ID4gPiAKPiA+IFNNQyBpcyBhIG5ldHdvcmsgcHJvdG9jb2wgd2hpY2ggaXMgbW9kZWxlZCBieSBz aGFyZWQgbWVtb3J5IHJhdGhlciB0aGFuCj4gPiBwYWNrZXQuCj4gCj4gCj4gQWZ0ZXIgcmVhZGlu ZyBtb3JlIFNNQyBmcm9tIElCTSB3ZWJzaXRlLCBJIHRoaW5rIHlvdSBtZWFudCBTTUMtRCBoZXJl LiBBbmQgSQo+IHdvbmRlciBpbiBvcmRlciB0byBoYXZlIGEgY29tcGxldGUgU01DIHNvbHV0aW9u IHdlIHN0aWxsIG5lZWQgdmlydGlvLVJPQ0UKPiBmb3IgaW50ZXIgaG9zdCBjb21tdW5jYXRpb24/ Cj4gCgpNb3N0bHkgeWVzLgoKU01DLUQgaXMgdGhlIHBhcnQgb2Ygd2hvbGUgU01DIHNvbHV0aW9u LiBTTUMgc3VwcG9ydHMgbXVsdGlwbGUKdW5kZXJseWluZyBkZXZpY2UsIC1EIG1lYW5zIElTTSBk ZXZpY2UsIC1SIG1lYW5zIFJETUEgZGV2aWNlLiBUaGUga2V5CmRhdGEgbW9kZWwgaXMgc2hhcmVk IG1lbW9yeSwgU01DIHVzZXMgUkRNQSAoLVIpIG9yIElTTSgtRCkgdG8gKnNoYXJlKgptZW1vcnkg YmV0d2VlbiBwZWVycywgYW5kIGl0IHdpbGwgY2hvb3NlIHRoZSBzdWl0YWJsZSBkZXZpY2Ugb24g ZGVtYW5kCmR1cmluZyBoYW5kc2hha2luZy4gSWYgdGhlcmUgd2FzIG5vIHN1aXRhYmxlIGRldmlj ZSwgaXQgd291bGQgZmFsbCBiYWNrCnRvIFRDUC4gU28gdmlydGlvLVJPQ0UgaXMgbm90IHJlcXVp cmVkLgoKPiAKPiA+ICAgQWN0dWFsbHkgdGhlIGJhc2ljIHJlcXVpcmVkIGludGVyZmFjZXMgb2Yg U01DIGRldmljZSBhcmU6Cj4gPiAKPiA+ICAgIC0gYWxsb2MgLyBmcmVlIG1lbW9yeSByZWdpb24s IGVhY2ggY29ubmVjdGlvbiBwZWVyIGhhcyB0d28gbWVtb3J5Cj4gPiAJcmVnaW9ucyBkeW5hbWlj YWxseSBmb3Igc2VuZGluZyBhbmQgcmVjZWl2aW5nIHJpbmcgYnVmZmVyLgo+ID4gICAgLSBhdHRh Y2ggLyBkZXRhY2ggbWVtb3J5IHJlZ2lvbiwgcmVtb3RlIGF0dGFjaGVzIGxvY2FsLWFsbG9jYXRl ZAo+ID4gCXNlbmRpbmcgcmVnaW9uIGFzIHJlY2VpdmluZyByZWdpb24sIHZpY2UgdmVyc2EuCj4g PiAgICAtIG5vdGlmeSwgdGVsbCBwZWVyIHRvIHJlYWQgZGF0YSBhbmQgdXBkYXRlIGN1cnNvci4K PiA+IAo+ID4gVGhlbiB0aGUgZGV2aWNlIGNhbiBiZSByZWdpc3RlcmVkIGFzIFNNQyBJU00gZGV2 aWNlLiBPZiBjb3Vyc2UsIFNNQwo+ID4gYWxzbyByZXF1aXJlcyBzb21lIG1vZGlmaWNhdGlvbiB0 byBhZGFwdCBpdC4KPiAKPiAKPiBMb29raW5nIGF0IHMzOTAgaXNtIGRyaXZlciBpdCByZXF1aXJl cyBvdGhlciBzdHVmZnMgbGlrZSB2bGFuIGFkZC9yZW1vdmUgb3IKPiBnaWQgcXVlcnksIGRvIHdl IG5lZWQgdGhlbSBhcyB3ZWxsPwoKdmxhbiBpcyBub3QgcmVxdWlyZWQgaW4gdGhpcyB1c2UgY2Fz ZS4gSVNNIHVzZXMgZ2lkIHRvIGlkZW50aWZpZWQgZWFjaApvdGhlcnMsIG1heWJlIHdlIGNvdWxk IGltcGxlbWVudCBpdCBpbiB2aXJ0aW8gd2F5cy4KClRvIHN1cHBvcnQgdmlydGlvLWlzbSBzbW9v dGhseSwgdGhlIGludGVyZmFjZXMgb2YgSVNNIGRyaXZlciBzdGlsbCBuZWVkCnRvIGJlIGFkanVz dGVkLiBJIHdpbGwgcHV0IGl0IG9uIHRoZSB0YWJsZSB3aXRoIElCTSBwZW9wbGUuCgpDaGVlcnMs ClRvbnkgTHUKCj4gCj4gVGhhbmtzCj4gCj4gCj4gPiAKPiA+IENoZWVycywKPiA+IFRvbnkgTHUK PiA+IAo+ID4gPiA+IFRoYW5rcwo+ID4gPiA+IAo+ID4gPiA+ID4gVGhhbmtzLgo+ID4gPiA+ID4g Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBIb3cgdG8gc2hhcmUgdGhlIGJhY2tlbmQgd2l0aCBv dGhlciBkZWl2Y2UgaXMgYW5vdGhlciBwcm9ibGVtLgo+ID4gPiA+ID4gPiBZZXMsIGFueXRoaW5n IHRoYXQgaXMgdXNlZCBmb3IgeW91ciB2aXJpdG8taXNtIHByb3RvdHlwZSBjYW4gYmUgdXNlZAo+ ID4gPiA+ID4gPiBmb3Igb3RoZXIgZGV2aWNlcy4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g T3VyIGdvYWwgaXMgdG8gZHluYW1pY2FsbHkgb2J0YWluIGEgcGllY2Ugb2YgbWVtb3J5IHRvIHNo YXJlIHdpdGggb3RoZXIgdm1zLgo+ID4gPiA+ID4gPiBTbyBhdCB0aGlzIGxldmVsLCBJIGRvbid0 IHNlZSB0aGUgZXhhY3QgZGlmZmVyZW5jZSBjb21wYXJlZCB0bwo+ID4gPiA+ID4gPiB2aXJ0aW8t dmhvc3QtdXNlci4gTGV0J3MganVzdCBmb2N1cyBvbiB0aGUgQVBJIHRoYXQgY2FycmllcyBvbiB0 aGUKPiA+ID4gPiA+ID4gc2VtYW50aWM6Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAtIG1hcC91 bm1hcAo+ID4gPiA+ID4gPiAtIHBlcm1pc3Npb24gdXBkYXRlCj4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiBUaGUgb25seSBtaXNzaW5nIHBpZWNlIGlzIHRoZSBwZXIgcmVnaW9uIG5vdGlmaWNhdGlv bi4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gSW4gYSBjb25uZWN0aW9uLCB0aGlzIG1lbW9y eSB3aWxsIGJlIHVzZWQgcmVwZWF0ZWRseS4gQXMgZmFyIGFzIFNNQyBpcyBjb25jZXJuZWQsCj4g PiA+ID4gPiA+ID4gaXQgd2lsbCB1c2UgaXQgYXMgYSByaW5nLiBPZiBjb3Vyc2UsIHdlIGFsc28g bmVlZCBhIG5vdGlmeSBtZWNoYW5pc20uCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gVGhh dCdzIHdoYXQgd2UncmUgYWltaW5nIGZvciwgc28gd2Ugc2hvdWxkIGZpcnN0IGRpc2N1c3Mgd2hl dGhlciB0aGlzCj4gPiA+ID4gPiA+ID4gcmVxdWlyZW1lbnQgaXMgcmVhc29uYWJsZS4KPiA+ID4g PiA+ID4gU28gdW5sZXNzIHNvbWVib2R5IHNhaWQgIm5vIiwgaXQgaXMgZmluZSB1bnRpbCBub3cu Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IEkgdGhpbmsgaXQncyBhIGZlYXR1cmUgY3VycmVu dGx5IG5vdCBzdXBwb3J0ZWQgYnkKPiA+ID4gPiA+ID4gPiBvdGhlciBkZXZpY2VzIHNwZWNpZmll ZCBieSB0aGUgY3VycmVudCB2aXJ0aW8gc3BjZS4KPiA+ID4gPiA+ID4gUHJvYmFibHksIGJ1dCB3 ZSd2ZSBhbHJlYWR5IGhhZCByZmNzIGZvciByb2NlIGFuZCB2aG9zdC11c2VyLgo+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gVGhhbmtzCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFRoYW5rcy4K PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAKCg==