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 6B619A0096 for ; Wed, 5 Jun 2019 18:34:23 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3DE711BAE4; Wed, 5 Jun 2019 18:34:23 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id CE87F1BAE4 for ; Wed, 5 Jun 2019 18:34:20 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Jun 2019 09:34:19 -0700 X-ExtLoop1: 1 Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga003.jf.intel.com with ESMTP; 05 Jun 2019 09:34:19 -0700 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 5 Jun 2019 09:34:18 -0700 Received: from fmsmsx120.amr.corp.intel.com ([169.254.15.129]) by FMSMSX119.amr.corp.intel.com ([169.254.14.25]) with mapi id 14.03.0415.000; Wed, 5 Jun 2019 09:34:18 -0700 From: "Stillwell Jr, Paul M" To: Maxime Coquelin , "Rong, Leyi" , "Zhang, Qi Z" CC: "dev@dpdk.org" , "Nowlin, Dan" Thread-Topic: [dpdk-dev] [PATCH 47/49] net/ice/base: enable additional switch rules Thread-Index: AQHVGpie29V9bvPgHEy4Wn72hMA5UqaNc0aA///QFUA= Date: Wed, 5 Jun 2019 16:34:17 +0000 Message-ID: References: <20190604054248.68510-1-leyi.rong@intel.com> <20190604054248.68510-48-leyi.rong@intel.com> <020fd028-65d5-7a8e-0591-b4c1c10a427b@redhat.com> In-Reply-To: <020fd028-65d5-7a8e-0591-b4c1c10a427b@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYjY2ZjAxNWYtZTI4MS00NThlLTg3YTgtNTQwMjYzNWI3YzNmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiUnRldnM2XC93TUw0NjFxSW9GRzl2VkQ4alFzZWJpQTFpZ1ZBUUtESU80UUNcL2s0MElCdVdxSWJcL1JBcnh4MytWQSJ9 x-originating-ip: [10.1.200.107] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 47/49] net/ice/base: enable additional switch rules 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1h eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEp1bmUgNSwgMjAx OSA1OjI0IEFNDQo+IFRvOiBSb25nLCBMZXlpIDxsZXlpLnJvbmdAaW50ZWwuY29tPjsgWmhhbmcs IFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPg0KPiBDYzogZGV2QGRwZGsub3JnOyBOb3dsaW4s IERhbiA8ZGFuLm5vd2xpbkBpbnRlbC5jb20+OyBTdGlsbHdlbGwgSnIsIFBhdWwgTQ0KPiA8cGF1 bC5tLnN0aWxsd2VsbC5qckBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQ QVRDSCA0Ny80OV0gbmV0L2ljZS9iYXNlOiBlbmFibGUgYWRkaXRpb25hbA0KPiBzd2l0Y2ggcnVs ZXMNCj4gDQo+IA0KPiANCj4gT24gNi80LzE5IDc6NDIgQU0sIExleWkgUm9uZyB3cm90ZToNCj4g PiBBZGQgY2FwYWJpbGl0eSB0byBjcmVhdGUgaW5uZXIgSVAgYW5kIGlubmVyIFRDUCBzd2l0Y2gg cmVjaXBlcyBhbmQNCj4gPiBydWxlcy4gQ2hhbmdlIFVEUCB0dW5uZWwgZHVtbXkgcGFja2V0IHRv IGFjY29tbW9kYXRlIHRoZSB0cmFpbmluZyBvZg0KPiA+IHRoZXNlIG5ldyBydWxlcy4NCj4gPg0K PiA+IFNpZ25lZC1vZmYtYnk6IERhbiBOb3dsaW4gPGRhbi5ub3dsaW5AaW50ZWwuY29tPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IFBhdWwgTSBTdGlsbHdlbGwgSnIgPHBhdWwubS5zdGlsbHdlbGwuanJA aW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IExleWkgUm9uZyA8bGV5aS5yb25nQGludGVs LmNvbT4NCj4gPiAtLS0NCj4gPiAgIGRyaXZlcnMvbmV0L2ljZS9iYXNlL2ljZV9wcm90b2NvbF90 eXBlLmggfCAgIDggKy0NCj4gPiAgIGRyaXZlcnMvbmV0L2ljZS9iYXNlL2ljZV9zd2l0Y2guYyAg ICAgICAgfCAzNjEgKysrKysrKysrKysrLS0tLS0tLS0tLS0NCj4gPiAgIGRyaXZlcnMvbmV0L2lj ZS9iYXNlL2ljZV9zd2l0Y2guaCAgICAgICAgfCAgIDEgKw0KPiA+ICAgMyBmaWxlcyBjaGFuZ2Vk LCAyMDMgaW5zZXJ0aW9ucygrKSwgMTY3IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2ljZS9iYXNlL2ljZV9wcm90b2NvbF90eXBlLmgNCj4gPiBiL2RyaXZl cnMvbmV0L2ljZS9iYXNlL2ljZV9wcm90b2NvbF90eXBlLmgNCj4gPiBpbmRleCA4MjgyMmZiNzQu LjM4YmVkN2E3OSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9pY2UvYmFzZS9pY2VfcHJv dG9jb2xfdHlwZS5oDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvaWNlL2Jhc2UvaWNlX3Byb3RvY29s X3R5cGUuaA0KPiA+IEBAIC0zNSw2ICszNSw3IEBAIGVudW0gaWNlX3Byb3RvY29sX3R5cGUgew0K PiA+ICAgCUlDRV9JUFY2X0lMLA0KPiA+ICAgCUlDRV9JUFY2X09GT1MsDQo+ID4gICAJSUNFX1RD UF9JTCwNCj4gPiArCUlDRV9VRFBfT0YsDQo+ID4gICAJSUNFX1VEUF9JTE9TLA0KPiA+ICAgCUlD RV9TQ1RQX0lMLA0KPiA+ICAgCUlDRV9WWExBTiwNCj4gPiBAQCAtMTEyLDYgKzExMyw3IEBAIGVu dW0gaWNlX3Byb3RfaWQgew0KPiA+ICAgI2RlZmluZSBJQ0VfSVBWNl9PRk9TX0hXCTQwDQo+ID4g ICAjZGVmaW5lIElDRV9JUFY2X0lMX0hXCQk0MQ0KPiA+ICAgI2RlZmluZSBJQ0VfVENQX0lMX0hX CQk0OQ0KPiA+ICsjZGVmaW5lIElDRV9VRFBfT0ZfSFcJCTUyDQo+ID4gICAjZGVmaW5lIElDRV9V RFBfSUxPU19IVwkJNTMNCj4gPiAgICNkZWZpbmUgSUNFX1NDVFBfSUxfSFcJCTk2DQo+ID4NCj4g PiBAQCAtMTg4LDggKzE5MCw3IEBAIHN0cnVjdCBpY2VfbDRfaGRyIHsNCj4gPiAgIHN0cnVjdCBp Y2VfdWRwX3RubF9oZHIgew0KPiA+ICAgCXUxNiBmaWVsZDsNCj4gPiAgIAl1MTYgcHJvdG9fdHlw ZTsNCj4gPiAtCXUxNiB2bmk7DQo+ID4gLQl1MTYgcmVzZXJ2ZWQ7DQo+ID4gKwl1MzIgdm5pOwkv KiBvbmx5IHVzZSBsb3dlciAyNC1iaXRzICovDQo+ID4gICB9Ow0KPiA+DQo+ID4gICBzdHJ1Y3Qg aWNlX252Z3JlIHsNCj4gPiBAQCAtMjI1LDYgKzIyNiw3IEBAIHN0cnVjdCBpY2VfcHJvdF9sa3Vw X2V4dCB7DQo+ID4gICAJdTggbl92YWxfd29yZHM7DQo+ID4gICAJLyogY3JlYXRlIGEgYnVmZmVy IHRvIGhvbGQgbWF4IHdvcmRzIHBlciByZWNpcGUgKi8NCj4gPiAgIAl1MTYgZmllbGRfb2ZmW0lD RV9NQVhfQ0hBSU5fV09SRFNdOw0KPiA+ICsJdTE2IGZpZWxkX21hc2tbSUNFX01BWF9DSEFJTl9X T1JEU107DQo+ID4NCj4gPiAgIAlzdHJ1Y3QgaWNlX2Z2X3dvcmQgZnZfd29yZHNbSUNFX01BWF9D SEFJTl9XT1JEU107DQo+ID4NCj4gPiBAQCAtMjM1LDYgKzIzNyw3IEBAIHN0cnVjdCBpY2VfcHJv dF9sa3VwX2V4dCB7DQo+ID4gICBzdHJ1Y3QgaWNlX3ByZWZfcmVjaXBlX2dyb3VwIHsNCj4gPiAg IAl1OCBuX3ZhbF9wYWlyczsJCS8qIE51bWJlciBvZiB2YWxpZCBwYWlycyAqLw0KPiA+ICAgCXN0 cnVjdCBpY2VfZnZfd29yZCBwYWlyc1tJQ0VfTlVNX1dPUkRTX1JFQ0lQRV07DQo+ID4gKwl1MTYg bWFza1tJQ0VfTlVNX1dPUkRTX1JFQ0lQRV07DQo+ID4gICB9Ow0KPiA+DQo+ID4gICBzdHJ1Y3Qg aWNlX3JlY3BfZ3JwX2VudHJ5IHsNCj4gPiBAQCAtMjQ0LDYgKzI0Nyw3IEBAIHN0cnVjdCBpY2Vf cmVjcF9ncnBfZW50cnkgew0KPiA+ICAgCXUxNiByaWQ7DQo+ID4gICAJdTggY2hhaW5faWR4Ow0K PiA+ICAgCXUxNiBmdl9pZHhbSUNFX05VTV9XT1JEU19SRUNJUEVdOw0KPiA+ICsJdTE2IGZ2X21h c2tbSUNFX05VTV9XT1JEU19SRUNJUEVdOw0KPiA+ICAgCXN0cnVjdCBpY2VfcHJlZl9yZWNpcGVf Z3JvdXAgcl9ncm91cDsNCj4gPiAgIH07DQo+ID4gICAjZW5kaWYgLyogX0lDRV9QUk9UT0NPTF9U WVBFX0hfICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ljZS9iYXNlL2ljZV9zd2l0 Y2guYw0KPiA+IGIvZHJpdmVycy9uZXQvaWNlL2Jhc2UvaWNlX3N3aXRjaC5jDQo+ID4gaW5kZXgg MzczYWNiN2E2Li4wMmZiNDlkYmEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvaWNlL2Jh c2UvaWNlX3N3aXRjaC5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvaWNlL2Jhc2UvaWNlX3N3aXRj aC5jDQo+ID4gQEAgLTUzLDYwICs1MywxMDkgQEAgc3RhdGljIGNvbnN0IHU4DQo+IGR1bW15X2V0 aF9oZWFkZXJbRFVNTVlfRVRIX0hEUl9MRU5dID0geyAweDIsIDAsIDAsIDAsIDAsIDAsDQo+ID4g ICAJIHNpemVvZigoKHN0cnVjdCBpY2Vfc3dfcnVsZV92c2lfbGlzdCAqKTApLT52c2kpICsgXA0K PiA+ICAgCSAoKG4pICogc2l6ZW9mKCgoc3RydWN0IGljZV9zd19ydWxlX3ZzaV9saXN0ICopMCkt PnZzaSkpKQ0KPiA+DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNlX2R1bW15X3BrdF9vZmZz ZXRzIHsNCj4gPiArCWVudW0gaWNlX3Byb3RvY29sX3R5cGUgdHlwZTsNCj4gPiArCXUxNiBvZmZz ZXQ7IC8qIElDRV9QUk9UT0NPTF9MQVNUIGluZGljYXRlcyBlbmQgb2YgbGlzdCAqLyB9DQo+ID4g K2R1bW15X2dyZV9wYWNrZXRfb2Zmc2V0c1tdID0gew0KPiA+ICsJeyBJQ0VfTUFDX09GT1MsCQkw IH0sDQo+ID4gKwl7IElDRV9JUFY0X09GT1MsCTE0IH0sDQo+ID4gKwl7IElDRV9WWExBTiwJCTM0 IH0sDQo+ID4gKwl7IElDRV9NQUNfSUwsCQk0MiB9LA0KPiA+ICsJeyBJQ0VfSVBWNF9JTCwJCTU0 IH0sDQo+ID4gKwl7IElDRV9QUk9UT0NPTF9MQVNULAkwIH0sDQo+ID4gK307DQo+ID4gKw0KPiA+ ICAgc3RhdGljIGNvbnN0DQo+ID4gLXU4IGR1bW15X2dyZV9wYWNrZXRbXSA9IHsgMCwgMCwgMCwg MCwJCS8qIEV0aGVyIHN0YXJ0cyAqLw0KPiA+ICt1OCBkdW1teV9ncmVfcGFja2V0W10gPSB7IDAs IDAsIDAsIDAsCQkvKiBJQ0VfTUFDX09GT1MgMA0KPiAqLw0KPiA+ICAgCQkJICAwLCAwLCAwLCAw LA0KPiA+ICAgCQkJICAwLCAwLCAwLCAwLA0KPiA+IC0JCQkgIDB4MDgsIDAsCQkvKiBFdGhlciBl bmRzICovDQo+ID4gLQkJCSAgMHg0NSwgMCwgMCwgMHgzRSwJLyogSVAgc3RhcnRzICovDQo+ID4g KwkJCSAgMHgwOCwgMCwNCj4gPiArCQkJICAweDQ1LCAwLCAwLCAweDNFLAkvKiBJQ0VfSVBWNF9P Rk9TIDE0ICovDQo+ID4gICAJCQkgIDAsIDAsIDAsIDAsDQo+ID4gICAJCQkgIDAsIDB4MkYsIDAs IDAsDQo+ID4gICAJCQkgIDAsIDAsIDAsIDAsDQo+ID4gLQkJCSAgMCwgMCwgMCwgMCwJCS8qIElQ IGVuZHMgKi8NCj4gPiAtCQkJICAweDgwLCAwLCAweDY1LCAweDU4LAkvKiBHUkUgc3RhcnRzICov DQo+ID4gLQkJCSAgMCwgMCwgMCwgMCwJCS8qIEdSRSBlbmRzICovDQo+ID4gLQkJCSAgMCwgMCwg MCwgMCwJCS8qIEV0aGVyIHN0YXJ0cyAqLw0KPiA+IC0JCQkgIDAsIDAsIDAsIDAsDQo+ID4gLQkJ CSAgMCwgMCwgMCwgMCwNCj4gPiAtCQkJICAweDA4LCAwLAkJLyogRXRoZXIgZW5kcyAqLw0KPiA+ IC0JCQkgIDB4NDUsIDAsIDAsIDB4MTQsCS8qIElQIHN0YXJ0cyAqLw0KPiA+ICAgCQkJICAwLCAw LCAwLCAwLA0KPiA+ICsJCQkgIDB4ODAsIDAsIDB4NjUsIDB4NTgsCS8qIElDRV9WWExBTl9HUkUg MzQgKi8NCj4gPiAgIAkJCSAgMCwgMCwgMCwgMCwNCj4gPiArCQkJICAwLCAwLCAwLCAwLAkJLyog SUNFX01BQ19JTCA0MiAqLw0KPiA+ICAgCQkJICAwLCAwLCAwLCAwLA0KPiA+IC0JCQkgIDAsIDAs IDAsIDAJCS8qIElQIGVuZHMgKi8NCj4gPiAtCQkJfTsNCj4gPiAtDQo+ID4gLXN0YXRpYyBjb25z dCB1OA0KPiA+IC1kdW1teV91ZHBfdHVuX3BhY2tldFtdID0gezAsIDAsIDAsIDAsCQkvKiBFdGhl ciBzdGFydHMgKi8NCj4gPiAtCQkJICAwLCAwLCAwLCAwLA0KPiA+IC0JCQkgIDAsIDAsIDAsIDAs DQo+ID4gLQkJCSAgMHgwOCwgMCwJCS8qIEV0aGVyIGVuZHMgKi8NCj4gPiAtCQkJICAweDQ1LCAw LCAwLCAweDMyLAkvKiBJUCBzdGFydHMgKi8NCj4gPiAgIAkJCSAgMCwgMCwgMCwgMCwNCj4gPiAt CQkJICAwLCAweDExLCAwLCAwLA0KPiA+ICsJCQkgIDB4MDgsIDAsDQo+ID4gKwkJCSAgMHg0NSwg MCwgMCwgMHgxNCwJLyogSUNFX0lQVjRfSUwgNTQgKi8NCj4gPiAgIAkJCSAgMCwgMCwgMCwgMCwN Cj4gPiAtCQkJICAwLCAwLCAwLCAwLAkJLyogSVAgZW5kcyAqLw0KPiA+IC0JCQkgIDAsIDAsIDB4 MTIsIDB4QjUsCS8qIFVEUCBzdGFydCovDQo+ID4gLQkJCSAgMCwgMHgxRSwgMCwgMCwJLyogVURQ IGVuZCovDQo+ID4gLQkJCSAgMCwgMCwgMCwgMCwJCS8qIFZYTEFOIHN0YXJ0ICovDQo+ID4gLQkJ CSAgMCwgMCwgMCwgMCwJCS8qIFZYTEFOIGVuZCovDQo+ID4gLQkJCSAgMCwgMCwgMCwgMCwJCS8q IEV0aGVyIHN0YXJ0cyAqLw0KPiA+ICAgCQkJICAwLCAwLCAwLCAwLA0KPiA+ICAgCQkJICAwLCAw LCAwLCAwLA0KPiA+IC0JCQkgIDAsIDAJCQkvKiBFdGhlciBlbmRzICovDQo+ID4gKwkJCSAgMCwg MCwgMCwgMA0KPiA+ICAgCQkJfTsNCj4gPg0KPiA+ICtzdGF0aWMgY29uc3QNCj4gPiArc3RydWN0 IGljZV9kdW1teV9wa3Rfb2Zmc2V0cyBkdW1teV91ZHBfdHVuX3BhY2tldF9vZmZzZXRzW10gPSB7 DQo+ID4gKwl7IElDRV9NQUNfT0ZPUywJCTAgfSwNCj4gPiArCXsgSUNFX0lQVjRfT0ZPUywJMTQg fSwNCj4gPiArCXsgSUNFX1VEUF9PRiwJCTM0IH0sDQo+ID4gKwl7IElDRV9WWExBTiwJCTQyIH0s DQo+ID4gKwl7IElDRV9NQUNfSUwsCQk1MCB9LA0KPiA+ICsJeyBJQ0VfSVBWNF9JTCwJCTY0IH0s DQo+ID4gKwl7IElDRV9UQ1BfSUwsCQk4NCB9LA0KPiA+ICsJeyBJQ0VfUFJPVE9DT0xfTEFTVCwJ MCB9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0DQo+ID4gK3U4IGR1bW15X3Vk cF90dW5fcGFja2V0W10gPSB7DQo+ID4gKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLyogSUNF X01BQ19PRk9TIDAgKi8NCj4gPiArCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQo+ID4gKwkweDAw LCAweDAwLCAweDAwLCAweDAwLA0KPiA+ICsJMHgwOCwgMHgwMCwNCj4gPiArDQo+ID4gKwkweDQ1 LCAweDAwLCAweDAwLCAweDVhLCAvKiBJQ0VfSVBWNF9PRk9TIDE0ICovDQo+ID4gKwkweDAwLCAw eDAxLCAweDAwLCAweDAwLA0KPiA+ICsJMHg0MCwgMHgxMSwgMHgwMCwgMHgwMCwNCj4gPiArCTB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQo+ID4gKwkweDAwLCAweDAwLCAweDAwLCAweDAwLA0KPiA+ ICsNCj4gPiArCTB4MDAsIDB4MDAsIDB4MTIsIDB4YjUsIC8qIElDRV9VRFBfT0YgMzQgKi8NCj4g PiArCTB4MDAsIDB4NDYsIDB4MDAsIDB4MDAsDQo+ID4gKw0KPiA+ICsJMHgwNCwgMHgwMCwgMHgw MCwgMHgwMywgLyogSUNFX1ZYTEFOIDQyICovDQo+ID4gKwkweDAwLCAweDAwLCAweDAwLCAweDAw LA0KPiA+ICsNCj4gPiArCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIC8qIElDRV9NQUNfSUwgNTAg Ki8NCj4gPiArCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQo+ID4gKwkweDAwLCAweDAwLCAweDAw LCAweDAwLA0KPiA+ICsJMHgwOCwgMHgwMCwNCj4gPiArDQo+ID4gKwkweDQ1LCAweDAwLCAweDAw LCAweDI4LCAvKiBJQ0VfSVBWNF9JTCA2NCAqLw0KPiA+ICsJMHgwMCwgMHgwMSwgMHgwMCwgMHgw MCwNCj4gPiArCTB4NDAsIDB4MDYsIDB4MDAsIDB4MDAsDQo+ID4gKwkweDAwLCAweDAwLCAweDAw LCAweDAwLA0KPiA+ICsJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCj4gPiArDQo+ID4gKwkweDAw LCAweDAwLCAweDAwLCAweDAwLCAvKiBJQ0VfVENQX0lMIDg0ICovDQo+ID4gKwkweDAwLCAweDAw LCAweDAwLCAweDAwLA0KPiA+ICsJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCj4gPiArCTB4NTAs IDB4MDIsIDB4MjAsIDB4MDAsDQo+ID4gKwkweDAwLCAweDAwLCAweDAwLCAweDAwDQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QNCj4gPiArc3RydWN0IGljZV9kdW1teV9wa3Rfb2Zm c2V0cyBkdW1teV90Y3BfdHVuX3BhY2tldF9vZmZzZXRzW10gPSB7DQo+ID4gKwl7IElDRV9NQUNf T0ZPUywJCTAgfSwNCj4gPiArCXsgSUNFX0lQVjRfT0ZPUywJMTQgfSwNCj4gPiArCXsgSUNFX1RD UF9JTCwJCTM0IH0sDQo+ID4gKwl7IElDRV9QUk9UT0NPTF9MQVNULAkwIH0sDQo+ID4gK307DQo+ ID4gKw0KPiA+ICAgc3RhdGljIGNvbnN0IHU4DQo+ID4gLWR1bW15X3RjcF90dW5fcGFja2V0W10g PSB7MCwgMCwgMCwgMCwJCS8qIEV0aGVyIHN0YXJ0cyAqLw0KPiA+ICtkdW1teV90Y3BfdHVuX3Bh Y2tldFtdID0gezAsIDAsIDAsIDAsCQkvKiBJQ0VfTUFDX09GT1MgMA0KPiAqLw0KPiA+ICAgCQkJ ICAwLCAwLCAwLCAwLA0KPiA+ICAgCQkJICAwLCAwLCAwLCAwLA0KPiA+IC0JCQkgIDB4MDgsIDAs ICAgICAgICAgICAgICAvKiBFdGhlciBlbmRzICovDQo+ID4gLQkJCSAgMHg0NSwgMCwgMCwgMHgy OCwgICAgIC8qIElQIHN0YXJ0cyAqLw0KPiA+ICsJCQkgIDB4MDgsIDAsDQo+ID4gKwkJCSAgMHg0 NSwgMCwgMCwgMHgyOCwgICAgIC8qIElDRV9JUFY0X09GT1MgMTQgKi8NCj4gPiAgIAkJCSAgMCwg MHgwMSwgMCwgMCwNCj4gPiAgIAkJCSAgMHg0MCwgMHgwNiwgMHhGNSwgMHg2OSwNCj4gPiAgIAkJ CSAgMCwgMCwgMCwgMCwNCj4gPiAtCQkJICAwLCAwLCAwLCAwLCAgIC8qIElQIGVuZHMgKi8NCj4g PiAgIAkJCSAgMCwgMCwgMCwgMCwNCj4gPiArCQkJICAwLCAwLCAwLCAwLAkJLyogSUNFX1RDUF9J TCAzNCAqLw0KPiA+ICAgCQkJICAwLCAwLCAwLCAwLA0KPiA+ICAgCQkJICAwLCAwLCAwLCAwLA0K PiA+ICAgCQkJICAweDUwLCAweDAyLCAweDIwLA0KPiA+IEBAIC0xODQsNiArMjMzLDkgQEAgaWNl X2dldF9yZWNwX2ZybV9mdyhzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0DQo+IGljZV9zd19yZWNp cGUgKnJlY3BzLCB1OCByaWQpDQo+ID4gICAJCQl1OCBsa3VwX2luZHggPSByb290X2J1ZnMuY29u dGVudC5sa3VwX2luZHhbaSArIDFdOw0KPiA+DQo+ID4gICAJCQlyZ19lbnRyeS0+ZnZfaWR4W2ld ID0gbGt1cF9pbmR4Ow0KPiA+ICsJCQlyZ19lbnRyeS0+ZnZfbWFza1tpXSA9DQo+ID4gKwkJCQlM RTE2X1RPX0NQVShyb290X2J1ZnMuY29udGVudC5tYXNrW2kgKw0KPiAxXSk7DQo+ID4gKw0KPiA+ ICAgCQkJLyogSWYgdGhlIHJlY2lwZSBpcyBhIGNoYWluZWQgcmVjaXBlIHRoZW4gYWxsIGl0cw0K PiA+ICAgCQkJICogY2hpbGQgcmVjaXBlJ3MgcmVzdWx0IHdpbGwgaGF2ZSBhIHJlc3VsdCBpbmRl eC4NCj4gPiAgIAkJCSAqIFRvIGZpbGwgZnZfd29yZHMgd2Ugc2hvdWxkIG5vdCB1c2UgdGhvc2Ug cmVzdWx0DQo+IEBAIC00MjU0LDEwDQo+ID4gKzQzMDYsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBpY2VfcHJvdF9leHRfdGJsX2VudHJ5IGljZV9wcm90X2V4dFtdID0gew0KPiA+ICAgCXsgSUNF X0lQVjZfT0ZPUywJeyAwLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0LCAxNiwgMTgsIDIwLCAyMiwg MjQsDQo+ID4gICAJCQkJIDI2LCAyOCwgMzAsIDMyLCAzNCwgMzYsIDM4IH0gfSwNCj4gPiAgIAl7 IElDRV9UQ1BfSUwsCQl7IDAsIDIgfSB9LA0KPiA+ICsJeyBJQ0VfVURQX09GLAkJeyAwLCAyIH0g fSwNCj4gPiAgIAl7IElDRV9VRFBfSUxPUywJCXsgMCwgMiB9IH0sDQo+ID4gICAJeyBJQ0VfU0NU UF9JTCwJCXsgMCwgMiB9IH0sDQo+ID4gLQl7IElDRV9WWExBTiwJCXsgOCwgMTAsIDEyIH0gfSwN Cj4gPiAtCXsgSUNFX0dFTkVWRSwJCXsgOCwgMTAsIDEyIH0gfSwNCj4gPiArCXsgSUNFX1ZYTEFO LAkJeyA4LCAxMCwgMTIsIDE0IH0gfSwNCj4gPiArCXsgSUNFX0dFTkVWRSwJCXsgOCwgMTAsIDEy LCAxNCB9IH0sDQo+ID4gICAJeyBJQ0VfVlhMQU5fR1BFLAl7IDAsIDIsIDQgfSB9LA0KPiA+ICAg CXsgSUNFX05WR1JFLAkJeyAwLCAyIH0gfSwNCj4gPiAgIAl7IElDRV9QUk9UT0NPTF9MQVNULAl7 IDAgfSB9DQo+ID4gQEAgLTQyNzAsMTEgKzQzMjMsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp Y2VfcHJvdF9leHRfdGJsX2VudHJ5DQo+IGljZV9wcm90X2V4dFtdID0gew0KPiA+ICAgICovDQo+ ID4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGljZV9wcmVmX3JlY2lwZV9ncm91cCBpY2VfcmVjaXBl X3BhY2tbXSA9IHsNCj4gPiAgIAl7MywgeyB7IElDRV9NQUNfT0ZPU19IVywgMCwgMCB9LCB7IElD RV9NQUNfT0ZPU19IVywgMiwgMCB9LA0KPiA+IC0JICAgICAgeyBJQ0VfTUFDX09GT1NfSFcsIDQs IDAgfSB9IH0sDQo+ID4gKwkgICAgICB7IElDRV9NQUNfT0ZPU19IVywgNCwgMCB9IH0sIHsgMHhm ZmZmLCAweGZmZmYsIDB4ZmZmZiwgMHhmZmZmDQo+ID4gK30gfSwNCj4gPiAgIAl7NCwgeyB7IElD RV9NQUNfSUxfSFcsIDAsIDAgfSwgeyBJQ0VfTUFDX0lMX0hXLCAyLCAwIH0sDQo+ID4gLQkgICAg ICB7IElDRV9NQUNfSUxfSFcsIDQsIDAgfSwgeyBJQ0VfTUVUQV9EQVRBX0lEX0hXLCA0NCwgMCB9 IH0gfSwNCj4gPiAtCXsyLCB7IHsgSUNFX0lQVjRfSUxfSFcsIDAsIDAgfSwgeyBJQ0VfSVBWNF9J TF9IVywgMiwgMCB9IH0gfSwNCj4gPiAtCXsyLCB7IHsgSUNFX0lQVjRfSUxfSFcsIDEyLCAwIH0s IHsgSUNFX0lQVjRfSUxfSFcsIDE0LCAwIH0gfSB9LA0KPiA+ICsJICAgICAgeyBJQ0VfTUFDX0lM X0hXLCA0LCAwIH0sIHsgSUNFX01FVEFfREFUQV9JRF9IVywgNDQsIDAgfSB9LA0KPiA+ICsJCXsg MHhmZmZmLCAweGZmZmYsIDB4ZmZmZiwgMHhmZmZmIH0gfSwNCj4gPiArCXsyLCB7IHsgSUNFX0lQ VjRfSUxfSFcsIDAsIDAgfSwgeyBJQ0VfSVBWNF9JTF9IVywgMiwgMCB9IH0sDQo+ID4gKwkJeyAw eGZmZmYsIDB4ZmZmZiwgMHhmZmZmLCAweGZmZmYgfSB9LA0KPiA+ICsJezIsIHsgeyBJQ0VfSVBW NF9JTF9IVywgMTIsIDAgfSwgeyBJQ0VfSVBWNF9JTF9IVywgMTQsIDAgfSB9LA0KPiA+ICsJCXsg MHhmZmZmLCAweGZmZmYsIDB4ZmZmZiwgMHhmZmZmIH0gfSwNCj4gPiAgIH07DQo+ID4NCj4gPiAg IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNlX3Byb3RvY29sX2VudHJ5IGljZV9wcm90X2lkX3RibFtd ID0geyBAQA0KPiA+IC00Mjg1LDYgKzQzNDEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGljZV9w cm90b2NvbF9lbnRyeSBpY2VfcHJvdF9pZF90YmxbXQ0KPiA9IHsNCj4gPiAgIAl7IElDRV9JUFY2 X09GT1MsCUlDRV9JUFY2X09GT1NfSFcgfSwNCj4gPiAgIAl7IElDRV9JUFY2X0lMLAkJSUNFX0lQ VjZfSUxfSFcgfSwNCj4gPiAgIAl7IElDRV9UQ1BfSUwsCQlJQ0VfVENQX0lMX0hXIH0sDQo+ID4g Kwl7IElDRV9VRFBfT0YsCQlJQ0VfVURQX09GX0hXIH0sDQo+ID4gICAJeyBJQ0VfVURQX0lMT1Ms CQlJQ0VfVURQX0lMT1NfSFcgfSwNCj4gPiAgIAl7IElDRV9TQ1RQX0lMLAkJSUNFX1NDVFBfSUxf SFcgfSwNCj4gPiAgIAl7IElDRV9WWExBTiwJCUlDRV9VRFBfT0ZfSFcgfSwNCj4gPiBAQCAtNDQw Myw3ICs0NDYwLDcgQEAgaWNlX2ZpbGxfdmFsaWRfd29yZHMoc3RydWN0IGljZV9hZHZfbGt1cF9l bGVtDQo+ICpydWxlLA0KPiA+ICAgCXdvcmQgPSBsa3VwX2V4dHMtPm5fdmFsX3dvcmRzOw0KPiA+ DQo+ID4gICAJZm9yIChqID0gMDsgaiA8IHNpemVvZihydWxlLT5tX3UpIC8gc2l6ZW9mKHUxNik7 IGorKykNCj4gPiAtCQlpZiAoKCh1MTYgKikmcnVsZS0+bV91KVtqXSA9PSAweGZmZmYgJiYNCj4g PiArCQlpZiAoKCh1MTYgKikmcnVsZS0+bV91KVtqXSAmJg0KPiA+ICAgCQkgICAgcnVsZS0+dHlw ZSA8IEFSUkFZX1NJWkUoaWNlX3Byb3RfZXh0KSkgew0KPiA+ICAgCQkJLyogTm8gbW9yZSBzcGFj ZSB0byBhY2NvbW1vZGF0ZSAqLw0KPiA+ICAgCQkJaWYgKHdvcmQgPj0gSUNFX01BWF9DSEFJTl9X T1JEUykNCj4gPiBAQCAtNDQxMiw2ICs0NDY5LDcgQEAgaWNlX2ZpbGxfdmFsaWRfd29yZHMoc3Ry dWN0IGljZV9hZHZfbGt1cF9lbGVtDQo+ICpydWxlLA0KPiA+ICAgCQkJCWljZV9wcm90X2V4dFty dWxlLT50eXBlXS5vZmZzW2pdOw0KPiA+ICAgCQkJbGt1cF9leHRzLT5mdl93b3Jkc1t3b3JkXS5w cm90X2lkID0NCj4gPiAgIAkJCQlpY2VfcHJvdF9pZF90YmxbcnVsZS0+dHlwZV0ucHJvdG9jb2xf aWQ7DQo+ID4gKwkJCWxrdXBfZXh0cy0+ZmllbGRfbWFza1t3b3JkXSA9ICgodTE2ICopJnJ1bGUt DQo+ID5tX3UpW2pdOw0KPiA+ICAgCQkJd29yZCsrOw0KPiA+ICAgCQl9DQo+ID4NCj4gPiBAQCAt NDUzNSw2ICs0NTkzLDcgQEAgaWNlX2NyZWF0ZV9maXJzdF9maXRfcmVjcF9kZWYoc3RydWN0IGlj ZV9odyAqaHcsDQo+ID4gICAJCQkJbGt1cF9leHRzLT5mdl93b3Jkc1tqXS5wcm90X2lkOw0KPiA+ ICAgCQkJZ3JwLT5wYWlyc1tncnAtPm5fdmFsX3BhaXJzXS5vZmYgPQ0KPiA+ICAgCQkJCWxrdXBf ZXh0cy0+ZnZfd29yZHNbal0ub2ZmOw0KPiA+ICsJCQlncnAtPm1hc2tbZ3JwLT5uX3ZhbF9wYWly c10gPSBsa3VwX2V4dHMtDQo+ID5maWVsZF9tYXNrW2pdOw0KPiA+ICAgCQkJZ3JwLT5uX3ZhbF9w YWlycysrOw0KPiA+ICAgCQl9DQo+ID4NCj4gPiBAQCAtNDU2OSwxNCArNDYyOCwyMiBAQCBpY2Vf ZmlsbF9mdl93b3JkX2luZGV4KHN0cnVjdCBpY2VfaHcgKmh3LA0KPiA+IHN0cnVjdCBMSVNUX0hF QURfVFlQRSAqZnZfbGlzdCwNCj4gPg0KPiA+ICAgCQlmb3IgKGkgPSAwOyBpIDwgcmctPnJfZ3Jv dXAubl92YWxfcGFpcnM7IGkrKykgew0KPiA+ICAgCQkJc3RydWN0IGljZV9mdl93b3JkICpwcjsN Cj4gPiArCQkJdTE2IG1hc2s7DQo+ID4gICAJCQl1OCBqOw0KPiA+DQo+ID4gICAJCQlwciA9ICZy Zy0+cl9ncm91cC5wYWlyc1tpXTsNCj4gPiArCQkJbWFzayA9IHJnLT5yX2dyb3VwLm1hc2tbaV07 DQo+ID4gKw0KPiA+ICAgCQkJZm9yIChqID0gMDsgaiA8IGh3LT5ibGtbSUNFX0JMS19TV10uZXMu ZnZ3OyBqKyspDQo+ID4gICAJCQkJaWYgKGZ2X2V4dFtqXS5wcm90X2lkID09IHByLT5wcm90X2lk ICYmDQo+ID4gICAJCQkJICAgIGZ2X2V4dFtqXS5vZmYgPT0gcHItPm9mZikgew0KPiA+ICAgCQkJ CQkvKiBTdG9yZSBpbmRleCBvZiBmaWVsZCB2ZWN0b3IgKi8NCj4gPiAgIAkJCQkJcmctPmZ2X2lk eFtpXSA9IGo7DQo+ID4gKwkJCQkJLyogTWFzayBpcyBnaXZlbiBieSBjYWxsZXIgYXMgYmlnDQo+ ID4gKwkJCQkJICogZW5kaWFuLCBidXQgc2VudCB0byBGVyBhcyBsaXR0bGUNCj4gPiArCQkJCQkg KiBlbmRpYW4NCj4gPiArCQkJCQkgKi8NCj4gPiArCQkJCQlyZy0+ZnZfbWFza1tpXSA9IG1hc2sg PDwgOCB8IG1hc2sgPj4NCj4gODsNCj4gPiAgIAkJCQkJYnJlYWs7DQo+ID4gICAJCQkJfQ0KPiA+ ICAgCQl9DQo+ID4gQEAgLTQ2NzQsNyArNDc0MSw4IEBAIGljZV9hZGRfc3dfcmVjaXBlKHN0cnVj dCBpY2VfaHcgKmh3LCBzdHJ1Y3QNCj4gPiBpY2Vfc3dfcmVjaXBlICpybSwNCj4gPg0KPiA+ICAg CQlmb3IgKGkgPSAwOyBpIDwgZW50cnktPnJfZ3JvdXAubl92YWxfcGFpcnM7IGkrKykgew0KPiA+ ICAgCQkJYnVmW3JlY3BzXS5jb250ZW50LmxrdXBfaW5keFtpICsgMV0gPSBlbnRyeS0NCj4gPmZ2 X2lkeFtpXTsNCj4gPiAtCQkJYnVmW3JlY3BzXS5jb250ZW50Lm1hc2tbaSArIDFdID0NCj4gQ1BV X1RPX0xFMTYoMHhGRkZGKTsNCj4gPiArCQkJYnVmW3JlY3BzXS5jb250ZW50Lm1hc2tbaSArIDFd ID0NCj4gPiArCQkJCUNQVV9UT19MRTE2KGVudHJ5LT5mdl9tYXNrW2ldKTsNCj4gPiAgIAkJfQ0K PiA+DQo+ID4gICAJCWlmIChybS0+bl9ncnBfY291bnQgPiAxKSB7DQo+ID4gQEAgLTQ4OTYsNiAr NDk2NCw4IEBAIGljZV9jcmVhdGVfcmVjaXBlX2dyb3VwKHN0cnVjdCBpY2VfaHcgKmh3LA0KPiBz dHJ1Y3QgaWNlX3N3X3JlY2lwZSAqcm0sDQo+ID4gICAJCXJtLT5uX2V4dF93b3JkcyA9IGxrdXBf ZXh0cy0+bl92YWxfd29yZHM7DQo+ID4gICAJCWljZV9tZW1jcHkoJnJtLT5leHRfd29yZHMsIGxr dXBfZXh0cy0+ZnZfd29yZHMsDQo+ID4gICAJCQkgICBzaXplb2Yocm0tPmV4dF93b3JkcyksDQo+ IElDRV9OT05ETUFfVE9fTk9ORE1BKTsNCj4gPiArCQlpY2VfbWVtY3B5KHJtLT53b3JkX21hc2tz LCBsa3VwX2V4dHMtPmZpZWxkX21hc2ssDQo+ID4gKwkJCSAgIHNpemVvZihybS0+d29yZF9tYXNr cyksDQo+IElDRV9OT05ETUFfVE9fTk9ORE1BKTsNCj4gPiAgIAkJZ290byBvdXQ7DQo+ID4gICAJ fQ0KPiA+DQo+ID4gQEAgLTUwOTcsMTYgKzUxNjcsOCBAQCBpY2VfYWRkX2Fkdl9yZWNpcGUoc3Ry dWN0IGljZV9odyAqaHcsIHN0cnVjdA0KPiBpY2VfYWR2X2xrdXBfZWxlbSAqbGt1cHMsDQo+ID4g ICAJcmV0dXJuIHN0YXR1czsNCj4gPiAgIH0NCj4gPg0KPiA+IC0jZGVmaW5lIElDRV9NQUNfSERS X09GRlNFVAkwDQo+ID4gLSNkZWZpbmUgSUNFX0lQX0hEUl9PRkZTRVQJMTQNCj4gPiAtI2RlZmlu ZSBJQ0VfR1JFX0hEUl9PRkZTRVQJMzQNCj4gPiAtI2RlZmluZSBJQ0VfTUFDX0lMX0hEUl9PRkZT RVQJNDINCj4gPiAtI2RlZmluZSBJQ0VfSVBfSUxfSERSX09GRlNFVAk1Ng0KPiA+IC0jZGVmaW5l IElDRV9MNF9IRFJfT0ZGU0VUCTM0DQo+ID4gLSNkZWZpbmUgSUNFX1VEUF9UVU5fSERSX09GRlNF VAk0Mg0KPiA+IC0NCj4gPiAgIC8qKg0KPiA+IC0gKiBpY2VfZmluZF9kdW1teV9wYWNrZXQgLSBm aW5kIGR1bW15IHBhY2tldCB3aXRoIGdpdmVuIG1hdGNoDQo+ID4gY3JpdGVyaWENCj4gPiArICog aWNlX2ZpbmRfZHVtbXlfcGFja2V0IC0gZmluZCBkdW1teSBwYWNrZXQgYnkgdHVubmVsIHR5cGUN Cj4gPiAgICAqDQo+ID4gICAgKiBAbGt1cHM6IGxvb2t1cCBlbGVtZW50cyBvciBtYXRjaCBjcml0 ZXJpYSBmb3IgdGhlIGFkdmFuY2VkIHJlY2lwZSwgb25lDQo+ID4gICAgKgkgICBzdHJ1Y3R1cmUg cGVyIHByb3RvY29sIGhlYWRlcg0KPiA+IEBAIC01MTE0LDE3ICs1MTc2LDIwIEBAIGljZV9hZGRf YWR2X3JlY2lwZShzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0DQo+IGljZV9hZHZfbGt1cF9lbGVt ICpsa3VwcywNCj4gPiAgICAqIEB0dW5fdHlwZTogdHVubmVsIHR5cGUgZnJvbSB0aGUgbWF0Y2gg Y3JpdGVyaWENCj4gPiAgICAqIEBwa3Q6IGR1bW15IHBhY2tldCB0byBmaWxsIGFjY29yZGluZyB0 byBmaWx0ZXIgbWF0Y2ggY3JpdGVyaWENCj4gPiAgICAqIEBwa3RfbGVuOiBwYWNrZXQgbGVuZ3Ro IG9mIGR1bW15IHBhY2tldA0KPiA+ICsgKiBAb2Zmc2V0czogcG9pbnRlciB0byByZWNlaXZlIHRo ZSBwb2ludGVyIHRvIHRoZSBvZmZzZXRzIGZvciB0aGUNCj4gPiArIHBhY2tldA0KPiA+ICAgICov DQo+ID4gICBzdGF0aWMgdm9pZA0KPiA+ICAgaWNlX2ZpbmRfZHVtbXlfcGFja2V0KHN0cnVjdCBp Y2VfYWR2X2xrdXBfZWxlbSAqbGt1cHMsIHUxNg0KPiBsa3Vwc19jbnQsDQo+ID4gICAJCSAgICAg IGVudW0gaWNlX3N3X3R1bm5lbF90eXBlIHR1bl90eXBlLCBjb25zdCB1OCAqKnBrdCwNCj4gPiAt CQkgICAgICB1MTYgKnBrdF9sZW4pDQo+ID4gKwkJICAgICAgdTE2ICpwa3RfbGVuLA0KPiA+ICsJ CSAgICAgIGNvbnN0IHN0cnVjdCBpY2VfZHVtbXlfcGt0X29mZnNldHMgKipvZmZzZXRzKQ0KPiA+ ICAgew0KPiA+ICAgCXUxNiBpOw0KPiA+DQo+ID4gICAJaWYgKHR1bl90eXBlID09IElDRV9TV19U VU5fTlZHUkUgfHwgdHVuX3R5cGUgPT0NCj4gSUNFX0FMTF9UVU5ORUxTKSB7DQo+ID4gICAJCSpw a3QgPSBkdW1teV9ncmVfcGFja2V0Ow0KPiA+ICAgCQkqcGt0X2xlbiA9IHNpemVvZihkdW1teV9n cmVfcGFja2V0KTsNCj4gPiArCQkqb2Zmc2V0cyA9IGR1bW15X2dyZV9wYWNrZXRfb2Zmc2V0czsN Cj4gPiAgIAkJcmV0dXJuOw0KPiA+ICAgCX0NCj4gPg0KPiA+IEBAIC01MTMyLDYgKzUxOTcsNyBA QCBpY2VfZmluZF9kdW1teV9wYWNrZXQoc3RydWN0DQo+IGljZV9hZHZfbGt1cF9lbGVtICpsa3Vw cywgdTE2IGxrdXBzX2NudCwNCj4gPiAgIAkgICAgdHVuX3R5cGUgPT0gSUNFX1NXX1RVTl9WWExB Tl9HUEUpIHsNCj4gPiAgIAkJKnBrdCA9IGR1bW15X3VkcF90dW5fcGFja2V0Ow0KPiA+ICAgCQkq cGt0X2xlbiA9IHNpemVvZihkdW1teV91ZHBfdHVuX3BhY2tldCk7DQo+ID4gKwkJKm9mZnNldHMg PSBkdW1teV91ZHBfdHVuX3BhY2tldF9vZmZzZXRzOw0KPiA+ICAgCQlyZXR1cm47DQo+ID4gICAJ fQ0KPiA+DQo+ID4gQEAgLTUxMzksMTIgKzUyMDUsMTQgQEAgaWNlX2ZpbmRfZHVtbXlfcGFja2V0 KHN0cnVjdA0KPiBpY2VfYWR2X2xrdXBfZWxlbSAqbGt1cHMsIHUxNiBsa3Vwc19jbnQsDQo+ID4g ICAJCWlmIChsa3Vwc1tpXS50eXBlID09IElDRV9VRFBfSUxPUykgew0KPiA+ICAgCQkJKnBrdCA9 IGR1bW15X3VkcF90dW5fcGFja2V0Ow0KPiA+ICAgCQkJKnBrdF9sZW4gPSBzaXplb2YoZHVtbXlf dWRwX3R1bl9wYWNrZXQpOw0KPiA+ICsJCQkqb2Zmc2V0cyA9IGR1bW15X3VkcF90dW5fcGFja2V0 X29mZnNldHM7DQo+ID4gICAJCQlyZXR1cm47DQo+ID4gICAJCX0NCj4gPiAgIAl9DQo+ID4NCj4g PiAgIAkqcGt0ID0gZHVtbXlfdGNwX3R1bl9wYWNrZXQ7DQo+ID4gICAJKnBrdF9sZW4gPSBzaXpl b2YoZHVtbXlfdGNwX3R1bl9wYWNrZXQpOw0KPiA+ICsJKm9mZnNldHMgPSBkdW1teV90Y3BfdHVu X3BhY2tldF9vZmZzZXRzOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICAvKioNCj4gPiBAQCAtNTE1Mywx NiArNTIyMSwxNiBAQCBpY2VfZmluZF9kdW1teV9wYWNrZXQoc3RydWN0DQo+IGljZV9hZHZfbGt1 cF9lbGVtICpsa3VwcywgdTE2IGxrdXBzX2NudCwNCj4gPiAgICAqIEBsa3VwczogbG9va3VwIGVs ZW1lbnRzIG9yIG1hdGNoIGNyaXRlcmlhIGZvciB0aGUgYWR2YW5jZWQgcmVjaXBlLCBvbmUNCj4g PiAgICAqCSAgIHN0cnVjdHVyZSBwZXIgcHJvdG9jb2wgaGVhZGVyDQo+ID4gICAgKiBAbGt1cHNf Y250OiBudW1iZXIgb2YgcHJvdG9jb2xzDQo+ID4gLSAqIEB0dW5fdHlwZTogdG8ga25vdyBpZiB0 aGUgZHVtbXkgcGFja2V0IGlzIHN1cHBvc2VkIHRvIGJlIHR1bm5lbA0KPiBwYWNrZXQNCj4gPiAg ICAqIEBzX3J1bGU6IHN0b3JlcyBydWxlIGluZm9ybWF0aW9uIGZyb20gdGhlIG1hdGNoIGNyaXRl cmlhDQo+ID4gICAgKiBAZHVtbXlfcGt0OiBkdW1teSBwYWNrZXQgdG8gZmlsbCBhY2NvcmRpbmcg dG8gZmlsdGVyIG1hdGNoIGNyaXRlcmlhDQo+ID4gICAgKiBAcGt0X2xlbjogcGFja2V0IGxlbmd0 aCBvZiBkdW1teSBwYWNrZXQNCj4gPiArICogQG9mZnNldHM6IG9mZnNldCBpbmZvIGZvciB0aGUg ZHVtbXkgcGFja2V0DQo+ID4gICAgKi8NCj4gPiAtc3RhdGljIHZvaWQNCj4gPiArc3RhdGljIGVu dW0gaWNlX3N0YXR1cw0KPiA+ICAgaWNlX2ZpbGxfYWR2X2R1bW15X3BhY2tldChzdHJ1Y3QgaWNl X2Fkdl9sa3VwX2VsZW0gKmxrdXBzLCB1MTYNCj4gbGt1cHNfY250LA0KPiA+IC0JCQkgIGVudW0g aWNlX3N3X3R1bm5lbF90eXBlIHR1bl90eXBlLA0KPiA+ICAgCQkJICBzdHJ1Y3QgaWNlX2FxY19z d19ydWxlc19lbGVtICpzX3J1bGUsDQo+ID4gLQkJCSAgY29uc3QgdTggKmR1bW15X3BrdCwgdTE2 IHBrdF9sZW4pDQo+ID4gKwkJCSAgY29uc3QgdTggKmR1bW15X3BrdCwgdTE2IHBrdF9sZW4sDQo+ ID4gKwkJCSAgY29uc3Qgc3RydWN0IGljZV9kdW1teV9wa3Rfb2Zmc2V0cyAqb2Zmc2V0cykNCj4g PiAgIHsNCj4gPiAgIAl1OCAqcGt0Ow0KPiA+ICAgCXUxNiBpOw0KPiA+IEBAIC01MTc1LDEyNCAr NTI0Myw3NCBAQCBpY2VfZmlsbF9hZHZfZHVtbXlfcGFja2V0KHN0cnVjdA0KPiBpY2VfYWR2X2xr dXBfZWxlbSAqbGt1cHMsIHUxNiBsa3Vwc19jbnQsDQo+ID4gICAJaWNlX21lbWNweShwa3QsIGR1 bW15X3BrdCwgcGt0X2xlbiwNCj4gSUNFX05PTkRNQV9UT19OT05ETUEpOw0KPiA+DQo+ID4gICAJ Zm9yIChpID0gMDsgaSA8IGxrdXBzX2NudDsgaSsrKSB7DQo+ID4gLQkJdTMyIGxlbiwgcGt0X29m ZiwgaGRyX3NpemUsIGZpZWxkX29mZjsNCj4gPiArCQllbnVtIGljZV9wcm90b2NvbF90eXBlIHR5 cGU7DQo+ID4gKwkJdTE2IG9mZnNldCA9IDAsIGxlbiA9IDAsIGo7DQo+ID4gKwkJYm9vbCBmb3Vu ZCA9IGZhbHNlOw0KPiA+ICsNCj4gPiArCQkvKiBmaW5kIHRoZSBzdGFydCBvZiB0aGlzIGxheWVy OyBpdCBzaG91bGQgYmUgZm91bmQgc2luY2UgdGhpcw0KPiA+ICsJCSAqIHdhcyBhbHJlYWR5IGNo ZWNrZWQgd2hlbiBzZWFyY2ggZm9yIHRoZSBkdW1teSBwYWNrZXQNCj4gPiArCQkgKi8NCj4gPiAr CQl0eXBlID0gbGt1cHNbaV0udHlwZTsNCj4gPiArCQlmb3IgKGogPSAwOyBvZmZzZXRzW2pdLnR5 cGUgIT0gSUNFX1BST1RPQ09MX0xBU1Q7IGorKykgew0KPiA+ICsJCQlpZiAodHlwZSA9PSBvZmZz ZXRzW2pdLnR5cGUpIHsNCj4gPiArCQkJCW9mZnNldCA9IG9mZnNldHNbal0ub2Zmc2V0Ow0KPiA+ ICsJCQkJZm91bmQgPSB0cnVlOw0KPiA+ICsJCQkJYnJlYWs7DQo+ID4gKwkJCX0NCj4gPiArCQl9 DQo+ID4gKwkJLyogdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIGEgY29ycmVjdCBjYWxsaW5n IHNlcXVlbmNlICovDQo+ID4gKwkJaWYgKCFmb3VuZCkNCj4gPiArCQkJcmV0dXJuIElDRV9FUlJf UEFSQU07DQo+ID4NCj4gPiAgIAkJc3dpdGNoIChsa3Vwc1tpXS50eXBlKSB7DQo+ID4gICAJCWNh c2UgSUNFX01BQ19PRk9TOg0KPiA+ICAgCQljYXNlIElDRV9NQUNfSUw6DQo+ID4gLQkJCXBrdF9v ZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaWNlX2V0aGVyX2hkciwgZHN0X2FkZHIpICsNCj4gPiAtCQkJ CSgobGt1cHNbaV0udHlwZSA9PSBJQ0VfTUFDX0lMKSA/DQo+ID4gLQkJCQkgSUNFX01BQ19JTF9I RFJfT0ZGU0VUIDogMCk7DQo+ID4gLQkJCWxlbiA9IHNpemVvZihsa3Vwc1tpXS5oX3UuZXRoX2hk ci5kc3RfYWRkcik7DQo+ID4gLQkJCWlmICgodHVuX3R5cGUgPT0gSUNFX1NXX1RVTl9WWExBTiB8 fA0KPiA+IC0JCQkgICAgIHR1bl90eXBlID09IElDRV9TV19UVU5fR0VORVZFIHx8DQo+ID4gLQkJ CSAgICAgdHVuX3R5cGUgPT0gSUNFX1NXX1RVTl9WWExBTl9HUEUpICYmDQo+ID4gLQkJCSAgICAg bGt1cHNbaV0udHlwZSA9PSBJQ0VfTUFDX0lMKSB7DQo+ID4gLQkJCQlwa3Rfb2ZmICs9IHNpemVv ZihzdHJ1Y3QgaWNlX3VkcF90bmxfaGRyKTsNCj4gPiAtCQkJfQ0KPiA+IC0NCj4gPiAtCQkJaWNl X21lbWNweSgmcGt0W3BrdF9vZmZdLA0KPiA+IC0JCQkJICAgJmxrdXBzW2ldLmhfdS5ldGhfaGRy LmRzdF9hZGRyLCBsZW4sDQo+ID4gLQkJCQkgICBJQ0VfTk9ORE1BX1RPX05PTkRNQSk7DQo+ID4g LQkJCXBrdF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaWNlX2V0aGVyX2hkciwgc3JjX2FkZHIpICsN Cj4gPiAtCQkJCSgobGt1cHNbaV0udHlwZSA9PSBJQ0VfTUFDX0lMKSA/DQo+ID4gLQkJCQkgSUNF X01BQ19JTF9IRFJfT0ZGU0VUIDogMCk7DQo+ID4gLQkJCWxlbiA9IHNpemVvZihsa3Vwc1tpXS5o X3UuZXRoX2hkci5zcmNfYWRkcik7DQo+ID4gLQkJCWlmICgodHVuX3R5cGUgPT0gSUNFX1NXX1RV Tl9WWExBTiB8fA0KPiA+IC0JCQkgICAgIHR1bl90eXBlID09IElDRV9TV19UVU5fR0VORVZFIHx8 DQo+ID4gLQkJCSAgICAgdHVuX3R5cGUgPT0gSUNFX1NXX1RVTl9WWExBTl9HUEUpICYmDQo+ID4g LQkJCSAgICAgbGt1cHNbaV0udHlwZSA9PSBJQ0VfTUFDX0lMKSB7DQo+ID4gLQkJCQlwa3Rfb2Zm ICs9IHNpemVvZihzdHJ1Y3QgaWNlX3VkcF90bmxfaGRyKTsNCj4gPiAtCQkJfQ0KPiA+IC0JCQlp Y2VfbWVtY3B5KCZwa3RbcGt0X29mZl0sDQo+ID4gLQkJCQkgICAmbGt1cHNbaV0uaF91LmV0aF9o ZHIuc3JjX2FkZHIsIGxlbiwNCj4gPiAtCQkJCSAgIElDRV9OT05ETUFfVE9fTk9ORE1BKTsNCj4g PiAtCQkJaWYgKGxrdXBzW2ldLmhfdS5ldGhfaGRyLmV0aHR5cGVfaWQpIHsNCj4gPiAtCQkJCXBr dF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaWNlX2V0aGVyX2hkciwNCj4gPiAtCQkJCQkJICAgZXRo dHlwZV9pZCkgKw0KPiA+IC0JCQkJCSgobGt1cHNbaV0udHlwZSA9PSBJQ0VfTUFDX0lMKSA/DQo+ ID4gLQkJCQkJIElDRV9NQUNfSUxfSERSX09GRlNFVCA6IDApOw0KPiA+IC0JCQkJbGVuID0NCj4g c2l6ZW9mKGxrdXBzW2ldLmhfdS5ldGhfaGRyLmV0aHR5cGVfaWQpOw0KPiA+IC0JCQkJaWYgKCh0 dW5fdHlwZSA9PSBJQ0VfU1dfVFVOX1ZYTEFOIHx8DQo+ID4gLQkJCQkgICAgIHR1bl90eXBlID09 IElDRV9TV19UVU5fR0VORVZFIHx8DQo+ID4gLQkJCQkgICAgIHR1bl90eXBlID09IElDRV9TV19U VU5fVlhMQU5fR1BFKQ0KPiAmJg0KPiA+IC0JCQkJICAgICBsa3Vwc1tpXS50eXBlID09IElDRV9N QUNfSUwpIHsNCj4gPiAtCQkJCQlwa3Rfb2ZmICs9DQo+ID4gLQkJCQkJCXNpemVvZihzdHJ1Y3QN Cj4gaWNlX3VkcF90bmxfaGRyKTsNCj4gPiAtCQkJCX0NCj4gPiAtCQkJCWljZV9tZW1jcHkoJnBr dFtwa3Rfb2ZmXSwNCj4gPiAtCQkJCQkgICAmbGt1cHNbaV0uaF91LmV0aF9oZHIuZXRodHlwZV9p ZCwNCj4gPiAtCQkJCQkgICBsZW4sIElDRV9OT05ETUFfVE9fTk9ORE1BKTsNCj4gPiAtCQkJfQ0K PiA+ICsJCQlsZW4gPSBzaXplb2Yoc3RydWN0IGljZV9ldGhlcl9oZHIpOw0KPiA+ICAgCQkJYnJl YWs7DQo+ID4gICAJCWNhc2UgSUNFX0lQVjRfT0ZPUzoNCj4gPiAtCQkJaGRyX3NpemUgPSBzaXpl b2Yoc3RydWN0IGljZV9pcHY0X2hkcik7DQo+ID4gLQkJCWlmIChsa3Vwc1tpXS5oX3UuaXB2NF9o ZHIuZHN0X2FkZHIpIHsNCj4gPiAtCQkJCXBrdF9vZmYgPSBJQ0VfSVBfSERSX09GRlNFVCArDQo+ ID4gLQkJCQkJICAgb2Zmc2V0b2Yoc3RydWN0IGljZV9pcHY0X2hkciwNCj4gPiAtCQkJCQkJICAg IGRzdF9hZGRyKTsNCj4gPiAtCQkJCWZpZWxkX29mZiA9IG9mZnNldG9mKHN0cnVjdCBpY2VfaXB2 NF9oZHIsDQo+ID4gLQkJCQkJCSAgICAgZHN0X2FkZHIpOw0KPiA+IC0JCQkJbGVuID0gaGRyX3Np emUgLSBmaWVsZF9vZmY7DQo+ID4gLQkJCQlpY2VfbWVtY3B5KCZwa3RbcGt0X29mZl0sDQo+ID4g LQkJCQkJICAgJmxrdXBzW2ldLmhfdS5pcHY0X2hkci5kc3RfYWRkciwNCj4gPiAtCQkJCQkgICBs ZW4sIElDRV9OT05ETUFfVE9fTk9ORE1BKTsNCj4gPiAtCQkJfQ0KPiA+IC0JCQlpZiAobGt1cHNb aV0uaF91LmlwdjRfaGRyLnNyY19hZGRyKSB7DQo+ID4gLQkJCQlwa3Rfb2ZmID0gSUNFX0lQX0hE Ul9PRkZTRVQgKw0KPiA+IC0JCQkJCSAgIG9mZnNldG9mKHN0cnVjdCBpY2VfaXB2NF9oZHIsDQo+ ID4gLQkJCQkJCSAgICBzcmNfYWRkcik7DQo+ID4gLQkJCQlmaWVsZF9vZmYgPSBvZmZzZXRvZihz dHJ1Y3QgaWNlX2lwdjRfaGRyLA0KPiA+IC0JCQkJCQkgICAgIHNyY19hZGRyKTsNCj4gPiAtCQkJ CWxlbiA9IGhkcl9zaXplIC0gZmllbGRfb2ZmOw0KPiA+IC0JCQkJaWNlX21lbWNweSgmcGt0W3Br dF9vZmZdLA0KPiA+IC0JCQkJCSAgICZsa3Vwc1tpXS5oX3UuaXB2NF9oZHIuc3JjX2FkZHIsDQo+ ID4gLQkJCQkJICAgbGVuLCBJQ0VfTk9ORE1BX1RPX05PTkRNQSk7DQo+ID4gLQkJCX0NCj4gPiAt CQkJYnJlYWs7DQo+ID4gICAJCWNhc2UgSUNFX0lQVjRfSUw6DQo+ID4gKwkJCWxlbiA9IHNpemVv ZihzdHJ1Y3QgaWNlX2lwdjRfaGRyKTsNCj4gPiAgIAkJCWJyZWFrOw0KPiA+ICAgCQljYXNlIElD RV9UQ1BfSUw6DQo+ID4gKwkJY2FzZSBJQ0VfVURQX09GOg0KPiA+ICAgCQljYXNlIElDRV9VRFBf SUxPUzoNCj4gPiArCQkJbGVuID0gc2l6ZW9mKHN0cnVjdCBpY2VfbDRfaGRyKTsNCj4gPiArCQkJ YnJlYWs7DQo+ID4gICAJCWNhc2UgSUNFX1NDVFBfSUw6DQo+ID4gLQkJCWhkcl9zaXplID0gc2l6 ZW9mKHN0cnVjdCBpY2VfdWRwX3RubF9oZHIpOw0KPiA+IC0JCQlpZiAobGt1cHNbaV0uaF91Lmw0 X2hkci5kc3RfcG9ydCkgew0KPiA+IC0JCQkJcGt0X29mZiA9IElDRV9MNF9IRFJfT0ZGU0VUICsN Cj4gPiAtCQkJCQkgICBvZmZzZXRvZihzdHJ1Y3QgaWNlX2w0X2hkciwNCj4gPiAtCQkJCQkJICAg IGRzdF9wb3J0KTsNCj4gPiAtCQkJCWZpZWxkX29mZiA9IG9mZnNldG9mKHN0cnVjdCBpY2VfbDRf aGRyLA0KPiA+IC0JCQkJCQkgICAgIGRzdF9wb3J0KTsNCj4gPiAtCQkJCWxlbiA9ICBoZHJfc2l6 ZSAtIGZpZWxkX29mZjsNCj4gPiAtCQkJCWljZV9tZW1jcHkoJnBrdFtwa3Rfb2ZmXSwNCj4gPiAt CQkJCQkgICAmbGt1cHNbaV0uaF91Lmw0X2hkci5kc3RfcG9ydCwNCj4gPiAtCQkJCQkgICBsZW4s IElDRV9OT05ETUFfVE9fTk9ORE1BKTsNCj4gPiAtCQkJfQ0KPiA+IC0JCQlpZiAobGt1cHNbaV0u aF91Lmw0X2hkci5zcmNfcG9ydCkgew0KPiA+IC0JCQkJcGt0X29mZiA9IElDRV9MNF9IRFJfT0ZG U0VUICsNCj4gPiAtCQkJCQlvZmZzZXRvZihzdHJ1Y3QgaWNlX2w0X2hkciwgc3JjX3BvcnQpOw0K PiA+IC0JCQkJZmllbGRfb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGljZV9sNF9oZHIsDQo+ID4gLQkJ CQkJCSAgICAgc3JjX3BvcnQpOw0KPiA+IC0JCQkJbGVuID0gIGhkcl9zaXplIC0gZmllbGRfb2Zm Ow0KPiA+IC0JCQkJaWNlX21lbWNweSgmcGt0W3BrdF9vZmZdLA0KPiA+IC0JCQkJCSAgICZsa3Vw c1tpXS5oX3UubDRfaGRyLnNyY19wb3J0LA0KPiA+IC0JCQkJCSAgIGxlbiwgSUNFX05PTkRNQV9U T19OT05ETUEpOw0KPiA+IC0JCQl9DQo+ID4gKwkJCWxlbiA9IHNpemVvZihzdHJ1Y3QgaWNlX3Nj dHBfaGRyKTsNCj4gPiAgIAkJCWJyZWFrOw0KPiA+ICAgCQljYXNlIElDRV9WWExBTjoNCj4gPiAg IAkJY2FzZSBJQ0VfR0VORVZFOg0KPiA+ICAgCQljYXNlIElDRV9WWExBTl9HUEU6DQo+ID4gLQkJ CXBrdF9vZmYgPSBJQ0VfVURQX1RVTl9IRFJfT0ZGU0VUICsNCj4gPiAtCQkJCSAgIG9mZnNldG9m KHN0cnVjdCBpY2VfdWRwX3RubF9oZHIsIHZuaSk7DQo+ID4gLQkJCWZpZWxkX29mZiA9IG9mZnNl dG9mKHN0cnVjdCBpY2VfdWRwX3RubF9oZHIsIHZuaSk7DQo+ID4gLQkJCWxlbiA9ICBzaXplb2Yo c3RydWN0IGljZV91ZHBfdG5sX2hkcikgLSBmaWVsZF9vZmY7DQo+ID4gLQkJCWljZV9tZW1jcHko JnBrdFtwa3Rfb2ZmXSwNCj4gJmxrdXBzW2ldLmhfdS50bmxfaGRyLnZuaSwNCj4gPiAtCQkJCSAg IGxlbiwgSUNFX05PTkRNQV9UT19OT05ETUEpOw0KPiA+ICsJCQlsZW4gPSBzaXplb2Yoc3RydWN0 IGljZV91ZHBfdG5sX2hkcik7DQo+ID4gICAJCQlicmVhazsNCj4gPiAgIAkJZGVmYXVsdDoNCj4g PiAtCQkJYnJlYWs7DQo+ID4gKwkJCXJldHVybiBJQ0VfRVJSX1BBUkFNOw0KPiA+ICAgCQl9DQo+ ID4gKw0KPiA+ICsJCS8qIHRoZSBsZW5ndGggc2hvdWxkIGJlIGEgd29yZCBtdWx0aXBsZSAqLw0K PiA+ICsJCWlmIChsZW4gJSBJQ0VfQllURVNfUEVSX1dPUkQpDQo+ID4gKwkJCXJldHVybiBJQ0Vf RVJSX0NGRzsNCj4gPiArDQo+ID4gKwkJLyogV2UgaGF2ZSB0aGUgb2Zmc2V0IHRvIHRoZSBoZWFk ZXIgc3RhcnQsIHRoZSBsZW5ndGgsIHRoZQ0KPiA+ICsJCSAqIGNhbGxlcidzIGhlYWRlciB2YWx1 ZXMgYW5kIG1hc2suIFVzZSB0aGlzIGluZm9ybWF0aW9uIHRvDQo+ID4gKwkJICogY29weSB0aGUg ZGF0YSBpbnRvIHRoZSBkdW1teSBwYWNrZXQgYXBwcm9wcmlhdGVseSBiYXNlZA0KPiBvbg0KPiA+ ICsJCSAqIHRoZSBtYXNrLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBvbmx5IHdyaXRlIHRoZSBiaXRz IGFzDQo+ID4gKwkJICogaW5kaWNhdGVkIGJ5IHRoZSBtYXNrIHRvIG1ha2Ugc3VyZSB3ZSBkb24n dCBpbXByb3Blcmx5DQo+IHdyaXRlDQo+ID4gKwkJICogb3ZlciBhbnkgc2lnbmlmaWNhbnQgcGFj a2V0IGRhdGEuDQo+ID4gKwkJICovDQo+ID4gKwkJZm9yIChqID0gMDsgaiA8IGxlbiAvIHNpemVv Zih1MTYpOyBqKyspDQo+ID4gKwkJCWlmICgoKHUxNiAqKSZsa3Vwc1tpXS5tX3UpW2pdKQ0KPiA+ ICsJCQkJKCh1MTYgKikocGt0ICsgb2Zmc2V0KSlbal0gPQ0KPiA+ICsJCQkJCSgoKHUxNiAqKShw a3QgKyBvZmZzZXQpKVtqXSAmDQo+ID4gKwkJCQkJIH4oKHUxNiAqKSZsa3Vwc1tpXS5tX3UpW2pd KSB8DQo+ID4gKwkJCQkJKCgodTE2ICopJmxrdXBzW2ldLmhfdSlbal0gJg0KPiA+ICsJCQkJCSAo KHUxNiAqKSZsa3Vwc1tpXS5tX3UpW2pdKTsNCj4gPiAgIAl9DQo+ID4gKw0KPiA+ICAgCXNfcnVs ZS0+cGRhdGEubGt1cF90eF9yeC5oZHJfbGVuID0gQ1BVX1RPX0xFMTYocGt0X2xlbik7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIElDRV9TVUNDRVNTOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICAvKioNCj4g PiBAQCAtNTQ0Niw3ICs1NDY0LDcgQEAgaWNlX2Fkdl9hZGRfdXBkYXRlX3ZzaV9saXN0KHN0cnVj dCBpY2VfaHcgKmh3LA0KPiA+ICAgfQ0KPiA+DQo+ID4gICAvKioNCj4gPiAtICogaWNlX2FkZF9h ZHZfcnVsZSAtIGNyZWF0ZSBhbiBhZHZhbmNlZCBzd2l0Y2ggcnVsZQ0KPiA+ICsgKiBpY2VfYWRk X2Fkdl9ydWxlIC0gaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBhZHZhbmNlZCBzd2l0Y2gN Cj4gPiArIHJ1bGUNCj4gPiAgICAqIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0 dXJlDQo+ID4gICAgKiBAbGt1cHM6IGluZm9ybWF0aW9uIG9uIHRoZSB3b3JkcyB0aGF0IG5lZWRz IHRvIGJlIGxvb2tlZCB1cC4gQWxsIHdvcmRzDQo+ID4gICAgKiB0b2dldGhlciBtYWtlcyBvbmUg cmVjaXBlDQo+ID4gQEAgLTU0NzAsMTEgKzU0ODgsMTMgQEAgaWNlX2FkZF9hZHZfcnVsZShzdHJ1 Y3QgaWNlX2h3ICpodywgc3RydWN0DQo+IGljZV9hZHZfbGt1cF9lbGVtICpsa3VwcywNCj4gPiAg IHsNCj4gPiAgIAlzdHJ1Y3QgaWNlX2Fkdl9mbHRyX21nbXRfbGlzdF9lbnRyeSAqbV9lbnRyeSwg KmFkdl9mbHRyID0gTlVMTDsNCj4gPiAgIAl1MTYgcmlkID0gMCwgaSwgcGt0X2xlbiwgcnVsZV9i dWZfc3osIHZzaV9oYW5kbGU7DQo+ID4gLQlzdHJ1Y3QgaWNlX2FxY19zd19ydWxlc19lbGVtICpz X3J1bGU7DQo+ID4gKwljb25zdCBzdHJ1Y3QgaWNlX2R1bW15X3BrdF9vZmZzZXRzICpwa3Rfb2Zm c2V0czsNCj4gPiArCXN0cnVjdCBpY2VfYXFjX3N3X3J1bGVzX2VsZW0gKnNfcnVsZSA9IE5VTEw7 DQo+ID4gICAJc3RydWN0IExJU1RfSEVBRF9UWVBFICpydWxlX2hlYWQ7DQo+ID4gICAJc3RydWN0 IGljZV9zd2l0Y2hfaW5mbyAqc3c7DQo+ID4gICAJZW51bSBpY2Vfc3RhdHVzIHN0YXR1czsNCj4g PiAgIAljb25zdCB1OCAqcGt0ID0gTlVMTDsNCj4gPiArCWJvb2wgZm91bmQgPSBmYWxzZTsNCj4g PiAgIAl1MzIgYWN0ID0gMDsNCj4gPg0KPiA+ICAgCWlmICghbGt1cHNfY250KQ0KPiA+IEBAIC01 NDgzLDEzICs1NTAzLDI1IEBAIGljZV9hZGRfYWR2X3J1bGUoc3RydWN0IGljZV9odyAqaHcsIHN0 cnVjdA0KPiBpY2VfYWR2X2xrdXBfZWxlbSAqbGt1cHMsDQo+ID4gICAJZm9yIChpID0gMDsgaSA8 IGxrdXBzX2NudDsgaSsrKSB7DQo+ID4gICAJCXUxNiBqLCAqcHRyOw0KPiA+DQo+ID4gLQkJLyog VmFsaWRhdGUgbWF0Y2ggbWFza3MgdG8gbWFrZSBzdXJlIHRoZXkgbWF0Y2ggY29tcGxldGUNCj4g MTYtYml0DQo+ID4gLQkJICogd29yZHMuDQo+ID4gKwkJLyogVmFsaWRhdGUgbWF0Y2ggbWFza3Mg dG8gbWFrZSBzdXJlIHRoYXQgdGhlcmUgaXMNCj4gc29tZXRoaW5nDQo+ID4gKwkJICogdG8gbWF0 Y2guDQo+ID4gICAJCSAqLw0KPiA+IC0JCXB0ciA9ICh1MTYgKikmbGt1cHMtPm1fdTsNCj4gPiAr CQlwdHIgPSAodTE2ICopJmxrdXBzW2ldLm1fdTsNCj4gPiAgIAkJZm9yIChqID0gMDsgaiA8IHNp emVvZihsa3Vwcy0+bV91KSAvIHNpemVvZih1MTYpOyBqKyspDQo+ID4gLQkJCWlmIChwdHJbal0g IT0gMCAmJiBwdHJbal0gIT0gMHhmZmZmKQ0KPiA+IC0JCQkJcmV0dXJuIElDRV9FUlJfUEFSQU07 DQo+ID4gKwkJCWlmIChwdHJbal0gIT0gMCkgew0KPiA+ICsJCQkJZm91bmQgPSB0cnVlOw0KPiA+ ICsJCQkJYnJlYWs7DQo+ID4gKwkJCX0NCj4gPiArCX0NCj4gPiArCWlmICghZm91bmQpDQo+ID4g KwkJcmV0dXJuIElDRV9FUlJfUEFSQU07DQo+ID4gKw0KPiA+ICsJLyogbWFrZSBzdXJlIHRoYXQg d2UgY2FuIGxvY2F0ZSBhIGR1bW15IHBhY2tldCAqLw0KPiA+ICsJaWNlX2ZpbmRfZHVtbXlfcGFj a2V0KGxrdXBzLCBsa3Vwc19jbnQsIHJpbmZvLT50dW5fdHlwZSwgJnBrdCwNCj4gJnBrdF9sZW4s DQo+ID4gKwkJCSAgICAgICZwa3Rfb2Zmc2V0cyk7DQo+ID4gKwlpZiAoIXBrdCkgew0KPiA+ICsJ CXN0YXR1cyA9IElDRV9FUlJfUEFSQU07DQo+ID4gKwkJZ290byBlcnJfaWNlX2FkZF9hZHZfcnVs ZTsNCj4gPiAgIAl9DQo+ID4NCj4gPiAgIAlpZiAoIShyaW5mby0+c3dfYWN0LmZsdHJfYWN0ID09 IElDRV9GV0RfVE9fVlNJIHx8IEBAIC01NTMwLDgNCj4gPiArNTU2Miw2IEBAIGljZV9hZGRfYWR2 X3J1bGUoc3RydWN0IGljZV9odyAqaHcsIHN0cnVjdA0KPiBpY2VfYWR2X2xrdXBfZWxlbSAqbGt1 cHMsDQo+ID4gICAJCX0NCj4gPiAgIAkJcmV0dXJuIHN0YXR1czsNCj4gPiAgIAl9DQo+ID4gLQlp Y2VfZmluZF9kdW1teV9wYWNrZXQobGt1cHMsIGxrdXBzX2NudCwgcmluZm8tPnR1bl90eXBlLCAm cGt0LA0KPiA+IC0JCQkgICAgICAmcGt0X2xlbik7DQo+ID4gICAJcnVsZV9idWZfc3ogPSBJQ0Vf U1dfUlVMRV9SWF9UWF9OT19IRFJfU0laRSArIHBrdF9sZW47DQo+ID4gICAJc19ydWxlID0gKHN0 cnVjdCBpY2VfYXFjX3N3X3J1bGVzX2VsZW0gKilpY2VfbWFsbG9jKGh3LA0KPiBydWxlX2J1Zl9z eik7DQo+ID4gICAJaWYgKCFzX3J1bGUpDQo+ID4gQEAgLTU1NzYsOCArNTYwNiw4IEBAIGljZV9h ZGRfYWR2X3J1bGUoc3RydWN0IGljZV9odyAqaHcsIHN0cnVjdA0KPiBpY2VfYWR2X2xrdXBfZWxl bSAqbGt1cHMsDQo+ID4gICAJc19ydWxlLT5wZGF0YS5sa3VwX3R4X3J4LnJlY2lwZV9pZCA9IENQ VV9UT19MRTE2KHJpZCk7DQo+ID4gICAJc19ydWxlLT5wZGF0YS5sa3VwX3R4X3J4LmFjdCA9IENQ VV9UT19MRTMyKGFjdCk7DQo+ID4NCj4gPiAtCWljZV9maWxsX2Fkdl9kdW1teV9wYWNrZXQobGt1 cHMsIGxrdXBzX2NudCwgcmluZm8tPnR1bl90eXBlLA0KPiBzX3J1bGUsDQo+ID4gLQkJCQkgIHBr dCwgcGt0X2xlbik7DQo+ID4gKwlpY2VfZmlsbF9hZHZfZHVtbXlfcGFja2V0KGxrdXBzLCBsa3Vw c19jbnQsIHNfcnVsZSwgcGt0LCBwa3RfbGVuLA0KPiA+ICsJCQkJICBwa3Rfb2Zmc2V0cyk7DQo+ IA0KPiBOb3cgdGhhdCBpY2VfZmlsbF9hZHZfZHVtbXlfcGFja2V0KCkgcHJvcGFnYXRlcyBhbiBl cnJvciwgdGhlIGNhbGxlcg0KPiBzaG91bGQgZG8gdGhlIHNhbWUuDQo+IA0KDQpPSywgY2FuIHdl IGFjY2VwdCB0aGlzIHBhdGNoIGFuZCBoYXZlIGEgc2VwYXJhdGUgcGF0Y2ggdGhhdCBwcm9wYWdh dGVzIHRoZSBlcnJvcj8gSXQgd2lsbCB0YWtlIHNvbWUgdGltZSB0byBnZXQgYSBwYXRjaCB0aGF0 IHByb3BhZ2F0ZXMgdGhlIGVycm9yIGRvbmUuDQoNCj4gPg0KPiA+ICAgCXN0YXR1cyA9IGljZV9h cV9zd19ydWxlcyhodywgKHN0cnVjdCBpY2VfYXFjX3N3X3J1bGVzICopc19ydWxlLA0KPiA+ICAg CQkJCSBydWxlX2J1Zl9zeiwgMSwgaWNlX2FxY19vcGNfYWRkX3N3X3J1bGVzLA0KPiBAQCAtNTc1 MywxMSArNTc4MywxMg0KPiA+IEBAIGljZV9yZW1fYWR2X3J1bGUoc3RydWN0IGljZV9odyAqaHcs IHN0cnVjdCBpY2VfYWR2X2xrdXBfZWxlbQ0KPiAqbGt1cHMsDQo+ID4gICAJCSB1MTYgbGt1cHNf Y250LCBzdHJ1Y3QgaWNlX2Fkdl9ydWxlX2luZm8gKnJpbmZvKQ0KPiA+ICAgew0KPiA+ICAgCXN0 cnVjdCBpY2VfYWR2X2ZsdHJfbWdtdF9saXN0X2VudHJ5ICpsaXN0X2VsZW07DQo+ID4gKwljb25z dCBzdHJ1Y3QgaWNlX2R1bW15X3BrdF9vZmZzZXRzICpvZmZzZXRzOw0KPiA+ICAgCXN0cnVjdCBp Y2VfcHJvdF9sa3VwX2V4dCBsa3VwX2V4dHM7DQo+ID4gICAJdTE2IHJ1bGVfYnVmX3N6LCBwa3Rf bGVuLCBpLCByaWQ7DQo+ID4gKwlzdHJ1Y3QgaWNlX2xvY2sgKnJ1bGVfbG9jazsgLyogTG9jayB0 byBwcm90ZWN0IGZpbHRlciBydWxlIGxpc3QgKi8NCj4gPiAgIAllbnVtIGljZV9zdGF0dXMgc3Rh dHVzID0gSUNFX1NVQ0NFU1M7DQo+ID4gICAJYm9vbCByZW1vdmVfcnVsZSA9IGZhbHNlOw0KPiA+ IC0Jc3RydWN0IGljZV9sb2NrICpydWxlX2xvY2s7IC8qIExvY2sgdG8gcHJvdGVjdCBmaWx0ZXIg cnVsZSBsaXN0ICovDQo+ID4gICAJY29uc3QgdTggKnBrdCA9IE5VTEw7DQo+ID4gICAJdTE2IHZz aV9oYW5kbGU7DQo+ID4NCj4gPiBAQCAtNTgwNSw3ICs1ODM2LDcgQEAgaWNlX3JlbV9hZHZfcnVs ZShzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0DQo+IGljZV9hZHZfbGt1cF9lbGVtICpsa3VwcywN Cj4gPiAgIAkJc3RydWN0IGljZV9hcWNfc3dfcnVsZXNfZWxlbSAqc19ydWxlOw0KPiA+DQo+ID4g ICAJCWljZV9maW5kX2R1bW15X3BhY2tldChsa3VwcywgbGt1cHNfY250LCByaW5mby0+dHVuX3R5 cGUsDQo+ICZwa3QsDQo+ID4gLQkJCQkgICAgICAmcGt0X2xlbik7DQo+ID4gKwkJCQkgICAgICAm cGt0X2xlbiwgJm9mZnNldHMpOw0KPiA+ICAgCQlydWxlX2J1Zl9zeiA9IElDRV9TV19SVUxFX1JY X1RYX05PX0hEUl9TSVpFICsNCj4gcGt0X2xlbjsNCj4gPiAgIAkJc19ydWxlID0NCj4gPiAgIAkJ CShzdHJ1Y3QgaWNlX2FxY19zd19ydWxlc19lbGVtICopaWNlX21hbGxvYyhodywgZGlmZg0KPiAt LWdpdA0KPiA+IGEvZHJpdmVycy9uZXQvaWNlL2Jhc2UvaWNlX3N3aXRjaC5oDQo+ID4gYi9kcml2 ZXJzL25ldC9pY2UvYmFzZS9pY2Vfc3dpdGNoLmgNCj4gPiBpbmRleCAwNWIxMTcwYzkuLmRiNzll NDFlYiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9pY2UvYmFzZS9pY2Vfc3dpdGNoLmgN Cj4gPiArKysgYi9kcml2ZXJzL25ldC9pY2UvYmFzZS9pY2Vfc3dpdGNoLmgNCj4gPiBAQCAtMTky LDYgKzE5Miw3IEBAIHN0cnVjdCBpY2Vfc3dfcmVjaXBlIHsNCj4gPiAgIAkgKiByZWNpcGUNCj4g PiAgIAkgKi8NCj4gPiAgIAlzdHJ1Y3QgaWNlX2Z2X3dvcmQgZXh0X3dvcmRzW0lDRV9NQVhfQ0hB SU5fV09SRFNdOw0KPiA+ICsJdTE2IHdvcmRfbWFza3NbSUNFX01BWF9DSEFJTl9XT1JEU107DQo+ ID4NCj4gPiAgIAkvKiBpZiB0aGlzIHJlY2lwZSBpcyBhIGNvbGxlY3Rpb24gb2Ygb3RoZXIgcmVj aXBlICovDQo+ID4gICAJdTggYmlnX3JlY3A7DQo+ID4NCg==