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 42EEBA04BC; Thu, 8 Oct 2020 12:59:11 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 13D791BFCC; Thu, 8 Oct 2020 12:59:10 +0200 (CEST) Received: from nat-hk.nvidia.com (nat-hk.nvidia.com [203.18.50.4]) by dpdk.org (Postfix) with ESMTP id 1306B1BF94 for ; Thu, 8 Oct 2020 12:59:05 +0200 (CEST) Received: from HKMAIL102.nvidia.com (Not Verified[10.18.92.77]) by nat-hk.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Thu, 08 Oct 2020 18:59:04 +0800 Received: from HKMAIL103.nvidia.com (10.18.16.12) by HKMAIL102.nvidia.com (10.18.16.11) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 8 Oct 2020 10:58:50 +0000 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.105) by HKMAIL103.nvidia.com (10.18.16.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Thu, 8 Oct 2020 10:58:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bFCOFptQajD8CKjoUlVe4utTPv1eNSryhkVCCue4L9+kyukh/H2A8xy1G0lSUpIBM8jtqIKLxWyI+O8Xpli1/Noo5BDM6s6QAoXvfAcLmNiL2KxXJOYpynOgiphqD9QLh1IsUp8rtenUYO4mBGsyEv9Kj/g26wil/+GXlx/DkJbRHvBmdUVYvp9WN6yZBTIONZ8Ose0T86oqCtM/uDslrSqoE6jzFaBROS7o5jOY7AFfEMQdzKxJGsCHrUwRb7U6H2se6KXOYMLKcp40XGkJeeXMdLr2sUHGfsEPt1I3bDUJGkJo8XwTsbV93MSZaqJQro+eOGlWQFkEkAIv23ysyQ== 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=YL2B+C2rGU99UvRtfVy+JVXlhs8m9Hz1z0Tf0IdKlwA=; b=QImoeylYz815+hEr0fD4RT4S0hJT59bnXQbmZeThno2u//nYquTFfEdwCU9HQZWAuvwsEaXRpNnHiQbHN5DxTO1c1sbmK0xNemj8xxObUVBKzHnlXNVEUrOtmmo7RrsuRp3xBjTbnT/PvhOocisXGt6kNrq422u7onzIxq/8TDjIBi2tKqcfXy1MjfhpQLdI+iogWJc9cNN76pzIxhVP0tgiv88ETvjyF9Vq/zcMC6fDJ009DRAUoBGZzT6fB+xVt0XyzxNTdOn+MbMLXm8r0u929Gfw1firwNA2te9oJd/YRqVKmhw+zfz+laCtZCBZ72SlV/Cc+FlFxxgjdvo7bg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none Received: from MWHPR1201MB2525.namprd12.prod.outlook.com (2603:10b6:300:e0::19) by MW3PR12MB4460.namprd12.prod.outlook.com (2603:10b6:303:2f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21; Thu, 8 Oct 2020 10:58:47 +0000 Received: from MWHPR1201MB2525.namprd12.prod.outlook.com ([fe80::3ccb:ec09:9346:54b1]) by MWHPR1201MB2525.namprd12.prod.outlook.com ([fe80::3ccb:ec09:9346:54b1%7]) with mapi id 15.20.3455.024; Thu, 8 Oct 2020 10:58:47 +0000 From: Andrey Vesnovaty To: Ajit Khaparde CC: dpdk-dev , "jer@marvell.com" , Jerin Jacob , NBU-Contact-Thomas Monjalon , Ferruh Yigit , Stephen Hemminger , Bruce Richardson , Ori Kam , Slava Ovsiienko , "andrey.vesnovaty@gmail.com" , Ray Kinsella , Neil Horman , Samik Gupta , Wenzhuo Lu , Beilei Xing , Bernard Iremonger Thread-Topic: [PATCH v6 2/2] app/testpmd: support shared action Thread-Index: AQHWnOS77TJzBb0rAEmdGGM6vV28MamNhA8Q Date: Thu, 8 Oct 2020 10:58:47 +0000 Message-ID: References: <20200702120511.16315-1-andreyv@mellanox.com> <20201007183607.5130-1-andreyv@nvidia.com> <20201007183607.5130-3-andreyv@nvidia.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: broadcom.com; dkim=none (message not signed) header.d=none;broadcom.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [87.71.166.222] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d77c978e-a0c4-459e-f434-08d86b7921c7 x-ms-traffictypediagnostic: MW3PR12MB4460: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fhA2soFHnAl7M+wDjhnGy2enSNPuo+OSbC7YeMGaJOqzo+57dWZqUA/hx3mWx2OISIsZ+/Ewzy2e03s+MQ8KArPKGWh7LXKHBDE/RsPpciKQqCPo2Q1QltPvHFAvo4cEvXQb8vDo22scua1PfuauhIItlbLbjbrwc6eRYZBMsa3HhCXygwV7Uqyxr4d3ow/LcdowV+pZYraVN148RCW5LUicsl+8IBmgm+8ESOiOAJwrTTf1dgcWaiDX9vps21cUAZk3EV1G0LFE9Z4/XGs47wPy/9oVXIgMcKZBCMx7Skr5PAMRn0/GdEs2sY43Z/M9KuPPK7YPoNbDUsjiBKDufQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1201MB2525.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(136003)(376002)(396003)(346002)(6506007)(76116006)(83380400001)(478600001)(2906002)(66946007)(66556008)(64756008)(4326008)(9686003)(66446008)(52536014)(30864003)(71200400001)(5660300002)(54906003)(86362001)(55016002)(186003)(33656002)(26005)(8676002)(53546011)(66476007)(8936002)(316002)(7696005)(6916009)(7416002)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: WWFF4W4v6oaia9VQf/wVTLI/kndaK9z9Ndd+ceD7tvOzAnvFXR7pR/RRD5cTk+epHodcRhH24DYBMuFc77YDHF2omVGRV4hExvXac0bFUmcNyMJWt9WUt+/H+Rh2DPAFWwh8MtjXeI+88wnntCJmqACCdEtr/j5T5OiGlCBhXu3WF6eTNn8dBXFrV0RDVq2IpyGmW6aAGSCZ7rO+6m30IItiVEEagmakXhUzNENEkBTgkVQSlyYtwZgMa1hH/bMGLhopXLCFnY3LA/mDbii+VAangL31fIVTLuQY9tDkZvcqHfiUYT2AYoBc4BP6N7mZER6QR9ewzz+Gf0aC/Mptf7BV6GudPNrW6xEBFbK30iQ9LTKUGEA4Hgv/4dwcsKonGiCg6HOEgjj8aNacpif8MejL/9JNeC8eVO3+nlL66uCbfXDxJ2rLjYEgpxlKPAigPeyBSZHVq7Py0R+EsNzXSHNp11EHVkuY4vlwXAWP0SLbuKJw03Tn5rcOTrZW00hAOTkV59IsERUDRThvDhlqtnEpSYLiZcUPBbYld7DITeY/vvb1CRfVI7eZ50whaim8ZjwJaHrGZiQcWGd8prxgg14BqxXifjqCiK3sDYm04GBqkq8A/K6uNGJe5dVsZUltPx5F4pTVfBNPkSJkqxBoyQ== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR1201MB2525.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d77c978e-a0c4-459e-f434-08d86b7921c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2020 10:58:47.2843 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dVLTVhRDSUPJp9akWn/p1f7SXUKbwiPNM+Nu8uaIZUyxwECcx/c5IRVE7isYNPFpvzdDIEQ+nvbeCmDWxR+ujw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4460 X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1602154744; bh=YL2B+C2rGU99UvRtfVy+JVXlhs8m9Hz1z0Tf0IdKlwA=; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To: CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References: In-Reply-To:Accept-Language:Content-Language:X-MS-Has-Attach: X-MS-TNEF-Correlator:authentication-results:x-originating-ip: x-ms-publictraffictype:x-ms-office365-filtering-correlation-id: x-ms-traffictypediagnostic:x-ld-processed: x-ms-exchange-transport-forked:x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers:x-ms-exchange-senderadcheck: x-microsoft-antispam:x-microsoft-antispam-message-info: x-forefront-antispam-report:x-ms-exchange-antispam-messagedata: Content-Type:Content-Transfer-Encoding:MIME-Version: X-MS-Exchange-CrossTenant-AuthAs: X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg; b=Py1ZGntX3ByBSnk3ND4JYg+AIje20Cgkc1IF68eKU3lKVgecqEteVERn2Xowwj/2q J1XM92wuDH8008C1dfggQyugAHTVRa+3bWSLsTyuZbh0zbMBNBDnAFrSttCTOlPQQp hY4NAh+TvHWbIEor0ZW+DGHXxhRvUqTYIQ+D779EhpSE2t70SObT0kVQLbHZKQaDK9 gq5YCGhxeF5ySeM+b0RnC/LruqnWCusOv7dVQrxG52NmFpqSY2XEPXYhPayLSCM+q7 0YlWUDSFwHac3+HhSE0V7sRJiePSQSXlrFA+f25Na5Ub2QrGNJxTmTgpuktd8B/gvI 041rj8LjY55Ew== Subject: Re: [dpdk-dev] [PATCH v6 2/2] app/testpmd: support shared action 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" SGkgQWppdC4NCg0KSSBjb21wbGV0ZWx5IGFncmVlIHRoYXQgYWN0aW9uIGRpcmVjdGlvbiB3YXMg b3Zlcmxvb2tlZCBieSBtZQ0KanVzdCBiZWNhdXNlIFJTUyBoYXMgaW1wbGljaXQgaW5ncmVzcyBk aXJlY3Rpb24uDQoNCnY3IHBhdGNoIGlzIGFib3V0IHRvIGJlIHNlbnQgaW4gYW4gaG91ciB3aXRo IGZvbGxvd2luZyBjaGFuZ2VzOg0KKiBBZGRlZCBoYW5kbGluZyBvZiBkaXJlY3Rpb24gYXJndW1l bnRzIGZvciBjcmVhdGUgQ0xJLg0KKiBCb3RoIGNyZWF0ZSAmIHVwZGF0ZSBDTEkgY2FuIHJlY2Vp dmUgYWxsIFJURSBmbG93IGFjdGlvbiB0eXBlcyBub3cuDQoNClBTQiBteSBzdWdnZXN0aW9uIHJl Z2FyZGluZyBpbXByb3ZpbmcgdXBkYXRlIENMSS4NCg0KVGhhbmtzLA0KQW5kcmV5DQoNCj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQWppdCBLaGFwYXJkZSA8YWppdC5raGFw YXJkZUBicm9hZGNvbS5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciA3LCAyMDIwIDEx OjAyIFBNDQo+IFRvOiBBbmRyZXkgVmVzbm92YXR5IDxhbmRyZXl2QG52aWRpYS5jb20+DQo+IENj OiBkcGRrLWRldiA8ZGV2QGRwZGsub3JnPjsgamVyQG1hcnZlbGwuY29tOyBKZXJpbiBKYWNvYg0K PiA8amVyaW5qYWNvYmtAZ21haWwuY29tPjsgTkJVLUNvbnRhY3QtVGhvbWFzIE1vbmphbG9uDQo+ IDx0aG9tYXNAbW9uamFsb24ubmV0PjsgRmVycnVoIFlpZ2l0IDxmZXJydWgueWlnaXRAaW50ZWwu Y29tPjsgU3RlcGhlbg0KPiBIZW1taW5nZXIgPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPjsg QnJ1Y2UgUmljaGFyZHNvbg0KPiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+OyBPcmkgS2Ft IDxvcmlrYUBudmlkaWEuY29tPjsgU2xhdmEgT3ZzaWllbmtvDQo+IDx2aWFjaGVzbGF2b0Budmlk aWEuY29tPjsgYW5kcmV5LnZlc25vdmF0eUBnbWFpbC5jb207IFJheSBLaW5zZWxsYQ0KPiA8bWRy QGFzaHJvZS5ldT47IE5laWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5jb20+OyBTYW1payBH dXB0YQ0KPiA8c2FtaWsuZ3VwdGFAYnJvYWRjb20uY29tPjsgV2Vuemh1byBMdSA8d2Vuemh1by5s dUBpbnRlbC5jb20+OyBCZWlsZWkNCj4gWGluZyA8YmVpbGVpLnhpbmdAaW50ZWwuY29tPjsgQmVy bmFyZCBJcmVtb25nZXINCj4gPGJlcm5hcmQuaXJlbW9uZ2VyQGludGVsLmNvbT4NCj4gU3ViamVj dDogUmU6IFtQQVRDSCB2NiAyLzJdIGFwcC90ZXN0cG1kOiBzdXBwb3J0IHNoYXJlZCBhY3Rpb24N Cj4gDQo+IE9uIFdlZCwgT2N0IDcsIDIwMjAgYXQgMTE6MzYgQU0gQW5kcmV5IFZlc25vdmF0eSA8 YW5kcmV5dkBudmlkaWEuY29tPg0KPiB3cm90ZToNCj4gPg0KPiA+IFRoaXMgcGF0Y2ggYWRkcyBz aGFyZWQgYWN0aW9uIHN1cHBvcnQgdG8gdGVzdHBtZCBDTEkuDQo+ID4NCj4gPiBBbGwgc2hhcmVk IGFjdGlvbnMgY3JlYXRlZCB2aWEgdGVzdHBtZCBDTEkgYXNzaWduZWQgSUQgZm9yIGZ1cnRoZXIN Cj4gPiByZWZlcmVuY2UgaW4gb3RoZXIgQ0xJIGNvbW1hbmRzLiBTaGFyZWQgYWN0aW9uIElEIHN1 cHBsaWVkIGFzIENMSQ0KPiA+IGFyZ3VtZW50IG9yIGFzc2lnbmVkIGJ5IHRlc3RwbWQgaXMgc2lt aWxhciB0byBmbG93IElEICYgbGltaXRlZCB0bw0KPiA+IHNjb3BlIG9mIHRlc3RwZG0gQ0xJLg0K PiA+DQo+ID4gQ3JlYXRlIHNoYXJlZCBhY3Rpb24gc3ludGF4Og0KPiA+IGZsb3cgc2hhcmVkX2Fj dGlvbiAocG9ydCkgY3JlYXRlIHthY3Rpb25faWQgKHNoYXJlZF9hY3Rpb25faWQpfSBcDQo+ID4g ICAgICAgICAoYWN0aW9uKSAvIGVuZA0KPiA+DQo+ID4gQ3JlYXRlIHNoYXJlZCBhY3Rpb24gZXhh bXBsZXM6DQo+ID4gICAgICAgICBmbG93IHNoYXJlZF9hY3Rpb24gMCBjcmVhdGUgYWN0aW9uX2lk IDEwMCBcDQo+ID4gICAgICAgICAgICAgICAgIHJzcyBxdWV1ZXMgMSAyIGVuZCAvIGVuZA0KPiBJ IGRvbid0IHNlZSB0aGUgZGlyZWN0aW9uIGJlaW5nIHNwZWNpZmllZC4NCj4gDQo+ID4gICAgICAg ICBUaGlzIGNyZWF0ZXMgc2hhcmVkIHJzcyBhY3Rpb24gd2l0aCBpZCAxMDAgb24gcG9ydCAwLg0K PiA+DQo+ID4gICAgICAgICBmbG93IHNoYXJlZF9hY3Rpb24gMCBjcmVhdGUgYWN0aW9uX2lkIFwN Cj4gPiAgICAgICAgICAgICAgICAgcnNzIHF1ZXVlcyAwIDEgZW5kIC8gZW5kDQo+IFNhbWUgaGVy ZS4NCj4gDQo+ID4gICAgICAgICBUaGlzIGNyZWF0ZXMgc2hhcmVkIHJzcyBhY3Rpb24gd2l0aCBp ZCBhc3NpZ25lZCBieSB0ZXRzcG1kDQo+ID4gICAgICAgICBvbiBwb3J0IDAuDQo+ID4NCj4gPiBV cGRhdGUgc2hhcmVkIGFjdGlvbiBzeW50YXg6DQo+ID4gZmxvdyBzaGFyZWRfYWN0aW9uIChwb3J0 KSB1cGRhdGUgKHNoYXJlZF9hY3Rpb25faWQpIChhY3Rpb24pIC8gZW5kDQo+IFRoZSBzeW50YXgg d2lsbCBiZSBpbmNvbXBsZXRlIHdpdGhvdXQgcGFyc2luZyB0aGUgZGlyZWN0aW9uIHdoaWNoDQo+ IGEgcGFydCBvZiB0aGUgc2hhcmVkIGFjdGlvbiBjb25maWd1cmF0aW9uLg0KPiANCj4gPg0KPiA+ IFVwZGF0ZSBzaGFyZWQgYWN0aW9uIGV4YW1wbGU6DQo+ID4gICAgICAgICBmbG93IHNoYXJlZF9h Y3Rpb24gMCB1cGRhdGUgMTAwIHJzcyBxdWV1ZXMgMCAzIGVuZCAvIGVuZA0KPiA+ICAgICAgICAg VGhpcyB1cGRhdGVzIHNoYXJlZCByc3MgYWN0aW9uIGhhdmluZyBpZCAxMDAgb24gcG9ydCAwDQo+ ID4gICAgICAgICB3aXRoIHJzcyB0byBxdWV1ZXMgMCAzIChpbiBjcmVhdGUgZXhhbXBsZSByc3Mg cXVldWVzIHdlcmUNCj4gPiAgICAgICAgIDEgJiAyKS4NCj4gPg0KPiA+IERlc3Ryb3kgc2hhcmVk IGFjdGlvbiBzeW50YXg6DQo+ID4gZmxvdyBzaGFyZWRfYWN0aW9uIChwb3J0KSBkZXN0cm95IGFj dGlvbl9pZCAoc2hhcmVkX2FjdGlvbl9pZCkgXA0KPiA+ICAgICAgICAgeyBhY3Rpb25faWQgKHNo YXJlZF9hY3Rpb25faWQpIFsuLi5dfQ0KPiA+DQo+ID4gVXBkYXRlIHNoYXJlZCBhY3Rpb24gZXhh bXBsZToNCj4gPiAgICAgICAgIGZsb3cgc2hhcmVkX2FjdGlvbiAwIGRlc3Ryb3kgYWN0aW9uX2lk IDEwMCBhY3Rpb25faWQgMTAxDQo+ID4gICAgICAgICBUaGlzIGRlc3Ryb3lzIHNoYXJlZCBhY3Rp b25zIGhhdmluZyBpZCAxMDAgJiAxMDENCj4gPg0KPiA+IFF1ZXJ5IHNoYXJlZCBhY3Rpb24gc3lu dGF4Og0KPiA+IGZsb3cgc2hhcmVkX2FjdGlvbiAocG9ydCkgcXVlcnkgKHNoYXJlZF9hY3Rpb25f aWQpDQo+ID4NCj4gPiBRdWVyeSBzaGFyZWQgYWN0aW9uIGV4YW1wbGU6DQo+ID4gICAgICAgICBm bG93IHNoYXJlZF9hY3Rpb24gMCBxdWVyeSAxMDANCj4gPiAgICAgICAgIFRoaXMgcXVlcmllcyBz aGFyZWQgYWN0aW9ucyBoYXZpbmcgaWQgMTAwDQo+ID4NCj4gPiBVc2Ugc2hhcmVkIGFjdGlvbiBh cyBmbG93IGFjdGlvbiBzeW50YXg6DQo+ID4gZmxvdyBjcmVhdGUgKHBvcnQpIC4uLiAvIGVuZCBh Y3Rpb25zIHthY3Rpb24gLyBbLi4uXX0gXA0KPiA+ICAgICAgICAgc2hhcmVkIChhY3Rpb25faWQp IC8ge2FjdGlvbiAvIFsuLi5dfSBlbmQNCj4gPg0KPiA+IFVzZSBzaGFyZWQgYWN0aW9uIGFzIGZs b3cgYWN0aW9uIGV4YW1wbGU6DQo+ID4gICAgICAgICBmbG93IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0 dGVybiAuLi4gLyBlbmQgXA0KPiA+ICAgICAgICAgICAgICAgICBhY3Rpb25zIHNoYXJlZCAxMDAg LyBlbmQNCj4gPiAgICAgICAgIFRoaXMgY3JlYXRlcyBmbG93IHJ1bGUgd2hlcmUgcnNzIGFjdGlv biBpcyBzaGFyZWQgcnNzIGFjdGlvbg0KPiA+ICAgICAgICAgaGF2aW5nIGlkIDEwMC4NCj4gPg0K PiA+IEFsbCBzaGFyZWQgYWN0aW9uIENMSXMgcmVwb3J0IHN0YXR1cyBvZiB0aGUgY29tbWFuZC4N Cj4gPiBTaGFyZWQgYWN0aW9uIHF1ZXJ5IENMSSBvdXRwdXQgZGVwZW5kcyBvbiBhY3Rpb24gdHlw ZS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEFuZHJleSBWZXNub3ZhdHkgPGFuZHJleXZAbnZp ZGlhLmNvbT4NCj4gPiBBY2tlZC1ieTogT3JpIEthbSA8b3Jpa2FAbnZpZGlhLmNvbT4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBBbmRyZXkgVmVzbm92YXR5IDxhbmRyZXl2QG52aWRpYS5jb20+DQo+ID4g LS0tDQo+ID4gIGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYyAgICAgICAgICAgICAgICAgfCAy NjIgKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgYXBwL3Rlc3QtcG1kL2NvbmZpZy5jICAgICAg ICAgICAgICAgICAgICAgICB8IDIxNSArKysrKysrKysrKysrKysrDQo+ID4gIGFwcC90ZXN0LXBt ZC90ZXN0cG1kLmggICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKysNCj4gPiAgZG9jL2d1aWRl cy90ZXN0cG1kX2FwcF91Zy90ZXN0cG1kX2Z1bmNzLnJzdCB8IDExMSArKysrKysrKysNCj4gPiAg NCBmaWxlcyBjaGFuZ2VkLCA2MDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYyBiL2FwcC90ZXN0LXBt ZC9jbWRsaW5lX2Zsb3cuYw0KPiA+IGluZGV4IDZlMDRkNTM4ZWEuLjQwMmNlNjlhYTMgMTAwNjQ0 DQo+ID4gLS0tIGEvYXBwL3Rlc3QtcG1kL2NtZGxpbmVfZmxvdy5jDQo+ID4gKysrIGIvYXBwL3Rl c3QtcG1kL2NtZGxpbmVfZmxvdy5jDQo+ID4gQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBpbmRleCB7 DQo+ID4gICAgICAgICBQT1JUX0lELA0KPiA+ICAgICAgICAgR1JPVVBfSUQsDQo+ID4gICAgICAg ICBQUklPUklUWV9MRVZFTCwNCj4gPiArICAgICAgIFNIQVJFRF9BQ1RJT05fSUQsDQo+ID4NCj4g PiAgICAgICAgIC8qIFRvcC1sZXZlbCBjb21tYW5kLiAqLw0KPiA+ICAgICAgICAgU0VULA0KPiA+ IEBAIC02MCw2ICs2MSw3IEBAIGVudW0gaW5kZXggew0KPiA+ICAgICAgICAgLyogVG9wLWxldmVs IGNvbW1hbmQuICovDQo+ID4gICAgICAgICBGTE9XLA0KPiA+ICAgICAgICAgLyogU3ViLWxldmVs IGNvbW1hbmRzLiAqLw0KPiA+ICsgICAgICAgU0hBUkVEX0FDVElPTiwNCj4gPiAgICAgICAgIFZB TElEQVRFLA0KPiA+ICAgICAgICAgQ1JFQVRFLA0KPiA+ICAgICAgICAgREVTVFJPWSwNCj4gPiBA QCAtODksNiArOTEsMTggQEAgZW51bSBpbmRleCB7DQo+ID4gICAgICAgICBFR1JFU1MsDQo+ID4g ICAgICAgICBUUkFOU0ZFUiwNCj4gPg0KPiA+ICsgICAgICAgLyogU2hhcmVkIGFjdGlvbiBhcmd1 bWVudHMgKi8NCj4gPiArICAgICAgIFNIQVJFRF9BQ1RJT05fQ1JFQVRFLA0KPiA+ICsgICAgICAg U0hBUkVEX0FDVElPTl9VUERBVEUsDQo+ID4gKyAgICAgICBTSEFSRURfQUNUSU9OX0RFU1RST1ks DQo+ID4gKyAgICAgICBTSEFSRURfQUNUSU9OX1FVRVJZLA0KPiA+ICsNCj4gPiArICAgICAgIC8q IFNoYXJlZCBhY3Rpb24gY3JlYXRlIGFyZ3VtZW50cyAqLw0KPiA+ICsgICAgICAgU0hBUkVEX0FD VElPTl9DUkVBVEVfSUQsDQo+ID4gKw0KPiA+ICsgICAgICAgLyogU2hhcmVkIGFjdGlvbiBkZXN0 cm95IGFyZ3VtZW50cyAqLw0KPiA+ICsgICAgICAgU0hBUkVEX0FDVElPTl9ERVNUUk9ZX0lELA0K PiA+ICsNCj4gPiAgICAgICAgIC8qIFZhbGlkYXRlL2NyZWF0ZSBwYXR0ZXJuLiAqLw0KPiA+ICAg ICAgICAgUEFUVEVSTiwNCj4gPiAgICAgICAgIElURU1fUEFSQU1fSVMsDQo+ID4gQEAgLTM2MCw2 ICszNzQsOCBAQCBlbnVtIGluZGV4IHsNCj4gPiAgICAgICAgIEFDVElPTl9TRVRfSVBWNl9EU0NQ X1ZBTFVFLA0KPiA+ICAgICAgICAgQUNUSU9OX0FHRSwNCj4gPiAgICAgICAgIEFDVElPTl9BR0Vf VElNRU9VVCwNCj4gPiArICAgICAgIEFDVElPTl9TSEFSRUQsDQo+ID4gKyAgICAgICBTSEFSRURf QUNUSU9OX0lEMlBUUiwNCj4gPiAgfTsNCj4gPg0KPiA+ICAvKiogTWF4aW11bSBzaXplIGZvciBw YXR0ZXJuIGluIHN0cnVjdCBydGVfZmxvd19pdGVtX3Jhdy4gKi8NCj4gPiBAQCAtNjUzLDYgKzY2 OSwxMyBAQCBzdHJ1Y3QgYnVmZmVyIHsNCj4gPiAgICAgICAgIGVudW0gaW5kZXggY29tbWFuZDsg LyoqPCBGbG93IGNvbW1hbmQuICovDQo+ID4gICAgICAgICBwb3J0aWRfdCBwb3J0OyAvKio8IEFm ZmVjdGVkIHBvcnQgSUQuICovDQo+ID4gICAgICAgICB1bmlvbiB7DQo+ID4gKyAgICAgICAgICAg ICAgIHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmFjdGlv bl9pZDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhY3Rpb25faWRfbjsN Cj4gPiArICAgICAgICAgICAgICAgfSBzYV9kZXN0cm95OyAvKio8IFNoYXJlZCBhY3Rpb24gZGVz dHJveSBhcmd1bWVudHMuICovDQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCB7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWN0aW9uX2lkOw0KPiA+ICsgICAgICAgICAg ICAgICB9IHNhOyAvKiBTaGFyZWQgYWN0aW9uIHF1ZXJ5IGFyZ3VtZW50cyAqLw0KPiA+ICAgICAg ICAgICAgICAgICBzdHJ1Y3Qgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy dGVfZmxvd19hdHRyIGF0dHI7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0 ZV9mbG93X2l0ZW0gKnBhdHRlcm47DQo+ID4gQEAgLTcwOSw2ICs3MzIsMTkgQEAgc3RydWN0IHBh cnNlX2FjdGlvbl9wcml2IHsNCj4gPiAgICAgICAgICAgICAgICAgLnNpemUgPSBzLCBcDQo+ID4g ICAgICAgICB9KQ0KPiA+DQo+ID4gK3N0YXRpYyBjb25zdCBlbnVtIGluZGV4IG5leHRfc2FfY3Jl YXRlX2F0dHJbXSA9IHsNCj4gPiArICAgICAgIFNIQVJFRF9BQ1RJT05fQ1JFQVRFX0lELA0KPiA+ ICsgICAgICAgQUNUSU9OX1JTUywNCj4gVGhpcyBpcyBvbmx5IGZvciBSU1MuDQo+IFdoYXQgaWYg d2Ugd2FudCB0byBkbyBpdCBmb3IgYW5vdGhlciByZXNvdXJjZT8NCj4gDQoNCkZpeGVkLCBub3cg aXQgYWNjZXB0cyBhbGwgUlRFIGZsb3cgYWN0aW9ucy4NClVuaW1wbGVtZW50ZWQvdW5zdXBwb3J0 ZWQgYWN0aW9ucyByZWplY3RlZCBieSBSVEUgZmxvdyBsYXllci9QTUQuDQoNCj4gPiArICAgICAg IFpFUk8sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgZW51bSBpbmRleCBuZXh0 X3NhX3N1YmNtZFtdID0gew0KPiA+ICsgICAgICAgU0hBUkVEX0FDVElPTl9DUkVBVEUsDQo+ID4g KyAgICAgICBTSEFSRURfQUNUSU9OX1VQREFURSwNCj4gPiArICAgICAgIFNIQVJFRF9BQ1RJT05f REVTVFJPWSwNCj4gPiArICAgICAgIFNIQVJFRF9BQ1RJT05fUVVFUlksDQo+ID4gK307DQo+ID4g Kw0KPiBbc25pcF0NCj4gDQo+ID4gKyAgICAgICAvKiBUb3AtbGV2ZWwgY29tbWFuZC4gKi8NCj4g PiArICAgICAgIFtTSEFSRURfQUNUSU9OXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgLm5hbWUg PSAic2hhcmVkX2FjdGlvbiIsDQo+ID4gKyAgICAgICAgICAgICAgIC50eXBlID0gIntjb21tYW5k fSB7cG9ydF9pZH0gW3thcmd9IFsuLi5dXSIsDQo+ID4gKyAgICAgICAgICAgICAgIC5oZWxwID0g Im1hbmFnZSBzaGFyZWQgYWN0aW9ucyIsDQo+ID4gKyAgICAgICAgICAgICAgIC5uZXh0ID0gTkVY VChuZXh0X3NhX3N1YmNtZCwgTkVYVF9FTlRSWShQT1JUX0lEKSksDQo+ID4gKyAgICAgICAgICAg ICAgIC5hcmdzID0gQVJHUyhBUkdTX0VOVFJZKHN0cnVjdCBidWZmZXIsIHBvcnQpKSwNCj4gPiAr ICAgICAgICAgICAgICAgLmNhbGwgPSBwYXJzZV9zYSwNCj4gPiArICAgICAgIH0sDQo+ID4gICAg ICAgICAvKiBTdWItbGV2ZWwgY29tbWFuZHMuICovDQo+ID4gKyAgICAgICBbU0hBUkVEX0FDVElP Tl9DUkVBVEVdID0gew0KPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJjcmVhdGUiLA0KPiA+ ICsgICAgICAgICAgICAgICAuaGVscCA9ICJjcmVhdGUgc2hhcmVkIGFjdGlvbiIsDQo+ID4gKyAg ICAgICAgICAgICAgIC5uZXh0ID0gTkVYVChuZXh0X3NhX2NyZWF0ZV9hdHRyKSwNCj4gPiArICAg ICAgICAgICAgICAgLmFyZ3MgPSBBUkdTKEFSR1NfRU5UUlkoc3RydWN0IGJ1ZmZlciwgYXJncy52 Yy5hdHRyLmdyb3VwKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5jYWxsID0gcGFyc2Vfc2EsDQo+ ID4gKyAgICAgICB9LA0KPiA+ICsgICAgICAgW1NIQVJFRF9BQ1RJT05fVVBEQVRFXSA9IHsNCj4g PiArICAgICAgICAgICAgICAgLm5hbWUgPSAidXBkYXRlIiwNCj4gPiArICAgICAgICAgICAgICAg LmhlbHAgPSAidXBkYXRlIHNoYXJlZCBhY3Rpb24iLA0KPiA+ICsgICAgICAgICAgICAgICAubmV4 dCA9IE5FWFQoTkVYVF9FTlRSWShBQ1RJT05fUlNTKSwNCj4gDQo+IENhbid0IHdlIGZpbGwgdGhp cyBhY3Rpb24gYmFzZWQgb24gdGhlIGlucHV0IG9mIHRoZSBmbG93IHNoYXJlZF9hY3Rpb24NCj4g Y3JlYXRlIGNvbW1hbmQ/DQo+IA0KRG8geW91IG1lYW4gdGFiIGNvbXBsZXRpb24gaW1wcm92ZW1l bnQgZm9yIHNoYXJlZCBhY3Rpb24gSUQ/DQpJZiB5ZXMsIHBsZWFzZSBsZXQgbWUgdG8ga2VlcCB0 aGlzIGltcHJvdmVtZW50IGZvciBwb3N0IFJDMSBwaGFzZS4NCkJXLCBub3cgdXBkYXRlIHJlY2Vp dmVzIGFsbCBSVEUgZmxvdyBhY3Rpb24gdHlwZXMgc2ltaWxhciB0byBjcmVhdGUuDQo+IA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVYVF9FTlRSWShTSEFSRURfQUNUSU9OX0lE KSksDQo+ID4gKyAgICAgICAgICAgICAgIC5hcmdzID0gQVJHUyhBUkdTX0VOVFJZKHN0cnVjdCBi dWZmZXIsIGFyZ3MudmMuYXR0ci5ncm91cCkpLA0KPiA+ICsgICAgICAgICAgICAgICAuY2FsbCA9 IHBhcnNlX3NhLA0KPiA+ICsgICAgICAgfSwNCj4gPiArICAgICAgIFtTSEFSRURfQUNUSU9OX0RF U1RST1ldID0gew0KPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJkZXN0cm95IiwNCj4gPiAr ICAgICAgICAgICAgICAgLmhlbHAgPSAiZGVzdHJveSBzaGFyZWQgYWN0aW9uIiwNCj4gPiArICAg ICAgICAgICAgICAgLm5leHQgPSBORVhUKE5FWFRfRU5UUlkoU0hBUkVEX0FDVElPTl9ERVNUUk9Z X0lEKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5hcmdzID0gQVJHUyhBUkdTX0VOVFJZKHN0cnVj dCBidWZmZXIsIHBvcnQpKSwNCj4gPiArICAgICAgICAgICAgICAgLmNhbGwgPSBwYXJzZV9zYV9k ZXN0cm95LA0KPiA+ICsgICAgICAgfSwNCj4gPiArICAgICAgIFtTSEFSRURfQUNUSU9OX1FVRVJZ XSA9IHsNCj4gPiArICAgICAgICAgICAgICAgLm5hbWUgPSAicXVlcnkiLA0KPiA+ICsgICAgICAg ICAgICAgICAuaGVscCA9ICJxdWVyeSBzaGFyZWQgYWN0aW9uIiwNCj4gPiArICAgICAgICAgICAg ICAgLm5leHQgPSBORVhUKE5FWFRfRU5UUlkoRU5EKSwNCj4gTkVYVF9FTlRSWShTSEFSRURfQUNU SU9OX0lEKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5hcmdzID0gQVJHUyhBUkdTX0VOVFJZKHN0 cnVjdCBidWZmZXIsIGFyZ3Muc2EuYWN0aW9uX2lkKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5j YWxsID0gcGFyc2Vfc2EsDQo+ID4gKyAgICAgICB9LA0KPiA+ICAgICAgICAgW1ZBTElEQVRFXSA9 IHsNCj4gPiAgICAgICAgICAgICAgICAgLm5hbWUgPSAidmFsaWRhdGUiLA0KPiA+ICAgICAgICAg ICAgICAgICAuaGVscCA9ICJjaGVjayB3aGV0aGVyIGEgZmxvdyBydWxlIGNhbiBiZSBjcmVhdGVk IiwNCj4gPiBAQCAtMzg1OSw2ICszOTU3LDQwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdG9rZW4g dG9rZW5fbGlzdFtdID0gew0KPiA+ICAgICAgICAgICAgICAgICAubmV4dCA9IE5FWFQoYWN0aW9u X2FnZSwgTkVYVF9FTlRSWShVTlNJR05FRCkpLA0KPiA+ICAgICAgICAgICAgICAgICAuY2FsbCA9 IHBhcnNlX3ZjX2NvbmYsDQo+ID4gICAgICAgICB9LA0KPiA+ICsgICAgICAgLyogU2hhcmVkIGFj dGlvbiBkZXN0cm95IGFyZ3VtZW50cy4gKi8NCj4gPiArICAgICAgIFtTSEFSRURfQUNUSU9OX0RF U1RST1lfSURdID0gew0KPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJhY3Rpb25faWQiLA0K PiA+ICsgICAgICAgICAgICAgICAuaGVscCA9ICJzcGVjaWZ5IGEgc2hhcmVkIGFjdGlvbiBpZCB0 byBkZXN0cm95IiwNCj4gPiArICAgICAgICAgICAgICAgLm5leHQgPSBORVhUKG5leHRfc2FfZGVz dHJveV9hdHRyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVYVF9FTlRSWShT SEFSRURfQUNUSU9OX0lEKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5hcmdzID0gQVJHUyhBUkdT X0VOVFJZX1BUUihzdHJ1Y3QgYnVmZmVyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJncy5zYV9kZXN0cm95LmFjdGlvbl9pZCkpLA0KPiA+ICsgICAg ICAgICAgICAgICAuY2FsbCA9IHBhcnNlX3NhX2Rlc3Ryb3ksDQo+ID4gKyAgICAgICB9LA0KPiA+ ICsgICAgICAgLyogU2hhcmVkIGFjdGlvbiBjcmVhdGUgYXJndW1lbnRzLiAqLw0KPiA+ICsgICAg ICAgW1NIQVJFRF9BQ1RJT05fQ1JFQVRFX0lEXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgLm5h bWUgPSAiYWN0aW9uX2lkIiwNCj4gPiArICAgICAgICAgICAgICAgLmhlbHAgPSAic3BlY2lmeSBh IHNoYXJlZCBhY3Rpb24gaWQgdG8gY3JlYXRlIiwNCj4gPiArICAgICAgICAgICAgICAgLm5leHQg PSBORVhUKE5FWFRfRU5UUlkoQUNUSU9OX1JTUyksDQo+IFNhbWUgaGVyZS4gVGhpcyBpcyBhc3N1 bWluZyBSU1MgYWN0aW9uIG9ubHkuDQo+IA0KRml4ZWQsIGFsbCBSVEUgZmxvdyBhY3Rpb24gdHlw ZXMgc3VwcG9ydGVkLg0KPiANCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FWFRf RU5UUlkoU0hBUkVEX0FDVElPTl9JRCkpLA0KPiA+ICsgICAgICAgICAgICAgICAuYXJncyA9IEFS R1MoQVJHU19FTlRSWShzdHJ1Y3QgYnVmZmVyLCBhcmdzLnZjLmF0dHIuZ3JvdXApKSwNCj4gPiAr ICAgICAgIH0sDQo+ID4gKyAgICAgICBbQUNUSU9OX1NIQVJFRF0gPSB7DQo+ID4gKyAgICAgICAg ICAgICAgIC5uYW1lID0gInNoYXJlZCIsDQo+ID4gKyAgICAgICAgICAgICAgIC5oZWxwID0gImFw cGx5IHNoYXJlZCBhY3Rpb24gYnkgaWQiLA0KPiA+ICsgICAgICAgICAgICAgICAucHJpdiA9IFBS SVZfQUNUSU9OKFNIQVJFRCwgMCksDQo+ID4gKyAgICAgICAgICAgICAgIC5uZXh0ID0gTkVYVChO RVhUX0VOVFJZKFNIQVJFRF9BQ1RJT05fSUQyUFRSKSksDQo+ID4gKyAgICAgICAgICAgICAgIC5h cmdzID0gQVJHUyhBUkdTX0VOVFJZX0FSQigwLCBzaXplb2YodWludDMyX3QpKSksDQo+ID4gKyAg ICAgICAgICAgICAgIC5jYWxsID0gcGFyc2VfdmMsDQo+ID4gKyAgICAgICB9LA0KPiA+ICsgICAg ICAgW1NIQVJFRF9BQ1RJT05fSUQyUFRSXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgLm5hbWUg PSAie2FjdGlvbl9pZH0iLA0KPiA+ICsgICAgICAgICAgICAgICAudHlwZSA9ICJTSEFSRURfQUNU SU9OX0lEIiwNCj4gPiArICAgICAgICAgICAgICAgLmhlbHAgPSAic2hhcmVkIGFjdGlvbiBpZCIs DQo+ID4gKyAgICAgICAgICAgICAgIC5uZXh0ID0gTkVYVChORVhUX0VOVFJZKEFDVElPTl9ORVhU KSksDQo+ID4gKyAgICAgICAgICAgICAgIC5jYWxsID0gcGFyc2Vfc2FfaWQycHRyLA0KPiA+ICsg ICAgICAgICAgICAgICAuY29tcCA9IGNvbXBfbm9uZSwNCj4gPiArICAgICAgIH0sDQo+ID4gIH07 DQo+ID4NCj4gPiAgLyoqIFJlbW92ZSBhbmQgcmV0dXJuIGxhc3QgZW50cnkgZnJvbSBhcmd1bWVu dCBzdGFjay4gKi8NCj4gPiBAQCAtNDA0Myw2ICs0MTc1LDkxIEBAIHBhcnNlX2luaXQoc3RydWN0 IGNvbnRleHQgKmN0eCwgY29uc3Qgc3RydWN0IHRva2VuDQo+ICp0b2tlbiwNCj4gPiAgICAgICAg IHJldHVybiBsZW47DQo+ID4gIH0NCj4gPg0KPiA+ICsvKiogUGFyc2UgdG9rZW5zIGZvciBzaGFy ZWQgYWN0aW9uIGNvbW1hbmRzLiAqLw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3BhcnNlX3NhKHN0 cnVjdCBjb250ZXh0ICpjdHgsIGNvbnN0IHN0cnVjdCB0b2tlbiAqdG9rZW4sDQo+ID4gKyAgICAg ICAgY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuLA0KPiA+ICsgICAgICAgIHZvaWQg KmJ1ZiwgdW5zaWduZWQgaW50IHNpemUpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBidWZm ZXIgKm91dCA9IGJ1ZjsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBUb2tlbiBuYW1lIG11c3QgbWF0 Y2guICovDQo+ID4gKyAgICAgICBpZiAocGFyc2VfZGVmYXVsdChjdHgsIHRva2VuLCBzdHIsIGxl biwgTlVMTCwgMCkgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAg ICAgICAvKiBOb3RoaW5nIGVsc2UgdG8gZG8gaWYgdGhlcmUgaXMgbm8gYnVmZmVyLiAqLw0KPiA+ ICsgICAgICAgaWYgKCFvdXQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBsZW47DQo+ID4g KyAgICAgICBpZiAoIW91dC0+Y29tbWFuZCkgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAoY3R4 LT5jdXJyICE9IFNIQVJFRF9BQ1RJT04pDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIC0xOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoc2l6ZW9mKCpvdXQpID4gc2l6ZSkNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAgICAgICAgICAgICAg IG91dC0+Y29tbWFuZCA9IGN0eC0+Y3VycjsNCj4gPiArICAgICAgICAgICAgICAgY3R4LT5vYmpk YXRhID0gMDsNCj4gPiArICAgICAgICAgICAgICAgY3R4LT5vYmplY3QgPSBvdXQ7DQo+ID4gKyAg ICAgICAgICAgICAgIGN0eC0+b2JqbWFzayA9IE5VTEw7DQo+ID4gKyAgICAgICAgICAgICAgIG91 dC0+YXJncy52Yy5kYXRhID0gKHVpbnQ4X3QgKilvdXQgKyBzaXplOw0KPiA+ICsgICAgICAgICAg ICAgICByZXR1cm4gbGVuOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgc3dpdGNoIChjdHgt PmN1cnIpIHsNCj4gPiArICAgICAgIGNhc2UgU0hBUkVEX0FDVElPTl9DUkVBVEU6DQo+ID4gKyAg ICAgICBjYXNlIFNIQVJFRF9BQ1RJT05fVVBEQVRFOg0KPiA+ICsgICAgICAgICAgICAgICBvdXQt PmFyZ3MudmMuYWN0aW9ucyA9DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilS VEVfQUxJR05fQ0VJTCgodWludHB0cl90KShvdXQgKyAxKSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkb3VibGUpKTsNCj4gPiArICAg ICAgICAgICAgICAgb3V0LT5hcmdzLnZjLmF0dHIuZ3JvdXAgPSBVSU5UMzJfTUFYOw0KPiA+ICsg ICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLw0KPiA+ICsgICAgICAgY2FzZSBTSEFSRURf QUNUSU9OX1FVRVJZOg0KPiA+ICsgICAgICAgICAgICAgICBvdXQtPmNvbW1hbmQgPSBjdHgtPmN1 cnI7DQo+ID4gKyAgICAgICAgICAgICAgIGN0eC0+b2JqZGF0YSA9IDA7DQo+ID4gKyAgICAgICAg ICAgICAgIGN0eC0+b2JqZWN0ID0gb3V0Ow0KPiA+ICsgICAgICAgICAgICAgICBjdHgtPm9iam1h c2sgPSBOVUxMOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gbGVuOw0KPiA+ICsgICAgICAg ZGVmYXVsdDoNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+ICsgICAgICAgfQ0K PiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqIFBhcnNlIHRva2VucyBmb3Igc2hhcmVkIGFj dGlvbiBkZXN0cm95IGNvbW1hbmQuICovDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArcGFyc2Vfc2Ff ZGVzdHJveShzdHJ1Y3QgY29udGV4dCAqY3R4LCBjb25zdCBzdHJ1Y3QgdG9rZW4gKnRva2VuLA0K PiA+ICsgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgbGVuLA0K PiA+ICsgICAgICAgICAgICAgICAgdm9pZCAqYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSkNCj4gPiAr ew0KPiA+ICsgICAgICAgc3RydWN0IGJ1ZmZlciAqb3V0ID0gYnVmOw0KPiA+ICsgICAgICAgdWlu dDMyX3QgKmFjdGlvbl9pZDsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBUb2tlbiBuYW1lIG11c3Qg bWF0Y2guICovDQo+ID4gKyAgICAgICBpZiAocGFyc2VfZGVmYXVsdChjdHgsIHRva2VuLCBzdHIs IGxlbiwgTlVMTCwgMCkgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4g KyAgICAgICAvKiBOb3RoaW5nIGVsc2UgdG8gZG8gaWYgdGhlcmUgaXMgbm8gYnVmZmVyLiAqLw0K PiA+ICsgICAgICAgaWYgKCFvdXQpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBsZW47DQo+ ID4gKyAgICAgICBpZiAoIW91dC0+Y29tbWFuZCB8fCBvdXQtPmNvbW1hbmQgPT0gU0hBUkVEX0FD VElPTikgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAoY3R4LT5jdXJyICE9IFNIQVJFRF9BQ1RJ T05fREVTVFJPWSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4g KyAgICAgICAgICAgICAgIGlmIChzaXplb2YoKm91dCkgPiBzaXplKQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAtMTsNCj4gPiArICAgICAgICAgICAgICAgb3V0LT5jb21tYW5k ID0gY3R4LT5jdXJyOw0KPiA+ICsgICAgICAgICAgICAgICBjdHgtPm9iamRhdGEgPSAwOw0KPiA+ ICsgICAgICAgICAgICAgICBjdHgtPm9iamVjdCA9IG91dDsNCj4gPiArICAgICAgICAgICAgICAg Y3R4LT5vYmptYXNrID0gTlVMTDsNCj4gPiArICAgICAgICAgICAgICAgb3V0LT5hcmdzLnNhX2Rl c3Ryb3kuYWN0aW9uX2lkID0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKVJU RV9BTElHTl9DRUlMKCh1aW50cHRyX3QpKG91dCArIDEpLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRvdWJsZSkpOw0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gbGVuOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgYWN0aW9u X2lkID0gb3V0LT5hcmdzLnNhX2Rlc3Ryb3kuYWN0aW9uX2lkDQo+ID4gKyAgICAgICAgICAgICAg ICAgICArIG91dC0+YXJncy5zYV9kZXN0cm95LmFjdGlvbl9pZF9uKys7DQo+ID4gKyAgICAgICBp ZiAoKHVpbnQ4X3QgKilhY3Rpb25faWQgPiAodWludDhfdCAqKW91dCArIHNpemUpDQo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiAtMTsNCj4gPiArICAgICAgIGN0eC0+b2JqZGF0YSA9IDA7DQo+ ID4gKyAgICAgICBjdHgtPm9iamVjdCA9IGFjdGlvbl9pZDsNCj4gPiArICAgICAgIGN0eC0+b2Jq bWFzayA9IE5VTEw7DQo+ID4gKyAgICAgICByZXR1cm4gbGVuOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICAvKiogUGFyc2UgdG9rZW5zIGZvciB2YWxpZGF0ZS9jcmVhdGUgY29tbWFuZHMuICovDQo+ID4g IHN0YXRpYyBpbnQNCj4gPiAgcGFyc2VfdmMoc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qgc3Ry dWN0IHRva2VuICp0b2tlbiwNCj4gPiBAQCAtNjExMCw2ICs2MzI3LDMyIEBAIHBhcnNlX3BvcnQo c3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qgc3RydWN0IHRva2VuDQo+ICp0b2tlbiwNCj4gPiAg ICAgICAgIHJldHVybiByZXQ7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3Bh cnNlX3NhX2lkMnB0cihzdHJ1Y3QgY29udGV4dCAqY3R4LCBjb25zdCBzdHJ1Y3QgdG9rZW4gKnRv a2VuLA0KPiA+ICsgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBs ZW4sDQo+ID4gKyAgICAgICAgICAgICAgIHZvaWQgKmJ1ZiwgdW5zaWduZWQgaW50IHNpemUpDQo+ ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbiA9IGN0eC0+ b2JqZWN0Ow0KPiA+ICsgICAgICAgdWludDMyX3QgaWQ7DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0K PiA+ICsNCj4gPiArICAgICAgICh2b2lkKWJ1ZjsNCj4gPiArICAgICAgICh2b2lkKXNpemU7DQo+ ID4gKyAgICAgICBjdHgtPm9iamRhdGEgPSAwOw0KPiA+ICsgICAgICAgY3R4LT5vYmplY3QgPSAm aWQ7DQo+ID4gKyAgICAgICBjdHgtPm9iam1hc2sgPSBOVUxMOw0KPiA+ICsgICAgICAgcmV0ID0g cGFyc2VfaW50KGN0eCwgdG9rZW4sIHN0ciwgbGVuLCBjdHgtPm9iamVjdCwgc2l6ZW9mKGlkKSk7 DQo+ID4gKyAgICAgICBjdHgtPm9iamVjdCA9IGFjdGlvbjsNCj4gPiArICAgICAgIGlmIChyZXQg IT0gKGludClsZW4pDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAg ICAvKiBzZXQgc2hhcmVkIGFjdGlvbiAqLw0KPiA+ICsgICAgICAgaWYgKGFjdGlvbikgew0KPiA+ ICsgICAgICAgICAgICAgICBhY3Rpb24tPmNvbmYgPSBwb3J0X3NoYXJlZF9hY3Rpb25fZ2V0X2J5 X2lkKGN0eC0+cG9ydCwgaWQpOw0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSAoYWN0aW9uLT5j b25mKSA/IHJldCA6IC0xOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgcmV0dXJuIHJldDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiAgLyoqIFBhcnNlIHNldCBjb21tYW5kLCBpbml0aWFsaXplIG91 dHB1dCBidWZmZXIgZm9yIHN1YnNlcXVlbnQgdG9rZW5zLiAqLw0KPiA+ICBzdGF0aWMgaW50DQo+ ID4gIHBhcnNlX3NldF9yYXdfZW5jYXBfZGVjYXAoc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qg c3RydWN0IHRva2VuICp0b2tlbiwNCj4gPiBAQCAtNjU1OSw2ICs2ODAyLDIzIEBAIHN0YXRpYyB2 b2lkDQo+ID4gIGNtZF9mbG93X3BhcnNlZChjb25zdCBzdHJ1Y3QgYnVmZmVyICppbikNCj4gPiAg ew0KPiA+ICAgICAgICAgc3dpdGNoIChpbi0+Y29tbWFuZCkgew0KPiA+ICsgICAgICAgY2FzZSBT SEFSRURfQUNUSU9OX0NSRUFURToNCj4gPiArICAgICAgICAgICAgICAgcG9ydF9zaGFyZWRfYWN0 aW9uX2NyZWF0ZShpbi0+cG9ydCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbi0+YXJncy52Yy5hdHRyLmdyb3VwLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluLT5hcmdzLnZjLmFjdGlvbnMpOw0KPiA+ICsgICAg ICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgU0hBUkVEX0FDVElPTl9ERVNUUk9Z Og0KPiA+ICsgICAgICAgICAgICAgICBwb3J0X3NoYXJlZF9hY3Rpb25fZGVzdHJveShpbi0+cG9y dCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4tPmFy Z3Muc2FfZGVzdHJveS5hY3Rpb25faWRfbiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW4tPmFyZ3Muc2FfZGVzdHJveS5hY3Rpb25faWQpOw0KPiA+ICsg ICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgU0hBUkVEX0FDVElPTl9VUERB VEU6DQo+ID4gKyAgICAgICAgICAgICAgIHBvcnRfc2hhcmVkX2FjdGlvbl91cGRhdGUoaW4tPnBv cnQsIGluLT5hcmdzLnZjLmF0dHIuZ3JvdXAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW4tPmFyZ3MudmMuYWN0aW9ucyk7DQo+ID4gKyAgICAgICAgICAg ICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSBTSEFSRURfQUNUSU9OX1FVRVJZOg0KPiA+ICsg ICAgICAgICAgICAgICBwb3J0X3NoYXJlZF9hY3Rpb25fcXVlcnkoaW4tPnBvcnQsIGluLT5hcmdz LnNhLmFjdGlvbl9pZCk7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAg Y2FzZSBWQUxJREFURToNCj4gPiAgICAgICAgICAgICAgICAgcG9ydF9mbG93X3ZhbGlkYXRlKGlu LT5wb3J0LCAmaW4tPmFyZ3MudmMuYXR0ciwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluLT5hcmdzLnZjLnBhdHRlcm4sIGluLT5hcmdzLnZjLmFjdGlvbnMpOw0KPiA+ IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQvY29uZmlnLmMgYi9hcHAvdGVzdC1wbWQvY29uZmln LmMNCj4gPiBpbmRleCA0MThlYTZkZGE0Li5jZWUzZjkwOGVmIDEwMDY0NA0KPiA+IC0tLSBhL2Fw cC90ZXN0LXBtZC9jb25maWcuYw0KPiA+ICsrKyBiL2FwcC90ZXN0LXBtZC9jb25maWcuYw0KPiA+ IEBAIC0xNTgwLDYgKzE1ODAsMjIxIEBAIHJzc19jb25maWdfZGlzcGxheShzdHJ1Y3QgcnRlX2Zs b3dfYWN0aW9uX3Jzcw0KPiAqcnNzX2NvbmYpDQo+ID4gICAgICAgICB9DQo+ID4gIH0NCj4gPg0K PiA+ICtzdGF0aWMgc3RydWN0IHBvcnRfc2hhcmVkX2FjdGlvbiAqDQo+ID4gK2FjdGlvbl9nZXRf YnlfaWQocG9ydGlkX3QgcG9ydF9pZCwgdWludDMyX3QgaWQpDQo+ID4gK3sNCj4gPiArICAgICAg IHN0cnVjdCBydGVfcG9ydCAqcG9ydDsNCj4gPiArICAgICAgIHN0cnVjdCBwb3J0X3NoYXJlZF9h Y3Rpb24gKipwcHNhOw0KPiA+ICsgICAgICAgc3RydWN0IHBvcnRfc2hhcmVkX2FjdGlvbiAqcHNh ID0gTlVMTDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAocG9ydF9pZF9pc19pbnZhbGlkKHBvcnRf aWQsIEVOQUJMRURfV0FSTikgfHwNCj4gPiArICAgICAgICAgICBwb3J0X2lkID09IChwb3J0aWRf dClSVEVfUE9SVF9BTEwpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICsg ICAgICAgcG9ydCA9ICZwb3J0c1twb3J0X2lkXTsNCj4gPiArICAgICAgIHBwc2EgPSAmcG9ydC0+ YWN0aW9uc19saXN0Ow0KPiA+ICsgICAgICAgd2hpbGUgKCpwcHNhKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIGlmICgoKnBwc2EpLT5pZCA9PSBpZCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIHBzYSA9ICpwcHNhOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgIHBwc2EgPSAmKCpwcHNhKS0+ bmV4dDsNCj4gPiArICAgICAgIH0NCj4gPiArICAgICAgIGlmICghcHNhKQ0KPiA+ICsgICAgICAg ICAgICAgICBwcmludGYoIkZhaWxlZCB0byBmaW5kIHNoYXJlZCBhY3Rpb24gIyV1IG9uIHBvcnQg JXVcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBpZCwgcG9ydF9pZCk7DQo+ID4gKyAg ICAgICByZXR1cm4gcHNhOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK2Fj dGlvbl9hbGxvYyhwb3J0aWRfdCBwb3J0X2lkLCB1aW50MzJfdCBpZCwNCj4gPiArICAgICAgICAg ICAgc3RydWN0IHBvcnRfc2hhcmVkX2FjdGlvbiAqKmFjdGlvbikNCj4gPiArew0KPiA+ICsgICAg ICAgc3RydWN0IHJ0ZV9wb3J0ICpwb3J0Ow0KPiA+ICsgICAgICAgc3RydWN0IHBvcnRfc2hhcmVk X2FjdGlvbiAqKnBwc2E7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcG9ydF9zaGFyZWRfYWN0aW9uICpw c2EgPSBOVUxMOw0KPiA+ICsNCj4gPiArICAgICAgICphY3Rpb24gPSBOVUxMOw0KPiA+ICsgICAg ICAgaWYgKHBvcnRfaWRfaXNfaW52YWxpZChwb3J0X2lkLCBFTkFCTEVEX1dBUk4pIHx8DQo+ID4g KyAgICAgICAgICAgcG9ydF9pZCA9PSAocG9ydGlkX3QpUlRFX1BPUlRfQUxMKQ0KPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgIHBvcnQgPSAmcG9ydHNbcG9y dF9pZF07DQo+ID4gKyAgICAgICBpZiAoaWQgPT0gVUlOVDMyX01BWCkgew0KPiA+ICsgICAgICAg ICAgICAgICAvKiB0YWtpbmcgZmlyc3QgYXZhaWxhYmxlIElEICovDQo+ID4gKyAgICAgICAgICAg ICAgIGlmIChwb3J0LT5hY3Rpb25zX2xpc3QpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAocG9ydC0+YWN0aW9uc19saXN0LT5pZCA9PSBVSU5UMzJfTUFYIC0gMSkgew0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJIaWdoZXN0IHNoYXJlZCBhY3Rp b24gSUQgaXMgYWxyZWFkeSINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg YXNzaWduZWQsIGRlbGV0ZSBpdCBmaXJzdFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB9 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBwb3J0LT5hY3Rpb25zX2xpc3QtPmlk ICsgMTsNCj4gPiArICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBpZCA9IDA7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4g PiArICAgICAgIHBzYSA9IGNhbGxvYygxLCBzaXplb2YoKnBzYSkpOw0KPiA+ICsgICAgICAgaWYg KCFwc2EpIHsNCj4gPiArICAgICAgICAgICAgICAgcHJpbnRmKCJBbGxvY2F0aW9uIG9mIHBvcnQg JXUgc2hhcmVkIGFjdGlvbiBmYWlsZWRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBw b3J0X2lkKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ID4gKyAgICAg ICB9DQo+ID4gKyAgICAgICBwcHNhID0gJnBvcnQtPmFjdGlvbnNfbGlzdDsNCj4gPiArICAgICAg IHdoaWxlICgqcHBzYSAmJiAoKnBwc2EpLT5pZCA+IGlkKQ0KPiA+ICsgICAgICAgICAgICAgICBw cHNhID0gJigqcHBzYSktPm5leHQ7DQo+ID4gKyAgICAgICBpZiAoKnBwc2EgJiYgKCpwcHNhKS0+ aWQgPT0gaWQpIHsNCj4gPiArICAgICAgICAgICAgICAgcHJpbnRmKCJTaGFyZWQgYWN0aW9uICMl dSBpcyBhbHJlYWR5IGFzc2lnbmVkLCINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAiIGRl bGV0ZSBpdCBmaXJzdFxuIiwgaWQpOw0KPiA+ICsgICAgICAgICAgICAgICBmcmVlKHBzYSk7DQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsg ICAgICAgcHNhLT5uZXh0ID0gKnBwc2E7DQo+ID4gKyAgICAgICBwc2EtPmlkID0gaWQ7DQo+ID4g KyAgICAgICAqcHBzYSA9IHBzYTsNCj4gPiArICAgICAgICphY3Rpb24gPSBwc2E7DQo+ID4gKyAg ICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIENyZWF0ZSBzaGFyZWQgYWN0 aW9uICovDQo+ID4gK2ludA0KPiA+ICtwb3J0X3NoYXJlZF9hY3Rpb25fY3JlYXRlKHBvcnRpZF90 IHBvcnRfaWQsIHVpbnQzMl90IGlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9uKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBz dHJ1Y3QgcG9ydF9zaGFyZWRfYWN0aW9uICpwc2E7DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ ICsgICAgICAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yIGVycm9yOw0KPiA+ICsNCj4gPiArICAgICAg IHJldCA9IGFjdGlvbl9hbGxvYyhwb3J0X2lkLCBpZCwgJnBzYSk7DQo+ID4gKyAgICAgICBpZiAo cmV0KQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgLyogUG9p c29uaW5nIHRvIG1ha2Ugc3VyZSBQTURzIHVwZGF0ZSBpdCBpbiBjYXNlIG9mIGVycm9yLiAqLw0K PiA+ICsgICAgICAgbWVtc2V0KCZlcnJvciwgMHgyMiwgc2l6ZW9mKGVycm9yKSk7DQo+ID4gKyAg ICAgICBwc2EtPmFjdGlvbiA9IHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fY3JlYXRlKHBvcnRfaWQs IE5VTEwsIGFjdGlvbiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmVycm9yKTsNCj4gPiArICAgICAgIGlmICghcHNhLT5hY3Rpb24pIHsN Cj4gPiArICAgICAgICAgICAgICAgdWludDMyX3QgZGVzdHJveV9pZCA9IHBzYS0+aWQ7DQo+ID4g KyAgICAgICAgICAgICAgIHBvcnRfc2hhcmVkX2FjdGlvbl9kZXN0cm95KHBvcnRfaWQsIDEsICZk ZXN0cm95X2lkKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHBvcnRfZmxvd19jb21wbGFp bigmZXJyb3IpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgcHNhLT50eXBlID0gYWN0aW9u LT50eXBlOw0KPiA+ICsgICAgICAgcHJpbnRmKCJTaGFyZWQgYWN0aW9uICMldSBjcmVhdGVkXG4i LCBwc2EtPmlkKTsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KiogRGVzdHJveSBzaGFyZWQgYWN0aW9uICovDQo+ID4gK2ludA0KPiA+ICtwb3J0X3NoYXJlZF9h Y3Rpb25fZGVzdHJveShwb3J0aWRfdCBwb3J0X2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IG4sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dWludDMyX3QgKmFjdGlvbnMpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBydGVfcG9ydCAq cG9ydDsNCj4gPiArICAgICAgIHN0cnVjdCBwb3J0X3NoYXJlZF9hY3Rpb24gKip0bXA7DQo+ID4g KyAgICAgICB1aW50MzJfdCBjID0gMDsNCj4gPiArICAgICAgIGludCByZXQgPSAwOw0KPiA+ICsN Cj4gPiArICAgICAgIGlmIChwb3J0X2lkX2lzX2ludmFsaWQocG9ydF9pZCwgRU5BQkxFRF9XQVJO KSB8fA0KPiA+ICsgICAgICAgICAgIHBvcnRfaWQgPT0gKHBvcnRpZF90KVJURV9QT1JUX0FMTCkN Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgICBwb3J0ID0g JnBvcnRzW3BvcnRfaWRdOw0KPiA+ICsgICAgICAgdG1wID0gJnBvcnQtPmFjdGlvbnNfbGlzdDsN Cj4gPiArICAgICAgIHdoaWxlICgqdG1wKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHVpbnQzMl90 IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpICE9IG47ICsraSkg ew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciBlcnJv cjsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcG9ydF9zaGFyZWRfYWN0aW9u ICpwc2EgPSAqdG1wOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0 aW9uc1tpXSAhPSBwc2EtPmlkKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgKiBQb2lzb25pbmcgdG8gbWFrZSBzdXJlIFBNRHMgdXBkYXRlIGl0IGlu IGNhc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBvZiBlcnJvci4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBtZW1z ZXQoJmVycm9yLCAweDMzLCBzaXplb2YoZXJyb3IpKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKHBzYS0+YWN0aW9uICYmIHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fZGVz dHJveSgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9p ZCwgcHNhLT5hY3Rpb24sICZlcnJvcikpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldCA9IHBvcnRfZmxvd19jb21wbGFpbigmZXJyb3IpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgfQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICp0bXAgPSBwc2EtPm5leHQ7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgZnJlZShwc2EpOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHByaW50ZigiU2hhcmVkIGFjdGlvbiAjJXUgZGVzdHJveWVkXG4iLCBwc2EtPmlkKTsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAg fQ0KPiA+ICsgICAgICAgICAgICAgICBpZiAoaSA9PSBuKQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHRtcCA9ICYoKnRtcCktPm5leHQ7DQo+ID4gKyAgICAgICAgICAgICAgICsrYzsNCj4g PiArICAgICAgIH0NCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4g Kw0KPiA+ICsvKiogR2V0IHNoYXJlZCBhY3Rpb24gYnkgcG9ydCArIGlkICovDQo+ID4gK3N0cnVj dCBydGVfZmxvd19zaGFyZWRfYWN0aW9uICoNCj4gPiArcG9ydF9zaGFyZWRfYWN0aW9uX2dldF9i eV9pZChwb3J0aWRfdCBwb3J0X2lkLCB1aW50MzJfdCBpZCkNCj4gPiArew0KPiA+ICsNCj4gPiAr ICAgICAgIHN0cnVjdCBwb3J0X3NoYXJlZF9hY3Rpb24gKnBzYSA9IGFjdGlvbl9nZXRfYnlfaWQo cG9ydF9pZCwgaWQpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAocHNhKSA/IHBzYS0+YWN0 aW9uIDogTlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFVwZGF0ZSBzaGFyZWQgYWN0aW9u ICovDQo+ID4gK2ludA0KPiA+ICtwb3J0X3NoYXJlZF9hY3Rpb25fdXBkYXRlKHBvcnRpZF90IHBv cnRfaWQsIHVpbnQzMl90IGlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9uKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgcnRlX2Zsb3dfZXJyb3IgZXJyb3I7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfc2hh cmVkX2FjdGlvbiAqc2hhcmVkX2FjdGlvbjsNCj4gPiArDQo+ID4gKyAgICAgICBzaGFyZWRfYWN0 aW9uID0gcG9ydF9zaGFyZWRfYWN0aW9uX2dldF9ieV9pZChwb3J0X2lkLCBpZCk7DQo+ID4gKyAg ICAgICBpZiAoIXNoYXJlZF9hY3Rpb24pDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOw0KPiA+ICsgICAgICAgaWYgKHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fdXBkYXRlKHBvcnRf aWQsIHNoYXJlZF9hY3Rpb24sIGFjdGlvbiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmZXJyb3IpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBw b3J0X2Zsb3dfY29tcGxhaW4oJmVycm9yKTsNCj4gPiArICAgICAgIH0NCj4gPiArICAgICAgIHBy aW50ZigiU2hhcmVkIGFjdGlvbiAjJXUgdXBkYXRlZFxuIiwgaWQpOw0KPiA+ICsgICAgICAgcmV0 dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludA0KPiA+ICtwb3J0X3NoYXJlZF9hY3Rpb25f cXVlcnkocG9ydGlkX3QgcG9ydF9pZCwgdWludDMyX3QgaWQpDQo+ID4gK3sNCj4gPiArICAgICAg IHN0cnVjdCBydGVfZmxvd19lcnJvciBlcnJvcjsNCj4gPiArICAgICAgIHN0cnVjdCBwb3J0X3No YXJlZF9hY3Rpb24gKnBzYTsNCj4gPiArICAgICAgIHVpbnQ2NF90IGRlZmF1bHRfZGF0YTsNCj4g PiArICAgICAgIHZvaWQgKmRhdGEgPSBOVUxMOw0KPiA+ICsgICAgICAgaW50IHJldCA9IDA7DQo+ ID4gKw0KPiA+ICsgICAgICAgcHNhID0gYWN0aW9uX2dldF9ieV9pZChwb3J0X2lkLCBpZCk7DQo+ ID4gKyAgICAgICBpZiAoIXBzYSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ID4gKyAgICAgICBzd2l0Y2ggKHBzYS0+dHlwZSkgew0KPiA+ICsgICAgICAgY2FzZSBSVEVf RkxPV19BQ1RJT05fVFlQRV9SU1M6DQo+ID4gKyAgICAgICAgICAgICAgIGRhdGEgPSAmZGVmYXVs dF9kYXRhOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGRlZmF1bHQ6 DQo+ID4gKyAgICAgICAgICAgICAgIHByaW50ZigiU2hhcmVkIGFjdGlvbiAldSAodHlwZTogJWQp IG9uIHBvcnQgJXUgZG9lc24ndCBzdXBwb3J0Ig0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IiBxdWVyeVxuIiwgaWQsIHBzYS0+dHlwZSwgcG9ydF9pZCk7DQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiAtMTsNCj4gPiArICAgICAgIH0NCj4gPiArICAgICAgIGlmIChydGVfZmxvd19zaGFy ZWRfYWN0aW9uX3F1ZXJ5KHBvcnRfaWQsIHBzYS0+YWN0aW9uLCBkYXRhLCAmZXJyb3IpKQ0KPiA+ ICsgICAgICAgICAgICAgICByZXQgPSBwb3J0X2Zsb3dfY29tcGxhaW4oJmVycm9yKTsNCj4gPiAr ICAgICAgIHN3aXRjaCAocHNhLT50eXBlKSB7DQo+ID4gKyAgICAgICBjYXNlIFJURV9GTE9XX0FD VElPTl9UWVBFX1JTUzoNCj4gPiArICAgICAgICAgICAgICAgaWYgKCFyZXQpDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgcHJpbnRmKCJTaGFyZWQgUlNTIGFjdGlvbjpcblx0cmVmczoldVxu IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKigodWludDMyX3QgKilkYXRh KSk7DQo+ID4gKyAgICAgICAgICAgICAgIGRhdGEgPSBOVUxMOw0KPiA+ICsgICAgICAgICAgICAg ICBicmVhazsNCj4gPiArICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICAgIHByaW50 ZigiU2hhcmVkIGFjdGlvbiAldSAodHlwZTogJWQpIG9uIHBvcnQgJXUgZG9lc24ndCBzdXBwb3J0 Ig0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIiBxdWVyeVxuIiwgaWQsIHBzYS0+dHlwZSwg cG9ydF9pZCk7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IC0xOw0KPiA+ICsgICAgICAgfQ0K PiA+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgLyoqIFZhbGlkYXRl IGZsb3cgcnVsZS4gKi8NCj4gPiAgaW50DQo+ID4gIHBvcnRfZmxvd192YWxpZGF0ZShwb3J0aWRf dCBwb3J0X2lkLA0KPiA+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oIGIvYXBw L3Rlc3QtcG1kL3Rlc3RwbWQuaA0KPiA+IGluZGV4IGM3ZTdlNDFhOTcuLmE3OGZjOWYzZjAgMTAw NjQ0DQo+ID4gLS0tIGEvYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaA0KPiA+ICsrKyBiL2FwcC90ZXN0 LXBtZC90ZXN0cG1kLmgNCj4gPiBAQCAtMTQyLDYgKzE0MiwxNCBAQCBzdHJ1Y3QgcG9ydF9mbG93 IHsNCj4gPiAgICAgICAgIHVpbnQ4X3QgZGF0YVtdOyAvKio8IFN0b3JhZ2UgZm9yIGZsb3cgcnVs ZSBkZXNjcmlwdGlvbiAqLw0KPiA+ICB9Ow0KPiA+DQo+ID4gKy8qIERlc2NyaXB0b3IgZm9yIHNo YXJlZCBhY3Rpb24gKi8NCj4gPiArc3RydWN0IHBvcnRfc2hhcmVkX2FjdGlvbiB7DQo+ID4gKyAg ICAgICBzdHJ1Y3QgcG9ydF9zaGFyZWRfYWN0aW9uICpuZXh0OyAvKio8IE5leHQgZmxvdyBpbiBs aXN0LiAqLw0KPiA+ICsgICAgICAgdWludDMyX3QgaWQ7IC8qKjwgU2hhcmVkIGFjdGlvbiBJRC4g Ki8NCj4gPiArICAgICAgIGVudW0gcnRlX2Zsb3dfYWN0aW9uX3R5cGUgdHlwZTsgLyoqPCBBY3Rp b24gdHlwZS4gKi8NCj4gPiArICAgICAgIHN0cnVjdCBydGVfZmxvd19zaGFyZWRfYWN0aW9uICph Y3Rpb247ICAvKio8IFNoYXJlZCBhY3Rpb24gaGFuZGxlLiAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiAgLyoqDQo+ID4gICAqIFRoZSBkYXRhIHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdpdGggZWFjaCBw b3J0Lg0KPiA+ICAgKi8NCj4gPiBAQCAtMTcyLDYgKzE4MCw4IEBAIHN0cnVjdCBydGVfcG9ydCB7 DQo+ID4gICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtY19hZGRyX25iOyAvKio8IG5i LiBvZiBhZGRyLiBpbiBtY19hZGRyX3Bvb2wgKi8NCj4gPiAgICAgICAgIHVpbnQ4X3QgICAgICAg ICAgICAgICAgIHNsYXZlX2ZsYWc7IC8qKjwgYm9uZGluZyBzbGF2ZSBwb3J0ICovDQo+ID4gICAg ICAgICBzdHJ1Y3QgcG9ydF9mbG93ICAgICAgICAqZmxvd19saXN0OyAvKio8IEFzc29jaWF0ZWQg Zmxvd3MuICovDQo+ID4gKyAgICAgICBzdHJ1Y3QgcG9ydF9zaGFyZWRfYWN0aW9uICphY3Rpb25z X2xpc3Q7DQo+ID4gKyAgICAgICAvKio8IEFzc29jaWF0ZWQgc2hhcmVkIGFjdGlvbnMuICovDQo+ ID4gICAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHR4X2NhbGxiYWNrDQo+ICpyeF9kdW1w X2NiW1JURV9NQVhfUVVFVUVTX1BFUl9QT1JUKzFdOw0KPiA+ICAgICAgICAgY29uc3Qgc3RydWN0 IHJ0ZV9ldGhfcnh0eF9jYWxsYmFjaw0KPiAqdHhfZHVtcF9jYltSVEVfTUFYX1FVRVVFU19QRVJf UE9SVCsxXTsNCj4gPiAgICAgICAgIC8qKjwgbWV0YWRhdGEgdmFsdWUgdG8gaW5zZXJ0IGluIFR4 IHBhY2tldHMuICovDQo+ID4gQEAgLTc0OCw2ICs3NTgsMTQgQEAgdm9pZCBwb3J0X3JlZ19iaXRf ZmllbGRfc2V0KHBvcnRpZF90IHBvcnRfaWQsDQo+IHVpbnQzMl90IHJlZ19vZmYsDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYml0MV9wb3MsIHVpbnQ4X3QgYml0Ml9w b3MsIHVpbnQzMl90IHZhbHVlKTsNCj4gPiAgdm9pZCBwb3J0X3JlZ19kaXNwbGF5KHBvcnRpZF90 IHBvcnRfaWQsIHVpbnQzMl90IHJlZ19vZmYpOw0KPiA+ICB2b2lkIHBvcnRfcmVnX3NldChwb3J0 aWRfdCBwb3J0X2lkLCB1aW50MzJfdCByZWdfb2ZmLCB1aW50MzJfdCB2YWx1ZSk7DQo+ID4gK2lu dCBwb3J0X3NoYXJlZF9hY3Rpb25fY3JlYXRlKHBvcnRpZF90IHBvcnRfaWQsIHVpbnQzMl90IGlk LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxv d19hY3Rpb24gKmFjdGlvbik7DQo+ID4gK2ludCBwb3J0X3NoYXJlZF9hY3Rpb25fZGVzdHJveShw b3J0aWRfdCBwb3J0X2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBuLCBjb25zdCB1aW50MzJfdCAqYWN0aW9uKTsNCj4gPiArc3RydWN0IHJ0ZV9mbG93X3No YXJlZF9hY3Rpb24gKnBvcnRfc2hhcmVkX2FjdGlvbl9nZXRfYnlfaWQocG9ydGlkX3QNCj4gcG9y dF9pZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCBpZCk7DQo+ID4gK2ludCBwb3J0X3NoYXJlZF9hY3Rpb25f dXBkYXRlKHBvcnRpZF90IHBvcnRfaWQsIHVpbnQzMl90IGlkLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbik7DQo+ ID4gIGludCBwb3J0X2Zsb3dfdmFsaWRhdGUocG9ydGlkX3QgcG9ydF9pZCwNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19hdHRyICphdHRyLA0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gKnBhdHRlcm4s DQo+ID4gQEAgLTc1Niw2ICs3NzQsNyBAQCBpbnQgcG9ydF9mbG93X2NyZWF0ZShwb3J0aWRfdCBw b3J0X2lkLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxvd19h dHRyICphdHRyLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZmxv d19pdGVtICpwYXR0ZXJuLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBy dGVfZmxvd19hY3Rpb24gKmFjdGlvbnMpOw0KPiA+ICtpbnQgcG9ydF9zaGFyZWRfYWN0aW9uX3F1 ZXJ5KHBvcnRpZF90IHBvcnRfaWQsIHVpbnQzMl90IGlkKTsNCj4gPiAgdm9pZCB1cGRhdGVfYWdl X2FjdGlvbl9jb250ZXh0KGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbnMsDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvcnRfZmxvdyAqcGYpOw0KPiA+ICBpbnQg cG9ydF9mbG93X2Rlc3Ryb3kocG9ydGlkX3QgcG9ydF9pZCwgdWludDMyX3QgbiwgY29uc3QgdWlu dDMyX3QgKnJ1bGUpOw0KPiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Rlc3RwbWRfYXBwX3Vn L3Rlc3RwbWRfZnVuY3MucnN0DQo+IGIvZG9jL2d1aWRlcy90ZXN0cG1kX2FwcF91Zy90ZXN0cG1k X2Z1bmNzLnJzdA0KPiA+IGluZGV4IDcyYmRiMWJlNDMuLmY0YjI2ZWQzMDcgMTAwNjQ0DQo+ID4g LS0tIGEvZG9jL2d1aWRlcy90ZXN0cG1kX2FwcF91Zy90ZXN0cG1kX2Z1bmNzLnJzdA0KPiA+ICsr KyBiL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcvdGVzdHBtZF9mdW5jcy5yc3QNCj4gPiBAQCAt NDM4Miw2ICs0MzgyLDExIEBAIFRoaXMgc2VjdGlvbiBsaXN0cyBzdXBwb3J0ZWQgYWN0aW9ucyBh bmQgdGhlaXINCj4gYXR0cmlidXRlcywgaWYgYW55Lg0KPiA+DQo+ID4gICAgLSBgYGRzY3BfdmFs dWUge3Vuc2lnbmVkfWBgOiBUaGUgbmV3IERTQ1AgdmFsdWUgdG8gYmUgc2V0DQo+ID4NCj4gPiAr LSBgYHNoYXJlZGBgOiBVc2Ugc2hhcmVkIGFjdGlvbiBjcmVhdGVkIHZpYQ0KPiA+ICsgIGBgZmxv dyBzaGFyZWRfYWN0aW9uIHtwb3J0X2lkfSBjcmVhdGVgYA0KPiA+ICsNCj4gPiArICAtIGBgc2hh cmVkX2FjdGlvbl9pZCB7dW5zaWduZWR9YGA6IFNoYXJlZCBhY3Rpb24gSUQgdG8gdXNlDQo+ID4g Kw0KPiA+ICBEZXN0cm95aW5nIGZsb3cgcnVsZXMNCj4gPiAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+ DQo+ID4NCj4gPiBAQCAtNDY3MSw2ICs0Njc2LDExMiBAQCBJZiBhdHRhY2ggYGBkZXN0cm95YGAg cGFyYW1ldGVyLCB0aGUgY29tbWFuZCB3aWxsDQo+IGRlc3Ryb3kgYWxsIHRoZSBsaXN0IGFnZWQg Zmxvdw0KPiA+ICAgICB0ZXN0cG1kPiBmbG93IGFnZWQgMA0KPiA+ICAgICBQb3J0IDAgdG90YWwg YWdlZCBmbG93czogMA0KPiA+DQo+ID4gK0NyZWF0aW5nIHNoYXJlZCBhY3Rpb25zDQo+ID4gK35+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ID4gK2BgZmxvdyBzaGFyZWRfYWN0aW9uIHtwb3J0X2lk fSBjcmVhdGVgYCBjcmVhdGVzIHNoYXJlZCBhY3Rpb24gd2l0aCBvcHRpb25hbA0KPiA+ICtzaGFy ZWQgYWN0aW9uIElELiBJdCBpcyBib3VuZCB0byBgYHJ0ZV9mbG93X3NoYXJlZF9hY3Rpb25fY3Jl YXRlKClgYDo6DQo+ID4gKw0KPiA+ICsgICBmbG93IHNoYXJlZF9hY3Rpb24ge3BvcnRfaWR9IGNy ZWF0ZSBbYWN0aW9uX2lkIHtzaGFyZWRfYWN0aW9uX2lkfV0gXA0KPiA+ICsgICAgICB7YWN0aW9u fSAvIGVuZA0KPiBOZWVkIHRvIGFsbG93IHBhc3NpbmcgdGhlIGRpcmVjdGlvbiBhdHRyaWJ1dGUu DQo+IA0KDQpGaXhlZC4NCg0KPiA+ICsNCj4gPiArSWYgc3VjY2Vzc2Z1bCwgaXQgd2lsbCBzaG93 OjoNCj4gPiArDQo+ID4gKyAgIFNoYXJlZCBhY3Rpb24gI1suLi5dIGNyZWF0ZWQNCj4gPiArDQo+ ID4gK090aGVyd2lzZSwgaXQgd2lsbCBjb21wbGFpbiBlaXRoZXIgdGhhdCBzaGFyZWQgYWN0aW9u IGFscmVhZHkgZXhpc3RzIG9yIHRoYXQNCj4gPiArc29tZSBlcnJvciBvY2N1cnJlZDo6DQo+ID4g Kw0KPiA+ICsgICBTaGFyZWQgYWN0aW9uICNbLi4uXSBpcyBhbHJlYWR5IGFzc2lnbmVkLCBkZWxl dGUgaXQgZmlyc3QNCj4gPiArDQo+ID4gKzo6DQo+ID4gKw0KPiA+ICsgICBDYXVnaHQgZXJyb3Ig dHlwZSBbLi4uXSAoWy4uLl0pOiBbLi4uXQ0KPiA+ICsNCj4gPiArQ3JlYXRlIHNoYXJlZCByc3Mg YWN0aW9uIHdpdGggaWQgMTAwIHRvIHF1ZXVlcyAxIGFuZCAyIG9uIHBvcnQgMDo6DQo+ID4gKw0K PiA+ICsgICB0ZXN0cG1kPiBmbG93IHNoYXJlZF9hY3Rpb24gMCBjcmVhdGUgYWN0aW9uX2lkIDEw MCBcDQo+ID4gKyAgICAgIHJzcyBxdWV1ZXMgMSAyIGVuZCAvIGVuZA0KPiA+ICsNCj4gPiArQ3Jl YXRlIHNoYXJlZCByc3MgYWN0aW9uIHdpdGggaWQgYXNzaWduZWQgYnkgdGVzdHBtZCB0byBxdWV1 ZXMgMSBhbmQgMiBvbg0KPiA+ICtwb3J0IDA6Og0KPiA+ICsNCj4gPiArICAgICAgIHRlc3RwbWQ+ IGZsb3cgc2hhcmVkX2FjdGlvbiAwIGNyZWF0ZSBhY3Rpb25faWQgXA0KPiA+ICsgICAgICAgICAg ICAgICByc3MgcXVldWVzIDAgMSBlbmQgLyBlbmQNCj4gPiArDQo+ID4gK1VwZGF0aW5nIHNoYXJl ZCBhY3Rpb25zDQo+ID4gK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ID4gK2BgZmxvdyBzaGFy ZWRfYWN0aW9uIHtwb3J0X2lkfSB1cGRhdGVgYCB1cGRhdGVzIGNvbmZpZ3VyYXRpb24gb2YgdGhl IHNoYXJlZA0KPiA+ICthY3Rpb24gZnJvbSBpdHMgc2hhcmVkIGFjdGlvbiBJRCAoYXMgcmV0dXJu ZWQgYnkNCj4gPiArYGBmbG93IHNoYXJlZF9hY3Rpb24ge3BvcnRfaWR9IGNyZWF0ZWBgKS4gSXQg aXMgYm91bmQgdG8NCj4gPiArYGBydGVfZmxvd19zaGFyZWRfYWN0aW9uX3VwZGF0ZSgpYGA6Og0K PiA+ICsNCj4gPiArICBmbG93IHNoYXJlZF9hY3Rpb24ge3BvcnRfaWR9IHVwZGF0ZSB7c2hhcmVk X2FjdGlvbl9pZH0ge2FjdGlvbn0gLyBlbmQNCj4gPiArDQo+ID4gK0lmIHN1Y2Nlc3NmdWwsIGl0 IHdpbGwgc2hvdzo6DQo+ID4gKw0KPiA+ICsgICBTaGFyZWQgYWN0aW9uICNbLi4uXSB1cGRhdGVk DQo+ID4gKw0KPiA+ICtPdGhlcndpc2UsIGl0IHdpbGwgY29tcGxhaW4gZWl0aGVyIHRoYXQgc2hh cmVkIGFjdGlvbiBub3QgZm91bmQgb3IgdGhhdCBzb21lDQo+ID4gK2Vycm9yIG9jY3VycmVkOjoN Cj4gPiArDQo+ID4gKyAgIEZhaWxlZCB0byBmaW5kIHNoYXJlZCBhY3Rpb24gI1suLi5dIG9uIHBv cnQgWy4uLl0NCj4gPiArDQo+ID4gKzo6DQo+ID4gKw0KPiA+ICsgICBDYXVnaHQgZXJyb3IgdHlw ZSBbLi4uXSAoWy4uLl0pOiBbLi4uXQ0KPiA+ICsNCj4gPiArVXBkYXRlIHNoYXJlZCByc3MgYWN0 aW9uIGhhdmluZyBpZCAxMDAgb24gcG9ydCAwIHdpdGggcnNzIHRvIHF1ZXVlcyAwIGFuZCAzDQo+ ID4gKyhpbiBjcmVhdGUgZXhhbXBsZSBhYm92ZSByc3MgcXVldWVzIHdlcmUgMSBhbmQgMik6Og0K PiA+ICsNCj4gPiArICAgdGVzdHBtZD4gZmxvdyBzaGFyZWRfYWN0aW9uIDAgdXBkYXRlIDEwMCBy c3MgcXVldWVzIDAgMyBlbmQgLyBlbmQNCj4gPiArDQo+ID4gK0Rlc3Ryb3lpbmcgc2hhcmVkIGFj dGlvbnMNCj4gPiArfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiA+ICtgYGZsb3cgc2hhcmVk X2FjdGlvbiB7cG9ydF9pZH0gdXBkYXRlYGAgZGVzdHJveXMgb25lIG9yIG1vcmUgc2hhcmVkIGFj dGlvbnMNCj4gPiArZnJvbSB0aGVpciBzaGFyZWQgYWN0aW9uIElEcyAoYXMgcmV0dXJuZWQgYnkN Cj4gPiArYGBmbG93IHNoYXJlZF9hY3Rpb24ge3BvcnRfaWR9IGNyZWF0ZWBgKS4gSXQgaXMgYm91 bmQgdG8NCj4gPiArYGBydGVfZmxvd19zaGFyZWRfYWN0aW9uX2Rlc3Ryb3koKWBgOjoNCj4gPiAr DQo+ID4gKyAgIGZsb3cgc2hhcmVkX2FjdGlvbiB7cG9ydF9pZH0gZGVzdHJveSBhY3Rpb25faWQg e3NoYXJlZF9hY3Rpb25faWR9IFsuLi5dDQo+ID4gKw0KPiA+ICtJZiBzdWNjZXNzZnVsLCBpdCB3 aWxsIHNob3c6Og0KPiA+ICsNCj4gPiArICAgU2hhcmVkIGFjdGlvbiAjWy4uLl0gZGVzdHJveWVk DQo+ID4gKw0KPiA+ICtJdCBkb2VzIG5vdCByZXBvcnQgYW55dGhpbmcgZm9yIHNoYXJlZCBhY3Rp b24gSURzIHRoYXQgZG8gbm90IGV4aXN0Lg0KPiA+ICtUaGUgdXN1YWwgZXJyb3IgbWVzc2FnZSBp cyBzaG93biB3aGVuIGEgc2hhcmVkIGFjdGlvbiBjYW5ub3QgYmUNCj4gZGVzdHJveWVkOjoNCj4g PiArDQo+ID4gKyAgIENhdWdodCBlcnJvciB0eXBlIFsuLi5dIChbLi4uXSk6IFsuLi5dDQo+ID4g Kw0KPiA+ICtEZXN0cm95IHNoYXJlZCBhY3Rpb25zIGhhdmluZyBpZCAxMDAgJiAxMDE6Og0KPiA+ ICsNCj4gPiArICAgdGVzdHBtZD4gZmxvdyBzaGFyZWRfYWN0aW9uIDAgZGVzdHJveSBhY3Rpb25f aWQgMTAwIGFjdGlvbl9pZCAxMDENCj4gPiArDQo+ID4gK1F1ZXJ5IHNoYXJlZCBhY3Rpb25zDQo+ ID4gK35+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ID4gK2BgZmxvdyBzaGFyZWRfYWN0aW9uIHtwb3J0 X2lkfSBxdWVyeWBgIHF1ZXJpZXMgdGhlIHNoYXJlZCBhY3Rpb24gZnJvbSBpdHMNCj4gPiArc2hh cmVkIGFjdGlvbiBJRCAoYXMgcmV0dXJuZWQgYnkgYGBmbG93IHNoYXJlZF9hY3Rpb24ge3BvcnRf aWR9IGNyZWF0ZWBgKS4NCj4gPiArSXQgaXMgYm91bmQgdG8gYGBydGVfZmxvd19zaGFyZWRfYWN0 aW9uX3F1ZXJ5KClgYDo6DQo+ID4gKw0KPiA+ICsgIGZsb3cgc2hhcmVkX2FjdGlvbiB7cG9ydF9p ZH0gcXVlcnkge3NoYXJlZF9hY3Rpb25faWR9DQo+ID4gKw0KPiA+ICtDdXJyZW50bHkgb25seSBy c3Mgc2hhcmVkIGFjdGlvbiBzdXBwb3J0ZWQuIElmIHN1Y2Nlc3NmdWwsIGl0IHdpbGwgc2hvdzo6 DQo+ID4gKw0KPiA+ICsgICBTaGFyZWQgUlNTIGFjdGlvbjoNCj4gPiArICAgICAgcmVmczpbLi4u XQ0KPiA+ICsNCj4gPiArT3RoZXJ3aXNlLCBpdCB3aWxsIGNvbXBsYWluIGVpdGhlciB0aGF0IHNo YXJlZCBhY3Rpb24gbm90IGZvdW5kIG9yIHRoYXQgc29tZQ0KPiA+ICtlcnJvciBvY2N1cnJlZDo6 DQo+ID4gKw0KPiA+ICsgICBGYWlsZWQgdG8gZmluZCBzaGFyZWQgYWN0aW9uICNbLi4uXSBvbiBw b3J0IFsuLi5dDQo+ID4gKw0KPiA+ICs6Og0KPiA+ICsNCj4gPiArICAgQ2F1Z2h0IGVycm9yIHR5 cGUgWy4uLl0gKFsuLi5dKTogWy4uLl0NCj4gPiArDQo+ID4gK1F1ZXJ5IHNoYXJlZCBhY3Rpb24g aGF2aW5nIGlkIDEwMDo6DQo+ID4gKw0KPiA+ICsgICB0ZXN0cG1kPiBmbG93IHNoYXJlZF9hY3Rp b24gMCBxdWVyeSAxMDANCj4gPg0KPiA+ICBTYW1wbGUgUWluUSBmbG93IHJ1bGVzDQo+ID4gIH5+ fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiAtLQ0KPiA+IDIuMjYuMg0KPiA+DQo=