From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Grodzovsky, Andrey" Subject: Re: [PATCH v5 1/2] drm/sched: Refactor ring mirror list handling. Date: Thu, 10 Jan 2019 15:56:42 +0000 Message-ID: References: <1545333815-29870-1-git-send-email-andrey.grodzovsky@amd.com> <109f33b9-0a24-08e3-053d-57923b4d7e7f@amd.com> <642bdffd-afe9-1a58-4f32-9ef7a4cb22b7@amd.com> <5e256bb1-d4aa-f965-2799-d68c9f925b66@gmail.com> <6a2b45d7-0fa3-38fe-98b2-a538b663c6cc@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Koenig, Christian" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org" , "etnaviv-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Liu, Monk" List-Id: dri-devel@lists.freedesktop.org SnVzdCBhIHBpbmcuDQoNCkFuZHJleQ0KDQoNCk9uIDAxLzA5LzIwMTkgMTA6MTggQU0sIEFuZHJl eSBHcm9kem92c2t5IHdyb3RlOg0KPg0KPg0KPiBPbiAwMS8wOS8yMDE5IDA1OjIyIEFNLCBDaHJp c3RpYW4gS8O2bmlnIHdyb3RlOg0KPj4gQW0gMDcuMDEuMTkgdW0gMjA6NDcgc2NocmllYiBHcm9k em92c2t5LCBBbmRyZXk6DQo+Pj4NCj4+PiBPbiAwMS8wNy8yMDE5IDA5OjEzIEFNLCBDaHJpc3Rp YW4gS8O2bmlnIHdyb3RlOg0KPj4+PiBBbSAwMy4wMS4xOSB1bSAxODo0MiBzY2hyaWViIEdyb2R6 b3Zza3ksIEFuZHJleToNCj4+Pj4+IE9uIDAxLzAzLzIwMTkgMTE6MjAgQU0sIEdyb2R6b3Zza3ks IEFuZHJleSB3cm90ZToNCj4+Pj4+PiBPbiAwMS8wMy8yMDE5IDAzOjU0IEFNLCBLb2VuaWcsIENo cmlzdGlhbiB3cm90ZToNCj4+Pj4+Pj4gQW0gMjEuMTIuMTggdW0gMjE6MzYgc2NocmllYiBHcm9k em92c2t5LCBBbmRyZXk6DQo+Pj4+Pj4+PiBPbiAxMi8yMS8yMDE4IDAxOjM3IFBNLCBDaHJpc3Rp YW4gS8O2bmlnIHdyb3RlOg0KPj4+Pj4+Pj4+IEFtIDIwLjEyLjE4IHVtIDIwOjIzIHNjaHJpZWIg QW5kcmV5IEdyb2R6b3Zza3k6DQo+Pj4+Pj4+Pj4+IERlY2F1cGxlIHNjaGVkIHRocmVhZHMgc3Rv cCBhbmQgc3RhcnQgYW5kIHJpbmcgbWlycm9yDQo+Pj4+Pj4+Pj4+IGxpc3QgaGFuZGxpbmcgZnJv bSB0aGUgcG9saWN5IG9mIHdoYXQgdG8gZG8gYWJvdXQgdGhlDQo+Pj4+Pj4+Pj4+IGd1aWx0eSBq b2JzLg0KPj4+Pj4+Pj4+PiBXaGVuIHN0b3BwcGluZyB0aGUgc2NoZWQgdGhyZWFkIGFuZCBkZXRh Y2hpbmcgc2NoZWQgZmVuY2VzDQo+Pj4+Pj4+Pj4+IGZyb20gbm9uIHNpZ25hbGVkIEhXIGZlbmVz IHdhaXQgZm9yIGFsbCBzaWduYWxlZCBIVyBmZW5jZXMNCj4+Pj4+Pj4+Pj4gdG8gY29tcGxldGUg YmVmb3JlIHJlcnVubmluZyB0aGUgam9icy4NCj4+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4gdjI6IEZp eCByZXN1Ym1pc3Npb24gb2YgZ3VpbHR5IGpvYiBpbnRvIEhXIGFmdGVyIHJlZmFjdG9yaW5nLg0K Pj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+PiB2NDoNCj4+Pj4+Pj4+Pj4gRnVsbCByZXN0YXJ0IGZvciBh bGwgdGhlIGpvYnMsIG5vdCBvbmx5IGZyb20gZ3VpbHR5IHJpbmcuDQo+Pj4+Pj4+Pj4+IEV4dHJh Y3Qga2FybWEgaW5jcmVhc2UgaW50byBzdGFuZGFsb25lIGZ1bmN0aW9uLg0KPj4+Pj4+Pj4+Pg0K Pj4+Pj4+Pj4+PiB2NToNCj4+Pj4+Pj4+Pj4gUmV3b3JrIHdhaXRpbmcgZm9yIHNpZ25hbGVkIGpv YnMgd2l0aG91dCByZWx5aW5nIG9uIHRoZSBqb2INCj4+Pj4+Pj4+Pj4gc3RydWN0IGl0c2VsZiBh cyB0aG9zZSBtaWdodCBhbHJlYWR5IGJlIGZyZWVkIGZvciBub24gJ2d1aWx0eScNCj4+Pj4+Pj4+ Pj4gam9iJ3Mgc2NoZWR1bGVycy4NCj4+Pj4+Pj4+Pj4gRXhwb3NlIGthcm1hIGluY3JlYXNlIHRv IGRyaXZlcnMuDQo+Pj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4+IFN1Z2dlc3RlZC1ieTogQ2hyaXN0aWFu IEtvZW5pZyA8Q2hyaXN0aWFuLktvZW5pZ0BhbWQuY29tPg0KPj4+Pj4+Pj4+PiBTaWduZWQtb2Zm LWJ5OiBBbmRyZXkgR3JvZHpvdnNreSA8YW5kcmV5Lmdyb2R6b3Zza3lAYW1kLmNvbT4NCj4+Pj4+ Pj4+Pj4gLS0tDQo+Pj4+Pj4+Pj4+IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k ZXZpY2UuYyB8wqAgMTggKy0tDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIGRyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfc2NoZWQuYyB8wqAgMTEgKy0NCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAg wqAgZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMgfCAxODgNCj4+Pj4+Pj4+ Pj4gKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAg ZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc2NoZWQuYyB8wqAgMTIgKy0NCj4+Pj4+Pj4+Pj4gwqDC oMKgwqAgwqAgaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oIHzCoCAxMCArLQ0KPj4+Pj4+Pj4+ PiDCoMKgwqDCoCDCoCA1IGZpbGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCA4OCBkZWxl dGlvbnMoLSkNCj4+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KPj4+Pj4+Pj4+PiBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KPj4+Pj4+Pj4+PiBpbmRleCA4YTA3OGY0 Li5hNGJkMmQzIDEwMDY0NA0KPj4+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+Pj4+Pj4+Pj4+IEBAIC0zMjk4LDEyICszMjk4LDEw IEBAIHN0YXRpYyBpbnQNCj4+Pj4+Pj4+Pj4gYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDC oMKgwqDCoMKgIGlmICghcmluZyB8fCAhcmluZy0+c2NoZWQudGhyZWFkKQ0KPj4+Pj4+Pj4+PiDC oMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4+Pj4+Pj4+Pj4g wqDCoMKgwqAgwqAgLSBrdGhyZWFkX3BhcmsocmluZy0+c2NoZWQudGhyZWFkKTsNCj4+Pj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9zY2hlZF9zdG9wKCZyaW5nLT5zY2hlZCwgam9iID8gJmpv Yi0+YmFzZSA6IE5VTEwpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCAtwqDCoMKgwqDCoMKgwqAg aWYgKGpvYiAmJiBqb2ItPmJhc2Uuc2NoZWQgIT0gJnJpbmctPnNjaGVkKQ0KPj4+Pj4+Pj4+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4+Pj4+Pj4+Pj4gLQ0KPj4+Pj4+Pj4+ PiAtIGRybV9zY2hlZF9od19qb2JfcmVzZXQoJnJpbmctPnNjaGVkLCBqb2IgPyAmam9iLT5iYXNl IDoNCj4+Pj4+Pj4+Pj4gTlVMTCk7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZihqb2Ip DQo+Pj4+Pj4+Pj4+ICsgZHJtX3NjaGVkX2luY3JlYXNlX2thcm1hKCZqb2ItPmJhc2UpOw0KPj4+ Pj4+Pj4+IFNpbmNlIHdlIGRyb3BwZWQgdGhlICJqb2IgJiYgam9iLT5iYXNlLnNjaGVkICE9ICZy aW5nLT5zY2hlZCIgDQo+Pj4+Pj4+Pj4gY2hlY2sNCj4+Pj4+Pj4+PiBhYm92ZSB0aGlzIHdpbGwg bm93IGluY3JlYXNlIHRoZSBqb2JzIGthcm1hIG11bHRpcGxlIHRpbWVzLg0KPj4+Pj4+Pj4+DQo+ Pj4+Pj4+Pj4gTWF5YmUganVzdCBtb3ZlIHRoYXQgb3V0c2lkZSBvZiB0aGUgbG9vcC4NCj4+Pj4+ Pj4+Pg0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYWZ0ZXIg YWxsIGh3IGpvYnMgYXJlIHJlc2V0LCBodyBmZW5jZSBpcw0KPj4+Pj4+Pj4+PiBtZWFuaW5nbGVz cywNCj4+Pj4+Pj4+Pj4gc28gZm9yY2VfY29tcGxldGlvbiAqLw0KPj4+Pj4+Pj4+PiBhbWRncHVf ZmVuY2VfZHJpdmVyX2ZvcmNlX2NvbXBsZXRpb24ocmluZyk7DQo+Pj4+Pj4+Pj4+IEBAIC0zNDU0 LDE0ICszNDUyLDEwIEBAIHN0YXRpYyB2b2lkDQo+Pj4+Pj4+Pj4+IGFtZGdwdV9kZXZpY2VfcG9z dF9hc2ljX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+Pj4+Pj4+PiDCoMKg wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFyaW5nIHx8ICFyaW5nLT5zY2hlZC50aHJlYWQp DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVl Ow0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCAtwqDCoMKgwqDCoMKgwqAgLyogb25seSBuZWVkIHJl Y292ZXJ5IHNjaGVkIG9mIHRoZSBnaXZlbiANCj4+Pj4+Pj4+Pj4gam9iJ3MgcmluZw0KPj4+Pj4+ Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIG9yIGFsbCByaW5ncyAoaW4gdGhlIGNhc2UgQGpvYiBp cyBOVUxMKQ0KPj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIGFmdGVyIGFib3ZlIGFtZGdw dV9yZXNldCBhY2NvbXBsaXNoZWQNCj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+ Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmICgoIWpvYiB8fCBqb2ItPmJhc2Uuc2NoZWQgPT0g JnJpbmctPnNjaGVkKSAmJg0KPj4+Pj4+Pj4+PiAhYWRldi0+YXNpY19yZXNldF9yZXMpDQo+Pj4+ Pj4+Pj4+IC0gZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSgmcmluZy0+c2NoZWQpOw0KPj4+Pj4+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFhZGV2LT5hc2ljX3Jlc2V0X3JlcykNCj4+Pj4+Pj4+Pj4g KyBkcm1fc2NoZWRfcmVzdWJtaXRfam9icygmcmluZy0+c2NoZWQpOw0KPj4+Pj4+Pj4+PiDCoMKg wqDCoCDCoCAtIGt0aHJlYWRfdW5wYXJrKHJpbmctPnNjaGVkLnRocmVhZCk7DQo+Pj4+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfc3RhcnQoJnJpbmctPnNjaGVkLCAhYWRldi0+YXNp Y19yZXNldF9yZXMpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4+ Pj4gwqDCoMKgwqAgwqAgwqDCoMKgwqDCoCBpZiAoIWFtZGdwdV9kZXZpY2VfaGFzX2RjX3N1cHBv cnQoYWRldikpIHsNCj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5h dml2L2V0bmF2aXZfc2NoZWQuYw0KPj4+Pj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2 L2V0bmF2aXZfc2NoZWQuYw0KPj4+Pj4+Pj4+PiBpbmRleCA0OWE2NzYzLi42ZjEyNjhmIDEwMDY0 NA0KPj4+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X3NjaGVk LmMNCj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9zY2hl ZC5jDQo+Pj4+Pj4+Pj4+IEBAIC0xMDksMTYgKzEwOSwxOSBAQCBzdGF0aWMgdm9pZCANCj4+Pj4+ Pj4+Pj4gZXRuYXZpdl9zY2hlZF90aW1lZG91dF9qb2Ioc3RydWN0DQo+Pj4+Pj4+Pj4+IGRybV9z Y2hlZF9qb2IgKnNjaGVkX2pvYikNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCB9DQo+ Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIMKgwqDCoMKgwqAgLyogYmxvY2sgc2NoZWR1bGVyICovDQo+ Pj4+Pj4+Pj4+IC3CoMKgwqAga3RocmVhZF9wYXJrKGdwdS0+c2NoZWQudGhyZWFkKTsNCj4+Pj4+ Pj4+Pj4gLcKgwqDCoCBkcm1fc2NoZWRfaHdfam9iX3Jlc2V0KCZncHUtPnNjaGVkLCBzY2hlZF9q b2IpOw0KPj4+Pj4+Pj4+PiArwqDCoMKgIGRybV9zY2hlZF9zdG9wKCZncHUtPnNjaGVkLCBzY2hl ZF9qb2IpOw0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ICvCoMKgwqAgaWYoc2NoZWRfam9iKQ0K Pj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX2luY3JlYXNlX2thcm1hKHNjaGVk X2pvYik7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIMKgwqDCoMKgwqAgLyogZ2V0IHRoZSBHUFUg YmFjayBpbnRvIHRoZSBpbml0IHN0YXRlICovDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKg wqAgZXRuYXZpdl9jb3JlX2R1bXAoZ3B1KTsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDC oCBldG5hdml2X2dwdV9yZWNvdmVyX2hhbmcoZ3B1KTsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAg KyBkcm1fc2NoZWRfcmVzdWJtaXRfam9icygmZ3B1LT5zY2hlZCk7DQo+Pj4+Pj4+Pj4+ICsNCj4+ Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCAvKiByZXN0YXJ0IHNjaGVkdWxlciBhZnRlciBH UFUgaXMgdXNhYmxlIGFnYWluICovDQo+Pj4+Pj4+Pj4+IC3CoMKgwqAgZHJtX3NjaGVkX2pvYl9y ZWNvdmVyeSgmZ3B1LT5zY2hlZCk7DQo+Pj4+Pj4+Pj4+IC3CoMKgwqAga3RocmVhZF91bnBhcmso Z3B1LT5zY2hlZC50aHJlYWQpOw0KPj4+Pj4+Pj4+PiArwqDCoMKgIGRybV9zY2hlZF9zdGFydCgm Z3B1LT5zY2hlZCwgdHJ1ZSk7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIH0NCj4+Pj4+Pj4+Pj4g wqDCoMKgwqAgwqAgwqAgc3RhdGljIHZvaWQgZXRuYXZpdl9zY2hlZF9mcmVlX2pvYihzdHJ1Y3Qg ZHJtX3NjaGVkX2pvYg0KPj4+Pj4+Pj4+PiAqc2NoZWRfam9iKQ0KPj4+Pj4+Pj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMNCj4+Pj4+Pj4+Pj4g Yi9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYw0KPj4+Pj4+Pj4+PiBpbmRl eCBkYmI2OTA2Li5iNWM1YmVlIDEwMDY0NA0KPj4+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYw0KPj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYw0KPj4+Pj4+Pj4+PiBAQCAtNjAsOCArNjAsNiBAQA0K Pj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCDCoCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcHJvY2Vzc19q b2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwNCj4+Pj4+Pj4+Pj4gc3RydWN0DQo+Pj4+Pj4+Pj4+IGRt YV9mZW5jZV9jYiAqY2IpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCAtc3RhdGljIHZvaWQgZHJt X3NjaGVkX2V4cGVsX2pvYl91bmxvY2tlZChzdHJ1Y3QNCj4+Pj4+Pj4+Pj4gZHJtX3NjaGVkX2pv Yg0KPj4+Pj4+Pj4+PiAqc19qb2IpOw0KPj4+Pj4+Pj4+PiAtDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKg IMKgIC8qKg0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICogZHJtX3NjaGVkX3JxX2luaXQgLSBp bml0aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVlIA0KPj4+Pj4+Pj4+PiBzdHJ1Y3QNCj4+Pj4+Pj4+ Pj4gwqDCoMKgwqAgwqDCoCAqDQo+Pj4+Pj4+Pj4+IEBAIC0zMzUsNiArMzMzLDQyIEBAIHN0YXRp YyB2b2lkIGRybV9zY2hlZF9qb2JfdGltZWRvdXQoc3RydWN0DQo+Pj4+Pj4+Pj4+IHdvcmtfc3Ry dWN0ICp3b3JrKQ0KPj4+Pj4+Pj4+PiBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZC0+am9i X2xpc3RfbG9jaywgZmxhZ3MpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCB9DQo+Pj4+Pj4+Pj4g S2VybmVsIGRvYyBoZXJlIHdvdWxkIGJlIG5pY2UgdG8gaGF2ZS4NCj4+Pj4+Pj4+Pg0KPj4+Pj4+ Pj4+PiArdm9pZCBkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEoc3RydWN0IGRybV9zY2hlZF9qb2Ig KmJhZCkNCj4+Pj4+Pj4+Pj4gK3sNCj4+Pj4+Pj4+Pj4gK8KgwqDCoCBpbnQgaTsNCj4+Pj4+Pj4+ Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqdG1wOw0KPj4+Pj4+Pj4+PiArwqDC oMKgIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHk7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqAg c3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCA9IGJhZC0+c2NoZWQ7DQo+Pj4+Pj4+Pj4+ ICsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoCAvKiBkb24ndCBpbmNyZWFzZSBAYmFkJ3Mga2FybWEgaWYg aXQncyBmcm9tIEtFUk5FTCBSUSwNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgICogYmVjYXVzZSBzb21l dGltZXMgR1BVIGhhbmcgd291bGQgY2F1c2Uga2VybmVsIGpvYnMgDQo+Pj4+Pj4+Pj4+IChsaWtl IFZNDQo+Pj4+Pj4+Pj4+IHVwZGF0aW5nIGpvYnMpDQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoCAqIGNv cnJ1cHQgYnV0IGtlZXAgaW4gbWluZCB0aGF0IGtlcm5lbCBqb2JzIGFsd2F5cyANCj4+Pj4+Pj4+ Pj4gY29uc2lkZXJlZA0KPj4+Pj4+Pj4+PiBnb29kLg0KPj4+Pj4+Pj4+PiArwqDCoMKgwqAgKi8N Cj4+Pj4+Pj4+Pj4gK8KgwqDCoCBpZiAoYmFkLT5zX3ByaW9yaXR5ICE9IERSTV9TQ0hFRF9QUklP UklUWV9LRVJORUwpIHsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGF0b21pY19pbmMoJmJh ZC0+a2FybWEpOw0KPj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gRFJNX1NDSEVE X1BSSU9SSVRZX01JTjsgaSA8DQo+Pj4+Pj4+Pj4+IERSTV9TQ0hFRF9QUklPUklUWV9LRVJORUw7 DQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSsrKSB7DQo+Pj4+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxID0gJnNjaGVk LT5zY2hlZF9ycVtpXTsNCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzcGluX2xvY2soJnJxLT5sb2NrKTsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudGl0eSwgdG1wLCANCj4+Pj4+Pj4+ Pj4gJnJxLT5lbnRpdGllcywNCj4+Pj4+Pj4+Pj4gbGlzdCkgew0KPj4+Pj4+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChiYWQtPnNfZmVuY2UtPnNjaGVkdWxlZC5jb250 ZXh0ID09DQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBlbnRpdHktPmZlbmNlX2NvbnRleHQpIHsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhdG9taWNfcmVhZCgmYmFkLT5rYXJtYSkgPg0KPj4+ Pj4+Pj4+PiArIGJhZC0+c2NoZWQtPmhhbmdfbGltaXQpDQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChlbnRpdHktPmd1aWx0eSkN Cj4+Pj4+Pj4+Pj4gKyBhdG9taWNfc2V0KGVudGl0eS0+Z3VpbHR5LCAxKTsNCj4+Pj4+Pj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcGlu X3VubG9jaygmcnEtPmxvY2spOw0KPj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoJmVudGl0eS0+bGlzdCAhPSAmcnEtPmVudGl0aWVzKQ0KPj4+Pj4+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAg fQ0KPj4+Pj4+Pj4+PiArwqDCoMKgIH0NCj4+Pj4+Pj4+Pj4gK30NCj4+Pj4+Pj4+Pj4gK0VYUE9S VF9TWU1CT0woZHJtX3NjaGVkX2luY3JlYXNlX2thcm1hKTsNCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+ Pj4+PiDCoMKgwqDCoCDCoCAvKioNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoCAqIGRybV9zY2hl ZF9od19qb2JfcmVzZXQgLSBzdG9wIHRoZSBzY2hlZHVsZXIgaWYgaXQNCj4+Pj4+Pj4+Pj4gY29u dGFpbnMgdGhlDQo+Pj4+Pj4+Pj4+IGJhZCBqb2INCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoCAq DQo+Pj4+Pj4+Pj4+IEBAIC0zNDIsMTMgKzM3NiwyMiBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRf am9iX3RpbWVkb3V0KHN0cnVjdA0KPj4+Pj4+Pj4+PiB3b3JrX3N0cnVjdCAqd29yaykNCj4+Pj4+ Pj4+Pj4gwqDCoMKgwqAgwqDCoCAqIEBiYWQ6IGJhZCBzY2hlZHVsZXIgam9iDQo+Pj4+Pj4+Pj4+ IMKgwqDCoMKgIMKgwqAgKg0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICovDQo+Pj4+Pj4+Pj4+ IC12b2lkIGRybV9zY2hlZF9od19qb2JfcmVzZXQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpz Y2hlZCwNCj4+Pj4+Pj4+Pj4gc3RydWN0DQo+Pj4+Pj4+Pj4+IGRybV9zY2hlZF9qb2IgKmJhZCkN Cj4+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX3NjaGVkX3N0b3Aoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVy ICpzY2hlZCwgc3RydWN0DQo+Pj4+Pj4+Pj4+IGRybV9zY2hlZF9qb2IgKmJhZCkNCj4+Pj4+Pj4+ Pj4gwqDCoMKgwqAgwqAgew0KPj4+Pj4+Pj4+PiAtwqDCoMKgIHN0cnVjdCBkcm1fc2NoZWRfam9i ICpzX2pvYjsNCj4+Pj4+Pj4+Pj4gLcKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50 aXR5LCAqdG1wOw0KPj4+Pj4+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fc2NoZWRfam9iICpzX2pv YiwgKmxhc3Rfam9iOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7DQo+Pj4+Pj4+Pj4+IC3CoMKgwqAgaW50IGk7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqAg c3RydWN0IGRtYV9mZW5jZSAqd2FpdF9mZW5jZSA9wqAgTlVMTDsNCj4+Pj4+Pj4+Pj4gK8KgwqDC oCBpbnQgcjsNCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+PiArwqDCoMKgIGt0aHJlYWRfcGFyayhz Y2hlZC0+dGhyZWFkKTsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgK8KgwqDCoCAvKg0KPj4+Pj4+ Pj4+PiArwqDCoMKgwqAgKiBWZXJpZnkgYWxsIHRoZSBzaWduYWxlZCBqb2JzIGluIG1pcnJvciBs aXN0IGFyZSByZW1vdmVkDQo+Pj4+Pj4+Pj4+IGZyb20NCj4+Pj4+Pj4+Pj4gdGhlIHJpbmcNCj4+ Pj4+Pj4+Pj4gK8KgwqDCoMKgICogYnkgd2FpdGluZyBmb3IgdGhlaXIgcmVzcGVjdGl2ZSBzY2hl ZHVsZXIgZmVuY2VzIHRvIA0KPj4+Pj4+Pj4+PiBzaWduYWwuDQo+Pj4+Pj4+Pj4+ICvCoMKgwqDC oCAqIENvbnRpbnVhbGx5wqAgcmVwZWF0IHRyYXZlcnNpbmcgdGhlIHJpbmcgbWlycm9yIGxpc3QN Cj4+Pj4+Pj4+Pj4gdW50aWwgbm8NCj4+Pj4+Pj4+Pj4gbW9yZSBzaWduYWxlZA0KPj4+Pj4+Pj4+ PiArwqDCoMKgwqAgKiBmZW5jZXMgYXJlIGZvdW5kDQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoCAqLw0K Pj4+Pj4+Pj4+PiArcmV0cnlfd2FpdDoNCj4+Pj4+Pj4+Pj4gc3Bpbl9sb2NrX2lycXNhdmUoJnNj aGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKg wqAgbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKHNfam9iLA0KPj4+Pj4+Pj4+PiAmc2NoZWQt PnJpbmdfbWlycm9yX2xpc3QsDQo+Pj4+Pj4+Pj4+IG5vZGUpIHsNCj4+Pj4+Pj4+Pj4gwqDCoMKg wqAgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzX2pvYi0+c19mZW5jZS0+cGFyZW50ICYmDQo+Pj4+ Pj4+Pj4+IEBAIC0zNTcsMzUgKzQwMCw0NSBAQCB2b2lkIGRybV9zY2hlZF9od19qb2JfcmVzZXQo c3RydWN0DQo+Pj4+Pj4+Pj4+IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgc3RydWN0IGRybV9z Y2hlZF9qbw0KPj4+Pj4+Pj4+PiBkbWFfZmVuY2VfcHV0KHNfam9iLT5zX2ZlbmNlLT5wYXJlbnQp Ow0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzX2pvYi0+ c19mZW5jZS0+cGFyZW50ID0gTlVMTDsNCj4+Pj4+Pj4+Pj4gYXRvbWljX2RlYygmc2NoZWQtPmh3 X3JxX2NvdW50KTsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSB7DQo+Pj4+Pj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2FpdF9mZW5jZSA9DQo+Pj4+Pj4+Pj4+IGRt YV9mZW5jZV9nZXQoJnNfam9iLT5zX2ZlbmNlLT5maW5pc2hlZCk7DQo+Pj4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbGFzdF9qb2IgPSBzX2pvYjsNCj4+Pj4+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDC oMKgwqDCoMKgIH0NCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+Pj4+ IC0gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsN Cj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgLcKgwqDCoCBpZiAoYmFkICYmIGJhZC0+c19wcmlvcml0 eSAhPQ0KPj4+Pj4+Pj4+PiBEUk1fU0NIRURfUFJJT1JJVFlfS0VSTkVMKSB7DQo+Pj4+Pj4+Pj4+ IC3CoMKgwqDCoMKgwqDCoCBhdG9taWNfaW5jKCZiYWQtPmthcm1hKTsNCj4+Pj4+Pj4+Pj4gLcKg wqDCoMKgwqDCoMKgIC8qIGRvbid0IGluY3JlYXNlIEBiYWQncyBrYXJtYSBpZiBpdCdzIGZyb20g S0VSTkVMIFJRLA0KPj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIGJlY3Vhc2Ugc29tZXRp bWVzIEdQVSBoYW5nIHdvdWxkIGNhdXNlIGtlcm5lbCBqb2JzDQo+Pj4+Pj4+Pj4+IChsaWtlDQo+ Pj4+Pj4+Pj4+IFZNIHVwZGF0aW5nIGpvYnMpDQo+Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKg ICogY29ycnVwdCBidXQga2VlcCBpbiBtaW5kIHRoYXQga2VybmVsIGpvYnMgYWx3YXlzDQo+Pj4+ Pj4+Pj4+IGNvbnNpZGVyZWQgZ29vZC4NCj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAgKi8N Cj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IERSTV9TQ0hFRF9QUklPUklUWV9N SU47IGkgPA0KPj4+Pj4+Pj4+PiBEUk1fU0NIRURfUFJJT1JJVFlfS0VSTkVMOyBpKysgKSB7DQo+ Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJx ID0gJnNjaGVkLT5zY2hlZF9ycVtpXTsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoCAvKiBObyBzaWduYWxl ZCBqb2JzIGluIHRoZSByaW5nLCBpdHMgc2FmZSB0byBwcm9jZWVkIHRvIA0KPj4+Pj4+Pj4+PiBB U0lDDQo+Pj4+Pj4+Pj4+IHJlc2V0ICovDQo+Pj4+Pj4+Pj4+ICvCoMKgwqAgaWYgKCF3YWl0X2Zl bmNlKSB7DQo+Pj4+Pj4+Pj4+ICsgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9s aXN0X2xvY2ssIGZsYWdzKTsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZG9uZTsN Cj4+Pj4+Pj4+Pj4gK8KgwqDCoCB9DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHNwaW5fbG9jaygmcnEtPmxvY2spOw0KPj4+Pj4+Pj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50aXR5LCB0bXAsIA0KPj4+ Pj4+Pj4+PiAmcnEtPmVudGl0aWVzLA0KPj4+Pj4+Pj4+PiBsaXN0KSB7DQo+Pj4+Pj4+Pj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGJhZC0+c19mZW5jZS0+c2NoZWR1bGVk LmNvbnRleHQgPT0NCj4+Pj4+Pj4+Pj4gZW50aXR5LT5mZW5jZV9jb250ZXh0KSB7DQo+Pj4+Pj4+ Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYXRvbWljX3Jl YWQoJmJhZC0+a2FybWEpID4NCj4+Pj4+Pj4+Pj4gYmFkLT5zY2hlZC0+aGFuZ19saW1pdCkNCj4+ Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKGVudGl0eS0+Z3VpbHR5KQ0KPj4+Pj4+Pj4+PiAtIGF0b21pY19zZXQoZW50aXR5LT5ndWls dHksIDEpOw0KPj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYnJlYWs7DQo+Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0K Pj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+Pj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHNwaW5fdW5sb2NrKCZycS0+bG9jayk7DQo+Pj4+Pj4+Pj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmICgmZW50aXR5LT5saXN0ICE9ICZycS0+ZW50aXRpZXMpDQo+ Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4+Pj4+ Pj4+ICvCoMKgwqAgLyogUmVzdG9yZSByZW1vdmVkIGNiIHNpbmNlIHJlbW92aW5nIGFnYWluIGFs cmVhZHkgcmVtb3ZlZA0KPj4+Pj4+Pj4+PiBjYiBpcw0KPj4+Pj4+Pj4+PiB1bmRlZmluZWQgKi8N Cj4+Pj4+Pj4+Pj4gK8KgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2Uoc19qb2IsIA0K Pj4+Pj4+Pj4+PiAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsDQo+Pj4+Pj4+Pj4+IG5vZGUpIHsN Cj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmKHNfam9iID09IGxhc3Rfam9iKQ0KPj4+Pj4+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+Pj4+Pj4+PiBOZWVkIHRvIGRv dWJsZSBjaGVjayBhZnRlciB0aGUgaG9saWRheXMsIGJ1dCB5b3Ugc2hvdWxkIGJlIGFibGUNCj4+ Pj4+Pj4+PiB0byB1c2UNCj4+Pj4+Pj4+PiBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlIGhl cmUuDQo+Pj4+Pj4+PiBJIHRoaW5rIGl0IHNob3VsZCB3b3JrIC0ga2luZCBvZiB0cmF2ZXJzaW5n IGJhY2sgb24gYWxsIHRoZSBqb2JzDQo+Pj4+Pj4+PiB3ZSBqdXN0DQo+Pj4+Pj4+PiByZW1vdmVk IHRoZWlyIGNhbGxiYWNrcy4NCj4+Pj4+Pj4gV3JhcHBpbmcgeW91ciBoZWFkIGFyb3VuZCBzdHVm ZiBhZ2FpbiBhZnRlciB0aGUgaG9saWRheXMgc29tZXRpbWVzDQo+Pj4+Pj4+IHNob3dzDQo+Pj4+ Pj4+IG5ldyBwcm9ibGVtcyB3ZSBoYXZlIGNvbXBsZXRlbHkgbWlzc2VkIDopDQo+Pj4+Pj4+DQo+ Pj4+Pj4+IEFkZGluZyB0aGUgY2FsbGJhY2tzIGFnYWluIHdvbid0IHdvcmsgYmVjYXVzZSB3ZSBo YXZlIGZyZWVkIHVwIG91cg0KPj4+Pj4+PiByZWZlcmVuY2UgdG8gdGhlIGhhcmR3YXJlIGZlbmNl IGFib3ZlOg0KPj4+Pj4+Pj4gZG1hX2ZlbmNlX3B1dChzX2pvYi0+c19mZW5jZS0+cGFyZW50KTsN Cj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNfam9iLT5zX2Zl bmNlLT5wYXJlbnQgPSBOVUxMOw0KPj4+Pj4+PiBXZSBuZWVkIHRvIGRyb3AgdGhpcyBvciB3ZSB3 b3VsZCBuZXZlciBiZSBhYmxlIHRvIHJlLWFkZCB0aGUgZmVuY2VzDQo+Pj4+Pj4gWWVhLCB0aGF0 IGEgYmlnIG1pc3Mgb24gbXkgc2lkZS4uLg0KPj4+Pj4+DQo+Pj4+Pj4+IC4NCj4+Pj4+Pj4NCj4+ Pj4+Pj4gQnV0IEknbSBzdGlsbCBub3Qgc3VyZSBpZiB3ZSBzaG91bGRuJ3QgcmVseSBvbiB0aGUg Y29ycmVjdCBvcmRlciBvZg0KPj4+Pj4+PiBzaWduYWxpbmcgYW5kIHNpbXBsaWZ5IHRoaXMgaW5z dGVhZC4NCj4+Pj4+PiBBcyB5b3Ugc2FpZCBiZWZvcmUsIG9uY2Ugd2Ugc3dpdGNoZWQgdG8gc2ln bmFsaW5nIHRoZSBwYXJlbnQgZnJvbSANCj4+Pj4+PiB0aGUNCj4+Pj4+PiBpbnRlcnJ1cHQgY29u dGV4dCBpbnN0ZWFkIG9mIHNjaGVkdWxlZCB3b3JrIG5vIGRhbmdlciBvZiByYWNlIHRoZXJlDQo+ Pj4+PiBDb3JyZWN0aW9uIGhlcmUgLSBvbmNlIHdlIHN3aXRjaGVkIHJlbW92aW5nIHRoZSBqb2Ig ZnJvbSBtaXJyb3JfcmluZw0KPj4+Pj4gbGlzdCBkaXJlY3RseSBpbiBpbnRlcnJ1cHQgY29udGV4 dCBpbnN0ZWFkIGxhdGVyIGZyb20gc2NoZWR1bGVkIHdvcmsNCj4+Pj4gT2ssIHNvIGxldCdzIHN0 aWNrIHdpdGggdGhlIGFwcHJvYWNoIG9mIG9ubHkgd2FpdGluZyBmb3IgdGhlIGZpcnN0DQo+Pj4+ IHNpZ25hbGVkIG9uZSBmb3VuZC4NCj4+Pj4NCj4+Pj4gQnV0IHdlIG5lZWQgdG8gcmVtb3ZlIHNl dHRpbmcgdGhlIHBhcmVudCBmZW5jZSB0byBOVUxMIG9yIG90aGVyd2lzZSB3ZQ0KPj4+PiB3b24n dCBiZSBhYmxlIHRvIGFkZCB0aGUgY2FsbGJhY2sgZXZlciBhZ2Fpbi4NCj4+Pj4NCj4+Pj4gQ2hy aXN0aWFuLg0KPj4+IEJ1dCB3ZSB3aWxsIG5vdCBiZSBhZGRpbmcgdGhlIGNiIGJhY2sgaW4gZHJt X3NjaGVkX3N0b3AgYW55bW9yZSwgbm93IHdlDQo+Pj4gYXJlIG9ubHkgZ29pbmcgdG8gYWRkIGJh Y2sgdGhlIGNiIGluIGRybV9zY2hlZF9zdGFydHIgYWZ0ZXIgcmVydW5uaW5nDQo+Pj4gdGhvc2Ug am9icyBpbiBkcm1fc2NoZWRfcmVzdWJtaXRfam9icyBhbmQgYXNzaWduIHRoZW0gYSBuZXcgcGFy ZW50IA0KPj4+IHRoZXJlDQo+Pj4gYW55d2F5Lg0KPj4NCj4+IFllYWgsIGJ1dCB3aGVuIHdlIGZp bmQgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlc2V0IGFueXRoaW5nIGFueW1vcmUgDQo+PiB0aGVu IGFkZGluZyB0aGUgY2FsbGJhY2tzIGFnYWluIHdvbid0IGJlIHBvc3NpYmxlIGFueSBtb3JlLg0K Pj4NCj4+IENocmlzdGlhbi4NCj4NCj4gSSBhbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgaXQsIGNh biB1IHBvaW50IG1lIHRvIGV4YW1wbGUgb2YgaG93IHRoaXMgDQo+IHdpbGwgaGFwcGVuID8gSSBh bSBhdHRhY2hpbmcgbXkgbGF0ZXN0IHBhdGNoZXMgd2l0aCB3YWl0aW5nIG9ubHkgZm9yIA0KPiB0 aGUgbGFzdCBqb2IncyBmZW5jZSBoZXJlIGp1c3Qgc28gd2UgYXJlIG9uIHNhbWUgcGFnZSByZWdh cmRpbmcgdGhlIGNvZGUuDQo+DQo+IEFuZHJleQ0KPg0KPj4NCj4+Pg0KPj4+IEFuZHJleQ0KPj4+ DQo+Pj4+PiBBbmRyZXkNCj4+Pj4+DQo+Pj4+Pj4gLCBzbw0KPj4+Pj4+IHdoYXQgaWYgd2Ugc3Vi bWl0IGpvYiBBIGFuZCBhZnRlciBpdCBqb2IgQiBhbmQgQiBjb21wbGV0ZXMgYmVmb3JlIEENCj4+ Pj4+PiAobGlrZSB0aGUgc3luYyBkZXBlbmRlbmN5IHRlc3QgaW4gbGliZHJtIGFtZGdwdSB0ZXN0 cyBidXQgd2l0aG91dA0KPj4+Pj4+IGFkZGluZw0KPj4+Pj4+IGV4cGxpY2l0IGRlcGVuZGVuY3kg dG8gdGhlIHNlY29uZCBjb21tYW5kIG9uIHRoZSBmaXJzdCkgSSBiZWxpZXZlIA0KPj4+Pj4+IHRo YXQNCj4+Pj4+PiBzdGlsbCBpbiB0aGlzIGNhc2Ugam9iIEIncyBwYXJlbnQgKEhXKSBmZW5jZSB3 aWxsIG5vdCBiZSBzaWduYWxlZA0KPj4+Pj4+IGJlZm9yZQ0KPj4+Pj4+IGpvYiBBIGNvbXBsZXRl cyBzaW5jZSBFT1AgZXZlbnQgaXMgbm90IHNpZ25hbGVkIHVudGlsIHRoZSBlbnRpcmUgDQo+Pj4+ Pj4gcGlwZQ0KPj4+Pj4+IGNvbXBsZXRlZCBhbmQgZmx1c2hlZCBpdCdzIGNhc2hlcyBpbmNsdWRp bmcgam9iIEEuIFNvIGZyb20gdGhpcw0KPj4+Pj4+IHNlZW1zIHRvDQo+Pj4+Pj4gbWUgdGhhdCBp bmRlZWQgaXQncyBlbm91Z2ggdG8gd2FpdCBmb3IgdGhlIGxhc3QgaW5zZXJ0ZWQgam9iJ3MgDQo+ Pj4+Pj4gcGFyZW50DQo+Pj4+Pj4gKEhXKSBmZW5jZSBpbiByaW5nIG1pcnJvciBsaXN0IHRvIHNp Z25hbC4NCj4+Pj4+PiBMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluayBvbiB0aGF0Lg0KPj4+Pj4+ DQo+Pj4+Pj4gUC5TIFY1IGlzIG5vdCB0aGUgbGFzdCBpdGVyYXRpb24gYW5kIHRoZXJlIHdhcyBW NiBzZXJpZXMuDQo+Pj4+Pj4NCj4+Pj4+PiBBbmRyZXkNCj4+Pj4+Pg0KPj4+Pj4+PiBSZWdhcmRz LA0KPj4+Pj4+PiBDaHJpc3RpYW4uDQo+Pj4+Pj4+DQo+Pj4+Pj4+PiBBbmRyZXkNCj4+Pj4+Pj4+ DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChzX2pvYi0+c19m ZW5jZS0+cGFyZW50KSB7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBk bWFfZmVuY2VfYWRkX2NhbGxiYWNrKHNfam9iLT5zX2ZlbmNlLT5wYXJlbnQsDQo+Pj4+Pj4+Pj4+ ICsgJnNfam9iLT5zX2ZlbmNlLT5jYiwNCj4+Pj4+Pj4+Pj4gKyBkcm1fc2NoZWRfcHJvY2Vzc19q b2IpOw0KPj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocikNCj4+Pj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoImZlbmNlIHJlc3Rv cmUgY2FsbGJhY2sgZmFpbGVkIA0KPj4+Pj4+Pj4+PiAoJWQpXG4iLA0KPj4+Pj4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcik7DQo+Pj4+Pj4+Pj4gV2hlbiB5b3UgZmFpbCB0byBhZGQgdGhlIGNh bGxiYWNrIHRoaXMgbWVhbnMgdGhhdCB5b3UgbmVlZCB0byANCj4+Pj4+Pj4+PiBjYWxsDQo+Pj4+ Pj4+Pj4gY2FsbCBkcm1fc2NoZWRfcHJvY2Vzc19qb2IgbWFudWFsbHkgaGVyZS4NCj4+Pj4+Pj4+ Pg0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4+Pj4+PiDC oMKgwqDCoCDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4+Pj4gKyBzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+ ICvCoMKgwqAgZG1hX2ZlbmNlX3dhaXQod2FpdF9mZW5jZSwgZmFsc2UpOw0KPj4+Pj4+Pj4+PiAr wqDCoMKgIGRtYV9mZW5jZV9wdXQod2FpdF9mZW5jZSk7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqAgd2Fp dF9mZW5jZSA9IE5VTEw7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoCBnb3RvIHJl dHJ5X3dhaXQ7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gK2RvbmU6DQo+Pj4+Pj4+Pj4+ICvC oMKgwqAgcmV0dXJuOw0KPj4+Pj4+Pj4+IERyb3AgdGhlIGRvbmU6IGxhYmVsIGFuZCByZXR1cm4g ZGlyZWN0bHkgYWJvdmUuDQo+Pj4+Pj4+Pj4NCj4+Pj4+Pj4+PiBBcGFydCBmcm9tIGFsbCB0aG9z ZSBuaXQgcGlja3MgdGhhdCBzdGFydHMgdG8gbG9vayBsaWtlIGl0IHNob3VsZA0KPj4+Pj4+Pj4+ IHdvcmssDQo+Pj4+Pj4+Pj4gQ2hyaXN0aWFuLg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4+IMKgwqDC oMKgIMKgIH0NCj4+Pj4+Pj4+Pj4gLUVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2h3X2pvYl9yZXNl dCk7DQo+Pj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9zdG9wKTsNCj4+Pj4+Pj4+ Pj4gwqDCoMKgwqAgwqAgwqAgLyoqDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKiBkcm1fc2No ZWRfam9iX3JlY292ZXJ5IC0gcmVjb3ZlciBqb2JzIGFmdGVyIGEgcmVzZXQNCj4+Pj4+Pj4+Pj4g QEAgLTM5MywzMyArNDQ2LDIxIEBAIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2h3X2pvYl9yZXNl dCk7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5j ZQ0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICoNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoCAq Lw0KPj4+Pj4+Pj4+PiAtdm9pZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5KHN0cnVjdCBkcm1fZ3B1 X3NjaGVkdWxlciAqc2NoZWQpDQo+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9zY2hlZF9zdGFydChzdHJ1 Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBib29sDQo+Pj4+Pj4+Pj4+IGZ1bGxfcmVjb3Zl cnkpDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIHsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKg wqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2IsICp0bXA7DQo+Pj4+Pj4+Pj4+IC3CoMKg wqAgYm9vbCBmb3VuZF9ndWlsdHkgPSBmYWxzZTsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKg wqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKg IGludCByOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCArwqDCoMKgIGlmICghZnVsbF9yZWNvdmVy eSkNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gdW5wYXJrOw0KPj4+Pj4+Pj4+PiAr DQo+Pj4+Pj4+Pj4+IHNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxh Z3MpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShzX2pvYiwgdG1wLA0KPj4+Pj4+Pj4+PiAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsDQo+ Pj4+Pj4+Pj4+IG5vZGUpIHsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBkcm1fc2NoZWRfZmVuY2UgKnNfZmVuY2UgPSBzX2pvYi0+c19mZW5jZTsNCj4+Pj4+ Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOw0KPj4+Pj4+Pj4+ PiAtwqDCoMKgwqDCoMKgwqAgdWludDY0X3QgZ3VpbHR5X2NvbnRleHQ7DQo+Pj4+Pj4+Pj4+IC0N Cj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmICghZm91bmRfZ3VpbHR5ICYmIGF0b21pY19y ZWFkKCZzX2pvYi0+a2FybWEpID4NCj4+Pj4+Pj4+Pj4gc2NoZWQtPmhhbmdfbGltaXQpIHsNCj4+ Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm91bmRfZ3VpbHR5ID0gdHJ1ZTsNCj4+ Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ3VpbHR5X2NvbnRleHQgPSBzX2pvYi0+ c19mZW5jZS0+c2NoZWR1bGVkLmNvbnRleHQ7DQo+Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCB9 DQo+Pj4+Pj4+Pj4+IC0NCj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChmb3VuZF9ndWls dHkgJiYgDQo+Pj4+Pj4+Pj4+IHNfam9iLT5zX2ZlbmNlLT5zY2hlZHVsZWQuY29udGV4dCA9PQ0K Pj4+Pj4+Pj4+PiBndWlsdHlfY29udGV4dCkNCj4+Pj4+Pj4+Pj4gLSBkbWFfZmVuY2Vfc2V0X2Vy cm9yKCZzX2ZlbmNlLT5maW5pc2hlZCwgLUVDQU5DRUxFRCk7DQo+Pj4+Pj4+Pj4+IC0NCj4+Pj4+ Pj4+Pj4gLSBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxh Z3MpOw0KPj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgZmVuY2UgPSBzY2hlZC0+b3BzLT5ydW5f am9iKHNfam9iKTsNCj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGF0b21pY19pbmMoJnNjaGVk LT5od19ycV9jb3VudCk7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSA9IHNfam9iLT5zX2ZlbmNlLT5wYXJlbnQ7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKg IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZmVuY2UpIHsNCj4+Pj4+Pj4+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc19mZW5jZS0+cGFyZW50ID0gZG1hX2ZlbmNlX2dldChmZW5jZSk7DQo+ Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBkbWFfZmVu Y2VfYWRkX2NhbGxiYWNrKGZlbmNlLCANCj4+Pj4+Pj4+Pj4gJnNfZmVuY2UtPmNiLA0KPj4+Pj4+ Pj4+PiBkcm1fc2NoZWRfcHJvY2Vzc19qb2IpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAociA9PSAtRU5PRU5UKQ0KPj4+Pj4+Pj4+PiBAQCAtNDI3 LDE4ICs0NjgsNDcgQEAgdm9pZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5KHN0cnVjdA0KPj4+Pj4+ Pj4+PiBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKHIpDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJmZW5jZSBhZGQgY2Fs bGJhY2sgZmFpbGVkIA0KPj4+Pj4+Pj4+PiAoJWQpXG4iLA0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIpOw0KPj4+Pj4+ Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfZmVuY2VfcHV0KGZlbmNlKTsNCj4+Pj4+ Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7DQo+Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChzX2ZlbmNlLT5maW5pc2hlZC5lcnJvciA8IDApDQo+Pj4+Pj4+Pj4+IC0g ZHJtX3NjaGVkX2V4cGVsX2pvYl91bmxvY2tlZChzX2pvYik7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCB9IGVsc2UNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKE5VTEwsICZzX2ZlbmNlLT5jYik7DQo+Pj4+Pj4+ Pj4+IC3CoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+Pj4+IC0gc3Bpbl9sb2NrX2lycXNhdmUoJnNj aGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKg wqAgfQ0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgZHJtX3Nj aGVkX3N0YXJ0X3RpbWVvdXQoc2NoZWQpOw0KPj4+Pj4+Pj4+PiBzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KPj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+ Pj4+ICt1bnBhcms6DQo+Pj4+Pj4+Pj4+ICvCoMKgwqAga3RocmVhZF91bnBhcmsoc2NoZWQtPnRo cmVhZCk7DQo+Pj4+Pj4+Pj4+ICt9DQo+Pj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2hl ZF9zdGFydCk7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gKy8qKg0KPj4+Pj4+Pj4+PiArICog ZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMgLSBoZWxwZXIgdG8gcmVsdW5jaCBqb2IgZnJvbSBtaXJy b3INCj4+Pj4+Pj4+Pj4gcmluZw0KPj4+Pj4+Pj4+PiBsaXN0DQo+Pj4+Pj4+Pj4+ICsgKg0KPj4+ Pj4+Pj4+PiArICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UNCj4+Pj4+Pj4+Pj4gKyAqDQo+ Pj4+Pj4+Pj4+ICsgKi8NCj4+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMo c3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkNCj4+Pj4+Pj4+Pj4gK3sNCj4+Pj4+Pj4+ Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2IsICp0bXA7DQo+Pj4+Pj4+Pj4+ ICvCoMKgwqAgdWludDY0X3QgZ3VpbHR5X2NvbnRleHQ7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqAgYm9v bCBmb3VuZF9ndWlsdHkgPSBmYWxzZTsNCj4+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+PiArwqDCoMKg IC8qVE9ETyBETyB3ZSBuZWVkIHNwaW5sb2NrIGhlcmUgPyAqLw0KPj4+Pj4+Pj4+PiArwqDCoMKg IGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzX2pvYiwgdG1wLCANCj4+Pj4+Pj4+Pj4gJnNjaGVk LT5yaW5nX21pcnJvcl9saXN0LA0KPj4+Pj4+Pj4+PiBub2RlKSB7DQo+Pj4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlICpzX2ZlbmNlID0gc19qb2ItPnNfZmVu Y2U7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghZm91bmRf Z3VpbHR5ICYmIGF0b21pY19yZWFkKCZzX2pvYi0+a2FybWEpID4NCj4+Pj4+Pj4+Pj4gc2NoZWQt PmhhbmdfbGltaXQpIHsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm91bmRf Z3VpbHR5ID0gdHJ1ZTsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ3VpbHR5 X2NvbnRleHQgPSBzX2pvYi0+c19mZW5jZS0+c2NoZWR1bGVkLmNvbnRleHQ7DQo+Pj4+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgIGlmIChmb3VuZF9ndWlsdHkgJiYgDQo+Pj4+Pj4+Pj4+IHNfam9iLT5zX2ZlbmNlLT5zY2hl ZHVsZWQuY29udGV4dCA9PQ0KPj4+Pj4+Pj4+PiBndWlsdHlfY29udGV4dCkNCj4+Pj4+Pj4+Pj4g KyBkbWFfZmVuY2Vfc2V0X2Vycm9yKCZzX2ZlbmNlLT5maW5pc2hlZCwgLUVDQU5DRUxFRCk7DQo+ Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHNfam9iLT5zX2ZlbmNlLT5w YXJlbnQgPSBzY2hlZC0+b3BzLT5ydW5fam9iKHNfam9iKTsNCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgIGF0b21pY19pbmMoJnNjaGVkLT5od19ycV9jb3VudCk7DQo+Pj4+Pj4+Pj4+ICvCoMKg wqAgfQ0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCB9DQo+Pj4+Pj4+Pj4+IC1FWFBPUlRfU1lNQk9M KGRybV9zY2hlZF9qb2JfcmVjb3ZlcnkpOw0KPj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTChkcm1f c2NoZWRfcmVzdWJtaXRfam9icyk7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIMKgIC8qKg0KPj4+ Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICogZHJtX3NjaGVkX2pvYl9pbml0IC0gaW5pdCBhIHNjaGVk dWxlciBqb2INCj4+Pj4+Pj4+Pj4gQEAgLTYzNCwyNiArNzA0LDE0IEBAIHN0YXRpYyBpbnQgZHJt X3NjaGVkX21haW4odm9pZCAqcGFyYW0pDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJmZW5jZSBhZGQgY2FsbGJhY2sgZmFp bGVkIA0KPj4+Pj4+Pj4+PiAoJWQpXG4iLA0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIpOw0KPj4+Pj4+Pj4+PiDCoMKg wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfZmVuY2VfcHV0KGZlbmNlKTsNCj4+ Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7DQo+Pj4+Pj4+Pj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmIChzX2ZlbmNlLT5maW5pc2hlZC5lcnJvciA8IDApDQo+Pj4+Pj4+Pj4+ IC0gZHJtX3NjaGVkX2V4cGVsX2pvYl91bmxvY2tlZChzY2hlZF9qb2IpOw0KPj4+Pj4+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgfSBlbHNlDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRybV9zY2hlZF9wcm9jZXNzX2pvYihOVUxMLCAmc19mZW5jZS0+Y2IpOw0K Pj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4+Pj4+PiB3YWtlX3VwKCZzY2hlZC0+ am9iX3NjaGVkdWxlZCk7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgfQ0KPj4+Pj4+ Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDC oCB9DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIC1zdGF0aWMgdm9pZCBkcm1fc2NoZWRfZXhwZWxf am9iX3VubG9ja2VkKHN0cnVjdA0KPj4+Pj4+Pj4+PiBkcm1fc2NoZWRfam9iICpzX2pvYikNCj4+ Pj4+Pj4+Pj4gLXsNCj4+Pj4+Pj4+Pj4gLcKgwqDCoCBzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIg KnNjaGVkID0gc19qb2ItPnNjaGVkOw0KPj4+Pj4+Pj4+PiAtDQo+Pj4+Pj4+Pj4+IC3CoMKgwqAg c3Bpbl9sb2NrKCZzY2hlZC0+am9iX2xpc3RfbG9jayk7DQo+Pj4+Pj4+Pj4+IC3CoMKgwqAgbGlz dF9kZWxfaW5pdCgmc19qb2ItPm5vZGUpOw0KPj4+Pj4+Pj4+PiAtwqDCoMKgIHNwaW5fdW5sb2Nr KCZzY2hlZC0+am9iX2xpc3RfbG9jayk7DQo+Pj4+Pj4+Pj4+IC19DQo+Pj4+Pj4+Pj4+IC0NCj4+ Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgLyoqDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKiBkcm1f c2NoZWRfaW5pdCAtIEluaXQgYSBncHUgc2NoZWR1bGVyIGluc3RhbmNlDQo+Pj4+Pj4+Pj4+IMKg wqDCoMKgIMKgwqAgKg0KPj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Yz ZC92M2Rfc2NoZWQuYw0KPj4+Pj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3NjaGVk LmMNCj4+Pj4+Pj4+Pj4gaW5kZXggNDQ1YjJlZi4uZjc2ZDllZCAxMDA2NDQNCj4+Pj4+Pj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc2NoZWQuYw0KPj4+Pj4+Pj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jDQo+Pj4+Pj4+Pj4+IEBAIC0xNzgsMTggKzE3 OCwyMiBAQCB2M2Rfam9iX3RpbWVkb3V0KHN0cnVjdCBkcm1fc2NoZWRfam9iDQo+Pj4+Pj4+Pj4+ ICpzY2hlZF9qb2IpDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgZm9yIChxID0gMDsg cSA8IFYzRF9NQVhfUVVFVUVTOyBxKyspIHsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQgPQ0KPj4+Pj4+Pj4+PiAm djNkLT5xdWV1ZVtxXS5zY2hlZDsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgLcKgwqDCoMKgwqDC oMKgIGt0aHJlYWRfcGFyayhzY2hlZC0+dGhyZWFkKTsNCj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDC oMKgIGRybV9zY2hlZF9od19qb2JfcmVzZXQoc2NoZWQsIChzY2hlZF9qb2ItPnNjaGVkID09IA0K Pj4+Pj4+Pj4+PiBzY2hlZCA/DQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRf c3RvcChzY2hlZCwgKHNjaGVkX2pvYi0+c2NoZWQgPT0gc2NoZWQgPw0KPj4+Pj4+Pj4+PiDCoMKg wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzY2hlZF9qb2IgOiBOVUxMKSk7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgIGlmKHNjaGVkX2pvYikNCj4+Pj4+Pj4+Pj4gKyBkcm1fc2NoZWRfaW5jcmVhc2Vf a2FybWEoc2NoZWRfam9iKTsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCB9DQo+Pj4+ Pj4+Pj4+IMKgwqDCoMKgIMKgIMKgwqDCoMKgwqAgLyogZ2V0IHRoZSBHUFUgYmFjayBpbnRvIHRo ZSBpbml0IHN0YXRlICovDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgdjNkX3Jlc2V0 KHYzZCk7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgICvCoMKgwqAgZm9yIChxID0gMDsgcSA8IFYz RF9NQVhfUVVFVUVTOyBxKyspDQo+Pj4+Pj4+Pj4+ICsgZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMo c2NoZWRfam9iLT5zY2hlZCk7DQo+Pj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDC oMKgwqDCoCAvKiBVbmJsb2NrIHNjaGVkdWxlcnMgYW5kIHJlc3RhcnQgdGhlaXIgam9icy4gKi8N Cj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCBmb3IgKHEgPSAwOyBxIDwgVjNEX01BWF9R VUVVRVM7IHErKykgew0KPj4+Pj4+Pj4+PiAtIGRybV9zY2hlZF9qb2JfcmVjb3ZlcnkoJnYzZC0+ cXVldWVbcV0uc2NoZWQpOw0KPj4+Pj4+Pj4+PiAtIGt0aHJlYWRfdW5wYXJrKHYzZC0+cXVldWVb cV0uc2NoZWQudGhyZWFkKTsNCj4+Pj4+Pj4+Pj4gKyBkcm1fc2NoZWRfc3RhcnQoJnYzZC0+cXVl dWVbcV0uc2NoZWQsIHRydWUpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIH0NCj4+ Pj4+Pj4+Pj4gbXV0ZXhfdW5sb2NrKCZ2M2QtPnJlc2V0X2xvY2spOw0KPj4+Pj4+Pj4+PiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oDQo+Pj4+Pj4+Pj4+IGIvaW5jbHVk ZS9kcm0vZ3B1X3NjaGVkdWxlci5oDQo+Pj4+Pj4+Pj4+IGluZGV4IDQ3ZTE5NzkuLjVhYjJkOTcg MTAwNjQ0DQo+Pj4+Pj4+Pj4+IC0tLSBhL2luY2x1ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaA0KPj4+ Pj4+Pj4+PiArKysgYi9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgNCj4+Pj4+Pj4+Pj4gQEAg LTE3NSw2ICsxNzUsNyBAQCBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlDQo+Pj4+Pj4+Pj4+ICp0b19k cm1fc2NoZWRfZmVuY2Uoc3RydWN0DQo+Pj4+Pj4+Pj4+IGRtYV9mZW5jZSAqZik7DQo+Pj4+Pj4+ Pj4+IMKgwqDCoMKgIMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmluaXNoZWQg dG8gcmVtb3ZlIHRoZSBqb2IgZnJvbSB0aGUNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoCAqIEBk cm1fZ3B1X3NjaGVkdWxlci5yaW5nX21pcnJvcl9saXN0Lg0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDC oMKgICogQG5vZGU6IHVzZWQgdG8gYXBwZW5kIHRoaXMgc3RydWN0IHRvIHRoZQ0KPj4+Pj4+Pj4+ PiBAZHJtX2dwdV9zY2hlZHVsZXIucmluZ19taXJyb3JfbGlzdC4NCj4+Pj4+Pj4+Pj4gKyAqIEBm aW5pc2hfbm9kZTogdXNlZCBpbiBhIGxpc3QgdG8gd2FpdCBvbiBiZWZvcmUgcmVzZXR0aW5nIHRo ZQ0KPj4+Pj4+Pj4+PiBzY2hlZHVsZXINCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoCAqIEBpZDog YSB1bmlxdWUgaWQgYXNzaWduZWQgdG8gZWFjaCBqb2Igc2NoZWR1bGVkIG9uIHRoZQ0KPj4+Pj4+ Pj4+PiBzY2hlZHVsZXIuDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKiBAa2FybWE6IGluY3Jl bWVudCBvbiBldmVyeSBoYW5nIGNhdXNlZCBieSB0aGlzIGpvYi4gSWYNCj4+Pj4+Pj4+Pj4gdGhp cw0KPj4+Pj4+Pj4+PiBleGNlZWRzIHRoZSBoYW5nDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAg KsKgwqDCoMKgwqDCoMKgwqAgbGltaXQgb2YgdGhlIHNjaGVkdWxlciB0aGVuIHRoZSBqb2IgaXMg bWFya2VkDQo+Pj4+Pj4+Pj4+IGd1aWx0eSBhbmQNCj4+Pj4+Pj4+Pj4gd2lsbCBub3QNCj4+Pj4+ Pj4+Pj4gQEAgLTE5Myw2ICsxOTQsNyBAQCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiB7DQo+Pj4+Pj4+ Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZV9jYsKgwqDCoMKgwqDCoMKg IGZpbmlzaF9jYjsNCj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCBzdHJ1Y3Qgd29ya19z dHJ1Y3QgZmluaXNoX3dvcms7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgc3RydWN0 IGxpc3RfaGVhZMKgwqDCoMKgwqDCoMKgIG5vZGU7DQo+Pj4+Pj4+Pj4+ICvCoMKgwqAgc3RydWN0 IGxpc3RfaGVhZMKgwqDCoMKgwqDCoMKgIGZpbmlzaF9ub2RlOw0KPj4+Pj4+Pj4+PiDCoMKgwqDC oCDCoMKgwqDCoMKgIHVpbnQ2NF90wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZDsNCj4+Pj4+Pj4+ Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCBhdG9taWNfdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2Fy bWE7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgZW51bSBkcm1fc2NoZWRfcHJpb3Jp dHkgc19wcmlvcml0eTsNCj4+Pj4+Pj4+Pj4gQEAgLTI5OCw5ICszMDAsMTEgQEAgaW50IGRybV9z Y2hlZF9qb2JfaW5pdChzdHJ1Y3QgZHJtX3NjaGVkX2pvYg0KPj4+Pj4+Pj4+PiAqam9iLA0KPj4+ Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICpv d25lcik7DQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIHZvaWQgZHJtX3NjaGVkX2pvYl9jbGVhbnVw KHN0cnVjdCBkcm1fc2NoZWRfam9iICpqb2IpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCB2b2lk IGRybV9zY2hlZF93YWtldXAoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCk7DQo+Pj4+ Pj4+Pj4+IC12b2lkIGRybV9zY2hlZF9od19qb2JfcmVzZXQoc3RydWN0IGRybV9ncHVfc2NoZWR1 bGVyICpzY2hlZCwNCj4+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgZHJtX3NjaGVkX2pvYiAqam9iKTsNCj4+Pj4+Pj4+Pj4gLXZvaWQgZHJtX3NjaGVkX2pv Yl9yZWNvdmVyeShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKTsNCj4+Pj4+Pj4+Pj4g K3ZvaWQgZHJtX3NjaGVkX3N0b3Aoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwNCj4+ Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9zY2hlZF9qb2IgKmpv Yik7DQo+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9zY2hlZF9zdGFydChzdHJ1Y3QgZHJtX2dwdV9zY2hl ZHVsZXIgKnNjaGVkLCBib29sDQo+Pj4+Pj4+Pj4+IGZ1bGxfcmVjb3ZlcnkpOw0KPj4+Pj4+Pj4+ PiArdm9pZCBkcm1fc2NoZWRfcmVzdWJtaXRfam9icyhzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIg KnNjaGVkKTsNCj4+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX3NjaGVkX2luY3JlYXNlX2thcm1hKHN0cnVj dCBkcm1fc2NoZWRfam9iICpiYWQpOw0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCBib29sIGRybV9z Y2hlZF9kZXBlbmRlbmN5X29wdGltaXplZChzdHJ1Y3QgZG1hX2ZlbmNlKiANCj4+Pj4+Pj4+Pj4g ZmVuY2UsDQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KTsNCj4+Pj4+Pj4+ Pj4gwqDCoMKgwqAgwqAgdm9pZCBkcm1fc2NoZWRfZmF1bHQoc3RydWN0IGRybV9ncHVfc2NoZWR1 bGVyICpzY2hlZCk7DQo+Pj4+Pj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4+Pj4+Pj4+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdA0KPj4+Pj4+Pj4+ IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+Pj4+Pj4+Pj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQo+Pj4+Pj4+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+Pj4+Pj4+IGFtZC1nZngg bWFpbGluZyBsaXN0DQo+Pj4+Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+Pj4+ Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdm eA0KPj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f DQo+Pj4+Pj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdA0KPj4+Pj4+IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcNCj4+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbA0KPj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18NCj4+Pj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QNCj4+Pj4+ IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsDQo+Pj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+PiBhbWQtZ2Z4IG1haWxpbmcg bGlzdA0KPj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+Pj4gaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQo+Pg0KPg0KDQpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxp bmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK