From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: Re: [PATCH v2 22/23] x86: make Xen early boot code relocatable Date: Fri, 14 Aug 2015 13:52:05 +0200 Message-ID: <20150814115205.GA8034__33754.5514027171$1439553276$gmane$org@olila.local.net-space.pl> References: <1437402558-7313-1-git-send-email-daniel.kiper@oracle.com> <1437402558-7313-23-git-send-email-daniel.kiper@oracle.com> <20150811164806.GB32231@l.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZQDXL-0005xz-8L for xen-devel@lists.xenproject.org; Fri, 14 Aug 2015 11:52:39 +0000 Content-Disposition: inline In-Reply-To: <20150811164806.GB32231@l.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Konrad Rzeszutek Wilk Cc: jgross@suse.com, grub-devel@gnu.org, keir@xen.org, ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com, andrew.cooper3@citrix.com, gang.wei@intel.com, roy.franz@linaro.org, ning.sun@intel.com, david.vrabel@citrix.com, jbeulich@suse.com, phcoder@gmail.com, xen-devel@lists.xenproject.org, wei.liu2@citrix.com, richard.l.maliszewski@intel.com, qiaowei.ren@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBBdWcgMTEsIDIwMTUgYXQgMTI6NDg6MDZQTSAtMDQwMCwgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIHdyb3RlOgo+IE9uIE1vbiwgSnVsIDIwLCAyMDE1IGF0IDA0OjI5OjE3UE0gKzAyMDAs IERhbmllbCBLaXBlciB3cm90ZToKPiA+IEV2ZXJ5IG11bHRpYm9vdCBwcm90b2NvbCAocmVnYXJk bGVzcyBvZiB2ZXJzaW9uKSBjb21wYXRpYmxlIGltYWdlIG11c3QKPiA+IHNwZWNpZnkgaXRzIGxv YWQgYWRkcmVzcyAoaW4gRUxGIG9yIG11bHRpYm9vdCBoZWFkZXIpLiBNdWx0aWJvb3QgcHJvdG9j b2wKPiA+IGNvbXBhdGlibGUgbG9hZGVyIGhhdmUgdG8gbG9hZCBpbWFnZSBhdCBzcGVjaWZpZWQg YWRkcmVzcy4gSG93ZXZlciwgdGhlcmUKPiA+IGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSByZXF1 ZXN0ZWQgbWVtb3J5IHJlZ2lvbiAoaW4gY2FzZSBvZiBYZW4gaXQgc3RhcnRzCj4gPiBhdCAxIE1p QiBhbmQgZW5kcyBhdCAxNyBNaUIpIHdoZXJlIGltYWdlIHNob3VsZCBiZSBsb2FkZWQgaW5pdGlh bGx5IGlzIGEgUkFNCj4gPiBhbmQgaXQgaXMgZnJlZSAobGVnYWN5IEJJT1MgcGxhdGZvcm1zIGFy ZSBtZXJjaWZ1bCBmb3IgWGVuIGJ1dCBJIGZvdW5kIGF0Cj4gPiBsZWFzdCBvbmUgRUZJIHBsYXRm b3JtIG9uIHdoaWNoIFhlbiBsb2FkIGFkZHJlc3MgY29uZmxpY3RzIHdpdGggRUZJIGJvb3QKPiA+ IHNlcnZpY2VzOyBpdCBpcyBEZWxsIFBvd2VyRWRnZSBSODIwIHdpdGggbGF0ZXN0IGZpcm13YXJl KS4gVG8gY29wZSB3aXRoCj4gPiB0aGF0IHByb2JsZW0gd2UgbXVzdCBtYWtlIFhlbiBlYXJseSBi b290IGNvZGUgcmVsb2NhdGFibGUuIFRoaXMgcGF0Y2ggZG9lcwo+ID4gdGhhdC4gSG93ZXZlciwg aXQgZG9lcyBub3QgYWRkIG11bHRpYm9vdDIgcHJvdG9jb2wgaW50ZXJmYWNlIHdoaWNoIGlzIGRv bmUKPiA+IGluIG5leHQgcGF0Y2guCj4KPiBzL25leHQgcGF0Y2gvIng4NjogYWRkIG11bHRpYm9v dDIgcHJvdG9jb2wgc3VwcG9ydCBmb3IgcmVsb2NhdGFibGUgaW1hZ2UuIgo+ID4KPiA+IFRoaXMg cGF0Y2ggY2hhbmdlcyBmb2xsb3dpbmcgdGhpbmdzOgo+ID4gICAtIGRlZmF1bHQgbG9hZCBhZGRy ZXNzIGlzIGNoYW5nZWQgZnJvbSAxIE1pQiB0byAyIE1pQjsgSSBkaWQgdGhhdCBiZWNhdXNlCj4g PiAgICAgaW5pdGlhbCBwYWdlIHRhYmxlcyBhcmUgdXNpbmcgMiBNaUIgaHVnZSBwYWdlcyBhbmQg dGhpcyB3YXkgcmVxdWlyZWQKPiA+ICAgICB1cGRhdGVzIGZvciB0aGVtIGFyZSBxdWl0ZSBlYXN5 OyBpdCBtZWFucyB0aGF0IGUuZy4gd2UgYXZvaWQgc3BhY2lhbAo+ID4gICAgIGNhc2VzIGZvciBi ZWdpbm5pbmcgYW5kIGVuZCBvZiByZXF1aXJlZCBtZW1vcnkgcmVnaW9uIGlmIGl0IGxpdmUgYXQK PiA+ICAgICBhZGRyZXNzIG5vdCBhbGlnbmVkIHRvIDIgTWlCLAo+ID4gICAtICVlYnAgcmVnaXN0 ZXIgaXMgdXNlZCBhcyBhIHN0b3JhZ2UgZm9yIFhlbiBpbWFnZSBiYXNlIGFkZHJlc3M7IHRoaXMg d2F5Cj4gPiAgICAgd2UgY2FuIGdldCB0aGlzIHZhbHVlIHZlcnkgcXVpY2tseSBpZiBpdCBpcyBu ZWVkZWQ7IGhvd2V2ZXIsICVlYnAgcmVnaXN0ZXIKPiA+ICAgICBpcyBub3QgdXNlZCBkaXJlY3Rs eSB0byBhY2Nlc3MgYSBnaXZlbiBtZW1vcnkgcmVnaW9uLAo+ID4gICAtICVmcyByZWdpc3RlciBp cyBmaWxsZWQgd2l0aCBzZWdtZW50IGRlc2NyaXB0b3Igd2hpY2ggZGVzY3JpYmVzIG1lbW9yeSBy ZWdpb24KPiA+ICAgICB3aXRoIFhlbiBpbWFnZSAoaXQgY291bGQgYmUgcmVsb2NhdGVkIG9yIG5v dCk7IGl0IGlzIHVzZWQgdG8gYWNjZXNzIHNvbWUgb2YKPgo+ICdtZW1vcnkgcmVnaW9uIHdpdGgg WGVuIGltYWdlJyA/IE5vdCBzdXJlIEkgZm9sbG93Pwo+Cj4gUGVyaGFwczoKPiBzZWdtZW50IGRl c2NyaXB0b3Igd2hpY2ggc3RhcnRzICgwKSBhdCBYZW4gaW1hZ2UgYmFzZSAoX3N0YXJ0KS4KPgo+ Cj4gPiAgICAgWGVuIGRhdGEgaW4gZWFybHkgYm9vdCBjb2RlOyBwb3RlbnRpYWxseSB3ZSBjYW4g dXNlIGFib3ZlIG1lbnRpb25lZCBzZWdtZW50Cj4gPiAgICAgZGVzY3JpcHRvciB0byBhY2Nlc3Mg ZGF0YSB1c2luZyAlZHM6JWVzaSBhbmQvb3IgJWVzOiVlc2kgKGUuZy4gbW92cyopOyBob3dldmVy LAo+ID4gICAgIEkgdGhpbmsgdGhhdCBpdCBjb3VsZCB1bm5lY2Vzc2FyaWx5IG9iZnVzY2F0ZSBj b2RlIChlLmcuIHdlIG5lZWQgYXQgbGVhc3QKPiA+ICAgICB0byBvcGVyYXRpb25zIHRvIHJlbG9h ZCBhIGdpdmVuIHNlZ21lbnQgZGVzY3JpcHRvcikgYW5kIGN1cnJlbnQgc29sdXRpb24KPgo+IHMv dG8vdHdvLyA/Cj4gPiAgICAgbG9va3MgcXVpdGUgb3B0aW1hbC4KPiA+Cj4gPiBTaWduZWQtb2Zm LWJ5OiBEYW5pZWwgS2lwZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPgoKWy4uLl0KCj4gPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TIGIveGVuL2FyY2gveDg2L2Jvb3Qv aGVhZC5TCj4gPiBpbmRleCAzZjEwNTRkLi5kNDg0ZjY4IDEwMDY0NAo+ID4gLS0tIGEveGVuL2Fy Y2gveDg2L2Jvb3QvaGVhZC5TCj4gPiArKysgYi94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKClsu Li5dCgo+ID4gIHRyYW1wb2xpbmVfYmlvc19zZXR1cDoKPiA+ICsgICAgICAgIG1vdiAgICAgJWVi cCwlZXNpCj4gPiArCj4gPiArICAgICAgICAvKiBJbml0aWFsaXNlIEdEVCBhbmQgYmFzaWMgZGF0 YSBzZWdtZW50cy4gKi8KPiA+ICsgICAgICAgIGFkZCAgICAgJWVicCxzeW1fb2Zmc2V0KGdkdF9i b290X2Rlc2NyX2FkZHIpKCVlc2kpCj4gPiArICAgICAgICBsZ2R0ICAgIHN5bV9vZmZzZXQoZ2R0 X2Jvb3RfZGVzY3IpKCVlc2kpCj4gPiArCj4gPiArICAgICAgICBtb3YgICAgICRCT09UX0RTLCVl Y3gKPiA+ICsgICAgICAgIG1vdiAgICAgJWVjeCwlZHMKPiA+ICsgICAgICAgIG1vdiAgICAgJWVj eCwlZXMKPiA+ICsgICAgICAgIG1vdiAgICAgJWVjeCwlZnMKPiA+ICsgICAgICAgIG1vdiAgICAg JWVjeCwlZ3MKPiA+ICsgICAgICAgIG1vdiAgICAgJWVjeCwlc3MKPiA+ICsKPgo+Cj4gVGhlIG5v bi1FRkkgYm9vdCBwYXRoIGlzIG5vdzoKPgo+IHN0YXJ0Cj4gIFwtIF9fc3RhcnQKPiAgICAgIFwt IG11bHRpYm9vdDJfcHJvdG8KPiAgICAgIHwgICAgam1wIHRyYW1wb2xpbmVfYmlvc19zZXR1cAo+ ICAgICAgfAo+ICAgICAgXC1hbmQgaWYgbm90IE1CMjogam1wIHRyYW1wb2xpbmVfYmlvc19zZXR1 cC4KPgo+Cj4gSW4gaGVyZSB5b3UgdHdlYWsgdGhlIEdEVCBhbmQgcmVsb2FkIHRoZSAlZHMgLSBi dXQgZHVyaW5nCj4gdGhpcyBjYWxsIGNoYWluIHdlIGRvIHRvdWNoIHRoZSAlZHMgLSB2aWE6Cj4K PiBfX3N0YXJ0KzI3PjogICAgICAgIHRlc3RiICAkMHgxLCglcmJ4KQo+IF9fc3RhcnQrMzA+OiAg ICAgICAgY21vdm5lIDB4NCglcmJ4KSwlZWR4Cj4KPiB3aGljaCBpcyBPSyAoYXMgTUIxIHNheXMg dGhhdCB0aGUgJWRzIGhhcyB0byBjb3ZlciB1cCB0byA0R0IpLgo+IEJ1dCBJIHdvbmRlciB3aHkg dGhlIF9fc3RhcnQgY29kZSBoYWQgdGhlIHNlZ21lbnRzIHJlbG9hZGVkIHNvIGVhcmx5Pwo+IFdh cyB0aGUgYm9vdGxvYWRlciBub3Qgc2V0dGluZyB0aGUgcHJvcGVyIHNlZ21lbnRzPwoKVGhpcyBp cyB2ZXJ5IGdvb2QgcXVlc3Rpb24uIEkgd2FzIGFza2luZyBteXNlbGYgYWJvdXQgdGhhdCB0aGlu ZyBhdApsZWFzdCBvbmNlLiBTYWRseSwgSSBjYW5ub3QgZmluZCByZWFsIGV4cGxhbmF0aW9uLgoK PiBMZXQgbWUgZG91YmxlLWNoZWNrIHdoYXQgU1lTTElOVVgncyBtYm9vdC5jMzIgZG9lcy4gUGVy aGFwcwo+IGl0IGhhZCBkb25lIHNvbWV0aGluZyBvZGQgaW4gdGhlIHBhc3QuCgpHb29kIGlkZWEh Cgo+ID4gICAgICAgICAgLyogU2V0IHVwIHRyYW1wb2xpbmUgc2VnbWVudCA2NGsgYmVsb3cgRUJE QSAqLwo+ID4gICAgICAgICAgbW92endsICAweDQwZSwlZWN4ICAgICAgICAgIC8qIEVCREEgc2Vn bWVudCAqLwo+ID4gICAgICAgICAgY21wICAgICAkMHhhMDAwLCVlY3ggICAgICAgIC8qIHNhbml0 eSBjaGVjayAoaGlnaCkgKi8KPiA+IEBAIC0zNDAsMzMgKzM1Nyw1OCBAQCB0cmFtcG9saW5lX2Jp b3Nfc2V0dXA6Cj4gPiAgICAgICAgICBjbW92YiAgICVlZHgsJWVjeCAgICAgICAgICAgLyogYW5k IHVzZSB0aGUgc21hbGxlciAqLwo+ID4KPiA+ICB0cmFtcG9saW5lX3NldHVwOgo+Cj4gV291bGQg aXQgbWFrZSBzZW5zZSB0byBhZGQ6Cj4KPiAvKiBHZXRzIGNhbGxlZCBmcm9tIEVGSSAoZnJvbSB4 ODZfMzJfc3dpdGNoKSBhbmQgbGVnYWN5IChzZWUgYWJvdmUpIGJvb3QgbG9hZGVycy4gKi8KPgo+ ID4gKyAgICAgICAgbW92ICAgICAlZWJwLCVlc2kKPiA+ICsKPiA+ICsgICAgICAgIC8qIEluaXRp YWxpemUgMC0xNSBiaXRzIG9mIEJPT1RfRlMgc2VnbWVudCBkZXNjcmlwdG9yIGJhc2UgYWRkcmVz cy4gKi8KPiA+ICsgICAgICAgIG1vdiAgICAgJWVicCwlZWR4Cj4gPiArICAgICAgICBzaGwgICAg ICQxNiwlZWR4Cj4gPiArICAgICAgICBvciAgICAgICVlZHgsKHN5bV9vZmZzZXQodHJhbXBvbGlu ZV9nZHQpK0JPT1RfRlMpKCVlc2kpCj4gPiArCj4gPiArICAgICAgICAvKiBJbml0aWFsaXplIDE2 LTIzIGJpdHMgb2YgQk9PVF9GUyBzZWdtZW50IGRlc2NyaXB0b3IgYmFzZSBhZGRyZXNzLiAqLwo+ ID4gKyAgICAgICAgbW92ICAgICAlZWJwLCVlZHgKPiA+ICsgICAgICAgIHNociAgICAgJDE2LCVl ZHgKPiA+ICsgICAgICAgIGFuZCAgICAgJDB4MDAwMDAwZmYsJWVkeAo+ID4gKyAgICAgICAgb3Ig ICAgICAlZWR4LChzeW1fb2Zmc2V0KHRyYW1wb2xpbmVfZ2R0KStCT09UX0ZTKzQpKCVlc2kpCj4g PiArCj4gPiArICAgICAgICAvKiBJbml0aWFsaXplIDI0LTMxIGJpdHMgb2YgQk9PVF9GUyBzZWdt ZW50IGRlc2NyaXB0b3IgYmFzZSBhZGRyZXNzLiAqLwo+ID4gKyAgICAgICAgbW92ICAgICAlZWJw LCVlZHgKPiA+ICsgICAgICAgIGFuZCAgICAgJDB4ZmYwMDAwMDAsJWVkeAo+ID4gKyAgICAgICAg b3IgICAgICAlZWR4LChzeW1fb2Zmc2V0KHRyYW1wb2xpbmVfZ2R0KStCT09UX0ZTKzQpKCVlc2kp Cj4gPiArCj4gPiArICAgICAgICAvKiBJbml0aWFsaXplICVmcyBhbmQgbGF0ZXIgdXNlIGl0IHRv IGFjY2VzcyBYZW4gZGF0YSBpZiBwb3NzaWJsZS4gKi8KPiA+ICsgICAgICAgIG1vdiAgICAgJEJP T1RfRlMsJWVkeAo+ID4gKyAgICAgICAgbW92ICAgICAlZWR4LCVmcwo+ID4gKwo+Cj4gV2UganVz dCBtb2RpZmllZCB0aGUgR0RULiBTaG91bGQgd2UgcmVsb2FkIGl0IChsZ2R0Pyk/CgpJIGRvIG5v dCB0aGluayBpdCBpcyBuZWVkZWQuCgpJbnRlbCA2NCBhbmQgSUEtMzIgQXJjaGl0ZWN0dXJlcyBT b2Z0d2FyZSBEZXZlbG9wZXLigJlzIE1hbnVhbCwKVm9sdW1lIDIgKDJBLCAyQiAmIDJDKTogSW5z dHJ1Y3Rpb24gU2V0IFJlZmVyZW5jZSwgQS1aIHNheXM6CgpMR0RUIC4uLiBMb2FkcyB0aGUgdmFs dWVzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBpbnRvIHRoZSBnbG9iYWwKZGVzY3JpcHRvciB0YWJs ZSByZWdpc3RlciAoR0RUUikuLi4KCi4uLmFuZCAuLi4KCk1PViAuLi4gSWYgdGhlIGRlc3RpbmF0 aW9uIG9wZXJhbmQgaXMgYSBzZWdtZW50IHJlZ2lzdGVyIChEUywgRVMsCkZTLCBHUywgb3IgU1Mp LCB0aGUgc291cmNlIG9wZXJhbmQgbXVzdCBiZSBhIHZhbGlkIHNlZ21lbnQgc2VsZWN0b3IuCklu IHByb3RlY3RlZCBtb2RlLCBtb3ZpbmcgYSBzZWdtZW50IHNlbGVjdG9yIGludG8gYSBzZWdtZW50 IHJlZ2lzdGVyCmF1dG9tYXRpY2FsbHkgY2F1c2VzIHRoZSBzZWdtZW50IGRlc2NyaXB0b3IgaW5m b3JtYXRpb24gYXNzb2NpYXRlZAp3aXRoIHRoYXQgc2VnbWVudCBzZWxlY3RvciB0byBiZSBsb2Fk ZWQgaW50byB0aGUgaGlkZGVuIChzaGFkb3cpIHBhcnQKb2YgdGhlIHNlZ21lbnQgcmVnaXN0ZXIu IFdoaWxlIGxvYWRpbmcgdGhpcyBpbmZvcm1hdGlvbiwgdGhlIHNlZ21lbnQKc2VsZWN0b3IgYW5k IHNlZ21lbnQgZGVzY3JpcHRvciBpbmZvcm1hdGlvbiBpcyB2YWxpZGF0ZWQgKHNlZSB0aGUKIk9w ZXJhdGlvbiIgYWxnb3JpdGhtIGJlbG93KS4gVGhlIHNlZ21lbnQgZGVzY3JpcHRvciBkYXRhIGlz IG9idGFpbmVkCmZyb20gdGhlIEdEVCBvciBMRFQgZW50cnkgZm9yIHRoZSBzcGVjaWZpZWQgc2Vn bWVudCBzZWxlY3Rvci4KCkFkZGl0aW9uYWxseSwgSW50ZWwgNjQgYW5kIElBLTMyIEFyY2hpdGVj dHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVy4oCZcwpNYW51YWwgVm9sdW1lIDMgKDNBLCAzQiAmIDND KTogU3lzdGVtIFByb2dyYW1taW5nIEd1aWRlLCBzZWN0aW9uIDMuNC4zLApTZWdtZW50IFJlZ2lz dGVycyBzYXlzOgoKRXZlcnkgc2VnbWVudCByZWdpc3RlciBoYXMgYSAidmlzaWJsZSIgcGFydCBh bmQgYSAiaGlkZGVuIiBwYXJ0LiAoVGhlCmhpZGRlbiBwYXJ0IGlzIHNvbWV0aW1lcyByZWZlcnJl ZCB0byBhcyBhICJkZXNjcmlwdG9yIGNhY2hlIiBvciBhCiJzaGFkb3cgcmVnaXN0ZXIuIikgV2hl biBhIHNlZ21lbnQgc2VsZWN0b3IgaXMgbG9hZGVkIGludG8gdGhlIHZpc2libGUKcGFydCBvZiBh IHNlZ21lbnQgcmVnaXN0ZXIsIHRoZSBwcm9jZXNzb3IgYWxzbyBsb2FkcyB0aGUgaGlkZGVuIHBh cnQKb2YgdGhlIHNlZ21lbnQgcmVnaXN0ZXIgd2l0aCB0aGUgYmFzZSBhZGRyZXNzLCBzZWdtZW50 IGxpbWl0LCBhbmQgYWNjZXNzCmNvbnRyb2wgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2VnbWVudCBk ZXNjcmlwdG9yIHBvaW50ZWQgdG8gYnkgdGhlIHNlZ21lbnQKc2VsZWN0b3IuIFRoZSBpbmZvcm1h dGlvbiBjYWNoZWQgaW4gdGhlIHNlZ21lbnQgcmVnaXN0ZXIgKHZpc2libGUgYW5kCmhpZGRlbikg YWxsb3dzIHRoZSBwcm9jZXNzb3IgdG8gdHJhbnNsYXRlIGFkZHJlc3NlcyB3aXRob3V0IHRha2lu ZwpleHRyYSBidXMgY3ljbGVzIHRvIHJlYWQgdGhlIGJhc2UgYWRkcmVzcyBhbmQgbGltaXQgZnJv bSB0aGUgc2VnbWVudApkZXNjcmlwdG9yLiBJbiBzeXN0ZW1zIGluIHdoaWNoIG11bHRpcGxlIHBy b2Nlc3NvcnMgaGF2ZSBhY2Nlc3MgdG8gdGhlCnNhbWUgZGVzY3JpcHRvciB0YWJsZXMsIGl0IGlz IHRoZSByZXNwb25zaWJpbGl0eSBvZiBzb2Z0d2FyZSB0byByZWxvYWQKdGhlIHNlZ21lbnQgcmVn aXN0ZXJzIHdoZW4gdGhlIGRlc2NyaXB0b3IgdGFibGVzIGFyZSBtb2RpZmllZCAoc2lkZSBub3Rl OgpHRFRSIHJlbG9hZCBpcyBub3QgcmVxdWlyZWQhIHByb2JhYmx5IHRoZSBzYW1lIGFwcGxpZXMg dG8gVVAgc3lzdGVtcwphbmQgaWYgQ1BVIHVwZGF0ZSBvd24gYWN0aXZlIEdEVCkuIElmIHRoaXMg aXMgbm90IGRvbmUsIGFuIG9sZCBzZWdtZW50CmRlc2NyaXB0b3IgY2FjaGVkIGluIGEgc2VnbWVu dCByZWdpc3RlciBtaWdodCBiZSB1c2VkIGFmdGVyIGl0cwptZW1vcnktcmVzaWRlbnQgdmVyc2lv biBoYXMgYmVlbiBtb2RpZmllZC4KCkFJVUksIG9ubHkgR0RUIGFkZHJlc3MgYW5kIGxpbWl0IGFy ZSBsb2FkZWQgaW50byBHRFRSIHdoZW4gbGdkdCBpcyBleGVjdXRlZC4KU2VnbWVudCBkZXNjcmlw dG9yIGlzIGxvYWRlZCBkaXJlY3RseSBmcm9tIG1lbW9yeSBpbnRvIHNlZ21lbnQgcmVnaXN0ZXIK KGhpZGVuIHBhcnQpIG9ubHkgd2hlbiByZWxldmFudCBsb2FkIGluc3RydWN0aW9uIGlzIHVzZWQg KGUuZy4gbW92ICVlZHgsJWZzKS4KVGhvdWdoIEdEVCBjb250ZW50IHByb2JhYmx5IGNvdWxkIGJl IHN0b3JlZCBpbiBDUFUgY2FjaGUgYnV0IG5vdGhpbmcgc3VnZ2VzdAp0aGF0IENQVSBjYWNoaW5n IGludGVyZmVyZSBpbiBvbmUgd2F5IG9yIGFub3RoZXIgd2l0aCBzZWdtZW50IGRlc2NyaXB0b3Ig bG9hZC4KU28sIGl0IGxvb2tzIHRoYXQgZXZlcnkgY2hhbmdlIGluIGFjdGl2ZSBHRFQgaXMgaW1t ZWRpYXRlbHkgYXZhaWxhYmxlIGZvcgpyZWxldmFudCBzZWdtZW50IGRlc2NyaXB0b3IgbG9hZCBp bnN0cnVjdGlvbi4KCkkgd2FzIG5vdCBhYmxlIHRvIGZpbmQgYW55dGhpbmcgd2hpY2ggaW52YWxp ZGF0ZXMgYWJvdmUuIFNvLCBldmVyeXRoaW5nCnN1Z2dlc3QgdGhhdCB3ZSBkbyBub3QgbmVlZCBh biBleHRyYSBsZ2R0LgoKPiA+ICAgICAgICAgIC8qIFJlc2VydmUgNjRrYiBmb3IgdGhlIHRyYW1w b2xpbmUuICovCj4gPiAgICAgICAgICBzdWIgICAgICQweDEwMDAsJWVjeAoKWy4uLl0KCj4gPiAg ICAgICAgICAvKiBIb29rIDRrQiBtYXBwaW5ncyBvZiBmaXJzdCAyTUIgb2YgbWVtb3J5IGludG8g TDIuICovCj4gPiAtICAgICAgICBtb3YgICAgICRzeW1fcGh5cyhsMV9pZGVudG1hcCkrX19QQUdF X0hZUEVSVklTT1IsJWVkaQo+ID4gLSAgICAgICAgbW92ICAgICAlZWRpLHN5bV9waHlzKGwyX3hl bm1hcCkKPiA+IC0gICAgICAgIG1vdiAgICAgJWVkaSxzeW1fcGh5cyhsMl9ib290bWFwKQo+ID4g KyAgICAgICAgbGVhICAgICAoc3ltX29mZnNldChsMV9pZGVudG1hcCkrX19QQUdFX0hZUEVSVklT T1IpKCVlYnApLCVlZGkKPiA+ICsgICAgICAgIG1vdiAgICAgJWVkaSwlZnM6c3ltX29mZnNldChs Ml9ib290bWFwKQo+Cj4gQnV0IG5vdCB0byBsMl94ZW5tYXA/CgpObywgbD9feGVubWFwIG1hcHMg WGVuIGNvZGUgYW5kIGRhdGEgb25seS4KCj4gPiAgICAgICAgICAvKiBBcHBseSByZWxvY2F0aW9u cyB0byBib290c3RyYXAgdHJhbXBvbGluZS4gKi8KPiA+IC0gICAgICAgIG1vdiAgICAgc3ltX3Bo eXModHJhbXBvbGluZV9waHlzKSwlZWR4Cj4gPiAtICAgICAgICBtb3YgICAgICRzeW1fcGh5cyhf X3RyYW1wb2xpbmVfcmVsX3N0YXJ0KSwlZWRpCj4gPiArICAgICAgICBtb3YgICAgICVmczpzeW1f b2Zmc2V0KHRyYW1wb2xpbmVfcGh5cyksJWVkeAo+ID4gKyAgICAgICAgbGVhICAgICBzeW1fb2Zm c2V0KF9fdHJhbXBvbGluZV9yZWxfc3RhcnQpKCVlYnApLCVlZGkKPiA+ICsgICAgICAgIGxlYSAg ICAgc3ltX29mZnNldChfX3RyYW1wb2xpbmVfcmVsX3N0b3ApKCVlYnApLCVlc2kKClsuLi5dCgo+ ID4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnZS5oIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9wYWdlLmgKPiA+IGluZGV4IDg3YjMzNDEuLjI3NDgxYWMgMTAwNjQ0Cj4gPiAtLS0g YS94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaAo+ID4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wYWdlLmgKPiA+IEBAIC0yODMsNyArMjgzLDcgQEAgZXh0ZXJuIHJvb3RfcGdlbnRyeV90IGlk bGVfcGdfdGFibGVbUk9PVF9QQUdFVEFCTEVfRU5UUklFU107Cj4gPiAgZXh0ZXJuIGwyX3BnZW50 cnlfdCAgKmNvbXBhdF9pZGxlX3BnX3RhYmxlX2wyOwo+ID4gIGV4dGVybiB1bnNpZ25lZCBpbnQg ICBtMnBfY29tcGF0X3ZzdGFydDsKPiA+ICBleHRlcm4gbDJfcGdlbnRyeV90IGwyX3hlbm1hcFtM Ml9QQUdFVEFCTEVfRU5UUklFU10sCj4gPiAtICAgIGwyX2Jvb3RtYXBbTDJfUEFHRVRBQkxFX0VO VFJJRVNdOwo+ID4gKyAgICBsMl9ib290bWFwWzQqTDJfUEFHRVRBQkxFX0VOVFJJRVNdOwo+Cj4g PyBXaHkgZG8gd2UgbmVlZCB0byBleHBhbmQgdGhpcyB0byBiZSAxNmtCPwoKVEJILCB3ZSBuZWVk IDggS2lCIGluIHRoZSB3b3JzdCBjYXNlLiBUaGUgd29yc3QgY2FzZSBpcyB3aGVuCm5leHQgR2lC IHN0YXJ0cyAoZS5nLiAxIEdpQiBlbmRzIGFuZCAyIEdpQiBzdGFydHMpIGluIHRoZSBtaWRkbGUK b2YgWGVuIGltYWdlLiBJbiB0aGlzIHNpdHVhdGlvbiB3ZSBtdXN0IGhvb2sgdXAgbG93ZXIgbDJf Ym9vdG1hcAp0YWJsZSB3aXRoIGxvd2VyIGwzX2Jvb3RtYXAgZW50cnksIGhpZ2hlciBsMl9ib290 bWFwIHRhYmxlIHdpdGgKaGlnaGVyIGwzX2Jvb3RtYXAgZW50cnkgYW5kIGZpbmFsbHkgZmlsbCBs Ml9ib290bWFwIHJlbGV2YW50CnRhYmxlcyBpbiBwcm9wZXIgd2F5LiBTYWRseSwgdGhpcyBtZXRo b2QgcmVxdWlyZXMgbW9yZSBjYWxjdWxhdGlvbnMuClRvIGF2b2lkIHRoYXQgSSBoYXZlIGFkZGVk IDMgbDJfYm9vdG1hcCB0YWJsZXMgYW5kIHNpbXBseSBob29rIHVwCm9uZSBhZnRlciBhbm90aGVy IHdpdGggcmVsZXZhbnQgbDNfYm9vdG1hcCBlbnRyaWVzLiBIb3dldmVyLCBpZgp5b3Ugd2lzaCB3 ZSBjYW4gcmVkdWNlIG51bWJlciBvZiBsMl9ib290bWFwIHRhYmxlcyB0byB0d28uIFRoaXMKd2F5 IGNvZGUgd2lsbCBiZSBtb3JlIGNvbXBsaWNhdGVkIGJ1dCB3ZSB3aWxsIHNhdmUgYWJvdXQgOCBL aUIuCgpEYW5pZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==