From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dItZL-0005MD-Gd for qemu-devel@nongnu.org; Thu, 08 Jun 2017 05:17:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dItZH-0007m2-DY for qemu-devel@nongnu.org; Thu, 08 Jun 2017 05:17:31 -0400 Received: from mxhk.zte.com.cn ([63.217.80.70]:18933) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dItZF-0007lc-FX for qemu-devel@nongnu.org; Thu, 08 Jun 2017 05:17:27 -0400 Date: Thu, 8 Jun 2017 17:16:21 +0800 (CST) Message-ID: <201706081716217079190@zte.com.cn> References: 1496659493-1105-1-git-send-email-wang.yong155@zte.com.cn, 586d53fb-aed0-aa25-64d9-a2761a382efa@redhat.com Mime-Version: 1.0 From: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Subject: [Qemu-devel] =?utf-8?b?562U5aSNOiBSZTogW1BBVENIdjIgMDIvMDRdIGNv?= =?utf-8?q?lo-compare=3A_Process_pactkets_in_the_IOThread_ofthe_primary?= List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: jasowang@redhat.com, zhang.zhanghailiang@huawei.com Cc: zhangchen.fnst@cn.fujitsu.com, lizhijian@cn.fujitsu.com, qemu-devel@nongnu.org, wang.guang55@zte.com.cn 77ye77yeIEZyb206IFdhbmcgWW9uZyDvvJx3YW5nLnlvbmcxNTVAenRlLmNvbS5jbu+8ng0KDQrv vJ7vvJ4NCg0K77ye77yeIFByb2Nlc3MgcGFjdGtldHMgaW4gdGhlIElPVGhyZWFkIHdoaWNoIGFy cml2ZWQgb3ZlciB0aGUgc29ja2V0Lg0KDQrvvJ7vvJ4gd2UgdXNlIHFpb19jaGFubmVsX3NldF9h aW9fZmRfaGFuZGxlciB0byBzZXQgdGhlIGhhbmRsZXJzIG9uIHRoZQ0KDQrvvJ7vvJ4gSU9UaHJl YWQgQWlvQ29udGV4dC50aGVuIHRoZSBwYWNrZXRzIGZyb20gdGhlIHByaW1hcnkgYW5kIHRoZSBz ZWNvbmRhcnkNCg0K77ye77yeIGFyZSBwcm9jZXNzZWQgaW4gdGhlIElPVGhyZWFkLg0KDQrvvJ7v vJ4gRmluYWxseSByZW1vdmUgdGhlIGNvbG8tY29tcGFyZSB0aHJlYWQgdXNpbmcgdGhlIElPVGhy ZWFkIGluc3RlYWQuDQoNCu+8nu+8ng0KDQrvvJ7vvJ4gU2lnbmVkLW9mZi1ieTogV2FuZyBZb25n 77ycd2FuZy55b25nMTU1QHp0ZS5jb20uY27vvJ4NCg0K77ye77yeIFNpZ25lZC1vZmYtYnk6IFdh bmcgR3VhbmfvvJx3YW5nLmd1YW5nNTVAenRlLmNvbS5jbu+8ng0KDQrvvJ7vvJ4gLS0tDQoNCu+8 nu+8niAgIG5ldC9jb2xvLWNvbXBhcmUuYyB8IDEzMyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQ0KDQrvvJ7vvJ4gICBuZXQvY29sby5oICAgICAg ICAgfCAgIDEgKw0KDQrvvJ7vvJ4gICAyIGZpbGVzIGNoYW5nZWQsIDkxIGluc2VydGlvbnMoKyks IDQzIGRlbGV0aW9ucygtKQ0KDQrvvJ7vvJ4NCg0K77ye77yeIGRpZmYgLS1naXQgYS9uZXQvY29s by1jb21wYXJlLmMgYi9uZXQvY29sby1jb21wYXJlLmMNCg0K77ye77yeIGluZGV4IGIwOTQyYTQu LmUzYWY3OTEgMTAwNjQ0DQoNCu+8nu+8niAtLS0gYS9uZXQvY29sby1jb21wYXJlLmMNCg0K77ye 77yeICsrKyBiL25ldC9jb2xvLWNvbXBhcmUuYw0KDQrvvJ7vvJ4gQEAgLTI5LDYgKzI5LDcgQEAN Cg0K77ye77yeICAgI2luY2x1ZGUgInFlbXUvc29ja2V0cy5oIg0KDQrvvJ7vvJ4gICAjaW5jbHVk ZSAicWFwaS12aXNpdC5oIg0KDQrvvJ7vvJ4gICAjaW5jbHVkZSAibmV0L2NvbG8uaCINCg0K77ye 77yeICsjaW5jbHVkZSAiaW8vY2hhbm5lbC5oIg0KDQrvvJ7vvJ4gICAjaW5jbHVkZSAic3lzZW11 L2lvdGhyZWFkLmgiDQoNCu+8nu+8niAgIA0KDQrvvJ7vvJ4gICAjZGVmaW5lIFRZUEVfQ09MT19D T01QQVJFICJjb2xvLWNvbXBhcmUiDQoNCu+8nu+8niBAQCAtODIsMTEgKzgzLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgQ29tcGFyZVN0YXRlIHsNCg0K77ye77yeICAgICAgIEdRdWV1ZSBjb25uX2xpc3QN Cg0K77ye77yeICAgICAgIC8qIGhhc2h0YWJsZSB0byBzYXZlIGNvbm5lY3Rpb24gKi8NCg0K77ye 77yeICAgICAgIEdIYXNoVGFibGUgKmNvbm5lY3Rpb25fdHJhY2tfdGFibGUNCg0K77ye77yeIC0g ICAgLyogY29tcGFyZSB0aHJlYWQsIGEgdGhyZWFkIGZvciBlYWNoIE5JQyAqLw0KDQrvvJ7vvJ4g LSAgICBRZW11VGhyZWFkIHRocmVhZA0KDQrvvJ7vvJ4gLQ0KDQrvvJ7vvJ4gLSAgICBHTWFpbkNv bnRleHQgKndvcmtlcl9jb250ZXh0DQoNCu+8nu+8niAtICAgIEdNYWluTG9vcCAqY29tcGFyZV9s b29wDQoNCu+8nu+8niAgIA0KDQrvvJ7vvJ4gICAgICAgLypjb21wYXJlIGlvdGhyZWFkKi8NCg0K 77ye77yeICAgICAgIElPVGhyZWFkICppb3RocmVhZA0KDQrvvJ7vvJ4gQEAgLTk1LDYgKzkxLDE0 IEBAIHR5cGVkZWYgc3RydWN0IENvbXBhcmVTdGF0ZSB7DQoNCu+8nu+8niAgICAgICBRRU1VVGlt ZXIgKnBhY2tldF9jaGVja190aW1lcg0KDQrvvJ7vvJ4gICB9IENvbXBhcmVTdGF0ZQ0KDQrvvJ7v vJ4gICANCg0K77ye77yeICt0eXBlZGVmIHN0cnVjdCB7DQoNCu+8nu+8niArICAgIENoYXJkZXYg cGFyZW50DQoNCu+8nu+8niArICAgIFFJT0NoYW5uZWwgKmlvYyAvKkkvTyBjaGFubmVsICovDQoN Cg0KDQoNCu+8nldlIHByb2JhYmx5IGRvbid0IHdhbnQgdG8gbWFuaXB1bGF0ZSBjaGFyIGJhY2tl bmQncyBpbnRlcm5hbCBpbyBjaGFubmVsLiANCg0K77yeQWxsIG5lZWQgaGVyZSBpcyB0byBhY2Nl c3MgdGhlIGZyb250ZW5kIEFQSSAoY2hhci1mZS5jKSBJIGJlbGlldmUsIGFuZCANCg0K77yeaGlk ZSB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uDQoNCmNoYXItZmQuYyA/DQoNClRoZXNlIEFQ SSBjYW4gb25seSB3YXRjaCBldmVudHMgaW4gdGhlIHFlbXUgbWFpbiB0aHJlYWQsIG5vdCBpbiB0 aGUgSU9UaHJlYWQuDQoNCkkgaGFkIHRvIHVzZSB0aGUgcWlvX2NoYW5uZWxfc29ja2V0X3NldF9h aW9fZmRfaGFuZGxlciBmdW5jdGlvbiB0byANCg0KbW9uaXRvciB0aGUgY2hhciBldmVudCBpbiB0 aGUgSU9UaHJlYWQsc28gdGhlIGlvIGNoYW5uZWwgaXMgdXNlZCBoZXJlLg0KDQot77yecWlvX2No YW5uZWxfc29ja2V0X3NldF9haW9fZmRfaGFuZGxlcg0KDQogICAt77yeYWlvX3NldF9mZF9oYW5k bGVyIA0KDQoNCg0KDQpUaGFua3MNCg0KDQoNCg0K77ye77yeICt9IENvbXBhcmVDaGFyZGV2DQoN Cu+8nu+8niArDQoNCu+8nu+8niArI2RlZmluZSBDT01QQVJFX0NIQVJERVYob2JqKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQoNCu+8nu+8niArICAgIE9CSkVDVF9DSEVD SyhDb21wYXJlQ2hhcmRldiwgKG9iaiksIFRZUEVfQ0hBUkRFVl9TT0NLRVQpDQoNCu+8nu+8niAr DQoNCu+8nu+8niAgIHR5cGVkZWYgc3RydWN0IENvbXBhcmVDbGFzcyB7DQoNCu+8nu+8niAgICAg ICBPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3MNCg0K77ye77yeICAgfSBDb21wYXJlQ2xhc3MNCg0K 77ye77yeIEBAIC0xMDcsNiArMTExLDEyIEBAIGVudW0gew0KDQrvvJ7vvJ4gICBzdGF0aWMgaW50 IGNvbXBhcmVfY2hyX3NlbmQoQ2hhckJhY2tlbmQgKm91dCwNCg0K77ye77yeICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwNCg0K77ye77yeICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemUpDQoNCu+8nu+8niArc3RhdGljIHZv aWQgY29tcGFyZV9jaHJfc2V0X2Fpb19mZF9oYW5kbGVycyhDaGFyQmFja2VuZCAqYiwNCg0K77ye 77yeICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBaW9Db250ZXh0ICpjdHgs DQoNCu+8nu+8niArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9DYW5SZWFk SGFuZGxlciAqZmRfY2FuX3JlYWQsDQoNCu+8nu+8niArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSU9SZWFkSGFuZGxlciAqZmRfcmVhZCwNCg0K77ye77yeICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJT0V2ZW50SGFuZGxlciAqZmRfZXZlbnQsDQoNCu+8 nu+8niArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQ0K DQrvvJ7vvJ4gICANCg0K77ye77yeICAgc3RhdGljIGdpbnQgc2VxX3NvcnRlcihQYWNrZXQgKmEs IFBhY2tldCAqYiwgZ3BvaW50ZXIgZGF0YSkNCg0K77ye77yeICAgew0KDQrvvJ7vvJ4gQEAgLTUz NCw2ICs1NDQsMzAgQEAgZXJyOg0KDQrvvJ7vvJ4gICAgICAgcmV0dXJuIHJldCDvvJwgMCA/IHJl dCA6IC1FSU8NCg0K77ye77yeICAgfQ0KDQrvvJ7vvJ4gICANCg0K77ye77yeICtzdGF0aWMgdm9p ZCBjb21wYXJlX2Nocl9yZWFkKHZvaWQgKm9wYXF1ZSkNCg0K77ye77yeICt7DQoNCu+8nu+8niAr ICAgIENoYXJkZXYgKmNociA9IG9wYXF1ZQ0KDQrvvJ7vvJ4gKyAgICB1aW50OF90IGJ1ZltDSFJf UkVBRF9CVUZfTEVOXQ0KDQrvvJ7vvJ4gKyAgICBpbnQgbGVuLCBzaXplDQoNCu+8nu+8niArICAg IGludCBtYXhfc2l6ZQ0KDQrvvJ7vvJ4gKw0KDQrvvJ7vvJ4gKyAgICBtYXhfc2l6ZSA9IHFlbXVf Y2hyX2JlX2Nhbl93cml0ZShjaHIpDQoNCu+8nu+8niArICAgIGlmIChtYXhfc2l6ZSDvvJw9IDAp IHsNCg0K77ye77yeICsgICAgICAgIHJldHVybg0KDQrvvJ7vvJ4gKyAgICB9DQoNCu+8nu+8niAr DQoNCu+8nu+8niArICAgIGxlbiA9IHNpemVvZihidWYpDQoNCu+8nu+8niArICAgIGlmIChsZW4g 77yeIG1heF9zaXplKSB7DQoNCu+8nu+8niArICAgICAgICBsZW4gPSBtYXhfc2l6ZQ0KDQrvvJ7v vJ4gKyAgICB9DQoNCu+8nu+8niArICAgIHNpemUgPSBDSEFSREVWX0dFVF9DTEFTUyhjaHIpLe+8 nmNocl9zeW5jX3JlYWQoY2hyLCAodm9pZCAqKWJ1ZiwgbGVuKQ0KDQrvvJ7vvJ4gKyAgICBpZiAo c2l6ZSA9PSAwKSB7DQoNCu+8nu+8niArICAgICAgICByZXR1cm4NCg0K77ye77yeICsgICAgfSBl bHNlIGlmIChzaXplIO+8niAwKSB7DQoNCu+8nu+8niArICAgICAgICBxZW11X2Nocl9iZV93cml0 ZShjaHIsIGJ1Ziwgc2l6ZSkNCg0K77ye77yeICsgICAgfQ0KDQrvvJ7vvJ4gK30NCg0K77ye77ye ICsNCg0K77ye77yeICAgc3RhdGljIGludCBjb21wYXJlX2Nocl9jYW5fcmVhZCh2b2lkICpvcGFx dWUpDQoNCu+8nu+8niAgIHsNCg0K77ye77yeICAgICAgIHJldHVybiBDT01QQVJFX1JFQURfTEVO X01BWA0KDQrvvJ7vvJ4gQEAgLTU1MCw4ICs1ODQsOCBAQCBzdGF0aWMgdm9pZCBjb21wYXJlX3By aV9jaHJfaW4odm9pZCAqb3BhcXVlLCBjb25zdCB1aW50OF90ICpidWYsIGludCBzaXplKQ0KDQrv vJ7vvJ4gICANCg0K77ye77yeICAgICAgIHJldCA9IG5ldF9maWxsX3JzdGF0ZSgmcy3vvJ5wcmlf cnMsIGJ1Ziwgc2l6ZSkNCg0K77ye77yeICAgICAgIGlmIChyZXQgPT0gLTEpIHsNCg0K77ye77ye IC0gICAgICAgIHFlbXVfY2hyX2ZlX3NldF9oYW5kbGVycygmcy3vvJ5jaHJfcHJpX2luLCBOVUxM LCBOVUxMLCBOVUxMLA0KDQrvvJ7vvJ4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5VTEwsIE5VTEwsIHRydWUpDQoNCu+8nu+8niArICAgICAgICBjb21wYXJlX2Nocl9zZXRfYWlv X2ZkX2hhbmRsZXJzKCZzLe+8nmNocl9wcmlfaW4sIHMt77yeY3R4LA0KDQrvvJ7vvJ4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpDQoN Cu+8nu+8niAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJjb2xvLWNvbXBhcmUgcHJpbWFyeV9pbiBl cnJvciIpDQoNCu+8nu+8niAgICAgICB9DQoNCu+8nu+8niAgIH0NCg0K77ye77yeIEBAIC01Njcs OCArNjAxLDggQEAgc3RhdGljIHZvaWQgY29tcGFyZV9zZWNfY2hyX2luKHZvaWQgKm9wYXF1ZSwg Y29uc3QgdWludDhfdCAqYnVmLCBpbnQgc2l6ZSkNCg0K77ye77yeICAgDQoNCu+8nu+8niAgICAg ICByZXQgPSBuZXRfZmlsbF9yc3RhdGUoJnMt77yec2VjX3JzLCBidWYsIHNpemUpDQoNCu+8nu+8 niAgICAgICBpZiAocmV0ID09IC0xKSB7DQoNCu+8nu+8niAtICAgICAgICBxZW11X2Nocl9mZV9z ZXRfaGFuZGxlcnMoJnMt77yeY2hyX3NlY19pbiwgTlVMTCwgTlVMTCwgTlVMTCwNCg0K77ye77ye IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCB0cnVlKQ0KDQrv vJ7vvJ4gKyAgICAgICAgY29tcGFyZV9jaHJfc2V0X2Fpb19mZF9oYW5kbGVycygmcy3vvJ5jaHJf c2VjX2luLCBzLe+8nmN0eCwNCg0K77ye77yeICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQ0KDQrvvJ7vvJ4gICAgICAgICAgIGVycm9y X3JlcG9ydCgiY29sby1jb21wYXJlIHNlY29uZGFyeV9pbiBlcnJvciIpDQoNCu+8nu+8niAgICAg ICB9DQoNCu+8nu+8niAgIH0NCg0K77ye77yeIEBAIC02MDUsMzQgKzYzOSw1NyBAQCBzdGF0aWMg dm9pZCBjb2xvX2NvbXBhcmVfdGltZXJfZGVsKENvbXBhcmVTdGF0ZSAqcykNCg0K77ye77yeICAg ICAgIH0NCg0K77ye77yeICAgfQ0KDQrvvJ7vvJ4gICANCg0K77ye77yeIC1zdGF0aWMgdm9pZCAq Y29sb19jb21wYXJlX3RocmVhZCh2b2lkICpvcGFxdWUpDQoNCu+8nu+8niAtew0KDQrvvJ7vvJ4g LSAgICBDb21wYXJlU3RhdGUgKnMgPSBvcGFxdWUNCg0K77ye77yeIC0NCg0K77ye77yeIC0gICAg cy3vvJ53b3JrZXJfY29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldygpDQoNCu+8nu+8niAtDQoN Cu+8nu+8niAtICAgIHFlbXVfY2hyX2ZlX3NldF9oYW5kbGVycygmcy3vvJ5jaHJfcHJpX2luLCBj b21wYXJlX2Nocl9jYW5fcmVhZCwNCg0K77ye77yeIC0gICAgICAgICAgICAgICAgICAgICAgICAg IGNvbXBhcmVfcHJpX2Nocl9pbiwgTlVMTCwgcywgcy3vvJ53b3JrZXJfY29udGV4dCwgdHJ1ZSkN Cg0K77ye77yeIC0gICAgcWVtdV9jaHJfZmVfc2V0X2hhbmRsZXJzKCZzLe+8nmNocl9zZWNfaW4s IGNvbXBhcmVfY2hyX2Nhbl9yZWFkLA0KDQrvvJ7vvJ4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tcGFyZV9zZWNfY2hyX2luLCBOVUxMLCBzLCBzLe+8nndvcmtlcl9jb250ZXh0LCB0cnVl KQ0KDQrvvJ7vvJ4gLQ0KDQrvvJ7vvJ4gLSAgICBzLe+8nmNvbXBhcmVfbG9vcCA9IGdfbWFpbl9s b29wX25ldyhzLe+8nndvcmtlcl9jb250ZXh0LCBGQUxTRSkNCg0K77ye77yeIC0NCg0K77ye77ye IC0gICAgZ19tYWluX2xvb3BfcnVuKHMt77yeY29tcGFyZV9sb29wKQ0KDQrvvJ7vvJ4gLQ0KDQrv vJ7vvJ4gLSAgICBnX21haW5fbG9vcF91bnJlZihzLe+8nmNvbXBhcmVfbG9vcCkNCg0K77ye77ye IC0gICAgZ19tYWluX2NvbnRleHRfdW5yZWYocy3vvJ53b3JrZXJfY29udGV4dCkNCg0K77ye77ye IC0gICAgcmV0dXJuIE5VTEwNCg0K77ye77yeIC19DQoNCu+8nu+8niAgIA0KDQrvvJ7vvJ4gICBz dGF0aWMgdm9pZCBjb2xvX2NvbXBhcmVfaW90aHJlYWQoQ29tcGFyZVN0YXRlICpzKQ0KDQrvvJ7v vJ4gICB7DQoNCu+8nu+8niAgICAgICBvYmplY3RfcmVmKE9CSkVDVChzLe+8nmlvdGhyZWFkKSkN Cg0K77ye77yeICAgICAgIHMt77yeY3R4ID0gaW90aHJlYWRfZ2V0X2Fpb19jb250ZXh0KHMt77ye aW90aHJlYWQpDQoNCu+8nu+8niAgIA0KDQrvvJ7vvJ4gKyAgICBjb21wYXJlX2Nocl9zZXRfYWlv X2ZkX2hhbmRsZXJzKCZzLe+8nmNocl9wcmlfaW4sIHMt77yeY3R4LA0KDQrvvJ7vvJ4gKyAgICAg ICAgICAgICAgICAgICAgY29tcGFyZV9jaHJfY2FuX3JlYWQsDQoNCu+8nu+8niArICAgICAgICAg ICAgICAgICAgICBjb21wYXJlX3ByaV9jaHJfaW4sDQoNCu+8nu+8niArICAgICAgICAgICAgICAg ICAgICBOVUxMLA0KDQrvvJ7vvJ4gKyAgICAgICAgICAgICAgICAgICAgcykNCg0K77ye77yeICsg ICAgY29tcGFyZV9jaHJfc2V0X2Fpb19mZF9oYW5kbGVycygmcy3vvJ5jaHJfc2VjX2luLCBzLe+8 nmN0eCwNCg0K77ye77yeICsgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVfY2hyX2Nhbl9yZWFk LA0KDQrvvJ7vvJ4gKyAgICAgICAgICAgICAgICAgICAgY29tcGFyZV9zZWNfY2hyX2luLA0KDQrv vJ7vvJ4gKyAgICAgICAgICAgICAgICAgICAgTlVMTCwNCg0K77ye77yeICsgICAgICAgICAgICAg ICAgICAgIHMpDQoNCu+8nu+8niArDQoNCu+8nu+8niAgICAgICBjb2xvX2NvbXBhcmVfdGltZXJf aW5pdChzKQ0KDQrvvJ7vvJ4gICB9DQoNCu+8nu+8niAgIA0KDQrvvJ7vvJ4gK3N0YXRpYyB2b2lk IGNvbXBhcmVfY2hyX3NldF9haW9fZmRfaGFuZGxlcnMoQ2hhckJhY2tlbmQgKmIsDQoNCu+8nu+8 niArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWlvQ29udGV4dCAqY3R4LA0K DQrvvJ7vvJ4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPQ2FuUmVhZEhh bmRsZXIgKmZkX2Nhbl9yZWFkLA0KDQrvvJ7vvJ4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElPUmVhZEhhbmRsZXIgKmZkX3JlYWQsDQoNCu+8nu+8niArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSU9FdmVudEhhbmRsZXIgKmZkX2V2ZW50LA0KDQrvvJ7v vJ4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSkNCg0K 77ye77yeICt7DQoNCu+8nu+8niArICAgIENvbXBhcmVDaGFyZGV2ICpzDQoNCu+8nu+8niArDQoN Cu+8nu+8niArICAgIGlmICghYi3vvJ5jaHIpIHsNCg0K77ye77yeICsgICAgICAgIHJldHVybg0K DQrvvJ7vvJ4gKyAgICB9DQoNCu+8nu+8niArICAgIHMgPSBDT01QQVJFX0NIQVJERVYoYi3vvJ5j aHIpDQoNCu+8nu+8niArICAgIGlmICghcy3vvJ5pb2MpIHsNCg0K77ye77yeICsgICAgICAgIHJl dHVybg0KDQrvvJ7vvJ4gKyAgICB9DQoNCg0KDQoNCu+8nlNvIHRoaXMgaXMgaGFja3ksIHlvdSBj YW4gcmVmZXIgaG93IHZob3N0LXVzZXIgdmFsaWRhdGUgdWRwIHNvY2tldCBjaGFyIA0KDQrvvJ5i YWNrZW5kLg0KDQpJIHdpbGwgaW52ZXN0aWdhdGUuDQoNCg0KDQoNClRoYW5rcw0KDQoNCg0KDQrv vJ7vvJ4gKw0KDQrvvJ7vvJ4gKyAgICBiLe+8nmNocl9jYW5fcmVhZCA9IGZkX2Nhbl9yZWFkDQoN Cu+8nu+8niArICAgIGIt77yeY2hyX3JlYWQgPSBmZF9yZWFkDQoNCu+8nu+8niArICAgIGIt77ye Y2hyX2V2ZW50ID0gZmRfZXZlbnQNCg0K77ye77yeICsgICAgYi3vvJ5vcGFxdWUgPSBvcGFxdWUN Cg0K77ye77yeICsgICAgcmVtb3ZlX2ZkX2luX3dhdGNoKGIt77yeY2hyKQ0KDQrvvJ7vvJ4gKw0K DQrvvJ7vvJ4gKyAgICBpZiAoYi3vvJ5jaHJfcmVhZCkgew0KDQrvvJ7vvJ4gKyAgICAgICAgcWlv X2NoYW5uZWxfc2V0X2Fpb19mZF9oYW5kbGVyKHMt77yeaW9jLCBjdHgsDQoNCu+8nu+8niArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlX2Nocl9yZWFkLCBOVUxMLCBiLe+8 nmNocikNCg0K77ye77yeICsgICAgfSBlbHNlIHsNCg0K77ye77yeICsgICAgICAgIHFpb19jaGFu bmVsX3NldF9haW9fZmRfaGFuZGxlcihzLe+8nmlvYywgY3R4LCBOVUxMLCBOVUxMLCBOVUxMKQ0K DQoNCg0KDQrvvJ5TbyBpbnN0ZWFkIG9mIGRvaW5nIHN1Y2ggaGFjaywgaG93IGFib3V0IHBhc3Np bmcgYSBBaW9Db250ZXh0ICogaW5zdGVhZCANCg0K77yeb2YgR01haW5Db250ZXh0ICogdG8gcWVt dV9jaHJfZmVfc2V0X2hhbmRsZXJzPw0KDQpJT1RocmVhZCBBaW9Db250ZXh0IC3vvJ5HU291cmNl IC3vvJ4gR01haW5Db250ZXh0ICBpcyBOVUxMDQoNCmlmIHdlIHN0aWxsIHVzZSB0aGUgcWVtdV9j aHJfZmVfc2V0X2hhbmRsZXJzLCBpdCB3aWxsIHVzZSB0aGUgcWVtdSBtYWluIHRocmVhZCcgR01h aW5Db250ZXh0LA0KDQp0aGVuIGlvIHdpbGwgc3RpbGwgYmUgcHJvY2Vzc2VkIGluIHRoZSBxZW11 IG1haW4gdGhyZWFkLg0KDQpzbyBJIGVuY2Fwc3VsYXRlIGEgZnVuY3Rpb24oY29tcGFyZV9jaHJf c2V0X2Fpb19mZF9oYW5kbGVycykgdG8gbW9uaXRvciBjaGFyIGZkIGluIHRoZSBJT1RocmVhZC4N Cg0KDQoNCg0KVGhhbmtzDQoNCg0KDQoNCu+8nlRoYW5rcw0KDQoNCg0KDQrvvJ7vvJ4gKyAgICB9 DQoNCu+8nu+8niArfQ0KDQrvvJ7vvJ4gKw0KDQrvvJ7vvJ4gICBzdGF0aWMgY2hhciAqY29tcGFy ZV9nZXRfcHJpX2luZGV2KE9iamVjdCAqb2JqLCBFcnJvciAqKmVycnApDQoNCu+8nu+8niAgIHsN Cg0K77ye77yeICAgICAgIENvbXBhcmVTdGF0ZSAqcyA9IENPTE9fQ09NUEFSRShvYmopDQoNCu+8 nu+8niBAQCAtNzM2LDggKzc5Myw2IEBAIHN0YXRpYyB2b2lkIGNvbG9fY29tcGFyZV9jb21wbGV0 ZShVc2VyQ3JlYXRhYmxlICp1YywgRXJyb3IgKiplcnJwKQ0KDQrvvJ7vvJ4gICB7DQoNCu+8nu+8 niAgICAgICBDb21wYXJlU3RhdGUgKnMgPSBDT0xPX0NPTVBBUkUodWMpDQoNCu+8nu+8niAgICAg ICBDaGFyZGV2ICpjaHINCg0K77ye77yeIC0gICAgY2hhciB0aHJlYWRfbmFtZVs2NF0NCg0K77ye 77yeIC0gICAgc3RhdGljIGludCBjb21wYXJlX2lkDQoNCu+8nu+8niAgIA0KDQrvvJ7vvJ4gICAg ICAgaWYgKCFzLe+8nnByaV9pbmRldiB8fCAhcy3vvJ5zZWNfaW5kZXYgfHwgIXMt77yeb3V0ZGV2 IHx8ICFzLe+8nmlvdGhyZWFkKSB7DQoNCu+8nu+8niAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJw LCAiY29sbyBjb21wYXJlIG5lZWRzICdwcmltYXJ5X2luJyAsIg0KDQrvvJ7vvJ4gQEAgLTc3Niwx MiArODMxLDYgQEAgc3RhdGljIHZvaWQgY29sb19jb21wYXJlX2NvbXBsZXRlKFVzZXJDcmVhdGFi bGUgKnVjLCBFcnJvciAqKmVycnApDQoNCu+8nu+8niAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZnJlZSwNCg0K77ye77yeICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlv bl9kZXN0cm95KQ0KDQrvvJ7vvJ4gICANCg0K77ye77yeIC0gICAgc3ByaW50Zih0aHJlYWRfbmFt ZSwgImNvbG8tY29tcGFyZSAlZCIsIGNvbXBhcmVfaWQpDQoNCu+8nu+8niAtICAgIHFlbXVfdGhy ZWFkX2NyZWF0ZSgmcy3vvJ50aHJlYWQsIHRocmVhZF9uYW1lLA0KDQrvvJ7vvJ4gLSAgICAgICAg ICAgICAgICAgICAgICAgY29sb19jb21wYXJlX3RocmVhZCwgcywNCg0K77ye77yeIC0gICAgICAg ICAgICAgICAgICAgICAgIFFFTVVfVEhSRUFEX0pPSU5BQkxFKQ0KDQrvvJ7vvJ4gLSAgICBjb21w YXJlX2lkKysNCg0K77ye77yeIC0NCg0K77ye77yeICAgICAgIGNvbG9fY29tcGFyZV9pb3RocmVh ZChzKQ0KDQrvvJ7vvJ4gICANCg0K77ye77yeICAgICAgIHJldHVybg0KDQrvvJ7vvJ4gQEAgLTgz NCwxNiArODgzLDE0IEBAIHN0YXRpYyB2b2lkIGNvbG9fY29tcGFyZV9maW5hbGl6ZShPYmplY3Qg Km9iaikNCg0K77ye77yeICAgew0KDQrvvJ7vvJ4gICAgICAgQ29tcGFyZVN0YXRlICpzID0gQ09M T19DT01QQVJFKG9iaikNCg0K77ye77yeICAgDQoNCu+8nu+8niAtICAgIHFlbXVfY2hyX2ZlX3Nl dF9oYW5kbGVycygmcy3vvJ5jaHJfcHJpX2luLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLA0KDQrv vJ7vvJ4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy3vvJ53b3JrZXJfY29udGV4dCwg dHJ1ZSkNCg0K77ye77yeIC0gICAgcWVtdV9jaHJfZmVfc2V0X2hhbmRsZXJzKCZzLe+8nmNocl9z ZWNfaW4sIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsDQoNCu+8nu+8niAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzLe+8nndvcmtlcl9jb250ZXh0LCB0cnVlKQ0KDQrvvJ7vvJ4gKyAgICBj b21wYXJlX2Nocl9zZXRfYWlvX2ZkX2hhbmRsZXJzKCZzLe+8nmNocl9wcmlfaW4sIHMt77yeY3R4 LA0KDQrvvJ7vvJ4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwpDQoNCu+8nu+8niArICAgIGNvbXBhcmVfY2hyX3NldF9haW9fZmRfaGFu ZGxlcnMoJnMt77yeY2hyX3NlY19pbiwgcy3vvJ5jdHgsDQoNCu+8nu+8niArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkNCg0K77ye77ye ICsNCg0K77ye77yeICAgICAgIHFlbXVfY2hyX2ZlX2RlaW5pdCgmcy3vvJ5jaHJfb3V0KQ0KDQrv vJ7vvJ4gICAgICAgY29sb19jb21wYXJlX3RpbWVyX2RlbChzKQ0KDQrvvJ7vvJ4gICANCg0K77ye 77yeIC0gICAgZ19tYWluX2xvb3BfcXVpdChzLe+8nmNvbXBhcmVfbG9vcCkNCg0K77ye77yeIC0g ICAgcWVtdV90aHJlYWRfam9pbigmcy3vvJ50aHJlYWQpDQoNCu+8nu+8niAtDQoNCu+8nu+8niAg ICAgICAvKiBSZWxlYXNlIGFsbCB1bmhhbmRsZWQgcGFja2V0cyBhZnRlciBjb21wYXJlIHRoZWFk IGV4aXRlZCAqLw0KDQrvvJ7vvJ4gICAgICAgZ19xdWV1ZV9mb3JlYWNoKCZzLe+8nmNvbm5fbGlz dCwgY29sb19mbHVzaF9wYWNrZXRzLCBzKQ0KDQrvvJ7vvJ4gICANCg0K77ye77yeIGRpZmYgLS1n aXQgYS9uZXQvY29sby5oIGIvbmV0L2NvbG8uaA0KDQrvvJ7vvJ4gaW5kZXggN2M1MjRmMy4uOTM2 ZGVhMSAxMDA2NDQNCg0K77ye77yeIC0tLSBhL25ldC9jb2xvLmgNCg0K77ye77yeICsrKyBiL25l dC9jb2xvLmgNCg0K77ye77yeIEBAIC04NCw1ICs4NCw2IEBAIENvbm5lY3Rpb24gKmNvbm5lY3Rp b25fZ2V0KEdIYXNoVGFibGUgKmNvbm5lY3Rpb25fdHJhY2tfdGFibGUsDQoNCu+8nu+8niAgIHZv aWQgY29ubmVjdGlvbl9oYXNodGFibGVfcmVzZXQoR0hhc2hUYWJsZSAqY29ubmVjdGlvbl90cmFj a190YWJsZSkNCg0K77ye77yeICAgUGFja2V0ICpwYWNrZXRfbmV3KGNvbnN0IHZvaWQgKmRhdGEs IGludCBzaXplKQ0KDQrvvJ7vvJ4gICB2b2lkIHBhY2tldF9kZXN0cm95KHZvaWQgKm9wYXF1ZSwg dm9pZCAqdXNlcl9kYXRhKQ0KDQrvvJ7vvJ4gK3ZvaWQgcmVtb3ZlX2ZkX2luX3dhdGNoKENoYXJk ZXYgKmNocikNCg0K77ye77yeICAgDQoNCu+8nu+8niAgICNlbmRpZiAvKiBRRU1VX0NPTE9fUFJP WFlfSCAqLw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K5Y6f5aeL6YKu5Lu2DQoNCg0K DQrlj5Hku7bkurrvvJog77ycamFzb3dhbmdAcmVkaGF0LmNvbe+8ng0K5pS25Lu25Lq677ya546L 5YuHMTAxNzA1MzAg77ycemhhbmcuemhhbmdoYWlsaWFuZ0BodWF3ZWkuY29t77yeIO+8nHpoYW5n Y2hlbi5mbnN0QGNuLmZ1aml0c3UuY29t77yeDQrmioTpgIHkurrvvJog77ycbGl6aGlqaWFuQGNu LmZ1aml0c3UuY29t77yeIO+8nHFlbXUtZGV2ZWxAbm9uZ251Lm9yZ++8nueOi+W5vzEwMTY1OTky DQrml6Ug5pyfIO+8mjIwMTflubQwNuaciDA35pelIDE2OjM1DQrkuLsg6aKYIO+8mlJlOiBbUEFU Q0h2MiAwMi8wNF0gY29sby1jb21wYXJlOiBQcm9jZXNzIHBhY3RrZXRzIGluIHRoZSBJT1RocmVh ZCBvZnRoZSBwcmltYXJ5DQoNCg0KDQoNCg0KDQoNCk9uIDIwMTflubQwNuaciDA15pelIDE4OjQ0 LCBZb25nIFdhbmcgd3JvdGU6DQrvvJ4gRnJvbTogV2FuZyBZb25nIO+8nHdhbmcueW9uZzE1NUB6 dGUuY29tLmNu77yeDQrvvJ4NCu+8niBQcm9jZXNzIHBhY3RrZXRzIGluIHRoZSBJT1RocmVhZCB3 aGljaCBhcnJpdmVkIG92ZXIgdGhlIHNvY2tldC4NCu+8niB3ZSB1c2UgcWlvX2NoYW5uZWxfc2V0 X2Fpb19mZF9oYW5kbGVyIHRvIHNldCB0aGUgaGFuZGxlcnMgb24gdGhlDQrvvJ4gSU9UaHJlYWQg QWlvQ29udGV4dC50aGVuIHRoZSBwYWNrZXRzIGZyb20gdGhlIHByaW1hcnkgYW5kIHRoZSBzZWNv bmRhcnkNCu+8niBhcmUgcHJvY2Vzc2VkIGluIHRoZSBJT1RocmVhZC4NCu+8niBGaW5hbGx5IHJl bW92ZSB0aGUgY29sby1jb21wYXJlIHRocmVhZCB1c2luZyB0aGUgSU9UaHJlYWQgaW5zdGVhZC4N Cu+8ng0K77yeIFNpZ25lZC1vZmYtYnk6IFdhbmcgWW9uZ++8nHdhbmcueW9uZzE1NUB6dGUuY29t LmNu77yeDQrvvJ4gU2lnbmVkLW9mZi1ieTogV2FuZyBHdWFuZ++8nHdhbmcuZ3Vhbmc1NUB6dGUu Y29tLmNu77yeDQrvvJ4gLS0tDQrvvJ4gICBuZXQvY29sby1jb21wYXJlLmMgfCAxMzMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0NCu+8niAgIG5l dC9jb2xvLmggICAgICAgICB8ICAgMSArDQrvvJ4gICAyIGZpbGVzIGNoYW5nZWQsIDkxIGluc2Vy dGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQ0K77yeDQrvvJ4gZGlmZiAtLWdpdCBhL25ldC9jb2xv LWNvbXBhcmUuYyBiL25ldC9jb2xvLWNvbXBhcmUuYw0K77yeIGluZGV4IGIwOTQyYTQuLmUzYWY3 OTEgMTAwNjQ0DQrvvJ4gLS0tIGEvbmV0L2NvbG8tY29tcGFyZS5jDQrvvJ4gKysrIGIvbmV0L2Nv bG8tY29tcGFyZS5jDQrvvJ4gQEAgLTI5LDYgKzI5LDcgQEANCu+8niAgICNpbmNsdWRlICJxZW11 L3NvY2tldHMuaCINCu+8niAgICNpbmNsdWRlICJxYXBpLXZpc2l0LmgiDQrvvJ4gICAjaW5jbHVk ZSAibmV0L2NvbG8uaCINCu+8niArI2luY2x1ZGUgImlvL2NoYW5uZWwuaCINCu+8niAgICNpbmNs dWRlICJzeXNlbXUvaW90aHJlYWQuaCINCu+8niAgIA0K77yeICAgI2RlZmluZSBUWVBFX0NPTE9f Q09NUEFSRSAiY29sby1jb21wYXJlIg0K77yeIEBAIC04MiwxMSArODMsNiBAQCB0eXBlZGVmIHN0 cnVjdCBDb21wYXJlU3RhdGUgew0K77yeICAgICAgIEdRdWV1ZSBjb25uX2xpc3QNCu+8niAgICAg ICAvKiBoYXNodGFibGUgdG8gc2F2ZSBjb25uZWN0aW9uICovDQrvvJ4gICAgICAgR0hhc2hUYWJs ZSAqY29ubmVjdGlvbl90cmFja190YWJsZQ0K77yeIC0gICAgLyogY29tcGFyZSB0aHJlYWQsIGEg dGhyZWFkIGZvciBlYWNoIE5JQyAqLw0K77yeIC0gICAgUWVtdVRocmVhZCB0aHJlYWQNCu+8niAt DQrvvJ4gLSAgICBHTWFpbkNvbnRleHQgKndvcmtlcl9jb250ZXh0DQrvvJ4gLSAgICBHTWFpbkxv b3AgKmNvbXBhcmVfbG9vcA0K77yeICAgDQrvvJ4gICAgICAgLypjb21wYXJlIGlvdGhyZWFkKi8N Cu+8niAgICAgICBJT1RocmVhZCAqaW90aHJlYWQNCu+8niBAQCAtOTUsNiArOTEsMTQgQEAgdHlw ZWRlZiBzdHJ1Y3QgQ29tcGFyZVN0YXRlIHsNCu+8niAgICAgICBRRU1VVGltZXIgKnBhY2tldF9j aGVja190aW1lcg0K77yeICAgfSBDb21wYXJlU3RhdGUNCu+8niAgIA0K77yeICt0eXBlZGVmIHN0 cnVjdCB7DQrvvJ4gKyAgICBDaGFyZGV2IHBhcmVudA0K77yeICsgICAgUUlPQ2hhbm5lbCAqaW9j IC8qSS9PIGNoYW5uZWwgKi8NCg0KV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBtYW5pcHVsYXRl IGNoYXIgYmFja2VuZCdzIGludGVybmFsIGlvIGNoYW5uZWwuIA0KQWxsIG5lZWQgaGVyZSBpcyB0 byBhY2Nlc3MgdGhlIGZyb250ZW5kIEFQSSAoY2hhci1mZS5jKSBJIGJlbGlldmUsIGFuZCANCmhp ZGUgdGhlIGludGVybmFsIGltcGxlbWVudGF0aW9uLg0KDQrvvJ4gK30gQ29tcGFyZUNoYXJkZXYN Cu+8niArDQrvvJ4gKyNkZWZpbmUgQ09NUEFSRV9DSEFSREVWKG9iaikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0K77yeICsgICAgT0JKRUNUX0NIRUNLKENvbXBhcmVDaGFy ZGV2LCAob2JqKSwgVFlQRV9DSEFSREVWX1NPQ0tFVCkNCu+8niArDQrvvJ4gICB0eXBlZGVmIHN0 cnVjdCBDb21wYXJlQ2xhc3Mgew0K77yeICAgICAgIE9iamVjdENsYXNzIHBhcmVudF9jbGFzcw0K 77yeICAgfSBDb21wYXJlQ2xhc3MNCu+8niBAQCAtMTA3LDYgKzExMSwxMiBAQCBlbnVtIHsNCu+8 niAgIHN0YXRpYyBpbnQgY29tcGFyZV9jaHJfc2VuZChDaGFyQmFja2VuZCAqb3V0LA0K77yeICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwNCu+8niAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXplKQ0K77yeICtzdGF0aWMgdm9p ZCBjb21wYXJlX2Nocl9zZXRfYWlvX2ZkX2hhbmRsZXJzKENoYXJCYWNrZW5kICpiLA0K77yeICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBaW9Db250ZXh0ICpjdHgsDQrvvJ4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPQ2FuUmVhZEhhbmRsZXIgKmZk X2Nhbl9yZWFkLA0K77yeICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1Jl YWRIYW5kbGVyICpmZF9yZWFkLA0K77yeICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJT0V2ZW50SGFuZGxlciAqZmRfZXZlbnQsDQrvvJ4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSkNCu+8niAgIA0K77yeICAgc3RhdGljIGdpbnQg c2VxX3NvcnRlcihQYWNrZXQgKmEsIFBhY2tldCAqYiwgZ3BvaW50ZXIgZGF0YSkNCu+8niAgIHsN Cu+8niBAQCAtNTM0LDYgKzU0NCwzMCBAQCBlcnI6DQrvvJ4gICAgICAgcmV0dXJuIHJldCDvvJwg MCA/IHJldCA6IC1FSU8NCu+8niAgIH0NCu+8niAgIA0K77yeICtzdGF0aWMgdm9pZCBjb21wYXJl X2Nocl9yZWFkKHZvaWQgKm9wYXF1ZSkNCu+8niArew0K77yeICsgICAgQ2hhcmRldiAqY2hyID0g b3BhcXVlDQrvvJ4gKyAgICB1aW50OF90IGJ1ZltDSFJfUkVBRF9CVUZfTEVOXQ0K77yeICsgICAg aW50IGxlbiwgc2l6ZQ0K77yeICsgICAgaW50IG1heF9zaXplDQrvvJ4gKw0K77yeICsgICAgbWF4 X3NpemUgPSBxZW11X2Nocl9iZV9jYW5fd3JpdGUoY2hyKQ0K77yeICsgICAgaWYgKG1heF9zaXpl IO+8nD0gMCkgew0K77yeICsgICAgICAgIHJldHVybg0K77yeICsgICAgfQ0K77yeICsNCu+8niAr ICAgIGxlbiA9IHNpemVvZihidWYpDQrvvJ4gKyAgICBpZiAobGVuIO+8niBtYXhfc2l6ZSkgew0K 77yeICsgICAgICAgIGxlbiA9IG1heF9zaXplDQrvvJ4gKyAgICB9DQrvvJ4gKyAgICBzaXplID0g Q0hBUkRFVl9HRVRfQ0xBU1MoY2hyKS3vvJ5jaHJfc3luY19yZWFkKGNociwgKHZvaWQgKilidWYs IGxlbikNCu+8niArICAgIGlmIChzaXplID09IDApIHsNCu+8niArICAgICAgICByZXR1cm4NCu+8 niArICAgIH0gZWxzZSBpZiAoc2l6ZSDvvJ4gMCkgew0K77yeICsgICAgICAgIHFlbXVfY2hyX2Jl X3dyaXRlKGNociwgYnVmLCBzaXplKQ0K77yeICsgICAgfQ0K77yeICt9DQrvvJ4gKw0K77yeICAg c3RhdGljIGludCBjb21wYXJlX2Nocl9jYW5fcmVhZCh2b2lkICpvcGFxdWUpDQrvvJ4gICB7DQrv vJ4gICAgICAgcmV0dXJuIENPTVBBUkVfUkVBRF9MRU5fTUFYDQrvvJ4gQEAgLTU1MCw4ICs1ODQs OCBAQCBzdGF0aWMgdm9pZCBjb21wYXJlX3ByaV9jaHJfaW4odm9pZCAqb3BhcXVlLCBjb25zdCB1 aW50OF90ICpidWYsIGludCBzaXplKQ0K77yeICAgDQrvvJ4gICAgICAgcmV0ID0gbmV0X2ZpbGxf cnN0YXRlKCZzLe+8nnByaV9ycywgYnVmLCBzaXplKQ0K77yeICAgICAgIGlmIChyZXQgPT0gLTEp IHsNCu+8niAtICAgICAgICBxZW11X2Nocl9mZV9zZXRfaGFuZGxlcnMoJnMt77yeY2hyX3ByaV9p biwgTlVMTCwgTlVMTCwgTlVMTCwNCu+8niAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwgTlVMTCwgdHJ1ZSkNCu+8niArICAgICAgICBjb21wYXJlX2Nocl9zZXRfYWlvX2Zk X2hhbmRsZXJzKCZzLe+8nmNocl9wcmlfaW4sIHMt77yeY3R4LA0K77yeICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQ0K77yeICAgICAg ICAgICBlcnJvcl9yZXBvcnQoImNvbG8tY29tcGFyZSBwcmltYXJ5X2luIGVycm9yIikNCu+8niAg ICAgICB9DQrvvJ4gICB9DQrvvJ4gQEAgLTU2Nyw4ICs2MDEsOCBAQCBzdGF0aWMgdm9pZCBjb21w YXJlX3NlY19jaHJfaW4odm9pZCAqb3BhcXVlLCBjb25zdCB1aW50OF90ICpidWYsIGludCBzaXpl KQ0K77yeICAgDQrvvJ4gICAgICAgcmV0ID0gbmV0X2ZpbGxfcnN0YXRlKCZzLe+8nnNlY19ycywg YnVmLCBzaXplKQ0K77yeICAgICAgIGlmIChyZXQgPT0gLTEpIHsNCu+8niAtICAgICAgICBxZW11 X2Nocl9mZV9zZXRfaGFuZGxlcnMoJnMt77yeY2hyX3NlY19pbiwgTlVMTCwgTlVMTCwgTlVMTCwN Cu+8niAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgdHJ1ZSkN Cu+8niArICAgICAgICBjb21wYXJlX2Nocl9zZXRfYWlvX2ZkX2hhbmRsZXJzKCZzLe+8nmNocl9z ZWNfaW4sIHMt77yeY3R4LA0K77yeICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQ0K77yeICAgICAgICAgICBlcnJvcl9yZXBvcnQoImNv bG8tY29tcGFyZSBzZWNvbmRhcnlfaW4gZXJyb3IiKQ0K77yeICAgICAgIH0NCu+8niAgIH0NCu+8 niBAQCAtNjA1LDM0ICs2MzksNTcgQEAgc3RhdGljIHZvaWQgY29sb19jb21wYXJlX3RpbWVyX2Rl bChDb21wYXJlU3RhdGUgKnMpDQrvvJ4gICAgICAgfQ0K77yeICAgfQ0K77yeICAgDQrvvJ4gLXN0 YXRpYyB2b2lkICpjb2xvX2NvbXBhcmVfdGhyZWFkKHZvaWQgKm9wYXF1ZSkNCu+8niAtew0K77ye IC0gICAgQ29tcGFyZVN0YXRlICpzID0gb3BhcXVlDQrvvJ4gLQ0K77yeIC0gICAgcy3vvJ53b3Jr ZXJfY29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldygpDQrvvJ4gLQ0K77yeIC0gICAgcWVtdV9j aHJfZmVfc2V0X2hhbmRsZXJzKCZzLe+8nmNocl9wcmlfaW4sIGNvbXBhcmVfY2hyX2Nhbl9yZWFk LA0K77yeIC0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVfcHJpX2Nocl9pbiwgTlVM TCwgcywgcy3vvJ53b3JrZXJfY29udGV4dCwgdHJ1ZSkNCu+8niAtICAgIHFlbXVfY2hyX2ZlX3Nl dF9oYW5kbGVycygmcy3vvJ5jaHJfc2VjX2luLCBjb21wYXJlX2Nocl9jYW5fcmVhZCwNCu+8niAt ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlX3NlY19jaHJfaW4sIE5VTEwsIHMsIHMt 77yed29ya2VyX2NvbnRleHQsIHRydWUpDQrvvJ4gLQ0K77yeIC0gICAgcy3vvJ5jb21wYXJlX2xv b3AgPSBnX21haW5fbG9vcF9uZXcocy3vvJ53b3JrZXJfY29udGV4dCwgRkFMU0UpDQrvvJ4gLQ0K 77yeIC0gICAgZ19tYWluX2xvb3BfcnVuKHMt77yeY29tcGFyZV9sb29wKQ0K77yeIC0NCu+8niAt ICAgIGdfbWFpbl9sb29wX3VucmVmKHMt77yeY29tcGFyZV9sb29wKQ0K77yeIC0gICAgZ19tYWlu X2NvbnRleHRfdW5yZWYocy3vvJ53b3JrZXJfY29udGV4dCkNCu+8niAtICAgIHJldHVybiBOVUxM DQrvvJ4gLX0NCu+8niAgIA0K77yeICAgc3RhdGljIHZvaWQgY29sb19jb21wYXJlX2lvdGhyZWFk KENvbXBhcmVTdGF0ZSAqcykNCu+8niAgIHsNCu+8niAgICAgICBvYmplY3RfcmVmKE9CSkVDVChz Le+8nmlvdGhyZWFkKSkNCu+8niAgICAgICBzLe+8nmN0eCA9IGlvdGhyZWFkX2dldF9haW9fY29u dGV4dChzLe+8nmlvdGhyZWFkKQ0K77yeICAgDQrvvJ4gKyAgICBjb21wYXJlX2Nocl9zZXRfYWlv X2ZkX2hhbmRsZXJzKCZzLe+8nmNocl9wcmlfaW4sIHMt77yeY3R4LA0K77yeICsgICAgICAgICAg ICAgICAgICAgIGNvbXBhcmVfY2hyX2Nhbl9yZWFkLA0K77yeICsgICAgICAgICAgICAgICAgICAg IGNvbXBhcmVfcHJpX2Nocl9pbiwNCu+8niArICAgICAgICAgICAgICAgICAgICBOVUxMLA0K77ye ICsgICAgICAgICAgICAgICAgICAgIHMpDQrvvJ4gKyAgICBjb21wYXJlX2Nocl9zZXRfYWlvX2Zk X2hhbmRsZXJzKCZzLe+8nmNocl9zZWNfaW4sIHMt77yeY3R4LA0K77yeICsgICAgICAgICAgICAg ICAgICAgIGNvbXBhcmVfY2hyX2Nhbl9yZWFkLA0K77yeICsgICAgICAgICAgICAgICAgICAgIGNv bXBhcmVfc2VjX2Nocl9pbiwNCu+8niArICAgICAgICAgICAgICAgICAgICBOVUxMLA0K77yeICsg ICAgICAgICAgICAgICAgICAgIHMpDQrvvJ4gKw0K77yeICAgICAgIGNvbG9fY29tcGFyZV90aW1l cl9pbml0KHMpDQrvvJ4gICB9DQrvvJ4gICANCu+8niArc3RhdGljIHZvaWQgY29tcGFyZV9jaHJf c2V0X2Fpb19mZF9oYW5kbGVycyhDaGFyQmFja2VuZCAqYiwNCu+8niArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQWlvQ29udGV4dCAqY3R4LA0K77yeICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJT0NhblJlYWRIYW5kbGVyICpmZF9jYW5fcmVhZCwNCu+8 niArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9SZWFkSGFuZGxlciAqZmRf cmVhZCwNCu+8niArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9FdmVudEhh bmRsZXIgKmZkX2V2ZW50LA0K77yeICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpvcGFxdWUpDQrvvJ4gK3sNCu+8niArICAgIENvbXBhcmVDaGFyZGV2ICpzDQrvvJ4g Kw0K77yeICsgICAgaWYgKCFiLe+8nmNocikgew0K77yeICsgICAgICAgIHJldHVybg0K77yeICsg ICAgfQ0K77yeICsgICAgcyA9IENPTVBBUkVfQ0hBUkRFVihiLe+8nmNocikNCu+8niArICAgIGlm ICghcy3vvJ5pb2MpIHsNCu+8niArICAgICAgICByZXR1cm4NCu+8niArICAgIH0NCg0KU28gdGhp cyBpcyBoYWNreSwgeW91IGNhbiByZWZlciBob3cgdmhvc3QtdXNlciB2YWxpZGF0ZSB1ZHAgc29j a2V0IGNoYXIgDQpiYWNrZW5kLg0KDQrvvJ4gKw0K77yeICsgICAgYi3vvJ5jaHJfY2FuX3JlYWQg PSBmZF9jYW5fcmVhZA0K77yeICsgICAgYi3vvJ5jaHJfcmVhZCA9IGZkX3JlYWQNCu+8niArICAg IGIt77yeY2hyX2V2ZW50ID0gZmRfZXZlbnQNCu+8niArICAgIGIt77yeb3BhcXVlID0gb3BhcXVl DQrvvJ4gKyAgICByZW1vdmVfZmRfaW5fd2F0Y2goYi3vvJ5jaHIpDQrvvJ4gKw0K77yeICsgICAg aWYgKGIt77yeY2hyX3JlYWQpIHsNCu+8niArICAgICAgICBxaW9fY2hhbm5lbF9zZXRfYWlvX2Zk X2hhbmRsZXIocy3vvJ5pb2MsIGN0eCwNCu+8niArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb21wYXJlX2Nocl9yZWFkLCBOVUxMLCBiLe+8nmNocikNCu+8niArICAgIH0gZWxzZSB7 DQrvvJ4gKyAgICAgICAgcWlvX2NoYW5uZWxfc2V0X2Fpb19mZF9oYW5kbGVyKHMt77yeaW9jLCBj dHgsIE5VTEwsIE5VTEwsIE5VTEwpDQoNClNvIGluc3RlYWQgb2YgZG9pbmcgc3VjaCBoYWNrLCBo b3cgYWJvdXQgcGFzc2luZyBhIEFpb0NvbnRleHQgKiBpbnN0ZWFkIA0Kb2YgR01haW5Db250ZXh0 ICogdG8gcWVtdV9jaHJfZmVfc2V0X2hhbmRsZXJzPw0KDQpUaGFua3MNCg0K77yeICsgICAgfQ0K 77yeICt9DQrvvJ4gKw0K77yeICAgc3RhdGljIGNoYXIgKmNvbXBhcmVfZ2V0X3ByaV9pbmRldihP YmplY3QgKm9iaiwgRXJyb3IgKiplcnJwKQ0K77yeICAgew0K77yeICAgICAgIENvbXBhcmVTdGF0 ZSAqcyA9IENPTE9fQ09NUEFSRShvYmopDQrvvJ4gQEAgLTczNiw4ICs3OTMsNiBAQCBzdGF0aWMg dm9pZCBjb2xvX2NvbXBhcmVfY29tcGxldGUoVXNlckNyZWF0YWJsZSAqdWMsIEVycm9yICoqZXJy cCkNCu+8niAgIHsNCu+8niAgICAgICBDb21wYXJlU3RhdGUgKnMgPSBDT0xPX0NPTVBBUkUodWMp DQrvvJ4gICAgICAgQ2hhcmRldiAqY2hyDQrvvJ4gLSAgICBjaGFyIHRocmVhZF9uYW1lWzY0XQ0K 77yeIC0gICAgc3RhdGljIGludCBjb21wYXJlX2lkDQrvvJ4gICANCu+8niAgICAgICBpZiAoIXMt 77yecHJpX2luZGV2IHx8ICFzLe+8nnNlY19pbmRldiB8fCAhcy3vvJ5vdXRkZXYgfHwgIXMt77ye aW90aHJlYWQpIHsNCu+8niAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiY29sbyBjb21wYXJl IG5lZWRzICdwcmltYXJ5X2luJyAsIg0K77yeIEBAIC03NzYsMTIgKzgzMSw2IEBAIHN0YXRpYyB2 b2lkIGNvbG9fY29tcGFyZV9jb21wbGV0ZShVc2VyQ3JlYXRhYmxlICp1YywgRXJyb3IgKiplcnJw KQ0K77yeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ19mcmVlLA0K77yeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9kZXN0cm95KQ0K77yeICAgDQrvvJ4gLSAgICBz cHJpbnRmKHRocmVhZF9uYW1lLCAiY29sby1jb21wYXJlICVkIiwgY29tcGFyZV9pZCkNCu+8niAt ICAgIHFlbXVfdGhyZWFkX2NyZWF0ZSgmcy3vvJ50aHJlYWQsIHRocmVhZF9uYW1lLA0K77yeIC0g ICAgICAgICAgICAgICAgICAgICAgIGNvbG9fY29tcGFyZV90aHJlYWQsIHMsDQrvvJ4gLSAgICAg ICAgICAgICAgICAgICAgICAgUUVNVV9USFJFQURfSk9JTkFCTEUpDQrvvJ4gLSAgICBjb21wYXJl X2lkKysNCu+8niAtDQrvvJ4gICAgICAgY29sb19jb21wYXJlX2lvdGhyZWFkKHMpDQrvvJ4gICAN Cu+8niAgICAgICByZXR1cm4NCu+8niBAQCAtODM0LDE2ICs4ODMsMTQgQEAgc3RhdGljIHZvaWQg Y29sb19jb21wYXJlX2ZpbmFsaXplKE9iamVjdCAqb2JqKQ0K77yeICAgew0K77yeICAgICAgIENv bXBhcmVTdGF0ZSAqcyA9IENPTE9fQ09NUEFSRShvYmopDQrvvJ4gICANCu+8niAtICAgIHFlbXVf Y2hyX2ZlX3NldF9oYW5kbGVycygmcy3vvJ5jaHJfcHJpX2luLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMLA0K77yeIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMt77yed29ya2VyX2NvbnRl eHQsIHRydWUpDQrvvJ4gLSAgICBxZW11X2Nocl9mZV9zZXRfaGFuZGxlcnMoJnMt77yeY2hyX3Nl Y19pbiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwNCu+8niAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzLe+8nndvcmtlcl9jb250ZXh0LCB0cnVlKQ0K77yeICsgICAgY29tcGFyZV9jaHJf c2V0X2Fpb19mZF9oYW5kbGVycygmcy3vvJ5jaHJfcHJpX2luLCBzLe+8nmN0eCwNCu+8niArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkN Cu+8niArICAgIGNvbXBhcmVfY2hyX3NldF9haW9fZmRfaGFuZGxlcnMoJnMt77yeY2hyX3NlY19p biwgcy3vvJ5jdHgsDQrvvJ4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEwpDQrvvJ4gKw0K77yeICAgICAgIHFlbXVfY2hyX2ZlX2RlaW5p dCgmcy3vvJ5jaHJfb3V0KQ0K77yeICAgICAgIGNvbG9fY29tcGFyZV90aW1lcl9kZWwocykNCu+8 niAgIA0K77yeIC0gICAgZ19tYWluX2xvb3BfcXVpdChzLe+8nmNvbXBhcmVfbG9vcCkNCu+8niAt ICAgIHFlbXVfdGhyZWFkX2pvaW4oJnMt77yedGhyZWFkKQ0K77yeIC0NCu+8niAgICAgICAvKiBS ZWxlYXNlIGFsbCB1bmhhbmRsZWQgcGFja2V0cyBhZnRlciBjb21wYXJlIHRoZWFkIGV4aXRlZCAq Lw0K77yeICAgICAgIGdfcXVldWVfZm9yZWFjaCgmcy3vvJ5jb25uX2xpc3QsIGNvbG9fZmx1c2hf cGFja2V0cywgcykNCu+8niAgIA0K77yeIGRpZmYgLS1naXQgYS9uZXQvY29sby5oIGIvbmV0L2Nv bG8uaA0K77yeIGluZGV4IDdjNTI0ZjMuLjkzNmRlYTEgMTAwNjQ0DQrvvJ4gLS0tIGEvbmV0L2Nv bG8uaA0K77yeICsrKyBiL25ldC9jb2xvLmgNCu+8niBAQCAtODQsNSArODQsNiBAQCBDb25uZWN0 aW9uICpjb25uZWN0aW9uX2dldChHSGFzaFRhYmxlICpjb25uZWN0aW9uX3RyYWNrX3RhYmxlLA0K 77yeICAgdm9pZCBjb25uZWN0aW9uX2hhc2h0YWJsZV9yZXNldChHSGFzaFRhYmxlICpjb25uZWN0 aW9uX3RyYWNrX3RhYmxlKQ0K77yeICAgUGFja2V0ICpwYWNrZXRfbmV3KGNvbnN0IHZvaWQgKmRh dGEsIGludCBzaXplKQ0K77yeICAgdm9pZCBwYWNrZXRfZGVzdHJveSh2b2lkICpvcGFxdWUsIHZv aWQgKnVzZXJfZGF0YSkNCu+8niArdm9pZCByZW1vdmVfZmRfaW5fd2F0Y2goQ2hhcmRldiAqY2hy KQ0K77yeICAgDQrvvJ4gICAjZW5kaWYgLyogUUVNVV9DT0xPX1BST1hZX0ggKi8=