From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34839) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dkQYg-0002So-Uh for qemu-devel@nongnu.org; Wed, 23 Aug 2017 03:58:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dkQYd-0001Ax-M8 for qemu-devel@nongnu.org; Wed, 23 Aug 2017 03:58:39 -0400 Received: from out1.zte.com.cn ([202.103.147.172]:60469) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dkQYb-00015N-PK for qemu-devel@nongnu.org; Wed, 23 Aug 2017 03:58:35 -0400 Date: Wed, 23 Aug 2017 15:58:02 +0800 (CST) Message-ID: <201708231558023809685@zte.com.cn> References: 1503391578-6121-1-git-send-email-wang.yong155@zte.com.cn, 20170822095157.GB3210@lemon Mime-Version: 1.0 From: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Subject: [Qemu-devel] =?utf-8?b?562U5aSNOiBSZTogW1BBVENIdjQgMDEvMDNdIHFl?= =?utf-8?q?mu-iothread=3A_IOThread_supports_theGMainContext_event_loop?= List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: famz@redhat.com Cc: pbonzini@redhat.com, stefanha@redhat.com, jasowang@redhat.com, zhangchen.fnst@cn.fujitsu.com, zhang.zhanghailiang@huawei.com, wang.guang55@zte.com.cn, lizhijian@cn.fujitsu.com, qemu-devel@nongnu.org Pj4gZGlmZiAtLWdpdCBhL2lvdGhyZWFkLmMgYi9pb3RocmVhZC5jPj4gaW5kZXggYmVlYjg3MC4u ZmIxYzU1YiAxMDA2NDQ+PiAtLS0gYS9pb3RocmVhZC5jPj4gKysrIGIvaW90aHJlYWQuYz4+IEBA IC01Nyw2ICs1NywyMCBAQCBzdGF0aWMgdm9pZCAqaW90aHJlYWRfcnVuKHZvaWQgKm9wYXF1ZSk+ PiAgPj4gICAgICB3aGlsZSAoIWF0b21pY19yZWFkKCZpb3RocmVhZC0+c3RvcHBpbmcpKSB7Pj4g ICAgICAgICAgYWlvX3BvbGwoaW90aHJlYWQtPmN0eCwgdHJ1ZSk+PiArPj4gKyAgICAgICAgaWYg KGF0b21pY19yZWFkKCZpb3RocmVhZC0+d29ya2VyX2NvbnRleHQpKSB7Pj4gKyAgICAgICAgICAg IGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQoaW90aHJlYWQtPndvcmtlcl9jb250 ZXh0KT4+ICsgICAgICAgICAgICBpb3RocmVhZC0+bWFpbl9sb29wID0+PiArICAgICAgICAgICAg ICAgIGdfbWFpbl9sb29wX25ldyhpb3RocmVhZC0+d29ya2VyX2NvbnRleHQsIFRSVUUpPj4gKyAg ICAgICAgICAgIGdfbWFpbl9sb29wX3J1bihpb3RocmVhZC0+bWFpbl9sb29wKT4+ICs+PiArICAg ICAgICAgICAgZ19tYWluX2xvb3BfdW5yZWYoaW90aHJlYWQtPm1haW5fbG9vcCk+PiArICAgICAg ICAgICAgaW90aHJlYWQtPm1haW5fbG9vcCA9IE5VTEw+DQoNCj5Zb3Ugc2hvdWxkIGNsZWFyIGlv dGhyZWFkLT5tYWluX2xvb3AgZmlyc3QgYmVmb3JlIGNhbGxpbmcgZ19tYWluX2xvb3BfdW5yZWYo KSw+dG8gYXZvaWQgVE9DVE9VIHJhY2Ugd2l0aCBpb3RocmVhZF9zdG9wKCk6Pg0KDQo+ICBpb3Ro cmVhZF9ydW4gKGluIElPVGhyZWFkKSAgICAgICAgICBpb3RocmVhZF9zdG9wIChpbiBtYWluIHRo cmVhZCk+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoYXRvbWljX3JlYWQoJmlvdGhyZWFkLT5tYWluX2xvb3ApKSB7PiAgLyogZnJlZXMgaW90 aHJlYWQtPm1haW5fbG9vcCAqLz4gIGdfbWFpbl9sb29wX3VucmVmKC4uLik+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBY2Nlc3NlcyBmcmVlZCBtZW1vcnkgKi8+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVp dChpb3RocmVhZC0+bWFpbl9sb29wKT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0+ICBpb3RocmVhZC0+bWFpbl9sb29wID0gTlVMTA0KDQpXaGVuIHRoZSBnX21haW5fbG9v cF9xdWl0IGZ1bmN0aW9uIGlzIGNhbGxlZCwgdGhlIGdfbWFpbl9sb29wX3J1biBmdW5jdGlvbiBj YW4gZXhpdD8NCg0KDQoNCg0KaW90aHJlYWRfcnVuIChpbiBJT1RocmVhZCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvdGhyZWFkX3N0b3AgKGluIG1haW4gdGhyZWFk KQ0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnN0ZXAx OiBzZXQgIGxvb3AtPmlzX3J1bm5pbmcgPSBGQUxTRSovDQoNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnX21haW5fbG9vcF9xdWl0KGlvdGhyZWFkLT5tYWluX2xvb3ApDQoNCi8qc3RlcDI6IG1h aW4gbG9vcCBleGl0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICANCg0KZ19tYWluX2xvb3BfcnVuKCkNCg0KLypzdGVwMzpmcmVlcyBpb3RocmVhZC0+ bWFpbl9sb29wIG1lbW9yeSovDQoNCmdfbWFpbl9sb29wX3VucmVmKC4uLikNCg0KaW90aHJlYWQt Pm1haW5fbG9vcCA9IE5VTEwNCg0KDQoNCg0KSSB0aGluayBpdCdzIG9rLCBJIGRvbid0IGtub3cg d2hldGhlciBJIHVuZGVyc3RhbmQgaXQgY29ycmVjdGx5IG9yIG5vdD8NCg0KDQoNCg0KVGhhbmtz DQoNCj4+PiArPj4gKyAgICAgICAgICAgIGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVs dChpb3RocmVhZC0+d29ya2VyX2NvbnRleHQpPj4gKyAgICAgICAgICAgIGdfbWFpbl9jb250ZXh0 X3VucmVmKGlvdGhyZWFkLT53b3JrZXJfY29udGV4dCk+PiArICAgICAgICAgICAgaW90aHJlYWQt Pndvcmtlcl9jb250ZXh0ID0gTlVMTD4+ICsgICAgICAgIH0+PiAgICAgIH0+PiAgPj4gICAgICBy Y3VfdW5yZWdpc3Rlcl90aHJlYWQoKT4+IEBAIC03Myw2ICs4Nyw5IEBAIHN0YXRpYyBpbnQgaW90 aHJlYWRfc3RvcChPYmplY3QgKm9iamVjdCwgdm9pZCAqb3BhcXVlKT4+ICAgICAgfT4+ICAgICAg aW90aHJlYWQtPnN0b3BwaW5nID0gdHJ1ZT4+ICAgICAgYWlvX25vdGlmeShpb3RocmVhZC0+Y3R4 KT4+ICsgICAgaWYgKGF0b21pY19yZWFkKCZpb3RocmVhZC0+bWFpbl9sb29wKSkgez4+ICsgICAg ICAgIGdfbWFpbl9sb29wX3F1aXQoaW90aHJlYWQtPm1haW5fbG9vcCk+PiArICAgIH0+PiAgICAg IHFlbXVfdGhyZWFkX2pvaW4oJmlvdGhyZWFkLT50aHJlYWQpPj4gICAgICByZXR1cm4gMD4+ICB9 DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQrljp/lp4vpgq7ku7YNCg0KDQoNCuWPkeS7 tuS6uu+8miA8ZmFtekByZWRoYXQuY29tPg0K5pS25Lu25Lq677ya546L5YuHMTAxNzA1MzANCuaK hOmAgeS6uu+8miA8cGJvbnppbmlAcmVkaGF0LmNvbT4gPHN0ZWZhbmhhQHJlZGhhdC5jb20+IDxq YXNvd2FuZ0ByZWRoYXQuY29tPiA8emhhbmdjaGVuLmZuc3RAY24uZnVqaXRzdS5jb20+IDx6aGFu Zy56aGFuZ2hhaWxpYW5nQGh1YXdlaS5jb20+546L5bm/MTAxNjU5OTIgPGxpemhpamlhbkBjbi5m dWppdHN1LmNvbT4gPHFlbXUtZGV2ZWxAbm9uZ251Lm9yZz4NCuaXpSDmnJ8g77yaMjAxN+W5tDA4 5pyIMjLml6UgMTc6NTINCuS4uyDpopgg77yaUmU6IFtQQVRDSHY0IDAxLzAzXSBxZW11LWlvdGhy ZWFkOiBJT1RocmVhZCBzdXBwb3J0cyB0aGVHTWFpbkNvbnRleHQgZXZlbnQgbG9vcA0KDQoNCg0K DQoNCk9uIFR1ZSwgMDgvMjIgMTY6NDYsIFdhbmcgeW9uZyB3cm90ZToNCj4gRnJvbTogV2FuZyBZ b25nIDx3YW5nLnlvbmcxNTVAenRlLmNvbS5jbj4NCj4gDQo+IElPVGhyZWFkIHVzZXMgQWlvQ29u dGV4dCBldmVudCBsb29wIGFuZCBkb2VzIG5vdCBydW4gYSBHTWFpbkNvbnRleHQuDQo+IFRoZXJl Zm9yZSxjaGFyZGV2IGNhbm5vdCB3b3JrIGluIElPVGhyZWFkLHN1Y2ggYXMgdGhlIGNoYXJkZXYg aXMNCj4gdXNlZCBmb3IgY29sby1jb21wYXJlIHBhY2tldHMgcmVjZXB0aW9uLg0KPiANCj4gVGhp cyBwYXRjaCBtYWtlcyB0aGUgSU9UaHJlYWQgcnVuIHRoZSBHTWFpbkNvbnRleHQgZXZlbnQgbG9v cCwNCj4gY2hhcmRldiBhbmQgSU9UaHJlYWQgY2FuIHdvcmsgdG9nZXRoZXIuDQo+IA0KPiBTaWdu ZWQtb2ZmLWJ5OiBXYW5nIFlvbmcgPHdhbmcueW9uZzE1NUB6dGUuY29tLmNuPg0KPiBTaWduZWQt b2ZmLWJ5OiBXYW5nIEd1YW5nIDx3YW5nLmd1YW5nNTVAenRlLmNvbS5jbj4NCj4gLS0tDQo+ICBp bmNsdWRlL3N5c2VtdS9pb3RocmVhZC5oIHwgIDQgKysrKw0KPiAgaW90aHJlYWQuYyAgICAgICAg ICAgICAgICB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN Cj4gIDIgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKQ0KPiANCj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvc3lzZW11L2lvdGhyZWFkLmggYi9pbmNsdWRlL3N5c2VtdS9pb3RocmVhZC5oDQo+ IGluZGV4IGU2ZGExYTQuLmQyOTg1YjMgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvc3lzZW11L2lv dGhyZWFkLmgNCj4gKysrIGIvaW5jbHVkZS9zeXNlbXUvaW90aHJlYWQuaA0KPiBAQCAtMjQsNiAr MjQsOSBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICANCj4gICAgICBRZW11VGhyZWFkIHRocmVhZA0K PiAgICAgIEFpb0NvbnRleHQgKmN0eA0KPiArICAgIEdNYWluQ29udGV4dCAqd29ya2VyX2NvbnRl eHQNCj4gKyAgICBHTWFpbkxvb3AgKm1haW5fbG9vcA0KPiArICAgIEdPbmNlIG9uY2UNCj4gICAg ICBRZW11TXV0ZXggaW5pdF9kb25lX2xvY2sNCj4gICAgICBRZW11Q29uZCBpbml0X2RvbmVfY29u ZCAgICAvKiBpcyB0aHJlYWQgaW5pdGlhbGl6YXRpb24gZG9uZT8gKi8NCj4gICAgICBib29sIHN0 b3BwaW5nDQo+IEBAIC00MSw1ICs0NCw2IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gIGNoYXIgKmlv dGhyZWFkX2dldF9pZChJT1RocmVhZCAqaW90aHJlYWQpDQo+ICBBaW9Db250ZXh0ICppb3RocmVh ZF9nZXRfYWlvX2NvbnRleHQoSU9UaHJlYWQgKmlvdGhyZWFkKQ0KPiAgdm9pZCBpb3RocmVhZF9z dG9wX2FsbCh2b2lkKQ0KPiArR01haW5Db250ZXh0ICppb3RocmVhZF9nZXRfZ19tYWluX2NvbnRl eHQoSU9UaHJlYWQgKmlvdGhyZWFkKQ0KPiAgDQo+ICAjZW5kaWYgLyogSU9USFJFQURfSCAqLw0K PiBkaWZmIC0tZ2l0IGEvaW90aHJlYWQuYyBiL2lvdGhyZWFkLmMNCj4gaW5kZXggYmVlYjg3MC4u ZmIxYzU1YiAxMDA2NDQNCj4gLS0tIGEvaW90aHJlYWQuYw0KPiArKysgYi9pb3RocmVhZC5jDQo+ IEBAIC01Nyw2ICs1NywyMCBAQCBzdGF0aWMgdm9pZCAqaW90aHJlYWRfcnVuKHZvaWQgKm9wYXF1 ZSkNCj4gIA0KPiAgICAgIHdoaWxlICghYXRvbWljX3JlYWQoJmlvdGhyZWFkLT5zdG9wcGluZykp IHsNCj4gICAgICAgICAgYWlvX3BvbGwoaW90aHJlYWQtPmN0eCwgdHJ1ZSkNCj4gKw0KPiArICAg ICAgICBpZiAoYXRvbWljX3JlYWQoJmlvdGhyZWFkLT53b3JrZXJfY29udGV4dCkpIHsNCj4gKyAg ICAgICAgICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQoaW90aHJlYWQtPndv cmtlcl9jb250ZXh0KQ0KPiArICAgICAgICAgICAgaW90aHJlYWQtPm1haW5fbG9vcCA9DQo+ICsg ICAgICAgICAgICAgICAgZ19tYWluX2xvb3BfbmV3KGlvdGhyZWFkLT53b3JrZXJfY29udGV4dCwg VFJVRSkNCj4gKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3J1bihpb3RocmVhZC0+bWFpbl9sb29w KQ0KPiArDQo+ICsgICAgICAgICAgICBnX21haW5fbG9vcF91bnJlZihpb3RocmVhZC0+bWFpbl9s b29wKQ0KPiArICAgICAgICAgICAgaW90aHJlYWQtPm1haW5fbG9vcCA9IE5VTEwNCg0KWW91IHNo b3VsZCBjbGVhciBpb3RocmVhZC0+bWFpbl9sb29wIGZpcnN0IGJlZm9yZSBjYWxsaW5nIGdfbWFp bl9sb29wX3VucmVmKCksDQp0byBhdm9pZCBUT0NUT1UgcmFjZSB3aXRoIGlvdGhyZWFkX3N0b3Ao KToNCg0KICBpb3RocmVhZF9ydW4gKGluIElPVGhyZWFkKSAgICAgICAgICBpb3RocmVhZF9zdG9w IChpbiBtYWluIHRocmVhZCkNCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChhdG9taWNfcmVhZCgmaW90aHJlYWQtPm1haW5fbG9vcCkp IHsNCiAgLyogZnJlZXMgaW90aHJlYWQtPm1haW5fbG9vcCAqLw0KICBnX21haW5fbG9vcF91bnJl ZiguLi4pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBY2Nl c3NlcyBmcmVlZCBtZW1vcnkgKi8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdfbWFpbl9sb29wX3F1aXQoaW90aHJlYWQtPm1haW5fbG9vcCkNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICBpb3RocmVhZC0+bWFpbl9sb29wID0gTlVM TA0KDQoNCj4gKw0KPiArICAgICAgICAgICAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZh dWx0KGlvdGhyZWFkLT53b3JrZXJfY29udGV4dCkNCj4gKyAgICAgICAgICAgIGdfbWFpbl9jb250 ZXh0X3VucmVmKGlvdGhyZWFkLT53b3JrZXJfY29udGV4dCkNCj4gKyAgICAgICAgICAgIGlvdGhy ZWFkLT53b3JrZXJfY29udGV4dCA9IE5VTEwNCj4gKyAgICAgICAgfQ0KPiAgICAgIH0NCj4gIA0K PiAgICAgIHJjdV91bnJlZ2lzdGVyX3RocmVhZCgpDQo+IEBAIC03Myw2ICs4Nyw5IEBAIHN0YXRp YyBpbnQgaW90aHJlYWRfc3RvcChPYmplY3QgKm9iamVjdCwgdm9pZCAqb3BhcXVlKQ0KPiAgICAg IH0NCj4gICAgICBpb3RocmVhZC0+c3RvcHBpbmcgPSB0cnVlDQo+ICAgICAgYWlvX25vdGlmeShp b3RocmVhZC0+Y3R4KQ0KPiArICAgIGlmIChhdG9taWNfcmVhZCgmaW90aHJlYWQtPm1haW5fbG9v cCkpIHsNCj4gKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChpb3RocmVhZC0+bWFpbl9sb29wKQ0K PiArICAgIH0NCj4gICAgICBxZW11X3RocmVhZF9qb2luKCZpb3RocmVhZC0+dGhyZWFkKQ0KPiAg ICAgIHJldHVybiAwDQo+ICB9DQo+IEBAIC0xMjUsNiArMTQyLDcgQEAgc3RhdGljIHZvaWQgaW90 aHJlYWRfY29tcGxldGUoVXNlckNyZWF0YWJsZSAqb2JqLCBFcnJvciAqKmVycnApDQo+ICANCj4g ICAgICBxZW11X211dGV4X2luaXQoJmlvdGhyZWFkLT5pbml0X2RvbmVfbG9jaykNCj4gICAgICBx ZW11X2NvbmRfaW5pdCgmaW90aHJlYWQtPmluaXRfZG9uZV9jb25kKQ0KPiArICAgIGlvdGhyZWFk LT5vbmNlID0gKEdPbmNlKSBHX09OQ0VfSU5JVA0KDQpQbGVhc2UgcmVtb3ZlIHRoZSB1bm5lY2Vz c2FyeSB0eXBlIGNhc3QuDQoNCj4gIA0KPiAgICAgIC8qIFRoaXMgYXNzdW1lcyB3ZSBhcmUgY2Fs bGVkIGZyb20gYSB0aHJlYWQgd2l0aCB1c2VmdWwgQ1BVIGFmZmluaXR5IGZvciB1cw0KPiAgICAg ICAqIHRvIGluaGVyaXQuDQo+IEBAIC0zMDksMyArMzI3LDI4IEBAIHZvaWQgaW90aHJlYWRfc3Rv cF9hbGwodm9pZCkNCj4gIA0KPiAgICAgIG9iamVjdF9jaGlsZF9mb3JlYWNoKGNvbnRhaW5lciwg aW90aHJlYWRfc3RvcCwgTlVMTCkNCj4gIH0NCj4gKw0KPiArc3RhdGljIGdwb2ludGVyIGlvdGhy ZWFkX2dfbWFpbl9jb250ZXh0X2luaXQoZ3BvaW50ZXIgb3BhcXVlKQ0KPiArew0KPiArICAgIEFp b0NvbnRleHQgKmN0eA0KPiArICAgIElPVGhyZWFkICppb3RocmVhZCA9IG9wYXF1ZQ0KPiArICAg IEdTb3VyY2UgKnNvdXJjZQ0KPiArDQo+ICsgICAgaW90aHJlYWQtPndvcmtlcl9jb250ZXh0ID0g Z19tYWluX2NvbnRleHRfbmV3KCkNCj4gKw0KPiArICAgIGN0eCA9IGlvdGhyZWFkX2dldF9haW9f Y29udGV4dChpb3RocmVhZCkNCj4gKyAgICBzb3VyY2UgPSBhaW9fZ2V0X2dfc291cmNlKGN0eCkN Cj4gKyAgICBnX3NvdXJjZV9hdHRhY2goc291cmNlLCBpb3RocmVhZC0+d29ya2VyX2NvbnRleHQp DQo+ICsgICAgZ19zb3VyY2VfdW5yZWYoc291cmNlKQ0KPiArDQo+ICsgICAgYWlvX25vdGlmeShp b3RocmVhZC0+Y3R4KQ0KPiArDQo+ICsgICAgcmV0dXJuIE5VTEwNCj4gK30NCj4gKw0KPiArR01h aW5Db250ZXh0ICppb3RocmVhZF9nZXRfZ19tYWluX2NvbnRleHQoSU9UaHJlYWQgKmlvdGhyZWFk KQ0KPiArew0KPiArICAgIGdfb25jZSgmaW90aHJlYWQtPm9uY2UsIGlvdGhyZWFkX2dfbWFpbl9j b250ZXh0X2luaXQsIGlvdGhyZWFkKQ0KPiArDQo+ICsgICAgcmV0dXJuIGlvdGhyZWFkLT53b3Jr ZXJfY29udGV4dA0KPiArfQ0KPiAtLSANCj4gMS44LjMuMQ0KPiANCj4gDQoNCkZhbQ==