From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96DCAC433F5 for ; Tue, 15 Mar 2022 09:35:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346674AbiCOJhD (ORCPT ); Tue, 15 Mar 2022 05:37:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57734 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346667AbiCOJg4 (ORCPT ); Tue, 15 Mar 2022 05:36:56 -0400 Received: from mail.sberdevices.ru (mail.sberdevices.ru [45.89.227.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 278EE4BFF7; Tue, 15 Mar 2022 02:35:40 -0700 (PDT) Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mail.sberdevices.ru (Postfix) with ESMTP id 350F05FD03; Tue, 15 Mar 2022 12:35:37 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1647336937; bh=5lleN0NMqfndgTaBLwC9lBerAn5s7CCWLSFoxJtu/XU=; h=From:To:Subject:Date:Message-ID:Content-Type:MIME-Version; b=ecvqACvLqLQatQ2IL9B94g67Mf94sl1OquUZVM5VMXMn0G94Gclbc/LFnxTX5alB0 pi9K74Yo+QLl4RYLRTrGai13673M4EfBPqYC7td3PZH7TWx98LIX0Sf3srbobbKg+f j4z4rwau9Db8qK4gDtYeG9OqrAQDpcqpf2UIJ666I0u/VW2NFaqIO+ptaW5dD5ewh2 VT7GRPNUSU2aOuid+xMAcNbyxFvqd5HuiZlDD44MuKoTdferqhWlJeKfAQVE8RHwyt IkMpqEh33VtIeuHUcDglNlm1kMTbqs3u0FKwY5yi+6c3ycADsMyPU9IWOfUPIoRlkW 3Yz7+XV2D8UlQ== Received: from S-MS-EXCH02.sberdevices.ru (S-MS-EXCH02.sberdevices.ru [172.16.1.5]) by mail.sberdevices.ru (Postfix) with ESMTP; Tue, 15 Mar 2022 12:35:33 +0300 (MSK) From: Krasnov Arseniy Vladimirovich To: Stefano Garzarella CC: Krasnov Arseniy , Rokosov Dmitry Dmitrievich , "kvm@vger.kernel.org" , "virtualization@lists.linux-foundation.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [RFC PATCH v1 3/3] af_vsock: SOCK_SEQPACKET broken buffer test Thread-Topic: [RFC PATCH v1 3/3] af_vsock: SOCK_SEQPACKET broken buffer test Thread-Index: AQHYNTbvjWQnm44js0u5mxZaYZpaaay/8sGAgAAQfoA= Date: Tue, 15 Mar 2022 09:34:35 +0000 Message-ID: References: <1bb5ce91-da53-7de9-49ba-f49f76f45512@sberdevices.ru> <20220315083617.n33naazzf3se4ozo@sgarzare-redhat> In-Reply-To: <20220315083617.n33naazzf3se4ozo@sgarzare-redhat> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.16.1.12] Content-Type: text/plain; charset="utf-8" Content-ID: <6D3F15C30535AD47BD5CB92A8FB98BAC@sberdevices.ru> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2022/03/15 06:52:00 #18973197 X-KSMG-AntiVirus-Status: Clean, skipped Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTUuMDMuMjAyMiAxMTozNiwgU3RlZmFubyBHYXJ6YXJlbGxhIHdyb3RlOg0KPiBPbiBGcmks IE1hciAxMSwgMjAyMiBhdCAxMDo1ODozMkFNICswMDAwLCBLcmFzbm92IEFyc2VuaXkgVmxhZGlt aXJvdmljaCB3cm90ZToNCj4+IEFkZCB0ZXN0IHdoZXJlIHNlbmRlciBzZW5kcyB0d28gbWVzc2Fn ZSwgZWFjaCB3aXRoIG93bg0KPj4gZGF0YSBwYXR0ZXJuLiBSZWFkZXIgdHJpZXMgdG8gcmVhZCBm aXJzdCB0byBicm9rZW4gYnVmZmVyOg0KPj4gaXQgaGFzIHRocmVlIHBhZ2VzIHNpemUsIGJ1dCBt aWRkbGUgcGFnZSBpcyB1bm1hcHBlZC4gVGhlbiwNCj4+IHJlYWRlciB0cmllcyB0byByZWFkIHNl Y29uZCBtZXNzYWdlIHRvIHZhbGlkIGJ1ZmZlci4gVGVzdA0KPj4gY2hlY2tzLCB0aGF0IHVuY29w aWVkIHBhcnQgb2YgZmlyc3QgbWVzc2FnZSB3YXMgZHJvcHBlZA0KPj4gYW5kIHRodXMgbm90IGNv cGllZCBhcyBwYXJ0IG9mIHNlY29uZCBtZXNzYWdlLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IEFy c2VuaXkgS3Jhc25vdiA8QVZLcmFzbm92QHNiZXJkZXZpY2VzLnJ1Pg0KPj4gLS0tDQo+PiB0b29s cy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3Rlc3QuYyB8IDEyMSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQo+PiAxIGZpbGUgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKykNCj4+DQo+PiBk aWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy92c29jay92c29ja190ZXN0LmMgYi90b29scy90ZXN0 aW5nL3Zzb2NrL3Zzb2NrX3Rlc3QuYw0KPj4gaW5kZXggYWEyZGUyN2QwZjc3Li42ODZhZjcxMmI0 YWQgMTAwNjQ0DQo+PiAtLS0gYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3Rlc3QuYw0KPj4g KysrIGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja190ZXN0LmMNCj4+IEBAIC0xNiw2ICsxNiw3 IEBADQo+PiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQo+PiAjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+DQo+PiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KPj4gKyNpbmNsdWRlIDxzeXMvbW1hbi5o Pg0KPj4NCj4+ICNpbmNsdWRlICJ0aW1lb3V0LmgiDQo+PiAjaW5jbHVkZSAiY29udHJvbC5oIg0K Pj4gQEAgLTQzNSw2ICs0MzYsMTIxIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2VxcGFja2V0X3RpbWVv dXRfc2VydmVyKGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9wdHMpDQo+PiDCoMKgwqDCoGNsb3Nl KGZkKTsNCj4+IH0NCj4+DQo+PiArI2RlZmluZSBCVUZfUEFUVEVSTl8xICdhJw0KPj4gKyNkZWZp bmUgQlVGX1BBVFRFUk5fMiAnYicNCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCB0ZXN0X3NlcXBhY2tl dF9pbnZhbGlkX3JlY19idWZmZXJfY2xpZW50KGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9wdHMp DQo+PiArew0KPj4gK8KgwqDCoCBpbnQgZmQ7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGNoYXIgKmJ1 ZjE7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGNoYXIgKmJ1ZjI7DQo+PiArwqDCoMKgIGludCBidWZf c2l6ZSA9IGdldHBhZ2VzaXplKCkgKiAzOw0KPj4gKw0KPj4gK8KgwqDCoCBmZCA9IHZzb2NrX3Nl cXBhY2tldF9jb25uZWN0KG9wdHMtPnBlZXJfY2lkLCAxMjM0KTsNCj4+ICvCoMKgwqAgaWYgKGZk IDwgMCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIHBlcnJvcigiY29ubmVjdCIpOw0KPj4gK8KgwqDC oMKgwqDCoMKgIGV4aXQoRVhJVF9GQUlMVVJFKTsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8Kg wqDCoCBidWYxID0gbWFsbG9jKGJ1Zl9zaXplKTsNCj4+ICvCoMKgwqAgaWYgKGJ1ZjEgPT0gTlVM TCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIHBlcnJvcigiJ21hbGxvYygpJyBmb3IgJ2J1ZjEnIik7 DQo+PiArwqDCoMKgwqDCoMKgwqAgZXhpdChFWElUX0ZBSUxVUkUpOw0KPj4gK8KgwqDCoCB9DQo+ PiArDQo+PiArwqDCoMKgIGJ1ZjIgPSBtYWxsb2MoYnVmX3NpemUpOw0KPj4gK8KgwqDCoCBpZiAo YnVmMiA9PSBOVUxMKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgcGVycm9yKCInbWFsbG9jKCknIGZv ciAnYnVmMiciKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBleGl0KEVYSVRfRkFJTFVSRSk7DQo+PiAr wqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgbWVtc2V0KGJ1ZjEsIEJVRl9QQVRURVJOXzEsIGJ1 Zl9zaXplKTsNCj4+ICvCoMKgwqAgbWVtc2V0KGJ1ZjIsIEJVRl9QQVRURVJOXzIsIGJ1Zl9zaXpl KTsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKHNlbmQoZmQsIGJ1ZjEsIGJ1Zl9zaXplLCAwKSAhPSBi dWZfc2l6ZSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIHBlcnJvcigic2VuZCBmYWlsZWQiKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoCBleGl0KEVYSVRfRkFJTFVSRSk7DQo+PiArwqDCoMKgIH0NCj4+ICsN Cj4+ICvCoMKgwqAgaWYgKHNlbmQoZmQsIGJ1ZjIsIGJ1Zl9zaXplLCAwKSAhPSBidWZfc2l6ZSkg ew0KPj4gK8KgwqDCoMKgwqDCoMKgIHBlcnJvcigic2VuZCBmYWlsZWQiKTsNCj4+ICvCoMKgwqDC oMKgwqDCoCBleGl0KEVYSVRfRkFJTFVSRSk7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKg wqAgY2xvc2UoZmQpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCB0ZXN0X3NlcXBhY2tl dF9pbnZhbGlkX3JlY19idWZmZXJfc2VydmVyKGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9wdHMp DQo+PiArew0KPj4gK8KgwqDCoCBpbnQgZmQ7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGNoYXIgKmJy b2tlbl9idWY7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGNoYXIgKnZhbGlkX2J1ZjsNCj4+ICvCoMKg wqAgaW50IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7DQo+PiArwqDCoMKgIGludCBidWZfc2l6 ZSA9IHBhZ2Vfc2l6ZSAqIDM7DQo+PiArwqDCoMKgIHNzaXplX3QgcmVzOw0KPj4gK8KgwqDCoCBp bnQgcHJvdCA9IFBST1RfUkVBRCB8IFBST1RfV1JJVEU7DQo+PiArwqDCoMKgIGludCBmbGFncyA9 IE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUzsNCj4+ICvCoMKgwqAgaW50IGk7DQo+PiArDQo+ PiArwqDCoMKgIGZkID0gdnNvY2tfc2VxcGFja2V0X2FjY2VwdChWTUFERFJfQ0lEX0FOWSwgMTIz NCwgTlVMTCk7DQo+PiArwqDCoMKgIGlmIChmZCA8IDApIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBw ZXJyb3IoImFjY2VwdCIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGV4aXQoRVhJVF9GQUlMVVJFKTsN Cj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCAvKiBTZXR1cCBmaXJzdCBidWZmZXIuICov DQo+PiArwqDCoMKgIGJyb2tlbl9idWYgPSBtbWFwKE5VTEwsIGJ1Zl9zaXplLCBwcm90LCBmbGFn cywgLTEsIDApOw0KPj4gK8KgwqDCoCBpZiAoYnJva2VuX2J1ZiA9PSBNQVBfRkFJTEVEKSB7DQo+ PiArwqDCoMKgwqDCoMKgwqAgcGVycm9yKCJtbWFwIGZvciAnYnJva2VuX2J1ZiciKTsNCj4+ICvC oMKgwqDCoMKgwqDCoCBleGl0KEVYSVRfRkFJTFVSRSk7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ ICvCoMKgwqAgLyogVW5tYXAgImhvbGUiIGluIGJ1ZmZlci4gKi8NCj4+ICvCoMKgwqAgaWYgKG11 bm1hcChicm9rZW5fYnVmICsgcGFnZV9zaXplLCBwYWdlX3NpemUpKSB7DQo+PiArwqDCoMKgwqDC oMKgwqAgcGVycm9yKCInYnJva2VuX2J1Zicgc2V0dXAiKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBl eGl0KEVYSVRfRkFJTFVSRSk7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgdmFsaWRf YnVmID0gbW1hcChOVUxMLCBidWZfc2l6ZSwgcHJvdCwgZmxhZ3MsIC0xLCAwKTsNCj4+ICvCoMKg wqAgaWYgKHZhbGlkX2J1ZiA9PSBNQVBfRkFJTEVEKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgcGVy cm9yKCJtbWFwIGZvciAndmFsaWRfYnVmJyIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGV4aXQoRVhJ VF9GQUlMVVJFKTsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCAvKiBUcnkgdG8gZmls bCBidWZmZXIgd2l0aCB1bm1hcHBlZCBtaWRkbGUuICovDQo+PiArwqDCoMKgIHJlcyA9IHJlYWQo ZmQsIGJyb2tlbl9idWYsIGJ1Zl9zaXplKTsNCj4+ICvCoMKgwqAgaWYgKHJlcyAhPSAtMSkgew0K Pj4gK8KgwqDCoMKgwqDCoMKgIHBlcnJvcigiaW52YWxpZCByZWFkIHJlc3VsdCBvZiAnYnJva2Vu X2J1ZiciKTsNCj4gDQo+IGlmIGByZXNgIGlzIHZhbGlkLCBlcnJubyBpcyBub3Qgc2V0LCBiZXR0 ZXIgdG8gdXNlIGZwcmludGYoc3RkZXJyLCAuLi4pIHByaW50aW5nIHRoZSBleHBlY3RlZCBhbmQg cmVjZWl2ZWQgcmVzdWx0Lg0KPiBUYWtlIGEgbG9vayBhdCB0ZXN0X3N0cmVhbV9jb25uZWN0aW9u X3Jlc2V0KCkNCg0KQWNrLCBmaXggaXQgaW4gdjINCg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoCBl eGl0KEVYSVRfRkFJTFVSRSk7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgaWYgKGVy cm5vICE9IEVOT01FTSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIHBlcnJvcigiaW52YWxpZCBlcnJu byBvZiAnYnJva2VuX2J1ZiciKTsNCj4gDQo+IEluc3RlYWQgb2YgImludmFsaWQiLCBJIHdvdWxk IHNheSAidW5leHBlY3RlZCIuDQoNCkFjaw0KDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgIGV4aXQo RVhJVF9GQUlMVVJFKTsNCj4+ICvCoMKgwqAgfQ0KPiANCj4gDQo+PiArDQo+PiArwqDCoMKgIC8q IFRyeSB0byBmaWxsIHZhbGlkIGJ1ZmZlci4gKi8NCj4+ICvCoMKgwqAgcmVzID0gcmVhZChmZCwg dmFsaWRfYnVmLCBidWZfc2l6ZSk7DQo+PiArwqDCoMKgIGlmIChyZXMgIT0gYnVmX3NpemUpIHsN Cj4+ICvCoMKgwqDCoMKgwqDCoCBwZXJyb3IoImludmFsaWQgcmVhZCByZXN1bHQgb2YgJ3ZhbGlk X2J1ZiciKTsNCj4gDQo+IEkgd291bGQgc3BsaXQgaW4gMiBjaGVja3M6DQo+IC0gKHJlcyA8IDAp IHRoZW4gdXNlIHBlcnJvcigpDQo+IC0gKHJlcyAhPSBidWZfc2l6ZSkgdGhlbiB1c2UgZnByaW50 ZihzdGRlcnIsIC4uLikgcHJpbnRpbmcgdGhlIGV4cGVjdGVkIMKgIGFuZCByZWNlaXZlZCByZXN1 bHQuDQoNCkFjaw0KDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgIGV4aXQoRVhJVF9GQUlMVVJFKTsN Cj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgYnVmX3NpemU7 IGkrKykgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmICh2YWxpZF9idWZbaV0gIT0gQlVGX1BBVFRF Uk5fMikgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGVycm9yKCJpbnZhbGlkIHBhdHRl cm4gZm9yIHZhbGlkIGJ1ZiIpOw0KPiANCj4gZXJybm8gaXMgbm90IHNldCBoZXJlLCBiZXR0ZXIg dG8gdXNlIGZwcmludGYoc3RkZXJyLCAuLi4pDQoNCkFjaw0KDQo+IA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZXhpdChFWElUX0ZBSUxVUkUpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+ ICvCoMKgwqAgfQ0KPiANCj4gV2hhdCBhYm91dCByZXBsYWNlIHRoaXMgZm9yIHdpdGggYSBtZW1j bXAoKT8NCg0KQWNrDQoNCj4gDQo+PiArDQo+PiArDQo+PiArwqDCoMKgIC8qIFVubWFwIGJ1ZmZl cnMuICovDQo+PiArwqDCoMKgIG11bm1hcChicm9rZW5fYnVmLCBwYWdlX3NpemUpOw0KPj4gK8Kg wqDCoCBtdW5tYXAoYnJva2VuX2J1ZiArIHBhZ2Vfc2l6ZSAqIDIsIHBhZ2Vfc2l6ZSk7DQo+PiAr wqDCoMKgIG11bm1hcCh2YWxpZF9idWYsIGJ1Zl9zaXplKTsNCj4+ICvCoMKgwqAgY2xvc2UoZmQp Ow0KPj4gK30NCj4+ICsNCj4+IHN0YXRpYyBzdHJ1Y3QgdGVzdF9jYXNlIHRlc3RfY2FzZXNbXSA9 IHsNCj4+IMKgwqDCoMKgew0KPj4gwqDCoMKgwqDCoMKgwqAgLm5hbWUgPSAiU09DS19TVFJFQU0g Y29ubmVjdGlvbiByZXNldCIsDQo+PiBAQCAtNDgwLDYgKzU5NiwxMSBAQCBzdGF0aWMgc3RydWN0 IHRlc3RfY2FzZSB0ZXN0X2Nhc2VzW10gPSB7DQo+PiDCoMKgwqDCoMKgwqDCoCAucnVuX2NsaWVu dCA9IHRlc3Rfc2VxcGFja2V0X3RpbWVvdXRfY2xpZW50LA0KPj4gwqDCoMKgwqDCoMKgwqAgLnJ1 bl9zZXJ2ZXIgPSB0ZXN0X3NlcXBhY2tldF90aW1lb3V0X3NlcnZlciwNCj4+IMKgwqDCoMKgfSwN Cj4+ICvCoMKgwqAgew0KPj4gK8KgwqDCoMKgwqDCoMKgIC5uYW1lID0gIlNPQ0tfU0VRUEFDS0VU IGludmFsaWQgcmVjZWl2ZSBidWZmZXIiLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5ydW5fY2xpZW50 ID0gdGVzdF9zZXFwYWNrZXRfaW52YWxpZF9yZWNfYnVmZmVyX2NsaWVudCwNCj4+ICvCoMKgwqDC oMKgwqDCoCAucnVuX3NlcnZlciA9IHRlc3Rfc2VxcGFja2V0X2ludmFsaWRfcmVjX2J1ZmZlcl9z ZXJ2ZXIsDQo+PiArwqDCoMKgIH0sDQo+IA0KPiANCj4gSXMgdGhpcyB0aGUgcmlnaHQgYmVoYXZp b3I/IElmIHJlYWQoKSBmYWlscyBiZWNhdXNlIHRoZSBidWZmZXIgaXMgaW52YWxpZCwgZG8gd2Ug dGhyb3cgb3V0IHRoZSB3aG9sZSBwYWNrZXQ/DQo+IA0KPiBJIHdhcyBleHBlY3RpbmcgdGhlIHBh Y2tldCBub3QgdG8gYmUgY29uc3VtZWQsIGhhdmUgeW91IHRyaWVkIEFGX1VOSVgsIGRvZXMgaXQg aGF2ZSB0aGUgc2FtZSBiZWhhdmlvcj8NCg0KSSd2ZSBqdXN0IGNoZWNrZWQgQUZfVU5JWCBpbXBs ZW1lbnRhdGlvbiBvZiBTRVFQQUNLRVQgcmVjZWl2ZSBpbiBuZXQvdW5peC9hZl91bml4LmMuIFNv LCBpZiAnc2tiX2NvcHlfZGF0YWdyYW1fbXNnKCknDQpmYWlscywgaXQgY2FsbHMgJ3NrYl9mcmVl X2RhdGFncmFtKCknLiBJIHRoaW5rIHRoaXMgbWVhbnMgdGhhdCB3aG9sZSBzayBidWZmIHdpbGwg YmUgZHJvcHBlZCwgYnV0IGFueXdheSwgaSdsbCBjaGVjaw0KdGhpcyBiZWhhdmlvdXIgaW4gcHJh Y3RpY2UuIFNlZSAnX191bml4X2RncmFtX3JlY3Ztc2coKScgaW4gbmV0L3VuaXgvYWZfdW5peC5j Lg0KDQoNCj4gDQo+IFRoYW5rcywNCj4gU3RlZmFubw0KPiANCg0K