From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH 00/14] XSA-277 followup Date: Thu, 22 Nov 2018 00:08:24 +0000 Message-ID: References: <1542806482-24030-1-git-send-email-andrew.cooper3@citrix.com> <2fa9131b-d3aa-a4d4-d9a9-89c918edbd5a@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Tamas K Lengyel Cc: JGross@suse.com, Kevin Tian , Stefano Stabellini , Wei Liu , Jun Nakajima , Razvan Cojocaru , George Dunlap , Tim Deegan , Xen-devel , Julien Grall , Paul Durrant , Jan Beulich , Boris Ostrovsky , Brian Woods , Suravee Suthikulpanit , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= List-Id: xen-devel@lists.xenproject.org T24gMjEvMTEvMjAxOCAyMjo0MiwgVGFtYXMgSyBMZW5neWVsIHdyb3RlOgo+IE9uIFdlZCwgTm92 IDIxLCAyMDE4IGF0IDI6MjIgUE0gQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4gd3JvdGU6Cj4+IE9uIDIxLzExLzIwMTggMTc6MTksIFRhbWFzIEsgTGVuZ3llbCB3cm90 ZToKPj4+IE9uIFdlZCwgTm92IDIxLCAyMDE4IGF0IDY6MjEgQU0gQW5kcmV3IENvb3BlciA8YW5k cmV3LmNvb3BlcjNAY2l0cml4LmNvbT4gd3JvdGU6Cj4+Pj4gVGhpcyBjb3ZlcnMgdmFyaW91cyBm aXhlcyByZWxhdGVkIHRvIFhTQS0yNzcgd2hpY2ggd2VyZW4ndCBpbiBzZWN1cml0eQo+Pj4+IHN1 cHBvcnRlZCBhcmVhcywgYW5kIGFzc29jaWF0ZWQgY2xlYW51cC4KPj4+Pgo+Pj4+IFRoZSBiaWdn ZXN0IGlzc3VlIG5vdGljZWQgaGVyZSBpcyB0aGF0IGFsdHAybSdzIHVzZSBvZiBoYXJkd2FyZSAj VkUgc3VwcG9ydAo+Pj4+IHdpbGwgY2F1c2UgZ2VuZXJhbCBtZW1vcnkgY29ycnVwdGlvbiBpZiB0 aGUgZ3Vlc3QgZXZlciBiYWxsb29ucyBvdXQgdGhlIFZFSU5GTwo+Pj4+IHBhZ2UuICBUaGUgb25s eSBzYWZlIHdheSBJIHRoaW5rIG9mIGRvaW5nIHRoaXMgaXMgZm9yIFhlbiB0byBhbGxvYyBhbm5v bnltb3VzCj4+Pj4gZG9taGVhcCBwYWdlcyBmb3IgdGhlIFZFSU5GTywgYW5kIGZvciB0aGUgZ3Vl c3QgdG8gbWFwIHRoZW0gaW4gYSBzaW1pbGFyIHdheQo+Pj4+IHRvIHRoZSBzaGFyZWQgaW5mbyBh bmQgZ3JhbnQgdGFibGUgZnJhbWVzLgo+Pj4gU2luY2UgYmFsbG9vbmluZyBwcmVzZW50cyBhbGwg c29ydHMgb2YgcHJvYmxlbXMgd2hlbiB1c2VkIHdpdGggYWx0cDJtCj4+PiBJIHdvdWxkIHN1Z2dl c3QganVzdCBtYWtpbmcgdGhlIHR3byBleHBsaWNpdGx5IGluY29tcGF0aWJsZSBkdXJpbmcKPj4+ IGRvbWFpbiBjcmVhdGlvbi4gQmVzaWRlIHRoZSBpbmZvIHBhZ2UgYmVpbmcgcG9zc2libHkgYmFs bG9vbmVkIG91dCB0aGUKPj4+IG90aGVyIHByb2JsZW0gaXMgd2hlbiBiYWxsb29uaW5nIGNhdXNl cyBhbHRwMm0gdmlld3MgdG8gYmUgcmVzZXQKPj4+IGNvbXBsZXRlbHksIHJlbW92aW5nIG1lbV9h Y2Nlc3MgcGVybWlzc2lvbnMgYW5kIHJlbWFwcGVkIGVudHJpZXMuCj4+IElmIG9ubHkgaXQgd2Vy ZSB0aGF0IHNpbXBsZS4KPj4KPj4gRm9yIHJlYXNvbnMgb2YgaGlzdG9yeSBhbmQvb3IgcG9vciB0 ZXJtaW5vbG9neSwgImJhbGxvb25pbmciIG1lYW5zIHR3bwo+PiB0aGluZ3MuCj4+Cj4+IDEpIFRo ZSBhY3Qgb2YgdGhlIFRvb2xzdGFjayBpbnRlcmFjdGluZyB3aXRoIHRoZSBiYWxsb29uIGRyaXZl ciBpbnNpZGUgYQo+PiBWTSwgdG8gY2hhbmdlIHRoZSBjdXJyZW50IGFtb3VudCBvZiBSQU0gdXNl ZCBieSB0aGUgZ3Vlc3QuCj4+Cj4+IDIpIFhFTk1FTV97aW5jcmVhc2UsZGVjcmVhc2V9X3Jlc2Vy dmF0aW9uIHdoaWNoIGFyZSB0aGUgdW5kZXJseWluZwo+PiBoeXBlcmNhbGxzIHVzZWQgYnkgZ3Vl c3Qga2VybmVscy4KPj4KPj4gRm9yIHRoZSB0b29sc3RhY2sgaW50ZXJhY3Rpb24gc2lkZSBvZiB0 aGluZ3MsIHRoaXMgaXMgYSBtZXNzLiAgVGhlcmUgaXMKPj4gYSBzaW5nbGUgeGVuc3RvcmUga2V5 LCBhbmQgYSBibGluZCBhc3N1bXB0aW9uIHRoYXQgYWxsIGd1ZXN0cyBrbm93IHdoYXQKPj4gY2hh bmdlcyB0byBtZW1vcnkvdGFyZ2V0IG1lYW4uICBUaGVyZSBpcyBubyBuZWdvdGlhdGlvbiBvZiB3 aGV0aGVyIGEKPj4gYmFsbG9vbiBkcml2ZXIgaXMgcnVubmluZyBpbiB0aGUgZ3Vlc3QsIGFuZCBp ZiBvbmUgaXMgcnVubmluZywgdGhlcmUgaXMKPj4gbm8gYWJpbGl0eSBmb3IgdGhlIGJhbGxvb24g ZHJpdmVyIHRvIG5hY2sgYSByZXF1ZXN0IGl0IGNhbid0IGZ1bGZpbC4KPj4gVGhlIHNvbGUgZmVl ZGJhY2sgbWVjaGFuaXNtIHdoaWNoIGV4aXN0cyBpcyB0aGUgdG9vbHN0YWNrIGxvb2tpbmcgdG8g c2VlCj4+IHdoZXRoZXIgdGhlIGRvbWFpbiBoYXMgY2hhbmdlZCB0aGUgYW1vdW50IG9mIFJBTSBp dCBpcyB1c2luZy4KPj4KPj4gUFYgZ3Vlc3RzIGFyZSBmYWlybHkgInNwZWNpYWwiIGJ5IGFueSBy ZWFzb25hYmxlIGp1ZGdlbWVudC4gIFRoZXkgYXJlCj4+IGZ1bGx5IGF3YXJlIG9mIHRoZWlyIG1l bW9yeSBsYXlvdXQgLCBhbiBvZiBjaGFuZ2VzIHRvIGl0IGFjcm9zcwo+PiBtaWdyYXRlLiAgIkJh bGxvb25pbmciIHdhcyBpbXBsZW1lbnRlZCBhdCBhIHRpbWUgd2hlbiBtb3N0IGNvbXB1dGVycyBo YWQKPj4gTUIgb2YgUkFNIHJhdGhlciB0aGFuIEdCLCBhbmQgdGhlIGtub3dsZWRnZSBhIFBWIGd1 ZXN0IGhhZCB3YXMgIkkndmUgZ290Cj4+IGEgcmFuZG9tIHNldCBvZiBNRk5zIHdoaWNoIGFyZW4n dCBjdXJyZW50bHkgdXNlZCBieSBhbnl0aGluZyBpbXBvcnRhbnQsCj4+IGFuZCBjYW4gYmUgaGFu ZGVkIGJhY2sgdG8gWGVuIG9uIHJlcXVlc3QuICBYZW4gZ3Vlc3RzIGFsc28gaGF2ZSBzaGFyZWQK Pj4gbWVtb3J5IGNvbnN0cnVjdHMgc3VjaCBhcyB0aGUgc2hhcmVkX2luZm8gcGFnZSwgYW5kIGdy YW50IHRhYmxlcy4gIEEgUFYKPj4gZ3Vlc3QgZ2V0cyBhY2Nlc3MgdG8gdGhlc2UgYnkgcHJvZ3Jh bW1pbmcgdGhlIGZyYW1lIHN0cmFpZ2h0IGludG8gdG8gdGhlCj4+IHBhZ2V0YWJsZXMsIGFuZCBY ZW4ncyBwZXJtaXNzaW9uIG1vZGVsIERUUlQuCj4+Cj4+IFRoZW4gSFZNIGd1ZXN0cyBjYW1lIGFs b25nLiAgRm9yIHJlYXNvbnMgb2YgdHJ5aW5nIHRvIGdldCB0aGluZ3MKPj4gd29ya2luZywgdGhl eSBpbmhlcml0ZWQgYSBsb3Qgb2Ygc2FtZSBpbnRlcmZhY2VzIGFzIFBWIGd1ZXN0cywgZGVzcGl0 ZQo+PiB0aGUgZnVuZGFtZW50YWwgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSB0aGV5IHdvcmsuICBP bmUgb2YgdGhlIGJpZ2dlc3QKPj4gZGlmZmVyZW5jZXMgd2FzIHRoZSBmYWN0IHRoYXQgSFZNIGd1 ZXN0cyBoYXZlIHRoZWlyIGdmbj0+bWZuIHNwYWNlCj4+IG1hbmFnZWQgYnkgWGVuIHJhdGhlciB0 aGFuIHRoZW1zZWx2ZXMsIGFuZCBpbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIG5vCj4+IGxvbmdlciBt YXAgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzIGluIHRoZSBQViB3YXkuCj4+Cj4+IEZvciBhIHNo YXJlZCBtZW1vcnkgc3RydWN0dXJlIHRvIGJlIHVzYWJsZSwgYSBtYXBwaW5nIGhhcyB0byBiZSBw dXQgaW50bwo+PiB0aGUgZ3Vlc3RzIFAyTSwgc28gdGhlIGd1ZXN0IGNhbiBjcmVhdGUgYSByZWd1 bGFyIHBhZ2V0YWJsZSBlbnRyeQo+PiBwb2ludGluZyBhdCBpdC4gIEZvciByZWFzb25zIHdoaWNo IGFyZSBiZXlvbmQgbWUsIFhlbiBkb2Vzbid0IGhhdmUgYW55Cj4+IGtub3dsZWRnZSBvZiB0aGUg Z3Vlc3RzIHBoeXNpY2FsIGxheW91dCwgYW5kIGd1ZXN0cyBhcmJpdHJhcnkgbXV0YXRpdmUKPj4g Y2FwYWJpbGl0aWVzIG9uIHRoZWlyIEdGTiBzcGFjZSwgYnV0IHdpdGggYSBoeXBlcmNhbGwgc2V0 IHRoYXQgaGFzCj4+IHByb3BlcnRpZXMgc3VjaCBhcyBhIHJldHVybiB2YWx1ZSBvZiAiaG93IG1h bnkgaXRlbXMgb2YgdGhpcyBiYXRjaAo+PiBzdWNjZWVkZWQiLCBhbmQgcmVwbGFjZW1lbnQgcHJv cGVydGllcyByYXRoZXIgdGhhbiBlcnJvciBwcm9wZXJ0aWVzIHdoZW4KPj4gdHJ5aW5nIHRvIG1v ZGlmeSBhIEdGTiB3aGljaCBhbHJlYWR5IGhhcyBzb21ldGhpbmcgaW4gaXQuCj4+Cj4+IFdoYXRl dmVyIHRoZSByZWFzb25zLCBpdCBpcyBjb21tb25wbGFjZSBmb3IgZ3Vlc3RzIHRvCj4+IGRlY3Jl YXNlX3Jlc2VydmF0aW9uIG91dCBzb21lIFJBTSB0byBjcmVhdGUgaG9sZXMgZm9yIHRoZSBzaGFy ZWQgbWVtb3J5Cj4+IG1hcHBpbmdzLCBiZWNhdXNlIGl0IGlzIHRoZSBvbmx5IHNhZmUgd2F5IHRv IGF2b2lkIGlycmVwYXJhYmx5Cj4+IGNsb2JiZXJpbmcgc29tZXRoaW5nIGVsc2UgKGVzcGVjaWFs bHkgaWYgeW91J3JlIEhWTUxvYWRlciBhbmQgaW4gY2hhcmdlCj4+IG9mIHRyeWluZyB0byBjb25z dHJ1Y3QgdGhlIEU4MjAvQUNQSSB0YWJsZXMpLgo+Pgo+PiB0bDtkciBJZiB5b3UgYWN0dWFsbHkg cHJvaGliaXQgWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uLCBIVk0gZ3Vlc3RzCj4+IGRvbid0 IGJvb3QsIGFuZCB0aGF0J3MgbG9uZyBiZWZvcmUgYSBiYWxsb29uIGRyaXZlciBnZXRzIHVwIGFu ZCBydW5uaW5nLgo+IFRoYW5rcyBmb3IgdGhlIGRldGFpbGVkIHdyaXRlLXVwLiBUaGlzIGV4cGxh aW5zIHdoeSBJIGNvdWxkIG5ldmVyIGdldAo+IGFsdHAybSB3b3JraW5nIGZyb20gZG9tYWluIHN0 YXJ0LCBubyBtYXR0ZXIgd2hlcmUgaW4gdGhlIHN0YXJ0dXAgbG9naWMKPiBvZiB0aGUgdG9vbHN0 YWNrIEkgcGxhY2VkIHRoZSBhbHRwMm0gYWN0aXZhdGlvbiAoaGFkIHRvIHJlc29ydCB0bwo+IGFj dGl2YXRpbmcgYWx0cDJtIHNldHRpbmdzIG9ubHkgYWZ0ZXIgSSBkZXRlY3QgdGhlIGd1ZXN0IE9T IGlzIGZ1bGx5Cj4gYm9vdGVkIGFuZCB0aGluZ3MgaGF2ZSBzZXR0bGVkIGRvd24pLgoKU28sIGlu IHRoZW9yeSBpdCBzaG91bGQgYWxsIHdvcmssIGV2ZW4gZnJvbSB0aGUgc3RhcnQuCgpJbiBwcmFj dGljZSwgdGhlIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgb2YgYWx0cDJtIGxlYXZlcyBhIGxvdCB0 byBiZQpkZXNpcmVkLCBhbmQgaXQgd2FzIGRlc2lnbmVkIHRvIGhhdmUgdGhlICJhbGwgbG9naWMg aW5zaWRlIHRoZSBndWVzdCIKbW9kZWwsIHdoaWNoIGluIHByYWN0aWNlIG1lYW5zIHRoYXQgaXQg b25seSBldmVyIHN0YXJ0ZWQgb25jZSB0aGUgZ3Vlc3QKaGFkIGNvbWUgdXAgc3VmZmljaWVudGx5 LgoKRG8geW91IHJlY2FsbCBtb3JlIHNwZWNpZmljYWxseSB3aGVyZSB5b3UgdHJpZWQgaW5zZXJ0 aW5nIHN0YXJ0dXAKbG9naWM/wqAgSXQgc291bmRzIGxpa2Ugc29tZXRoaW5nIHdoaWNoIHdhbnRz IGZpeGluZywgaXJyZXNwZWN0aXZlIG9mIHRoZQpvdGhlciBjb25jZXJucyBoZXJlLgoKPgo+PiBO b3csIGFsbCBvZiB0aGF0IHNhaWQsIHRoZXJlIGFyZSBhIG51bWJlciBvZiB2ZXJ5IGdvb2QgcmVh c29ucyB3aHkgYQo+PiBob3N0IGFkbWluaXN0cmF0b3IgbWlnaHQgd2FudCB0byBwcm9oaWJpdCB0 aGUgZ3Vlc3QgZnJvbSBoYXZpbmcKPj4gYXJiaXRyYXJ5IG11dGF0aXZlIGNhcGFiaWxpdGllcywg Y2hpZWYgYW1vbmcgdGhlbSBiZWluZyB0byBwcmV2ZW50IHRoZQo+PiBndWVzdCBmcm9tIHNoYXR0 ZXJpbmcgaG9zdCBzdXBlcnBhZ3BlcywgYnV0IGFsc28gZHVlIHRvCj4+IGluY29tcGF0aWJpbGl0 aWVzIHdpdGggc29tZSBvZiBvdXIgbW9yZSBpbnRlcmVzdGluZyBmZWF0dXJlcy4KPj4KPj4gVGhl IG9ubHkgd2F5IEkgc2VlIG9mIGZpeGluZyB0aGlzIHRvIHRlYWNoIFhlbiBhYm91dCB0aGUgZ3Vl c3RzIGdmbgo+PiBsYXlvdXQgKGFzIGNob3NlbiBieSB0aGUgZG9tYWluYnVpbGRlciksIGFuZCBp bmNsdWRlIHdpdGhpbiB0aGF0ICJzcGFjZQo+PiB3aGljaCBkZWZpbml0ZWx5IGRvZXNuJ3QgaGF2 ZSBhbnl0aGluZyBpbiwgYW5kIGlzIHNhZmUgdG8gcHV0IHNoYXJlZAo+PiBtYXBwaW5ncyBpbnRv Ii4KPiBZZXMsIHRoYXQgd291bGQgYmUgZ3JlYXQgLSBlc3BlY2lhbGx5IGlmIHRoaXMgd2FzIHNv bWV0aGluZyB3ZSBjb3VsZAo+IHF1ZXJ5IGZyb20gdGhlIHRvb2xzdGFjayB0b28uIFJpZ2h0IG5v dyB3ZSByZXNvcnRlZCB0byBwYXJzaW5nIHRoZQo+IEU4MjAgbWFwIGFzIGl0IHNob3dzIHVwIGlu IHRoZSBkb21haW4gY3JlYXRpb24gbG9ncyBhbmQgd2hhdGV2ZXIKPiB4Y19kb21haW5fbWF4aW11 bV9ncGZuIHJldHVybnMgdG8gZ2V0IHNvbWUgaWRlYSBvZiB3aGF0IG1lbW9yeSBsYXlvdXQKPiBs b29rcyBsaWtlIGluIHRoZSBndWVzdCBhbmQgd2hlcmUgdGhlIGhvbGVzIGFyZSwgYnV0IHRoZXJl IGlzIHN0aWxsIGEKPiBsb3Qgb2YgZ3Vlc3NpbmcgaW52b2x2ZWQuCgpFd3cgOigKClNvLCB3ZSd2 ZSBnb3QgYSBudW1iZXIgb2YgaXNzdWVzIHdoaWNoIG5lZWQgYWRkcmVzc2luZy7CoCBGb3IgYSBz dGFydCwKdGhlcmUgaXNuJ3QgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBtdWNoIFJBTSBh IGd1ZXN0IGhhcywgYW5kCnByZXZpb3VzIGF0dGVtcHRzIHRvIHJlc29sdmUgdGhpcyBoYXZlIG9u bHkgc3VjY2VlZGVkIGluIGRlbW9uc3RyYXRpbmcKdGhhdCB0aGUgY29yZSBtYWludGFpbmVycyBj YW4ndCBldmVuIGFncmVlIG9uIHdoYXQgaXQgbWVhbnMsIGxldCBhbG9uZQpob3cgdG8gY2FsY3Vs YXRlIGl0LsKgIFRoaW5ncyBnZXQgZXNwZWNpYWxseSBjb21wbGljYXRlcyB3aXRoIFZSQU0gYW5k ClJPTXMsIGFuZCB0aGUgb3ZlcmFsbCBhbnN3ZXIgaXMgc29tZSBtaXggb2YgaW5mb3JtYXRpb24g aW4gWGVuLAp4ZW5zdG9yZSwgcWVtdSBhbmQgdGhlIGd1ZXN0LgoKSW4gcmVhbGl0eSwgd2hvbWV2 ZXIgYWN0dWFsbHkgZG9lcyB0aGUgbGVnd29yayB0byByZXNvbHZlIHRoZSBwcm9ibGVtcwp3aWxs IGdldCB0byBkZWZpbmUgdGhlIHRlcm1zLCBhbmQgaG93IHRoZXkgZ2V0IGNhbGN1bGF0ZWQuCgpV bHRpbWF0ZWx5LCBpdCBpcyB0aGUgZG9tYWluIGJ1aWxkZXIgd2hpY2gga25vd3MgYWxsIHRoZSBw ZXJ0aW5lbnQKZGV0YWlscywgYW5kIGlzIGluIGEgcG9zaXRpb24gdG8gb3BlcmF0ZSBvbiB0aGVt IC0gaXQgaXMgYWxyZWFkeQpyZXNwb25zaWJsZSBmb3IgZG9pbmcgdGhlIGluaXRpYWwgbWVtb3J5 IGxheW91dCBjYWxjdWxhdGlvbnMsIGFuZApzdGFzaGluZyBhbiBFODIwIHRhYmxlIGluIHRoZSBo eXBlcnZpc29yIChzZWUgWEVOTUVNX3ssc2V0X31tZW1vcnlfbWFwKS4KClRoZSBtYWluIHByb2Js ZW0gd2UgaGF2ZSBpcyB0aGF0IHdlIG5lZWQgbW9yZSB0eXBlcyB0aGFuIGV4aXN0IGluIHRoZQpF ODIwIHNwZWMsIHNvIG15IHBsYW4gaXMgdG8gaGF2ZSB0aGUgZG9tYWluIGJ1aWxkZXIgY29uc3Ry dWN0IGFuCkU4MjAtbGlrZSB0YWJsZSB3aXRoIFhlbi1kZWZpbmVkIHR5cGVzIGFuZCBwYXNzIHRo YXQgdG8gdGhlCmh5cGVydmlzb3JzLsKgIEl0IHNoYWxsIGJlIHRoZSBzaW5nbGUgYW5kIGF1dGhv cml0YXRpdmUgc291cmNlIG9mIGd1ZXN0CnBoeXNtYXAgaW5mb3JtYXRpb24sIGFuZCB3aWxsIG1v c3QgbGlrZWx5IGJlIGltbXV0YWJsZSBvbmNlIHRoZSBndWVzdApoYXMgc3RhcnRlZC4KCkZyb20g dGhpcywgd2UgY2FuIHRyaXZpYWxseSBkZXJpdmUgYSByZWFsIEU4MjAsIGJ1dCB3ZSBjYW4gYWxz byBmaXgKb3RoZXIgcHJvYmxlbXMgc3VjaCBhcyBYZW4gbm90IGFjdHVhbGx5IGtub3dpbmcgd2hl cmUgTU1JTyBob2xlcyBhcmUuwqAKSXQgd291bGQgYmUgbG92ZWx5IGlmIHdlIGNvdWxkIHJlamVj dCBlbXVsYXRpb24gYXR0ZW1wdHMgaWYgdGhleSBvY2N1cgppbiB1bmV4cGVjdGVkIGxvY2F0aW9u cywgYXMgYW4gYXR0YWNrIHN1cmZhY2UgcmVkdWN0aW9uIGFjdGlvbi7CoCBBbHNvLAp3ZSdkIGF0 IGxlYXN0IGJlIGFibGUgdG8gcmVzdHJpY3QgYSBndWVzdHMgYmFsbG9vbmluZyBvcGVyYXRpb25z IHRvIGJlCndpdGhpbiBwcmVzY3JpYmVkIFJBTSByZWdpb25zLgoKPgo+PiBCZXlvbmQgdGhhdCwg d2UnbGwgbmVlZCBzb21lIGFkbWluaXN0cmF0b3IgbGV2ZWwKPj4ga25vd2xlZGdlIG9mIHdoaWNo IGd1ZXN0cyBhcmUgc2FmZSB0byBoYXZlIFhFTk1FTV9kZWNyZWFzZV9yZXNlcnZhdGlvbgo+PiBw cm9oaWJpdGVkLCBvciBzb21lIGludGVybG9ja3MgaW5zaWRlIFhlbiB0byBkaXNhYmxlIHVuc2Fm ZSBmZWF0dXJlcyBhcwo+PiBzb29uIGFzIHdlIHNwb3QgYSBndWVzdCB3aGljaCBpc24ndCBwbGF5 aW5nIGJ5IHRoZSBuZXcgcnVsZXMuCj4+Cj4+IFRoaXMgcHJvYmFibHkgbmVlZHMgc29tZSBtb3Jl IG1vcmUgdGhvdWdodCwgYnV0IGZ1bmRhbWVudGFsbHksIHdlIGhhdmUKPj4gdG8gdW5kbyBtb3Jl IHRoYW4gYSBkZWNhZGVzIHdvcnRoIG9mICJkb2luZyBpdCB3cm9uZyIgd2hpY2ggaGFzCj4+IHBl cmNvbGF0ZWQgdGhyb3VnaCB0aGUgWGVuIGVjb3N5c3RlbS4KPj4KPj4gSSdtIGhhbGYgdGVtcHRl ZCB0byBwdXQgdG9nZXRoZXIgYSBiaWcgaGFtbWVyIGJpdCBpbiB0aGUgZG9tYWluIGNyZWF0aW9u Cj4+IHBhdGggd2hpY2ggdHVybnMgb2ZmIGV2ZXJ5dGhpbmcgbGlrZSB0aGlzIChhbmQgb3RoZXIg YXJlYXMgd2hlcmUgd2Uga25vdwo+PiBYZW4gaXMgbGFja2luZywgc3VjaCBhcyBkZWZhdWx0IHJl YWRhYmlsaXR5L3dyaXRlLWlnbm9yZSBvZiBhbGwgTVNScyksCj4+IGFmdGVyIHdoaWNoIHdlJ2xs IGhhdmUgYSByYXRoZXIgYSBtb3JlIGNvbmNyZXRlIGJhc2VsaW5lIHRvIGRpc2N1c3Mgd2hhdAo+ PiB0aGUgZ3Vlc3RzIGFyZSBhY3R1YWxseSBkb2luZywgYW5kIGhvdyB0byBnZXQgdGhlbSBiYWNr IGludG8gYSB3b3JraW5nCj4+IHN0YXRlIHdoaWxlIG1haW50YWluaW5nIGFyY2hpdGVjdHVyYWwu Cj4+Cj4gKzEsIGJyaW5naW5nIHNvbWUgc2FuaXR5IHRvIHRoaXMgKGFuZCBkb2N1bWVudGF0aW9u KSB3b3VsZCBiZSBvZiBncmVhdAo+IHZhbHVlISBJIHdvdWxkIGJlIHZlcnkgaW50ZXJlc3RlZCBp biB0aGlzIGxpbmUgb2Ygd29yayBhbmQgaGFwcHkgdG8KPiBoZWxwIGhvd2V2ZXIgSSBjYW4uCgpJ IG5lZWQgdG8gZmluZCBzb21lIGNvcGlvdXMgZnJlZSB0aW1lIDopCgp+QW5kcmV3CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs