From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joao Martins Subject: Re: [RFC] netif: staging grants for requests Date: Thu, 5 Jan 2017 20:27:08 +0000 Message-ID: <586EAC1C.4020308@oracle.com> References: <58518B40.3050408@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cPEaf-0003Mm-O7 for xen-devel@lists.xenproject.org; Thu, 05 Jan 2017 20:24:49 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: "xen-devel@lists.xenproject.org" , Paul Durrant , Wei Liu , David Vrabel , Andrew Cooper List-Id: xen-devel@lists.xenproject.org SGV5IFN0ZWZhbm8sCgpUaGFua3MgYSBsb3QgZm9yIHRoZSByZXZpZXcgYW5kIHRoZSBjb21tZW50 cyEhCgpPbiAwMS8wNC8yMDE3IDA3OjQwIFBNLCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6Cj4g T24gV2VkLCAxNCBEZWMgMjAxNiwgSm9hbyBNYXJ0aW5zIHdyb3RlOgo+PiAjIFByb3Bvc2VkIEV4 dGVuc2lvbgo+Pgo+PiAjIyBUZXJtaW5vbG9neQo+Pgo+PiBgZGF0YSBncmVmYCByZWZlcnMgdG8g dGhlIHJldXNhYmxlL3N0YWdpbmcgZ3JhbnRzLCB3aGVyZWFzIGBncmVmYCBhcmUgdGhlCj4+IG9u ZXMgdGhhdCBhcmUgZ3JhbnRlZC9yZXZva2VkIGZvciBlYWNoIHBhY2tldCBiZWluZyBzZW50LiBg Y29tbWFuZCByaW5nYAo+PiByZWZlcnMgdG8gdGhlIGN1cnJlbnQgcmluZywgd2hlcmVhcyBgZGF0 YSBsaXN0YCByZWZlcnMgdG8gdGhlIG9uZSBwcm9wb3NlZAo+PiBiZWxvdy4KPj4KPj4gIyMgWGVu c3RvcmUKPj4KPj4gImZlYXR1cmUtc3RhZ2luZy1ncmFudHMiIGlzIGEgY2FwYWJpbGl0eSB0byBh bGxvdyB0aGUgdXNlIG9mIGEgc2V0IG9mCj4+IHJlY3ljbGVkIGJ1ZmZlcnMgcGVybWFuZW50bHkg bWFwcGVkIGF0IHRoZSBkZXZpY2Ugc2V0dXAuIElmCj4+IGFkdmVydGlzZWQsIHRoZSBmcm9udGVu ZCB3aWxsIGdyYW50IGEgcmVnaW9uIGVxdWl2YWxlbnQgdG8gYGBgbWF4aW11bSBudW1iZXIKPj4g b2Ygc2xvdHMgcGVyIHJpbmcgKiBzaXplIG9mIGJ1ZmZlcmBgYCB3aGVyZToKPj4KPj4gICogYG1h eGltdW0gbnVtYmVyIG9mIHNsb3RzIHBlciByaW5nYCBpcyB0aGUgbnVtYmVyIG9mIHJlcXVlc3Qg c3RydWN0dXJlCj4+ICAgIHRoYXQgY2FuIGJlIGZpdCB3aXRoaW4gdGhlIGNvbW1hbmQgcmluZy4g QnkgZGVmYXVsdCBhIHJlcXVlc3QKPj4gICAgc3RydWN0dXJlIGNvbnN1bWVzIDE2IGJ5dGVzLiBU aGUgZmlyc3QgNjQgYnl0ZXMgb2YgYSByaW5nIGFyZSB1c2VkIGJ5Cj4+ICAgIHByb2R1Y2VyIGFu ZCBjb25zdW1lciBpbmRpY2llcy4KPiAKPiBUaGlzIG1lYW5zIHRoYXQgYnkgZGVmYXVsdCB0aGUg bnVtYmVyIG9mIHNsb3RzIGlzICg0MDk2LTY0KS8xNiA9IDI1MiwKPiBjb3JyZWN0PwpUaGF0IHdv dWxkIGJlIGNvcnJlY3QgYnV0IEkgbWFkZSBhIGZldyBtaXN0YWtlcyBpbiB0aGUgd3JpdGluZywg ZGVzcGl0ZSBhCmZvbGxvd2luZyBwYXJhZ3JhcGggbWVudGlvbmluZyB0aGUgY29ycmVjdCByaW5n IHNpemUgZm9yIGJvdGggVFggYW5kIFJYLgpUaGUgcmluZyBzbG90IHNpemUgaXMgZGV0ZXJtaW5l ZCBieSB0aGUgc2l6ZSBvZiB0aGUgcmVxdWVzdCBvciByZXNwb25zZSAoYmVpbmcgYQp1bmlvbiBv ZiByZXF1ZXN0IGFuZCByZXNwb25zZSBzdHJ1Y3R1cmVzKS4gVGhpcyBtZWFucyB0aGUgcmluZyBz bG90IHdvdWxkIGVpdGhlcgo4IG9jdGV0cyBmb3IgUlggcmluZyBvciAxMiBvY3RldHMgZm9yIFRY IHJpbmcgd2hpY2ggaW4gZWZmZWN0IHRyYW5zbGF0ZXMgdG86CgpSWCA6PSAoNDA5NiAtIDY0KSAv IDggPSA1MDQKVFggOj0gKDQwOTYgLSA2NCkgLyAxMiA9IDMzNgoKQW5kIGFzIFdlaSBjb3JyZWN0 bHkgbWVudGlvbnMgYm90aCB2YWx1ZXMgYXJlIHJvdW5kZWQgZG93biB0byBhIHBvd2VyIG9mIDIu CldoaWNoIHJlc3VsdHMgaW4gMjU2IHNsb3RzIGZvciBlYWNoIHJpbmcuIEkgd2lsbCBmaXggdGhp cyBpbiB0aGUgc3BlYy4KCj4+ICAqIGBzaXplIG9mIGJ1ZmZlcmAgaXMgdGhlIG1heGltdW0gcG9y dGlvbiBvZiB0aGUgcGFja2V0IHRoZSBiYWNrZW5kIChhbmQKPj4gICAgZnJvbnRlbmQpIGhhdmUg bmVnb3RpYXRlZCB3aGljaCB3aWxsIGJlIHB1dCBmb3IgZWFjaCBzbG90IG9mIHRoZQo+PiAgICBg ZGF0YSByaW5nYC4KPj4KPj4gV2hpY2ggbWVhbnMgdGhhdCBmb3IgMjU2IHBvc3NpYmxlIHBhY2tl dHMgaW4gcmluZyB3aXRoIDI1NiBieXRlcyBvZgo+PiBjaG9zZW4gc2l6ZSB0aGUgYW1vdW50IG9m IG1lbW9yeSB0byBiZSBwZXJtYW5lbnRseSBncmFudGVkIGlzIGEgcmVnaW9uIG9mCj4+IDY0S0Ig aS5lLiAxNiBncmVmcy4KPj4KPj4gVGhlIGxhY2sgb2YgImZlYXR1cmUtc3RhZ2luZy1ncmFudHMi IG9yIGEgdmFsdWUgb2YgMCBtZWFucyB0aGF0IGl0J3Mgbm90Cj4+IHN1cHBvcnRlZC4gSWYgZmVh dHVyZSBpcyBwcmVzZW50IHRoZW4gYSBzZWNvbmQgZW50cnkgInN0YWdpbmctZ3JhbnRzLXNpemVz Igo+PiBtdXN0IGV4aXN0IGFuZCBpdCBjb250YWlucyB0aGUgc2l6ZXMgdGhhdCBjYW4gYmUgdXNl ZCBwZXIgc2xvdC4gVG8gYXZvaWQKPj4gZnJvbnRlbmQgY2xvYmJlcmluZyB3aXRoIHZhcmlvdXMg ZGlmZmVyZW50IHZhbHVlcywgd2UgbGltaXQgdG8gYSBzZXQgb2YgZml4ZWQKPj4gb25lcyBzZW1p LWNvbG9uIGRlbGltaXRlZC4KPj4KPj4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZSBpbXBsZW1lbnRh dGlvbiBzcGVjaWZpYy4gRXhhbXBsZXMgb2YgZ29vZCB2YWx1ZXMKPj4gaW5jbHVkZTogMjU2IChw cm90b2NvbC9oZWFkZXIgcmVnaW9uKSwgMjA0OCAoZml0cyAxIE1TUyB3aGljaCBpcyBjb21tb24g dG8gYmUKPj4gaW4gdGhlIGxpbmVhciBwYXJ0IG9mIGxpbnV4IHBhY2tldHMpLCA0MDk2IChncmFu dCBwZXIgcGFja2V0IGlmIGZlYXR1cmUtc2c9MCwgZm9yCj4+IERQREsvWERQL25ldG1hcCBidWZm ZXJzKSBhbmQgNjU1MzUgKG1heGltdW0gcGFja2V0IHNpemUgaS5lLgo+PiBgYGBORVRJRl9OUl9T TE9UU19NSU4gKiBYRU5fUEFHRV9TSVpFYGBgIGZvciBmZWF0dXJlLXNnPTEpLgo+IAo+IEkgYW0g bm90IGZvbGxvd2luZy4gU28gZmFyIHdlIGhhdmUgYmVlbiB0YWxraW5nIGFib3V0IHR3byB2YWx1 ZXM6Cj4gLSBtYXhpbXVtIG51bWJlciBvZiBzbG90cyBwZXIgcmluZwo+IC0gc2l6ZSBvZiBidWZm ZXIKPiBXZSBoYXZlIGFsc28gZGlzY3Vzc2VkIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3Ig aW5kZXhlcyBhdCB0aGUKPiBiZWdpbm5pbmcgb2YgdGhlIGNvbW1hbmQgcmluZywgd2hpY2ggaXMg NjQgYnl0ZXMuClJpZ2h0LCBidXQgdGhlc2UgNjQgYnl0ZXMgd2VyZSBvbmx5IG1lbnRpb25lZCB0 byBkZXNjcmliZSB0aGUgY2FsY3VsYXRpb24gb2YKbnVtYmVyIG9mIHNsb3RzLgoKPiAKPiBCdXQg bm93IHlvdSBhcmUgaW50cm9kdWNpbmcgYSBmZXcgb3RoZXIgdmFsdWVzOgo+IC0gcHJvdG9jb2wv aGVhZGVyIHJlZ2lvbgo+IC0gZml0cyAxIE1TUyB3aGljaCBpcyBjb21tb24gdG8gYmUgaW4gdGhl IGxpbmVhciBwYXJ0IG9mIGxpbnV4IHBhY2tldHMKPiAtIGdyYW50IHBlciBwYWNrZXQKPiAtIG1h eGltdW0gcGFja2V0IHNpemUgKEkgdGFrZSB0aGlzIGlzIHRoZSBzYW1lIGFzIHNpemUgb2YgYnVm ZmVyKQo+IAo+IENvdWxkIHlvdSBwbGVhc2UgZGVzY3JpYmVkIHdoYXQgdGhlc2UgdmFsdWVzIHJl cHJlc2VudCBpbiBtb3JlIGRldGFpbHMKPiBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB0d28g cHJldmlvdXMgdmFsdWVzPwpUaGVzZSB2YWx1ZXMgSSBnaXZlIGFib3ZlIGFyZSBleGFtcGxlcy9y ZWNvbWVuZGF0aW9ucyBvZiB2YWxpZCAic2l6ZSBvZiB0aGUKYnVmZmVyIiB2YWx1ZXMuIFRoYXQg bXVsdGlwbGllZCBmb3IgdGhlIG51bWJlciBvZiBzbG90cyBnaXZlcyBob3cgbXVjaCBpdCBpcwpn cmFudGVkIGJ5IHRoZSBmcm9udGVuZC4KClRob3VnaCBJIHdhbnQgdG8gYmUgYWJsZSB0byBzYXkg dGhhdCB0aGUgYmFja2VuZCB3aWxsIGNvcHkgdXAgdG8gTiBtdWNoIGJ5dGVzIHRvCnRoZXNlIHN0 YWdpbmcgZ3JhbnRzIChvciBkYXRhIGdyZWZzIGFzIHRlcm1pbm9sb2d5IHVzZWQgaW4gdGhlIGRv YyksIGJlZm9yZSBpdApyZXNvcnRzIHRvIGdyYW50IG9wcy4gSGVuY2UgdGhlIHZhbHVlIG9mIDY1 NTM2IGlzIHRoZSBzYW1lIGFzIDQwOTYgaW4gdGVybXMgb2YKbnVtYmVyIG9mIGRhdGEgZ3JlZnMg cHJvdmlkZWQsIGJ1dCB0aGUgYmFja2VuZCB3aWxsIGp1c3QgY29weSBsZXNzIGZyb20vdG8gdGhl CnN0YWdpbmcgYXJlYSBsZWF2aW5nIHRoZSByZXN0IHRvIGJlIHVzZWQgd2l0aCB0aGUgY29tbWFu ZCByaW5nIGdyZWZzIChncmFudAptYXAvdW5tYXAvZXRjKS4gRG9lcyB0aGlzIGFuc3dlciB5b3Vy IHF1ZXN0aW9uPwoKSSB3ZW50IHdpdGggdGhlIHNpbXBsZSBhcHByb2FjaCB0byBzdGFydCB3aXRo LCBidXQgSSBhbHNvIHRob3VnaHQgb2YgaGF2aW5nIGEKc21hbGwgZGVzY3JpcHRvciB0byBkZXNj cmliZSBob3cgbXVjaCBvZiB0aGlzIHN0YWdpbmcgYXJlYSBpcyB1c2VkIGZvciBwYWNrZXQsCmlu c3RlYWQgb2YgYSBmaXhlZCBuZWdvdGlhdGVkIHZhbHVlLiBCdXQgaXQgd291bGQgbGVhdmUgbWUg d2l0aCBvbmx5IGEgbGVuZ3RoCmZpZWxkLiBVbmxlc3Mgd2UgY291bGQgaGF2ZSBhIGhhZGVyIHdp dGggdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBleHRyYSBpbmZvIHNsb3QKKEdTTykgYXMgcGFydCBv ZiB0aGlzIGRlc2NyaXB0b3IgdG9vLCBhbmQgc2F2ZSAxIHNsb3QgcGVyIHBhY2tldCBmb3IgR1NP L0dSTwpwYWNrZXRzLgoKPj4gSW5kaXZpZHVhbCBzaXplIGNvdmVyZWQgcGVyIGVudHJ5IGJ5IGZy b250ZW5kIGlzIHRocm91Z2ggYGBgdHgtZGF0YS1sZW5gYGAgb3IKPj4gYGBgcngtZGF0YS1sZW5g YGAgd2hpY2ggY29udGFpbnMgbWF4aW11bSBhbW91bnQgb2YgZGF0YSBvbiBhIHNpbmdsZSBwYWNr ZXQuCj4+IENob3NlbiB2YWx1ZXMgb2YgInR4LWRhdGEtbGVuIiBhbmQgInJ4LWRhdGEtbGVuIiBh cmUgYXN5bW1ldHJpY2FsIChoZW5jZSBjYW4KPj4gYmUgZGlmZmVyZW50IGJldHdlZW4gVFggYW5k IFJYKSBhcmUgdmFsaWRhdGVkIGFnYWluc3QgdGhpcyBsaXN0IG9mIHZhbGlkIHNpemVzLgo+PiBG b3IgaXQncyB1c2Ugc2VlIFtkYXRhcGF0aF0oI2RhdGFwYXRoLWNoYW5nZXMpIHNlY3Rpb24gZnVy dGhlciBiZWxvdy4KPj4KPj4gCS9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvZmVhdHVyZS1z dGFnaW5nLWdyYW50cyA9ICIxIgo+PiAJL2xvY2FsL2RvbWFpbi8xL2RldmljZS92aWYvMC9zdGFn aW5nLWdyYW50cy1zaXplcyA9ICIxMjg7MjU2OzIwNDg7NDA5NiIKPiAKPiBJIGRvbid0IGdldCB3 aGF0IHRoZSA0IG51bWJlcnMgbWVhbi4gQXJlIHRoZXkgcG9zc2libGUgc3VwcG9ydGVkIG9wdGlv bnMKPiBmb3IgInR4LWRhdGEtbGVuIiBhbmQgInJ4LWRhdGEtbGVuIiwgd2hpY2ggaW4gdHVybiBh cmUgdGhlICJzaXplIG9mCj4gYnVmZmVyIiBhcyBkZXNjcmliZWQgYWJvdmU/CkV4YWN0bHkhCgo+ IElmIHNvLCBzaG91bGRuJ3QgdGhleSBiZSB3cml0dGVuIGJ5IHRoZSBiYWNrZW5kIHRvIGJhY2tl bmQgcGF0aHM/IFdoeQo+IG9ubHkgNCBvcHRpb25zPyBDb3VsZCB0aGVyZSBiZSBtb3JlPyBXaGF0 IGlzIHRoZSBtYXggbnVtYmVyIG9mIGFsbG93ZWQKPiBvcHRpb24/IEFuZCB3aGF0IGlzIHRoZSBt aW5pbXVtPwpUaGUgcGF0aCBpcyB3cm9uZywgaXQgc2hvdWxkIGJlIHRoZSBiYWNrZW5kIHBhdGgu IFRoZSBiYWNrZW5kIGFkdmVydGlzZXMgdGhpcwpzZXQgb2YgdmFsdWVzIHRoYXQgY2FuIGJlIHVz ZWQsIGFuZCBpdCBjYW4gYWR2ZXJ0aXNlIGFzIG1hbnkgdmFsdWVzIGFzIGl0CnN1cHBvcnRzIChz ZXBhcmF0ZWQgYnkgc2VtaWNvbG9uKS4gVGhlIHZhbHVlcyBJIHNlbGVjdGVkIHdlcmUgc2ltcGx5 IHBpY2tlZApiYXNlZCBvbiB3aGF0IEkgZXhwbGFpbiBpbiB0aGUgcHJldmlvdXMgcGFyYWdyYXBo LiBmcm9udGVuZCB3aWxsIHRoZW4gcGljayBvbmUKb2YgdGhvc2UuCgovbG9jYWwvZG9tYWluLzAv YmFja2VuZC92aWYvMS8wL2ZlYXR1cmUtc3RhZ2luZy1ncmFudHMgPSAiMSIKL2xvY2FsL2RvbWFp bi8wL2JhY2tlbmQvdmlmLzEvMC9zdGFnaW5nLWdyYW50cy1zaXplcyA9ICIxMjg7MjU2OzIwNDg7 NDA5NiIKCkkgY291bGQgYmUgbGVzcyByZXN0cmljdGl2ZSBhbmQgaW5zdGVhZCB0dXJuIHRoZXNl IHNpemVzIGludG8gYSB0dXBsZSB3aXRoCiJtaW47bWF4IiBvciB0d28gc2VwYXJhdGUgeGVuc3Rv cmUgZW50cmllcyBpZiBmb2xrcyBwcmVmZXIuCgpBbmQgdGhlIGZyb250ZW5kIGp1c3QgYWR2ZXJ0 aXNlcyBhIGZlYXR1cmUgZW50cnkgbGlrZSB0aGlzOgoKL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 aWYvMC9mZWF0dXJlLXN0YWdpbmctZ3JhbnRzID0gIjEiCgpPdGhlciBhbHRlcm5hdGl2ZXMgb24g dGhlIHRhYmxlIHdhcyB0byBzcGVjaWZ5IHRoaXMgcmVnaW9uIGFzIHBhcnQgb2YgdGhlCnJlcXVl c3QvcmVzcG9uc2UsIGFuZCB0dXJuIHRoZSBUWC9SWCByaW5ncyBpbnRvIG11bHRpLXBhZ2Ugb25l cy4gQnV0IEkgZm91bmQKdGhhdCBhIGJpdCBsaW1pdGF0aXZlLCBmb3IgZXhhbXBsZSBpZiB3ZSB3 YW50ZWQgdG8gYWxsb3cgYSBndWVzdCB0byB1c2UgYSBmaXgKc2V0IG9mIHBhZ2VzIChEUERLLCBu ZXRtYXAsIFhEUCkgd2hpY2ggd291bGQgcmVzdWx0IGluIGFyb3VuZCA+MjU2CiJ7dHgscnh9LXJp bmctcmVmIiBlbnRyaWVzLgoKPj4gCS9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUt MC90eC1kYXRhLXJlZjAgPSAiPGRhdGEtcmVmLXR4MD4iCj4+IAkvbG9jYWwvZG9tYWluLzEvZGV2 aWNlL3ZpZi8wL3F1ZXVlLTAvdHgtZGF0YS1sZW4gPSAiMTI4Igo+PiAJL2xvY2FsL2RvbWFpbi8x L2RldmljZS92aWYvMC9xdWV1ZS0wL3J4LWRhdGEtcmVmMCA9ICI8ZGF0YS1yZWYtcngwPiIKPj4g CS9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmlmLzAvcXVldWUtMC9yeC1kYXRhLWxlbiA9ICIyNTYi Cj4+Cj4+IFRoZSBgYGB0eC1kYXRhLXJlZiV1YGBgIGFuZCBgYGByeC1kYXRhLXJlZiV1YGBgIGRl c2NyaWJlIHRoZSBsaXN0IG9mIGdyYW50cyB0byBiZQo+PiB1c2VkIGZvciBlYWNoIHJpbmcuIFRo ZSBleGFtcGxlIGFib3ZlIGV4ZW1wbGlmaWVzIGEgbGlzdCBjb21wb3NlZCBvZiBhIHNpbmdsZQo+ IAo+IEZvciB3aGF0IHJpbmcsIHRoZSBkYXRhIHJpbmc/ClRoZSBjb21tYW5kIHJpbmcuIFRoZXJl IGlzIG5vIGRhdGEgcmluZywgYnV0IGEgbGlzdCBvZiBncmVmcyBnaXZlbiB0byB0aGUKYmFja2Vu ZCwgaGVuY2UgaGVyZSBJIG1lbnRpb24gdGhpcyBhcyAiZGF0YSBsaXN0Ii4gQW5kIHRoZSAiZGF0 YSBsaXN0IiBlbnRyaWVzIEkKYWxzbyByZWZlciB0byB0aGVtIGFzICJzdGFnaW5nL2RhdGEgZ3Jl ZnMiLiBQbHVzIHRoZXJlJ3Mgb25lIGxpc3QgZm9yIFRYIGFuZAphbm90aGVyIFJYLgoKPiAKPj4g cGFnZSB3aGVyZWFzIG11bHRpcGxlIHBhZ2VzIHdvdWxkIGJlIGFzOgo+Pgo+PiAJdHgtZGF0YS1y ZWYwID0gPGRhdGEtcmVmLXR4MD4KPj4gCXR4LWRhdGEtcmVmMSA9IDxkYXRhLXJlZi10eDE+Cj4+ IAlyeC1kYXRhLXJlZjAgPSA8ZGF0YS1yZWYtcngwPgo+PiAJcngtZGF0YS1yZWYxID0gPGRhdGEt cmVmLXJ4MT4KPj4KPj4gRWFjaCBzbG90IGluIHRoZSBgZGF0YS1yZWZgIGxpc3QgaXMgZm9ybWF0 dGVkIGFzIGZvbGxvd2luZzoKPj4KPj4gICAgICAgICAgICAgMCAgICAgMSAgICAgMiAgICAgMyAg ICAgNCAgICAgNSAgICAgNiAgICAgNyAgb2N0ZXQKPj4gICAgICAgICAgKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKwo+PiAgICAgICAgICB8IGlkICAgICAg ICB8IGdyZWYgICAgICAgICAgICAgICAgICB8IG9mZnNldCAgICB8Cj4+ICAgICAgICAgICstLS0t LSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKPj4KPj4gCWlkOiB0 aGUgZnJhbWUgaWRlbnRpZmllci4KPiAKPiBXaGF0IGlzIGEgImZyYW1lIGlkZW50aWZpZXIiPwpJ dCdzIHRoZSBidWZmZXIgd2UgYXJlIHNoYXJpbmcsIHRoZSBvbmUgd2UgdXNlIHRvIG1lbWNweSBm b3IgYmFja2VuZCB0byB1c2UuClByb2JhYmx5IHNob3VsZCB1c2UgImJ1ZmZlciIgaW5zdGVhZC4g KFNlZSBmdXJ0aGVyIGJlbG93IGFib3V0IGl0cyB1c2UpCgo+PiAJZ3JlZjogZ3JhbnQgcmVmZXJl bmNlIHRvIHRoZSBmcmFtZS4KPj4gCW9mZnNldDogb2Zmc2V0IHdpdGhpbiB0aGUgZnJhbWUuCj4g Cj4gSSBhc3N1bWVkIHRoYXQgZWFjaCBncmFudCB1c2VkIGZvciB0aGUgZGF0YSByaW5nIHdvdWxk IGJlIHVzZWQgaW4gaXRzCj4gZW50aXJldHkuIERvZXMgaXQgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8g Y3JlYXRlIGEgcmluZyB1c2luZyBwb3J0aW9ucyBvZgo+IHBhZ2VzPyBHaXZlbiB0aGF0IHdlIGNh biBvbmx5IHNoYXJlIG1lbW9yeSBhdCBhIHBhZ2UgZ3JhbnVsYXJpdHksCk15IG1haW4gYXJndW1l bnQgd2l0aCBoYXZpbmcgcG9ydGlvbnMgb2YgcGFnZXMgaXMgZm9yIGd1ZXN0cyB0aGF0IG9ubHkg d2FudCB0bwp1c2UgdGhpcyByZWdpb24gdG8gY29weSB0aGUgbGluZWFyIHJlZ2lvbiBhbmQgaGVu Y2UgaGF2ZSBhIG11Y2ggc21hbGxlcgpmb290cHJpbnQgcGVyIHJpbmcgKHdpdGgganVzdCAxNiBn cmVmcykuIE90aGVyd2lzZSB3ZSB3b3VsZCBiZSBzaGFyaW5nIDI1NgpncmFudHMgd2hpbGUgb25s eSB1c2luZyAxLzE2IG9mIGl0LiBJbiB0aGUgcmVzdCBvZiB0aGUgc3BlYyBJIHRha2UgdGhpcyBp cyB0aGUKZ2VuZXJhbCBjYXNlLCB3aGVyZSB3ZSBtZW1jcHkgb25seSBhIHNtYWxsIHBvcnRpb24g b2YgdGhlIHBhY2tldC4KCj4gSSBkb24ndCB0aGluayBpdCBtYWtlcyBzZW5zZTogdGhlIHJlc3Qg b2YgdGhlIHBhZ2Ugd291bGQgc3RpbGwgYmUKPiBhY2Nlc3NpYmxlIGZyb20gdGhlIGJhY2tlbmQs IHdoaWNoIGNvdWxkIGNvbXByb21pc2UgaXRzIGNvbnRlbnQuIEkgd291bGQKPiBzaGFyZSBhIGxp c3Qgb2YgcGFnZXMgdGhhdCBjYW4gYmUgbWFwcGVkIGNvbnRpZ3VvdXNseSB0byBjcmVhdGUgYSBk YXRhCj4gcmluZy4KTm90ZSB0aGF0IHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgVFggZ3JlZnMgYXJl IHJlYWRvbmx5LCB3aGVyZWFzIHRoZSByeCByaW5nIGlzCnJlYWQvd3JpdGUsIHNvIEkgaW5oZXJp dCB0aGlzIHNhbWUgcHJvcGVydHkgaGVyZSBmb3IgdGhlIGRhdGEgZ3JlZnMgdG9vLiBJCndvdWxk bid0IG1pbmQgaGF2aW5nIGEgZ3JhbnQgcGVyIHBhY2tldDsgaXMgeW91ciBjb25jZXJuIGNvbWlu ZyBmcm9tIHRoZSBmYWN0CnRoYXQgdGhlc2UgUlggZGF0YSBncmVmcyBhcmUgY29uc3RhbnRseSBt YXBwZWQgaGVuY2UgYmFja2VuZCBjYW4gbWFuZ2xlIGFueXRpbWUKYXMgb3Bwb3NlZCB0byBSWCBn cmFudHMgYXJlIHN0aWxsIGJlaW5nIHJldm9rZWQgd2hlbiBnaXZlbiBiYWNrIHRvIHRoZSBmcm9u dGVuZD8KQnV0IHRoZW4gbm90aGluZyBjdXJyZW50bHkgc3RvcHMgYSBiYWNrZW5kIHRvIHdyaXRl IHRvIHRoZXNlIHBhZ2VzIGlycmVzcGVjdGl2ZQpvZiB0aGUgYXBwcm9hY2ggKHdpdGggb3Igd2l0 aG91dCBzdGFnaW5nIGdyYW50cykgdW50aWwgdGhleSBhcmUgY29waWVkL3Jldm9rZWQ7CnRoZSBm cm9udGVuZCB3b3VsZCBhbHdheXMgY29weSBmcm9tIHRoZSBzdGFnaW5nIHJlZ2lvbiBpbnRvIGEg Z3Vlc3Qtb25seSB2aXNpYmxlCnJlZ2lvbi4KCj4+IFRoaXMgbGlzdCBoYXMgdHdpY2UgYXMgbWF4 IHNsb3RzIGFzIHdvdWxkIGhhdmUgYHR4LXJpbmctcmVmYCBvciBgcngtcmluZy1yZWZgCj4+IHJl c3BlY3RpdmVseSwgYW5kIGl0IGlzIHNldCB1cCBhdCBkZXZpY2UgY3JlYXRpb24gYW5kIHJlbW92 ZWQgYXQgZGV2aWNlCj4+IHRlYXJkb3duLCBzYW1lIGFzIHRoZSBjb21tYW5kIHJpbmcgZW50cmll cy4gVGhpcyB3YXkgd2Uga2VlcCB1cCB3aXRoIHJpbmcgc2l6ZQo+PiBjaGFuZ2VzIGFzIGl0IGl0 IGV4cGVjdGVkIHRvIGJlIGluIHRoZSBjb21tYW5kIHJpbmcuIEEgaHlwb3RoZXRpY2FsIG11bHRp LXBhZ2UKPiAgICAgICAgICAgICAgICAgXiByZXBldGl0aW9uCk9LLCB3aWxsIHJlbW92ZSBpdC4K Cj4+IGNvbW1hbmQgcmluZyB3b3VsZCBpbmNyZWFzZSBudW1iZXIgb2Ygc2xvdHMgYW5kIHRodXMg dGhpcyBkYXRhIGxpc3Qgd291bGQgZ3Jvdwo+PiBhY2NvcmRpbmdseS4gTGlzdCBpcyB0ZXJtaW5h dGVkIGJ5IGFuIGVudHJ5IHdoaWNoIGBgYGdyZWZgYGAgZmllbGQgaXMgMCwgaGF2aW5nCj4+IGln bm9yZWQgdGhlIG90aGVyIGZpZWxkcyBvZiB0aGlzIHNwZWNpZmljIGVudHJ5Lgo+IAo+IENvdWxk IHlvdSBwbGVhc2UgZXhwbGFpbiBhIGJpdCBtb3JlIGhvdyB0aGUgY29tbWFuZCByaW5nIGluY3Jl YXNlcyB0aGUKPiBudW1iZXIgb2Ygc2xvdCBhbmQgd2h5IHdlIG5lZWQgdG8gYWxsb2NhdGUgdHdp Y2UgdGhlIG51bWJlciBvZiByZXF1aXJlZAo+IHNsb3RzIGF0IHRoZSBiZWdpbm5pbmc/CiJUaGlz IGxpc3QgaGFzIHR3aWNlIGFzIG1heCBzbG90cyBhcyIgaXMgbWVhbnQgdG8gc2F5IHRoYXQgdGhl IGxpc3QgaGFzIHR3aWNlIGFzCmNhcGFjaXR5IGFzIHRoZSBjb21tYW5kIHJpbmcuIFRoZSBsaXN0 IGVudHJ5IGlzIDggb2N0ZXRzLCBzbyBvbmUgcGFnZSBmaXRzIDUxMgplbnRyaWVzLiBUaGUgZGF0 YSByZWYgaXMgb25seSBmaWxsZWQgd2l0aCB1cCB0byB0aGUgY29tbWFuZCByaW5nIHNpemUgd2hp Y2gKbWVhbnMgb25seSBoYWxmIG9mIGl0IHdvdWxkIGJlIGZpbGxlZCBjdXJyZW50bHkuIEkgd2ls bCBhZGp1c3QgdGhpcyBzZW50ZW5jZQpoZXJlIHRvIG1ha2UgaXQgbW9yZSBjbGVhci4KCm11bHRp LXBhZ2UgcmluZ3MgYXJlbid0IHN1cHBvcnRlZCBvbiBuZXRiYWNrL25ldGZyb250ICh5ZXQpIGJ1 dCBhcyBhbiBleGFtcGxlIHdlCndvdWxkIGhhdmUgb25lIGB0eC1kYXRhLXJlZjBgIHRvIHJlcHJl c2VudCB0aGUgY29tbWFuZCByaW5nIHNsb3RzIG9mCmB0eC1yaW5nLXJlZjBgIGFuZCB0eC1yaW5n LXJlZjFgLiBJIG5vdGljZWQgdGhhdCB0byBub3Qgd2FzdGUgZ3JhbnRzLCBJIG5lZWQgdG8KYXNz dW1lIHRoZSBgYGBkYXRhLXJlZmBgYCBpcyBmdWxsIHdpdGggdGhlIGxhY2sgb2YgYSB0ZXJtYW50 aW5nIGVudHJ5OyBvdGhlcndpc2UKSSB3b3VsZCBlbmR1cCBuZWVkaW5nIGB0eC1kYXRhLXJlZjFg IHRvIGhhdmUgYSB0ZXJtaW5hdGluZyBlbnRyeS4gSSB3aWxsIGFkZCBhCnNlbnRlbmNlIG1lbnRp b25pbmcgdGhpcy4KCj4+ICMjIERhdGFwYXRoIENoYW5nZXMKPj4KPj4gVGhlIHBhY2tldCBpcyBj b3BpZWQgdG8vZnJvbSB0aGUgbWFwcGVkIGRhdGEgbGlzdCBncmVmcyBvZiB1cCB0byBgdHgtZGF0 YS1sZW5gCj4+IG9yIGByeC1kYXRhLWxlbmAuIFRoaXMgbWVhbnMgdGhhdCB0aGUgYnVmZmVyIChy ZWZlcmVuY2VkIGJ5IGBncmVmYCBmcm9tIHdpdGhpbgo+PiB0aGUgYHN0cnVjdCBuZXRpZl9bdHh8 cnhdX3JlcXVlc3RgKSBoYXMgdGhlIHNhbWUgZGF0YSB1cCB0byBgc2l6ZWAuICBJbiBvdGhlcgo+ PiB3b3JkcywgKmdyZWZbMC0+c2l6ZV0gY29udGVudHMgaXMgcmVwbGljYXRlZCBvbiB0aGUgYGRh dGEtcmluZ2AgYXQgYGlkeGAuIEhlbmNlCj4+IG5ldGJhY2sgc2hvdWxkIGlnbm9yZSB1cCB0byBg c2l6ZWAgb2YgdGhlIGBncmVmYCB3aGVuIHByb2Nlc3NpbmcgYXMgdGhlCj4+IGBkYXRhLXJpbmdg IGhhcyB0aGUgY29udGVudHMgb2YgaXQuCj4gCj4gTXkgbGFjayBvZiBuZXRmcm9udC9uZXRiYWNr IGtub3dsZWRnZSBtaWdodCBzaG93LCBidXQgSSBhbSBub3QKPiBmb2xsb3dpbmcuIFdoYXQgZG8g Z3JlZiwgc2l6ZSBhbmQgaWR4IHJlcHJlc2VudCBpbiB0aGlzIGNvbnRleHQ/IFBsZWFzZQo+IGV4 cGxhaW4gdGhlIG5ldyB3b3JrZmxvdyBpbiBtb3JlIGRldGFpbHMuClsgUGxlYXNlIGlnbm9yZSB0 aGUgcGFydCBzYXlpbmcgInJlcGxpY2F0ZWQgb24gdGhlIGBkYXRhLXJpbmdgIGF0IGBpZHhgIiwg c2luY2UKdGhlcmUgaXMgbm8gcmluZy4gSXQgc2hvdWxkIGluc3RlYWQgYmUgYGRhdGEgbGlzdGAg YnVmZmVyIGlkZW50aWZpZWQgYnkgYHN0cnVjdApuZXRpZl9bdHh8cnhdX3JlcXVlc3RgIGBpZGAg ZmllbGQuIF0KClRoZSBuZXcgd29ya2Zsb3cgaXMgbm90IHRvbyBkaWZmZXJlbnQgZnJvbSB0aGUg b2xkIG9uZTogKG9uIFRYKSB3ZSAqZmlyc3QqCm1lbWNweSB0aGUgcGFja2V0IHRvIHN0YWdpbmcg Z3JhbnRzIHJlZ2lvbiAob3IgYGRhdGEgZ3JlZmAgbGlrZSBob3cgSSBtZW50aW9uIGluCnRoaXMg ZG9jKSBvZiB1cCB0byB0aGUgbmVnb3RpYXRlZCBge3R4LHJ4fS1kYXRhLWxlbmAgKG9yIGBzaXpl YCBzcGVjaWZpZWQgaW4gdGhlCmNvbW1hbmQgcmluZyBpZiBzbWFsbGVyKS4gVGhlIGBkYXRhIGdy ZWZgIHRvIGJlIHVzZWQgaXMgaWRlbnRpZmllZCBieSB0aGUgYGlkYApmaWVsZCBpbiBuZXRpZl9b dHh8cnhdX3JlcXVlc3Qgc3RydWN0LiBUaGUgcmVzdCB3aWxsIHByb2NlZWQgYXMgYmVmb3JlLCB0 aGF0IGlzCmdyYW50aW5nIHRoZSBwYWNrZXQgKHdpdGhpbiBYRU5fUEFHRV9TSVpFIGJvdW5kYXJp ZXMpIGFuZCBzZXR0aW5nIGBncmVmYCBhbmQKYG9mZnNldGAgYWNjb3JkaW5nbHkgaW4gdGhlIHJl c3Qgb2YgdGhlIGNvbW1hbmQgcmluZyBzbG90cy4gTGV0IG1lIGltcHJvdmUgdGhpcwpwYXJhZ3Jh cGggdG8gbWFrZSB0aGlzIG1vcmUgY2xlYXIuCgpUaGUgb3RoZXIgZGlmZmVyZW5jZSAoc2VlIFpl cm9jb3B5IHNlY3Rpb24pIGlzIHRoYXQgaWYgZnJvbnRlbmQgc2V0cyB0aGUgZmxhZwpORVRUWEZf c3RhZ2luZ19idWZmZXIsIHRoZW4gdGhlIGBncmVmYCBmaWVsZCBpbiBuZXRpZl9bdHh8cnhdX3Jl cXVlc3Qgc3RydWN0CndpbGwgaGF2ZSBhIHZhbHVlIG9mIHRoZSBgZGF0YSBncmVmYCBpZCAodGhl IGlkIGZpZWxkIHNheWluZyAiZnJhbWUgaWRlbnRpZmllciIKdGhhdCB5b3UgYXNrZWQgZWFybGll ciBpbiB0aGUgZG9jKS4gVGhpcyBpcyB0byBhbGxvdyBhIGZyb250ZW5kIHRvIHNwZWNpZnkgYW4g UlgKYGRhdGEgZ3JlZmAgdG8gYmUgdXNlZCBpbiB0aGUgVFggcmluZyB3aXRob3V0IGludm9sdmlu ZyBhbnkgYWRkaXRpb25hbCBjb3B5LiBJCmhhdmVuJ3QgUG9DLWVkIHRoaXMgemVyb2NvcHkgcGFy dCB5ZXQsIGFzIGl0IG9ubHkgY292ZXJzIHR3byBzcGVjaWZpYyBzY2VuYXJpb3MKKHRoYXQgaXMg Z3Vlc3QgWERQX1RYIG9yIG9uIGEgRFBESyBmcm9udGVuZCkuCgo+PiBWYWx1ZXMgYmlnZ2VyIHRo ZW4gdGhlIDQwOTYgcGFnZS9ncmFudCBib3VuZGFyeSBvbmx5IGhhdmUgc3BlY2lhbCBtZWFuaW5n IGZvcgo+PiBiYWNrZW5kIGJlaW5nIGhvdyBtdWNoIGl0IGlzIHJlcXVpcmVkIHRvIGJlIGNvcGll ZC9wdWxsZWQgYWNyb3NzIHRoZSB3aG9sZQo+PiBwYWNrZXQgKHdoaWNoIGNhbiBiZSBjb21wb3Nl ZCBvZiBtdWx0aXBsZSBzbG90cykuIEhlbmNlIChlLmcuKSBhIHZhbHVlIG9mIDY1NTM2Cj4+IHZz IDQwOTYgd2lsbCBoYXZlIHRoZSBzYW1lIGRhdGEgbGlzdCBzaXplIGFuZCB0aGUgbGF0dGVyIHZh bHVlIHdvdWxkIGxlYWQgdG8KPj4gb25seSBjb3B5L3B1bGwgb25lIGdyZWYgaW4gdGhlIHdob2xl IHBhY2tldCwgd2hlcmVhcyB0aGUgZm9ybWVyIHdpbGwgYmUgYQo+PiBjb3B5LW9ubHkgaW50ZXJm YWNlIGZvciBhbGwgc2xvdHMuCj4+Cj4+ICMjIEJ1ZmZlciBJZGVudGlmaWNhdGlvbiBhbmQgRmxh Z3MKPj4KPj4gVGhlIGRhdGEgbGlzdCBpZHMgbXVzdCBzdGFydCBmcm9tIDAgYW5kIGFyZSBnbG9i YWwgYW5kIGNvbnRpbmd1b3VzIChhY3Jvc3MgYm90aAo+PiBsaXN0cykuICBEYXRhIHNsb3QgaXMg aWRlbnRpZmllZCBieSByaW5nIHNsb3QgYGBgaWRgYGAgZmllbGQuIFJlc3VsdGFudCBkYXRhCj4+ IGdyZWYgaWQgdG8gYmUgdXNlZCBpbiBSWCBkYXRhIGxpc3QgaXMgY29tcHV0ZWQgYnkgc3VidHJh Y3Qgb2YgYHN0cnVjdAo+PiBuZXRpZl9bdHh8cnhdX3JlcXVlc3RgIGBgYGlkYGBgIGZyb20gdG90 YWwgYW1vdW50IG9mIHR4IGRhdGEgZ3JlZnMuIEV4YW1wbGUgb2YKPj4gdGhlIGxpc3RzIGxheW91 dCAgYmVsb3c6Cj4gCj4gV2hhdCBpcyB0aGUgInJlc3VsdGFudCBkYXRhIGdyZWYgaWQiPyBXaGF0 IGlzIHRoZSAiUlggZGF0YSBsaXN0Ij8KPiBQbGVhc2UgZXhwbGFpbiBpbiBtb3JlIGRldGFpbHMu CiJSZXN1bHRhbnQgZGF0YSBncmVmIGlkIiBjb3JyZXNwb25kcyB0byB0aGUgY2FzZSB3aGVyZSB3 ZSBzZXQKTkVUVFhGX3N0YWdpbmdfYnVmZmVyIGZsYWcsIGluIHdoaWNoIGNhc2Ugd2Ugc2V0IHRo ZSBjb21tYW5kIHJpbmcgYGdyZWZgIHdpdGgKdGhlIGBpZGAgaW4gdGhlIGRhdGEgbGlzdCBlbnRy eSAoc2VlIGJlbG93IGRpYWdyYW0pLiAiUlggZGF0YSBsaXN0IiBpcyB0aGUgbGlzdApkZXNjcmli ZWQgd2l0aCBgcngtZGF0YS1yZWZgLiBJIHNob3VsZCBoYXZlIHB1dCB0aGF0IGFzIHNlcGFyYXRl IHBhcmFncmFoIGFzCnRoaXMgaXMgbWFraW5nIHRoaW5ncyBtb3JlIGNvbmZ1c2luZy4KCj4+IGBg YAo+PiAgW3R4LWRhdGEtcmVmLTAsIHR4LWRhdGEtbGVuPTI1Nl0KPj4gIHsgLmlkID0gMCwgZ3Jl ZiA9IDUxMiwgLm9mZnNldCA9IDB4MCAgIH0KPj4gIHsgLmlkID0gMSwgZ3JlZiA9IDUxMiwgLm9m ZnNldCA9IDB4MTAwIH0KPj4gIHsgLmlkID0gMiwgZ3JlZiA9IDUxMiwgLm9mZnNldCA9IDB4MjAw IH0KPj4gIC4uLgo+PiAgeyAuaWQgPSAyNTYsIGdyZWYgPSAwLCAub2Zmc2V0ID0gMHgwICAgfQo+ Pgo+PiAgW3J4LWRhdGEtcmVmLTAsIHJ4LWRhdGEtbGVuPTQwOTZdCj4+ICB7IC5pZCA9IDI1Niwg Z3JlZiA9IDUyOSwgLm9mZnNldCA9IDB4MCB9Cj4+ICB7IC5pZCA9IDI1NywgZ3JlZiA9IDUzMCwg Lm9mZnNldCA9IDB4MCB9Cj4+ICB7IC5pZCA9IDI1OCwgZ3JlZiA9IDUzMSwgLm9mZnNldCA9IDB4 MCB9Cj4+ICAuLi4KPj4gIHsgLmlkID0gNTEyLCBncmVmID0gMCwgICAub2Zmc2V0ID0gMHgwIH0K Pj4gYGBgCj4+Cj4+IFBlcm1pc3Npb25zIG9mIFJYIGRhdGEgZ3JlZnMgYXJlIHJlYWQtd3JpdGUg d2hlcmVhcyBUWCBkYXRhIGdyZWZzIGlzIHJlYWQtb25seS4KPj4KPj4gIyMgWmVyb2NvcHkKPj4K Pj4gRnJvbnRlbmQgbWF5IHdpc2ggdG8gcHJvdmlkZSBhIGJpZ2dlciBSWCBsaXN0IHRoYW4gVFgs IGFuZCB1c2UgUlggYnVmZmVycyBmb3IKPj4gdHJhbnNtaXNzaW9uIGluIGEgemVyb2NvcHkgZmFz aGlvbiBmb3IgZ3Vlc3RzIG1haW5seSBkb2luZyBmb3J3YXJkaW5nLiBJbiBzdWNoCj4+IGNhc2Vz IGJhY2tlbmQgc2V0IE5FVFRYRl9zdGFnaW5nX2J1ZmZlciBmbGFnIGluIGBgYG5ldGlmX3R4X3Jl cXVlc3RgYGAgZmxhZ3MKPj4gZmllbGQgc3VjaCB0aGF0IGBncmVmYCBmaWVsZCBpbnN0ZWFkIGRl c2lnbmF0ZXMgdGhlIGBpZGAgb2YgYSBkYXRhIGdyZWZzLgo+Pgo+PiBUaGlzIGlzIG9ubHkgdmFs aWQgd2hlbiBwYWNrZXRzIGFyZSBzb2xlbHkgZGVzY3JpYmVkIGJ5IHRoZSBzdGFnaW5nIGdyYW50 cyBmb3IKPj4gdGhlIHNsb3QgcGFja2V0IHNpemUgYmVpbmcgd3JpdHRlbi4gT3Igd2hlbiBbdHh8 cnhdLWRhdGEtbGVuIGlzIDQwOTYgKGZvcgo+PiBmZWF0dXJlLXNnIDApIG9yIDY1NTM1IChmb3Ig ZmVhdHVyZS1zZyAxKSBhbmQgdGh1cyBubyBuZXcgYGdyZWZgIGlzIG5lZWRlZCBmb3IKPj4gZGVz Y3JpYmluZyB0aGUgcGFja2V0IHBheWxvYWQuCj4+Cj4+IFxjbGVhcnBhZ2UKPj4KPj4gIyMgUGVy Zm9ybWFuY2UKPj4KPj4gTnVtYmVycyB0aGF0IGdpdmUgYSByb3VnaCBpZGVhIG9uIHRoZSBwZXJm b3JtYW5jZSBiZW5lZml0cyBvZiB0aGlzIGV4dGVuc2lvbi4KPj4gVGhlc2UgYXJlIEd1ZXN0IDwt PiBEb20wIHdoaWNoIHRlc3QgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiBiYWNrZW5kIGFuZAo+ PiBmcm9udGVuZCwgZXhjbHVkaW5nIG90aGVyIGJvdHRsZW5lY2tzIGluIHRoZSBkYXRhcGF0aCAo dGhlIHNvZnR3YXJlIHN3aXRjaCkuCj4+Cj4+IGBgYAo+PiAjIGdyYW50IGNvcHkKPj4gR3Vlc3Qg VFggKDF2Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTogIDEgNTA2IDE3MCBwcHMKPj4gR3Vlc3QgVFgg KDR2Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTogIDQgOTg4IDU2MyBwcHMKPj4gR3Vlc3QgVFggKDF2 Y3B1LCAyNTZiLCBVRFAgaW4gcHBzKTogIDEgMjk1IDAwMSBwcHMKPj4gR3Vlc3QgVFggKDR2Y3B1 LCAyNTZiLCBVRFAgaW4gcHBzKTogIDQgMjQ5IDIxMSBwcHMKPj4KPj4gIyBncmFudCBjb3B5ICsg Z3JhbnQgbWFwIChzZWUgbmV4dCBzdWJzZWN0aW9uKQo+PiBHdWVzdCBUWCAoMXZjcHUsIDI2MGIs IFVEUCBpbiBwcHMpOiAgICA1NzcgNzgyIHBwcwo+PiBHdWVzdCBUWCAoNHZjcHUsIDI2MGIsIFVE UCBpbiBwcHMpOiAgMSAyMTggMjczIHBwcwo+Pgo+PiAjIGRyb3AgYXQgdGhlIGd1ZXN0IG5ldHdv cmsgc3RhY2sKPj4gR3Vlc3QgUlggKDF2Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTogIDEgNTQ5IDYz MCBwcHMKPj4gR3Vlc3QgUlggKDR2Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTogIDIgODcwIDk0NyBw cHMKPj4gYGBgCj4+Cj4+IFdpdGggdGhpcyBleHRlbnNpb246Cj4+IGBgYAo+PiAjIG1lbWNweQo+ PiBkYXRhLWxlbj0yNTYgVFggKDF2Y3B1LCAgNjRiLCBVRFAgaW4gcHBzKTogIDMgNzU5IDAxMiBw cHMKPj4gZGF0YS1sZW49MjU2IFRYICg0dmNwdSwgIDY0YiwgVURQIGluIHBwcyk6IDEyIDQxNiA0 MzYgcHBzCj4+IGRhdGEtbGVuPTI1NiBUWCAoMXZjcHUsIDI1NmIsIFVEUCBpbiBwcHMpOiAgMyAy NDggMzkyIHBwcwo+PiBkYXRhLWxlbj0yNTYgVFggKDR2Y3B1LCAyNTZiLCBVRFAgaW4gcHBzKTog MTEgMTY1IDM1NSBwcHMKPj4KPj4gIyBtZW1jcHkgKyBncmFudCBtYXAgKHNlZSBuZXh0IHN1YnNl Y3Rpb24pCj4+IGRhdGEtbGVuPTI1NiBUWCAoMXZjcHUsIDI2MGIsIFVEUCBpbiBwcHMpOiAgICA1 ODggNDI4IHBwcwo+PiBkYXRhLWxlbj0yNTYgVFggKDR2Y3B1LCAyNjBiLCBVRFAgaW4gcHBzKTog IDEgNjY4IDA0NCBwcHMKPj4KPj4gIyAoZHJvcCBhdCB0aGUgZ3Vlc3QgbmV0d29yayBzdGFjaykK Pj4gZGF0YS1sZW49MjU2IFJYICgxdmNwdSwgIDY0YiwgVURQIGluIHBwcyk6ICAzIDI4NSAzNjIg cHBzCj4+IGRhdGEtbGVuPTI1NiBSWCAoNHZjcHUsICA2NGIsIFVEUCBpbiBwcHMpOiAxMSA3NjEg ODQ3IHBwcwo+Pgo+PiAjIChkcm9wIHdpdGggZ3Vlc3QgWERQX0RST1AgcHJvZykKPj4gZGF0YS1s ZW49MjU2IFJYICgxdmNwdSwgIDY0YiwgVURQIGluIHBwcyk6ICA5IDQ2NiA1OTEgcHBzCj4+IGRh dGEtbGVuPTI1NiBSWCAoNHZjcHUsICA2NGIsIFVEUCBpbiBwcHMpOiAzMyAwMDYgMTU3IHBwcwo+ PiBgYGAKPiAKPiBWZXJ5IG5pY2UhCjpECgo+PiBMYXRlbmN5IG1lYXN1cmVtZW50cyAobmV0cGVy ZiBUQ1BfUlIgcmVxdWVzdCBzaXplIDEgYW5kIHJlc3BvbnNlIHNpemUgMSk6Cj4+IGBgYAo+PiAy NCBLVHBzIHZzIDI4IEtUcHMKPj4gMzkgS1RwcyB2cyA1MCBLVHBzICh3aXRoIGtlcm5lbCBidXN5 IHBvbGwpCj4+IGBgYAo+Pgo+PiBUQ1AgQnVsayB0cmFuc2ZlciBtZWFzdXJlbWVudHMgYXJlbid0 IHNob3dpbmcgYSByZXByZXNlbnRhdGl2ZSBpbmNyZWFzZSBvbgo+PiBtYXhpbXVtIHRocm91Z2hw dXQgKHNvbWV0aW1lcyB+MTAlKSwgYnV0IHJhdGhlciBsZXNzIHJldHJhbnNtaXNzaW9ucyBhbmQK Pj4gbW9yZSBzdGFibGUuIFRoaXMgaXMgcHJvYmFibHkgYmVjYXVzZSBvZiBiZWluZyBoYXZpbmcg YSBzbGlnaHQgZGVjcmVhc2UgaW4gcnR0Cj4+IHRpbWUgKGkuZS4gcmVjZWl2ZXIgYWNrbm93bGVk Z2luZyBkYXRhIHF1aWNrZXIpLiBDdXJyZW50bHkgdHJ5aW5nIGV4cGxvcmluZwo+PiBvdGhlciBk YXRhIGxpc3Qgc2l6ZXMgYW5kIHByb2JhYmx5IHdpbGwgaGF2ZSBhIGJldHRlciBpZGVhIG9uIHRo ZSBlZmZlY3RzIG9mCj4+IHRoaXMuCj4gCj4gVGhpcyBpcyBzdHJhbmdlLiBCeSBUQ1AgQnVsayB0 cmFuc2ZlcnMsIGRvIHlvdSBtZWFuIGlwZXJmPwpZZWFwLgoKPiBGcm9tIG15IHB2Y2FsbHMgZXhw ZXJpZW5jZSwgSSB3b3VsZCBleHBlY3QgYSBncmVhdCBpbXByb3ZlbWVudCB0aGVyZSB0b28uCk5v dGljZSB0aGF0IGhlcmUgd2UgYXJlIG9ubHkgbWVtY3B5aW5nIGEgc21hbGwgcG9ydGlvbiBvZiB0 aGUgcGFja2V0ICgyNTYgYnl0ZXMKbWF4LCBub3QgYWxsIG9mIGl0KS4gUGFzdCBleHBlcmllbmNl IChpbiBhIG9sZCBwcm9wb3NhbCBJIG1hZGUpIGl0IGFsc28gc2hvd2VkCm1lIGFuIGltcHJvdmVt ZW50IGxpa2UgeW91cnMuIEkgYW0gYSBiaXQgaGVzaXRhbnQgd2l0aCBtZW1jcHkgYWxsIG9mIHdh eSB3aGVuCm90aGVyIHRoaW5ncyBhcmUgaW52b2x2ZWQgaW4gdGhlIHdvcmtsb2FkOyBidXQgdGhl biBJIGN1cnJlbnRseSBkb24ndCBzZWUgbWFueQpvdGhlciBhbHRlcm5hdGl2ZXMgdG8gbGVzc2Vu IHRoZSBncmFudHMgb3ZlcmhlYWQuIEluIHRoZSBtZWFudGltZSBJJ2xsIGhhdmUgbW9yZQpkYXRh IHBvaW50cyBhbmQgaGF2ZSBhIGNsZWFyZXIgaWRlYSBvbiB0aGUgcmF0aW8gb2YgdGhlIGltcHJv dmVtZW50IHZzIHRoZQpjb21wcm9taXNlLgoKPj4gIyMgTGludXggZ3JhbnQgY29weSB2cyBtYXAg cmVtYXJrCj4+Cj4+IEJhc2VkIG9uIG51bWJlcnMgYWJvdmUgdGhlcmUncyBhIHN1ZGRlbiAyeCBw ZXJmb3JtYW5jZSBkcm9wIHdoZW4gd2Ugc3dpdGNoIGZyb20KPj4gZ3JhbnQgY29weSB0byBhbHNv IGdyYW50IG1hcCB0aGUgYCBncmVmYDogMSAyOTUgMDAxIHZzICA1NzcgNzgyIGZvciAyNTYgYW5k IDI2MAo+PiBwYWNrZXRzIGJ5dGVzIHJlc3BlY3RpdmFsbHkuIFdoaWNoIGlzIGFsbCB0aGUgbW9y ZSB2aXNpYmxlIHdoZW4gcmVtb3ZpbmcgdGhlIGdyYW50Cj4+IGNvcHkgd2l0aCBtZW1jcHkgaW4g dGhpcyBleHRlbnNpb24gKDMgMjQ4IDM5MiB2cyA1ODggNDI4KS4gV2hpbGUgdGhlcmUncyBiZWVu Cj4+IGRpc2N1c3Npb25zIG9mIGF2b2lkIHRoZSBUTEIgdW5mbHVzaCBvbiB1bm1hcCwgb25lIGNv dWxkIHdvbmRlciB3aGF0IHRoZQo+PiB0aHJlc2hvbGQgb2YgdGhhdCBpbXByb3ZlbWVudCB3b3Vs ZCBiZS4gQ2hhbmNlcyBhcmUgdGhhdCB0aGlzIGlzIHRoZSBsZWFzdCBvZgo+PiBvdXIgY29uY2Vy bnMgaW4gYSBmdWxseSBwb3BwdWxhdGVkIGhvc3QgKG9yIHdpdGggYW4gb3ZlcnN1YnNjcmliZWQg b25lKS4gV291bGQKPj4gaXQgYmUgd29ydGggZXhwZXJpbWVudGluZyBpbmNyZWFzaW5nIHRoZSB0 aHJlc2hvbGQgb2YgdGhlIGNvcHkgYmV5b25kIHRoZQo+PiBoZWFkZXI/Cj4gCj4gKzEKQ29vbCEK Cj4+IFxjbGVhcnBhZ2UKPj4KPj4gIyBSZWZlcmVuY2VzCj4+Cj4+IFswXSBodHRwOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNS0wNS9tc2cwMTUwNC5o dG1sCj4+Cj4+IFsxXSBodHRwczovL2dpdGh1Yi5jb20vZnJlZWJzZC9mcmVlYnNkL2Jsb2IvbWFz dGVyL3N5cy9kZXYvbmV0bWFwL25ldG1hcF9tZW0yLmMjTDM2Mgo+Pgo+PiBbMl0gaHR0cHM6Ly93 d3cuZnJlZWJzZC5vcmcvY2dpL21hbi5jZ2k/cXVlcnk9dmFsZSZzZWt0aW9uPTQmbj0xCj4+Cj4+ IFszXSBodHRwczovL2dpdGh1Yi5jb20vaW92aXNvci9icGYtZG9jcy9ibG9iL21hc3Rlci9FeHBy ZXNzX0RhdGFfUGF0aC5wZGYKPj4KPj4gWzRdCj4+IGh0dHA6Ly9wcm90b3R5cGUta2VybmVsLnJl YWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9uZXR3b3JraW5nL1hEUC9kZXNpZ24vcmVxdWlyZW1lbnRz Lmh0bWwjd3JpdGUtYWNjZXNzLXRvLXBhY2tldC1kYXRhCj4+Cj4+IFs1XSBodHRwOi8vbHhyLmZy ZWUtZWxlY3Ryb25zLmNvbS9zb3VyY2UvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUv aXhnYmVfbWFpbi5jI0wyMDczCj4+Cj4+IFs2XSBodHRwOi8vbHhyLmZyZWUtZWxlY3Ryb25zLmNv bS9zb3VyY2UvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9yeC5jI0w1Mgo+ Pgo+PiAjIEhpc3RvcnkKPj4KPj4gQSB0YWJsZSBvZiBjaGFuZ2VzIHRvIHRoZSBkb2N1bWVudCwg aW4gY2hyb25vbG9naWNhbCBvcmRlci4KPj4KPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+IERhdGUgICAg ICAgUmV2aXNpb24gVmVyc2lvbiAgTm90ZXMKPj4gLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+IDIwMTYtMTIt MTQgMSAgICAgICAgWGVuIDQuOSAgSW5pdGlhbCB2ZXJzaW9uLgo+PiAtLS0tLS0tLS0tIC0tLS0t LS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Pj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=