From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B936FA04F1; Mon, 6 Jan 2020 16:45:50 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 376C21D6D2; Mon, 6 Jan 2020 16:45:50 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 27CC91D6D1 for ; Mon, 6 Jan 2020 16:45:46 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Jan 2020 07:45:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,403,1571727600"; d="scan'208";a="245615069" Received: from orsmsx110.amr.corp.intel.com ([10.22.240.8]) by fmsmga004.fm.intel.com with ESMTP; 06 Jan 2020 07:45:44 -0800 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX110.amr.corp.intel.com (10.22.240.8) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 6 Jan 2020 07:45:44 -0800 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Jan 2020 07:45:44 -0800 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 6 Jan 2020 07:45:44 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.45) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 6 Jan 2020 07:45:37 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ETj/HUP4QTb97IZL1AsswYROxwvSU4aO7w7Rhc1VkGLeOPA5tLf8JVSeSU/BrSuEW4c0pbxPRJ2/bHV9N7Z0rpew4qCsokosTYcf1HRrlhUQtffair9r0tvyTHD3J21iSnZOu9OvZeBLLLLQBMI9QMBV9mkKqqvqHleb/ivAnFjNz5VF3v3Y1tUiflKe2qklYBS4wzFJWw23PDScOuRNhkcXbeXmvZXDkhzGH0GjxnDnxaSGXFWqEVP0O4w5yGeqTTWZeK12nqNj1POFnRPmFC5h6nLkcXcohC4FBltv0SJqAtKuL/ebwUEZYQQRGDOpGQz7TBOsIbCLLl2VPln8Vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BoCBl2tNZ5HquZTvje85skysGf84kXRThSSrRbJlMSQ=; b=cIUT529K7FRw7zfyB+EgSxSpucCy86k5l26tjoD5QXVux5DM2lHLtQGGycZi7cYnN1ZIUVZ/iESksbsJjtNxzebbq75cdOPZFBm0O+HqtD1ScFfBv/AYrd9MHY5wVZeiiXACHlkn1U47ml4fg/sTuLavbgOOqvEV9+60yDtpAyAmelEJfMVUG/3SZxOyNPO/5Zwu+N1CPIUb/UoC3W8knOIoQ5PTpXCC/93fFy1EoljZ5tOgAi7UeS5amthaPXq1cyki9KabM/sLZscyc/llnxc9NIHz+Bs+rPX4pouRiAoibmw92j+2M3gVkU9qoRsxjm3qMP2xTjOUWM3ORYUSZg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BoCBl2tNZ5HquZTvje85skysGf84kXRThSSrRbJlMSQ=; b=CC4IZLK5fWW52FGtyFnxYBslC24nT6JtI5lGk69gJNfhu/y2L+ovnfUpRxvq6FbCZsS4Vfb/zpnHq4h5DnQ4hrExa2ClqOjB/t2L/0qMqdg7c3ABMwNL8v/tStxPUhnADcIlgY/KIQDtq1CoPayA+NS0RicAaOYzKQEawgkP8Os= Received: from SN6PR11MB2558.namprd11.prod.outlook.com (52.135.94.19) by SN6PR11MB3150.namprd11.prod.outlook.com (52.135.125.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2602.15; Mon, 6 Jan 2020 15:45:28 +0000 Received: from SN6PR11MB2558.namprd11.prod.outlook.com ([fe80::4d86:362a:13c3:8386]) by SN6PR11MB2558.namprd11.prod.outlook.com ([fe80::4d86:362a:13c3:8386%7]) with mapi id 15.20.2602.015; Mon, 6 Jan 2020 15:45:28 +0000 From: "Ananyev, Konstantin" To: Anoob Joseph , Akhil Goyal , "Nicolau, Radu" , Thomas Monjalon CC: Lukas Bartosik , Jerin Jacob Kollanukkaran , Narayana Prasad Raju Athreya , Ankur Dwivedi , Archana Muniganti , Tejasree Kondoj , "Vamsi Krishna Attunuru" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH 09/14] examples/ipsec-secgw: add eventmode to ipsec-secgw Thread-Index: AQHVwh9MlXyEMd1z0ES4WpGrFcZCfafdx4Cg Date: Mon, 6 Jan 2020 15:45:28 +0000 Message-ID: References: <1575808249-31135-1-git-send-email-anoobj@marvell.com> <1575808249-31135-10-git-send-email-anoobj@marvell.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMWQ4MDVlOGEtYTdjYi00N2RjLWEyMTQtYjUzMTU4OGFlNjBlIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiczIyWDQ2b1dUd0QzYXBLUnlZd2FNcGpKcHZDb2JUbGJHRkw3eGxZc0pFR0tiU0trY0d5cWtxZ1Z5YU9XM1BLWiJ9 dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 x-ctpclassification: CTP_NT authentication-results: spf=none (sender IP is ) smtp.mailfrom=konstantin.ananyev@intel.com; x-originating-ip: [192.198.151.163] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: be7e052b-5748-47a7-94af-08d792bf7469 x-ms-traffictypediagnostic: SN6PR11MB3150: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1002; x-forefront-prvs: 0274272F87 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(366004)(346002)(376002)(136003)(39860400002)(199004)(189003)(66446008)(76116006)(66946007)(7416002)(64756008)(66556008)(66476007)(8936002)(5660300002)(55016002)(52536014)(4326008)(81166006)(81156014)(30864003)(9686003)(33656002)(478600001)(86362001)(7696005)(6506007)(26005)(2906002)(110136005)(316002)(54906003)(186003)(71200400001)(579004); DIR:OUT; SFP:1102; SCL:1; SRVR:SN6PR11MB3150; H:SN6PR11MB2558.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JYirev+QhyJBBSDFqRbHs7+oZsaRGHK/6rxYo6nwSvXSCuchDuPy2mCeOJeo5Me9jlw+gF+VHRQO8445OOIHyNCk6W0DQu9HkTSmUrMUpHcRrdEx1FBGSHMic6VIZjIAFHltpmLswHeQKWxkppU3bNjYF4zal/g/SKhxFO2PmCpEolXke92PV4Qso8DETPMBavSTQtyBTKc+1+3xjZ05NSHU3rRV7idNwa95aKt83EkHapCHoxZVBtaaYKpZWNYZ9/Od/3CUSxW9b4Z77DcAwWoOUJYFntipVPatx26nre2Uz73wIcUS72fUTbqE2HSr5d8LaJkLxSO2jHwE85UFMZ0PsAW4/iIBMVoMScenXx1f0WZ9vsx6wntWV14GE0iWx+xnXxnPmkvBCGQvyZwVAQWa75c2XZvQ1T4Cchk5eYqGoBZGYxTTc40sx8LhQDeZ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: be7e052b-5748-47a7-94af-08d792bf7469 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jan 2020 15:45:28.4150 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iDLgT4qt3sp++e5YlTUbP+n7a14uIzWZhGyqQ0dsED54Zil3/gh1AMofsA/qZBj9p0l9zWyXRd+tcKQjnFNMGpmrOJxeVjQtL9utLnCdSoo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3150 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 09/14] examples/ipsec-secgw: add eventmode to ipsec-secgw 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" DQo+ID4gPiBBZGQgZXZlbnRtb2RlIHN1cHBvcnQgdG8gaXBzZWMtc2VjZ3cuIFRoaXMgdXNlcyBl dmVudCBoZWxwZXIgdG8gc2V0dXANCj4gPiA+IGFuZCB1c2UgdGhlIGV2ZW50bW9kZSBjYXBhYmls aXRpZXMuIEFkZCBkcml2ZXIgaW5ib3VuZCB3b3JrZXIuDQo+ID4gPg0KPiA+ID4gRXhhbXBsZSBj b21tYW5kOg0KPiA+ID4gLi9pcHNlYy1zZWNndyAtYyAweDEgLXcgMDAwMjowMjowMC4wLGlwc2Vj X2luX21heF9zcGk9MTAwIC13DQo+ID4gPiAwMDAyOjA3OjAwLjAgIC13IDAwMDI6MGU6MDAuMCAt dyAwMDAyOjEwOjAwLjEgLS0gLVAgLXAgMHgzIC11IDB4MQ0KPiA+ID4gLS1jb25maWcgIigwLDAs MCksKDEsMCwwKSIgLWYgYS1hZXMtZ2NtLW1zYS5jZmcgLS10cmFuc2Zlci1tb2RlIDENCj4gPiA+ IC0tc2NoZWR1bGUtdHlwZSAyIC0tcHJvY2Vzcy1tb2RlIGRydiAtLXByb2Nlc3MtZGlyIGluDQo+ ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogQW5vb2IgSm9zZXBoIDxhbm9vYmpAbWFydmVsbC5j b20+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBMdWthc3ogQmFydG9zaWsgPGxiYXJ0b3Npa0BtYXJ2 ZWxsLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIGV4YW1wbGVzL2lwc2VjLXNlY2d3L01ha2VmaWxl ICAgICAgIHwgICAxICsNCj4gPiA+ICBleGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIu YyB8ICAgMyArDQo+ID4gPiAgZXhhbXBsZXMvaXBzZWMtc2VjZ3cvZXZlbnRfaGVscGVyLmggfCAg MjYgKysrDQo+ID4gPiBleGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jICB8IDM0NA0K PiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiA+ID4gIGV4YW1wbGVz L2lwc2VjLXNlY2d3L2lwc2VjLmggICAgICAgIHwgICA3ICsNCj4gPiA+ICBleGFtcGxlcy9pcHNl Yy1zZWNndy9pcHNlY193b3JrZXIuYyB8IDE4MCArKysrKysrKysrKysrKysrKysrDQo+ID4gPiAg ZXhhbXBsZXMvaXBzZWMtc2VjZ3cvbWVzb24uYnVpbGQgICAgfCAgIDIgKy0NCj4gPiA+ICA3IGZp bGVzIGNoYW5nZWQsIDU1NSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKSAgY3JlYXRlIG1v ZGUNCj4gPiA+IDEwMDY0NCBleGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlY193b3JrZXIuYw0KPiA+ ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcHNlYy1zZWNndy9NYWtlZmlsZQ0KPiA+ ID4gYi9leGFtcGxlcy9pcHNlYy1zZWNndy9NYWtlZmlsZSBpbmRleCAwOWUzYzVhLi5mNmZkOTRj IDEwMDY0NA0KPiA+ID4gLS0tIGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvTWFrZWZpbGUNCj4gPiA+ ICsrKyBiL2V4YW1wbGVzL2lwc2VjLXNlY2d3L01ha2VmaWxlDQo+ID4gPiBAQCAtMTUsNiArMTUs NyBAQCBTUkNTLXkgKz0gc2EuYw0KPiA+ID4gIFNSQ1MteSArPSBydC5jDQo+ID4gPiAgU1JDUy15 ICs9IGlwc2VjX3Byb2Nlc3MuYw0KPiA+ID4gIFNSQ1MteSArPSBpcHNlYy1zZWNndy5jDQo+ID4g PiArU1JDUy15ICs9IGlwc2VjX3dvcmtlci5jDQo+ID4gPiAgU1JDUy15ICs9IGV2ZW50X2hlbHBl ci5jDQo+ID4gPg0KPiA+ID4gIENGTEFHUyArPSAtZ2R3YXJmLTINCj4gPiA+IGRpZmYgLS1naXQg YS9leGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuYw0KPiA+ID4gYi9leGFtcGxlcy9p cHNlYy1zZWNndy9ldmVudF9oZWxwZXIuYw0KPiA+ID4gaW5kZXggNjU0OTg3NS4uNDRmOTk3ZCAx MDA2NDQNCj4gPiA+IC0tLSBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5jDQo+ ID4gPiArKysgYi9leGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuYw0KPiA+ID4gQEAg LTk4NCw2ICs5ODQsOSBAQCBlaF9maW5kX3dvcmtlcih1aW50MzJfdCBsY29yZV9pZCwgc3RydWN0 IGVoX2NvbmYNCj4gPiAqY29uZiwNCj4gPiA+ICAJZWxzZQ0KPiA+ID4gIAkJY3Vycl9jb25mLmNh cC5idXJzdCA9IEVIX1JYX1RZUEVfTk9OX0JVUlNUOw0KPiA+ID4NCj4gPiA+ICsJY3Vycl9jb25m LmNhcC5pcHNlY19tb2RlID0gY29uZi0+aXBzZWNfbW9kZTsNCj4gPiA+ICsJY3Vycl9jb25mLmNh cC5pcHNlY19kaXIgPSBjb25mLT5pcHNlY19kaXI7DQo+ID4gPiArDQo+ID4gPiAgCS8qIFBhcnNl IHRoZSBwYXNzZWQgbGlzdCBhbmQgc2VlIGlmIHdlIGhhdmUgbWF0Y2hpbmcgY2FwYWJpbGl0aWVz ICovDQo+ID4gPg0KPiA+ID4gIAkvKiBJbml0aWFsaXplIHRoZSBwb2ludGVyIHVzZWQgdG8gdHJh dmVyc2UgdGhlIGxpc3QgKi8gZGlmZiAtLWdpdA0KPiA+ID4gYS9leGFtcGxlcy9pcHNlYy1zZWNn dy9ldmVudF9oZWxwZXIuaA0KPiA+ID4gYi9leGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxw ZXIuaA0KPiA+ID4gaW5kZXggMjg5NWRmYS4uMDc4NDliMCAxMDA2NDQNCj4gPiA+IC0tLSBhL2V4 YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5oDQo+ID4gPiArKysgYi9leGFtcGxlcy9p cHNlYy1zZWNndy9ldmVudF9oZWxwZXIuaA0KPiA+ID4gQEAgLTc0LDYgKzc0LDIyIEBAIGVudW0g ZWhfdHhfdHlwZXMgew0KPiA+ID4gIAlFSF9UWF9UWVBFX05PX0lOVEVSTkFMX1BPUlQNCj4gPiA+ ICB9Ow0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+ICsgKiBFdmVudCBtb2RlIGlwc2VjIG1vZGUg dHlwZXMNCj4gPiA+ICsgKi8NCj4gPiA+ICtlbnVtIGVoX2lwc2VjX21vZGVfdHlwZXMgew0KPiA+ ID4gKwlFSF9JUFNFQ19NT0RFX1RZUEVfQVBQID0gMCwNCj4gPiA+ICsJRUhfSVBTRUNfTU9ERV9U WVBFX0RSSVZFUg0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICogRXZl bnQgbW9kZSBpcHNlYyBkaXJlY3Rpb24gdHlwZXMNCj4gPiA+ICsgKi8NCj4gPiA+ICtlbnVtIGVo X2lwc2VjX2Rpcl90eXBlcyB7DQo+ID4gPiArCUVIX0lQU0VDX0RJUl9UWVBFX09VVEJPVU5EID0g MCwNCj4gPiA+ICsJRUhfSVBTRUNfRElSX1RZUEVfSU5CT1VORCwNCj4gPiA+ICt9Ow0KPiA+ID4g Kw0KPiA+ID4gIC8qIEV2ZW50IGRldiBwYXJhbXMgKi8NCj4gPiA+ICBzdHJ1Y3QgZXZlbnRkZXZf cGFyYW1zIHsNCj4gPiA+ICAJdWludDhfdCBldmVudGRldl9pZDsNCj4gPiA+IEBAIC0xODMsNiAr MTk5LDEyIEBAIHN0cnVjdCBlaF9jb25mIHsNCj4gPiA+ICAJCSAqLw0KPiA+ID4gIAl2b2lkICpt b2RlX3BhcmFtczsNCj4gPiA+ICAJCS8qKjwgTW9kZSBzcGVjaWZpYyBwYXJhbWV0ZXJzICovDQo+ ID4gPiArDQo+ID4gPiArCQkvKiogQXBwbGljYXRpb24gc3BlY2lmaWMgcGFyYW1zICovDQo+ID4g PiArCWVudW0gZWhfaXBzZWNfbW9kZV90eXBlcyBpcHNlY19tb2RlOw0KPiA+ID4gKwkJLyoqPCBN b2RlIG9mIGlwc2VjIHJ1biAqLw0KPiA+ID4gKwllbnVtIGVoX2lwc2VjX2Rpcl90eXBlcyBpcHNl Y19kaXI7DQo+ID4gPiArCQkvKio8IERpcmVjdGlvbiBvZiBpcHNlYyBwcm9jZXNzaW5nICovDQo+ ID4gPiAgfTsNCj4gPiA+DQo+ID4gPiAgLyogV29ya2VycyByZWdpc3RlcmVkIGJ5IHRoZSBhcHBs aWNhdGlvbiAqLyBAQCAtMTk0LDYgKzIxNiwxMCBAQA0KPiA+ID4gc3RydWN0IGVoX2FwcF93b3Jr ZXJfcGFyYW1zIHsNCj4gPiA+ICAJCQkvKio8IFNwZWNpZnkgc3RhdHVzIG9mIHJ4IHR5cGUgYnVy c3QgKi8NCj4gPiA+ICAJCQl1aW50NjRfdCB0eF9pbnRlcm5hbF9wb3J0IDogMTsNCj4gPiA+ICAJ CQkvKio8IFNwZWNpZnkgd2hldGhlciB0eCBpbnRlcm5hbCBwb3J0IGlzIGF2YWlsYWJsZSAqLw0K PiA+ID4gKwkJCXVpbnQ2NF90IGlwc2VjX21vZGUgOiAxOw0KPiA+ID4gKwkJCS8qKjwgU3BlY2lm eSBpcHNlYyBwcm9jZXNzaW5nIGxldmVsICovDQo+ID4gPiArCQkJdWludDY0X3QgaXBzZWNfZGly IDogMTsNCj4gPiA+ICsJCQkvKio8IFNwZWNpZnkgZGlyZWN0aW9uIG9mIGlwc2VjICovDQo+ID4g PiAgCQl9Ow0KPiA+ID4gIAkJdWludDY0X3QgdTY0Ow0KPiA+ID4gIAl9IGNhcDsNCj4gPiA+IGRp ZmYgLS1naXQgYS9leGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jDQo+ID4gPiBiL2V4 YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLXNlY2d3LmMNCj4gPiA+IGluZGV4IDc1MDY5MjIuLmM1 ZDk1YjkgMTAwNjQ0DQo+ID4gPiAtLS0gYS9leGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNn dy5jDQo+ID4gPiArKysgYi9leGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jDQo+ID4g PiBAQCAtMiw2ICsyLDcgQEANCj4gPiA+ICAgKiBDb3B5cmlnaHQoYykgMjAxNiBJbnRlbCBDb3Jw b3JhdGlvbg0KPiA+ID4gICAqLw0KPiA+ID4NCj4gPiA+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0K PiA+ID4gICNpbmNsdWRlIDxzdGRpby5oPg0KPiA+ID4gICNpbmNsdWRlIDxzdGRsaWIuaD4NCj4g PiA+ICAjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gPiBAQCAtMTQsNiArMTUsNyBAQA0KPiA+ID4g ICNpbmNsdWRlIDxzeXMvcXVldWUuaD4NCj4gPiA+ICAjaW5jbHVkZSA8c3RkYXJnLmg+DQo+ID4g PiAgI2luY2x1ZGUgPGVycm5vLmg+DQo+ID4gPiArI2luY2x1ZGUgPHNpZ25hbC5oPg0KPiA+ID4g ICNpbmNsdWRlIDxnZXRvcHQuaD4NCj4gPiA+DQo+ID4gPiAgI2luY2x1ZGUgPHJ0ZV9jb21tb24u aD4NCj4gPiA+IEBAIC00MSwxMiArNDMsMTcgQEANCj4gPiA+ICAjaW5jbHVkZSA8cnRlX2poYXNo Lmg+DQo+ID4gPiAgI2luY2x1ZGUgPHJ0ZV9jcnlwdG9kZXYuaD4NCj4gPiA+ICAjaW5jbHVkZSA8 cnRlX3NlY3VyaXR5Lmg+DQo+ID4gPiArI2luY2x1ZGUgPHJ0ZV9iaXRtYXAuaD4NCj4gPiA+ICsj aW5jbHVkZSA8cnRlX2V2ZW50ZGV2Lmg+DQo+ID4gPiAgI2luY2x1ZGUgPHJ0ZV9pcC5oPg0KPiA+ ID4gICNpbmNsdWRlIDxydGVfaXBfZnJhZy5oPg0KPiA+ID4NCj4gPiA+ICsjaW5jbHVkZSAiZXZl bnRfaGVscGVyLmgiDQo+ID4gPiAgI2luY2x1ZGUgImlwc2VjLmgiDQo+ID4gPiAgI2luY2x1ZGUg InBhcnNlci5oIg0KPiA+ID4NCj4gPiA+ICt2b2xhdGlsZSBib29sIGZvcmNlX3F1aXQ7DQo+ID4g PiArDQo+ID4gPiAgI2RlZmluZSBSVEVfTE9HVFlQRV9JUFNFQyBSVEVfTE9HVFlQRV9VU0VSMQ0K PiA+ID4NCj4gPiA+ICAjZGVmaW5lIE1BWF9KVU1CT19QS1RfTEVOICA5NjAwDQo+ID4gPiBAQCAt MTMzLDEyICsxNDAsMjEgQEAgc3RydWN0IGZsb3dfaW5mbw0KPiA+IGZsb3dfaW5mb190YmxbUlRF X01BWF9FVEhQT1JUU107DQo+ID4gPiAgI2RlZmluZSBDTURfTElORV9PUFRfQ09ORklHCQkiY29u ZmlnIg0KPiA+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX1NJTkdMRV9TQQkJInNpbmdsZS1zYSIN Cj4gPiA+ICAjZGVmaW5lIENNRF9MSU5FX09QVF9DUllQVE9ERVZfTUFTSwkiY3J5cHRvZGV2X21h c2siDQo+ID4gPiArI2RlZmluZSBDTURfTElORV9PUFRfVFJBTlNGRVJfTU9ERQkidHJhbnNmZXIt bW9kZSINCj4gPiA+ICsjZGVmaW5lIENNRF9MSU5FX09QVF9TQ0hFRFVMRV9UWVBFCSJzY2hlZHVs ZS10eXBlIg0KPiA+ID4gKyNkZWZpbmUgQ01EX0xJTkVfT1BUX0lQU0VDX01PREUJCSJwcm9jZXNz LW1vZGUiDQo+ID4gPiArI2RlZmluZSBDTURfTElORV9PUFRfSVBTRUNfRElSCQkicHJvY2Vzcy1k aXIiDQo+ID4gPiAgI2RlZmluZSBDTURfTElORV9PUFRfUlhfT0ZGTE9BRAkJInJ4b2ZmbG9hZCIN Cj4gPiA+ICAjZGVmaW5lIENNRF9MSU5FX09QVF9UWF9PRkZMT0FECQkidHhvZmZsb2FkIg0KPiA+ ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX1JFQVNTRU1CTEUJCSJyZWFzc2VtYmxlIg0KPiA+ID4g ICNkZWZpbmUgQ01EX0xJTkVfT1BUX01UVQkJIm10dSINCj4gPiA+ICAjZGVmaW5lIENNRF9MSU5F X09QVF9GUkFHX1RUTAkJImZyYWctdHRsIg0KPiA+ID4NCj4gPiA+ICsjZGVmaW5lIENNRF9MSU5F X0FSR19BUFAgImFwcCINCj4gPiA+ICsjZGVmaW5lIENNRF9MSU5FX0FSR19EUlYgImRydiINCj4g PiA+ICsjZGVmaW5lIENNRF9MSU5FX0FSR19JTkIgImluIg0KPiA+ID4gKyNkZWZpbmUgQ01EX0xJ TkVfQVJHX09VVCAib3V0Ig0KPiA+ID4gKw0KPiA+ID4gIGVudW0gew0KPiA+ID4gIAkvKiBsb25n IG9wdGlvbnMgbWFwcGVkIHRvIGEgc2hvcnQgb3B0aW9uICovDQo+ID4gPg0KPiA+ID4gQEAgLTE0 OSw3ICsxNjUsMTEgQEAgZW51bSB7DQo+ID4gPiAgCUNNRF9MSU5FX09QVF9DT05GSUdfTlVNLA0K PiA+ID4gIAlDTURfTElORV9PUFRfU0lOR0xFX1NBX05VTSwNCj4gPiA+ICAJQ01EX0xJTkVfT1BU X0NSWVBUT0RFVl9NQVNLX05VTSwNCj4gPiA+ICsJQ01EX0xJTkVfT1BUX1RSQU5TRkVSX01PREVf TlVNLA0KPiA+ID4gKwlDTURfTElORV9PUFRfU0NIRURVTEVfVFlQRV9OVU0sDQo+ID4gPiAgCUNN RF9MSU5FX09QVF9SWF9PRkZMT0FEX05VTSwNCj4gPiA+ICsJQ01EX0xJTkVfT1BUX0lQU0VDX01P REVfTlVNLA0KPiA+ID4gKwlDTURfTElORV9PUFRfSVBTRUNfRElSX05VTSwNCj4gPiA+ICAJQ01E X0xJTkVfT1BUX1RYX09GRkxPQURfTlVNLA0KPiA+ID4gIAlDTURfTElORV9PUFRfUkVBU1NFTUJM RV9OVU0sDQo+ID4gPiAgCUNNRF9MSU5FX09QVF9NVFVfTlVNLA0KPiA+ID4gQEAgLTE2MCw2ICsx ODAsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbGdvcHRzW10gPSB7DQo+ID4gPiAg CXtDTURfTElORV9PUFRfQ09ORklHLCAxLCAwLCBDTURfTElORV9PUFRfQ09ORklHX05VTX0sDQo+ ID4gPiAgCXtDTURfTElORV9PUFRfU0lOR0xFX1NBLCAxLCAwLA0KPiA+IENNRF9MSU5FX09QVF9T SU5HTEVfU0FfTlVNfSwNCj4gPiA+ICAJe0NNRF9MSU5FX09QVF9DUllQVE9ERVZfTUFTSywgMSwg MCwNCj4gPiA+IENNRF9MSU5FX09QVF9DUllQVE9ERVZfTUFTS19OVU19LA0KPiA+ID4gKwl7Q01E X0xJTkVfT1BUX1RSQU5TRkVSX01PREUsIDEsIDAsDQo+ID4gQ01EX0xJTkVfT1BUX1RSQU5TRkVS X01PREVfTlVNfSwNCj4gPiA+ICsJe0NNRF9MSU5FX09QVF9TQ0hFRFVMRV9UWVBFLCAxLCAwLA0K PiA+IENNRF9MSU5FX09QVF9TQ0hFRFVMRV9UWVBFX05VTX0sDQo+ID4gPiArCXtDTURfTElORV9P UFRfSVBTRUNfTU9ERSwgMSwgMCwNCj4gPiBDTURfTElORV9PUFRfSVBTRUNfTU9ERV9OVU19LA0K PiA+ID4gKwl7Q01EX0xJTkVfT1BUX0lQU0VDX0RJUiwgMSwgMCwNCj4gPiBDTURfTElORV9PUFRf SVBTRUNfRElSX05VTX0sDQo+ID4gPiAgCXtDTURfTElORV9PUFRfUlhfT0ZGTE9BRCwgMSwgMCwN Cj4gPiBDTURfTElORV9PUFRfUlhfT0ZGTE9BRF9OVU19LA0KPiA+ID4gIAl7Q01EX0xJTkVfT1BU X1RYX09GRkxPQUQsIDEsIDAsDQo+ID4gQ01EX0xJTkVfT1BUX1RYX09GRkxPQURfTlVNfSwNCj4g PiA+ICAJe0NNRF9MSU5FX09QVF9SRUFTU0VNQkxFLCAxLCAwLA0KPiA+IENNRF9MSU5FX09QVF9S RUFTU0VNQkxFX05VTX0sIEBADQo+ID4gPiAtMTA5NCw4ICsxMTE4LDggQEAgZHJhaW5fb3V0Ym91 bmRfY3J5cHRvX3F1ZXVlcyhjb25zdCBzdHJ1Y3QNCj4gPiA+IGxjb3JlX2NvbmYgKnFjb25mLCAg fQ0KPiA+ID4NCj4gPiA+ICAvKiBtYWluIHByb2Nlc3NpbmcgbG9vcCAqLw0KPiA+ID4gLXN0YXRp YyBpbnQzMl90DQo+ID4gPiAtbWFpbl9sb29wKF9fYXR0cmlidXRlX18oKHVudXNlZCkpIHZvaWQg KmR1bW15KQ0KPiA+ID4gK3ZvaWQNCj4gPiA+ICtpcHNlY19wb2xsX21vZGVfd29ya2VyKHZvaWQp DQo+ID4gPiAgew0KPiA+ID4gIAlzdHJ1Y3QgcnRlX21idWYgKnBrdHNbTUFYX1BLVF9CVVJTVF07 DQo+ID4gPiAgCXVpbnQzMl90IGxjb3JlX2lkOw0KPiA+ID4gQEAgLTExMzcsNyArMTE2MSw3IEBA IG1haW5fbG9vcChfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSB2b2lkDQo+ID4gKmR1bW15KQ0KPiA+ ID4gIAlpZiAocWNvbmYtPm5iX3J4X3F1ZXVlID09IDApIHsNCj4gPiA+ICAJCVJURV9MT0coREVC VUcsIElQU0VDLCAibGNvcmUgJXUgaGFzIG5vdGhpbmcgdG8gZG9cbiIsDQo+ID4gPiAgCQkJbGNv cmVfaWQpOw0KPiA+ID4gLQkJcmV0dXJuIDA7DQo+ID4gPiArCQlyZXR1cm47DQo+ID4gPiAgCX0N Cj4gPiA+DQo+ID4gPiAgCVJURV9MT0coSU5GTywgSVBTRUMsICJlbnRlcmluZyBtYWluIGxvb3Ag b24gbGNvcmUgJXVcbiIsIGxjb3JlX2lkKTsNCj4gPiA+IEBAIC0xMTUwLDcgKzExNzQsNyBAQCBt YWluX2xvb3AoX19hdHRyaWJ1dGVfXygodW51c2VkKSkgdm9pZA0KPiA+ICpkdW1teSkNCj4gPiA+ ICAJCQlsY29yZV9pZCwgcG9ydGlkLCBxdWV1ZWlkKTsNCj4gPiA+ICAJfQ0KPiA+ID4NCj4gPiA+ IC0Jd2hpbGUgKDEpIHsNCj4gPiA+ICsJd2hpbGUgKCFmb3JjZV9xdWl0KSB7DQo+ID4gPiAgCQlj dXJfdHNjID0gcnRlX3JkdHNjKCk7DQo+ID4gPg0KPiA+ID4gIAkJLyogVFggcXVldWUgYnVmZmVy IGRyYWluICovDQo+ID4gPiBAQCAtMTI3Nyw2ICsxMzAxLDEwIEBAIHByaW50X3VzYWdlKGNvbnN0 IGNoYXIgKnByZ25hbWUpDQo+ID4gPiAgCQkiIC0tY29uZmlnIChwb3J0LHF1ZXVlLGxjb3JlKVss KHBvcnQscXVldWUsbGNvcmUpXSINCj4gPiA+ICAJCSIgWy0tc2luZ2xlLXNhIFNBSURYXSINCj4g PiA+ICAJCSIgWy0tY3J5cHRvZGV2X21hc2sgTUFTS10iDQo+ID4gPiArCQkiIFstLXRyYW5zZmVy LW1vZGUgTU9ERV0iDQo+ID4gPiArCQkiIFstLXNjaGVkdWxlLXR5cGUgVFlQRV0iDQo+ID4gPiAr CQkiIFstLXByb2Nlc3MtbW9kZSBNT0RFXSINCj4gPiA+ICsJCSIgWy0tcHJvY2Vzcy1kaXIgRElS XSINCj4gPiA+ICAJCSIgWy0tIiBDTURfTElORV9PUFRfUlhfT0ZGTE9BRCAiIFJYX09GRkxPQURf TUFTS10iDQo+ID4gPiAgCQkiIFstLSIgQ01EX0xJTkVfT1BUX1RYX09GRkxPQUQgIiBUWF9PRkZM T0FEX01BU0tdIg0KPiA+ID4gIAkJIiBbLS0iIENNRF9MSU5FX09QVF9SRUFTU0VNQkxFICINCj4g PiBSRUFTU0VNQkxFX1RBQkxFX1NJWkVdIg0KPiA+ID4gQEAgLTEyOTgsNiArMTMyNiwyMiBAQCBw cmludF91c2FnZShjb25zdCBjaGFyICpwcmduYW1lKQ0KPiA+ID4gIAkJIiAgICAgICAgICAgICAg ICAgICAgIGJ5cGFzc2luZyB0aGUgU1BcbiINCj4gPiA+ICAJCSIgIC0tY3J5cHRvZGV2X21hc2sg TUFTSzogSGV4YWRlY2ltYWwgYml0bWFzayBvZiB0aGUNCj4gPiBjcnlwdG9cbiINCj4gPiA+ICAJ CSIgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyB0byBjb25maWd1cmVcbiINCj4gPiA+ ICsJCSIgIC0tdHJhbnNmZXItbW9kZSBNT0RFXG4iDQo+ID4gPiArCQkiICAgICAgICAgICAgICAg MDogUGFja2V0IHRyYW5zZmVyIHZpYSBwb2xsaW5nIChkZWZhdWx0KVxuIg0KPiA+ID4gKwkJIiAg ICAgICAgICAgICAgIDE6IFBhY2tldCB0cmFuc2ZlciB2aWEgZXZlbnRkZXZcbiINCj4gPiA+ICsJ CSIgIC0tc2NoZWR1bGUtdHlwZSBUWVBFIHF1ZXVlIHNjaGVkdWxlIHR5cGUsIHVzZWQgb25seQ0K PiA+IHdoZW5cbiINCj4gPiA+ICsJCSIgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIG1v ZGUgaXMgc2V0IHRvIGV2ZW50ZGV2XG4iDQo+ID4gPiArCQkiICAgICAgICAgICAgICAgMDogT3Jk ZXJlZCAoZGVmYXVsdClcbiINCj4gPiA+ICsJCSIgICAgICAgICAgICAgICAxOiBBdG9taWNcbiIN Cj4gPiA+ICsJCSIgICAgICAgICAgICAgICAyOiBQYXJhbGxlbFxuIg0KPiA+DQo+ID4gRm9yIGxh c3QgdHdvLCB3aHkgbm90IHNvbWV0aGluZyBodW1hLXJlYWRhYmxlPw0KPiA+IEkuRS4gPT0gLS10 cmFuZmVyLW1vZGU9KHBvbGx8ZXZlbnQpIG9yIHNvLg0KPiA+IFNhbWUgZm9yIHNjaGVkdWxlLXR5 cGUuDQo+IA0KPiBbQW5vb2JdIFdpbGwgZG8gc28gaW4gdjIuDQo+IA0KPiA+DQo+ID4gPiArCQki ICAtLXByb2Nlc3MtbW9kZSBNT0RFIHByb2Nlc3NpbmcgbW9kZSwgdXNlZCBvbmx5DQo+ID4gd2hl blxuIg0KPiA+ID4gKwkJIiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciBtb2RlIGlzIHNl dCB0byBldmVudGRldlxuIg0KPiA+ID4gKwkJIiAgICAgICAgICAgICAgIFwiYXBwXCIgOiBhcHBs aWNhdGlvbiBtb2RlIChkZWZhdWx0KVxuIg0KPiA+ID4gKwkJIiAgICAgICAgICAgICAgIFwiZHJ2 XCIgOiBkcml2ZXIgbW9kZVxuIg0KPiA+ID4gKwkJIiAgLS1wcm9jZXNzLWRpciBESVIgcHJvY2Vz c2luZyBkaXJlY3Rpb24sIHVzZWQgb25seSB3aGVuXG4iDQo+ID4gPiArCQkiICAgICAgICAgICAg ICAgICAgICB0cmFuc2ZlciBtb2RlIGlzIHNldCB0byBldmVudGRldlxuIg0KPiA+ID4gKwkJIiAg ICAgICAgICAgICAgIFwib3V0XCIgOiBvdXRib3VuZCAoZGVmYXVsdClcbiINCj4gPiA+ICsJCSIg ICAgICAgICAgICAgICBcImluXCIgIDogaW5ib3VuZFxuIg0KPiA+DQo+ID4gSG1tIGFuZCB3aHkg aW4gZXZlbnRkZXYgbW9kZSBpdCBpcyBub3QgcG9zc2libGUgdG8gaGFuZGxlIGJvdGggaW5ib3Vu ZA0KPiA+IGFuZCBvdXRib3VuZCB0cmFmZmljPw0KPiA+IFdoZXJlIGlzIHRoZSBsaW1pdGF0aW9u OiBldmVudGRldiBmcmFtZXdvcmsvUE1EL2lwc2VjLXNlY2d3Pw0KPiANCj4gW0Fub29iXSBJdCdz IG5vdCBhIGxpbWl0YXRpb24gb2YgYW55IG9mIHRoZSBub2Rlcy4gVGhlIGN1cnJlbnQgaXBzZWMt c2VnY3cgaGFzIGEgZGF0YSBwYXRoIGNoZWNrIG9mIHBvcnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg aW5ib3VuZCBvcg0KPiBvdXRib3VuZCBwcm9jZXNzaW5nIG5lZWQgdG8gYmUgZG9uZS4NCj4gSW4g Y2FzZSBvZiBwb2xsLW1vZGUsIHdlIGhhdmUgc3BlY2lmaWMgY29yZXMgcG9sbGluZyBmaXhlZCBl dGggcG9ydCAmIHF1ZXVlLiBTbyB0aGUgZXh0cmEgY2hlY2sNCj4gaW52b2x2ZWQgZG9lc24ndCBj b3N0IG11Y2guDQoNCg0KPiBCdXQgaW4gY2FzZSBvZiBldmVudC1tb2RlLCB3ZSB3aWxsIGhhdmUg Ym90aCBpbmJvdW5kICYgb3V0Ym91bmQgcGFja2V0cyBlbmRpbmcgdXAgb24gc2FtZSBjb3JlLg0K DQpGb3IgcG9sbCBtb2RlIHdlIGNhbiBoYXZlIG9uZSBjb3JlIGhhbmRsaW5nIHNldmVyYWwgcG9y dHMuDQpTb21lIG9mIHRoZW0gY291bGQgYmUgaW5ib3VuZCwgb3RoZXIgb3V0Ym91bmQsIHNvIGl0 IGlzIGEgc3dpdGNoIGJhc2VkIG9uIHBvcnQgdmFsdWUuDQpNeSB0aG91Z2h0IHdhcyB0aGF0IHRo ZSBzYW1lIHN3aXRjaCBiYXNlZCBvbiBwb3J0X2lkIGNhbiBiZSBkb25lIGluIGV2ZW50LW1vZGUg dG9vLg0KQnV0IG1pZ2h0IGJlIEkgYW0gbWlzc2luZyBzb21ldGhpbmcgaGVyZS4NCg0KPiBTbyB0 aGUgcGVuYWx0eSBvZiBydW5uaW5nIGluYm91bmQgJg0KPiBvdXRib3VuZCBhdCB0aGUgc2FtZSB0 aW1lIChhbmQgcmVseWluZyBvbiBkYXRhIHBhdGggY2hlY2spIGlzIG1vcmUgaW4gY2FzZSBvZiBl dmVudCBtb2RlLiBGb3IgaW5saW5lIGlwc2VjIGltcGxlbWVudGF0aW9uLCB0aGlzIGltcGFjdCBp c24ndA0KPiB0aGF0IG11Y2ggYW5kIHdlIHdlcmUgYWJsZSB0byBtaW5pbWl6ZSB0aGUgcGVyZiBk ZWdyYWRhdGlvbiB0byAxJS4gSSB3b3VsZCBleHBlY3QgbG9va2FzaWRlIGNyeXB0by9wcm90b2Nv bCB0byBoYXZlIGhpZ2hlciBpbXBhY3RzLg0KPiANCj4gU2FpZCB0aGF0LCBJJ20gb2theSB3aXRo IHJlbW92aW5nIHRoZSBleHRyYSBvcHRpb24gYW5kIHJldGFpbmluZyB0aGUgY3VycmVudCBiZWhh dmlvci4gSWYgeW91IHRoaW5rIHNpbmdsZSBpbnN0YW5jZSBvZiBpcHNlYy1zZWNndyBzaG91bGQN Cj4gd29yayBiaWRpcmVjdGlvbmFsLCBJIGNhbiBtYWtlIHRoZSByZXF1aXJlZCBjaGFuZ2VzIGFu ZCBzZWUgdGhlIHBlcmYgaW1wYWN0Lg0KDQpJIHRoaW5rIGl0IHdvdWxkIGJlIGdvb2QgaWYgZXZl bnQtbW9kZSBjb3VsZCB3b3JrIGluIGJpLWRpcmVjdGlvbmFsIHdheSAoYXMgcG9sbCBtb2RlIGRv ZXMpLA0KYnV0IHdpbGwgbGVhdmUgZmluYWwgZGVjaXNpb24gdG8geW91IGFuZCBvdGhlciBndXlz IG1vcmUgZmFtaWxpYXIgd2l0aCBldmVudC1kZXYgZGV0YWlscy4gIA0KDQo+IA0KPiA+DQo+ID4g PiAgCQkiICAtLSIgQ01EX0xJTkVfT1BUX1JYX09GRkxPQUQNCj4gPiA+ICAJCSI6IGJpdG1hc2sg b2YgdGhlIFJYIEhXIG9mZmxvYWQgY2FwYWJpbGl0aWVzIHRvIGVuYWJsZS91c2VcbiINCj4gPiA+ ICAJCSIgICAgICAgICAgICAgICAgICAgICAgICAgKERFVl9SWF9PRkZMT0FEXyopXG4iDQo+ID4g PiBAQCAtMTQzMyw3ICsxNDc3LDg5IEBAIHByaW50X2FwcF9zYV9wcm0oY29uc3Qgc3RydWN0IGFw cF9zYV9wcm0NCj4gPiAqcHJtKQ0KPiA+ID4gfQ0KPiA+ID4NCj4gPiA+ICBzdGF0aWMgaW50MzJf dA0KPiA+ID4gLXBhcnNlX2FyZ3MoaW50MzJfdCBhcmdjLCBjaGFyICoqYXJndikNCj4gPiA+ICtl aF9wYXJzZV9kZWNpbWFsKGNvbnN0IGNoYXIgKnN0cikNCj4gPiA+ICt7DQo+ID4gPiArCXVuc2ln bmVkIGxvbmcgbnVtOw0KPiA+ID4gKwljaGFyICplbmQgPSBOVUxMOw0KPiA+ID4gKw0KPiA+ID4g KwludW0gPSBzdHJ0b3VsKHN0ciwgJmVuZCwgMTApOw0KPiA+ID4gKwlpZiAoKHN0clswXSA9PSAn XDAnKSB8fCAoZW5kID09IE5VTEwpIHx8ICgqZW5kICE9ICdcMCcpKQ0KPiA+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBudW07DQo+ID4gPiArfQ0KPiA+DQo+ ID4gVGhlcmUgYWxyZWFkeSBleGlzdHMgcGFyc2VfZGVjaW1hbCgpLCB3aHkgdG8gY3JlYXRlIGEg ZHVwPw0KPiANCj4gW0Fub29iXSBXaWxsIHRoaXMgaW4gdjIuDQo+IA0KPiA+DQo+ID4gPiArDQo+ ID4gPiArc3RhdGljIGludA0KPiA+ID4gK3BhcnNlX3RyYW5zZmVyX21vZGUoc3RydWN0IGVoX2Nv bmYgKmNvbmYsIGNvbnN0IGNoYXIgKm9wdGFyZykgew0KPiA+ID4gKwlpbnQzMl90IHBhcnNlZF9k ZWM7DQo+ID4gPiArDQo+ID4gPiArCXBhcnNlZF9kZWMgPSBlaF9wYXJzZV9kZWNpbWFsKG9wdGFy Zyk7DQo+ID4gPiArCWlmIChwYXJzZWRfZGVjICE9IEVIX1BLVF9UUkFOU0ZFUl9NT0RFX1BPTEwg JiYNCj4gPiA+ICsJICAgIHBhcnNlZF9kZWMgIT0gRUhfUEtUX1RSQU5TRkVSX01PREVfRVZFTlQp IHsNCj4gPiA+ICsJCXByaW50ZigiVW5zdXBwb3J0ZWQgcGFja2V0IHRyYW5zZmVyIG1vZGUiKTsN Cj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gKwl9DQo+ID4gPiArCWNvbmYtPm1vZGUg PSBwYXJzZWRfZGVjOw0KPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArc3RhdGljIGludA0KPiA+ID4gK3BhcnNlX3NjaGVkdWxlX3R5cGUoc3RydWN0IGVoX2NvbmYg KmNvbmYsIGNvbnN0IGNoYXIgKm9wdGFyZykgew0KPiA+ID4gKwlzdHJ1Y3QgZXZlbnRtb2RlX2Nv bmYgKmVtX2NvbmYgPSBOVUxMOw0KPiA+ID4gKwlpbnQzMl90IHBhcnNlZF9kZWM7DQo+ID4gPiAr DQo+ID4gPiArCXBhcnNlZF9kZWMgPSBlaF9wYXJzZV9kZWNpbWFsKG9wdGFyZyk7DQo+ID4gPiAr CWlmIChwYXJzZWRfZGVjICE9IFJURV9TQ0hFRF9UWVBFX09SREVSRUQgJiYNCj4gPiA+ICsJICAg IHBhcnNlZF9kZWMgIT0gUlRFX1NDSEVEX1RZUEVfQVRPTUlDICYmDQo+ID4gPiArCSAgICBwYXJz ZWRfZGVjICE9IFJURV9TQ0hFRF9UWVBFX1BBUkFMTEVMKQ0KPiA+ID4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gPiArDQo+ID4gPiArCS8qIEdldCBldmVudG1vZGUgY29uZiAqLw0KPiA+ID4gKwll bV9jb25mID0gKHN0cnVjdCBldmVudG1vZGVfY29uZiAqKShjb25mLT5tb2RlX3BhcmFtcyk7DQo+ ID4gPiArDQo+ID4gPiArCWVtX2NvbmYtPmV4dF9wYXJhbXMuc2NoZWRfdHlwZSA9IHBhcnNlZF9k ZWM7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICtzdGF0aWMgaW50DQo+ID4gPiArcGFyc2VfaXBzZWNfbW9kZShzdHJ1Y3QgZWhfY29uZiAqY29u ZiwgY29uc3QgY2hhciAqb3B0YXJnKSB7DQo+ID4gPiArCWlmICghc3RybmNtcChDTURfTElORV9B UkdfQVBQLCBvcHRhcmcsDQo+ID4gc3RybGVuKENNRF9MSU5FX0FSR19BUFApKSAmJg0KPiA+ID4g KwkgICAgc3RybGVuKG9wdGFyZykgPT0gc3RybGVuKENNRF9MSU5FX0FSR19BUFApKQ0KPiA+DQo+ ID4gVWdoLCB0aGF0J3MgYW4gdWdseSBjb25zdHJ1Y3Rpb24sIHdoeSBub3QganVzdDoNCj4gPiBp ZiAoc3RyY21wKENNRF9MSU5FX0FSR19BUFAsIG9wdGFyZykgPT0gMCkgPw0KPiANCj4gW0Fub29i XSBXaWxsIGZpeCB0aGlzIGluIHYyLg0KPiANCj4gPg0KPiA+ID4gKwkJY29uZi0+aXBzZWNfbW9k ZSA9IEVIX0lQU0VDX01PREVfVFlQRV9BUFA7DQo+ID4gPiArCWVsc2UgaWYgKCFzdHJuY21wKENN RF9MSU5FX0FSR19EUlYsIG9wdGFyZywNCj4gPiBzdHJsZW4oQ01EX0xJTkVfQVJHX0RSVikpICYm DQo+ID4gPiArCQkgc3RybGVuKG9wdGFyZykgPT0gc3RybGVuKENNRF9MSU5FX0FSR19EUlYpKQ0K PiA+ID4gKwkJY29uZi0+aXBzZWNfbW9kZSA9IEVIX0lQU0VDX01PREVfVFlQRV9EUklWRVI7DQo+ ID4gPiArCWVsc2Ugew0KPiA+ID4gKwkJcHJpbnRmKCJVbnN1cHBvcnRlZCBpcHNlYyBtb2RlXG4i KTsNCj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiAr CXJldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW50DQo+ID4gPiAr cGFyc2VfaXBzZWNfZGlyKHN0cnVjdCBlaF9jb25mICpjb25mLCBjb25zdCBjaGFyICpvcHRhcmcp IHsNCj4gPiA+ICsJaWYgKCFzdHJuY21wKENNRF9MSU5FX0FSR19JTkIsIG9wdGFyZywNCj4gPiBz dHJsZW4oQ01EX0xJTkVfQVJHX0lOQikpICYmDQo+ID4gPiArCSAgICBzdHJsZW4ob3B0YXJnKSA9 PSBzdHJsZW4oQ01EX0xJTkVfQVJHX0lOQikpDQo+ID4gPiArCQljb25mLT5pcHNlY19kaXIgPSBF SF9JUFNFQ19ESVJfVFlQRV9JTkJPVU5EOw0KPiA+ID4gKwllbHNlIGlmICghc3RybmNtcChDTURf TElORV9BUkdfT1VULCBvcHRhcmcsDQo+ID4gc3RybGVuKENNRF9MSU5FX0FSR19PVVQpKSAmJg0K PiA+ID4gKwkJIHN0cmxlbihvcHRhcmcpID09IHN0cmxlbihDTURfTElORV9BUkdfT1VUKSkNCj4g PiA+ICsJCWNvbmYtPmlwc2VjX2RpciA9IEVIX0lQU0VDX0RJUl9UWVBFX09VVEJPVU5EOw0KPiA+ ID4gKwllbHNlIHsNCj4gPiA+ICsJCXByaW50ZigiVW5zdXBwb3J0ZWQgaXBzZWMgZGlyZWN0aW9u XG4iKTsNCj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4g PiArCXJldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW50MzJfdA0K PiA+ID4gK3BhcnNlX2FyZ3MoaW50MzJfdCBhcmdjLCBjaGFyICoqYXJndiwgc3RydWN0IGVoX2Nv bmYgKmVoX2NvbmYpDQo+ID4gPiAgew0KPiA+ID4gIAlpbnQgb3B0Ow0KPiA+ID4gIAlpbnQ2NF90 IHJldDsNCj4gPiA+IEBAIC0xNTM2LDYgKzE2NjIsNDMgQEAgcGFyc2VfYXJncyhpbnQzMl90IGFy Z2MsIGNoYXIgKiphcmd2KQ0KPiA+ID4gIAkJCS8qIGVsc2UgKi8NCj4gPiA+ICAJCQllbmFibGVk X2NyeXB0b2Rldl9tYXNrID0gcmV0Ow0KPiA+ID4gIAkJCWJyZWFrOw0KPiA+ID4gKw0KPiA+ID4g KwkJY2FzZSBDTURfTElORV9PUFRfVFJBTlNGRVJfTU9ERV9OVU06DQo+ID4gPiArCQkJcmV0ID0g cGFyc2VfdHJhbnNmZXJfbW9kZShlaF9jb25mLCBvcHRhcmcpOw0KPiA+ID4gKwkJCWlmIChyZXQg PCAwKSB7DQo+ID4gPiArCQkJCXByaW50ZigiSW52YWxpZCBwYWNrZXQgdHJhbnNmZXIgbW9kZVxu Iik7DQo+ID4gPiArCQkJCXByaW50X3VzYWdlKHByZ25hbWUpOw0KPiA+ID4gKwkJCQlyZXR1cm4g LTE7DQo+ID4gPiArCQkJfQ0KPiA+ID4gKwkJCWJyZWFrOw0KPiA+ID4gKw0KPiA+ID4gKwkJY2Fz ZSBDTURfTElORV9PUFRfU0NIRURVTEVfVFlQRV9OVU06DQo+ID4gPiArCQkJcmV0ID0gcGFyc2Vf c2NoZWR1bGVfdHlwZShlaF9jb25mLCBvcHRhcmcpOw0KPiA+ID4gKwkJCWlmIChyZXQgPCAwKSB7 DQo+ID4gPiArCQkJCXByaW50ZigiSW52YWxpZCBxdWV1ZSBzY2hlZHVsZSB0eXBlXG4iKTsNCj4g PiA+ICsJCQkJcHJpbnRfdXNhZ2UocHJnbmFtZSk7DQo+ID4gPiArCQkJCXJldHVybiAtMTsNCj4g PiA+ICsJCQl9DQo+ID4gPiArCQkJYnJlYWs7DQo+ID4gPiArDQo+ID4gPiArCQljYXNlIENNRF9M SU5FX09QVF9JUFNFQ19NT0RFX05VTToNCj4gPiA+ICsJCQlyZXQgPSBwYXJzZV9pcHNlY19tb2Rl KGVoX2NvbmYsIG9wdGFyZyk7DQo+ID4gPiArCQkJaWYgKHJldCA8IDApIHsNCj4gPiA+ICsJCQkJ cHJpbnRmKCJJbnZhbGlkIGlwc2VjIG1vZGVcbiIpOw0KPiA+ID4gKwkJCQlwcmludF91c2FnZShw cmduYW1lKTsNCj4gPiA+ICsJCQkJcmV0dXJuIC0xOw0KPiA+ID4gKwkJCX0NCj4gPiA+ICsJCQli cmVhazsNCj4gPiA+ICsNCj4gPiA+ICsJCWNhc2UgQ01EX0xJTkVfT1BUX0lQU0VDX0RJUl9OVU06 DQo+ID4gPiArCQkJcmV0ID0gcGFyc2VfaXBzZWNfZGlyKGVoX2NvbmYsIG9wdGFyZyk7DQo+ID4g PiArCQkJaWYgKHJldCA8IDApIHsNCj4gPiA+ICsJCQkJcHJpbnRmKCJJbnZhbGlkIGlwc2VjIGRp cmVjdGlvblxuIik7DQo+ID4gPiArCQkJCXByaW50X3VzYWdlKHByZ25hbWUpOw0KPiA+ID4gKwkJ CQlyZXR1cm4gLTE7DQo+ID4gPiArCQkJfQ0KPiA+ID4gKwkJCWJyZWFrOw0KPiA+ID4gKw0KPiA+ ID4gIAkJY2FzZSBDTURfTElORV9PUFRfUlhfT0ZGTE9BRF9OVU06DQo+ID4gPiAgCQkJcmV0ID0g cGFyc2VfbWFzayhvcHRhcmcsICZkZXZfcnhfb2ZmbG9hZCk7DQo+ID4gPiAgCQkJaWYgKHJldCAh PSAwKSB7DQo+ID4gPiBAQCAtMjQ1Nyw2ICsyNjIwLDEzMiBAQCBjcmVhdGVfZGVmYXVsdF9pcHNl Y19mbG93KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gdWludDY0X3Qgcnhfb2ZmbG9hZHMpDQo+ID4g PiAgCXJldHVybiByZXQ7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICtzdGF0aWMgc3RydWN0IGVo X2NvbmYgKg0KPiA+ID4gK2VoX2NvbmZfaW5pdCh2b2lkKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3Ry dWN0IGV2ZW50bW9kZV9jb25mICplbV9jb25mID0gTlVMTDsNCj4gPiA+ICsJc3RydWN0IGVoX2Nv bmYgKmNvbmYgPSBOVUxMOw0KPiA+ID4gKwl1bnNpZ25lZCBpbnQgZXRoX2NvcmVfaWQ7DQo+ID4g PiArCXVpbnQzMl90IG5iX2J5dGVzOw0KPiA+ID4gKwl2b2lkICptZW0gPSBOVUxMOw0KPiA+ID4g Kw0KPiA+ID4gKwkvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIGNvbmZpZyAqLw0KPiA+ID4gKwljb25m ID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgZWhfY29uZikpOw0KPiA+ID4gKwlpZiAoY29uZiA9 PSBOVUxMKSB7DQo+ID4gPiArCQlwcmludGYoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9y IGV2ZW50bW9kZSBoZWxwZXINCj4gPiBjb25mIik7DQo+ID4gPiArCQlnb3RvIGVycjsNCj4gPiA+ ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwkvKiBTZXQgZGVmYXVsdCBjb25mICovDQo+ID4gPiArDQo+ ID4gPiArCS8qIFBhY2tldCB0cmFuc2ZlciBtb2RlOiBwb2xsICovDQo+ID4gPiArCWNvbmYtPm1v ZGUgPSBFSF9QS1RfVFJBTlNGRVJfTU9ERV9QT0xMOw0KPiA+ID4gKwljb25mLT5pcHNlY19tb2Rl ID0gRUhfSVBTRUNfTU9ERV9UWVBFX0FQUDsNCj4gPiA+ICsJY29uZi0+aXBzZWNfZGlyID0gRUhf SVBTRUNfRElSX1RZUEVfT1VUQk9VTkQ7DQo+ID4gPiArDQo+ID4gPiArCS8qIEtlZXAgYWxsIGV0 aGVybmV0IHBvcnRzIGVuYWJsZWQgYnkgZGVmYXVsdCAqLw0KPiA+ID4gKwljb25mLT5ldGhfcG9y dG1hc2sgPSAtMTsNCj4gPiA+ICsNCj4gPiA+ICsJLyogQWxsb2NhdGUgbWVtb3J5IGZvciBldmVu dCBtb2RlIHBhcmFtcyAqLw0KPiA+ID4gKwljb25mLT5tb2RlX3BhcmFtcyA9DQo+ID4gPiArCQlj YWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBldmVudG1vZGVfY29uZikpOw0KPiA+ID4gKwlpZiAoY29u Zi0+bW9kZV9wYXJhbXMgPT0gTlVMTCkgew0KPiA+ID4gKwkJcHJpbnRmKCJGYWlsZWQgdG8gYWxs b2NhdGUgbWVtb3J5IGZvciBldmVudCBtb2RlIHBhcmFtcyIpOw0KPiA+ID4gKwkJZ290byBlcnI7 DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJLyogR2V0IGV2ZW50bW9kZSBjb25mICovDQo+ ID4gPiArCWVtX2NvbmYgPSAoc3RydWN0IGV2ZW50bW9kZV9jb25mICopKGNvbmYtPm1vZGVfcGFy YW1zKTsNCj4gPiA+ICsNCj4gPiA+ICsJLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYml0bWFw IGZvciBldGggY29yZXMgKi8NCj4gPiA+ICsJbmJfYnl0ZXMgPSBydGVfYml0bWFwX2dldF9tZW1v cnlfZm9vdHByaW50KFJURV9NQVhfTENPUkUpOw0KPiA+ID4gKwlpZiAoIW5iX2J5dGVzKSB7DQo+ ID4gPiArCQlwcmludGYoIkZhaWxlZCB0byBnZXQgYml0bWFwIGZvb3RwcmludCIpOw0KPiA+ID4g KwkJZ290byBlcnI7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJbWVtID0gcnRlX3ptYWxs b2MoImV2ZW50LWhlbHBlci1ldGhjb3JlLWJpdG1hcCIsIG5iX2J5dGVzLA0KPiA+ID4gKwkJCSAg UlRFX0NBQ0hFX0xJTkVfU0laRSk7DQo+ID4gPiArCWlmICghbWVtKSB7DQo+ID4gPiArCQlwcmlu dGYoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV0aCBjb3JlcyBiaXRtYXBcbiIpOw0K PiA+ID4gKwkJZ290byBlcnI7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJZW1fY29uZi0+ ZXRoX2NvcmVfbWFzayA9IHJ0ZV9iaXRtYXBfaW5pdChSVEVfTUFYX0xDT1JFLA0KPiA+IG1lbSwg bmJfYnl0ZXMpOw0KPiA+ID4gKwlpZiAoIWVtX2NvbmYtPmV0aF9jb3JlX21hc2spIHsNCj4gPiA+ ICsJCXByaW50ZigiRmFpbGVkIHRvIGluaXRpYWxpemUgYml0bWFwIik7DQo+ID4gPiArCQlnb3Rv IGVycjsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwkvKiBTY2hlZHVsZSB0eXBlOiBvcmRl cmVkICovDQo+ID4gPiArCWVtX2NvbmYtPmV4dF9wYXJhbXMuc2NoZWRfdHlwZSA9IFJURV9TQ0hF RF9UWVBFX09SREVSRUQ7DQo+ID4gPiArDQo+ID4gPiArCS8qIFNldCB0d28gY29yZXMgYXMgZXRo IGNvcmVzIGZvciBSeCAmIFR4ICovDQo+ID4gPiArDQo+ID4gPiArCS8qIFVzZSBmaXJzdCBjb3Jl IG90aGVyIHRoYW4gbWFzdGVyIGNvcmUgYXMgUnggY29yZSAqLw0KPiA+ID4gKwlldGhfY29yZV9p ZCA9IHJ0ZV9nZXRfbmV4dF9sY29yZSgwLAkvKiBjdXJyIGNvcmUgKi8NCj4gPiA+ICsJCQkJCSAx LAkvKiBza2lwIG1hc3RlciBjb3JlICovDQo+ID4gPiArCQkJCQkgMAkvKiB3cmFwICovKTsNCj4g PiA+ICsNCj4gPiA+ICsJcnRlX2JpdG1hcF9zZXQoZW1fY29uZi0+ZXRoX2NvcmVfbWFzaywgZXRo X2NvcmVfaWQpOw0KPiA+ID4gKw0KPiA+ID4gKwkvKiBVc2UgbmV4dCBjb3JlIGFzIFR4IGNvcmUg Ki8NCj4gPiA+ICsJZXRoX2NvcmVfaWQgPSBydGVfZ2V0X25leHRfbGNvcmUoZXRoX2NvcmVfaWQs CS8qIGN1cnIgY29yZQ0KPiA+ICovDQo+ID4gPiArCQkJCQkgMSwJCS8qIHNraXAgbWFzdGVyIGNv cmUgKi8NCj4gPiA+ICsJCQkJCSAwCQkvKiB3cmFwICovKTsNCj4gPiA+ICsNCj4gPiA+ICsJcnRl X2JpdG1hcF9zZXQoZW1fY29uZi0+ZXRoX2NvcmVfbWFzaywgZXRoX2NvcmVfaWQpOw0KPiA+ID4g Kw0KPiA+ID4gKwlyZXR1cm4gY29uZjsNCj4gPiA+ICtlcnI6DQo+ID4gPiArCXJ0ZV9mcmVlKG1l bSk7DQo+ID4gPiArCWZyZWUoZW1fY29uZik7DQo+ID4gPiArCWZyZWUoY29uZik7DQo+ID4gPiAr CXJldHVybiBOVUxMOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdm9pZA0KPiA+ ID4gK2VoX2NvbmZfdW5pbml0KHN0cnVjdCBlaF9jb25mICpjb25mKQ0KPiA+ID4gK3sNCj4gPiA+ ICsJc3RydWN0IGV2ZW50bW9kZV9jb25mICplbV9jb25mID0gTlVMTDsNCj4gPiA+ICsNCj4gPiA+ ICsJLyogR2V0IGV2ZW50bW9kZSBjb25mICovDQo+ID4gPiArCWVtX2NvbmYgPSAoc3RydWN0IGV2 ZW50bW9kZV9jb25mICopKGNvbmYtPm1vZGVfcGFyYW1zKTsNCj4gPiA+ICsNCj4gPiA+ICsJLyog RnJlZSBldmVubW9kZSBjb25maWd1cmF0aW9uIG1lbW9yeSAqLw0KPiA+ID4gKwlydGVfZnJlZShl bV9jb25mLT5ldGhfY29yZV9tYXNrKTsNCj4gPiA+ICsJZnJlZShlbV9jb25mKTsNCj4gPiA+ICsJ ZnJlZShjb25mKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQNCj4gPiA+ ICtzaWduYWxfaGFuZGxlcihpbnQgc2lnbnVtKQ0KPiA+ID4gK3sNCj4gPiA+ICsJaWYgKHNpZ251 bSA9PSBTSUdJTlQgfHwgc2lnbnVtID09IFNJR1RFUk0pIHsNCj4gPiA+ICsJCXVpbnQxNl90IHBv cnRfaWQ7DQo+ID4gPiArCQlwcmludGYoIlxuXG5TaWduYWwgJWQgcmVjZWl2ZWQsIHByZXBhcmlu ZyB0byBleGl0Li4uXG4iLA0KPiA+ID4gKwkJCQlzaWdudW0pOw0KPiA+ID4gKwkJZm9yY2VfcXVp dCA9IHRydWU7DQo+ID4gPiArDQo+ID4gPiArCQkvKiBEZXN0cm95IHRoZSBkZWZhdWx0IGlwc2Vj IGZsb3cgKi8NCj4gPiA+ICsJCVJURV9FVEhfRk9SRUFDSF9ERVYocG9ydF9pZCkgew0KPiA+ID4g KwkJCWlmICgoZW5hYmxlZF9wb3J0X21hc2sgJiAoMSA8PCBwb3J0X2lkKSkgPT0gMCkNCj4gPiA+ ICsJCQkJY29udGludWU7DQo+ID4gPiArCQkJaWYgKGZsb3dfaW5mb190YmxbcG9ydF9pZF0ucnhf ZGVmX2Zsb3cpIHsNCj4gPiA+ICsJCQkJc3RydWN0IHJ0ZV9mbG93X2Vycm9yIGVycjsNCj4gPiA+ ICsJCQkJaW50IHJldDsNCj4gPg0KPiA+IEFzIHdlIGFyZSBnb2luZyB0byBjYWxsIGRldl9zdG9w KCksIGV0Yy4gYXQgZm9yY2VfcXVpdCBiZWxvdywgaXMgdGhlcmUgYW55DQo+ID4gcmVhc29uIHRv IGNhbGwgcnRlX2Zsb3dfZGVzdHJveSgpIGhlcmU/DQo+ID4gSnVzdCBjdXJpb3VzLg0KPiANCj4g W0Fub29iXSBkZXZfc3RvcCgpIHNob3VsZCBjbGVhciBhbGwgdGhlIHJ0ZV9mbG93IGVudHJpZXMu IEJ1dCBkb2luZyBpdCBmcm9tIHRoZSBhcHAgYXMgYSBnb29kIGNpdGl6ZW4uIPCfmIoNCj4gDQo+ IEkgY2FuIHJlbW92ZSBpdCBzaW5jZSB0aGUgc2FtZSBpcyBub3QgZG9uZSBmb3IgU0Egc3BlY2lm aWMgcnRlX2Zsb3dzIGNyZWF0ZWQgZm9yIGlubGluZSBjcnlwdG8uDQoNCk5vIG5lZWQgdG8gcmVt b3ZlLg0KTXkgcXVlc3Rpb24gd2FzIGp1c3Qgc3R5bGlzaCBvbmU6DQp3aHkgbm90IHRvIGRvIGl0 IGF0IHRoZSBzYW1lIHBsYWNlIHdoZXJlIGRldl9zdG9wKCkvZGV2X2Nsb3NlKCkgaXMgZG9uZSwN CnRvIGhhdmUgZXZlcnl0aGluZyBpbiBvbmUgcGxhY2UuDQoNCj4gDQo+ID4NCj4gPiA+ICsJCQkJ cmV0ID0gcnRlX2Zsb3dfZGVzdHJveShwb3J0X2lkLA0KPiA+ID4gKwkJCQkJZmxvd19pbmZvX3Ri bFtwb3J0X2lkXS5yeF9kZWZfZmxvdywNCj4gPiA+ICsJCQkJCSZlcnIpOw0KPiA+ID4gKwkJCQlp ZiAocmV0KQ0KPiA+ID4gKwkJCQkJUlRFX0xPRyhFUlIsIElQU0VDLA0KPiA+ID4gKwkJCQkJIkZh aWxlZCB0byBkZXN0cm95IGZsb3cgZm9yIHBvcnQgJXUsICINCj4gPiA+ICsJCQkJCSJlcnIgbXNn OiAlc1xuIiwgcG9ydF9pZCwNCj4gPiBlcnIubWVzc2FnZSk7DQo+ID4gPiArCQkJfQ0KPiA+ID4g KwkJfQ0KPiA+ID4gKwl9DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gIGludDMyX3QNCj4gPiA+ ICBtYWluKGludDMyX3QgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4gPiAgew0KPiA+ID4gQEAgLTI0 NjYsNiArMjc1NSw3IEBAIG1haW4oaW50MzJfdCBhcmdjLCBjaGFyICoqYXJndikNCj4gPiA+ICAJ dWludDhfdCBzb2NrZXRfaWQ7DQo+ID4gPiAgCXVpbnQxNl90IHBvcnRpZDsNCj4gPiA+ICAJdWlu dDY0X3QgcmVxX3J4X29mZmxvYWRzLCByZXFfdHhfb2ZmbG9hZHM7DQo+ID4gPiArCXN0cnVjdCBl aF9jb25mICplaF9jb25mID0gTlVMTDsNCj4gPiA+ICAJc2l6ZV90IHNlc3Nfc3o7DQo+ID4gPg0K PiA+ID4gIAkvKiBpbml0IEVBTCAqLw0KPiA+ID4gQEAgLTI0NzUsOCArMjc2NSwxNyBAQCBtYWlu KGludDMyX3QgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4gPiAgCWFyZ2MgLT0gcmV0Ow0KPiA+ID4g IAlhcmd2ICs9IHJldDsNCj4gPiA+DQo+ID4gPiArCWZvcmNlX3F1aXQgPSBmYWxzZTsNCj4gPiA+ ICsJc2lnbmFsKFNJR0lOVCwgc2lnbmFsX2hhbmRsZXIpOw0KPiA+ID4gKwlzaWduYWwoU0lHVEVS TSwgc2lnbmFsX2hhbmRsZXIpOw0KPiA+ID4gKw0KPiA+ID4gKwkvKiBpbml0aWFsaXplIGV2ZW50 IGhlbHBlciBjb25maWd1cmF0aW9uICovDQo+ID4gPiArCWVoX2NvbmYgPSBlaF9jb25mX2luaXQo KTsNCj4gPiA+ICsJaWYgKGVoX2NvbmYgPT0gTlVMTCkNCj4gPiA+ICsJCXJ0ZV9leGl0KEVYSVRf RkFJTFVSRSwgIkZhaWxlZCB0byBpbml0IGV2ZW50IGhlbHBlciBjb25maWciKTsNCj4gPiA+ICsN Cj4gPiA+ICAJLyogcGFyc2UgYXBwbGljYXRpb24gYXJndW1lbnRzIChhZnRlciB0aGUgRUFMIG9u ZXMpICovDQo+ID4gPiAtCXJldCA9IHBhcnNlX2FyZ3MoYXJnYywgYXJndik7DQo+ID4gPiArCXJl dCA9IHBhcnNlX2FyZ3MoYXJnYywgYXJndiwgZWhfY29uZik7DQo+ID4gPiAgCWlmIChyZXQgPCAw KQ0KPiA+ID4gIAkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiSW52YWxpZCBwYXJhbWV0ZXJzXG4i KTsNCj4gPiA+DQo+ID4gPiBAQCAtMjU5MiwxMiArMjg5MSw0MyBAQCBtYWluKGludDMyX3QgYXJn YywgY2hhciAqKmFyZ3YpDQo+ID4gPg0KPiA+ID4gIAljaGVja19hbGxfcG9ydHNfbGlua19zdGF0 dXMoZW5hYmxlZF9wb3J0X21hc2spOw0KPiA+ID4NCj4gPiA+ICsJLyoNCj4gPiA+ICsJICogU2V0 IHRoZSBlbmFibGVkIHBvcnQgbWFzayBpbiBoZWxwZXIgY29uZmlnIGZvciB1c2UgYnkgaGVscGVy DQo+ID4gPiArCSAqIHN1Yi1zeXN0ZW0uIFRoaXMgd2lsbCBiZSB1c2VkIHdoaWxlIGludGlhbGl6 aW5nIGRldmljZXMgdXNpbmcNCj4gPiA+ICsJICogaGVscGVyIHN1Yi1zeXN0ZW0uDQo+ID4gPiAr CSAqLw0KPiA+ID4gKwllaF9jb25mLT5ldGhfcG9ydG1hc2sgPSBlbmFibGVkX3BvcnRfbWFzazsN Cj4gPiA+ICsNCj4gPiA+ICsJLyogSW5pdGlhbGl6ZSBldmVudG1vZGUgY29tcG9uZW50cyAqLw0K PiA+ID4gKwlyZXQgPSBlaF9kZXZzX2luaXQoZWhfY29uZik7DQo+ID4gPiArCWlmIChyZXQgPCAw KQ0KPiA+ID4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiZWhfZGV2c19pbml0IGZhaWxlZCwg ZXJyPSVkXG4iLA0KPiA+IHJldCk7DQo+ID4gPiArDQo+ID4gPiAgCS8qIGxhdW5jaCBwZXItbGNv cmUgaW5pdCBvbiBldmVyeSBsY29yZSAqLw0KPiA+ID4gLQlydGVfZWFsX21wX3JlbW90ZV9sYXVu Y2gobWFpbl9sb29wLCBOVUxMLCBDQUxMX01BU1RFUik7DQo+ID4gPiArCXJ0ZV9lYWxfbXBfcmVt b3RlX2xhdW5jaChpcHNlY19sYXVuY2hfb25lX2xjb3JlLCBlaF9jb25mLA0KPiA+ID4gK0NBTExf TUFTVEVSKTsNCj4gPiA+ICsNCj4gPiA+ICAJUlRFX0xDT1JFX0ZPUkVBQ0hfU0xBVkUobGNvcmVf aWQpIHsNCj4gPiA+ICAJCWlmIChydGVfZWFsX3dhaXRfbGNvcmUobGNvcmVfaWQpIDwgMCkNCj4g PiA+ICAJCQlyZXR1cm4gLTE7DQo+ID4gPiAgCX0NCj4gPiA+DQo+ID4gPiArCS8qIFVuaW5pdGlh bGl6ZSBldmVudG1vZGUgY29tcG9uZW50cyAqLw0KPiA+ID4gKwlyZXQgPSBlaF9kZXZzX3VuaW5p dChlaF9jb25mKTsNCj4gPiA+ICsJaWYgKHJldCA8IDApDQo+ID4gPiArCQlydGVfZXhpdChFWElU X0ZBSUxVUkUsICJlaF9kZXZzX3VuaW5pdCBmYWlsZWQsIGVycj0lZFxuIiwNCj4gPiByZXQpOw0K PiA+ID4gKw0KPiA+ID4gKwkvKiBGcmVlIGV2ZW50bW9kZSBjb25maWd1cmF0aW9uIG1lbW9yeSAq Lw0KPiA+ID4gKwllaF9jb25mX3VuaW5pdChlaF9jb25mKTsNCj4gPiA+ICsNCj4gPiA+ICsJUlRF X0VUSF9GT1JFQUNIX0RFVihwb3J0aWQpIHsNCj4gPiA+ICsJCWlmICgoZW5hYmxlZF9wb3J0X21h c2sgJiAoMSA8PCBwb3J0aWQpKSA9PSAwKQ0KPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ID4gKwkJ cHJpbnRmKCJDbG9zaW5nIHBvcnQgJWQuLi4iLCBwb3J0aWQpOw0KPiA+ID4gKwkJcnRlX2V0aF9k ZXZfc3RvcChwb3J0aWQpOw0KPiA+ID4gKwkJcnRlX2V0aF9kZXZfY2xvc2UocG9ydGlkKTsNCj4g PiA+ICsJCXByaW50ZigiIERvbmVcbiIpOw0KPiA+ID4gKwl9DQo+ID4gPiArCXByaW50ZigiQnll Li4uXG4iKTsNCj4gPiA+ICsNCj4gPiA+ICAJcmV0dXJuIDA7DQo+ID4gPiAgfQ0K