From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 26C75A0096 for ; Tue, 4 Jun 2019 04:02:36 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3B1E21B970; Tue, 4 Jun 2019 04:02:35 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 419431B96E for ; Tue, 4 Jun 2019 04:02:33 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Jun 2019 19:02:32 -0700 X-ExtLoop1: 1 Received: from kmsmsx152.gar.corp.intel.com ([172.21.73.87]) by orsmga007.jf.intel.com with ESMTP; 03 Jun 2019 19:02:30 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.93]) by KMSMSX152.gar.corp.intel.com ([169.254.11.224]) with mapi id 14.03.0415.000; Tue, 4 Jun 2019 10:02:26 +0800 From: "Zhao1, Wei" To: Aaron Conole , "Yang, Qiming" CC: "Zhang, Qi Z" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH 1/2] net/ice: enable switch filter Thread-Index: AQHVGi74t5PI516iGEemnZJgnav7iKaKvoyQ Date: Tue, 4 Jun 2019 02:02:25 +0000 Message-ID: References: <1559552722-8970-1-git-send-email-qiming.yang@intel.com> <1559552722-8970-2-git-send-email-qiming.yang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [172.30.20.205] Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 1/2] net/ice: enable switch filter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGmjrHFpbWluZw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFhcm9u IENvbm9sZSBbbWFpbHRvOmFjb25vbGVAcmVkaGF0LmNvbV0NCj4gU2VudDogVHVlc2RheSwgSnVu ZSA0LCAyMDE5IDE6MDggQU0NCj4gVG86IFlhbmcsIFFpbWluZyA8cWltaW5nLnlhbmdAaW50ZWwu Y29tPg0KPiBDYzogWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPjsgZGV2QGRwZGsu b3JnOyBaaGFvMSwgV2VpDQo+IDx3ZWkuemhhbzFAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTog W2RwZGstZGV2XSBbUEFUQ0ggMS8yXSBuZXQvaWNlOiBlbmFibGUgc3dpdGNoIGZpbHRlcg0KPiAN Cj4gUWltaW5nIFlhbmcgPHFpbWluZy55YW5nQGludGVsLmNvbT4gd3JpdGVzOg0KPiANCj4gPiBG cm9tOiB3ZWkgemhhbyA8d2VpLnpoYW8xQGludGVsLmNvbT4NCj4gPg0KPiA+IFRoZSBwYXRjaCBl bmFibGVzIHRoZSBiYWNrZW5kIG9mIHJ0ZV9mbG93LiBJdCB0cmFuc2ZlcnMgcnRlX2Zsb3dfeHh4 DQo+ID4gdG8gZGV2aWNlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlIGFuZCBjb25maWd1cmVzIHBh Y2tldCBwcm9jZXNzDQo+ID4gZW5naW5lJ3MgYmluYXJ5IGNsYXNzaWZpZXINCj4gPiAoc3dpdGNo KSBwcm9wZXJseS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFdlaSBaaGFvIDx3ZWkuemhhbzFA aW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL25ldC9pY2UvTWFrZWZpbGUgICAgICAg ICAgICB8ICAgMSArDQo+ID4gIGRyaXZlcnMvbmV0L2ljZS9pY2VfZXRoZGV2LmggICAgICAgIHwg ICA2ICsNCj4gPiAgZHJpdmVycy9uZXQvaWNlL2ljZV9zd2l0Y2hfZmlsdGVyLmMgfCA1MDINCj4g PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgZHJpdmVycy9uZXQv aWNlL2ljZV9zd2l0Y2hfZmlsdGVyLmggfCAgMjggKysNCj4gPiAgZHJpdmVycy9uZXQvaWNlL21l c29uLmJ1aWxkICAgICAgICAgfCAgIDEgKw0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDUzOCBpbnNl cnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9pY2UvaWNlX3N3 aXRjaF9maWx0ZXIuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvaWNlL2lj ZV9zd2l0Y2hfZmlsdGVyLmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pY2Uv TWFrZWZpbGUgYi9kcml2ZXJzL25ldC9pY2UvTWFrZWZpbGUgaW5kZXgNCj4gPiAwZTVjNTVlLi5i MTBkODI2IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2ljZS9NYWtlZmlsZQ0KPiA+ICsr KyBiL2RyaXZlcnMvbmV0L2ljZS9NYWtlZmlsZQ0KPiA+IEBAIC02MCw2ICs2MCw3IEBAIGlmZXEg KCQoQ09ORklHX1JURV9BUkNIX1g4NiksIHkpDQo+ID4gIFNSQ1MtJChDT05GSUdfUlRFX0xJQlJU RV9JQ0VfUE1EKSArPSBpY2Vfcnh0eF92ZWNfc3NlLmMgIGVuZGlmDQo+ID4NCj4gPiArU1JDUy0k KENPTkZJR19SVEVfTElCUlRFX0lDRV9QTUQpICs9IGljZV9zd2l0Y2hfZmlsdGVyLmMNCj4gPiAg aWZlcSAoJChmaW5kc3RyaW5nDQo+IFJURV9NQUNISU5FX0NQVUZMQUdfQVZYMiwkKENGTEFHUykp LFJURV9NQUNISU5FX0NQVUZMQUdfQVZYMikNCj4gPiAgCUNDX0FWWDJfU1VQUE9SVD0xDQo+ID4g IGVsc2UNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWNlL2ljZV9ldGhkZXYuaA0KPiA+ IGIvZHJpdmVycy9uZXQvaWNlL2ljZV9ldGhkZXYuaCBpbmRleCAxMzg1YWZhLi42N2EzNThhIDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2ljZS9pY2VfZXRoZGV2LmgNCj4gPiArKysgYi9k cml2ZXJzL25ldC9pY2UvaWNlX2V0aGRldi5oDQo+ID4gQEAgLTIzNCw2ICsyMzQsMTIgQEAgc3Ry dWN0IGljZV92c2kgew0KPiA+ICAJYm9vbCBvZmZzZXRfbG9hZGVkOw0KPiA+ICB9Ow0KPiA+DQo+ ID4gKy8qIFN0cnVjdCB0byBzdG9yZSBmbG93IGNyZWF0ZWQuICovDQo+ID4gK3N0cnVjdCBydGVf ZmxvdyB7DQo+ID4gKwlUQUlMUV9FTlRSWShydGVfZmxvdykgbm9kZTsNCj4gPiArdm9pZCAqcnVs ZTsNCj4gPiArfTsNCj4gPiArDQo+ID4gIHN0cnVjdCBpY2VfcGYgew0KPiA+ICAJc3RydWN0IGlj ZV9hZGFwdGVyICphZGFwdGVyOyAvKiBUaGUgYWRhcHRlciB0aGlzIFBGIGFzc29jaWF0ZSB0byAq Lw0KPiA+ICAJc3RydWN0IGljZV92c2kgKm1haW5fdnNpOyAvKiBwb2ludGVyIHRvIG1haW4gVlNJ IHN0cnVjdHVyZSAqLyBkaWZmDQo+ID4gLS1naXQgYS9kcml2ZXJzL25ldC9pY2UvaWNlX3N3aXRj aF9maWx0ZXIuYw0KPiA+IGIvZHJpdmVycy9uZXQvaWNlL2ljZV9zd2l0Y2hfZmlsdGVyLmMNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLmYyZTc3NTENCj4gPiAt LS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvaWNlL2ljZV9zd2l0Y2hfZmlsdGVy LmMNCj4gPiBAQCAtMCwwICsxLDUwMiBAQA0KPiA+ICsjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+DQo+ ID4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiA+ICsjaW5jbHVkZSA8ZXJybm8uaD4NCj4gPiArI2lu Y2x1ZGUgPHN0ZGludC5oPg0KPiA+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ID4gKyNpbmNsdWRl IDx1bmlzdGQuaD4NCj4gPiArI2luY2x1ZGUgPHN0ZGFyZy5oPg0KPiA+ICsNCj4gPiArI2luY2x1 ZGUgPHJ0ZV9kZWJ1Zy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2V0aGVyLmg+DQo+ID4gKyNpbmNs dWRlIDxydGVfZXRoZGV2X2RyaXZlci5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2xvZy5oPg0KPiA+ ICsjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2V0aF9jdHJsLmg+ DQo+ID4gKyNpbmNsdWRlIDxydGVfdGFpbHEuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9mbG93X2Ry aXZlci5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImljZV9sb2dzLmgiDQo+ID4gKyNpbmNsdWRl ICJiYXNlL2ljZV90eXBlLmgiDQo+ID4gKyNpbmNsdWRlICJpY2Vfc3dpdGNoX2ZpbHRlci5oIg0K PiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtpY2VfcGFyc2Vfc3dpdGNoX2ZpbHRlcigNCj4g PiArCQkJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gcGF0dGVybltdLA0KPiA+ICsJCQljb25z dCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIGFjdGlvbnNbXSwNCj4gPiArCQkJc3RydWN0IHJ0ZV9m bG93X2Vycm9yICplcnJvciwNCj4gPiArCQkJc3RydWN0IGljZV9hZHZfcnVsZV9pbmZvICpydWxl X2luZm8sDQo+ID4gKwkJCXN0cnVjdCBpY2VfYWR2X2xrdXBfZWxlbSAqKmxrdXBfbGlzdCwNCj4g PiArCQkJdWludDE2X3QgKmxrdXBzX251bSkNCj4gPiArew0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0 ZV9mbG93X2l0ZW0gKml0ZW0gPSBwYXR0ZXJuOw0KPiA+ICsJZW51bSBydGVfZmxvd19pdGVtX3R5 cGUgaXRlbV90eXBlOw0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1fZXRoICpldGhf c3BlYywgKmV0aF9tYXNrOw0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1faXB2NCAq aXB2NF9zcGVjLCAqaXB2NF9tYXNrOw0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW1f aXB2NiAqaXB2Nl9zcGVjLCAqaXB2Nl9tYXNrOw0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9mbG93 X2l0ZW1fdGNwICp0Y3Bfc3BlYywgKnRjcF9tYXNrOw0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9m bG93X2l0ZW1fdWRwICp1ZHBfc3BlYywgKnVkcF9tYXNrOw0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0 ZV9mbG93X2l0ZW1fc2N0cCAqc2N0cF9zcGVjLCAqc2N0cF9tYXNrOw0KPiA+ICsJY29uc3Qgc3Ry dWN0IHJ0ZV9mbG93X2l0ZW1fbnZncmUgICpudmdyZV9zcGVjLCAqbnZncmVfbWFzazsNCj4gPiAr CWNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX3Z4bGFuICAqdnhsYW5fc3BlYywgKnZ4bGFuX21h c2s7DQo+ID4gKwlzdHJ1Y3QgaWNlX2Fkdl9sa3VwX2VsZW0gKmxpc3QgPSAqbGt1cF9saXN0Ow0K PiA+ICsJdWludDE2X3QgaSwgaiwgbGt1cHNfY250ID0gMDsNCj4gPiArCXVpbnQxNl90IGl0ZW1f bnVtID0gMDsNCj4gPiArCWVudW0gaWNlX3N3X3R1bm5lbF90eXBlIHR1bl90eXBlID0gSUNFX05P Tl9UVU47DQo+ID4gKw0KPiA+ICsJZm9yICg7IGl0ZW0tPnR5cGUgIT0gUlRFX0ZMT1dfSVRFTV9U WVBFX0VORDsgaXRlbSsrKSB7DQo+ID4gKwkJaWYgKGl0ZW0tPnR5cGUgPT0gUlRFX0ZMT1dfSVRF TV9UWVBFX0VUSCB8fA0KPiA+ICsJCQlpdGVtLT50eXBlID09IFJURV9GTE9XX0lURU1fVFlQRV9J UFY0IHx8DQo+ID4gKwkJCWl0ZW0tPnR5cGUgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX0lQVjYgfHwN Cj4gPiArCQkJaXRlbS0+dHlwZSA9PSBSVEVfRkxPV19JVEVNX1RZUEVfVURQIHx8DQo+ID4gKwkJ CWl0ZW0tPnR5cGUgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX1RDUCB8fA0KPiA+ICsJCQlpdGVtLT50 eXBlID09IFJURV9GTE9XX0lURU1fVFlQRV9TQ1RQIHx8DQo+ID4gKwkJCWl0ZW0tPnR5cGUgPT0g UlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOIHx8DQo+ID4gKwkJCWl0ZW0tPnR5cGUgPT0gUlRFX0ZM T1dfSVRFTV9UWVBFX05WR1JFKQ0KPiA+ICsJCQlpdGVtX251bSsrOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCWxpc3QgPSBydGVfem1hbGxvYyhOVUxMLCBpdGVtX251bSAqIHNpemVvZigqbGlzdCks IDApOw0KPiA+ICsJaWYgKCFsaXN0KSB7DQo+ID4gKwkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9y LCBFSU5WQUwsDQo+ID4gKwkJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sIGFjdGlvbnMs DQo+ID4gKwkJCQkgICAibm8gbWVtb3J5IG1hbGxvYyIpOw0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiArCWZvciAoaXRlbSA9IHBhdHRlcm4sIGkgPSAwOyBpdGVtLT50eXBl ICE9DQo+ID4gKwkJCVJURV9GTE9XX0lURU1fVFlQRV9FTkQ7IGl0ZW0rKywgaSsrKSB7DQo+ID4g KwkJaXRlbV90eXBlID0gaXRlbS0+dHlwZTsNCj4gPiArDQo+ID4gKwkJc3dpdGNoIChpdGVtX3R5 cGUpIHsNCj4gPiArCQljYXNlIFJURV9GTE9XX0lURU1fVFlQRV9FVEg6DQo+ID4gKwkJCWV0aF9z cGVjID0gaXRlbS0+c3BlYzsNCj4gPiArCQkJZXRoX21hc2sgPSBpdGVtLT5tYXNrOw0KPiA+ICsJ CQlpZiAoZXRoX3NwZWMgJiYgZXRoX21hc2spIHsNCj4gPiArCQkJCWxpc3RbaV0udHlwZSA9ICh0 dW5fdHlwZSA9PSBJQ0VfTk9OX1RVTikgPw0KPiA+ICsJCQkJCUlDRV9NQUNfT0ZPUyA6IElDRV9N QUNfSUw7DQo+ID4gKwkJCQlmb3IgKGogPSAwOyBqIDwgUlRFX0VUSEVSX0FERFJfTEVOOyBqKysp IHsNCj4gPiArCQkJCQlpZiAoZXRoX21hc2stPnNyYy5hZGRyX2J5dGVzW2pdID09DQo+ID4gKwkJ CQkJCQkJVUlOVDhfTUFYKSB7DQo+ID4gKwkJCQkJCWxpc3RbaV0uaF91LmV0aF9oZHIuDQo+ID4g KwkJCQkJCQlzcmNfYWRkcltqXSA9DQo+ID4gKwkJCQkJCWV0aF9zcGVjLT5zcmMuYWRkcl9ieXRl c1tqXTsNCj4gPiArCQkJCQkJbGlzdFtpXS5tX3UuZXRoX2hkci4NCj4gPiArCQkJCQkJCXNyY19h ZGRyW2pdID0NCj4gPiArCQkJCQkJZXRoX21hc2stPnNyYy5hZGRyX2J5dGVzW2pdOw0KPiA+ICsJ CQkJCX0NCj4gPiArCQkJCQlpZiAoZXRoX21hc2stPmRzdC5hZGRyX2J5dGVzW2pdID09DQo+ID4g KwkJCQkJCQkJVUlOVDhfTUFYKSB7DQo+ID4gKwkJCQkJCWxpc3RbaV0uaF91LmV0aF9oZHIuDQo+ ID4gKwkJCQkJCQlkc3RfYWRkcltqXSA9DQo+ID4gKwkJCQkJCWV0aF9zcGVjLT5kc3QuYWRkcl9i eXRlc1tqXTsNCj4gPiArCQkJCQkJbGlzdFtpXS5tX3UuZXRoX2hkci4NCj4gPiArCQkJCQkJCWRz dF9hZGRyW2pdID0NCj4gPiArCQkJCQkJZXRoX21hc2stPmRzdC5hZGRyX2J5dGVzW2pdOw0KPiA+ ICsJCQkJCX0NCj4gPiArCQkJCX0NCj4gPiArCQkJCWlmIChldGhfbWFzay0+dHlwZSA9PSBVSU5U MTZfTUFYKSB7DQo+ID4gKwkJCQkJbGlzdFtpXS5oX3UuZXRoX2hkci5ldGh0eXBlX2lkID0NCj4g PiArCQkJCQlydGVfYmVfdG9fY3B1XzE2KGV0aF9zcGVjLT50eXBlKTsNCj4gPiArCQkJCQlsaXN0 W2ldLm1fdS5ldGhfaGRyLmV0aHR5cGVfaWQgPQ0KPiA+ICsJCQkJCQlVSU5UMTZfTUFYOw0KPiA+ ICsJCQkJfQ0KPiA+ICsJCQkJbGt1cHNfY250Kys7DQo+ID4gKwkJCX0gZWxzZSBpZiAoIWV0aF9z cGVjICYmICFldGhfbWFzaykgew0KPiA+ICsJCQkJbGlzdFtpXS50eXBlID0gKHR1bl90eXBlID09 IElDRV9OT05fVFVOKSA/DQo+ID4gKwkJCQkJSUNFX01BQ19PRk9TIDogSUNFX01BQ19JTDsNCj4g PiArCQkJfQ0KPiA+ICsJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJY2FzZSBSVEVfRkxPV19JVEVN X1RZUEVfSVBWNDoNCj4gPiArCQkJaXB2NF9zcGVjID0gaXRlbS0+c3BlYzsNCj4gPiArCQkJaXB2 NF9tYXNrID0gaXRlbS0+bWFzazsNCj4gPiArCQkJaWYgKGlwdjRfc3BlYyAmJiBpcHY0X21hc2sp IHsNCj4gPiArCQkJCWxpc3RbaV0udHlwZSA9ICh0dW5fdHlwZSA9PSBJQ0VfTk9OX1RVTikgPw0K PiA+ICsJCQkJCUlDRV9JUFY0X09GT1MgOiBJQ0VfSVBWNF9JTDsNCj4gPiArCQkJCWlmIChpcHY0 X21hc2stPmhkci5zcmNfYWRkciA9PSBVSU5UMzJfTUFYKQ0KPiB7DQo+ID4gKwkJCQkJbGlzdFtp XS5oX3UuaXB2NF9oZHIuc3JjX2FkZHIgPQ0KPiA+ICsJCQkJCQlpcHY0X3NwZWMtPmhkci5zcmNf YWRkcjsNCj4gPiArCQkJCQlsaXN0W2ldLm1fdS5pcHY0X2hkci5zcmNfYWRkciA9DQo+ID4gKwkJ CQkJCVVJTlQzMl9NQVg7DQo+ID4gKwkJCQl9DQo+ID4gKwkJCQlpZiAoaXB2NF9tYXNrLT5oZHIu ZHN0X2FkZHIgPT0gVUlOVDMyX01BWCkNCj4gew0KPiA+ICsJCQkJCWxpc3RbaV0uaF91LmlwdjRf aGRyLmRzdF9hZGRyID0NCj4gPiArCQkJCQkJaXB2NF9zcGVjLT5oZHIuZHN0X2FkZHI7DQo+ID4g KwkJCQkJbGlzdFtpXS5tX3UuaXB2NF9oZHIuZHN0X2FkZHIgPQ0KPiA+ICsJCQkJCQlVSU5UMzJf TUFYOw0KPiA+ICsJCQkJfQ0KPiA+ICsJCQkJaWYgKGlwdjRfbWFzay0+aGRyLnRpbWVfdG9fbGl2 ZSA9PQ0KPiBVSU5UOF9NQVgpIHsNCj4gPiArCQkJCQlsaXN0W2ldLmhfdS5pcHY0X2hkci50aW1l X3RvX2xpdmUgPQ0KPiA+ICsJCQkJCQlpcHY0X3NwZWMtPmhkci50aW1lX3RvX2xpdmU7DQo+ID4g KwkJCQkJbGlzdFtpXS5tX3UuaXB2NF9oZHIudGltZV90b19saXZlID0NCj4gPiArCQkJCQkJVUlO VDhfTUFYOw0KPiA+ICsJCQkJfQ0KPiA+ICsJCQkJaWYgKGlwdjRfbWFzay0+aGRyLm5leHRfcHJv dG9faWQgPT0NCj4gVUlOVDhfTUFYKSB7DQo+ID4gKwkJCQkJbGlzdFtpXS5oX3UuaXB2NF9oZHIu cHJvdG9jb2wgPQ0KPiA+ICsJCQkJCQlpcHY0X3NwZWMtPmhkci5uZXh0X3Byb3RvX2lkOw0KPiA+ ICsJCQkJCWxpc3RbaV0ubV91LmlwdjRfaGRyLnByb3RvY29sID0NCj4gPiArCQkJCQkJVUlOVDhf TUFYOw0KPiA+ICsJCQkJfQ0KPiA+ICsJCQkJaWYgKGlwdjRfbWFzay0+aGRyLnR5cGVfb2Zfc2Vy dmljZSA9PQ0KPiA+ICsJCQkJCQlVSU5UOF9NQVgpIHsNCj4gPiArCQkJCQlsaXN0W2ldLmhfdS5p cHY0X2hkci50b3MgPQ0KPiA+ICsJCQkJCQlpcHY0X3NwZWMtDQo+ID5oZHIudHlwZV9vZl9zZXJ2 aWNlOw0KPiA+ICsJCQkJCWxpc3RbaV0ubV91LmlwdjRfaGRyLnRvcyA9IFVJTlQ4X01BWDsNCj4g PiArCQkJCX0NCj4gPiArCQkJCWxrdXBzX2NudCsrOw0KPiA+ICsJCQl9IGVsc2UgaWYgKCFpcHY0 X3NwZWMgJiYgIWlwdjRfbWFzaykgew0KPiA+ICsJCQkJbGlzdFtpXS50eXBlID0gKHR1bl90eXBl ID09IElDRV9OT05fVFVOKSA/DQo+ID4gKwkJCQkJSUNFX0lQVjRfT0ZPUyA6IElDRV9JUFY0X0lM Ow0KPiA+ICsJCQl9DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQljYXNlIFJURV9GTE9X X0lURU1fVFlQRV9JUFY2Og0KPiA+ICsJCQlpcHY2X3NwZWMgPSBpdGVtLT5zcGVjOw0KPiA+ICsJ CQlpcHY2X21hc2sgPSBpdGVtLT5tYXNrOw0KPiA+ICsJCQlpZiAoaXB2Nl9zcGVjICYmIGlwdjZf bWFzaykgew0KPiA+ICsJCQkJbGlzdFtpXS50eXBlID0gKHR1bl90eXBlID09IElDRV9OT05fVFVO KSA/DQo+ID4gKwkJCQkJSUNFX0lQVjZfT0ZPUyA6IElDRV9JUFY2X0lMOw0KPiA+ICsJCQkJZm9y IChqID0gMDsgaiA8IElDRV9JUFY2X0FERFJfTEVOR1RIOyBqKyspIHsNCj4gPiArCQkJCQlpZiAo aXB2Nl9tYXNrLT5oZHIuc3JjX2FkZHJbal0gPT0NCj4gPiArCQkJCQkJCQlVSU5UOF9NQVgpIHsN Cj4gPiArCQkJCQkJbGlzdFtpXS5oX3UuaWNlX2lwdjZfb2Zvc19oZHIuDQo+ID4gKwkJCQkJCQlz cmNfYWRkcltqXSA9DQo+ID4gKwkJCQkJCWlwdjZfc3BlYy0+aGRyLnNyY19hZGRyW2pdOw0KPiA+ ICsJCQkJCQlsaXN0W2ldLm1fdS5pY2VfaXB2Nl9vZm9zX2hkci4NCj4gPiArCQkJCQkJCXNyY19h ZGRyW2pdID0NCj4gPiArCQkJCQkJaXB2Nl9tYXNrLT5oZHIuc3JjX2FkZHJbal07DQo+ID4gKwkJ CQkJfQ0KPiA+ICsJCQkJCWlmIChpcHY2X21hc2stPmhkci5kc3RfYWRkcltqXSA9PQ0KPiA+ICsJ CQkJCQkJCVVJTlQ4X01BWCkgew0KPiA+ICsJCQkJCQlsaXN0W2ldLmhfdS5pY2VfaXB2Nl9vZm9z X2hkci4NCj4gPiArCQkJCQkJCWRzdF9hZGRyW2pdID0NCj4gPiArCQkJCQkJaXB2Nl9zcGVjLT5o ZHIuZHN0X2FkZHJbal07DQo+ID4gKwkJCQkJCWxpc3RbaV0ubV91LmljZV9pcHY2X29mb3NfaGRy Lg0KPiA+ICsJCQkJCQkJZHN0X2FkZHJbal0gPQ0KPiA+ICsJCQkJCQlpcHY2X21hc2stPmhkci5k c3RfYWRkcltqXTsNCj4gPiArCQkJCQl9DQo+ID4gKwkJCQl9DQo+ID4gKwkJCQlpZiAoaXB2Nl9t YXNrLT5oZHIucHJvdG8gPT0gVUlOVDhfTUFYKSB7DQo+ID4gKwkJCQkJbGlzdFtpXS5oX3UuaWNl X2lwdjZfb2Zvc19oZHIubmV4dF9oZHINCj4gPQ0KPiA+ICsJCQkJCQlpcHY2X3NwZWMtPmhkci5w cm90bzsNCj4gPiArCQkJCQlsaXN0W2ldLm1fdS5pY2VfaXB2Nl9vZm9zX2hkci5uZXh0X2hkcg0K PiA9DQo+ID4gKwkJCQkJCVVJTlQ4X01BWDsNCj4gPiArCQkJCX0NCj4gPiArCQkJCWlmIChpcHY2 X21hc2stPmhkci5ob3BfbGltaXRzID09IFVJTlQ4X01BWCkNCj4gew0KPiA+ICsJCQkJCWxpc3Rb aV0uaF91LmljZV9pcHY2X29mb3NfaGRyLg0KPiA+ICsJCQkJCWhvcF9saW1pdCA9IGlwdjZfc3Bl Yy0+aGRyLmhvcF9saW1pdHM7DQo+ID4gKwkJCQkJbGlzdFtpXS5tX3UuaWNlX2lwdjZfb2Zvc19o ZHIuDQo+ID4gKwkJCQkJCWhvcF9saW1pdCAgPSBVSU5UOF9NQVg7DQo+ID4gKwkJCQl9DQo+ID4g KwkJCQlsa3Vwc19jbnQrKzsNCj4gPiArCQkJfSBlbHNlIGlmICghaXB2Nl9zcGVjICYmICFpcHY2 X21hc2spIHsNCj4gPiArCQkJCWxpc3RbaV0udHlwZSA9ICh0dW5fdHlwZSA9PSBJQ0VfTk9OX1RV TikgPw0KPiA+ICsJCQkJCUlDRV9JUFY0X09GT1MgOiBJQ0VfSVBWNF9JTDsNCj4gPiArCQkJfQ0K PiA+ICsJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJY2FzZSBSVEVfRkxPV19JVEVNX1RZUEVfVURQ Og0KPiA+ICsJCQl1ZHBfc3BlYyA9IGl0ZW0tPnNwZWM7DQo+ID4gKwkJCXVkcF9tYXNrID0gaXRl bS0+bWFzazsNCj4gPiArCQkJaWYgKHVkcF9zcGVjICYmIHVkcF9tYXNrKSB7DQo+ID4gKwkJCQls aXN0W2ldLnR5cGUgPSBJQ0VfVURQX0lMT1M7DQo+ID4gKwkJCQlpZiAodWRwX21hc2stPmhkci5z cmNfcG9ydCA9PSBVSU5UMTZfTUFYKSB7DQo+ID4gKwkJCQkJbGlzdFtpXS5oX3UubDRfaGRyLnNy Y19wb3J0ID0NCj4gPiArCQkJCQkJdWRwX3NwZWMtPmhkci5zcmNfcG9ydDsNCj4gPiArCQkJCQls aXN0W2ldLm1fdS5sNF9oZHIuc3JjX3BvcnQgPQ0KPiA+ICsJCQkJCQl1ZHBfbWFzay0+aGRyLnNy Y19wb3J0Ow0KPiA+ICsJCQkJfQ0KPiA+ICsJCQkJaWYgKHVkcF9tYXNrLT5oZHIuZHN0X3BvcnQg PT0gVUlOVDE2X01BWCkgew0KPiA+ICsJCQkJCWxpc3RbaV0uaF91Lmw0X2hkci5kc3RfcG9ydCA9 DQo+ID4gKwkJCQkJCXVkcF9zcGVjLT5oZHIuZHN0X3BvcnQ7DQo+ID4gKwkJCQkJbGlzdFtpXS5t X3UubDRfaGRyLmRzdF9wb3J0ID0NCj4gPiArCQkJCQkJdWRwX21hc2stPmhkci5kc3RfcG9ydDsN Cj4gPiArCQkJCX0NCj4gPiArCQkJCWxrdXBzX2NudCsrOw0KPiA+ICsJCQl9IGVsc2UgaWYgKCF1 ZHBfc3BlYyAmJiAhdWRwX21hc2spIHsNCj4gPiArCQkJCWxpc3RbaV0udHlwZSA9IElDRV9VRFBf SUxPUzsNCj4gPiArCQkJfQ0KPiA+ICsJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJY2FzZSBSVEVf RkxPV19JVEVNX1RZUEVfVENQOg0KPiA+ICsJCQl0Y3Bfc3BlYyA9IGl0ZW0tPnNwZWM7DQo+ID4g KwkJCXRjcF9tYXNrID0gaXRlbS0+bWFzazsNCj4gPiArCQkJaWYgKHRjcF9zcGVjICYmIHRjcF9t YXNrKSB7DQo+ID4gKwkJCQlsaXN0W2ldLnR5cGUgPSBJQ0VfVENQX0lMOw0KPiA+ICsJCQkJaWYg KHRjcF9tYXNrLT5oZHIuc3JjX3BvcnQgPT0gVUlOVDE2X01BWCkgew0KPiA+ICsJCQkJCWxpc3Rb aV0uaF91Lmw0X2hkci5zcmNfcG9ydCA9DQo+ID4gKwkJCQkJCXRjcF9zcGVjLT5oZHIuc3JjX3Bv cnQ7DQo+ID4gKwkJCQkJbGlzdFtpXS5tX3UubDRfaGRyLnNyY19wb3J0ID0NCj4gPiArCQkJCQkJ dGNwX21hc2stPmhkci5zcmNfcG9ydDsNCj4gPiArCQkJCX0NCj4gPiArCQkJCWlmICh0Y3BfbWFz ay0+aGRyLmRzdF9wb3J0ID09IFVJTlQxNl9NQVgpIHsNCj4gPiArCQkJCQlsaXN0W2ldLmhfdS5s NF9oZHIuZHN0X3BvcnQgPQ0KPiA+ICsJCQkJCQl0Y3Bfc3BlYy0+aGRyLmRzdF9wb3J0Ow0KPiA+ ICsJCQkJCWxpc3RbaV0ubV91Lmw0X2hkci5kc3RfcG9ydCA9DQo+ID4gKwkJCQkJCXRjcF9tYXNr LT5oZHIuZHN0X3BvcnQ7DQo+ID4gKwkJCQl9DQo+ID4gKwkJCQlsa3Vwc19jbnQrKzsNCj4gPiAr CQkJfSBlbHNlIGlmICghdGNwX3NwZWMgJiYgIXRjcF9tYXNrKSB7DQo+ID4gKwkJCQlsaXN0W2ld LnR5cGUgPSBJQ0VfVENQX0lMOw0KPiA+ICsJCQl9DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsNCj4g PiArCQljYXNlIFJURV9GTE9XX0lURU1fVFlQRV9TQ1RQOg0KPiA+ICsJCQlzY3RwX3NwZWMgPSBp dGVtLT5zcGVjOw0KPiA+ICsJCQlzY3RwX21hc2sgPSBpdGVtLT5tYXNrOw0KPiA+ICsJCQlpZiAo c2N0cF9zcGVjICYmIHNjdHBfbWFzaykgew0KPiA+ICsJCQkJbGlzdFtpXS50eXBlID0gSUNFX1ND VFBfSUw7DQo+ID4gKwkJCQlpZiAoc2N0cF9tYXNrLT5oZHIuc3JjX3BvcnQgPT0gVUlOVDE2X01B WCkgew0KPiA+ICsJCQkJCWxpc3RbaV0uaF91LnNjdHBfaGRyLnNyY19wb3J0ID0NCj4gPiArCQkJ CQkJc2N0cF9zcGVjLT5oZHIuc3JjX3BvcnQ7DQo+ID4gKwkJCQkJbGlzdFtpXS5tX3Uuc2N0cF9o ZHIuc3JjX3BvcnQgPQ0KPiA+ICsJCQkJCQlzY3RwX21hc2stPmhkci5zcmNfcG9ydDsNCj4gPiAr CQkJCX0NCj4gPiArCQkJCWlmIChzY3RwX21hc2stPmhkci5kc3RfcG9ydCA9PSBVSU5UMTZfTUFY KSB7DQo+ID4gKwkJCQkJbGlzdFtpXS5oX3Uuc2N0cF9oZHIuZHN0X3BvcnQgPQ0KPiA+ICsJCQkJ CQlzY3RwX3NwZWMtPmhkci5kc3RfcG9ydDsNCj4gPiArCQkJCQlsaXN0W2ldLm1fdS5zY3RwX2hk ci5kc3RfcG9ydCA9DQo+ID4gKwkJCQkJCXNjdHBfbWFzay0+aGRyLmRzdF9wb3J0Ow0KPiA+ICsJ CQkJfQ0KPiA+ICsJCQkJbGt1cHNfY250Kys7DQo+ID4gKwkJCX0gZWxzZSBpZiAoIXNjdHBfc3Bl YyAmJiAhc2N0cF9tYXNrKSB7DQo+ID4gKwkJCQlsaXN0W2ldLnR5cGUgPSBJQ0VfU0NUUF9JTDsN Cj4gPiArCQkJfQ0KPiA+ICsJCQlicmVhazsNCj4gPiArDQo+ID4gKwkJY2FzZSBSVEVfRkxPV19J VEVNX1RZUEVfVlhMQU46DQo+ID4gKwkJCXZ4bGFuX3NwZWMgPSBpdGVtLT5zcGVjOw0KPiA+ICsJ CQl2eGxhbl9tYXNrID0gaXRlbS0+bWFzazsNCj4gPiArCQkJdHVuX3R5cGUgPSBJQ0VfU1dfVFVO X1ZYTEFOOw0KPiA+ICsJCQlpZiAodnhsYW5fc3BlYyAmJiB2eGxhbl9tYXNrKSB7DQo+ID4gKwkJ CQlsaXN0W2ldLnR5cGUgPSBJQ0VfVlhMQU47DQo+ID4gKwkJCQlpZiAodnhsYW5fbWFzay0+dm5p WzBdID09IFVJTlQ4X01BWCAmJg0KPiA+ICsJCQkJCXZ4bGFuX21hc2stPnZuaVsxXSA9PSBVSU5U OF9NQVgNCj4gJiYNCj4gPiArCQkJCQl2eGxhbl9tYXNrLT52bmlbMl0gPT0gVUlOVDhfTUFYKSB7 DQo+ID4gKwkJCQkJbGlzdFtpXS5oX3UudG5sX2hkci52bmkgPQ0KPiA+ICsJCQkJCQkodnhsYW5f c3BlYy0+dm5pWzFdIDw8IDgpIHwNCj4gPiArCQkJCQkJdnhsYW5fc3BlYy0+dm5pWzBdOw0KPiA+ ICsJCQkJCWxpc3RbaV0ubV91LnRubF9oZHIudm5pID0NCj4gPiArCQkJCQkJVUlOVDE2X01BWDsN Cj4gPiArCQkJCX0NCj4gPiArCQkJCWxrdXBzX2NudCsrOw0KPiA+ICsJCQl9IGVsc2UgaWYgKCF2 eGxhbl9zcGVjICYmICF2eGxhbl9tYXNrKSB7DQo+ID4gKwkJCQlsaXN0W2ldLnR5cGUgPSBJQ0Vf VlhMQU47DQo+ID4gKwkJCX0NCj4gPiArCQkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJCWNhc2UgUlRF X0ZMT1dfSVRFTV9UWVBFX05WR1JFOg0KPiA+ICsJCQludmdyZV9zcGVjID0gaXRlbS0+c3BlYzsN Cj4gPiArCQkJbnZncmVfbWFzayA9IGl0ZW0tPm1hc2s7DQo+ID4gKwkJCXR1bl90eXBlID0gSUNF X1NXX1RVTl9OVkdSRTsNCj4gPiArCQkJaWYgKG52Z3JlX3NwZWMgJiYgbnZncmVfbWFzaykgew0K PiA+ICsJCQkJbGlzdFtpXS50eXBlID0gSUNFX05WR1JFOw0KPiA+ICsJCQkJaWYgKG52Z3JlX21h c2stPnRuaVswXSA9PSBVSU5UOF9NQVggJiYNCj4gPiArCQkJCQludmdyZV9tYXNrLT50bmlbMV0g PT0gVUlOVDhfTUFYDQo+ICYmDQo+ID4gKwkJCQkJbnZncmVfbWFzay0+dG5pWzJdID09IFVJTlQ4 X01BWCkgew0KPiA+ICsJCQkJCWxpc3RbaV0uaF91Lm52Z3JlX2hkci50bmkgPQ0KPiA+ICsJCQkJ CQkobnZncmVfc3BlYy0+dG5pWzFdIDw8IDgpIHwNCj4gPiArCQkJCQkJbnZncmVfc3BlYy0+dG5p WzBdOw0KPiA+ICsJCQkJCWxpc3RbaV0ubV91Lm52Z3JlX2hkci50bmkgPQ0KPiA+ICsJCQkJCQlV SU5UMTZfTUFYOw0KPiA+ICsJCQkJfQ0KPiA+ICsJCQkJbGt1cHNfY250Kys7DQo+ID4gKwkJCX0g ZWxzZSBpZiAoIW52Z3JlX3NwZWMgJiYgIW52Z3JlX21hc2spIHsNCj4gPiArCQkJCWxpc3RbaV0u dHlwZSA9IElDRV9OVkdSRTsNCj4gPiArCQkJfQ0KPiA+ICsJCQlicmVhazsNCj4gPiArDQo+ID4g KwkJY2FzZSBSVEVfRkxPV19JVEVNX1RZUEVfVk9JRDoNCj4gPiArCQljYXNlIFJURV9GTE9XX0lU RU1fVFlQRV9FTkQ6DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQlkZWZhdWx0Og0KPiA+ ICsJCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiArCQkJCSAgIFJURV9G TE9XX0VSUk9SX1RZUEVfSVRFTSwgYWN0aW9ucywNCj4gPiArCQkJCSAgICJJbnZhbGlkIHBhdHRl cm4gaXRlbS4iKTsNCj4gPiArCQkJZ290byBvdXQ7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCXJ1bGVfaW5mby0+dHVuX3R5cGUgPSB0dW5fdHlwZTsNCj4gPiArCSpsa3Vwc19udW0g PSBsa3Vwc19jbnQ7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK291dDoNCj4gPiArCXJl dHVybiAtcnRlX2Vycm5vOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBCeSBub3cgaWNlIHN3aXRj aCBmaWx0ZXIgYWN0aW9uIGNvZGUgaW1wbGVtZW50IG9ubHkNCj4gPiArKiBzdXBwb3J0cyBRVUVV RSBvciBEUk9QLg0KPiA+ICsqLw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK2ljZV9wYXJzZV9zd2l0 Y2hfYWN0aW9uKHN0cnVjdCBpY2VfcGYgKnBmLA0KPiA+ICsJCQkJIGNvbnN0IHN0cnVjdCBydGVf Zmxvd19hY3Rpb24gKmFjdGlvbnMsDQo+ID4gKwkJCQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICpl cnJvciwNCj4gPiArCQkJCSBzdHJ1Y3QgaWNlX2Fkdl9ydWxlX2luZm8gKnJ1bGVfaW5mbykgew0K PiA+ICsJc3RydWN0IGljZV9odyAqaHcgPSBJQ0VfUEZfVE9fSFcocGYpOw0KPiA+ICsJc3RydWN0 IGljZV92c2kgKnZzaSA9IHBmLT5tYWluX3ZzaTsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxv d19hY3Rpb24gKmFjdDsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcXVldWUg KmFjdF9xOw0KPiA+ICsJdWludDE2X3QgYmFzZV9xdWV1ZSwgaW5kZXggPSAwOw0KPiA+ICsJdWlu dDMyX3QgcmVnOw0KPiA+ICsNCj4gPiArCS8qIENoZWNrIGlmIHRoZSBmaXJzdCBub24tdm9pZCBh Y3Rpb24gaXMgUVVFVUUgb3IgRFJPUC4gKi8NCj4gPiArCU5FWFRfSVRFTV9PRl9BQ1RJT04oYWN0 LCBhY3Rpb25zLCBpbmRleCk7DQo+ID4gKwlpZiAoYWN0LT50eXBlICE9IFJURV9GTE9XX0FDVElP Tl9UWVBFX1FVRVVFICYmDQo+ID4gKwkgICAgYWN0LT50eXBlICE9IFJURV9GTE9XX0FDVElPTl9U WVBFX0RST1ApIHsNCj4gPiArCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4g UlRFX0ZMT1dfRVJST1JfVFlQRV9BQ1RJT04sDQo+ID4gKwkJCQkgICBhY3QsICJOb3Qgc3VwcG9y dGVkIGFjdGlvbi4iKTsNCj4gPiArCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCX0NCj4gPiAr CXJlZyA9IElDRV9SRUFEX1JFRyhodywgUEZMQU5fUlhfUUFMTE9DKTsNCj4gPiArCWlmIChyZWcg JiBQRkxBTl9SWF9RQUxMT0NfVkFMSURfTSkgew0KPiA+ICsJCWJhc2VfcXVldWUgPSByZWcgJiBQ RkxBTl9SWF9RQUxMT0NfRklSU1RRX007DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXJ0ZV9mbG93 X2Vycm9yX3NldChlcnJvciwgRUlOVkFMLA0KPiA+ICsJCQlSVEVfRkxPV19FUlJPUl9UWVBFX0FD VElPTiwNCj4gPiArCQkJYWN0LCAiSW52YWxpZCBxdWV1ZSByZWdpc3RlciIpOw0KPiA+ICsJCXJl dHVybiAtcnRlX2Vycm5vOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKGFjdC0+dHlwZSA9PSBSVEVfRkxP V19BQ1RJT05fVFlQRV9RVUVVRSkgew0KPiA+ICsJCWFjdF9xID0gYWN0LT5jb25mOw0KPiA+ICsJ CXJ1bGVfaW5mby0+c3dfYWN0LmZsdHJfYWN0ID0gSUNFX0ZXRF9UT19ROw0KPiA+ICsJCXJ1bGVf aW5mby0+c3dfYWN0LmZ3ZF9pZC5xX2lkID0gYmFzZV9xdWV1ZSArIGFjdF9xLT5pbmRleDsNCj4g PiArCQlpZiAoYWN0X3EtPmluZGV4ID49IHBmLT5kZXZfZGF0YS0+bmJfcnhfcXVldWVzKSB7DQo+ ID4gKwkJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRUlOVkFMLA0KPiA+ICsJCQkJUlRFX0ZM T1dfRVJST1JfVFlQRV9BQ1RJT04sDQo+ID4gKwkJCQlhY3QsICJJbnZhbGlkIHF1ZXVlIElEIGZv ciINCj4gPiArCQkJCSIgc3dpdGNoIGZpbHRlci4iKTsNCj4gPiArCQkJcmV0dXJuIC1ydGVfZXJy bm87DQo+ID4gKwkJfQ0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlydWxlX2luZm8tPnN3X2FjdC5m bHRyX2FjdCA9IElDRV9EUk9QX1BBQ0tFVDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlydWxlX2lu Zm8tPnN3X2FjdC52c2lfaGFuZGxlID0gdnNpLT5pZHg7DQo+ID4gKwlydWxlX2luZm8tPnJ4ID0g MTsNCj4gPiArCXJ1bGVfaW5mby0+c3dfYWN0LnNyYyA9IHZzaS0+aWR4Ow0KPiA+ICsJcnVsZV9p bmZvLT5zd19hY3QuZmxhZyA9IElDRV9GTFRSX1JYOw0KPiA+ICsNCj4gPiArCS8qIENoZWNrIGlm IHRoZSBuZXh0IG5vbi12b2lkIGl0ZW0gaXMgRU5EICovDQo+ID4gKwlpbmRleCsrOw0KPiA+ICsJ TkVYVF9JVEVNX09GX0FDVElPTihhY3QsIGFjdGlvbnMsIGluZGV4KTsNCj4gPiArCWlmIChhY3Qt PnR5cGUgIT0gUlRFX0ZMT1dfQUNUSU9OX1RZUEVfRU5EKSB7DQo+ID4gKwkJcnRlX2Zsb3dfZXJy b3Jfc2V0KGVycm9yLCBFSU5WQUwsDQo+IFJURV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9OLA0KPiA+ ICsJCQkJICAgYWN0LCAiTm90IHN1cHBvcnRlZCBhY3Rpb24uIik7DQo+ID4gKwkJcmV0dXJuIC1y dGVfZXJybm87DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBpbnQNCj4gPiAraWNlX3N3aXRjaF9ydWxlX3NldChzdHJ1Y3QgaWNlX3Bm ICpwZiwNCj4gPiArCQkJc3RydWN0IGljZV9hZHZfbGt1cF9lbGVtICpsaXN0LA0KPiA+ICsJCQl1 aW50MTZfdCBsa3Vwc19jbnQsDQo+ID4gKwkJCXN0cnVjdCBpY2VfYWR2X3J1bGVfaW5mbyAqcnVs ZV9pbmZvLA0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2Zsb3cgKmZsb3cpDQo+ID4gK3sNCj4gPiArCXN0 cnVjdCBpY2VfaHcgKmh3ID0gSUNFX1BGX1RPX0hXKHBmKTsNCj4gPiArCWludCByZXQ7DQo+ID4g KwlzdHJ1Y3QgaWNlX3J1bGVfcXVlcnlfZGF0YSBydWxlX2FkZGVkID0gezB9Ow0KPiA+ICsJc3Ry dWN0IGljZV9ydWxlX3F1ZXJ5X2RhdGEgKmZpbHRlcl9wdHI7DQo+ID4gKw0KPiA+ICsJaWYgKGxr dXBzX2NudCA+IElDRV9NQVhfQ0hBSU5fV09SRFMpIHsNCj4gPiArCQlQTURfRFJWX0xPRyhFUlIs ICJpdGVtIG51bWJlciB0b28gbGFyZ2UgZm9yIHJ1bGUiKTsNCj4gPiArCQlyZXR1cm4gLUVOT1RT VVA7DQo+ID4gKwl9DQo+ID4gKwlpZiAoIWxpc3QpIHsNCj4gPiArCQlQTURfRFJWX0xPRyhFUlIs ICJsb29rdXAgbGlzdCBzaG91bGQgbm90IGJlIE5VTEwiKTsNCj4gPiArCQlyZXR1cm4gLUVOT1RT VVA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0ID0gaWNlX2FkZF9hZHZfcnVsZShodywgbGlz dCwgbGt1cHNfY250LCBydWxlX2luZm8sICZydWxlX2FkZGVkKTsNCj4gPiArDQo+ID4gKwlpZiAo IXJldCkgew0KPiA+ICsJCWZpbHRlcl9wdHIgPSBydGVfem1hbGxvYygiaWNlX3N3aXRjaF9maWx0 ZXIiLA0KPiA+ICsJCQlzaXplb2Yoc3RydWN0IGljZV9ydWxlX3F1ZXJ5X2RhdGEpLCAwKTsNCj4g PiArCQlpZiAoIWZpbHRlcl9wdHIpIHsNCj4gPiArCQkJUE1EX0RSVl9MT0coRVJSLCAiZmFpbGVk IHRvIGFsbG9jYXRlIG1lbW9yeSIpOw0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQl9 DQo+ID4gKwkJZmxvdy0+cnVsZSA9IGZpbHRlcl9wdHI7DQo+ID4gKwkJcnRlX21lbWNweShmaWx0 ZXJfcHRyLA0KPiA+ICsJCQkmcnVsZV9hZGRlZCwNCj4gPiArCQkJc2l6ZW9mKHN0cnVjdCBpY2Vf cnVsZV9xdWVyeV9kYXRhKSk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4g PiArfQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK2ljZV9jcmVhdGVfc3dpdGNoX2ZpbHRlcihzdHJ1 Y3QgaWNlX3BmICpwZiwNCj4gPiArCQkJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gcGF0dGVy bltdLA0KPiA+ICsJCQljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIGFjdGlvbnNbXSwNCj4g PiArCQkJc3RydWN0IHJ0ZV9mbG93ICpmbG93LA0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJy b3IgKmVycm9yKQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiArCXN0cnVjdCBpY2Vf YWR2X3J1bGVfaW5mbyBydWxlX2luZm8gPSB7MH07DQo+ID4gKwlzdHJ1Y3QgaWNlX2Fkdl9sa3Vw X2VsZW0gKmxpc3QgPSBOVUxMOw0KPiA+ICsJdWludDE2X3QgbGt1cHNfbnVtID0gMDsNCj4gPiAr DQo+ID4gKwlyZXQgPSBpY2VfcGFyc2Vfc3dpdGNoX2ZpbHRlcihwYXR0ZXJuLCBhY3Rpb25zLCBl cnJvciwNCj4gPiArCQkJJnJ1bGVfaW5mbywgJmxpc3QsICZsa3Vwc19udW0pOw0KPiA+ICsJaWYg KHJldCkNCj4gPiArCQlnb3RvIG91dDsNCj4gPiArDQo+ID4gKwlyZXQgPSBpY2VfcGFyc2Vfc3dp dGNoX2FjdGlvbihwZiwgYWN0aW9ucywgZXJyb3IsICZydWxlX2luZm8pOw0KPiA+ICsJaWYgKHJl dCkNCj4gPiArCQlnb3RvIG91dDsNCj4gPiArDQo+ID4gKwlyZXQgPSBpY2Vfc3dpdGNoX3J1bGVf c2V0KHBmLCBsaXN0LCBsa3Vwc19udW0sICZydWxlX2luZm8sIGZsb3cpOw0KPiA+ICsJaWYgKHJl dCkNCj4gPiArCQlnb3RvIG91dDsNCj4gPiArDQo+ID4gKwlydGVfZnJlZShsaXN0KTsNCj4gPiAr CXJldHVybiAwOw0KPiA+ICsNCj4gPiArb3V0Og0KPiA+ICsJcnRlX2ZyZWUobGlzdCk7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIC1ydGVfZXJybm87DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludA0KPiA+ ICtpY2VfZGVzdHJveV9zd2l0Y2hfZmlsdGVyKHN0cnVjdCBpY2VfcGYgKnBmLA0KPiA+ICsJCQlz dHJ1Y3QgcnRlX2Zsb3cgKmZsb3cpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBpY2VfaHcgKmh3ID0g SUNFX1BGX1RPX0hXKHBmKTsNCj4gPiArCWludCByZXQ7DQo+ID4gKwlzdHJ1Y3QgaWNlX3J1bGVf cXVlcnlfZGF0YSAqZmlsdGVyX3B0cjsNCj4gPiArCXN0cnVjdCBpY2VfcnVsZV9xdWVyeV9kYXRh IHJ1bGVfYWRkZWQ7DQo+ID4gKw0KPiA+ICsJZmlsdGVyX3B0ciA9IChzdHJ1Y3QgaWNlX3J1bGVf cXVlcnlfZGF0YSAqKQ0KPiA+ICsJCQlmbG93LT5ydWxlOw0KPiA+ICsJcnRlX21lbWNweSgmcnVs ZV9hZGRlZCwgZmlsdGVyX3B0ciwNCj4gPiArCQlzaXplb2Yoc3RydWN0IGljZV9ydWxlX3F1ZXJ5 X2RhdGEpKTsNCj4gPiArDQo+ID4gKwlpZiAoIWZpbHRlcl9wdHIpIHsNCj4gPiArCQlQTURfRFJW X0xPRyhFUlIsICJubyBzdWNoIGZsb3ciDQo+ID4gKwkJCSAgICAiIGNyZWF0ZSBieSBzd2l0Y2gg ZmlsdGVyIik7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ cmV0ID0gaWNlX3JlbV9hZHZfcnVsZV9ieV9pZChodywgJnJ1bGVfYWRkZWQpOw0KPiA+ICsNCj4g PiArCXJ0ZV9mcmVlKGZpbHRlcl9wdHIpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4g K30NCj4gPiArDQo+ID4gK3ZvaWQNCj4gPiAraWNlX2ZyZWVfc3dpdGNoX2ZpbHRlcl9ydWxlKHZv aWQgKnJ1bGUpIHsNCj4gPiArCXN0cnVjdCBpY2VfcnVsZV9xdWVyeV9kYXRhICpmaWx0ZXJfcHRy Ow0KPiA+ICsNCj4gPiArCWZpbHRlcl9wdHIgPSAoc3RydWN0IGljZV9ydWxlX3F1ZXJ5X2RhdGEg KilydWxlOw0KPiA+ICsNCj4gPiArCXJ0ZV9mcmVlKGZpbHRlcl9wdHIpOw0KPiA+ICt9DQo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ljZS9pY2Vfc3dpdGNoX2ZpbHRlci5oDQo+ID4gYi9k cml2ZXJzL25ldC9pY2UvaWNlX3N3aXRjaF9maWx0ZXIuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uOTU3ZDBkMQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9kcml2ZXJzL25ldC9pY2UvaWNlX3N3aXRjaF9maWx0ZXIuaA0KPiA+IEBAIC0wLDAgKzEs MjggQEANCj4gPiArI2lmbmRlZiBfSUNFX1NXSVRDSF9GSUxURVJfSF8NCj4gPiArI2RlZmluZSBf SUNFX1NXSVRDSF9GSUxURVJfSF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJiYXNlL2ljZV9zd2l0 Y2guaCINCj4gPiArI2luY2x1ZGUgImJhc2UvaWNlX3R5cGUuaCINCj4gPiArI2luY2x1ZGUgImlj ZV9ldGhkZXYuaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgTkVYVF9JVEVNX09GX0FDVElPTihhY3Qs IGFjdGlvbnMsIGluZGV4KSAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiArCWRvIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ID4gKwkJYWN0ID0gYWN0aW9ucyArIGluZGV4OyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ID4gKwkJd2hpbGUgKGFjdC0+dHlwZSA9PSBSVEVfRkxPV19BQ1RJT05fVFlQ RV9WT0lEKSB7ICAgICAgICBcDQo+ID4gKwkJCWluZGV4Kys7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gPiArCQkJYWN0ID0gYWN0aW9ucyArIGluZGV4OyAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsJCX0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsJfSB3aGlsZSAoMCkNCj4gPiAr DQo+ID4gK2ludA0KPiA+ICtpY2VfY3JlYXRlX3N3aXRjaF9maWx0ZXIoc3RydWN0IGljZV9wZiAq cGYsDQo+ID4gKwkJCWNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtIHBhdHRlcm5bXSwNCj4gPiAr CQkJY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiBhY3Rpb25zW10sDQo+ID4gKwkJCXN0cnVj dCBydGVfZmxvdyAqZmxvdywNCj4gPiArCQkJc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7 DQo+ID4gK2ludA0KPiA+ICtpY2VfZGVzdHJveV9zd2l0Y2hfZmlsdGVyKHN0cnVjdCBpY2VfcGYg KnBmLA0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2Zsb3cgKmZsb3cpOw0KPiA+ICt2b2lkDQo+ID4gK2lj ZV9mcmVlX3N3aXRjaF9maWx0ZXJfcnVsZSh2b2lkICpydWxlKTsgI2VuZGlmIC8qDQo+ID4gK19J Q0VfU1dJVENIX0ZJTFRFUl9IXyAqLw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pY2Uv bWVzb24uYnVpbGQgYi9kcml2ZXJzL25ldC9pY2UvbWVzb24uYnVpbGQNCj4gPiBpbmRleCAyYmVj Njg4Li5jNmJjYmEzIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2ljZS9tZXNvbi5idWls ZA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2ljZS9tZXNvbi5idWlsZA0KPiA+IEBAIC03LDYgKzcs NyBAQCBvYmpzID0gW2Jhc2Vfb2Jqc10NCj4gPiAgc291cmNlcyA9IGZpbGVzKA0KPiA+ICAJJ2lj ZV9ldGhkZXYuYycsDQo+ID4gIAknaWNlX3J4dHguYycNCj4gPiArCSdpY2Vfc3dpdGNoX2ZpbHRl ci5jJw0KPiA+ICAJKQ0KPiANCj4gVGhpcyBpcyBuZWVkIG9mIGEgY29tbWEgYmV0d2VlbiAnaWNl X3J4dHguYycgYW5kICdpY2Vfc3dpdGNoX2ZpbHRlci5jJw0KPiANCg0KT2ujrCBJIHdpbGwgdXBk YXRlIGluIHYyLg0KDQo+IFNlZToNCj4gDQo+IGh0dHBzOi8vdHJhdmlzLWNpLmNvbS9vdnNyb2Jv dC9kcGRrL2pvYnMvMjA0OTA5ODY3IGZvciBleGFtcGxlLg0KPiANCj4gPiAgZGVwcyArPSBbJ2hh c2gnXQ0K