From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <8e90387c426e56b30ff01c581b3f883a34d63864.camel@bootlin.com> From: Paul Kocialkowski Date: Fri, 10 May 2019 16:28:20 +0200 In-Reply-To: References: <20190506175123.16445-1-imre.deak@intel.com> <20190508082442.7800-1-imre.deak@intel.com> <0a6aa43b2bc6db4e6b6f0fa3b31749cd62764160.camel@bootlin.com> <20190509120845.GC11264@ideak-desk.fi.intel.com> <856d50c4dfb80a98d73ed93bc0edf7ef8cc008d0.camel@bootlin.com> <274ecc5762db9314ef39fb2d9cec852b652b902c.camel@redhat.com> <419d16c1869b4f63e79fa9cf0f14dd32aa0db502.camel@intel.com> <6c87fea83175c1790a32c55d128d751eb43185a6.camel@bootlin.com> MIME-Version: 1.0 Subject: Re: [igt-dev] Improving DRM connector hotplug uevents List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Vetter Cc: "igt-dev@lists.freedesktop.org" , dri-devel , David Airlie , Thomas Petazzoni , Sean Paul List-ID: SGksCgpSZXNlbmRpbmcgdGhpcyB3aXRoIHRoZSByaWdodCBDQy4KCkFsc28gY2hhbmdlZCBteSBt aW5kIGluIHRoZSBtZWFudGltZSBhbmQgbXkgbGF0ZXN0IHByb3Bvc2FsIGlzIGF0OgpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwvMjAxOS1NYXkvMjE3NDQy Lmh0bWwKCk9uIEZyaSwgMjAxOS0wNS0xMCBhdCAxMDowNiArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIE1heSAxMCwgMjAxOSBhdCAxMDowMSBBTSBQYXVsIEtvY2lhbGtvd3Nr aQo+IDxwYXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4gd3JvdGU6Cj4gPiBIaSwKPiA+IAo+ ID4gT24gRnJpLCAyMDE5LTA1LTEwIGF0IDA5OjU2ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3Rl Ogo+ID4gPiBPbiBGcmksIE1heSAxMCwgMjAxOSBhdCA5OjQyIEFNIFBhdWwgS29jaWFsa293c2tp Cj4gPiA+IDxwYXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4gd3JvdGU6Cj4gPiA+ID4gSGks Cj4gPiA+ID4gCj4gPiA+ID4gU28gdGhpcyB0aHJlYWQgaGFzIGRyaWZ0ZWQgb2ZmIGZyb20gSUdU IHRvIGEgZ2VuZXJhbCBEUk0gaW1wcm92ZW1lbnQsCj4gPiA+ID4gc28gcmVuYW1pbmcgdGhlIHRo cmVhZCBhbmQgYWRkaW5nIHNvbWUgQ0NzLgo+ID4gPiA+IAo+ID4gPiA+IEl0J3MgYWJvdXQgYXZv aWRpbmcgZnVsbCByZXByb2JlcyAod2hpY2ggbWF5IGluY2x1ZGUgc2xvdyBFRElEIHJlYWRzLAo+ ID4gPiA+IGV0Yykgd2hlbiBhIGNvbm5lY3RvciBjaGFuZ2Ugd2FzIGRldGVjdGVkLCBieSBwcm92 aWRpbmcgaW5mb3JtYXRpb24KPiA+ID4gPiBhYm91dCB0aGUgY29ubmVjdG9yIGFuZCB0aGUgbmV3 IHN0YXRlIHRvIHVzZXJzcGFjZS4gVGhpcyB3YXksIHVzZXJzcGFjZQo+ID4gPiA+IGNhbiByZXBy b2JlIHRoZSBjaGFuZ2VkIGNvbm5lY3RvciBhbG9uZSAob3Igbm90IHJlcHJvYmUgYXQgYWxsIGlu IGNhc2UKPiA+ID4gPiBvZiBhIGRpc2Nvbm5lY3QpLgo+ID4gPiA+IAo+ID4gPiA+IEl0IGZlZWxz IGxpa2UgdGhlcmUgaXMgZ3Jvd2luZyB0ZW1wdGF0aW9uIHRvIGhhdmUgcGVyLWRyaXZlciBoYWNr cyB0bwo+ID4gPiA+IGF2b2lkIGZ1bGwgcmVwcm9iZXMgd2hlbiB0aGUgZHJpdmVyIGtub3dzIHRo YXQgbm90aGluZyBjaGFuZ2VkLCBidXQgSQo+ID4gPiA+IHRoaW5rIGl0IG1ha2VzIG1vcmUgc2Vu c2UgdG8gZml4dXAgdGhlIHVldmVudCB3ZSBzZW5kIHRvIG1ha2Ugc3VyZSB0aGF0Cj4gPiA+ID4g dXNlcnNwYWNlIGtub3dzIHdoYXQgdG8gcHJvYmUgZXhhY3RseS4KPiA+ID4gPiAKPiA+ID4gPiBP biBGcmksIDIwMTktMDUtMTAgYXQgMDY6NTUgKzAwMDAsIFNlciwgU2ltb24gd3JvdGU6Cj4gPiA+ ID4gPiBPbiBUaHUsIDIwMTktMDUtMDkgYXQgMTE6NTYgLTA0MDAsIEx5dWRlIFBhdWwgd3JvdGU6 Cj4gPiA+ID4gPiA+IEknbSBpbiBzdXBwb3J0IG9mIHRoaXMgYXMgd2VsbCwgd2UgcmVhbGx5IGNv dWxkIHVzZSBiZXR0ZXIgaG90cGx1ZyBldmVudHMuCj4gPiA+ID4gPiA+IEZlZWwgZnJlZSB0byBj YyBwYXRjaGVzIHRvIG1lIGZvciByZXZpZXcgOikKPiA+ID4gPiA+IAo+ID4gPiA+ID4gQW55IGlk ZWEocykgaG93IHRoZSBBUEkgd291bGQgbG9vayBsaWtlPwo+ID4gPiA+IAo+ID4gPiA+IEZyb20g YSBxdWljayBjaGF0IG9uIElSQyB5ZXN0ZXJkYXksIGl0IHNlZW1zIHRoYXQganVzdCBhZGRpbmcg ZW50cmllcwo+ID4gPiA+IHRvIHRoZSB1ZXZlbnQgd291bGQgZG8gYW5kIHdvdWxkIGJlIGJhY2t3 YXJkcy1jb21wYXRpYmxlICh3ZWxsLAo+ID4gPiA+IHByb3ZpZGVkIHRoYXQgdGhlIHVzZXJzcGFj ZSB1ZXZlbnQgcGFyc2VycyB3aWxsIG5vdCBmYWlsIGlmIHNvbWV0aGluZwo+ID4gPiA+IGV4dHJh IHRvICJIT1RQTFVHPTEiIGlzIHByb3ZpZGVkKS4KPiA+ID4gPiAKPiA+ID4gPiBDdXJyZW50bHks IHRoZSBub3RpZmljYXRpb24gaXMgc2VudCBnbG9iYWxseSBhdCBlYWNoIHJvdW5kIG9mIGRldGVj dGVkCj4gPiA+ID4gY29ubmVjdG9yIGNoYW5nZSAod2hpY2ggbWF5IGNvbmNlcm4gbXVsdGlwbGUg Y29ubmVjdG9ycykuIFNvIEkgdGhpbmsgd2UKPiA+ID4gPiBzaG91bGQganVzdCBsaXN0IHRoZSBj b25uZWN0b3JzIHRoYXQgY2hhbmdlZCBpbiB0aGUgdWV2ZW50IGFuZCB0aGVpcgo+ID4gPiA+IG5l dyBzdGF0ZS4gU28gbXkgcHJvcG9zYWwgaGVyZSBpcyBzb21ldGhpbmcgbGlrZToKPiA+ID4gPiAK PiA+ID4gPiBIT1RQTFVHPTEKPiA+ID4gPiBDT05ORUNUT1JfSUQ9NDcKPiA+ID4gPiBTVEFUVVM9 Q29ubmVjdGVkCj4gPiA+ID4gQ09OTkVDVE9SX0lEPTQ4Cj4gPiA+ID4gU1RBVFVTPURpc2Nvbm5l Y3RlZAo+ID4gPiA+IAo+ID4gPiA+IFdoZXJlIGVhY2ggU1RBVFVTIGVudHJ5IHdvdWxkIHJlZmVy IHRvIHRoZSBwcmV2aW91cyBDT05ORUNUT1JfSUQgZW50cnkuCj4gPiA+ID4gCj4gPiA+ID4gV2hh dCBkbyB5b3UgdGhpbms/Cj4gPiA+IAo+ID4gPiBXZSBoYXZlIHRoZSBiZXR0ZXIgdWV2ZW50IGFs cmVhZHksIGFsbCB3ZSBuZWVkIGlzIHdpcmluZyB1cCwgbG90cyBvZgo+ID4gPiBjb2RlLCBhbmQg dXNlcnNwYWNlIGZvciBpdC4gT2ssIG5vdCBxdWl0ZSwgcGF0Y2ggaXMgc3RpbGwgaW4gZmxpZ2h0 Ogo+ID4gPiAKPiA+ID4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDkwNjY3 Ny8KPiA+IAo+ID4gQWggZ3JlYXQgdG8gc2VlIHRoYXQhCj4gPiAKPiA+ID4gVGhlIHJlYWwgdHJv dWJsZSBpc24ndCB0aGUgbmV3IGV2ZW50LCBidXQgbWFraW5nIHN1cmUgaXQgZ29lcyBvdXQgZm9y Cj4gPiA+IGFueXRoaW5nIHRoYXQgbWlnaHQgaGF2ZSBjaGFuZ2VkLiBUaGVyZSdzIGEgbG90IG1v cmUgY29ubmVjdG9yIHN0YXR1cwo+ID4gPiB0aGFuIGp1c3QgdGhlIFNUQVRVUyBwcm9wZXJ0eS4K PiA+IAo+ID4gV2h5IHRob3VnaD8gSSB0aG91Z2h0IHRoaXMgd2FzIGEgaG90cGx1ZyBpbnRlcmZh Y2UsIG5vdCBhIGdlbmVyYWwKPiA+ICJzb21ldGhpbmctYWJvdXQtdGhlLWNvbm5lY3Rvci1jaGFu Z2VkIi4gVG8gbWUsIGhvdHBsdWcgaXMgcHJldHR5Cj4gPiBiaW5hcnk6IGVpdGhlciBpdCdzIGNv bm5lY3RlZCwgZWl0aGVyIGl0J3Mgbm90Lgo+ID4gCj4gPiBEbyB3ZSBhbHJlYWR5IHNlbmQgb3V0 IGhvdHBsdWcgdWV2ZW50cyB3aGVuIHNvbWV0aGluZyBlbHNlIHRoYW4gdGhlCj4gPiBzdGF0dXMg Y2hhbmdlZD8gSWYgc28sIG1heWJlIHdlIHNob3VsZCBjb25zaWRlciBoYW5kbGluZyB0aGUgcmVz dAo+ID4gc2VwYXJhdGVseSBmcm9tIGhvdHBsdWcuCj4gCj4gV2UgaGF2ZSBwbGVudHkgb2YgYnVn cyBhcm91bmQgImNoYW5nZWQgc2NyZWVuIG92ZXIgcy9yIGFuZCBubyBvdXRwdXQiLgo+IEltbyBp ZiB3ZSByZXdvcmsgaG90cGx1Zywgd2Ugc2hvdWxkIGdldCBhbGwgdGhlIG1pc3Rha2VzIHJpZ2h0 LgoKSSB0aGluayBzdXNwZW5kL3Jlc3VtZSBpcyBvbmUgc3BlY2lmaWMgY2FzZSB3aGVyZSBob3Rw bHVnIGp1c3QgY2FuJ3QgYmUKZGV0ZWN0ZWQgYnkgdGhlIGRyaXZlci4gSSB0aGluayBvbmUgc29s dXRpb24gdG8gdGhhdCB3b3VsZCBiZSB0byBhbHdheXMKaXNzdWUgYSBob3RwbHVnIGV2ZW4gZm9y IGFsbCBjb25uZWN0b3JzIG9uIHJlc3VtZS4gSSBkb24ndCByZWFsbHkgc2VlCmhvdyB3ZSBjb3Vs ZCBkbyBiZXR0ZXIgdGhhbiB0aGF0IGFueXdheS4KCj4gPiBMb29raW5nIGF0IGRybV9wcm9iZV9o ZWxwZXIuYydzIG91dHB1dF9wb2xsX2V4ZWN1dGUsIG15IHVuZGVyc3RhbmRpbmcKPiA+IGlzIHRo YXQgZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudCBpcyBvbmx5IGNhbGxlZCB3aGVuIHRoZSBz dGF0dXMKPiA+IGNoYW5nZWQsIG5vdCBvdGhlciBwcm9wcy4KPiAKPiBZZWFoLCBhbmQgdGhhdCdz IHdoeSB1c2Vyc3BhY2UgaGFzIHRvIHJlcHJvYmUgYWxsIHRoZSB0aW1lLgoKSSdtIGEgYml0IGNv bmZ1c2VkIHRoZW4sIGhvdyBjYW4gdXNlcnNwYWNlIGJlIG5vdGlmaWVkIHRoYXQgc29tZXRoaW5n CmVsc2UgdGhhbiB0aGUgY29ubmVjdGVkIHN0YXR1cyBjaGFuZ2VkIGlmIHRoYXQncyB0aGUgb25s eSBjYXNlIHdoZXJlIGEKdWV2ZW50IGlzIGlzc3VlZD8KCklmIHNvbWV0aGluZyBlbHNlIGNoYW5n ZWQgdGhhdCBuZWVkcyB1c2Vyc3BhY2UgYXR0ZW50aW9uLCBtYXliZSB3ZQpjb3VsZCBzZW5kIG91 dCBhIHVldmVudCB3aXRoIHRoZSBDT05ORUNUT1JfSUQgYnV0IHdpdGhvdXQgdGhlIFNUQVRVUwpw YXJ0IHNvIHRoYXQgdXNlcnNwYWNlIGhhcyB0byByZXByb2JlIHRoYXQgY29ubmVjdG9yIHRvIGtu b3cgd2hhdCdzCndoYXQuCgo+ICBPbmUgaWRlYQo+IHRoYXQgd2UgZmxvYXRlZCBhcm91bmQgaXMg dG8gaGF2ZSBhbiBlcG9jaGUgY291bnRlciwgd2hpY2ggY2hhbmdlcwo+IGV2ZXJ5IHRpbWUgYW55 dGhpbmcgd2l0aCB0aGUgY29ubmVjdG9yIGNoYW5nZXMgd3J0IGhvdHBsdWcgcmVsYXRlZAo+IHN0 YXRlIChlZGlkLCBzaW5rIGlkLCB3aGF0ZXZlcikuIFRoZSBtb3JlIHNwZWNpZmljIGhvdHBsdWcg dWV2ZW50Cj4gd291bGQgdGhlbiBnaXZlIHlvdSBhbiBldmVudCBvbiB0aGF0IGVwb2NoIGNvdW50 ZXIsIHNvIHVzZXJzcGFjZSBrbm93cwo+IGl0IG5lZWRzIHRvIHJlcHJvYmUgdGhhdCBzcGVjaWZp YyBjb25uZWN0b3IgZm9yIGFsbCB0aGUgbmV3IHN0YXRlLgoKVGhhdCB3b3VsZCB3b3JrLCBidXQg SSBmaW5kIHRoYXQgYSBiaXQgb3ZlcmtpbGwgZm9yIHRoZSBpc3N1ZSBhdCBoYW5kLgpBdCBsZWFz dCBJJ20gbm90IGNvbnZpbmNlZCB0aGF0IHNvbWV0aGluZyBzaW1wbGVyIHdvdWxkIGJlIGEgYmFk IGZpdC4KClRoZSBpZGVhIG9mIGFkZGluZyBTVEFUVVMgdG8gdGhlIHVldmVudCBpcyBqdXN0IHRv IHByb3ZpZGUgYSBmYXN0LXBhdGgKdG8gYXZvaWQgcmVwcm9iZSBmb3IgdGhlIGJhc2ljIHVucGx1 ZyBjYXNlLiBJZiBpdCdzIGEgcGx1ZyBvciBzb21ldGhpbmcKbW9yZSBjb21wbGV4IHRoYXQgaGFz IGhhcHBlbmVkLCB0aGVuIEkgdGhpbmsgdXNlcnNwYWNlIHNob3VsZCBkbyBhCnJlcHJvYmUgb2Yg dGhlIGNvbm5lY3RvciBhbnl3YXkuIElmIHdlIHByb3Blcmx5IG5vdGlmeSB1c2Vyc3BhY2Ugb25s eQp3aGVuIHNvbWV0aGluZyBjaGFuZ2VkLCBJIGRvbid0IHRoaW5rIHdlIG5lZWQgYW4gZXBvY2gg Y291bnRlciBpbgpwYXJ0aWN1bGFyLgoKQ2hlZXJzLAoKUGF1bAoKPiAtRGFuaWVsCj4gCj4gCj4g PiBDaGVlcnMsCj4gPiAKPiA+IFBhdWwKPiA+IAo+ID4gPiAtRGFuaWVsCj4gPiA+IAo+ID4gPiA+ IENoZWVycywKPiA+ID4gPiAKPiA+ID4gPiBQYXVsCj4gPiA+ID4gCj4gPiA+ID4gPiA+IE9uIFRo dSwgMjAxOS0wNS0wOSBhdCAxNDoyNCArMDIwMCwgUGF1bCBLb2NpYWxrb3dza2kgd3JvdGU6Cj4g PiA+ID4gPiA+ID4gSGksCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gT24gVGh1LCAyMDE5 LTA1LTA5IGF0IDE1OjA4ICswMzAwLCBJbXJlIERlYWsgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiBP biBUaHUsIE1heSAwOSwgMjAxOSBhdCAwOToyNTo0MUFNICswMjAwLCBQYXVsIEtvY2lhbGtvd3Nr aSB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gT24gV2VkLCAyMDE5LTA1LTA4IGF0IDExOjI0ICsw MzAwLCBJbXJlIERlYWsgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQWZ0ZXIgc2NoZWR1bGlu ZyBhbiBIUEQgdG9nZ2xlIGV2ZW50LCBtYWtlIHN1cmUgdGhhdCB3ZSB3YWl0IGZvciB0aGUKPiA+ ID4gPiA+ID4gPiA+ID4gPiBob3RwbHVnIGV2ZW50IGZvciBlYWNoIGNvbm5lY3RvciB0aGF0IG1h eSBiZSBzZW50IGJ5IHRoZSBkcml2ZXIuCj4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiA+ID4gRGVwZW5kaW5nIG9uIHRoZSBzY2hlZHVsaW5nIHRoZXJlIGNvdWxkIGJlIDEgZXZl bnQgb3IgYXMgbWFueSBldmVudHMKPiA+ID4gPiA+ID4gPiA+ID4gPiBhcwo+ID4gPiA+ID4gPiA+ ID4gPiA+IGNvbm5lY3RvcnMgd2Ugc2NoZWR1bGVkIGFuIEhQRCB0b2dnbGUgZXZlbnQgb24sIGRl cGVuZGluZyBvbiB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gPiB0aW1pbmcuCj4gPiA+ID4gPiA+ID4g PiA+ID4gU28gaWYgd2UgZG9uJ3QgeWV0IHNlZSB0aGUgZXhwZWN0ZWQgY29ubmVjdG9yIHN0YXRl IG9uIGEgZ2l2ZW4KPiA+ID4gPiA+ID4gPiA+ID4gPiBjb25uZWN0b3IKPiA+ID4gPiA+ID4gPiA+ ID4gPiB0cnkgdG8gd2FpdCBmb3IgYW4gYWRkaXRpb25hbCBob3RwbHVnIGV2ZW50IGFuZCByZXBy b2JlL3JlY2hlY2sgdGhlCj4gPiA+ID4gPiA+ID4gPiA+ID4gc3RhdGUuCj4gPiA+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBUaGlzIGNoYW5nZXMgbWFrZXMgZ29vZCBzZW5zZSB0byBt ZSwgc286Cj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBSZXZpZXdlZC1CeTog UGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGJvb3RsaW4uY29tPgo+ID4gPiA+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gQW5kIGl0IGJyaW5ncyBiYWNrIGhhcmQgZmVl bGluZ3MgYWJvdXQgdGhlIGhvdHBsdWcgaW50ZXJmYWNlIHdlIGhhdmUKPiA+ID4gPiA+ID4gPiA+ ID4gdG9kYXkuLi4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gWWVzLCBJIHdhcyBz dXJwcmlzZWQgdG9vIG5vdCBmaW5kIGFueSB3YXkgdG8gaWRlbnRpZnkgd2hpY2ggY29ubmVjdG9y KHMpCj4gPiA+ID4gPiA+ID4gPiB0aGUgaG90cGx1ZyBldmVudCBpcyBhc3NvY2lhdGVkIHdpdGgu IFdlIGRpc2N1c3NlZCB3aXRoIFZpbGxlIGlmIGl0J2QKPiA+ID4gPiA+ID4gPiA+IG1ha2Ugc2Vu c2UgdG8gYWRkIGEgY29ubmVjdG9yIElEIG1hcCB0byB0aGUgdWV2ZW50LCBidXQgbm90IHN1cmUg aWYgaXQnZAo+ID4gPiA+ID4gPiA+ID4gYmUgdXNlZnVsIG91dHNpZGUgb2YgdGhpcyB0ZXN0LCBv ciBob3cgdGhhdCB3b3VsZCBhbGlnbiB3aXRoIENocmlzJwo+ID4gPiA+ID4gPiA+ID4gY29ubmVj dG9yIHByb2JlIHN0YXRlIGdlbmVyYXRpb24gaWRlYS4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiBFaXRoZXIgd2F5LCBJJ20gZGVmaW5pdGVseSBpbiBmYXZvciBvZiBoYXZpbmcgc29tZXRo aW5nIG1vcmUgcmVsaWFibGUKPiA+ID4gPiA+ID4gPiB0byBleHBvc2UgdG8gdXNlcnNwYWNlLiBI YXZpbmcgc29tZXRoaW5nIHRvIGNvcnJlbGF0ZSBlYWNoIGV2ZW50IHRvIG9uZQo+ID4gPiA+ID4g PiA+IChvciBtb3JlKSBjb25uZWN0b3Iocykgc291bmRzIGdvb2QgdG8gbWUuCj4gPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gQW5kIEkgdGhpbmsgdGhlcmUgaXMgYSBnZW5lcmFsIG5lZWQgZm9y IHRoaXMsIGl0J3Mgbm90IGp1c3QgSUdULgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IEN1 cnJlbnRseSwgZXZlcnkgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHVzaW5nIERSTSBoYXMgdG8gZG8g YSBmdWxsCj4gPiA+ID4gPiA+ID4gcmVwcm9iZSBvbmNlIGEgaG90cGx1ZyB1ZXZlbnQgaXMgcmVj ZWl2ZWQsIHdoaWNoIGlzIHJlYWxseSBub3Qgb3B0aW1hbC4KPiA+ID4gPiA+ID4gPiBJZiBhbiBl bnRyeSBpZGVudGlmeWluZyB0aGUgY29ubmVjdG9yIHdhcyBhbHNvIHByb3ZpZGVkLCB1c2Vyc3Bh Y2UKPiA+ID4gPiA+ID4gPiBjb3VsZCBvbmx5IHJlcHJvYmUgdGhhdCBjb25uZWN0b3IuIFRoZSBz dGVwIGFmdGVyIHRoYXQgd291bGQgYmUgaGF2aW5nCj4gPiA+ID4gPiA+ID4gdGhlIGluZGljYXRp b24gb2Ygd2hldGhlciB0aGUgY29ubmVjdG9yIHdhcyBjb25uZWN0ZWQgb3IgZGlzY29ubmVjdGVk Cj4gPiA+ID4gPiA+ID4gZGlyZWN0bHkgaW4gdWV2ZW50IHRvbywgc28gdGhhdCBubyBwcm9iaW5n IG5lZWRzIHRvIGJlIGRvbmUgYXQgYWxsIHdoZW4KPiA+ID4gPiA+ID4gPiBhIGdpdmVuIGNvbm5l Y3RvciBpcyBkaXNjb25uZWN0ZWQuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gQW55d2F5 LCBpZiB5b3UncmUgaW50ZXJlc3RlZCBpbiB0aGUgaWRlYSBhbmQgdGhhdCBWaWxsZSBhbmQgQ2hy aXMgYXJlCj4gPiA+ID4gPiA+ID4gaW4gZmF2b3IsIEkgcmVhbGx5IHRoaW5rIGl0IHdvdWxkIGJl IHdvcnRoIGZpeGluZyB0aGF0LiBBbmQgd2UnZCBvbmx5Cj4gPiA+ID4gPiA+ID4gYmUgYWRkaW5n IG5ldyBlbGVtZW50cyB0byB1ZXZlbnQsIHNvIHRoYXQgd291bGQgc3RheSBiYWNrd2FyZC0KPiA+ ID4gPiA+ID4gPiBjb21wYXRpYmxlIHRvby4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBD aGVlcnMsCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gUGF1bAo+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gPiA+IHYyOgo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gcy9pZ3RfYXNzZXJ0 KHggPj0geSkvaWd0X2Fzc2VydF9sdGUoeSwgeCkvIHRvIHNlZSB0aGUgYWN0dWFsIGxpbWl0cwo+ ID4gPiA+ID4gPiA+ID4gPiA+IGluCj4gPiA+ID4gPiA+ID4gPiA+ID4gICB0aGUgZGVidWdnaW5n IG91dHB1dC4gKEx5dWRlKQo+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0x MTA1MzQKPiA+ID4gPiA+ID4gPiA+ID4gPiBDYzogUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29j aWFsa293c2tpQGJvb3RsaW4uY29tPgo+ID4gPiA+ID4gPiA+ID4gPiA+IENjOiBMeXVkZSBQYXVs IDxseXVkZUByZWRoYXQuY29tPgo+ID4gPiA+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IElt cmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiA+ID4gPiBSZXZpZXdl ZC1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KPiA+ID4gPiA+ID4gPiA+ID4gPiAt LS0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgdGVzdHMva21zX2NoYW1lbGl1bS5jIHwgNDUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCj4gPiA+ID4gPiA+ID4gPiA+ID4g LQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvdGVzdHMva21zX2NoYW1lbGl1bS5jIGIvdGVzdHMva21zX2NoYW1lbGl1bS5j Cj4gPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggNzE0ZTVlMDYuLjUwMmYxZWZhIDEwMDY0NAo+ID4g PiA+ID4gPiA+ID4gPiA+IC0tLSBhL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsrKyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwo+ID4gPiA+ID4gPiA+ID4gPiA+IEBA IC0yODQsMTEgKzI4NCwzMiBAQCB0ZXN0X2VkaWRfcmVhZChkYXRhX3QgKmRhdGEsIHN0cnVjdAo+ ID4gPiA+ID4gPiA+ID4gPiA+IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAo+ID4gPiA+ID4gPiA+ID4g PiA+ICAgICBkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4gPiA+ID4gPiA+ID4g PiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gKy8qIFdhaXQg Zm9yIGhvdHBsdWcgYW5kIHJldHVybiB0aGUgcmVtYWluaW5nIHRpbWUgbGVmdCBmcm9tIHRpbWVv dXQKPiA+ID4gPiA+ID4gPiA+ID4gPiAqLwo+ID4gPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgYm9v bCB3YWl0X2Zvcl9ob3RwbHVnKHN0cnVjdCB1ZGV2X21vbml0b3IgKm1vbiwgaW50ICp0aW1lb3V0 KQo+ID4gPiA+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgIHN0cnVjdCB0 aW1lc3BlYyBzdGFydCwgZW5kOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICBpbnQgZWxhcHNlZDsK PiA+ID4gPiA+ID4gPiA+ID4gPiArICAgYm9vbCBkZXRlY3RlZDsKPiA+ID4gPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgIGlndF9hc3NlcnRfZXEoaWd0X2dldHRpbWUoJnN0 YXJ0KSwgMCk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgIGRldGVjdGVkID0gaWd0X2hvdHBsdWdf ZGV0ZWN0ZWQobW9uLCAqdGltZW91dCk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgIGlndF9hc3Nl cnRfZXEoaWd0X2dldHRpbWUoJmVuZCksIDApOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgZWxhcHNlZCA9IGlndF90aW1lX2VsYXBzZWQoJnN0YXJ0LCAmZW5k KTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgaWd0X2Fzc2VydF9sdGUoMCwgZWxhcHNlZCk7Cj4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICp0aW1lb3V0ID0gbWF4KDAsICp0aW1lb3V0IC0gZWxhcHNl ZCk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICByZXR1cm4g ZGV0ZWN0ZWQ7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gPiA+ID4gIHN0YXRpYyB2b2lkCj4gPiA+ID4gPiA+ID4gPiA+ID4gIHRyeV9z dXNwZW5kX3Jlc3VtZV9ocGQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBv cnQsCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgIGVudW0gaWd0X3N1c3Bl bmRfc3RhdGUgc3RhdGUsIGVudW0KPiA+ID4gPiA+ID4gPiA+ID4gPiBpZ3Rfc3VzcGVuZF90ZXN0 IHRlc3QsCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGV2 X21vbml0b3IgKm1vbiwgYm9vbCBjb25uZWN0ZWQpCj4gPiA+ID4gPiA+ID4gPiA+ID4gIHsKPiA+ ID4gPiA+ID4gPiA+ID4gPiArICAgZHJtTW9kZUNvbm5lY3Rpb24gdGFyZ2V0X3N0YXRlID0gY29u bmVjdGVkID8KPiA+ID4gPiA+ID4gPiA+ID4gPiBEUk1fTU9ERV9ESVNDT05ORUNURUQgOgo+ID4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEUk1fTU9ERV9DT05ORUNURQo+ID4gPiA+ID4gPiA+ID4gPiA+IEQ7Cj4gPiA+ID4g PiA+ID4gPiA+ID4gKyAgIGludCB0aW1lb3V0ID0gSE9UUExVR19USU1FT1VUOwo+ID4gPiA+ID4g PiA+ID4gPiA+ICAgICBpbnQgZGVsYXk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgIGludCBwOwo+ ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0zMTAsMTcgKzMzMSwy OSBAQCB0cnlfc3VzcGVuZF9yZXN1bWVfaHBkKGRhdGFfdCAqZGF0YSwgc3RydWN0Cj4gPiA+ID4g PiA+ID4gPiA+ID4gY2hhbWVsaXVtX3BvcnQgKnBvcnQsCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAg IH0KPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgaWd0X3N5c3Rl bV9zdXNwZW5kX2F1dG9yZXN1bWUoc3RhdGUsIHRlc3QpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsg ICBpZ3RfYXNzZXJ0KHdhaXRfZm9yX2hvdHBsdWcobW9uLCAmdGltZW91dCkpOwo+ID4gPiA+ID4g PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICBpZ3RfYXNzZXJ0KGlndF9ob3RwbHVn X2RldGVjdGVkKG1vbiwgSE9UUExVR19USU1FT1VUKSk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAg IGlmIChwb3J0KSB7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgaWd0X2Fzc2VydF9l cShyZXByb2JlX2Nvbm5lY3RvcihkYXRhLCBwb3J0KSwgY29ubmVjdGVkCj4gPiA+ID4gPiA+ID4g PiA+ID4gPwo+ID4gPiA+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgRFJN X01PREVfRElTQ09OTkVDVEVEIDoKPiA+ID4gPiA+ID4gPiA+ID4gPiBEUk1fTU9ERV9DT05ORUNU RUQpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGlndF9hc3NlcnRfZXEocmVwcm9i ZV9jb25uZWN0b3IoZGF0YSwgcG9ydCksCj4gPiA+ID4gPiA+ID4gPiA+ID4gdGFyZ2V0X3N0YXRl KTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgfSBlbHNlIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiAg ICAgICAgICAgICBmb3IgKHAgPSAwOyBwIDwgZGF0YS0+cG9ydF9jb3VudDsgcCsrKSB7Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBkcm1Nb2RlQ29ubmVjdGlvbiBjdXJy ZW50X3N0YXRlOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgIHBvcnQgPSBkYXRhLT5wb3J0c1twXTsKPiA+ID4gPiA+ID4gPiA+ID4g PiAtICAgICAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEocmVwcm9iZV9jb25uZWN0b3IoZGF0 YSwgcG9ydCksCj4gPiA+ID4gPiA+ID4gPiA+ID4gY29ubmVjdGVkID8KPiA+ID4gPiA+ID4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfRElTQ09OTkVD VEVEIDoKPiA+ID4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRFJNX01PREVfQ09OTkVDVEVEKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgIC8qCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgKiBUaGVy ZSBjb3VsZCBiZSBhcyBtYW55IGhvdHBsdWcgZXZlbnRzIHNlbnQKPiA+ID4gPiA+ID4gPiA+ID4g PiBieQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICogZHJpdmVyIGFz IGNvbm5lY3RvcnMgd2Ugc2NoZWR1bGVkIGFuIEhQRAo+ID4gPiA+ID4gPiA+ID4gPiA+IHRvZ2ds ZSBvbgo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICogYWJvdmUsIGRl cGVuZGluZyBvbiB0aW1pbmcuIFNvIGlmIHdlJ3JlIG5vdAo+ID4gPiA+ID4gPiA+ID4gPiA+IHNl ZWluZwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICogdGhlIGV4cGVj dGVkIGNvbm5lY3RvciBzdGF0ZSB0cnkgdG8gd2FpdAo+ID4gPiA+ID4gPiA+ID4gPiA+IGZvciBh biBIUEQKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAqIGV2ZW50IGZv ciBlYWNoIGNvbm5lY3Rvci9wb3J0Lgo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICovCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBjdXJyZW50 X3N0YXRlID0gcmVwcm9iZV9jb25uZWN0b3IoZGF0YSwgcG9ydCk7Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICBpZiAocCA+IDAgJiYgY3VycmVudF9zdGF0ZSAhPSB0YXJn ZXRfc3RhdGUpIHsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWd0X2Fzc2VydCh3YWl0X2Zvcl9ob3RwbHVnKG1vbiwKPiA+ID4gPiA+ID4gPiA+ID4gPiAm dGltZW91dCkpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdXJyZW50X3N0YXRlID0KPiA+ID4gPiA+ID4gPiA+ID4gPiByZXByb2JlX2Nvbm5lY3Rvcihk YXRhLCBwb3J0KTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIH0KPiA+ ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICBpZ3RfYXNzZXJ0X2VxKGN1cnJlbnRfc3RhdGUsIHRhcmdldF9zdGF0ZSk7Cj4gPiA+ID4gPiA+ ID4gPiA+ID4gICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgICAgICAgIHBvcnQgPSBOVUxMOwo+ID4gPiA+ID4gPiA+ID4gPiAtLQo+ID4g PiA+ID4gPiA+ID4gPiBQYXVsIEtvY2lhbGtvd3NraSwgQm9vdGxpbgo+ID4gPiA+ID4gPiA+ID4g PiBFbWJlZGRlZCBMaW51eCBhbmQga2VybmVsIGVuZ2luZWVyaW5nCj4gPiA+ID4gPiA+ID4gPiA+ IGh0dHBzOi8vYm9vdGxpbi5jb20KPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gLS0KPiA+ID4g PiBQYXVsIEtvY2lhbGtvd3NraSwgQm9vdGxpbgo+ID4gPiA+IEVtYmVkZGVkIExpbnV4IGFuZCBr ZXJuZWwgZW5naW5lZXJpbmcKPiA+ID4gPiBodHRwczovL2Jvb3RsaW4uY29tCj4gPiA+ID4gCj4g PiAtLQo+ID4gUGF1bCBLb2NpYWxrb3dza2ksIEJvb3RsaW4KPiA+IEVtYmVkZGVkIExpbnV4IGFu ZCBrZXJuZWwgZW5naW5lZXJpbmcKPiA+IGh0dHBzOi8vYm9vdGxpbi5jb20KPiA+IAotLSAKUGF1 bCBLb2NpYWxrb3dza2ksIEJvb3RsaW4KRW1iZWRkZWQgTGludXggYW5kIGtlcm5lbCBlbmdpbmVl cmluZwpodHRwczovL2Jvb3RsaW4uY29tCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXY=