From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Yang Subject: Re: [Help] Trigger Watchdog when adding an IPI in vcpu_wake Date: Fri, 16 Sep 2016 10:49:32 +0800 Message-ID: <20160916024932.GA13124@linux-gk3p> References: <20160913085437.GA14514@linux-gk3p> <1473766217.6339.103.camel@citrix.com> <20160914104417.GA25572@linux-gk3p> <1473869928.6339.210.camel@citrix.com> Reply-To: Wei Yang Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1473869928.6339.210.camel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli Cc: xuquan8@huawei.com, liuxiaojian6@huawei.com, george.dunlap@eu.citrix.com, xen-devel@lists.xen.org, richard.weiyang@gmail.com, mengxu@cis.upenn.edu, Wei Yang List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBTZXAgMTQsIDIwMTYgYXQgMDY6MTg6NDhQTSArMDIwMCwgRGFyaW8gRmFnZ2lvbGkg d3JvdGU6Cj5PbiBXZWQsIDIwMTYtMDktMTQgYXQgMTg6NDQgKzA4MDAsIFdlaSBZYW5nIHdyb3Rl Ogo+PiBPbiBUdWUsIFNlcCAxMywgMjAxNiBhdCAwMTozMDoxN1BNICswMjAwLCBEYXJpbyBGYWdn aW9saSB3cm90ZToKPj4gPsKgCj4+ID4gRG8geW91IG1pbmQgc2hhcmluZyBqdXN0IGEgYml0IG1v cmUsIHN1Y2ggYXM6Cj4+ID4gwqAtIG51bWJlciBvZiBwY3B1cwo+PiA+IMKgLSBudW1iZXIgb2Yg dmNwdXMgb2YgdGhlIHZhcmlvdXMgVk1zCj4+IDE2MCBwY3B1cwo+PiAxNiB2Y3B1cyBpbiBWTSBh bmQgOCBWTXMKPj4gCj5TbywgMTZ4OD0xMjgsIHdoaWNoIG1lYW5zIHlvdSdyZSBub3QgZXZlbiBv dmVyc3Vic2NyaWJpbmcuIE1heWJlIHNvbWUKPm9mIHRoZSBwY3B1cyBhcmUgaHlwZXJ0aHJlYWRz IGFuZCBub3QgZnVsbCBjb3JlcyAoYXJlIHRoZXk/KSwgYnV0Cj5zdGlsbCwgdGhpcyBpcyBub3Qg c29tZXRoaW5nIEknZCBkZXNjcmliZSAic3VwZXIgaW50ZW5zaXZlIGNwdSBsb2FkIi4KPgo+T2gs IHdlbGwsIHRoZXJlJ3MgZG9tMCBvZiBjb3Vyc2UuIFNvLCBpZiBkb20wIGhhcyBtb3JlIHRoYW4g MTYwLTEyOD0zMgo+dmNwdXMgKGlzIHRoaXMgdGhlIGNhc2U/KSwgeW91IHRlY2huaWNhbGx5IGFy ZSBvdmVyc3Vic2NyaWJpbmcuIEJ1dAo+dGhlbiwgd2hhdCBkb2VzIGRvbTAgZG8/IElzIGl0IHZl cnkgYnVzeSBkb2luZyBzb21lIHN0dWZmIG9uIGl0cyBvd24sCj5vciBydW5uaW5nIHRoZSBiYWNr ZW5kcy9ldGMgZm9yIHRoZSBWTXM/IENhbiB5b3UgY2hlY2sgdGhhdCB3aXRoIHRvcCwKPnhlbnRv cCwgYW5kIGFsaWtlPwo+Cj5JZiB0aGUgc3lzdGVtIGlzIG5vdCBvdmVyYm9va2VkLCBpdCdzIGEg Yml0IHN0cmFuZ2UgdGhhdCB0aGUgc2NoZWR1bGVyCj5pcyB0aGUgYm90dGxlbmVjay4KCkkgbG9v a2VkIGF0IHRoZSBvcmlnaW5hbCBkYXRhIGFnYWluLiBJIGRvbid0IHNlZSBkZXRhaWxlZCBkYXRh IHRvIGRlc2NyaWJlIHRoZQpkb20wIGNvbmZpZ3VyYXRpb24uCgpUaGUgZXhhY3QgdXNlciBtb2Rl bCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIG91ciBjbGllbnQuIFdlIGd1ZXNzIHRoZWlyIG1vZGVs Cmxvb2tzIGxpa2UgdGhpcy4KCgogICAgICstLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLSsgICAg ICAgICArLS0tLS0tLS0tLS0tLSsKICAgICB8VGltZXIgICB8IC0tLT58Q29vcmRpbmF0b3J8IC0t LSstLS0+fFdvcmtlciAgICAgICB8CiAgICAgKy0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tKyAg ICB8ICAgICstLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICArLS0tLS0tLS0t LS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0+fFdvcmtlciAg ICAgICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICstLS0tLS0t LS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICArLS0tLS0tLS0tLS0tLSsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0+fFdvcmtlciAgICAgICB8CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tKwoKT25lIENv b3JkaW5hdG9yIHdvdWxkIGRyaXZlciBzZXZlcmFsIHdvcmtlcnMgYmFzZWQgb24gYSBoaWdoIHJl c29sdXRpb24gdGltZXIuClBlcmlvZGljYWxseSwgd29ya2VycyB3b3VsZCBiZSB3YWtlZCB1cCBi eSB0aGUgY29vcmRpbmF0b3IuIFNvIGF0IG9uZSBtb21lbnQsCm1hbnkgd29ya2VycyB3b3VsZCBi ZSB3YWtlZCB1cCBhbmQgd291bGQgdHJpZ2dlcnMgdGhlIHZjcHVfd2FrZSgpIGluIHhlbi4KCk5v dCBzdXJlIHRoaXMgd291bGQgYmUgYSBwb3NzaWJsZSByZWFzb24gZm9yIHRoZSBidXJzdCB2Y3B1 X3dha2UoKT8KCj4KPj4gWWVzLCB0aGUgIkJsdWUgU2NyZWVuIiBpcyB3aGF0IHdlIHdhbnQgdG8g bWltaWMgdGhlIGJlaGF2aW9yIGZyb20KPj4gY2xpZW50Lgo+PiAKPj4gVGhlICJCbHVlIFNjcmVl biIgd2lsbCBmb3JjZSB0aGUgaHlwZXJ2aXNvciB0byBkbyBsb2FkIGJhbGFuY2UgaW4gbXkKPj4g bWluZC4KPj4gCj5JJ3ZlIG5vIGlkZWEgd2hhdCB0aGlzIG1lYW5zIChidXQgSSBkb24ndCBrbm93 IG11Y2ggb2YgV2luZG93cyBhbmQgb2YKPndoYXQgaGFwcGVucyB3aGVuIGl0IGNyYXNoZXMgd2l0 aCBhIGJsdWUgc2NyZWVuKS4KPgo+PiA+IEknbGwgaGF2ZSBhIHF1aWNrIGxvb2sgYXQgaG93IF9f cnVucV90aWNrbGUoKSBsb29rcyBsaWtlIGluIFhlbgo+PiA+IDQuMSwKPj4gPiBidXQgdGhlcmUn cyB2ZXJ5IGZldyBjaGFuY2VzIEknbGwgYmUgYXZhaWxhYmxlIHRvIHByb3ZpZGUgZGV0YWlsZWQK Pj4gPiByZXZpZXcsIGFkdmljZSwgdGVzdGluZywgZXRjLiwgb24gc3VjaCBhbiBvbGQgY29kZWJh c2UuIDotKAo+PiA+IAo+PiA+ID4gCj4+ID4gPiBCeSBsb29raW5nIGF0IHRoZSBjb2RlLCB3aGF0 IEkgbWlzc2VkIG1heSBiZSBpbiBfX3J1bnFfdGlja2xlKCksCj4+ID4gPiB3aGljaCBpbiBjYXNl Cj4+ID4gPiB0aGVyZSBhcmUgaWRsZSBwY3B1LCBzY2hlZHVsZV9zb2Z0aXJxIGlzIGFsc28gcmFp c2VkIG9uIHRoZW0uIEJ5Cj4+ID4gPiBkb2luZyBzbywKPj4gPiA+IHRob3NlIGlkbGUgcGNwdXMg d291bGQgc3RlYWwgb3RoZXIgYnVzeSB0YXNrcyBhbmQgbWF5IGluIGNoYW5jZQo+PiA+ID4gZ2V0 Cj4+ID4gPiBkMnYyPwo+PiA+ID4gCj4+ID4gWWVzLCBpdCBsb29rcyBsaWtlLCBpbiBYZW4gNC4x LCB0aGlzIGlzIG1vcmUgb3IgbGVzcyB3aGF0IGhhcHBlbnMuCj4+ID4gVGhlCj4+ID4gaWRlYSBp cyB0byBhbHdheXMgdGlja2xlIHBjcHUgNiwgaWYgdGhlIHByaW9yaXR5IG9mIHRoZSB3YWtpbmcg dmNwdQo+PiA+IGlzCj4+ID4gaGlnaGVyIHRoYW4gd2hhdCBpcyBydW5uaW5nIHRoZXJlLsKgCj4+ ID4gCj4+IEhtbS4uLiBpbiBjYXNlIHRoZXJlIGFyZSBpZGxlIHBjcHVzIGFuZCB0aGUgcHJpb3Jp dHkgb2YgdGhlIHdha2luZwo+PiB2Y3B1IGlzCj4+IGhpZ2hlciB0aGFuIHdoYXQgaXMgcnVubmlu ZyBvbiBwY3B1IDYsIHdvdWxkIHBjcHUgNiBoYXZlIG1vcmUgY2hhbmNlCj4+IHRvIHJ1biBpdD8K Pj4gb3Igb3RoZXIgaWRsZSBwY3VwIHdvdWxkIHN0ZWFsIGl0IGZyb20gcGNwdTY/IG9yIHRoZXkg aGF2ZSBlcXVhbAo+PiBjaGFuY2U/Cj4+IAo+Tm8sIGl0IHdvcmtzIGxpa2UgdGhpczoKPgo+wqAt IHBjcHUgNiBpcyBlaXRoZSBpZGxlIG9yIGl0IGlzIHJ1bm5pbmcgc29tZW9uZSBhbHJlYWR5IChz YXkgZDN2NCkKPsKgIMKgKyBpZiBwY3B1IDYgaXMgaWRsZSwgd2UgdGlja2xlIChpLmUuLCB3ZSBy YWlzZSBTQ0hFRFVMRV9TT0ZUSVJRKQo+wqAgwqAgwqBwY3B1IDYgaXRzZWxmLCBhbmQgd2UncmUg ZG9uZQoKT2ssIGl0IGxvb2tzIHRoZSBiZWhhdmlvciBkaWZmZXJzIGZyb20gNC4xIGFuZCBjdXJy ZW50IHVwc3RyZWFtLiBUaGUgdXBzdHJlYW0KanVzdCByYWlzZSB0aGUgc29mdGlycSB0byBwY3B1 NiB3aGVuIGl0IGlzIGlkbGUsIHdoaWxlIDQuMSB3b3VsZCByYWlzZSBzb2Z0aXJxCnRvIGJvdGgg cGNwdTYgYW5kIG90aGVyIGlkbGVycyBldmVuIHBjcHU2IGlzIGlkbGUuCgpJIHRoaW5rIGN1cnJl bnQgdXBzdHJlYW0gaXMgbW9yZSBjbGVhdmVyLgoKPsKgIMKgKyBpZiBwY3B1IDYgaXMgcnVubmlu ZyBkM3Y0IGFuZCB0aGVyZSBpcyBubyBvdGhlciBpZGxlIHBjcHU6Cj7CoCDCoCDCoCogaWYgcHJp byhkMnYyKSA+IHByaW8oZDN2NCkgd2UgdGlja2xlIHBjcHUgNiBhbmQgd2UncmUgZG9uZQo+wqAg wqAgwqAqIGlmIHByaW8oZDJ2MikgPCBwcmlvKGQzdjQpIHdlIGp1c3QgZG9uJ3QgdGlja2xlIGFu eW9uZQo+wqAgwqArIGlmIHBjcHUgNiBpcyBydW5uaW5nIGQzdjQgYW5kIHRoZXJlIGFyZSBzb21l IGlkbGUgcGNwdXM6Cj7CoCDCoCDCoCogaWYgcHJpbyhkMnYyKSA+IHByaW8oZDN2NCkgd2UgdGlj a2xlIHBjcHUgNiBfQU5EXyBvbmUgb3IgwqBbMV0KPsKgIMKgIMKgIMKgbW9yZSBvZiB0aGUgaWRs ZSBwY3B1cwo+wqAgwqAgwqAqIGlmIHByaW8oZDJ2MikgPCBwcmlvKGQzdjQpIHdlIF9PTkxZXyB0 aWNrbGUgb25lIG9yIG1vcmUgwqAgWzJdCj7CoCDCoCDCoCDCoG9mIHRoZSBpZGxlIHBjcHVzCj4K PklkZWEgYmVoaW5kIFsxXSBpcyB0aGF0IGQydjIgc2hvdWxkIHByZWVtcHQgZDN2NCBvbiBwY3B1 IDYsIGFuZCB0aGF0J3MKPndoeSB3ZSB0aWNrbGUgcGNwdSA2LiBIb3dldmVyLCB0aGF0IHdvdWxk IG1lYW4gdGhhdCBkM3Y0IHdvdWxkIGJlIHB1dAo+YmFjayBpbiBwY3B1J3MgNiBydW5xdWV1ZS4g U28sIGlmIHRoZXJlIGFyZSBpZGxlIHBjcHVzLCB3ZSB0aWNrbGUgdGhlbQo+c28gdGhhdCBvbmUg Y2FuIGNvbWUgYW5kIHN0ZWFtIGQzdjQuCj4KPklkZWEgYmVoaW5kIFsyXSBpcyB0aGF0IGQzdjQg c2hvdWxkIGNvbnRpbnVlIHRvIHJ1biBvbiBwY3B1IDYsIHdoaWxlCj5kMnYyIHdpbGwgYmUgcHV0 IGluIHBjcHUncyA2IHJ1bnF1ZXVlLiBIb3dldmVyLCBpZiB0aGVyZSBhcmUgaWRsZQo+cGNwdXMs IHdlIHRpY2tsZSB0aGVtIHNvIHRoYXQgb25lIGNhbiBjb21lIGFuZCBzdGVhbCBkMnYyLgo+Cj5X aGF0IHJlYWxseSBoYXBwZW5zIGlzIG5vdCBhbHdheXMgd2hhdCBpcyBleHBlY3RlZCwgYmVjYXVz ZSBpdCdzCj5wb3NzaWJsZSB0aGF0LCBldmVuIGlmIHByaW8oZDJ2Mik+cHJpbyhkM3Y0KSwgYW4g aWRsZXIgaXMgcXVpY2tlciBpbgo+d2FraW5nIHVwIGFuZCBzdGVhbGluZyBkMnYyIGZyb20gcGNw dSdzIDYgcnVucXVldWUgd2hlcmUgaXQgd2FzIHN0YXNoZWQKPndoaWxlIHBjcHUgNiBpdHNlbGYg cmVzY2hlZHVsZXMgYW5kIGVuYWN0cyB0aGUgcHJlZW1wdGlvbi4uLiBCdXQgdGhhdCdzCj51bmxp a2VseSBhbmQsIGFsbCBpbiBhbGwsIG5vdCBjYXRhc3Ryb3BoaWMgKGFsdGhvdWdoLCBvZiBjb3Vy c2UsIHdvcnNlCj5pbiB0ZXJtcyBvZiBvdmVyaGVhZCwgbG9jYWxpdHksIGV0YykKPgo+PiA+IElm IHBjcHUgNiB3YXMgbm90IGlkbGUsIHdlIGFsc28gdGlja2xlIG9uZSBvciBtb3JlIGlkbGUgcGNw dXMgc28KPj4gPiB0aGF0Ogo+PiA+IMKgLSBpZiB0aGUgd2FraW5nIHZjcHUgcHJlZW1wdGVkIHdo YXQgd2FzIHJ1bm5pbmcgb24gcGNwdSA2LCBhbgo+PiA+IGlkbGVyCj4+ID4gwqAgwqBjYW4gcGlj ay11cCAoInN0ZWFsIikgc3VjaCBwcmVlbXB0ZWQgdmNwdSBhbmQgcnVuIGl0Owo+PiA+IMKgLSBp ZiB0aGUgd2FraW5nIHZjcHUgZW5kZWQgdXAgaW4gdGhlIHJ1bnF1ZXVlLCBhbiBpZGxlciBjYW4g c3RlYWwKPj4gPiBpdAo+PiA+IAo+PiBIbW0uLi4gSSBkb24ndCBnZXQgdGhlIGRpZmZlcmVuY2Ug YmV0d2VlbiB0aGVzZSB0d28gY2FzZXMuCj4+IAo+PiBMb29rcyBib3RoIGFyZSBhbiBpZGxlciBz dGVhbCB0aGUgdmNwdS4KPj4gCj5JIGhvcGUgaXQncyBtb3JlIGNsZWFyIG5vdy4gOi0pCj4KClll cCwgdGhhbmtzLiA6LSkKCj4+ID4gWWVzLiBCdXQgYm90aCBpbiA0LjEgYW5kIGluIGN1cnJlbnQg c3RhZ2luZywgd2Ugb25seSByYWlzZQo+PiA+IFNDSEVEVUxFX1NPRlRJUlEgb24gcGNwdSA2LCBp ZiBhbmQgb25seSBpZiB0aGUgcHJpb3JpdHkgb2YgdGhlCj4+ID4gd2FraW5nCj4+ID4gdmNwdSBp cyBoaWdoZXIgYW5kIGl0IHNob3VsZCBwcmVlbXB0IHRoZSBjdXJyZW50bHkgcnVubmluZyB2Y3B1 Lgo+PiA+IAo+PiBPaCwgeW91IGFyZSByaWdodC4gSSBkaWRuJ3QgY2F0Y2ggdGhpcyBlaXRoZXIu Cj4+IAo+PiBUaGlzIG1lYW5zIGluIGNhc2XCoAo+PiBhKSB0aGUgcHJpb3JpdHkgaXMgbG93ZXIg dGhhbiBjdXJyZW50IG9uZcKgCj4+IGIpIG5vIGlkbGVyIGluIHN5c3RlbQo+PiAKPj4gVGhlIHZj cHUgd2lsbCBzaXQgcXVpZXRseSBpbiB0aGUgcnVucSBhbmQgd2FpdGluZyBmb3IgdGhlIHNjaGVk dWxlCj4+IG5leHQgdGltZS4KPj4gCj5XZWxsLCB5ZXMuIEl0IHdpbGwgc3RheSBpbiBwY3B1J3Mg NiBydW5xdWV1ZSB1bnRpbCBlaXRoZXI6Cj7CoC0gd2hhdCdzIHJ1bm5pbmcgb24gcGNwdSA2IGJs b2Nrcywgb3IgZmluaXNoZXMgaXRzIGNyZWRpdHMsIGV0Yy4sCj7CoCDCoGFuZCBwY3B1IDYgcmVz Y2hlZHVsZXMgYW5kIHBpY2tzIGl0IHVwCj7CoC0gc29tZSBvdGhlciBwY3B1IGJlY29tZXMgaWRs ZSBhbmQsIHdoZW4gcG9raW5nIGFyb3VuZCB0aGUgdmFyaW91cwo+wqAgwqBwY3B1cyBmb3Igc3Rl YWxpbmcgd29yaywgcGlja3MgaXQgdXAKPgo+T2YgY291cnNlLCBib3RoIGRlcGVuZHMgb24gaW4g d2hhdCBwb3NpdGlvbiBpbiBwY3B1J3MgNiBydW5xdWV1ZSB0aGUKPnZjcHUgaXMgd2hlbiB0aGUg c3BlY2lmaWMgZXZlbnQgaGFwcGVucy4KPgo+VGhpcyBpcyBhIGxpbWl0IG9mIHRoZSBDcmVkaXQx IHNjaGVkdWxlciwgZXNwZWNpYWxseSBvZiB0aGUgdmVyc2lvbgo+dGhhdCB5b3UgZmluZCBpbiA0 LjEuIE5ld2VyIGNvZGUgaXMgYSBiaXQgYmV0dGVyIHdydCB0aGlzIChhbHRob3VnaCBub3QKPmRy YW1hdGljYWxseS4uLiB0aGF0IGhhcyBub3QgYmVlbiBwb3NzaWJsZSEgOi0vKS4KPgo+PiA+IEhv d2V2ZXIsIHRoYXQgaXMgdGhlIGNhc2Ugb25seSBpZiBkMnYyIGhhZCBoaWdoZXIgcHJpb3JpdHkg dGhhbgo+PiA+IHdoYXQgaXMKPj4gPiBydW5uaW5nIG9uIHBjcHUgNi4gSWYgaXQgZG9lcyBub3Qs IHlvdToKPj4gPiDCoC0gX2Rvbid0XyB0aWNrbGUgcGNwdSA2Cj4+ID4gwqAtIHRpY2tsZSBvbmUg b3IgbW9yZSBpZGxlcnMsIGlmIGFueS4KPj4gPiAKPj4gPiBTbywgYWdhaW4sIGl0J3Mgbm90IHRo YXQgeW91IGFsd2F5cyB3YWtlIGFuZCBydW4gaXQgb24gcGNwdSA2Cj4+ID4gCj4+IEkgc2VlIHdo YXQgeW91IG1lYW4gOi0pCj4+IAo+PiBTbyBJIGFtIGN1cmlvdXMgYWJvdXQgd2h5IHdlIGFkZCB0 aGlzIGluIHBjcHUncyA2IHF1ZXVlLCB3aGVuIHdlIGtub3cKPj4gdGhlCj4+IHByaW9yaXR5IGlz IGxvdyBpbiBfX3J1bnFfdGlja2xlKCkgYW5kIHdvbid0IHRpY2tsZSB0aGF0LiBBbmQgd2UgYXJl Cj4+IHN1cmUKPj4gc29tZW9uZSBpbiB0aGUgZnV0dXJlIHdpbGwgZ3JhYiBwY3B1J3MgNiBzY2hl ZHVsZSBsb2NrIGFuZCB0YWtlIGl0Lgo+PiAKPlllcywgYnV0IHdoYXQgd2Ugc2hvdWxkIGRvPyBX ZSd2ZSB3b2tlbiBpdCB1cCBhbmQgaXQncyB2LT5wcm9jZXNzb3IKPnBvaW50cyB0byBwY3B1IDYs IHNvIHRoZSBsb2NrIHRoYXQgdmNwdV9zY2hlZHVsZV9sb2NrKCkgdGFrZXMgaXMgcGNwdSdzCj42 IHJ1bnF1ZXVlIGxvY2suCj4KPlRvIHF1ZXVlIGl0IG9uIHNvbWUgb3RoZXIgcGNwdSB3ZSdkIG5l ZWQgdG8gYmFzaWNhbGx5IG1pZ3JhdGUgaXQgKGkuZS4sCj5hdCBsZWFzdCBjaGFuZ2luZyB0aGUg dmFsdWUgb2Ygdi0+cHJvY2Vzc29yLCBidXQgYWxzbyBvdGhlciB0aGluZ3MsCj5saWtlIGNoZWNr aW5nIGhhcmQgYWZmaW5pdHksIGV0YykuIEFuZCB3ZSBhbHNvIHdvdWxkIG5lZWQgdG8gdGFrZSB0 aGUKPnJ1bnF1ZXVlIGxvY2sgb2YgYW5vdGhlciBwY3B1J3MgcnVucXVldWUuIEFsbCB0aGlzIGlu IHRoZSB3YWtldXAgcGF0aCwKPndoaWNoIHdpbGwgYmVjb21lIHNsb3cgYW5kIGNvbXBsZXguIEFu ZCB3ZSdkIG5lZWQgYWxsIHRoZSB3b3JrIHN0ZWFsaW5nCj5sb2dpYyAoaW4gbG9hZF9iYWxhbmNl KCksIGV0YykgdG8gc3RpbGwgZXhpc3QsIHRvIGNvdmVyIHRoZSBjYXNlIG9mCj53b3JrIG5lZWRp bmcgdG8gYmUgc3RvbGVuIHdoZW4gd2FrZXVwcyBhcmUgbm90IGludm9sdmVkIChpLmUuLCBpdCdz IG5vdAo+dGhhdCB3ZSBtYWtlIG90aGVyIHBhcnQgb2YgdGhlIHNjaGVkdWxlcidzIGNvZGUgbGVz cyBjb21wbGV4KS4KPgo+U28sIGJhc2ljYWxseSwgb2YgY291cnNlIHRoZXJlIHByb2JhYmx5IHdl cmUgYWx0ZXJuYXRpdmVzLCBidXQgdGhlCj5iYXNpYyBtb2RlbCwgcHJldHR5IG11Y2ggZXZlcnl3 aGVyZSwgaXMgInF1ZXVlIHdoZXJlIGl0IHdhcyBhbmQgdGlja2xlCj5vdGhlcnMgdG8gY29tZSBw aWNrIGl0IHVwIGlmIHN1aXRhYmxlIiwgYW5kIHRoYXQncyB3aGF0J3MgZG9uZSBoZXJlIHRvbwo+ KGFuZCBjb25zaXN0ZW5jeSBpcyBhIHZlcnkgZ29vZCB0aGluZyA6LUQpLgo+Cj4+IE9yIGluIHRo aXMgY2FzZSAtLSB3aGVuIHRoZXJlIGFyZSBpZGxlcnMgYW5kIHZjcHUncyBwcmlvcml0eSBpcwo+ PiBoaWdoZXIsCj4+IGluc3RlYWQgb2YgbGV0IHBjcHUgNiB0byB3YWtlIHRoaXMsIGJ1dCBsZXQg YW4gaWRsZXIgdG8gdGFrZSBpdD8gQXNrCj4+IHNvbWVvbmUKPj4gd2hvIGlzIGZyZWUgdG8gaGVs cCBhIGJ1c3kgb25lLgo+PiAKPkFuZCBpbiBmYWN0LCBpbiBtb3JlIHJlY2VudCB2ZXJzaW9uIG9m IFhlbiwgSSBtYWRlIHRoZSBjb2RlIGRvCj5zb21ldGhpbmcgdmVyeSBjbG9zZSB0byB3aGF0IHlv dSdyZSBzdWdnZXN0aW5nLiBIZXJlJ3MgdGhlIGNvbW1lbnQgdGhhdAo+eW91IGNhbiBmaW5kIHdo ZXJlIGFsbCB0aGlzIGxvZ2ljIGlzIGltcGxlbWVudGVkIChpdCdzIHdheSBtb3JlCj5jb21wbGlj YXRlZCB0aGFuIHRoaXMsIGFuZCB0aGFuIHRoZSBjb2RlIGluIDQuMSwgYmVjYXVzZSBpdCB0YWtl cyBzb2Z0LQo+YWZmaW5pdHkgaW50byBhY2NvdW50KS4KPgo+wqDCoMKgwqAvKgo+wqDCoMKgwqDC oCogSWYgdGhlIHBjcHUgaXMgaWRsZSwgb3IgdGhlcmUgYXJlIG5vIGlkbGVycyBhbmQgdGhlIG5l dwo+wqDCoMKgwqDCoCogdmNwdSBpcyBhIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoZSBvbGQgdmNw dSwgcnVuIGl0IGhlcmUuCj7CoMKgwqDCoMKgKgo+wqDCoMKgwqDCoCogSWYgdGhlcmUgYXJlIGlk bGUgY3B1cywgZmlyc3QgdHJ5IHRvIGZpbmQgb25lIHN1aXRhYmxlIHRvIHJ1bgo+wqDCoMKgwqDC oCogbmV3LCBzbyB3ZSBjYW4gYXZvaWQgcHJlZW1wdGluZyBjdXIuwqDCoElmIHdlIGNhbm5vdCBm aW5kIGEKPsKgwqDCoMKgwqAqIHN1aXRhYmxlIGlkbGVyIG9uIHdoaWNoIHRvIHJ1biBuZXcsIHJ1 biBpdCBoZXJlLCBidXQgdHJ5IHRvCj7CoMKgwqDCoMKgKiBmaW5kIGEgc3VpdGFibGUgaWRsZXIg b24gd2hpY2ggdG8gcnVuIGN1ciBpbnN0ZWFkLgo+wqDCoMKgwqDCoCovCj4KCkkgbGlrZSB0aGlz IGlkZWEuCgo+PiA+IEl0IHdpbGwgYmUgdGFrZW4sIGZvciBleGVjdXRpbmcgdmNwdV93YWtlKCku IEZyb20geW91ciBvd24KPj4gPiBkZXNjcmlwdGlvbgo+PiA+IG9mIHRoZSBtZWNoYW5pc20gYWJv dmU6Cj4+ID4gCj4+ID4gIk91ciBpZGVhIG1heSBsb29rcyBsaWtlIHRoaXM6Cj4+ID4gwqAgwqAx KSAxIElQSSAoV0FLRVVQX1RBU0tfVkVDVE9SKSBmcm9tIHBjcHUgNCB0byBwY3B1IDYKPj4gPiDC oCDCoDIpIDEgc29mdGlycSAoU0NIRURVTEVfV0FLRVVQKSB0byBzZWxmIG9uIHBjcHUgNiB0byBx dWV1ZSB0aGUKPj4gPiDCoCDCoCDCoCB2Y3B1Lgo+PiA+IMKgIMKgMykgMSBzb2Z0aXJxIChTQ0hF RFVMRV9TT0ZUSVJRKSB0byBzZWxmIG9uIHBjcHUgNi4iCj4+ID4gCj4+ID4gMSkgcnVucyBvbiBw Y3B1IDQgYW5kIHRha2VzIHBjcHUncyA2IHdha2VfdmNwdV9sb2NrCj4+ID4gMikgcnVucyBvbiBw Y3B1IDYgYW5kIHRha2VzIHBjcHUnNiA2IHJ1bnF1ZXVlIGxvY2ssIGZvciB2Y3B1X3dha2UoKQo+ PiA+IDMpIHJ1bnMgb24gcGNwdSA2IGFuZCB0YWtlcyBwY3B1J3MgNiBydW5xdWV1ZSBsb2NrLCBm b3IKPj4gPiDCoCDCoGNzY2hlZF9zY2hlZHVsZSgpCj4+ID4gCj4+IE9oLCB5b3UgYXJlIHJpZ2h0 Lgo+PiAKPj4gV2UgdHJ5IHRvIGxldCB0aGUgcGNwdSdzIDYgc2NoZWR1bGUgbG9jayBqdXN0IGJl IGdyYWJiZWQgYnkgcGNwdSA2LAo+PiB3aGlsZQo+PiBsb29rcyB0aGUgd2FrZV92Y3B1X2xvY2sg aXMgZ3JhYmJlZCBieSBvdGhlcnMuCj4+IAo+SSB1bmRlcnN0YW5kIHRoYXQsIGFuZCBJIGNhbid0 IHNheSB0aGF0IHRoaXMgaXMgbm90IGdvaW5nIHRvIGltcHJvdmUKPnRoaW5ncyBmb3IgeW91LiBB bGwgSSdtIHNheWluZyBpcyB0aGF0IHlvdSdyZSBwb3RlbnRpYWxseSByZWR1Y2luZyB0aGUKPm92 ZXJoZWFkIG9mIG9uZSAib3BlcmF0aW9uIiwgYnV0IGF0IHRoZSBzYW1lIHRpbWUgYWRkaW5nIHNv bWUgb3ZlcmhlYWQKPmluIG90aGVyICJvcGVyYXRpb25zIi4KPgo+RGVwZW5kaW5nIG9uIGEgbXVs dGlwbGljaXR5IG9mIGFzcGVjdHMsIHRoZSBuZXQgZWZmZWN0IGNvdWxkIGJlCj5wb3NpdGl2ZSBv ciBuZWdhdGl2ZS4KPgo+WW91IHlvdSBhc2tlZCBmb3IgZ2VuZXJhbCBhZHZpY2Ugb24gdGhlIHNv bHV0aW9uLCBhbmQgaGVscCB3aXRoIHRoZQo+Y29kZS4gSSBjYW4ndCBoZWxwIG11Y2ggZGVidWdn aW5nIGhhbmdzIGluIFhlbiA0LjEuIE15IG9waW5pb24gb24gdGhlCj5zb2x1dGlvbiBpcyB0aGF0 LCBhcmNoaXRlY3R1cmFsbHksIGlzIG5vdCBzb21ldGhpbmcgdGhhdCBJJ2QgY2FsbCBhbgo+YWJz b2x1dGUgaW1wcm92ZW1lbnQuCj4KPkxldCBtZSBwdXQgaXQgdGhpcyB3YXk6IGlmIHlvdSdkIHNl bmQgYSBwYXRjaCBzZXJpZXMgaW1wbGVtZW50aW5nIHdoYXQKPndlJ3JlIHRhbGtpbmcgYWJvdXQg Zm9yIHVwc3RyZWFtIFhlbiwgSSB3b3VsZCBub3QgQWNrIGl0IHdpdGhvdXQgc29saWQKPmRhdGEs IGNvbWluZyBmcm9tIGJlbmNobWFya3MgcnVuIG9uIGRpZmZlcmVudCBwbGF0Zm9ybSwgd2l0aCBk aWZmZXJlbnQKPndvcmtsb2FkcyBhbmQgdW5kZXIgZGlmZmVyZW50IGxvYWQgY29uZGl0aW9ucywg dGhhdCBjbGVhcmx5IHNob3dzCj5wZXJmb3JtYW5jZSBhcmUgaW1wcm92ZWQuCj4KPlRyYW5zbGF0 ZWQgdG8geW91ciBjYXNlLCB3aGljaCBpcywgQUZBSUNULCB0aGF0IHlvdSBuZWVkIHNvbWV0aGlu ZyBvbgo+dG9wIG9mIDQuMS4gSWYgeW91IGNhbiBoYWNrIHRoaXMgdXAgcXVpY2tseSBhbmQgdHJ5 IGl0LCB0aGVuIGdvb2QuIElmCj50aGlzIGlzIHRha2luZyBhIGxvdCBvZiB0aW1lLCBJJ20gbm90 IHN1cmUgSSdkIGludmVzdCBzdWNoIHRpbWUgb24gdGhpcwo+KGUuZy4sIEknZCByYXRoZXIgdHJ5 IHRvIG5hcnJvdyBkb3duIGV2ZW4gbW9yZSB0aGUgY2F1c2Ugb2YgdGhlIGlzc3VlCj55b3UncmUg c2VlaW5nIGFuZCwgYWZ0ZXIgdGhhdCBsb29rIGF0IG90aGVyIHNvbHV0aW9ucykuIEJ1dCBvZiBj b3Vyc2UKPkknbSBub3QgeW91IGFuZCB0aGlzIGlzIG9ubHksIGFuZCB5b3UgYWJzb2x1dGVseSBo YXZlIG5vIHJlYXNvbnMgdG8KPmZvbGxvdyBteSBhZHZpY2UuIDotKSA6LSkKPgoKQWN0dWFsbHks IEkgYWRtaXJlIHlvdXIgYWR2aWNlIDotKQoKV2UgZm91bmQgdGhlIHNjaGVkdWxlIGxvY2sgYmUg YSBjb25zdW1pbmcgcG9pbnQgaW4gb3VyIHNjZW5hcmlvLCBzbyB0aGUgZGlyZWN0CnRob3VnaHQg aXMgdHJ5IHRvIGF2b2lkIHRvIGdyYWIgaXQuIEhtbS4uLiB3aGlsZSBvdXIgaWRlYSBpcyBub3Qg dGhhdApzcGFya2xpbmcuCgo+PiBJIGFtIHRoaW5raW5nIG91ciBjaGFuZ2UgbWF5IGJlbmVmaXQg bGlrZSB0aGlzIC4KPj4gCj4+IFRoZSBzaXR1YXRpb24gaXM6Cj4+ICogdmNwdSdzIHByaW9yaXR5 IGlzIGhpZ2hlcgo+PiAqIHBjcHUgOSBpcyBpZGxlCj4+ICogcGNwdSA2IGFuZCBwY3B1IDkgYXJl IHJhaXNlZCBTQ0hFRFVMRV9TT0ZUSVJRCj4+IAo+PiBBdCB0aGlzIG1vbWVudCBwY3B1IDQgaXMg aG9sZGluZyBwY3B1IDYgcnVucXVldWUgbG9jaywgbmVpdGhlciBwY3B1IDYKPj4gbm9yIHBjcHUg OSBjb3VsZCBkbyB0aGVpciBqb2IgdW50aWwgcGNwdSA0IHJlbGVhc2UgcGNwdSA2IHJ1bnF1ZXVl Cj4+IGxvY2suCj4+IAo+WWVzLCBidXQgcGNwdSA0IHJlbGVhc2VzIHBjcHUncyA2IGxvY2sgcmln aHQgYWZ0ZXIgaGF2aW5nIHJhaXNlZCB0aGUKPnNvZnRpcnEgZm9yIHBjcHVzIDYgYW5kIDkuIE1v c3QgbGlrZWx5LCB3aGVuIDYgYW5kIDkgd2lsbCB0cnkgdG8gZ3JhYgo+dGhlaXIgb3duIGxvY2tz IGZvciBydW5uaW5nIGNzY2hlZF9zY2hlZHVsZSgpLCBhZnRlciBoYXZpbmcgcmVhY3RlZCB0bwo+ dGhlIElQSSwgZXRjLiwgcGNwdSA0IHdpbGwgaGF2ZSByZWxlYXNlZCBwY3B1J3MgNiBsb2NrIGFs cmVhZHkuCj4KPkJUVywgeW91IHNheSB0aGF0IHBjcHUgOSBpcyBpZGxlLCBidXQgdGhlbiB0aGF0 ICJpdCBjYW4ndCBkbyBoaXMgam9iIgo+YmVjYXVzZSBwY3B1IDQgaG9sZHMgdGhlIGxvY2sgb2Yg cGNwdSA2Li4uIEkgZG9uJ3QgdGhpbmsgSSB1bmRlcnN0YW5kCj53aGF0IHlvdSBtZWFuIHdpdGgg dGhpcy4KCkFmdGVyIHBjcHU5IGdldCB0aGUgc29mdGlycSBmcm9tIHBjdXA0LCBpdCB0cnkgdG8g c2NoZWR1bGUgYW5kIGRvIGxvYWQKYmFsYW5jZSwgaW4gd2hpY2ggd291bGQgdGFrZSBwY3B1NiBz Y2hlZHVsZSBsb2NrLgoKQXMgSSB0aG91Z2h0IHByZXZpb3VzbHksIHBjcHU2IHNjaGVkdWxlIGxv Y2sgaXMgaG9sZCBieSBwY3B1NCwgc28gcGNwdTkgc2hvdWxkCndhaXQgdW50aWwgcGNwdTQgcmVs ZWFzZSBpdC4gVGhpcyBpcyB3aGF0IEkgbWVhbiAiaXQgY2FuJ3QgZG8gaGlzIGpvYgppbW1lZGlh dGVseSIuCgpXaGlsZSBhcyB5b3UgbWVudGlvbmVkLCBjb21wYXJlZCB3aXRoIHBjcHU5LCBwY3B1 NCB3b3VsZCByZWxlYXNlIHBjcHU2CnNjaGVkdWxlIGxvY2sgZWFybGllci4gOi0pCgpMaXR0bGUg Y29tcGxpY2F0ZWQsIGhvcGUgSSBkZXNjcmliZWQgaXQgY2xlYXJseS4gOi0pCgo+Cj4+IFdoaWxl IGluIG91ciBjYXNlLCBwY3B1IDQgZG9lc24ndCBob2xkIHRoZSBydW5xdWV1ZSBsb2NrLCBzbyBw Y3B1IDYKPj4gYW5kIHBjcHUgOQo+PiBjb3VsZCBkbyB0aGVpciBqb2IgaW1tZWRpYXRlbHkuIEFo IEkga25vdywgdmVyeSBjb3JuZXIsIG5vdCBzdXJlCj4+IGFib3V0IHRoZQo+PiBlZmZlY3QuCj4+ IAo+QWdhaW4sIEkgZG9uJ3QgZ2V0IHdoYXQgImRvIHRoZWlyIGpvYiIgYW5kICJpbW1lZGlhdGVs eSIgbWVhbnMuCj4KPkluIGJvdGggY2FzZXMgdGhlIGNvbnNlcXVlbnRpYWxpdHkgb2YgZXZlbnRz IGlzIGFzIGZvbGxvd3M6Cj7CoDEuIHF1ZXVlIHRoZSB0YXNrIGluIG9uZSBwY3B1J3MgNiBxdWV1 ZSAoZWl0aGVyIHRoZSBydW5xLCBpbiBvcmlnaW5hbAo+wqAgwqAgY29kZSwgb3IgdGhlIHdha2V1 cCBsaXN0LCB3aXRoIHlvdXIgbW9kaWZpY2F0aW9ucykKPsKgMi4gdGlja2xlIHBjcHUgNgo+wqAz LiBwY3B1IDYgcmVhY3QgdG8gYmVpbmcgdGlja2xlZAo+wqA0LiBwY3B1IDYgc3RhcnQgcnVubmlu ZyB0aGUgbmV3IHZjcHUKPgo+SSBvcmlnaW5hbCBjb2RlIDEgYW5kIDQgYXJlIHNlcmlhbGl6ZWQg YnkgdGhlIHNhbWUgbG9jaywgd2l0aCB5b3VyCj5tb2RpZmljYXRpb25zLCBoYWxmIG9mIDEgY2Fu IGhhcHBlbiB1c2luZyBhIGRpZmZlcmVudCBsb2NrLiBCdXQgMSBhbmQgNAo+YXJlIGFsbW9zdCBu ZXZlciBvdmVybGFwcGVkIGFueXdheSwgc28gSSBkb24ndCB0aGluayB5b3UncmUgZ2FpbmluZwo+ bXVjaCBwYXJhbGxlbGlzbS4KPgo+V2hhdCAobWF5YmUpIHlvdSdyZSBhY2hpZXZpbmcgaXMgdGhh dCAxIGludGVyZmVyZXMgYSBsaXR0bGUgYml0IGxlc3MKPndpdGggb3RoZXIgdGhpbmdzIHRoYXQg d2FudHMgdG8gaGFwcGVuIG9uIHZjcHUgNiAoZS5nLiwgYmVjYXVzZSBvZgo+b3RoZXIgdmNwdXMg d3J0IHRoZSBvbmUgd2FraW5nIHVwKSwgd2hpY2ggbWF5IGJlIGEgZ29vZCB0aGluZywgaWYgdGhl cmUKPmFyZSBhIGxvdCBvZiB3YWtldXBzLiBCdXQgdGhlbiwgYWdhaW4sIGlmIHRoZXJlIGFyZSBh IGxvdCBvZiB3YWtldXBzLAo+eW91IHByb2JhYmx5IHdpbGwgc2VlIGNvbnRlbnRpb24gb2YgdGhl IHdha2VfdmNwdV9sb2NrIQo+Cj4+IEJUVywgSSBzdWRkZW5seSBmb3VuZCBzb2Z0aXJxIGlzIGlt cGxlbWVudGVkIGFzIGFuIElQSS4gU28gSSBhbQo+PiB0aGlua2luZwo+PiB3aGV0aGVyIGl0IGlz IHNhdmUgdG8gcmFpc2Ugc29mdGlycSB0byBpdHNlbGY/IAo+Pgo+U29mdGlycXMgYXJlIGltcGxl bWVudGVkIGJ5IG1lYW5zIG9mIElQSXMsIGJ1dCB3aGVuIHRoZXkncmUgcmFpc2VkIGZvcgo+b3Ro ZXIgcHJvY2Vzc29ycy4gU2VsZi1yYWlzaW5nIGEgc29mdGlycSBkb2VzIG5vdCBpbnZvbHZlIElQ SXMsIGp1c3QKPnNldHRpbmcgYSBiaXQgaW4gdGhlIHBlbmRpbmcgbWFzayAoc2VlIHJhaXNlX3Nv ZnRpcnEoKSBpbgo+eGVuL2NvbW1vbi9zb2Z0aXJxLmMpLgo+Cj4+IFNpbmNlIGl0IGxvb2tzIHdl IGFscmVhZHkgaG9sZAo+PiB0aGUgcnVucXVldWUgbG9jay4gT3IgYmVjYXVzZSB3ZSBoYXZlIHR1 cm5lZCB0aGUgaXJxIG9mZiBpbgo+PiB2Y3B1X3dha2UoKT8KPj4gCj5XZSBob2xkIHRoZSBydW5x dWV1ZSBsb2NrLCBzbyB3aGF0PyBTaG91bGQgd2Ugc2NoZWR1bGUgdGhhdAo+aW1tZWRpYXRlbHk/ IFRoYXQgd291bGQgcHJvYmFibHkgYmUgcG9zc2libGUsIGJ1dCBpdCdzIGFnYWluIGFuCj5hcmNo aXRlY3R1cmFsIGRlY2lzaW9uLCBhbmQgYSBtYXR0ZXIgb2YgY29uc2lzdGVuY3kuIEluIFhlbiwg d2UKPnNjaGVkdWxlIHdoZW4gd2UgZmluZCB0aGUgU0NIRURVTEVfU09GVElSUSB0byBiZSBwZW5k aW5nLgo+Cj5Bbnlob3csIEkgd291bGQgbm90IGV4cGVjdCB3b25kZXJzIGJ5IGVtYmVkZGluZyB0 aGUgcmUtc2NoZWR1bGluZyBjb2RlCj5kaXJlY3RseSBoZXJlIGVpdGhlci4KPgo+UmVnYXJkcywK PkRhcmlvCj4tLSAKPjw8VGhpcyBoYXBwZW5zIGJlY2F1c2UgSSBjaG9vc2UgaXQgdG8gaGFwcGVu IT4+IChSYWlzdGxpbiBNYWplcmUpCj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+RGFyaW8gRmFnZ2lvbGksIFBoLkQsIGh0 dHA6Ly9hYm91dC5tZS9kYXJpby5mYWdnaW9saQo+U2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyLCBD aXRyaXggU3lzdGVtcyBSJkQgTHRkLiwgQ2FtYnJpZGdlIChVSykKPgoKCgotLSAKUmljaGFyZCBZ YW5nXG5IZWxwIHlvdSwgSGVscCBtZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==