Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oloOR-0007fM-Lw for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Oct 2022 09:32:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oloOQ-0003sL-IS for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Oct 2022 09:32:42 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oloOP-0003s4-98 for pgsql-hackers@lists.postgresql.org; Fri, 21 Oct 2022 09:32:42 +0000 Received: from esa15.fujitsucc.c3s2.iphmx.com ([68.232.156.107]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oloOL-0001SL-AW for pgsql-hackers@lists.postgresql.org; Fri, 21 Oct 2022 09:32:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1666344758; x=1697880758; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=9VDfb+9pHN8x708WKVyvTYRKDUHHf0Mbz67erPyxMck=; b=HOdYOV6npmYrXoNUHW+vLne7+N4WluwW8RUpuOORqfutvhq0KPB4Dyaq SqvW21RBF6S8+0Z7YuwKVPeCoLmXtTkOvs/yEDixypQQlRD5RanDxwoih qulfbUka6xb3xkkyUtXgzVXg8h/0jj3Ha5zk0ZXApSBjUROUkx/AUrlAu G6NPnOI8sFo9No8ed5Jj7tzjN5TTOg+dHcsMXlS8J4fe9h0ehfxZxLZX9 ltIdqSAt+rLB8EOQxMFjrPejg5LW+v9sBrrN0wUXgEd0jzoCAZdQK7SKQ +NNNA1btG0zoMgaKNoFXj1UNYXHAiEmNbQcFaqFNkIgVFPNFuPdtX0aJ6 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10506"; a="68086665" X-IronPort-AV: E=Sophos;i="5.95,200,1661785200"; d="scan'208,223";a="68086665" Received: from mail-os0jpn01lp2108.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.108]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2022 18:32:33 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jiDnDicH20QD0EXy+6sC5DzSFBZWYEGXGgOW7nr+zZeDoIdbat+82tAkUZdRarHlXOLHGg6OzPoIEXWlHzxWaRpuc0v26B+g3nrUl8DUqCRQ/kpEPT6D25MTwTme+DosGErR6J7zoWDJnEiCRDPjIM87fY6/2ot/g5qXh6qnv58ShMGLBisH562xBmoS84bbx9fO1Mi0fgQ6LsXXRbwTruu13ImPDTsndQcLrEVKcUVoaVC5km2SUBV/4Pzi0Daz+KuuAdSakvy+OUra5EzkXAW9VAosnB4zGX6K81y7zDjyBGlDBKWEfa6mIoWEMsQP/0bZZnNRIxW4h9kR25nS4Q== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=T8CKQcIhTfbhkfmt6fhmZF5AkDvKoAZFc/+SB6C4yYc=; b=O+xaBjYBBPnUKX2qzeSaU75j5IAv5RHY9lX/fz9n246n1TKErYqQRCz9tAf68eI2wkHeM9G3/TmzD0JWOwlEl+8cQHuyqjDfB6s5pVEtGZfkZ6tkuOIk1ZLGTfy+Vw73RDKJVKuNIS2csn6PGzO3gM/08yOnCYF+RXnC/gCQLPHJqw2+qDswFU88xv4pUuFMPL8Jkp2Qg4PrI5lFIQLiNULdBaiE5lKe5KWJY/y4gSE+SwPqXOrwQzrRblCc1hZdaksmz3Q/lgHSiedCvKvjSkqdpl7jjoFuj1TbbxhmPpiSLpW1RKRAn/YWMbGByjdNEL5DDV76MjhtMXsWeXMd5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYCPR01MB5934.jpnprd01.prod.outlook.com (2603:1096:400:40::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.35; Fri, 21 Oct 2022 09:32:21 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::8dc0:c0c6:acd:def0]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::8dc0:c0c6:acd:def0%7]) with mapi id 15.20.5723.035; Fri, 21 Oct 2022 09:32:20 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: "wangw.fnst@fujitsu.com" , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers , Peter Smith Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5ZKpBKXxeUU2FhEhnmXQum6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCABHgYgIAKpESAgAfOw4CAA0tmAIAAMWoQgAX4G4CAAc+XQIABukgAgAAT6gCAAWLFQA== Date: Fri, 21 Oct 2022 09:32:20 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ODRiYzJiOTItYWNkMS00ODFhLWI3YzMtYjI4ZDJhOTky?= =?utf-8?B?OWUwO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0xMC0yMVQwNjo1OTowNFo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|TYCPR01MB5934:EE_ x-ms-office365-filtering-correlation-id: c5756b60-9bbf-4b4e-b12a-08dab3472732 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MTbZXcrbxrvgrcSLfN+zYB4ikMQC7y7mZJR+ez8Q2mg0nAw9MP+r3rfukSDDqDWBDTQiF0VTmaipm5/oiCtdmGOvxOw15P0GHqH27qogGxMjvXV6ZVjUShuGjlI9zIqufz92cpf3z3SA7laah8a3cbsbyNA8F9/CpmYsW+FP2LLZJtpwwuvkzNrC3X5m4mrZvmuAhlBvkfmJYJuvmMBQkSJBnEQT19GSps45DRASexCkN5P2hxBuOVx7THbBDpKwM4JH9+6XbMOhQt4EK49oCODY/xUj/b6H6xS6pzA8xpEcdxrd3Q5Pr7hpVkWrypLAdISZ6azAgw2/wPZNBTCePTFORtr/AoslNtApr+TiUJa4NkDiq6fxdTtwYhWcxdVg3tlEFmrizGgN3L8dQThan58txYQeEGug4n360YR3XYq5Zv/gWgkP0KcxmPl+ct0dHccACdULpTysj7nb6ML8R7DZpC+DlKS5rAbTtXTxOP1rXUjrhG1KoVhpupbEi+nw+6lQDT9WomsKbTIIFX4ErmNk/IRnJfdsmCirzfuuiXAt/ReZ9t448K5xkD6bxNpidiehk5y3UQdMKGUvCRfDmjw/oOeapD5ths4B1KSBnyOsFilvQ/0ixH6nMwfX8+BR7iUW9NiIiOxQvfo6qFJubrvDyyDP0oFa7UdV0r4Yfhn8hU1p1AjXGAeGKrZVsYcXOWsukBRdYJMwqHZ95jiwLDEuuKYKQTEyH3Z42WtKyGVIU0TdVQVgVx2OBIK74YiJMny3KZ87F9HOn/pA4IXUI4V9MGKA+61/uvTEdDhT+wxL1azuWzhvfpjCZSugfUe4XS4Rmrbv0UXp73B6jygHPDy3/Z77QcssKY1dnIFXSZ3acTNET2MXPNoFHp4a2l52I0HmY0iWzGZr6x37f1S1TQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(136003)(366004)(396003)(376002)(451199015)(1590799012)(86362001)(316002)(6916009)(54906003)(45080400002)(9686003)(26005)(66946007)(6506007)(55016003)(66556008)(66476007)(8676002)(66446008)(76116006)(41300700001)(478600001)(966005)(53546011)(64756008)(7696005)(4326008)(33656002)(85182001)(71200400001)(186003)(2906002)(83380400001)(38070700005)(8936002)(52536014)(99936003)(122000001)(82960400001)(38100700002)(5660300002)(1580799009)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K0hQYmV2YjRFZk85SFVxbU0xVUh2U2VtTC9nVEFhcUl6NU9TSlRiWndKV1hY?= =?utf-8?B?bHhyRHowMFhjZUsyclBRRC9RallPb29Qdkw3U29maGFZVHpXSmFKWlNva0pL?= =?utf-8?B?bHVSVTJ0d0ZHb0htNmpTMWsrTWkyTDJoOC9SOW1BcnJ0V2NCZ1czQ1hpTll5?= =?utf-8?B?NXpUZW00UUZ2WXYyNy9uamRvQzI3MEEvRVF5YnJuaC8zTHgybnZNamI4WDdv?= =?utf-8?B?NHNnNmdFS0xLYjRTTFJMaW05ZUlxYXNrSy9YRTdmQXJrTUpkYTdxT25rRTFk?= =?utf-8?B?TlFmcDJOU0I1dU9nZFNIMTdWRWtHS2hEYVVwcWRDYzNCenM2bmxvT2RsSlFV?= =?utf-8?B?R2ZwaHh6cDdUVnlnaVBKODF0QkRmYmpxNm5WM245UHJzL0hJSVlQa3JydUZh?= =?utf-8?B?ZHRGV1k2N2p6WURjcUdlcXZEdU5MeS9ZYno2RE9yRTVpakV1bkV6b1FRYkdO?= =?utf-8?B?c1pCSGJZY3B6Y2txUnNKL1RvazZmaEVTck1zeWhFekttUDFGUm1qSjBXdVd5?= =?utf-8?B?ZGZaUVcyc0JYQTZmKzYzY2FZaUNTcTNtRTZ6bmhBakhGTWI4a2p2Y1ZZcmZK?= =?utf-8?B?VVBKOU1hMGZBZUI0RXJ4Nzk2K0syWkpaWWFpckdsNFhWd1VNY1dvaWdkcEFX?= =?utf-8?B?VEV3QVJnbW5TOEhSb0ErTTM3Vk1qV24wM1NVV0xPcGpLbkdSK2l2ZXBvNVhv?= =?utf-8?B?b3RudTBvMFNSUXdzOWdJV25aVDQ5QWtEQ3pZYkpicXlzMDRFOFBpQk50Q3BU?= =?utf-8?B?ZGtqRGxWL1cyN1Q1ajlteUJxNlRzZHFHMVQ3TWZXK2lLNkdDSExzR0oxRStV?= =?utf-8?B?emJ5VndyWTc2eGE0RnhTWmI5SjR6b3J4aUZKSytPMjB5TytWaEhWWEE1VVE4?= =?utf-8?B?UDU5YlRNb0kwdksxZXJ4c0k1NUFuMjh6UDkyRXNFQzV2NWZOeDVuRUdPKzZT?= =?utf-8?B?RGFJajU2NEp3OS9FK2tpOTRiUDRaRC9HMnA0RXlpVjMwWWxCbE5qRWhYbnQy?= =?utf-8?B?cDQzUjVyMHpXUUJ2OUt6WFdDTUlHeHgzVnBGaDVkOGRuVldhRTlZaEFqejZa?= =?utf-8?B?VHFvVVRkNThieXI5QlowZXNhdkJQSGZDU3NrSkdGajJ1Um8rLzZQYWttWHhp?= =?utf-8?B?UGU0dkpldVQ1NElKMUNnMDMyeUh2QTMzeFk5dzcvNERmb1NzRkV6MFZDNHF6?= =?utf-8?B?cjBJelFJTGVQRTc5emU0bjIvbjRxdnFuS015WWRXYzRhVVRhWnRrc0gxZGpL?= =?utf-8?B?bmNGU2RhY1hBWWEyRTBMTkRMQm1aYXBWcFlOTVhabE1UdUE2cnJ5Y0UwaEp4?= =?utf-8?B?VFgzZDBJdHF2d0dmMUViU1pnNVNKMmxsYjh3aWI3MGFyKzdNMjlLYnVrRzI1?= =?utf-8?B?dFh4Q0xyMVBDb0xrcGtNZlk0WjNhSHZEdmpzUndNdmQ0QUREY1Y2dVBrcytW?= =?utf-8?B?UkZ0cGZ1SVdrYnRZaGxNQTJNNW5zUTNlVEt6M3pLTnB0VzU1cU4yOUpIczV4?= =?utf-8?B?anVwVEs5REdLN1ZERFdQV0N4dzk4ckdpVGlCOWVjdlNPMUE2YmdUb1czR1c5?= =?utf-8?B?RHA3Z0pTZ0JiOC9Tclpudld4Q21sbUVlNlVGTy9wWnZ5UnVzSTR4SWtobTZj?= =?utf-8?B?RHY5a3pTM1VrdzRndW1wT3BmNEQyM0YxelZkVDd5N2M2UExFazlBNzFRQTNn?= =?utf-8?B?NlcweDVtdFZtbk5lWWJDTk5DbU4zcm9JNnE2K2hvZVRSd1RoS2JIN3VkWkl6?= =?utf-8?B?Vk5iM2s3ODM5YmRDTUIyU2NFWHdCZGpRTy9yeU96QlNLSTFtdmdwYTdaSlhp?= =?utf-8?B?dy9EZzB2YWNhRm1xTm9FNThmQzlJR3Rma1RwWDExZVY4RUZLTHp6ZlFNRFR6?= =?utf-8?B?NnNtaUx5cHkyRjBjZGRwdlF5VEtQZTFqRUpDTHBDZlR2OG50amx6b0Z5Wm1J?= =?utf-8?B?Rm9oeWlWbjJmb3lBdjdNSFpUN2hNU1NKbktyandKdGF1eFFIRWtUYnllQ0gw?= =?utf-8?B?cWlBUVRRRmZVdmNWSWNrcVlnRXk2ZmVobEc4N1BaUklTRDRFVjhZcWxDMTlY?= =?utf-8?B?bDZjaEJXRHJlZUZvR1YwM2ZvMjdoQTZkMWZldi9yT3pIenBBNlNkSEZoZmFa?= =?utf-8?Q?Dop8Md0yZCGGZGLuCgejelISp?= Content-Type: multipart/mixed; boundary="_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5756b60-9bbf-4b4e-b12a-08dab3472732 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Oct 2022 09:32:20.7873 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: P5fDaZClkxOzVTTdF2xeZDV6ertCbGAv1hfF7w+INs/3YozuO6qXcw9d61xO4OoPWIJ1fY6YAvQ+ETMv8KGSgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB5934 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1cnNkYXksIE9jdG9iZXIgMjAsIDIwMjIgNTo0OSBQTSBBbWl0IEthcGlsYSA8YW1pdC5r YXBpbGExNkBnbWFpbC5jb20+IHdyb3RlOg0KPiBPbiBUaHUsIE9jdCAyMCwgMjAyMiBhdCAyOjA4 IFBNIFBldGVyIFNtaXRoIDxzbWl0aHBiMjI1MEBnbWFpbC5jb20+DQo+IHdyb3RlOg0KPiA+DQo+ ID4gNy4gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbg0KPiA+DQo+ID4gPiAxMi4gZ2V0X3Ry YW5zYWN0aW9uX2FwcGx5X2FjdGlvbg0KPiA+ID4NCj4gPiA+IEkgc3RpbGwgZmVsdCBsaWtlIHRo ZXJlIHNob3VsZCBiZSBzb21lIHRhYmxlc3luYyBjaGVja3MvY29tbWVudHMgaW4NCj4gPiA+IHRo aXMgZnVuY3Rpb24sIGp1c3QgZm9yIHNhbml0eSwgZXZlbiBpZiBpdCB3b3JrcyBhcy1pcyBub3cu DQo+ID4gPg0KPiA+ID4gRm9yIGV4YW1wbGUsIGFyZSB5b3Ugc2F5aW5nIChbM10gIzIyYikgdGhh dCB0aGVyZSBtaWdodCBiZSByYXJlDQo+ID4gPiBjYXNlcyB3aGVyZSBhIFRhYmxlc3luYyB3b3Vs ZCBjYWxsIHRvIHBhcmFsbGVsX2FwcGx5X2ZpbmRfd29ya2VyPw0KPiA+ID4gVGhhdCBzZWVtcyBz dHJhbmdlLCBnaXZlbiB0aGF0ICJmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZQ0K PiA+ID4gYmVpbmcgYXBwbGllZCBpbiB0aGUgcGFyYWxsZWwgLi4uIHdlIGRpc2FsbG93IGFwcGx5 aW5nIGNoYW5nZXMgb24gYQ0KPiA+ID4gdGFibGUgdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0 YXRlIi4NCj4gPiA+DQo+ID4gPiAtLS0tLS0NCj4gPg0KPiA+IEhvdXogd3JvdGUgWzJdIC0NCj4g Pg0KPiA+IEkgdGhpbmsgYmVjYXVzZSB3ZSB3b24ndCB0cnkgdG8gc3RhcnQgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGluIHRhYmxlDQo+ID4gc3luYyB3b3JrZXIoc2VlIHRoZSBjaGVjayBpbiBwYXJh bGxlbF9hcHBseV9jYW5fc3RhcnQoKSksIHNvIHdlIHdvbid0DQo+ID4gZmluZCBhbnkgd29ya2Vy IGluIHBhcmFsbGVsX2FwcGx5X2ZpbmRfd29ya2VyKCkgd2hpY2ggbWVhbnMNCj4gPiBnZXRfdHJh bnNhY3Rpb25fYXBwbHlfYWN0aW9uIHdpbGwgcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJWkUu IEFuZA0KPiA+IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24gaXMgYSBmdW5jdGlvbiB3aGlj aCBjYW4gYmUgaW52b2tlZCBmb3INCj4gPiBhbGwga2luZHMgb2Ygd29ya2VycyhzYW1lIGlzIHRy dWUgZm9yIGFsbCBhcHBseV9oYW5kbGVfeHh4IGZ1bmN0aW9ucyksDQo+ID4gc28gbm90IHN1cmUg aWYgdGFibGUgc3luYyBjaGVjay9jb21tZW50IGlzIG5lY2Vzc2FyeS4NCj4gPg0KPiA+IH4NCj4g Pg0KPiA+IFN1cmUsIGFuZCBJIGJlbGlldmUgeW91IHdoZW4geW91IHNheSBpdCBhbGwgd29ya3Mg T0sgLSBidXQgSU1PIHRoZXJlDQo+ID4gaXMgc29tZXRoaW5nIHN0aWxsIG5vdCBxdWl0ZSByaWdo dCB3aXRoIHRoaXMgY3VycmVudCBjb2RlLiBGb3INCj4gPiBleGFtcGxlLA0KPiA+DQo+ID4gZS5n LjEgdGhlIGZ1bmN0aW9uYWwgd2lsbCByZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRSBmb3Ig VGFibGVzeW5jDQo+ID4gd29ya2VyLCBhbmQgeWV0IHRoZSBjb21tZW50IGZvciBUUkFOU19MRUFE RVJfU0VSSUFMSVpFIHNheXMgIm1lYW5zDQo+ID4gdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBh cHBseSB3b3JrZXIiIChleGNlcHQgd2UgYXJlIG5vdCkNCj4gPg0KPiA+IGUuZy4yIHdlIGtub3cg Zm9yIGEgZmFjdCB0aGF0IFRhYmxlc3luYyB3b3JrZXJzIGNhbm5vdCBzdGFydCB0aGVpciBvd24N Cj4gPiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBzbyB0aGVuIHdoeSBkbyB3ZSBldmVuIGxldCB0 aGUgVGFibGVzeW5jDQo+ID4gd29ya2VyIG1ha2UgYSBjYWxsIHRvIHBhcmFsbGVsX2FwcGx5X2Zp bmRfd29ya2VyKCkgbG9va2luZyBmb3INCj4gPiBzb21ldGhpbmcgd2Uga25vdyB3aWxsIG5vdCBi ZSBmb3VuZD8NCj4gPg0KPiANCj4gSSBkb24ndCBzZWUgbXVjaCBiZW5lZml0IGluIGFkZGluZyBh biBhZGRpdGlvbmFsIGNoZWNrIGZvciB0YWJsZXN5bmMgd29ya2Vycw0KPiBoZXJlLiBJdCB3aWxs IHVubmVjZXNzYXJpbHkgbWFrZSB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgbG9vayBiaXQgdWdseS4N Cg0KVGhhbmtzIGZvciB0aGUgcmV2aWV3LCBoZXJlIGlzIHRoZSBuZXcgdmVyc2lvbiBwYXRjaCBz ZXQgd2hpY2ggYWRkcmVzc2VkIFBldGVyWzFdDQphbmQgS3Vyb2RhLXNhblsyXSdzIGNvbW1lbnRz Lg0KDQpbMV0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUh1dCUyQlBz MEhYYXdNRCUzRHpRNVlVbmNjOWtqR3klMkJtZF8zOVk0RmRmJTNEc0tqdC1MRTkyZyU0MG1haWwu Z21haWwuY29tDQpbMl0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9UWUFQ UjAxTUI1ODY2NzRDMUVFOTFDMDZEQkFDRTc3MjhGNTJCOSU0MFRZQVBSMDFNQjU4NjYuanBucHJk MDEucHJvZC5vdXRsb29rLmNvbQ0KDQpCZXN0IHJlZ2FyZHMsDQpIb3UgemoNCg0K --_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v40-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v40-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v40-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8952; creation-date="Fri, 21 Oct 2022 07:36:00 GMT"; modification-date="Fri, 21 Oct 2022 09:32:15 GMT" Content-Transfer-Encoding: base64 RnJvbSA1OGQ4MTE1NDA3OGIxZjIzMjRkZjU1OTYyNjRiYjRmMDJiNDA2OTBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djQwIDYvNl0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAg ICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyB8IDMy ICsrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICB8ICA2ICsrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 ICAgICAgICB8ICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDI1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IGU1ZDYyMmQ1MTQuLjg3MjY1MzBkMjgg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE3OCwxMyArMzE3OCwyNCBAQCBTRUxFQ1QgcGlkLCB3 YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdh aXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlk PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAgICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNo cm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK ICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25p emluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFpbiBhcHBseSB3b3JrZXIKKyAgICAgICBtYWlu IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJh PjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMTk0LDcgKzMyMDUsNyBAQCBTRUxFQ1QgcGlk LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJF IHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0g ICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAgICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxs IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMDMsNyArMzIxNCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2 ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwg YXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMy MTIsNyArMzIyNCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZp ZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3 aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAg IFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNl bmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMjEsNyArMzIz NCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVz dF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVw b3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBs b2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKQEAgLTMyMzEsNyArMzI0NSw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwg d2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAg ICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQg bG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdpbiBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAg ICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCmluZGV4IGMyYzdkOGE4YjcuLmYyODI1NzA1ZjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0OSw2ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19z dGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAg ICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFw cGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBzdC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJl Y2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCA3Y2JkMmY2ZjFlLi5iYjlj NjNkOWJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5j aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBA IC0xMDU3LDcgKzEwNTcsNyBAQCBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0 YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19TVEFU X0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElP Tl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQ R19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJl dHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwpAQCAtMTA4MywxMCArMTA4Myw2IEBA IHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNW YWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJ LyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCi0JCWlmIChpc1Bh cmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0JCQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlk ID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdv cmtlci5zdWJpZCk7CkBAIC0xMDk1LDI2ICsxMDkxLDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlw dGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNlCiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZh bHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2VyX3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJaWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlk ID09IEludmFsaWRQaWQpCiAJCQludWxsc1szXSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1sz XSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xzbik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5k X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IEludDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xl YWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikp CiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6 R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1lKTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3Zf dGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsK KwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwog CQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3Jl Y3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQor CQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUp OworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7 CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdldERhdHVtKHdvcmtlci5yZXBseV9sc24pOwot CQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6 R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxsc1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZh bHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFs dWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJlcGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVw bHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0g PSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5yZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3Jl X3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2 YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDYyYTViOGU2NTUuLmZk ODQ2OWVmMWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTQwMCw5ICs1NDAwLDkgQEAK ICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAn LCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0 LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAg cHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxh c3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAg cHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFt cHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAn e2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxy ZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1l LGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywK ICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAy NicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFt ZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggYmZjZDhhYzlhMC4uYmVm NzVmNjZmOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwODksNiArMjA4 OSw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5waWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwg U0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAg ICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xz biwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUsCkBAIC0yMDk2LDcgKzIwOTcsNyBAQCBwZ19z dGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3Rf ZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3RpbWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlv biBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkg c3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBs YXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9O ICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3Bp ZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGlt ZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9p ZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAg cy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9yX2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v40-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v40-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v40-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=147407; creation-date="Fri, 21 Oct 2022 07:36:00 GMT"; modification-date="Fri, 21 Oct 2022 09:32:16 GMT" Content-Transfer-Encoding: base64 RnJvbSA5ZTZkNDllMDRiYjZiNGY5MmUwYTMxYjkyMDQxNTk0ZjM3OWZkYmYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY0MF0gUGVyZm9ybSBzdHJlYW1pbmcgbG9naWNhbCB0cmFuc2FjdGlvbnMgYnkgcGFyYWxsZWwK IHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1Ymxpc2hl ciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlkZWQgaW50 byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSksCmFuZCB0 aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVzIHRoZSBj aGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRoZSBjb21t aXQsIGl0IHJlYWRzIGZyb20gdGhvc2UgZmlsZXMgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0cmFu c2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlvbnMs IHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgcGFyYWxsZWwgd29y a2Vycy4KCkluIHRoaXMgYXBwcm9hY2gsIHdlIGFzc2lnbiBhIG5ldyBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKGlmIGF2YWlsYWJsZSkgYXMKc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0cmVhbSBp cyByZWNlaXZlZCBhbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbApzZW5kIGNoYW5nZXMg dG8gdGhpcyBuZXcgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBUaGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyCndpbGwgZGlyZWN0bHkgYXBwbHkgdGhlIGNoYW5nZSBpbnN0ZWFkIG9mIHdyaXRpbmcg aXQgdG8gdGVtcG9yYXJ5IGZpbGVzLiBXZQprZWVwIHRoaXMgd29ya2VyIGFzc2lnbmVkIHRpbGwg dGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0CmZvciB0aGUg d29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmlu ZyBhbmQgYXZvaWRzCndyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSBmaWxlcyBpbiBtb3N0IGNh c2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmCnRoZXJlIGlzIG5vIHdvcmtlciBhdmFpbGFi bGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcn IHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBz cGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBw YXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3Bh cmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxl bCBhcHBseSB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1l YW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRo ZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCklu IGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJF QU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxz byBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3Jp Z2luIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gaXMKYWJvcnRlZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0 byBzdXBwb3J0IHBhcmFsbGVsCnN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBz dXBwb3J0ZWQgZm9yIHB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwKUEcxNi4KLS0tCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCAr LQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgICAgICAgfCAg IDIxICstCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMjkgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAg ICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAg ICAgICAgICAgICAgfCAgIDEzICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jICAgICAg ICAgICAgICAgICAgICAgIHwgICA1OCArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jICAgICAgICAgICAgfCAgIDEwICstCiBzcmMvYmFja2VuZC9saWJwcS9wcW1xLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgICAgIHwgICAgMyArCiAuLi4vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICAgICAgIHwgICAgMSArCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgICAgICB8IDEwOTkgKysrKysr KysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMg ICAgICAgICAgIHwgICAxMCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVu Y2hlci5jICAgICAgICAgfCAgMjA0ICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbWVzb24uYnVpbGQgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMgICAgICAgICAgICB8ICAgMzcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgIHwgICAxMCArLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgICAgfCAgIDIwICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAgICB8ICA5NjAgKysrKysrKysr KysrKy0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICAg ICAgIHwgICAyMSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAg ICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2 ZW50LmMgICAgICAgICAgICB8ICAgIDYgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMgICAgICAgICAgICAgICAgfCAgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSAgICAgIHwgICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUv Y29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAgICAgICAgIHwgICAgMSArCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgICAgICB8ICAgMjggKy0K IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAgICAgICAgIHwgICAg OCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oICAgICAgICAgICAgICAgICB8 ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICAg ICAgIHwgICAgNyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCAgICAg ICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaCAgICAgICAgICB8ICAxMzQgKystCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwu aCAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVu dC5oICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3Vic2NyaXB0aW9uLm91dCAgICAgICAgIHwgICAxMiArLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgICAgICAgICAgfCAgICA2ICstCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogNDEgZmlsZXMg Y2hhbmdlZCwgMjU1NSBpbnNlcnRpb25zKCspLCAyOTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMv c2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDAwZjgzM2QuLmM1NzY5ZGEgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CkBAIC03ODkyLDExICs3ODkyLDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtp dGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAKICAgICAg PHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVh bTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8 cGFyYT4KLSAgICAgICBJZiB0cnVlLCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgYWxsb3cgc3RyZWFt aW5nIG9mIGluLXByb2dyZXNzCi0gICAgICAgdHJhbnNhY3Rpb25zCisgICAgICAgQ29udHJvbHMg aG93IHRvIGhhbmRsZSB0aGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uczoK KyAgICAgICA8bGl0ZXJhbD5mPC9saXRlcmFsPiA9IGRpc2FsbG93IHN0cmVhbWluZyBvZiBpbi1w cm9ncmVzcyB0cmFuc2FjdGlvbnMsCisgICAgICAgPGxpdGVyYWw+dDwvbGl0ZXJhbD4gPSBzcGls bCB0aGUgY2hhbmdlcyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAgICAgICBkaXNr IGFuZCBhcHBseSBhdCBvbmNlIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24g dGhlCisgICAgICAgcHVibGlzaGVyLAorICAgICAgIDxsaXRlcmFsPnA8L2xpdGVyYWw+ID0gYXBw bHkgY2hhbmdlcyBkaXJlY3RseSB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisgICAgICAgd29ya2Vy IGlmIGF2YWlsYWJsZSAoc2FtZSBhcyAndCcgaWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSkKICAg ICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDZjNjQ5MzMu LmM5NGRkMGUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5NDgsNyArNDk0OCw4IEBAIEFOWSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0iCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNwZWNp ZmllcyBtYXhpbXVtIG51bWJlciBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMuIFRoaXMg aW5jbHVkZXMKLSAgICAgICAgYm90aCBhcHBseSB3b3JrZXJzIGFuZCB0YWJsZSBzeW5jaHJvbml6 YXRpb24gd29ya2Vycy4KKyAgICAgICAgbGVhZGVyIGFwcGx5IHdvcmtlcnMsIHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMsIGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgd29ya2Vycy4K ICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIExvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5CkBAIC00OTg4LDYg KzQ5ODksMzEgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwv cmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtcGFy YWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIiB4cmVmbGFiZWw9Im1heF9wYXJh bGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iPgorICAgICAgPHRlcm0+PHZhcm5h bWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT4g KDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFy eT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92 YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0 ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAg ICAgICBNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHBlciBzdWJzY3Jp cHRpb24uIFRoaXMKKyAgICAgICAgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgcGFy YWxsZWxpc20gZm9yIHN0cmVhbWluZyBvZgorICAgICAgICBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv bnMgd2l0aCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyCisgICAgICAgIDxsaXRlcmFsPnN0cmVhbWlu ZyA9IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29s IGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBU aGUgZGVmYXVsdCB2YWx1ZSBpcyAyLiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4g dGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9y IG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAgICBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVs aXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmlu ZGV4IGU5ODUzOGUuLjllNzUzZmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bApAQCAtMTM0MCw2ICsxMzQwLDE2IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBtaWdo dCBub3QgdmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMgY2FuIGVhc2lseSBtYWtlIHRoZSBz dWJzY3JpYmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFdo ZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhl IGZpbmlzaCBMU04gb2YKKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQu IEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0bworICAgY2hhbmdlIHRoZSBzdHJl YW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRl cmFsPiBhbmQKKyAgIGNhdXNlIHRoZSBzYW1lIGNvbmZsaWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNo IExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwKKyAgIGJlIHdyaXR0ZW4gdG8gdGhl IHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVyIHRv IDxsaW5rCisgICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFMVEVS IFNVQlNDUklQVElPTiAuLi4KKyAgIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KKyAgPC9wYXJhPgog IDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tcmVzdHJpY3Rpb25z Ij4KQEAgLTE1MjEsNyArMTUzMSw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBzdWJz Y3JpcHRpb24uICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2NyaXB0 aW9uIHdpbGwgaGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0aWFs IGRhdGEgc3luY2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3MsIHRo ZXJlIHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWluZyBz eW5jaHJvbml6ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3aWxs IGJlIGFkZGl0aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKQEAgLTE2MTYs OCArMTYyNywxMiBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGlj YXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgdG8gdGhlIHN1YnNjcmli ZXIsIHBsdXMgc29tZSByZXNlcnZlIGZvciB0YWJsZSBzeW5jaHJvbml6YXRpb24uCiAgICA8dmFy bmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPiBtdXN0IGJlIHNl dCB0byBhdCBsZWFzdAogICAgdGhlIG51bWJlciBvZiBzdWJzY3JpcHRpb25zLCBhZ2FpbiBwbHVz IHNvbWUgcmVzZXJ2ZSBmb3IgdGhlIHRhYmxlCi0gICBzeW5jaHJvbml6YXRpb24uICBBZGRpdGlv bmFsbHkgdGhlIDx2YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPgotICAgbWF5 IG5lZWQgdG8gYmUgYWRqdXN0ZWQgdG8gYWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtl cnMsIGF0IGxlYXN0CisgICBzeW5jaHJvbml6YXRpb24uIElmIHRoZSBzdWJzY3JpcHRpb24gcGFy YW1ldGVyIDxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4KKyAgIGlzIHNldCB0byA8bGl0ZXJh bD5wYXJhbGxlbDwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5tYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzPC9saXRlcmFsPiBzaG91bGQgYmUgaW5jcmVhc2VkCisgICBhY2NvcmRpbmcgdG8g dGhlIGRlc2lyZWQgbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICBBZGRpdGlvbmFs bHkgdGhlCisgICA8dmFybmFtZT5tYXhfd29ya2VyX3Byb2Nlc3NlczwvdmFybmFtZT4gbWF5IG5l ZWQgdG8gYmUgYWRqdXN0ZWQgdG8KKyAgIGFjY29tbW9kYXRlIGZvciByZXBsaWNhdGlvbiB3b3Jr ZXJzLCBhdCBsZWFzdAogICAgKDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtl cnM8L3Zhcm5hbWU+CiAgICArIDxsaXRlcmFsPjE8L2xpdGVyYWw+KS4gIE5vdGUgdGhhdCBzb21l IGV4dGVuc2lvbnMgYW5kIHBhcmFsbGVsIHF1ZXJpZXMKICAgIGFsc28gdGFrZSB3b3JrZXIgc2xv dHMgZnJvbSA8dmFybmFtZT5tYXhfd29ya2VyX3Byb2Nlc3NlczwvdmFybmFtZT4uCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5z Z21sCmluZGV4IDVmZGQ0MjkuLmM2YTBlODAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90 b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0zMTAyLDcgKzMx MDIsNyBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJ REVOVElGWV9TWVNURU07IgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICBQ cm90b2NvbCB2ZXJzaW9uLiBDdXJyZW50bHkgdmVyc2lvbnMgPGxpdGVyYWw+MTwvbGl0ZXJhbD4s IDxsaXRlcmFsPjI8L2xpdGVyYWw+LAotICAgICAgIGFuZCA8bGl0ZXJhbD4zPC9saXRlcmFsPiBh cmUgc3VwcG9ydGVkLgorICAgICAgIDxsaXRlcmFsPjM8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+ NDwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgog ICAgICAgIFZlcnNpb24gPGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9y IHNlcnZlciB2ZXJzaW9uIDE0CkBAIC0zMTEyLDYgKzMxMTIsMTEgQEAgcHNxbCAiZGJuYW1lPXBv c3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAg ICBWZXJzaW9uIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2 ZXIgdmVyc2lvbiAxNQogICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1pbmcg b2YgdHdvLXBoYXNlIGNvbW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICBWZXJzaW9uIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2 ZXIgdmVyc2lvbiAxNgorICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1zIG9m IGxhcmdlIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGJlIGFwcGxpZWQgaW4g cGFyYWxsZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0 ZW50cnk+CiAKQEAgLTY4ODIsNiArNjg4NywyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVw bGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+ CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFy bGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJv cnQuIFRoaXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAg ICAgIDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRp bWVzdGFtcFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgQWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGlu IG51bWJlcgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2gg KDIwMDAtMDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJv dG9jb2wgdmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAg ICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKaW5kZXggYmQxMmU3MS4uMDNmYzA0NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyMiwxMyArMjIyLDI5IEBAIENSRUFURSBTVUJTQ1JJ UFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9y ZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5 PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29s ZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0 ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAg ICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVh bWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJz Y3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1 bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0g ICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNj cmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisg ICAgICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRo ZSBwdWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmli ZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBw bGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBv biB0aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAg IDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAg ICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlmIGF2 YWlsYWJsZS4gSWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZnJlZSB0 byBoYW5kbGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuCisgICAgICAgICAgdGhlIGNoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQor ICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9y IGhhcHBlbnMgaW4gYQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbmlz aCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgorICAgICAgICAgIG1pZ2h0IG5vdCBiZSBy ZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3Qu YwppbmRleCBmZDUxMDNhLi44MzE1YjkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBA IC0xNzEyLDYgKzE3MTIsNyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0 KQogCWludAkJCW5jaGlsZHJlbjsKIAlUcmFuc2FjdGlvbklkICpjaGlsZHJlbjsKIAlUaW1lc3Rh bXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJcmVwbG9yaWdpbjsKIAogCS8qCiAJICogSWYgd2UgaGF2 ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJRCwgbm9ib2R5IHdpbGwgY2FyZSB3aGV0aGVyIHdlIGFi b3J0ZWQKQEAgLTE3NDIsNiArMTc0MywxMyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wg aXNTdWJYYWN0KQogCQllbG9nKFBBTklDLCAiY2Fubm90IGFib3J0IHRyYW5zYWN0aW9uICV1LCBp dCB3YXMgYWxyZWFkeSBjb21taXR0ZWQiLAogCQkJIHhpZCk7CiAKKwkvKgorCSAqIEFyZSB3ZSB1 c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBmZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRz LCBhcmUKKwkgKiB3ZSByZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/CisJICovCisJcmVwbG9yaWdp biA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgor CQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwog CS8qIEZldGNoIHRoZSBkYXRhIHdlIG5lZWQgZm9yIHRoZSBhYm9ydCByZWNvcmQgKi8KIAlucmVs cyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhmYWxzZSwgJnJlbHMpOwogCW5jaGlsZHJlbiA9IHhh Y3RHZXRDb21taXR0ZWRDaGlsZHJlbigmY2hpbGRyZW4pOwpAQCAtMTc2NSw2ICsxNzczLDExIEBA IFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCQkJCSAgIE15WGFjdEZs YWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJICAgTlVMTCk7CiAKKwlpZiAocmVwbG9y aWdpbikKKwkJLyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMgcmVwbGljYXRpb24gb3JpZ2lu ICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fbHNuLAorCQkJCQkJCQkgICBYYWN0TGFzdFJlY0VuZCk7CisKIAkvKgogCSAqIFJlcG9ydCB0 aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExTTiwgc28gdGhhdCB0aGUgV0FMIHdyaXRlciBrbm93cyB0 bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQuIFRoZXJlJ3Mgbm90aGluZyB0byBiZSBnYWluZWQgYnkg ZGVsYXlpbmcgdGhpcywgc2luY2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rl ZmluZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGVmaW5lLmMKaW5kZXggODZiODkwNy4uMTEz MTJkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGVmaW5lLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZGVmaW5lLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxt YXRoLmg+CiAKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIK QEAgLTM0Niw2ICszNDcsNjMgQEAgZGVmR2V0U3RyaW5nTGlzdChEZWZFbGVtICpkZWYpCiB9CiAK IC8qCisgKiBFeHRyYWN0IHRoZSBzdHJlYW1pbmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4g IFRoaXMgaXMgbGlrZQorICogZGVmR2V0Qm9vbGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNw ZWNpYWwgdmFsdWUgb2YgInBhcmFsbGVsIi4KKyAqLworY2hhcgorZGVmR2V0U3RyZWFtaW5nTW9k ZShEZWZFbGVtICpkZWYpCit7CisJLyoKKwkgKiBJZiBubyBwYXJhbWV0ZXIgdmFsdWUgZ2l2ZW4s IGFzc3VtZSAidHJ1ZSIgaXMgbWVhbnQuCisJICovCisJaWYgKGRlZi0+YXJnID09IE5VTEwpCisJ CXJldHVybiBTVUJTVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEsICJmYWxzZSIsICJ0 cnVlIiwgIm9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0Y2ggKG5vZGVUYWco ZGVmLT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2ggKGludFZhbChkZWYt PmFyZykpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09GRjsKKwkJ CQljYXNlIDE6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJZGVmYXVsdDoKKwkJCQkJ Lyogb3RoZXJ3aXNlLCBlcnJvciBvdXQgYmVsb3cgKi8KKwkJCQkJYnJlYWs7CisJCQl9CisJCQli cmVhazsKKwkJZGVmYXVsdDoKKwkJCXsKKwkJCQljaGFyCSAgICpzdmFsID0gZGVmR2V0U3RyaW5n KGRlZik7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBzZXQgb2Ygc3RyaW5ncyBhY2NlcHRlZCBoZXJl IHNob3VsZCBtYXRjaCB1cCB3aXRoIHRoZQorCQkJCSAqIGdyYW1tYXIncyBvcHRfYm9vbGVhbl9v cl9zdHJpbmcgcHJvZHVjdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFs LCAiZmFsc2UiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9mZiIpID09IDAp CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWws ICJ0cnVlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJvbiIpID09IDApCisJ CQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInBh cmFsbGVsIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9QQVJBTExFTDsKKwkJCX0KKwkJ CWJyZWFrOworCX0KKworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkgZXJybXNnKCIlcyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgXCJw YXJhbGxlbFwiIiwKKwkJCQkJZGVmLT5kZWZuYW1lKSkpOworCXJldHVybiBTVUJTVFJFQU1fT0ZG OwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQorCisvKgogICogUmFpc2UgYW4gZXJyb3Ig YWJvdXQgYSBjb25mbGljdGluZyBEZWZFbGVtLgogICovCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggZjBjZWMyYS4uNWM1OGZlNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODQsNyArODQsNyBAQCB0eXBlZGVmIHN0 cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRhOwogCWJvb2wJCXJlZnJlc2g7CiAJYm9vbAkJ YmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJdHdv cGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9yaWdpbjsKQEAgLTEzOCw3 ICsxMzgsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9C SU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29w dHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwkJb3B0 cy0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMs IFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNlOwogCWlm IChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05fRVJSKSkKQEAgLTI0MSw3 ICsyNDEsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwg cHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVBTUlORzsK LQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJb3B0cy0+c3Ry ZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNjI5LDcgKzYy OSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym93bmVy IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7CiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERhdHVtKG9w dHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0g PSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJCUNoYXJH ZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVf UEVORElORyA6CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlpZiAoSXNTZXQo b3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJCQkJewogCQkJCQl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJQm9vbEdldERh dHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7 CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gdHJ1 ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9i YWNrZW5kL2xpYnBxL3BxbXEuYwppbmRleCA0ZDA0MTVlLi42Mzk4NDVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9saWJwcS9wcW1xLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCkBA IC0xMywxMSArMTMsMTMgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJh Y2Nlc3MvcGFyYWxsZWwuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxp YnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWx3b3JrZXIuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKIApAQCAtMTYyLDkgKzE2NCwxOSBAQCBtcV9wdXRtZXNzYWdlKGNoYXIgbXNn dHlwZSwgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikKIAkJcmVzdWx0ID0gc2htX21xX3NlbmR2 KHBxX21xX2hhbmRsZSwgaW92LCAyLCB0cnVlLCB0cnVlKTsKIAogCQlpZiAocHFfbXFfcGFyYWxs ZWxfbGVhZGVyX3BpZCAhPSAwKQotCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVh ZGVyX3BpZCwKLQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKLQkJCQkJCSAgIHBx X21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJeworCQkJaWYgKElzTG9naWNhbFBh cmFsbGVsQXBwbHlXb3JrZXIoKSkKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9s ZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJ CQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQllbHNlCisJCQl7 CisJCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSk7CisJCQkJU2VuZFByb2NTaWduYWwocHFf bXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NB R0UsCisJCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJfQor CQl9CiAKIAkJaWYgKHJlc3VsdCAhPSBTSE1fTVFfV09VTERfQkxPQ0spCiAJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRleCAwZDcyZGUyLi4yZGZhOWFiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0xMjgsNiArMTI4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVj dAogCX0sCiAJewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBwbHlXb3JrZXJNYWluCisJfSwKKwl7 CisJCSJQYXJhbGxlbEFwcGx5V29ya2VyTWFpbiIsIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluCiAJ fQogfTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdh bHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCA3ZjY5N2IwLi4yMjVkYTgxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2Fs cmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVy L2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtNDQzLDkgKzQ0Myw5IEBAIGxpYnBxcmN2X3N0YXJ0c3Ry ZWFtaW5nKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIAkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAi cHJvdG9fdmVyc2lvbiAnJXUnIiwKIAkJCQkJCSBvcHRpb25zLT5wcm90by5sb2dpY2FsLnByb3Rv X3ZlcnNpb24pOwogCi0JCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0cmVhbWluZyAmJgot CQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE0MDAwMCkKLQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiwgc3RyZWFtaW5nICdvbiciKTsKKwkJaWYgKG9wdGlv bnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0cikKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmNt ZCwgIiwgc3RyZWFtaW5nICclcyciLAorCQkJCQkJCSBvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0 cmVhbWluZ19zdHIpOwogCiAJCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnR3b3BoYXNlICYm CiAJCQlQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTUwMDAwKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggYzRlMmZkZS4uMmRjMjVlMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQorKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3 IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIG92ZXJyaWRl IENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMgPSBcCisJYXBwbHlw YXJhbGxlbHdvcmtlci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1bmNoZXIubyBcCiAJbG9naWNhbC5v IFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI4NjcyZQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCkBAIC0wLDAgKzEsMTA5OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KiBhcHBseXBhcmFsbGVsd29ya2VyLmMKKyAqICAgICBTdXBwb3J0IHJvdXRpbmVzIGZvciBhcHBs eWluZyB4YWN0IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAoYykg MjAxNi0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElE RU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQg YXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsCisgKiBhbmQgdGVhcmlu ZyBkb3duIGEgUGFyYWxsZWxBcHBseVdvcmtlckluZm8uCisgKgorICogUmVmZXIgdG8gdGhlIGNv bW1lbnRzIGluIHRoZSBmaWxlIGhlYWRlciBvZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3Jl CisgKiBpbmZvcm1hdGlvbiBhYm91dCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAi bGlicHEvcHFmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCisjaW5jbHVkZSAibWIv cGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2lu dGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBj LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bw cm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc4N2NhMDY3CisK Ky8qCisgKiBEU00ga2V5cyBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAgVW5saWtlIG90aGVy IHBhcmFsbGVsIGV4ZWN1dGlvbiBjb2RlLAorICogc2luY2Ugd2UgZG9uJ3QgbmVlZCB0byB3b3Jy eSBhYm91dCBEU00ga2V5cyBjb25mbGljdGluZyB3aXRoIHBsYW5fbm9kZV9pZCB3ZQorICogY2Fu IHVzZSBzbWFsbCBpbnRlZ2Vycy4KKyAqLworI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfU0hB UkVECQkxCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9NUQkJCTIKKyNkZWZpbmUgUEFSQUxM RUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFCTMKKworLyogUXVldWUgc2l6ZSBvZiBEU00sIDE2IE1C IGZvciBub3cuICovCisjZGVmaW5lIERTTV9RVUVVRV9TSVpFCSgxNiAqIDEwMjQgKiAxMDI0KQor CisvKgorICogRXJyb3IgcXVldWUgc2l6ZSBvZiBEU00uIEl0IGlzIGRlc2lyYWJsZSB0byBtYWtl IGl0IGxhcmdlIGVub3VnaCB0aGF0IGEKKyAqIHR5cGljYWwgRXJyb3JSZXNwb25zZSBjYW4gYmUg c2VudCB3aXRob3V0IGJsb2NraW5nLiAgVGhhdCB3YXksIGEgd29ya2VyIHRoYXQKKyAqIGVycm9y cyBvdXQgY2FuIHdyaXRlIHRoZSB3aG9sZSBtZXNzYWdlIGludG8gdGhlIHF1ZXVlIGFuZCB0ZXJt aW5hdGUgd2l0aG91dAorICogd2FpdGluZyBmb3IgdGhlIHVzZXIgYmFja2VuZC4KKyAqLworI2Rl ZmluZSBEU01fRVJST1JfUVVFVUVfU0laRQkJCSgxNiAqIDEwMjQpCisKKy8qCisgKiBUaGVyZSBh cmUgdGhyZWUgZmllbGRzIGluIGVhY2ggbWVzc2FnZSByZWNlaXZlZCBieSB0aGUgcGFyYWxsZWwg YXBwbHkKKyAqIHdvcmtlcjogc3RhcnRfbHNuLCBlbmRfbHNuIGFuZCBzZW5kX3RpbWUuIEJlY2F1 c2Ugd2UgaGF2ZSB1cGRhdGVkIHRoZXNlCisgKiBzdGF0aXN0aWNzIGluIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyLCB3ZSBjYW4gaWdub3JlIHRoZXNlIGZpZWxkcyBpbiB0aGUKKyAqIHBhcmFsbGVs IGFwcGx5IHdvcmtlciAoc2VlIGZ1bmN0aW9uIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICovCisj ZGVmaW5lIFNJWkVfU1RBVFNfTUVTU0FHRSAoMiAqIHNpemVvZihYTG9nUmVjUHRyKSArIHNpemVv ZihUaW1lc3RhbXBUeikpCisKKy8qCisgKiBIYXNoIHRhYmxlIGVudHJ5IHRvIG1hcCB4aWQgdG8g dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGF0ZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFy YWxsZWxBcHBseVdvcmtlckVudHJ5Cit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CQkJLyogSGFzaCBr ZXkgLS0gbXVzdCBiZSBmaXJzdCAqLworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsK K30gUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5OworCisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXJz IGhhc2ggdGFibGUgKGluaXRpYWxpemVkIG9uIGZpcnN0IHVzZSkuICovCitzdGF0aWMgSFRBQiAq UGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoID0gTlVMTDsKKworLyoKKyAqIEEgbGlzdCB0byBtYWlu dGFpbiB0aGUgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuIFRoZSBpbmZvcm1hdGlvbiBm b3IKKyAqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVkIHRvIHRoZSBsaXN0IGFmdGVyIHN1Y2Nlc3Nm dWxseSBsYXVuY2hpbmcgaXQuIFRoZQorICogbGlzdCBlbnRyeSBpcyByZW1vdmVkIGF0IHRoZSBl bmQgb2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZXJlIGFyZSBhbHJlYWR5CisgKiBlbm91Z2ggd29y a2VycyBpbiB0aGUgd29ya2VyIHBvb2wuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3 b3JrZXIKKyAqIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHdvcmtlci5jLiBXZSBhbHNvIHJlbW92 ZSB0aGUgZW50cnkgZnJvbSB0aGUgbGlzdCBpZgorICogdGhlIHdvcmtlciBpcyBleGl0ZWQgZHVl IHRvIHNvbWUgZXJyb3IuCisgKi8KK3N0YXRpYyBMaXN0ICpQYXJhbGxlbEFwcGx5V29ya2Vyc0xp c3QgPSBOSUw7CisKKy8qCisgKiBJbmZvcm1hdGlvbiBzaGFyZWQgYmV0d2VlbiBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK1BhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQgPSBOVUxMOworCisvKgorICogSXMgdGhlcmUg YSBtZXNzYWdlIHBlbmRpbmcgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdoaWNoIHdlIG5lZWQg dG8KKyAqIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5 TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRoZQorICogY3VycmVu dCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0aGUgY29zdCBvZiBz ZWFyY2hpbmcgdGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNoYW5nZXMgYmV0 d2VlbiBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICovCitQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CisKKy8qIEEgbGlzdCB0byBtYWlu dGFpbiBzdWJ0cmFuc2FjdGlvbnMsIGlmIGFueS4gKi8KK0xpc3QJICAgKnN1YnhhY3RsaXN0ID0g TklMOworCitzdGF0aWMgYm9vbCBwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25J ZCB4aWQpOworc3RhdGljIGJvb2wgcGFyYWxsZWxfYXBwbHlfc2V0dXBfZHNtKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbyk7CitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBh cmFsbGVsX2FwcGx5X3NldHVwX3dvcmtlcih2b2lkKTsKK3N0YXRpYyBib29sIHBhcmFsbGVsX2Fw cGx5X2dldF9pbl94YWN0KFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOworc3Rh dGljIHZvaWQgcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8pOworCisvKgorICogUmV0dXJucyB0cnVlIGlmIGl0IGlzIE9LIHRvIHN0 YXJ0IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK3N0YXRp YyBib29sCitwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJ aWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgor CSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB0aGUgc3Vic2Ny aXB0aW9uIGlzIG5vdCB1c2luZworCSAqIHBhcmFsbGVsIHN0cmVhbWluZyBtb2RlLCBvciBpZiB0 aGUgcHVibGlzaGVyIGRvZXMgbm90IHN1cHBvcnQgcGFyYWxsZWwKKwkgKiBhcHBseS4KKwkgKi8K KwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpCisJCXJldHVybiBmYWxz ZTsKKworCS8qIE9ubHkgbGVhZGVyIGFwcGx5IHdvcmtlcnMgY2FuIHN0YXJ0IHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMuICovCisJaWYgKCFhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJCXJldHVy biBmYWxzZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwgd29ya2VyIGlm IHVzZXIgaGFzIHNldCBza2lwbHNuIGFzIGl0J3MKKwkgKiBwb3NzaWJsZSB0aGF0IHVzZXIgd2Fu dCB0byBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZvcgorCSAqIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiwgd2UgbmVlZCB0byBzcGlsbCB0aGUgdHJhbnNhY3Rpb24gdG8gZGlzayBzbyB0 aGF0CisJICogd2UgY2FuIGdldCB0aGUgbGFzdCBMU04gb2YgdGhlIHRyYW5zYWN0aW9uIHRvIGp1 ZGdlIHdoZXRoZXIgdG8gc2tpcAorCSAqIGJlZm9yZSBzdGFydGluZyB0byBhcHBseSB0aGUgY2hh bmdlLgorCSAqLworCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tp cGxzbikpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRm9yIHN0cmVhbWluZyB0cmFuc2Fj dGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsCisJICogYXBwbHkg d29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3Ig YQorCSAqIHJlbGF0aW9uIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2VlCisJICog c2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2Ugd29uJ3Qga25vdyByZW1vdGVfZmlu YWxfbHNuIGJ5IHRoYXQKKwkgKiB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgdGhlIG5ldyBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAqLworCWlmICghQWxsVGFibGVzeW5j c1JlYWR5KCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICog U3RhcnQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBz cGVjaWZpZWQgeGlkLgorICoKKyAqIElmIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGZvdW5k IGJ1dCBub3QgaW4gdXNlIHRoZW4gcmUtdXNlIGl0LCBvdGhlcndpc2UKKyAqIHN0YXJ0IGEgZnJl c2ggb25lLiBDYWNoZSB0aGUgd29ya2VyIGluZm9ybWF0aW9uIGluIFBhcmFsbGVsQXBwbHlXb3Jr ZXJzSGFzaAorICoga2V5ZWQgYnkgdGhlIHNwZWNpZmllZCB4aWQuCisgKi8KK3ZvaWQKK3BhcmFs bGVsX2FwcGx5X3N0YXJ0X3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3Vu ZDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSBO VUxMOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIXBhcmFsbGVs X2FwcGx5X2Nhbl9zdGFydCh4aWQpKQorCQlyZXR1cm47CisKKwkvKiBGaXJzdCB0aW1lIHRocm91 Z2gsIGluaXRpYWxpemUgYXBwbHkgd29ya2VycyBoYXNodGFibGUuICovCisJaWYgKFBhcmFsbGVs QXBwbHlXb3JrZXJzSGFzaCA9PSBOVUxMKQorCXsKKwkJSEFTSENUTAkJY3RsOworCisJCU1lbVNl dCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0 aW9uSWQpOworCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRy eSk7CisJCWN0bC5oY3h0ID0gQXBwbHlDb250ZXh0OworCisJCVBhcmFsbGVsQXBwbHlXb3JrZXJz SGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIGFwcGx5IHdvcmtlcnMgaGFzaCIsCisJCQkJCQkJ CQkJCSAgIDE2LCAmY3RsLAorCQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwg SEFTSF9DT05URVhUKTsKKwl9CisKKwkvKiBUcnkgdG8gZ2V0IGEgZnJlZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuICovCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0KQorCXsK KwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnRtcF93aW5mbzsKKworCQl0bXBfd2luZm8gPSAo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlpZiAoIXRtcF93aW5m by0+aW5fdXNlKQorCQl7CisJCQl3aW5mbyA9IHRtcF93aW5mbzsKKwkJCWJyZWFrOworCQl9CisJ fQorCisJaWYgKHdpbmZvID09IE5VTEwpCisJeworCQkvKiBUcnkgdG8gc3RhcnQgYSBuZXcgcGFy YWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQl3aW5mbyA9IHBhcmFsbGVsX2FwcGx5X3NldHVwX3dv cmtlcigpOworCisJCWlmICh3aW5mbyA9PSBOVUxMKQorCQkJcmV0dXJuOworCX0KKworCS8qIENy ZWF0ZSBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9z ZWFyY2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0VOVEVSLCAmZm91bmQp OworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisK KwkvKgorCSAqIFNldCB0aGUgaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBmbGFnIGluIHRoZSBsZWFk ZXIgaW5zdGVhZCBvZiB0aGUKKwkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gYXZvaWQgdGhl IHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBsZWFkZXIgaGFzCisJICogYWxyZWFkeSBzdGFydGVk IHdhaXRpbmcgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gZmluaXNoCisJICogcHJv Y2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gd2hpbGUgdGhlIGNoaWxkIHByb2Nlc3MgaGFzIG5vdCB5 ZXQKKwkgKiBwcm9jZXNzZWQgdGhlIGZpcnN0IFNUUkVBTV9TVEFSVCBhbmQgaGFzIG5vdCBzZXQg dGhlCisJICogaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCB0byB0cnVlLgorCSAqLworCXBhcmFsbGVs X2FwcGx5X3NldF9pbl94YWN0KHdpbmZvLT5zaGFyZWQsIHRydWUpOworCisJd2luZm8tPmluX3Vz ZSA9IHRydWU7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhpZCA9IHhpZDsKK30K KworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0 aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhcmFsbGVsX2Fw cGx5X2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBh cmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFz aCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUgY2FjaGVkIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2FwcGx5X3dvcmtlciAh PSBOVUxMKQorCQlyZXR1cm4gc3RyZWFtX2FwcGx5X3dvcmtlcjsKKworCS8qCisJICogRmluZCBl bnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJ aWYgKGZvdW5kKQorCXsKKwkJQXNzZXJ0KHBhcmFsbGVsX2FwcGx5X2dldF9pbl94YWN0KGVudHJ5 LT53aW5mby0+c2hhcmVkKSk7CisJCUFzc2VydChlbnRyeS0+d2luZm8tPmluX3VzZSk7CisKKwkJ cmV0dXJuIGVudHJ5LT53aW5mbzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFJl bW92ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUu IFN0b3AgdGhlIHdvcmtlcgorICogaWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJzIGluIHRoZSBw b29sLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAqIHdvcmtlciBwb29sLCBzZWUg Y29tbWVudHMgYXRvcCB3b3JrZXIuYy4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfZnJlZV93 b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCkK K3sKKwlpbnQJCQluYXBwbHl3b3JrZXJzOworCisJQXNzZXJ0KCFhbV9wYXJhbGxlbF9hcHBseV93 b3JrZXIoKSk7CisJQXNzZXJ0KCFwYXJhbGxlbF9hcHBseV9nZXRfaW5feGFjdCh3aW5mby0+c2hh cmVkKSk7CisKKwlpZiAoIWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCwgJnhp ZCwgSEFTSF9SRU1PVkUsIE5VTEwpKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0 ZWQiKTsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7 CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFyYWxsZWxfYXBwbHlfd29ya2VyX2NvdW50 KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOworCisJd2luZm8tPmluX3VzZSA9IGZhbHNlOworCisJLyogQXJlIHRoZXJlIGVu b3VnaCB3b3JrZXJzIGluIHRoZSBwb29sPyAqLworCWlmIChuYXBwbHl3b3JrZXJzID4gKG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKKwl7CisJCWludAkJ c2xvdF9ubzsKKwkJdWludDE2CWdlbmVyYXRpb247CisKKwkJLyoKKwkJICogRGV0YWNoIHRoZSBl cnJvciBxdWV1ZSBiZWZvcmUgdGVybWluYXRpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgor CQkgKiB0byBwcmV2ZW50IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20gcmVjZWl2aW5nIHRo ZSB3b3JrZXIKKwkJICogdGVybWluYXRpb24gbWVzc2FnZSB3aGljaCB3aWxsIGNhdXNlIHRoZSBs ZWFkZXIgdG8gZXhpdC4KKwkJICovCisJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hh bmRsZSk7CisJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBOVUxMOworCisJCVNwaW5Mb2NrQWNx dWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCQlzbG90X25vID0gd2luZm8tPnNoYXJlZC0+ bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKKwkJZ2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQt PmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8t PnNoYXJlZC0+bXV0ZXgpOworCisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfYnlfc2xvdChzbG90 X25vLCBnZW5lcmF0aW9uKTsKKworCQlQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgPSBsaXN0X2Rl bGV0ZV9wdHIoUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0LAorCQkJCQkJCQkJCQkJICAgd2luZm8p OworCisJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCX0KK30KKwor LyogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uLiAqLworc3RhdGlj IHZvaWQKK3BhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvKQoreworCUFzc2VydCh3aW5mbyk7CisKKwlpZiAod2luZm8tPm1xX2hhbmRs ZSAhPSBOVUxMKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5tcV9oYW5kbGUpOworCisJaWYgKHdp bmZvLT5lcnJvcl9tcV9oYW5kbGUgIT0gTlVMTCkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJy b3JfbXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ZHNtX3NlZyAhPSBOVUxMKQorCQlkc21fZGV0 YWNoKHdpbmZvLT5kc21fc2VnKTsKKworCXBmcmVlKHdpbmZvKTsKK30KKworLyogUGFyYWxsZWwg YXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KK3N0YXRpYyB2b2lkCitMb2dpY2FsUGFyYWxsZWxB cHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQoreworCXNobV9tcV9yZXN1bHQgc2htcV9yZXM7 CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisJTWVtb3J5Q29udGV4dCBvbGRj eHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKworCS8qCisJICogSW5pdCB0aGUgQXBwbHlNZXNz YWdlQ29udGV4dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciBlYWNoIHJlcGxpY2F0aW9uCisJICog cHJvdG9jb2wgbWVzc2FnZS4KKwkgKi8KKwlBcHBseU1lc3NhZ2VDb250ZXh0ID0gQWxsb2NTZXRD b250ZXh0Q3JlYXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJBcHBseU1lc3NhZ2VDb250 ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBQ dXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3 aGlsZSBhcHBseWluZworCSAqIGEgY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxiYWNr ID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9j b250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwlm b3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCisJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRhIGlu dG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlN ZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2ZShtcWgsICZsZW4s ICZkYXRhLCB0cnVlKTsKKworCQlpZiAoc2htcV9yZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsK KwkJCVN0cmluZ0luZm9EYXRhIHM7CisJCQlpbnQJCQljOworCisJCQlpZiAobGVuID09IDApCisJ CQkJYnJlYWs7CisKKwkJCXMuY3Vyc29yID0gMDsKKwkJCXMubWF4bGVuID0gLTE7CisJCQlzLmRh dGEgPSAoY2hhciAqKSBkYXRhOworCQkJcy5sZW4gPSBsZW47CisKKwkJCS8qCisJCQkgKiBUaGUg Zmlyc3QgYnl0ZSBvZiBtZXNzYWdlcyBzZW50IGZyb20gbGVhZGVyIGFwcGx5IHdvcmtlciB0bwor CQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gb25seSBiZSAndycuCisJCQkgKi8KKwkJ CWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJCWlmIChjICE9ICd3JykKKwkJCQllbG9nKEVSUk9S LCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIsIGMpOworCisJCQkvKgorCQkJICogSWdub3Jl IHN0YXRpc3RpY3MgZmllbGRzIHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIGxlYWRlcgor CQkJICogYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01F U1NBR0U7CisKKwkJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKworCQkJTWVtb3J5Q29udGV4dFJlc2V0 KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQl9CisJCWVsc2UgaWYgKHNobXFfcmVzID09IFNITV9N UV9XT1VMRF9CTE9DSykKKwkJeworCQkJaW50CQkJcmM7CisKKwkJCWlmICghaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb24pCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZiB3ZSBkaWRuJ3QgZ2V0IGFueSB0 cmFuc2FjdGlvbnMgZm9yIGEgd2hpbGUgdGhlcmUgbWlnaHQgYmUKKwkJCQkgKiB1bmNvbnN1bWVk IGludmFsaWRhdGlvbiBtZXNzYWdlcyBpbiB0aGUgcXVldWUsIGNvbnN1bWUgdGhlbQorCQkJCSAq IG5vdy4KKwkJCQkgKi8KKwkJCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOworCQkJCW1h eWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKKwkJCX0KKworCQkJTWVtb3J5Q29udGV4dFJlc2V0 KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7 CisKKwkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8KKwkJCXJjID0gV2FpdExhdGNoKE15TGF0 Y2gsCisJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJCSAgIDEwMDBMLAorCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFM TEVMX0FQUExZX01BSU4pOworCisJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQl7CisJCQkJ UmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQkJfQor CisJCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJCXsKKwkJCQlDb25maWdSZWxvYWRQZW5k aW5nID0gZmFsc2U7CisJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCQl9CisJ CX0KKwkJZWxzZQorCQl7CisJCQlBc3NlcnQoc2htcV9yZXMgPT0gU0hNX01RX0RFVEFDSEVEKTsK KworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lO X1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlciIpKSk7CisJCX0KKwl9CisKKwkvKiBQb3AgdGhlIGVycm9y IGNvbnRleHQgc3RhY2suICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnBy ZXZpb3VzOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBN YWtlIHN1cmUgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdHJpZXMgdG8gcmVhZCBmcm9tIG91ciBl cnJvciBxdWV1ZSBvbmUgbW9yZQorICogdGltZS4gVGhpcyBndWFyZHMgYWdhaW5zdCB0aGUgY2Fz ZSB3aGVyZSB3ZSBleGl0IHVuY2xlYW5seSB3aXRob3V0IHNlbmRpbmcKKyAqIGFuIEVycm9yUmVz cG9uc2UsIGZvciBleGFtcGxlIGJlY2F1c2Ugc29tZSBjb2RlIGNhbGxzIHByb2NfZXhpdCBkaXJl Y3RseS4KKyAqLworc3RhdGljIHZvaWQKK3BhcmFsbGVsX2FwcGx5X3NodXRkb3duKGludCBjb2Rl LCBEYXR1bSBhcmcpCit7CisJU2VuZFByb2NTaWduYWwoTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBs eV9sZWFkZXJfcGlkLAorCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJ CQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERh dHVtR2V0UG9pbnRlcihhcmcpKTsKK30KKworLyoKKyAqIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBl bnRyeSBwb2ludC4KKyAqLwordm9pZAorUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpCit7CisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworCWRzbV9oYW5k bGUJaGFuZGxlOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCXNobV9t cQkgICAqbXE7CisJc2htX21xX2hhbmRsZSAqbXFoOworCXNobV9tcV9oYW5kbGUgKmVycm9yX21x aDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJ CW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nLiAq LworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFz aWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsK KworCS8qCisJICogQXR0YWNoIHRvIHRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBm b3IgdGhlIHBhcmFsbGVsIGFwcGx5LCBhbmQKKwkgKiBmaW5kIGl0cyB0YWJsZSBvZiBjb250ZW50 cy4KKwkgKgorCSAqIExpa2UgcGFyYWxsZWwgcXVlcnksIHdlIGRvbid0IG5lZWQgcmVzb3VyY2Ug b3duZXIgYnkgdGhpcyB0aW1lLiBTZWUKKwkgKiBQYXJhbGxlbFdvcmtlck1haW4uCisJICovCisJ bWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJhLCBzaXplb2YoZHNtX2hh bmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlpZiAoc2VnID09IE5VTEwpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1hcCBkeW5hbWljIHNoYXJl ZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9jX2F0dGFjaChQR19MT0dJQ0FM X0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpKTsKKwlpZiAodG9jID09 IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiYmFkIG1hZ2ljIG51bWJlciBp biBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwliZWZvcmVfc2htZW1fZXhp dChwYXJhbGxlbF9hcHBseV9zaHV0ZG93biwgUG9pbnRlckdldERhdHVtKHNlZykpOworCisJLyog TG9vayB1cCB0aGUgc2hhcmVkIGluZm9ybWF0aW9uLiAqLworCXNoYXJlZCA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgZmFsc2UpOworCU15UGFyYWxsZWxT aGFyZWQgPSBzaGFyZWQ7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgbWVzc2FnZSBxdWV1ZS4K KwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBm YWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKwltcWggPSBzaG1fbXFf YXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyoKKwkgKiBQcmltYXJ5IGluaXRpYWxpemF0aW9u IGlzIGNvbXBsZXRlLiBOb3csIHdlIGNhbiBhdHRhY2ggdG8gb3VyIHNsb3QuCisJICogVGhpcyBp cyB0byBlbnN1cmUgdGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkb2VzIG5vdCB3cml0ZSBk YXRhIHRvCisJICogdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHF1ZXVlLgorCSAqLworCWxvZ2lj YWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15 UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dv cmtlcl9nZW5lcmF0aW9uID0gTXlMb2dpY2FsUmVwV29ya2VyLT5nZW5lcmF0aW9uOworCU15UGFy YWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm8gPSB3b3JrZXJfc2xvdDsKKwlT cGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKworCS8qCisJICogQXR0 YWNoIHRvIHRoZSBlcnJvciBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBmYWxzZSk7CisJc2htX21xX3NldF9zZW5k ZXIobXEsIE15UHJvYyk7CisJZXJyb3JfbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxM KTsKKworCXBxX3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIGVycm9yX21xaCk7CisJcHFfc2V0X3Bh cmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQsCisJCQkJ CQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5k X3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2Fs UmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKKworCUluaXRpYWxpemVBcHBseVdvcmtlcigpOwor CisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lzY2FjaGUgc28gdGhhdCB3ZSBrbm93IHdo ZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUgc3Vic2NyaXB0aW9uIHJlbGF0aW9uIHN0 YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlNDUklQVElPTlJF TE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzLAorCQkJCQkJ CQkgIChEYXR1bSkgMCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBh IGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAorCSAqIG1lc3NhZ2UuCisJICov CisJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lk LCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICAgb3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUp KTsKKwlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0 U3RyZHVwKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCisJ TG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKG1xaCk7CisKKwlwcm9jX2V4aXQoMCk7Cit9CisKKy8q CisgKiBIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBtZXNzYWdlLgorICoKKyAqIE5vdGU6IHRoaXMgaXMgY2FsbGVkIHdpdGhp biBhIHNpZ25hbCBoYW5kbGVyISAgQWxsIHdlIGNhbiBkbyBpcyBzZXQgYSBmbGFnCisgKiB0aGF0 IHdpbGwgY2F1c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBpbnZva2UKKyAq IEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcygpLgorICovCit2b2lkCitIYW5kbGVQYXJhbGxl bEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdFBlbmRpbmcgPSB0cnVl OworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IHRydWU7CisJU2V0TGF0Y2goTXlMYXRj aCk7Cit9CisKKy8qCisgKiBIYW5kbGUgYSBzaW5nbGUgcHJvdG9jb2wgbWVzc2FnZSByZWNlaXZl ZCBmcm9tIGEgc2luZ2xlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8KK3N0YXRpYyB2 b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8sIFN0cmluZ0luZm8gbXNnKQoreworCWNoYXIJCW1zZ3R5cGU7CisKKwltc2d0eXBlID0g cHFfZ2V0bXNnYnl0ZShtc2cpOworCisJc3dpdGNoIChtc2d0eXBlKQorCXsKKwkJY2FzZSAnRSc6 CQkJCS8qIEVycm9yUmVzcG9uc2UgKi8KKwkJCXsKKwkJCQlFcnJvckRhdGEJZWRhdGE7CisJCQkJ RXJyb3JDb250ZXh0Q2FsbGJhY2sgKnNhdmVfZXJyb3JfY29udGV4dF9zdGFjazsKKworCQkJCS8q IFBhcnNlIEVycm9yUmVzcG9uc2UuICovCisJCQkJcHFfcGFyc2VfZXJyb3Jub3RpY2UobXNnLCAm ZWRhdGEpOworCisJCQkJLyogRGVhdGggb2YgYSB3b3JrZXIgaXNuJ3QgZW5vdWdoIGp1c3RpZmlj YXRpb24gZm9yIHN1aWNpZGUuICovCisJCQkJZWRhdGEuZWxldmVsID0gTWluKGVkYXRhLmVsZXZl bCwgRVJST1IpOworCisJCQkJLyoKKwkJCQkgKiBJZiBkZXNpcmVkLCBhZGQgYSBjb250ZXh0IGxp bmUgdG8gc2hvdyB0aGF0IHRoaXMgaXMgYQorCQkJCSAqIG1lc3NhZ2UgcHJvcGFnYXRlZCBmcm9t IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBPdGhlcndpc2UsCisJCQkJICogaXQgY2FuIHNvbWV0 aW1lcyBiZSBjb25mdXNpbmcgdG8gdW5kZXJzdGFuZCB3aGF0IGFjdHVhbGx5CisJCQkJICogaGFw cGVuZWQuCisJCQkJICovCisJCQkJaWYgKGVkYXRhLmNvbnRleHQpCisJCQkJCWVkYXRhLmNvbnRl eHQgPSBwc3ByaW50ZigiJXNcbiVzIiwgZWRhdGEuY29udGV4dCwKKwkJCQkJCQkJCQkJIF8oInBh cmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKwkJCQllbHNlCisJCQkJCWVkYXRhLmNvbnRleHQgPSBw c3RyZHVwKF8oInBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKworCQkJCS8qCisJCQkJICogQ29u dGV4dCBiZXlvbmQgdGhhdCBzaG91bGQgdXNlIHRoZSBlcnJvciBjb250ZXh0IGNhbGxiYWNrcwor CQkJCSAqIHRoYXQgd2VyZSBpbiBlZmZlY3QgaW4gTG9naWNhbFJlcEFwcGx5TG9vcCgpLgorCQkJ CSAqLworCQkJCXNhdmVfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7 CisJCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IGFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisK KwkJCQlUaHJvd0Vycm9yRGF0YSgmZWRhdGEpOworCisJCQkJLyogU2hvdWxkIG5vdCByZWFjaCBo ZXJlIGFmdGVyIHJldGhyb3dpbmcgYW4gZXJyb3IuICovCisJCQkJZXJyb3JfY29udGV4dF9zdGFj ayA9IHNhdmVfZXJyb3JfY29udGV4dF9zdGFjazsKKworCQkJCWJyZWFrOworCQkJfQorCisJCQkv KgorCQkJICogRG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBh bmQKKwkJCSAqIE5vdGlmeVJlc3BvbnNlIGFzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtl ciBkb2Vzbid0IG5lZWQKKwkJCSAqIHRvIHNlbmQgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJ CSAqLworCQljYXNlICdOJzoKKwkJY2FzZSAnQSc6CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG1lc3NhZ2UgdHlwZSByZWNlaXZlZCBmcm9tIHBh cmFsbGVsIGFwcGx5IHdvcmtlcjogJWMgKG1lc3NhZ2UgbGVuZ3RoICVkIGJ5dGVzKSIsCisJCQkJ CSBtc2d0eXBlLCBtc2ctPmxlbik7CisJfQorfQorCisvKgorICogSGFuZGxlIGFueSBxdWV1ZWQg cHJvdG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgor ICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCkKK3sKKwlMaXN0Q2Vs bCAgICpsYzsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwlzdGF0aWMgTWVtb3J5Q29u dGV4dCBocGFtX2NvbnRleHQgPSBOVUxMOworCisJLyoKKwkgKiBUaGlzIGlzIGludm9rZWQgZnJv bSBQcm9jZXNzSW50ZXJydXB0cygpLCBhbmQgc2luY2Ugc29tZSBvZiB0aGUKKwkgKiBmdW5jdGlv bnMgaXQgY2FsbHMgY29udGFpbiBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB0aGVyZSBpcyBhIHBv dGVudGlhbAorCSAqIGZvciByZWN1cnNpdmUgY2FsbHMgaWYgbW9yZSBzaWduYWxzIGFyZSByZWNl aXZlZCB3aGlsZSB0aGlzIHJ1bnMuICBJdCdzCisJICogdW5jbGVhciB0aGF0IHJlY3Vyc2l2ZSBl bnRyeSB3b3VsZCBiZSBzYWZlLCBhbmQgaXQgZG9lc24ndCBzZWVtIHVzZWZ1bAorCSAqIGV2ZW4g aWYgaXQgaXMgc2FmZSwgc28gbGV0J3MgYmxvY2sgaW50ZXJydXB0cyB1bnRpbCBkb25lLgorCSAq LworCUhPTERfSU5URVJSVVBUUygpOworCisJLyoKKwkgKiBNb3Jlb3ZlciwgQ3VycmVudE1lbW9y eUNvbnRleHQgbWlnaHQgYmUgcG9pbnRpbmcgYWxtb3N0IGFueXdoZXJlLiAgV2UKKwkgKiBkb24n dCB3YW50IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywgc28g bGV0J3MgZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQgd2Ug Y2FuIHJlc2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmIChocGFtX2NvbnRleHQgPT0gTlVMTCkJ LyogZmlyc3QgdGltZSB0aHJvdWdoPyAqLworCQlocGFtX2NvbnRleHQgPSBBbGxvY1NldENvbnRl eHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJIkhhbmRsZVBhcmFsbGVsQXBw bHlNZXNzYWdlcyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCWVsc2UK KwkJTWVtb3J5Q29udGV4dFJlc2V0KGhwYW1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7CisKKwlQYXJhbGxlbEFwcGx5TWVzc2Fn ZVBlbmRpbmcgPSBmYWxzZTsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlz dCkKKwl7CisJCXNobV9tcV9yZXN1bHQgcmVzOworCQlTaXplCQluYnl0ZXM7CisJCXZvaWQJICAg KmRhdGE7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICh3aW5mby0+ZXJyb3JfbXFfaGFuZGxl ID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQlyZXMgPSBzaG1fbXFfcmVjZWl2ZSh3aW5mby0+ ZXJyb3JfbXFfaGFuZGxlLCAmbmJ5dGVzLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHJlcyA9PSBT SE1fTVFfV09VTERfQkxPQ0spCisJCQlicmVhazsKKwkJZWxzZSBpZiAocmVzID09IFNITV9NUV9T VUNDRVNTKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0YSBtc2c7CisKKwkJCWluaXRTdHJpbmdJbmZv KCZtc2cpOworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOwor CQkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2Uod2luZm8sICZtc2cpOworCQkJcGZyZWUobXNn LmRhdGEpOworCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJs b3N0IGNvbm5lY3Rpb24gdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKSk7CisJfQorCisJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogTWlnaHQgYXMgd2VsbCBj bGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAqLworCU1lbW9yeUNvbnRleHRSZXNldCho cGFtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVSUlVQVFMoKTsKK30KKworLyoKKyAqIFNldCB1 cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgorICoKKyAqIFdlIHNldCB1cCBhIGNv bnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBmaXhlZC1zaXplIHdvcmtlciBpbmZvCisgKiAo UGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCksIGEgbWVzc2FnZSBxdWV1ZSwgYW5kIGFuIGVycm9y IHF1ZXVlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJl LgorICovCitzdGF0aWMgYm9vbAorcGFyYWxsZWxfYXBwbHlfc2V0dXBfZHNtKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlzaG1fdG9jX2VzdGltYXRvciBlOworCVNpemUJCXNl Z3NpemU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJUGFyYWxsZWxB cHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworCXNobV9tcQkgICAqbXE7CisJU2l6ZQkJcXVldWVf c2l6ZSA9IERTTV9RVUVVRV9TSVpFOworCVNpemUJCWVycm9yX3F1ZXVlX3NpemUgPSBEU01fRVJS T1JfUVVFVUVfU0laRTsKKworCS8qCisJICogRXN0aW1hdGUgaG93IG11Y2ggc2hhcmVkIG1lbW9y eSB3ZSBuZWVkLgorCSAqCisJICogQmVjYXVzZSB0aGUgVE9DIG1hY2hpbmVyeSBtYXkgY2hvb3Nl IHRvIGluc2VydCBwYWRkaW5nIG9mIG9kZGx5LXNpemVkCisJICogcmVxdWVzdHMsIHdlIG11c3Qg ZXN0aW1hdGUgZWFjaCBjaHVuayBzZXBhcmF0ZWx5LgorCSAqCisJICogV2UgbmVlZCBvbmUga2V5 IHRvIHJlZ2lzdGVyIHRoZSBsb2NhdGlvbiBvZiB0aGUgaGVhZGVyLCBhbmQgdHdvIG90aGVyCisJ ICoga2V5cyB0byB0cmFjayB0aGUgbG9jYXRpb25zIG9mIHRoZSBtZXNzYWdlIHF1ZXVlIGFuZCB0 aGUgZXJyb3IgbWVzc2FnZQorCSAqIHF1ZXVlLgorCSAqLworCXNobV90b2NfaW5pdGlhbGl6ZV9l c3RpbWF0b3IoJmUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHNpemVvZihQYXJhbGxl bEFwcGx5V29ya2VyU2hhcmVkKSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgcXVldWVf c2l6ZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgZXJyb3JfcXVldWVfc2l6ZSk7CisK KwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDMpOworCXNlZ3NpemUgPSBzaG1fdG9jX2VzdGlt YXRlKCZlKTsKKworCS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGFuZCBlc3Rh Ymxpc2ggYSB0YWJsZSBvZiBjb250ZW50cy4gKi8KKwlzZWcgPSBkc21fY3JlYXRlKHNobV90b2Nf ZXN0aW1hdGUoJmUpLCAwKTsKKwlpZiAoc2VnID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwor CXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2Vn bWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBTZXQgdXAgdGhlIGhl YWRlciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19hbGxvY2F0ZSh0b2MsIHNpemVvZihQ YXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZzaGFyZWQtPm11dGV4 KTsKKworCXNoYXJlZC0+aW5fcGFyYWxsZWxfYXBwbHlfeGFjdCA9IGZhbHNlOworCisJc2htX3Rv Y19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBzaGFyZWQpOworCisJLyog U2V0IHVwIG1lc3NhZ2UgcXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3Jl YXRlKHNobV90b2NfYWxsb2NhdGUodG9jLCBxdWV1ZV9zaXplKSwgcXVldWVfc2l6ZSk7CisJc2ht X3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0 X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8t Pm1xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBTZXQgdXAg ZXJyb3IgcXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3JlYXRlKHNobV90 b2NfYWxsb2NhdGUodG9jLCBlcnJvcl9xdWV1ZV9zaXplKSwKKwkJCQkJICAgZXJyb3JfcXVldWVf c2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVF VUUsIG1xKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCisJLyogQXR0YWNo IHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gc2htX21xX2F0dGFjaCht cSwgc2VnLCBOVUxMKTsKKworCS8qIFJldHVybiByZXN1bHRzIHRvIGNhbGxlci4gKi8KKwl3aW5m by0+ZHNtX3NlZyA9IHNlZzsKKwl3aW5mby0+c2hhcmVkID0gc2hhcmVkOworCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qCisgKiBTdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgcHJvY2VzcyBhbmQg YWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBmb3IgaXQuCisgKi8KK3N0YXRpYyBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqCitwYXJhbGxlbF9hcHBseV9zZXR1cF93b3JrZXIodm9pZCkKK3sKKwlNZW1v cnlDb250ZXh0IG9sZGNvbnRleHQ7CisJYm9vbAkJbGF1bmNoZWQ7CisJUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseUNvbnRleHQpOworCisJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgcGFs bG9jMChzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pKTsKKworCS8qIFNldHVwIHNoYXJl ZCBtZW1vcnkuICovCisJaWYgKCFwYXJhbGxlbF9hcHBseV9zZXR1cF9kc20od2luZm8pKQorCXsK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlwZnJlZSh3aW5mbyk7CisK KwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGF1bmNoZWQgPSBsb2dpY2FscmVwX3dvcmtlcl9sYXVu Y2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5v aWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQkJCQkJTXlMb2dpY2Fs UmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlkc21f c2VnbWVudF9oYW5kbGUod2luZm8tPmRzbV9zZWcpKTsKKworCWlmIChsYXVuY2hlZCkKKwl7CisJ CVBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCA9IGxhcHBlbmQoUGFyYWxsZWxBcHBseVdvcmtlcnNM aXN0LCB3aW5mbyk7CisJfQorCWVsc2UKKwl7CisJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2Vy X2luZm8od2luZm8pOworCisJCXdpbmZvID0gTlVMTDsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CisKKwlyZXR1cm4gd2luZm87Cit9CisKKy8qCisgKiBTZW5kIHRo ZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFyZWQt bWVtb3J5IHF1ZXVlLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywKKwkJCQkJCSBjb25zdCB2b2lk ICpkYXRhKQoreworCXNobV9tcV9yZXN1bHQgcmVzdWx0OworCisJcmVzdWx0ID0gc2htX21xX3Nl bmQod2luZm8tPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCBmYWxzZSwgdHJ1ZSk7CisKKwlpZiAo cmVzdWx0ICE9IFNITV9NUV9TVUNDRVNTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2co ImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7Cit9CisKKy8q CisgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgcHJvY2Vzc2VkIHRoZSB0 cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfd2Fp dF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCWZv ciAoOzspCisJeworCQkvKgorCQkgKiBTdG9wIGlmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aGFzIHByb2Nlc3NlZCB0aGUgdHJhbnNhY3Rpb24KKwkJICogZmluaXNoIGNvbW1hbmQuCisJCSAq LworCQlpZiAoIXBhcmFsbGVsX2FwcGx5X2dldF9pbl94YWN0KHdpbmZvLT5zaGFyZWQpKQorCQkJ YnJlYWs7CisKKwkJLyogV2FpdCB0byBiZSBzaWduYWxsZWQuICovCisJCSh2b2lkKSBXYWl0TGF0 Y2goTXlMYXRjaCwKKwkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJCSAxMDAwTCwKKwkJCQkJCSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFS QUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2Ug ZG9uJ3Qgc3Bpbi4gKi8KKwkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQkvKiBBbiBpbnRlcnJ1 cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCX0KK30KKworLyoKKyAqIFNldCB0aGUgaW5fcGFyYWxsZWxfYXBw bHlfeGFjdCBmbGFnIGZvciB0aGUgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2 b2lkCitwYXJhbGxlbF9hcHBseV9zZXRfaW5feGFjdChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVk ICp3c2hhcmVkLAorCQkJCQkJICAgYm9vbCBpbl94YWN0KQoreworCVNwaW5Mb2NrQWNxdWlyZSgm d3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPmluX3BhcmFsbGVsX2FwcGx5X3hhY3QgPSBpbl94 YWN0OworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworfQorCisvKgorICogR2V0 IHRoZSBpbl9wYXJhbGxlbF9hcHBseV94YWN0IGZsYWcgZm9yIHRoZSBnaXZlbiBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCisgKi8KK3N0YXRpYyBib29sCitwYXJhbGxlbF9hcHBseV9nZXRfaW5feGFj dChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKQoreworCWJvb2wJCWluX3hhY3Q7 CisKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwlpbl94YWN0ID0gd3NoYXJl ZC0+aW5fcGFyYWxsZWxfYXBwbHlfeGFjdDsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11 dGV4KTsKKworCXJldHVybiBpbl94YWN0OworfQorCisvKgorICogRm9ybSB0aGUgc2F2ZXBvaW50 IG5hbWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogUmV0dXJuIHRoZSBu YW1lIGluIHRoZSBzdXBwbGllZCBidWZmZXIuCisgKi8KK3N0YXRpYyB2b2lkCitwYXJhbGxlbF9h cHBseV9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJ CQkgIGNoYXIgKnNwbmFtZSwgU2l6ZSBzenNwKQoreworCXNucHJpbnRmKHNwbmFtZSwgc3pzcCwg InBnX3NwXyV1XyV1Iiwgc3Vib2lkLCB4aWQpOworfQorCisvKgorICogRGVmaW5lIGEgc2F2ZXBv aW50IGZvciBhIHN1YnhhY3QgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIG5lZWRlZC4KKyAq CisgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1 YnRyYW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5n ZSBhcnJpdmVkIHdpdGggYSBkaWZmZXJlbnQgeGlkLiBJbiB0aGF0CisgKiBjYXNlIGRlZmluZSBh IG5hbWVkIHNhdmVwb2ludCwgc28gdGhhdCB3ZSBhcmUgYWJsZSB0byByb2xsYmFjayB0byBpdAor ICogaWYgcmVxdWlyZWQuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3N0YXJ0X3N1YnRyYW5z KFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hpZCkKK3sKKwlp ZiAoY3VycmVudF94aWQgIT0gdG9wX3hpZCAmJgorCQkhbGlzdF9tZW1iZXJfeGlkKHN1YnhhY3Rs aXN0LCBjdXJyZW50X3hpZCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJ c3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlwYXJhbGxlbF9hcHBseV9zYXZlcG9pbnRfbmFtZShN eVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJCQkJCSAgc3BuYW1lLCBzaXpl b2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJkZWZpbmluZyBzYXZlcG9pbnQgJXMgaW4g cGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQkvKiBXZSBtdXN0IGJlIGluIHRy YW5zYWN0aW9uIGJsb2NrIHRvIGRlZmluZSB0aGUgU0FWRVBPSU5ULiAqLworCQlpZiAoIUlzVHJh bnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwkJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJRGVmaW5lU2F2ZXBvaW50KHNwbmFt ZSk7CisKKwkJLyoKKwkJICogQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kIGlzIG5lZWRlZCB0byBz dGFydCBhIHN1YnRyYW5zYWN0aW9uIGFmdGVyCisJCSAqIGlzc3VpbmcgYSBTQVZFUE9JTlQgaW5z aWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sgKHNlZQorCQkgKiBTdGFydFN1YlRyYW5zYWN0aW9uKCkp LgorCQkgKi8KKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJb2xkY3R4ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCXN1YnhhY3RsaXN0ID0gbGFwcGVu ZF94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRfeGlkKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN0eCk7CisJfQorfQorCisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdo ZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIGluIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdv cmtlci4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBT dHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBhYm9y dF9kYXRhLT54aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQgPSBhYm9ydF9kYXRhLT5zdWJ4aWQ7 CisKKwkvKgorCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFt aW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgorCSAqIGluIGNhc2Ugb2YgY3Jhc2guCisJICovCisJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLT5hYm9ydF9sc247CisJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBhYm9ydF9kYXRhLT5hYm9ydF90 aW1lOworCisJLyoKKwkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZh Y3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KKwkgKiBqdXN0IGZyZWUgdGhlIHN1YnhhY3Rs aXN0LgorCSAqLworCWlmIChzdWJ4aWQgPT0geGlkKQorCXsKKwkJcGFyYWxsZWxfYXBwbHlfcmVw bG9yaWdpbl9zZXR1cCgpOworCisJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJaWYg KElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNl KTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJcGFyYWxsZWxfYXBw bHlfcmVwbG9yaWdpbl9yZXNldCgpOworCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVf SURMRSwgTlVMTCk7CisKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJc3VieGFjdGxpc3Qg PSBOSUw7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4g Um9sbGJhY2sgdG8gdGhlIHNhdmVwb2ludC4KKwkJICoKKwkJICogV2UgYWxzbyBuZWVkIHRvIHJl YWQgdGhlIHN1YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9mZnNldCB0cmFja2VkCisJCSAqIGZv ciB0aGUgc3VieGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0LgorCQkgKi8KKwkJaW50CQkJaTsK KwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJY2hhcgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKwor CQlwYXJhbGxlbF9hcHBseV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBzdWJ4 aWQsIHNwbmFtZSwKKwkJCQkJCQkJCSAgc2l6ZW9mKHNwbmFtZSkpOworCisJCWVsb2coREVCVUcx LCAicm9sbGluZyBiYWNrIHRvIHNhdmVwb2ludCAlcyBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIi LCBzcG5hbWUpOworCisJCWZvciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3RsaXN0KSAtIDE7IGkg Pj0gMDsgaS0tKQorCQl7CisJCQlUcmFuc2FjdGlvbklkIHhpZF90bXAgPSBsZmlyc3RfeGlkKGxp c3RfbnRoX2NlbGwoc3VieGFjdGxpc3QsIGkpKTsKKworCQkJaWYgKHhpZF90bXAgPT0gc3VieGlk KQorCQkJeworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlm IChmb3VuZCkKKwkJeworCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUpOworCQkJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUoc3Vi eGFjdGxpc3QsIGkgKyAxKTsKKwkJfQorCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVf SURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCX0KKworCXBhcmFsbGVsX2FwcGx5X3NldF9pbl94 YWN0KE15UGFyYWxsZWxTaGFyZWQsIGZhbHNlKTsKK30KKworLyogU2V0dXAgcmVwbGljYXRpb24g b3JpZ2luIHRyYWNraW5nLiAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1 cCh2b2lkKQoreworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWNoYXIJCW9yaWdpbm5hbWVbTkFN RURBVEFMRU5dOworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKKworCS8qIFRoaXMgZnVuY3Rp b24gbWlnaHQgYmUgY2FsbGVkIGluc2lkZSBvciBvdXRzaWRlIG9mIHRyYW5zYWN0aW9uLiAqLwor CWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9CisKKwlSZXBsaWNhdGlvbk9yaWdpbk5hbWVG b3JMb2dpY2FsUmVwKE15U3Vic2NyaXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkg ICBvcmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSkpOworCW9yaWdpbmlkID0gcmVwbG9yaWdp bl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo b3JpZ2luaWQpOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKKworCWlm IChzdGFydGVkX3R4KQorCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KKworLyogUmVz ZXQgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlf cmVwbG9yaWdpbl9yZXNldCh2b2lkKQoreworCXJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpOwor CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IEludmFsaWRSZXBPcmlnaW5JZDsKKwlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCXJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDJjYzBhYzkuLjMwMzU1N2QgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNjUyLDkgKzY1MiwxMCBAQCBEZWNvZGVD b21taXQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYs CiAJewogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewotCQkJ UmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1 Zi0+b3JpZ3B0cik7CisJCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2Vk LT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmlncHRyLAorCQkJCQkJCQljb21taXRfdGltZSk7CiAJCX0K LQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyKTsK KwkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyLCBj b21taXRfdGltZSk7CiAKIAkJcmV0dXJuOwogCX0KQEAgLTgyMiwxMCArODIzLDExIEBAIERlY29k ZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVm LAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVv cmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJ CQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5k UmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJl b3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9y dChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFi b3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBmMmM1NWYzLi43Y2Jk MmY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01 NCw2ICs1NCw3IEBACiAKIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0 OwogaW50CQkJbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1h eF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOwogCiBMb2dpY2Fs UmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXIgPSBOVUxMOwogCkBAIC0xNTEsOCArMTUyLDEw IEBAIGdldF9zdWJzY3JpcHRpb25fbGlzdCh2b2lkKQogICoKICAqIFRoaXMgaXMgb25seSBuZWVk ZWQgZm9yIGNsZWFuaW5nIHVwIHRoZSBzaGFyZWQgbWVtb3J5IGluIGNhc2UgdGhlIHdvcmtlcgog ICogZmFpbHMgdG8gYXR0YWNoLgorICoKKyAqIFJldHVybiB3aGV0aGVyIHRoZSBhdHRhY2ggd2Fz IHN1Y2Nlc3NmdWwuCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogV2FpdEZvclJlcGxp Y2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCQkJCQkgICB1 aW50MTYgZ2VuZXJhdGlvbiwKIAkJCQkJCQkgICBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5k bGUpCkBAIC0xNjgsMTEgKzE3MSwxMSBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2go TG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdv cmtlckxvY2ssIExXX1NIQVJFRCk7CiAKLQkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBz dGFydGVkOyBubyBuZWVkIHRvIGRvIGFueXRoaW5nLiAqLworCQkvKiBXb3JrZXIgZWl0aGVyIGRp ZWQgb3IgaGFzIHN0YXJ0ZWQuIFJldHVybiBmYWxzZSBpZiBkaWVkLiAqLwogCQlpZiAoIXdvcmtl ci0+aW5fdXNlIHx8IHdvcmtlci0+cHJvYykKIAkJewogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2Fs UmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gd29ya2VyLT5pbl91c2U7CiAJ CX0KIAogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTE4Nyw3ICsx OTAsNyBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAq d29ya2VyLAogCQkJaWYgKGdlbmVyYXRpb24gPT0gd29ya2VyLT5nZW5lcmF0aW9uKQogCQkJCWxv Z2ljYWxyZXBfd29ya2VyX2NsZWFudXAod29ya2VyKTsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNh bFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKIAkJ LyoKQEAgLTIwOSw2ICsyMTIsOCBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyLAogLyoKICAqIFdhbGtzIHRoZSB3b3JrZXJzIGFycmF5IGFu ZCBzZWFyY2hlcyBmb3Igb25lIHRoYXQgbWF0Y2hlcyBnaXZlbgogICogc3Vic2NyaXB0aW9uIGlk IGFuZCByZWxpZC4KKyAqCisgKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMgd29ya2VyLgogICovCiBMb2dpY2FsUmVwV29ya2Vy ICoKIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25s eV9ydW5uaW5nKQpAQCAtMjIzLDYgKzIyOCwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9p ZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKIAl7CiAJCUxvZ2ljYWxSZXBX b3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKIAorCQkvKiBTa2lwIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMuICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJ CQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1YmlkID09IHN1YmlkICYmIHct PnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpA QCAtMjU5LDExICsyNjgsMTMgQEAgbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBi b29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBuZXcgYmFja2dyb3VuZCB3b3JrZXIsIGlm IHBvc3NpYmxlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWls dXJlLgogICovCi12b2lkCitib29sCiBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQs IE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKLQkJCQkJCSBPaWQg cmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pCiB7CiAJ QmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqYmd3X2hhbmRs ZTsKQEAgLTI3Miw3ICsyODMsMTIgQEAgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlk LCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCiAJaW50CQkJc2xv dCA9IDA7CiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlpbnQJCQluc3luY3dv cmtlcnM7CisJaW50CQkJbnBhcmFsbGVsYXBwbHl3b3JrZXJzOwogCVRpbWVzdGFtcFR6IG5vdzsK Kwlib29sCQlpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAhPSBEU01f SEFORExFX0lOVkFMSUQpOworCisJLyogU2FuaXR5IGNoZWNrIC0gdGFibGVzeW5jIHdvcmtlciBj YW5ub3QgYmUgYSBzdWJ3b3JrZXIgKi8KKwlBc3NlcnQoIShpc19wYXJhbGxlbF9hcHBseV93b3Jr ZXIgJiYgT2lkSXNWYWxpZChyZWxpZCkpKTsKIAogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1z Z19pbnRlcm5hbCgic3RhcnRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiBcIiVzXCIiLApAQCAtMzUwLDcgKzM2NiwyNiBAQCByZXRyeToKIAlpZiAoT2lkSXNW YWxpZChyZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQly ZXR1cm47CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlucGFyYWxsZWxhcHBseXdvcmtlcnMgPSBs b2dpY2FscmVwX3BhcmFsbGVsX2FwcGx5X3dvcmtlcl9jb3VudChzdWJpZCk7CisKKwkvKgorCSAq IFJldHVybiBmYWxzZSBpZiB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcmVh Y2hlZCB0aGUgbGltaXQKKwkgKiBwZXIgc3Vic2NyaXB0aW9uLgorCSAqLworCWlmIChpc19wYXJh bGxlbF9hcHBseV93b3JrZXIgJiYKKwkJbnBhcmFsbGVsYXBwbHl3b3JrZXJzID49IG1heF9wYXJh bGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCisJeworCQlMV0xvY2tSZWxlYXNl KExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKworCQllcmVwb3J0KExPRywKKwkJCQkoZXJyY29kZShF UlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAorCQkJCSBlcnJtc2coIm91dCBv ZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIiksCisJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVk IHRvIGluY3JlYXNlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24u IikpKTsKKworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyoKQEAgLTM2NCw3ICszOTksNyBAQCBy ZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQp LAogCQkJCSBlcnJtc2coIm91dCBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBzbG90cyIp LAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0K IAogCS8qIFByZXBhcmUgdGhlIHdvcmtlciBzbG90LiAqLwpAQCAtMzc5LDYgKzQxNCw4IEBAIHJl dHJ5OgogCXdvcmtlci0+cmVsc3RhdGUgPSBTVUJSRUxfU1RBVEVfVU5LTk9XTjsKIAl3b3JrZXIt PnJlbHN0YXRlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQgPSBOVUxMOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IGlzX3BhcmFsbGVsX2FwcGx5 X3dvcmtlciA/IE15UHJvY1BpZCA6IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBs eSA9IGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcjsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52YWxp ZFhMb2dSZWNQdHI7CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGltZSk7 CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3JlY3ZfdGltZSk7CkBAIC0zOTYsMTkg KzQzMywzNCBAQCByZXRyeToKIAkJQkdXT1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNUSU9O OwogCWJndy5iZ3dfc3RhcnRfdGltZSA9IEJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsK IAlzbnByaW50ZihiZ3cuYmd3X2xpYnJhcnlfbmFtZSwgQkdXX01BWExFTiwgInBvc3RncmVzIik7 Ci0Jc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3Jr ZXJNYWluIik7CisKKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50Zihi Z3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJQYXJhbGxlbEFwcGx5V29ya2VyTWFp biIpOworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVO LCAiQXBwbHlXb3JrZXJNYWluIik7CisKIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJCXNucHJp bnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24g d29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgc3luYyAldSIsIHN1YmlkLCByZWxpZCk7CisJZWxz ZSBpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X25hbWUs IEJHV19NQVhMRU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwogCWVsc2UKIAkJc25wcmludGYoYmd3 LmJnd19uYW1lLCBCR1dfTUFYTEVOLAotCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKLQlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJH V19NQVhMRU4sICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciIpOworCQkJCSAibG9naWNhbCBy ZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKKwor CWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwg QkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgd29ya2VyIik7CisJZWxz ZQorCQlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxpY2F0 aW9uIHdvcmtlciIpOwogCiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSBCR1dfTkVWRVJfUkVTVEFS VDsKIAliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAJYmd3LmJnd19tYWluX2FyZyA9 IEludDMyR2V0RGF0dW0oc2xvdCk7CiAKKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQor CQltZW1jcHkoYmd3LmJnd19leHRyYSwgJnN1Yndvcmtlcl9kc20sIHNpemVvZihkc21faGFuZGxl KSk7CisKIAlpZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJnd19o YW5kbGUpKQogCXsKIAkJLyogRmFpbGVkIHRvIHN0YXJ0IHdvcmtlciwgc28gY2xlYW4gdXAgdGhl IHdvcmtlciBzbG90LiAqLwpAQCAtNDIxLDMzICs0NzMsMjIgQEAgcmV0cnk6CiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJv dXQgb2YgYmFja2dyb3VuZCB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0 IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3dvcmtlcl9wcm9jZXNzZXMuIikpKTsKLQkJcmV0dXJuOwor CQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogTm93IHdhaXQgdW50aWwgaXQgYXR0YWNoZXMuICov Ci0JV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3 X2hhbmRsZSk7CisJcmV0dXJuIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIs IGdlbmVyYXRpb24sIGJnd19oYW5kbGUpOwogfQogCiAvKgotICogU3RvcCB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YmlkL3JlbGlkLCBpZiBhbnksIGFuZCB3YWl0IHVudGls Ci0gKiBpdCBkZXRhY2hlcyBmcm9tIHRoZSBzbG90LgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8g c3RvcCB0aGUgd29ya2VyIGFuZCB3YWl0IGZvciBpdCB0byBkaWUuCiAgKi8KLXZvaWQKLWxvZ2lj YWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCitzdGF0aWMgdm9pZAorbG9n aWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiB7 Ci0JTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwogCXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAotCUxX TG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7Ci0KLQl3b3JrZXIg PSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwotCi0JLyogTm8g d29ya2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghd29ya2VyKQotCXsKLQkJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKLQl9CisJQXNzZXJ0KExXTG9j a0hlbGRCeU1lSW5Nb2RlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpKTsKIAogCS8q CiAJICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlvbiB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4g Y2hlY2sgaWYgd2hhdCB3ZSBzZWUKQEAgLTQ4NSwxMCArNTI2LDcgQEAgbG9naWNhbHJlcF93b3Jr ZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJICogZGlmZmVyZW50LCBtZWFuaW5nIHRo YXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtlbiB0aGUgc2xvdC4KIAkJICovCiAJCWlmICgh d29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5lcmF0aW9uICE9IGdlbmVyYXRpb24pCi0JCXsK LQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogCQkJcmV0dXJuOwotCQl9 CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBwcm9jLCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8K IAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTUyMiw2ICs1NjAsNTAgQEAgbG9naWNhbHJlcF93b3Jr ZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCX0KK30KKworLyoKKyAqIFN0b3AgdGhlIGxvZ2lj YWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJpZC9yZWxpZCwgaWYgYW55LCBhbmQgd2FpdCB1 bnRpbAorICogaXQgZGV0YWNoZXMgZnJvbSB0aGUgc2xvdC4KKyAqLwordm9pZAorbG9naWNhbHJl cF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFS RUQpOworCisJd29ya2VyID0gbG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZh bHNlKTsKKworCWlmICh3b3JrZXIpCisJeworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtl cih3b3JrZXIpKTsKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIpOwor CX0KKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICog U3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUg aW5wdXQgc2xvdCBudW1iZXIsCisgKiBhbmQgd2FpdCB1bnRpbCBpdCBkZXRhY2hlcyBmcm9tIHRo ZSBzbG90LgorICovCit2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2J5X3Nsb3QoaW50IHNs b3Rfbm8sIHVpbnQxNiBnZW5lcmF0aW9uKQoreworCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsK KworCUFzc2VydChzbG90X25vID49MCAmJiBzbG90X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRp b25fd29ya2Vycyk7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19T SEFSRUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisK KwkvKgorCSAqIE9ubHkgc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBnZW5lcmF0aW9uIG1hdGNoZXMg YW5kIHRoZSB3b3JrZXIgaXMgYWxpdmUuCisJICovCisJaWYgKHdvcmtlci0+Z2VuZXJhdGlvbiA9 PSBnZW5lcmF0aW9uICYmIHdvcmtlci0+cHJvYykKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9p bnRlcm5hbCh3b3JrZXIpOwogCiAJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7 CiB9CkBAIC01OTQsMTEgKzY3NiwzMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNs b3QpCiB9CiAKIC8qCi0gKiBEZXRhY2ggdGhlIHdvcmtlciAoY2xlYW5zIHVwIHRoZSB3b3JrZXIg aW5mbykuCisgKiBTdG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGlmIGFueSwgYW5kIGRl dGFjaCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorICogKGNsZWFucyB1cCB0aGUgd29ya2VyIGlu Zm8pLgogICovCiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7 CisJLyogU3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoYW1fbGVhZGVy X2FwcGx5X3dvcmtlcigpKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAq bGM7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsK KworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxS ZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAo aXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50 ZXJuYWwodyk7CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK Kwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExv Z2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjEsNiArNzI0LDggQEAg bG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29y a2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwog CXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9 IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpA QCAtNjgwLDYgKzc4NSwzMyBAQCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJp ZCkKIH0KIAogLyoKKyAqIENvdW50IHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJlZCAoYnV0IG5vdCBu ZWNlc3NhcmlseSBydW5uaW5nKSBwYXJhbGxlbCBhcHBseQorICogd29ya2VycyBmb3IgYSBzdWJz Y3JpcHRpb24uCisgKi8KK2ludAorbG9naWNhbHJlcF9wYXJhbGxlbF9hcHBseV93b3JrZXJfY291 bnQoT2lkIHN1YmlkKQoreworCWludAkJCWk7CisJaW50CQkJcmVzID0gMDsKKworCUFzc2VydChM V0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCisJLyoKKwkgKiBTY2FuIGFs bCBhdHRhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBvbmx5IGNvdW50aW5nIHRob3NlIHdo aWNoCisJICogaGF2ZSB0aGUgZ2l2ZW4gc3Vic2NyaXB0aW9uIGlkLgorCSAqLworCWZvciAoaSA9 IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOyBpKyspCisJeworCQlMb2dp Y2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CisKKwkJaWYgKHct PnN1YmlkID09IHN1YmlkICYmIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCXJlcysrOwor CX0KKworCXJldHVybiByZXM7Cit9CisKKy8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAg KgkJQ29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBt ZW1vcnkKICAqLwpAQCAtODY4LDcgKzEwMDAsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBt YWluX2FyZykKIAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwog CiAJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWIt Pm5hbWUsCi0JCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJ IHN1Yi0+b3duZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJ fQogCkBAIC05NTEsNiArMTA4MywxMCBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVO Q1RJT05fQVJHUykKIAkJaWYgKE9pZElzVmFsaWQoc3ViaWQpICYmIHdvcmtlci5zdWJpZCAhPSBz dWJpZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIFNraXAgaWYgdGhpcyBpcyBhIHBhcmFsbGVsIGFw cGx5IHdvcmtlciAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKCZ3b3JrZXIpKQorCQkJ Y29udGludWU7CisKIAkJd29ya2VyX3BpZCA9IHdvcmtlci5wcm9jLT5waWQ7CiAKIAkJdmFsdWVz WzBdID0gT2JqZWN0SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggNzczNTgzYS4uMjZiZmMwZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0xLDQgKzEsNSBA QAogYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYXBwbHlwYXJhbGxlbHdvcmtlci5jJywK ICAgJ2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9naWNhbC5jJywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBmZjg1MTNlLi5kNjE2MGU2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0xMTYzLDEwICsxMTYzLDE0 IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxS ZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIC8qCiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8g dGhlIG91dHB1dCBzdHJlYW0uIE5vdGUgdGhhdCB4aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBz YW1lIGZvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRl X2Fib3J0X2luZm8gaXMgdHJ1ZSwgc2VuZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZp ZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9z dHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAg VHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExv Z1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lLCBib29s IHdyaXRlX2Fib3J0X2luZm8pCiB7CiAJcHFfc2VuZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0df U1RSRUFNX0FCT1JUKTsKIApAQCAtMTE3NSwxOSArMTE3OSw0MCBAQCBsb2dpY2FscmVwX3dyaXRl X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJLyogdHJh bnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIob3V0LCB4aWQpOwogCXBxX3NlbmRpbnQzMihv dXQsIHN1YnhpZCk7CisKKwlpZiAod3JpdGVfYWJvcnRfaW5mbykKKwl7CisJCXBxX3NlbmRpbnQ2 NChvdXQsIGFib3J0X2xzbik7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X3RpbWUpOworCX0K IH0KIAogLyoKICAqIFJlYWQgU1RSRUFNIEFCT1JUIGZyb20gdGhlIG91dHB1dCBzdHJlYW0uCisg KgorICogSWYgcmVhZF9hYm9ydF9pbmZvIGlzIHRydWUsIHJlYWQgdGhlIGFib3J0X2xzbiBhbmQg YWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKLWxvZ2lj YWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlk LAotCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpCitsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEg KmFib3J0X2RhdGEsCisJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZvKQogewotCUFzc2VydCh4 aWQgJiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0YSk7CisKKwlhYm9ydF9kYXRhLT54aWQg PSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEtPnN1YnhpZCA9IHBxX2dldG1zZ2lu dChpbiwgNCk7CiAKLQkqeGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKLQkqc3VieGlkID0gcHFf Z2V0bXNnaW50KGluLCA0KTsKKwlpZiAocmVhZF9hYm9ydF9pbmZvKQorCXsKKwkJYWJvcnRfZGF0 YS0+YWJvcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCQlhYm9ydF9kYXRhLT5hYm9ydF90 aW1lID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCX0KKwllbHNlCisJeworCQlhYm9ydF9kYXRhLT5h Ym9ydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9 IDA7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl b3JkZXJidWZmZXIuYwppbmRleCBmNTViZjQ0Li4zMGU4ZmU1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtMjg1Myw3ICsyODUzLDgg QEAgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwKICAqIGRpc2suCiAgKi8KIHZvaWQKLVJlb3JkZXJCdWZmZXJBYm9ydChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRl ckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24sCisJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVm ZmVyVFhOICp0eG47CiAKQEAgLTI4NjQsNiArMjg2NSw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydChS ZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlm ICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9 IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUg cmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0 eG4pKQogCXsKQEAgLTI5MzgsNyArMjk0MSw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RSdW5uaW5nWGlkKQogICogdG8gdGhp cyB4aWQgbWlnaHQgcmUtY3JlYXRlIHRoZSB0cmFuc2FjdGlvbiBpbmNvbXBsZXRlbHkuCiAgKi8K IHZvaWQKLVJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJVGltZXN0YW1w VHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI5NDksNiAr Mjk1Myw4IEBAIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsK IAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0 cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9y dC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAkJcmItPnN0cmVhbV9hYm9ydChy YiwgdHhuLCBsc24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5j LmMKaW5kZXggOTRlODEzYS4uMWMxYThlNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xNCw3ICsxNCw3IEBACiAgKgkgIFRoZSBpbml0aWFsIGRh dGEgc3luY2hyb25pemF0aW9uIGlzIGRvbmUgc2VwYXJhdGVseSBmb3IgZWFjaCB0YWJsZSwKICAq CSAgaW4gYSBzZXBhcmF0ZSBhcHBseSB3b3JrZXIgdGhhdCBvbmx5IGZldGNoZXMgdGhlIGluaXRp YWwgc25hcHNob3QgZGF0YQogICoJICBmcm9tIHRoZSBwdWJsaXNoZXIgYW5kIHRoZW4gc3luY2hy b25pemVzIHRoZSBwb3NpdGlvbiBpbiB0aGUgc3RyZWFtIHdpdGgKLSAqCSAgdGhlIG1haW4gYXBw bHkgd29ya2VyLgorICoJICB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KICAqCiAgKgkgIFRoZXJl IGFyZSBzZXZlcmFsIHJlYXNvbnMgZm9yIGRvaW5nIHRoZSBzeW5jaHJvbml6YXRpb24gdGhpcyB3 YXk6CiAgKgkgICAtIEl0IGFsbG93cyB1cyB0byBwYXJhbGxlbGl6ZSB0aGUgaW5pdGlhbCBkYXRh IHN5bmNocm9uaXphdGlvbgpAQCAtMTUzLDcgKzE1Myw3IEBAIGZpbmlzaF9zeW5jX3dvcmtlcih2 b2lkKQogCQkJCQlnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CiAJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBGaW5kIHRoZSBtYWluIGFwcGx5IHdv cmtlciBhbmQgc2lnbmFsIGl0LiAqLworCS8qIEZpbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg YW5kIHNpZ25hbCBpdC4gKi8KIAlsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgSW52YWxpZE9pZCk7CiAKIAkvKiBTdG9wIGdyYWNlZnVsbHkgKi8KQEAg LTYwOSw3ICs2MDksOCBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVj UHRyIGN1cnJlbnRfbHNuKQogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJ CQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVw V29ya2VyLT51c2VyaWQsCi0JCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCk7CisJCQkJCQkJCQkJ CQkgcnN0YXRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJCSBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJ CQkJaGVudHJ5LT5sYXN0X3N0YXJ0X3RpbWUgPSBub3c7CiAJCQkJCX0KIAkJCQl9CkBAIC02MzAs NiArNjMxLDEzIEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIg Y3VycmVudF9sc24pCiB2b2lkCiBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3Vy cmVudF9sc24pCiB7CisJLyoKKwkgKiBTa2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBT ZWUgcGFyYWxsZWxfYXBwbHlfY2FuX3N0YXJ0KCkgZm9yCisJICogZGV0YWlscy4KKwkgKi8KKwlp ZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCWlmIChhbV90YWJs ZXN5bmNfd29ya2VyKCkpCiAJCXByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX3N5bmMoY3VycmVu dF9sc24pOwogCWVsc2UKQEAgLTEyNDcsNyArMTI1NSw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVT dGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAKIAkvKgogCSAqIEhlcmUgd2UgdXNl IHRoZSBzbG90IG5hbWUgaW5zdGVhZCBvZiB0aGUgc3Vic2NyaXB0aW9uIG5hbWUgYXMgdGhlCi0J ICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbWFp biBhcHBseSB3b3JrZXIsCisJICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBkaWZm ZXJlbnQgZnJvbSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwKIAkgKiBzbyB0aGF0IHN5bmNocm9u b3VzIHJlcGxpY2F0aW9uIGNhbiBkaXN0aW5ndWlzaCB0aGVtLgogCSAqLwogCUxvZ1JlcFdvcmtl cldhbFJjdkNvbm4gPQpAQCAtMTQ2MSw4ICsxNDY5LDggQEAgY29weV90YWJsZV9kb25lOgogCVNw aW5Mb2NrUmVsZWFzZSgmTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxtdXRleCk7CiAKIAkvKgotCSAq IEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIG1haW4gYXBwbHkgd29ya2VyIHRlbGxzIHVzIHRvIGNh dGNoIHVwIGFuZCB0aGVuCi0JICogcmV0dXJuIHRvIGxldCBMb2dpY2FsUmVwQXBwbHlMb29wIGRv IGl0LgorCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdGVs bHMgdXMgdG8gY2F0Y2ggdXAgYW5kCisJICogdGhlbiByZXR1cm4gdG8gbGV0IExvZ2ljYWxSZXBB cHBseUxvb3AgZG8gaXQuCiAJICovCiAJd2FpdF9mb3Jfd29ya2VyX3N0YXRlX2NoYW5nZShTVUJS RUxfU1RBVEVfQ0FUQ0hVUCk7CiAJcmV0dXJuIHNsb3RuYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNTI1MGFlNy4uZjEzMWFjZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMiw4ICsyMiw1NSBAQAogICogU1RS RUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVk IHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1p dCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBp bnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRo ZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBz dHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0d28gYXBwcm9hY2hlczoKKyAqCisgKiAx KSBQYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKgorICogSWYgc3RyZWFtaW5nID0gcGFyYWxsZWws IHdlIGFzc2lnbiBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKGlmCisgKiBhdmFpbGFibGUp IGFzIHNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0gaXMgcmVjZWl2ZWQuIFRoZSBsZWFk ZXIgYXBwbHkKKyAqIHdvcmtlciB3aWxsIHNlbmQgY2hhbmdlcyB0byB0aGlzIG5ldyB3b3JrZXIg dmlhIHNoYXJlZCBtZW1vcnkuIFdlIGtlZXAgdGhpcworICogd29ya2VyIGFzc2lnbmVkIHRpbGwg dGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZvcgorICog dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcworICogZmlsZSBJL08gaW4gbW9zdCBjYXNlcywgYWx0aG91Z2ggd2Ug c3RpbGwgbmVlZCB0byBzcGlsbCB0byBhIGZpbGUgaWYgdGhlcmUKKyAqIGlzIG5vIHdvcmtlciBh dmFpbGFibGUuIEl0IGlzIGltcG9ydGFudCB0byBtYWludGFpbiBjb21taXQgb3JkZXIgdG8gYXZv aWQKKyAqIGZhaWx1cmVzIGR1ZSB0byAoYSkgdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzLCBzYXkg aWYgd2UgaW5zZXJ0IGEgcm93IGluIHRoZQorICogZmlyc3QgdHJhbnNhY3Rpb24gYW5kIHVwZGF0 ZSBpdCBpbiB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uIHRoZW4gYWxsb3dpbmcgdG8KKyAqIGFwcGx5 IGJvdGggaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZmFpbHVyZSBpbiB0aGUgdXBkYXRlLiAoYikg ZGVhZGxvY2tzLAorICogYWxsb3dpbmcgdHJhbnNhY3Rpb25zIHRoYXQgdXBkYXRlIHRoZSBzYW1l IHNldCBvZiByb3dzL3RhYmxlcyBpbiBvcHBvc2l0ZQorICogb3JkZXIgdG8gYmUgYXBwbGllZCBp biBwYXJhbGxlbCBjYW4gbGVhZCB0byBkZWFkbG9ja3MuCisgKgorICogV2UgbWFpbnRhaW4gYSB3 b3JrZXIgcG9vbCB0byBhdm9pZCByZXN0YXJ0aW5nIHdvcmtlcnMgZm9yIGVhY2ggc3RyZWFtaW5n CisgKiB0cmFuc2FjdGlvbi4gV2UgbWFpbnRhaW4gZWFjaCB3b3JrZXIncyBpbmZvcm1hdGlvbiBp biB0aGUKKyAqIFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdC4gQWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxh dW5jaGluZyBhIG5ldyB3b3JrZXIsIGl0cworICogaW5mb3JtYXRpb24gaXMgYWRkZWQgdG8gdGhl IFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdC4gT25jZSB0aGUgd29ya2VyCisgKiBmaW5pc2hlcyBh cHBseWluZyB0aGUgdHJhbnNhY3Rpb24sIHdlIG1hcmsgaXQgYXZhaWxhYmxlIGZvciByZS11c2Uu IE5vdywKKyAqIGJlZm9yZSBzdGFydGluZyBhIG5ldyB3b3JrZXIgdG8gYXBwbHkgdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiwgd2UgY2hlY2sKKyAqIHRoZSBsaXN0IGZvciBhbnkgYXZhaWxhYmxl IHdvcmtlci4gTm90ZSB0aGF0IHdlIG1haW50YWluIGEgbWF4aW11bSBvZiBoYWxmCisgKiB0aGUg bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiB3b3JrZXJzIGluIHRo ZSBwb29sIGFuZAorICogYWZ0ZXIgdGhhdCwgd2Ugc2ltcGx5IGV4aXQgdGhlIHdvcmtlciBhZnRl ciBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24uCisgKgorICogWFhYIFRoaXMgd29ya2VyIHBvb2wg dGhyZXNob2xkIGlzIGEgYml0IGFyYml0cmFyeSBhbmQgd2UgY2FuIHByb3ZpZGUgYSBHVUMKKyAq IHZhcmlhYmxlIGZvciB0aGlzIGluIHRoZSBmdXR1cmUgaWYgcmVxdWlyZWQuCisgKgorICogVGhl IGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBjcmVhdGUgc2VwYXJhdGUgZHluYW1pYyBzaGFyZWQg bWVtb3J5IHNlZ21lbnQKKyAqIHdoZW4gZWFjaCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhcnRz LiBUaGUgcmVhc29uIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0CisgKiB3ZSBjYW5ub3QgY291bnQg aG93IG1hbnkgd29ya2VycyB3aWxsIGJlIHN0YXJ0ZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bwor ICogYWxsb2NhdGUgZW5vdWdoIHNoYXJlZCBtZW1vcnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24g dGhlIG1heGltdW0gbnVtYmVyIG9mCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKSwgYnV0IHRoaXMKKyAqIHdvdWxk IHdhc3RlIG1lbW9yeSBpZiBubyBwcm9jZXNzIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICog VGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IHdpbGwgY29udGFpbiAoYSkgYSBzaG1f bXEgdGhhdCBjYW4gYmUKKyAqIHVzZWQgdG8gc2VuZCBjaGFuZ2VzIGluIHRoZSB0cmFuc2FjdGlv biBmcm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlciAo YikgYW5vdGhlciBzaG1fbXEgdGhhdCBjYW4gYmUgdXNlZCB0byBzZW5kIGVycm9ycyAoYW5kIG90 aGVyCisgKiBtZXNzYWdlcyByZXBvcnRlZCB2aWEgZWxvZy9lcmVwb3J0KSBmcm9tIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgdG8gbGVhZGVyCisgKiBhcHBseSB3b3JrZXIgKGMpIG5lY2Vzc2Fy eSBpbmZvcm1hdGlvbiB0byBiZSBzaGFyZWQgYW1vbmcgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtl cnMgYW5kIGxlYWRlciBhcHBseSB3b3JrZXIgKGkuZS4gaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBm bGFnIGFuZCB0aGUKKyAqIGNvcnJlc3BvbmRpbmcgTG9naWNhbFJlcFdvcmtlciBzbG90IGluZm9y bWF0aW9uKS4KKyAqCisgKiBJZiBubyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXZhaWxhYmxl IHRvIGhhbmRsZSB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24KKyAqIHdlIGZvbGxvdyBhcHByb2Fj aCAyLgorICoKKyAqIDIpIFdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0 aGUgZmluYWwgY29tbWl0IGFycml2ZXMKICAqCiAgKiBVbmxpa2UgdGhlIHJlZ3VsYXIgKG5vbi1z dHJlYW1lZCkgY2FzZSwgaGFuZGxpbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGhhcwogICogdG8g aGFuZGxlIGFib3J0cyBvZiBib3RoIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBhbmQgc3VidHJh bnNhY3Rpb25zLiBUaGlzCkBAIC0yMTksMjAgKzI2NiwzNSBAQCB0eXBlZGVmIHN0cnVjdCBBcHBs eUV4ZWN1dGlvbkRhdGEKIAlQYXJ0aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZTsJLyogcGFydGl0 aW9uIHJvdXRpbmcgaW5mbyAqLwogfSBBcHBseUV4ZWN1dGlvbkRhdGE7CiAKLS8qIFN0cnVjdCBm b3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkgZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwot dHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCisvKgorICogV2hhdCBhY3Rpb24g dG8gdGFrZSBmb3IgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIFRSQU5TX0xFQURFUl9BUFBMWSBt ZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgY2hhbmdlcwor ICogb2YgdGhlIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVkIGRpcmVjdGx5IGluIHRoZSB3b3JrZXIu CisgKgorICogVFJBTlNfTEVBREVSX1NFUklBTElaRSBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciBvciB0YWJsZQorICogc3luYyB3b3JrZXIuIENoYW5nZXMgYXJl IHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgd2hlbgorICogdGhl IGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiBhbmQg bmVlZCB0byBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisg KgorICogVFJBTlNfUEFSQUxMRUxfQVBQTFkgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBhbmQKKyAqIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGFyZSBh cHBsaWVkIGRpcmVjdGx5IGluIHRoZSB3b3JrZXIuCisgKi8KK3R5cGVkZWYgZW51bQogewotCUxv Z2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAqLwotCUxvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqcmVsOworCS8qIFRoZSBhY3Rpb24gZm9yIG5vbi1zdHJlYW1pbmcgdHJhbnNh Y3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9BUFBMWSwKIAotCS8qIFJlbW90ZSBub2RlIGluZm9y bWF0aW9uICovCi0JaW50CQkJcmVtb3RlX2F0dG51bTsJLyogLTEgaWYgaW52YWxpZCAqLwotCVRy YW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKLQlYTG9nUmVjUHRyCWZpbmlzaF9sc247Ci0JY2hhcgkg ICAqb3JpZ2luX25hbWU7Ci19IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsKKwkvKiBBY3Rpb25zIGZv ciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9TRVJJQUxJWkUsCisJ VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwsCisJVFJBTlNfUEFSQUxMRUxfQVBQTFkKK30g VHJhbnNBcHBseUFjdGlvbjsKIAotc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9l cnJvcl9jYWxsYmFja19hcmcgPQorLyogZXJyY29udGV4dCB0cmFja2VyICovCitBcHBseUVycm9y Q2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KIHsKIAkuY29tbWFuZCA9IDAs CiAJLnJlbCA9IE5VTEwsCkBAIC0yNDIsNyArMzA0LDkgQEAgc3RhdGljIEFwcGx5RXJyb3JDYWxs YmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogCS5vcmlnaW5fbmFtZSA9IE5VTEws CiB9OwogCi1zdGF0aWMgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsK K0Vycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gTlVMTDsK KworTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRl eHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNTEsMjcgKzMxNSwzNSBAQCBzdGF0aWMgTWVtb3J5 Q29udGV4dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCA9IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4g KkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwogCiBTdWJzY3JpcHRpb24gKk15U3Vic2Ny aXB0aW9uID0gTlVMTDsKLXN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsK K2Jvb2wJCU15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKIAogYm9vbAkJaW5fcmVtb3RlX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiBzdGF0aWMgWExvZ1JlY1B0ciByZW1vdGVfZmluYWxfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CiAKIC8qIGZpZWxkcyB2YWxpZCBvbmx5IHdoZW4gcHJvY2Vzc2lu ZyBzdHJlYW1lZCB0cmFuc2FjdGlvbiAqLwotc3RhdGljIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKK2Jvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAog c3RhdGljIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwog CiAvKgorICogVGhlIG51bWJlciBvZiBjaGFuZ2VzIHNlbnQgdG8gcGFyYWxsZWwgYXBwbHkgd29y a2VycyBkdXJpbmcgb25lIHN0cmVhbWluZworICogYmxvY2suCisgKi8KK3N0YXRpYyB1aW50MzIg cGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKworLyoKICAqIFdlIGVuYWJsZSBza2lwcGlu ZyBhbGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZv cgogICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNo IExTTiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICogT25jZSB3ZSBzdGFydCBza2lwcGluZyBj aGFuZ2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdlIHNraXAgYWxsIGNoYW5nZXMgb2YKICAq IHRoZSB0cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNjcmlwdGlvbiBpcyB1cGRhdGVkIGFuZCBN eVN1YnNjcmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0 aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMsIHdlCi0gKiBkb24ndCBz a2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdo ZXRoZXIgb3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28s IGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAoc3RyZWFtaW5nID0gb24pLAorICogd2Ug ZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRl Y2lkZSB3aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBhcHBseWluZyB0aGUgY2hhbmdlcyB3aGVu IHN0YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBzdWJza2lwbHNuIGlzCiAgKiBjbGVhcmVk IGFmdGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUgdHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcg bm9uLWVtcHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxhdHRlciBwcmV2ZW50cyB0aGUgbWlzdGFr ZW5seSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0gKiBiZWluZyBsZWZ0LgorICogYmVpbmcg bGVmdC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25z IHdoZW4gdXNpbmcKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3Qg Z2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZQorICogYXBwbHlpbmcgdGhlIGNoYW5nZXMuCiAgKi8K IHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQ dHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJ c0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMyMSwxMyArMzkzLDggQEAgc3Rh dGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJv b2wgcmVxdWVzdFJlcGx5KTsKIAogc3RhdGljIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExv Z1JlY1B0ciByZW1vdGVfbHNuKTsKIAotc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlw dGlvbih2b2lkKTsKLQogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9p ZCk7CiAKLS8qIHByb3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCi1z dGF0aWMgdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMgdm9pZCBh cHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRf ZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhl Y3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCkBA IC0zNjAsMTAgKzQyNywxMiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9p ZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBm aW5pc2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwot c3RhdGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxp bmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF9pbmZvKHZvaWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rp b25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqKndpbmZvKTsKKwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1l IGZvciB0aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTM5MywxOSArNDYyLDQyIEBAIFJlcGxpY2F0 aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogICoKICAq IFRoaXMgaXMgbWFpbmx5IG5lZWRlZCBmb3IgaW5pdGlhbCByZWxhdGlvbiBkYXRhIHN5bmMgYXMg dGhhdCBydW5zIGluCiAgKiBzZXBhcmF0ZSB3b3JrZXIgcHJvY2VzcyBydW5uaW5nIGluIHBhcmFs bGVsIGFuZCB3ZSBuZWVkIHNvbWUgd2F5IHRvIHNraXAKLSAqIGNoYW5nZXMgY29taW5nIHRvIHRo ZSBtYWluIGFwcGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMgb2YgYSB0YWJsZS4KKyAqIGNoYW5n ZXMgY29taW5nIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBh IHRhYmxlLgogICoKICAqIE5vdGUgd2UgbmVlZCB0byBkbyBzbWFsbGVyIG9yIGVxdWFscyBjb21w YXJpc29uIGZvciBTWU5DRE9ORSBzdGF0ZSBiZWNhdXNlCiAgKiBpdCBtaWdodCBob2xkIHBvc2l0 aW9uIG9mIGVuZCBvZiBpbml0aWFsIHNsb3QgY29uc2lzdGVudCBwb2ludCBXQUwKICAqIHJlY29y ZCArIDEgKGllIHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4dCByZWNvcmQgY2FuIGJlIENP TU1JVCBvZgogICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9jZXNzaW5nICh3aGljaCBpcyB3 aGF0IHdlIHNldCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBhcHBseV9oYW5kbGVfYmVnaW4p LgorICoKKyAqIE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBi ZWluZyBhcHBsaWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLCB3ZSBkaXNhbGxv dyBhcHBseWluZyBjaGFuZ2VzIG9uIGEgdGFibGUgdGhhdCBpcyBub3QgaW4KKyAqIHRoZSBSRUFE WSBzdGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNo YW5nZSBhcyB3ZQorICogd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4K KyAqCisgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyBpbiBwYXJhbGxlbF9hcHBseV9jYW5fc3Rh cnQoKSBiZWZvcmUgYXNzaWduaW5nIHRoZQorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRo ZSBwYXJhbGxlbCB3b3JrZXIsIGJ1dCBpdCBhbHNvIG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhl cmUgYmVjYXVzZSBpZiB0aGUgdXNlciBleGVjdXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJF RlJFU0gKKyAqIFBVQkxJQ0FUSU9OIGluIHBhcmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBh ZGRlZCB0byBwZ19zdWJzY3JpcHRpb25fcmVsCisgKiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5z YWN0aW9uLgogICovCiBzdGF0aWMgYm9vbAogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChM b2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIHsKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigp KQogCQlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lk OworCWVsc2UgaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJaWYgKHJlbC0+ c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1JFQURZKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBl cnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUp LAorCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRy YW5zYWN0aW9uIHVzaW5nIHBhcmFsbGVsICIKKwkJCQkJCQkgICAiYXBwbHkgd29ya2VycyB1bnRp bCBhbGwgdGFibGVzIGFyZSBzeW5jaHJvbml6ZWQuIikpKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9 CiAJZWxzZQogCQlyZXR1cm4gKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZIHx8CiAJ CQkJKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1NZTkNET05FICYmCkBAIC00NTEsNDMgKzU0 Myw4NSBAQCBlbmRfcmVwbGljYXRpb25fc3RlcCh2b2lkKQogfQogCiAvKgotICogSGFuZGxlIHN0 cmVhbWVkIHRyYW5zYWN0aW9ucy4KKyAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgZm9y IGJvdGggdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSBwYXJhbGxlbAorICogYXBwbHkg d29ya2Vycy4KKyAqCisgKiBJbiBzdHJlYW1pbmcgY2FzZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Yg c3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAqIFNVQlNUUkVBTV9PTiBtb2RlLCBzaW1wbHkg cmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsCisgKiB0cmFuc2Fj dGlvbiwgYW5kIGZvciBTVUJTVFJFQU1fUEFSQUxMRUwgbW9kZSwgc2VuZCB0aGUgY2hhbmdlcyB0 byBwYXJhbGxlbAorICogYXBwbHkgd29ya2VycyAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9y IExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMKKyAqIHdpbGwgYmUgYXBwbGllZCBieSBib3Ro IGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMpLgogICoKLSAq IElmIGluIHN0cmVhbWluZyBtb2RlIChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFu c2FjdGlvbiksIHdlCi0gKiBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJv cGVyIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorICogRm9yIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlv bnMsIHJldHVybnMgZmFsc2UuCisgKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5z IHRydWUgaWYgaW4gbGVhZGVyIGFwcGx5IHdvcmtlciwgZmFsc2UKKyAqIG90aGVyd2lzZS4KICAq Ci0gKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3 aXNlIChyZWd1bGFyIG1vZGUpLgorICogRXhjZXB0aW9uOiBJZiB0aGUgbWVzc2FnZSBiZWluZyBw cm9jZXNzZWQgaXMgTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OCisgKiBvciBMT0dJQ0FMX1JFUF9N U0dfVFlQRSwgcmV0dXJuIGZhbHNlIGV2ZW4gaWYgdGhlIG1lc3NhZ2UgbmVlZHMgdG8gYmUgc2Vu dAorICogdG8gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCiAgKi8KIHN0YXRpYyBib29sCiBoYW5k bGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJ bmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hp ZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBh cHBseV9hY3Rpb247CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0 aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKIAkvKiBub3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8K LQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChhcHBseV9hY3Rpb24gPT0gVFJB TlNfTEVBREVSX0FQUExZKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3NlcnQoc3RyZWFtX2ZkICE9 IE5VTEwpOwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKIAkv KgogCSAqIFdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIFhJRCBvZiB0aGUgc3VieGFjdCBhcyB0aGUg Zmlyc3QgcGFydCBvZiB0aGUKIAkgKiBtZXNzYWdlLCBzbyBleHRyYWN0IGl0LgogCSAqLwotCXhp ZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKKwljdXJyZW50X3hpZCA9IHBxX2dldG1zZ2ludChzLCA0 KTsKIAotCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwlpZiAoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKGN1cnJlbnRfeGlkKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiaW52YWxp ZCB0cmFuc2FjdGlvbiBJRCBpbiBzdHJlYW1lZCByZXBsaWNhdGlvbiB0cmFuc2FjdGlvbiIpKSk7 CiAKLQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkg dGhlcmUpLiAqLwotCXN1YnhhY3RfaW5mb19hZGQoeGlkKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlv bikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKwkJCUFzc2VydChzdHJlYW1f ZmQgIT0gTlVMTCk7CisKKwkJCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1 bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCisJCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlk KTsKKworCQkJLyogV3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCisJCQlz dHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQlyZXR1cm4gdHJ1ZTsKKworCQljYXNl IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJ cGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCQkJcGFy YWxsZWxfc3RyZWFtX25jaGFuZ2VzICs9IDE7CisKKwkJCS8qCisJCQkgKiBYWFggVGhlIHB1Ymxp c2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJCSAq IG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRl IHRoZQorCQkJICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBTZWUgZnVu Y3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCXJldHVybiAo YWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiAmJgorCQkJCQlhY3Rpb24gIT0gTE9H SUNBTF9SRVBfTVNHX1RZUEUpOwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVu dCBmaWxlICovCi0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQljYXNlIFRSQU5T X1BBUkFMTEVMX0FQUExZOgorCQkJLyogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3Qg aWYgbmVlZGVkLiAqLworCQkJcGFyYWxsZWxfYXBwbHlfc3RhcnRfc3VidHJhbnMoY3VycmVudF94 aWQsIHN0cmVhbV94aWQpOworCQkJcmV0dXJuIGZhbHNlOwogCi0JcmV0dXJuIHRydWU7CisJCWRl ZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJcmV0dXJuIGZhbHNlOwkJLyogc2lsZW5jZSBj b21waWxlciB3YXJuaW5nICovCisJfQogfQogCiAvKgpAQCAtOTIzLDggKzEwNTcsMTEgQEAgYXBw bHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSAqcHJl cGFyZV9kYXRhKQogCSAqIEJlZ2luVHJhbnNhY3Rpb25CbG9jayBpcyBuZWNlc3NhcnkgdG8gYmFs YW5jZSB0aGUgRW5kVHJhbnNhY3Rpb25CbG9jawogCSAqIGNhbGxlZCB3aXRoaW4gdGhlIFByZXBh cmVUcmFuc2FjdGlvbkJsb2NrIGJlbG93LgogCSAqLwotCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygp OwotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGlu ZyBCZWdpbiBjb21tYW5kLiAqLworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJeworCQlC ZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8q IENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJfQogCiAJLyoKIAkg KiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNv cnJlY3QgcG9zaXRpb24KQEAgLTk5Myw2ICsxMTMwLDEyIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJl KFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIENPTU1JVCBQUkVQQVJFRCBvZiBhIHBy ZXZpb3VzbHkgUFJFUEFSRUQgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IHdlIGRvbid0 IG5lZWQgdG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgaW4gYQor ICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhhdmUgYWxyZWFkeSB3 YWl0ZWQgZm9yIHRoZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0cmVh bV9wcmVwYXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3BlcmF0aW9ucyBpbiB0 aGF0IHRyYW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIsIHNvIG5vCisg KiBjb25jdXJyZW50IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBvciB0cmFuc2FjdGlv biBkZXBlbmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9jb21t aXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTAzNiw2ICsxMTc5LDEyIEBAIGFwcGx5X2hh bmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgUk9M TEJBQ0sgUFJFUEFSRUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgorICoK KyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rp b24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSW4gdGhhdCBj YXNlLCB3ZSBoYXZlIGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICogdG8gZmluaXNo IGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFsbCB0 aGUKKyAqIG9wZXJhdGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGluIHRo ZSBzdWJzY3JpYmVyLCBzbyBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY2F1c2Ug ZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2 b2lkCiBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTA4 OSwxNSArMTIzOCwxMyBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5m byBzKQogCiAvKgogICogSGFuZGxlIFNUUkVBTSBQUkVQQVJFLgotICoKLSAqIExvZ2ljIGlzIGlu IHR3byBwYXJ0czoKLSAqIDEuIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucwotICog Mi4gTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQKICAqLwogc3RhdGljIHZvaWQKIGFw cGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcFBy ZXBhcmVkVHhuRGF0YSBwcmVwYXJlX2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0cmVhbWVk X3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTExMywyNCArMTI2MCw4MiBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAK LQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9u ICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9u X2FwcGx5X2FjdGlvbihwcmVwYXJlX2RhdGEueGlkLCAmd2luZm8pOwogCi0JLyogUmVwbGF5IGFs bCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJl cGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwlzd2l0Y2ggKGFwcGx5 X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCS8qIE1hcmsg dGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2lu dGVybmFsKCZwcmVwYXJlX2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMg YmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVk IG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9k YXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJ CQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIAotCXBnc3Rh dF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAot CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3JlX2Zs dXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAotCWluX3JlbW90ZV90cmFuc2Fj dGlvbiA9IGZhbHNlOworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCS8q IFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5m by4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHByZXBhcmVfZGF0YS54aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBUaGUgb3Jp Z2luIGNhbiBiZSBhY3RpdmUgb25seSBpbiBvbmUgcHJvY2Vzcy4gU2VlCisJCQkgKiBhcHBseV9o YW5kbGVfc3RyZWFtX2NvbW1pdC4KKwkJCSAqLworCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdp bl9yZXNldCgpOworCisJCQkvKiBTZW5kIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8gdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5m bywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRh dGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29y a2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkg KiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVu Y2llcyBhbmQKKwkJCSAqIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJcGFyYWxsZWxfYXBwbHlfd2Fp dF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9z ZXR1cCgpOworCQkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIod2luZm8sIHByZXBhcmVfZGF0 YS54aWQpOworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJc3RvcmVf Zmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CiAKLQkvKiB1 bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8u ICovCi0Jc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJl cGFyZV9kYXRhLnhpZCk7CisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlwYXJhbGxl bF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CisKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9u IGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBh cmVfZGF0YSk7CisKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlwYXJhbGxl bF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7 CisJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3Qo TXlQYXJhbGxlbFNoYXJlZCwgZmFsc2UpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHBy b2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVhazsKKwor CQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9y ZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVp bmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMo cHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE2OSwyNiArMTM3NCwyNSBAQCBhcHBseV9oYW5k bGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RBUlQgbWVz c2FnZS4KKyAqCisgKiBYWFggV2UgY2FuIGF2b2lkIHNlbmRpbmcgcGFpcnMgb2YgdGhlIFNUQVJU L1NUT1AgbWVzc2FnZXMgdG8gdGhlIHBhcmFsbGVsCisgKiB3b3JrZXIgYmVjYXVzZSB1bmxpa2Ug YXBwbHkgd29ya2VyIGl0IHdpbGwgcHJvY2VzcyBvbmx5IG9uZSB0cmFuc2FjdGlvbiBhdCBhCisg KiB0aW1lLiBIb3dldmVyLCBpdCBpcyBub3QgY2xlYXIgd2hldGhlciBhbnkgb3B0aW1pemF0aW9u IGlzIHdvcnRod2hpbGUKKyAqIGJlY2F1c2UgdGhlc2UgbWVzc2FnZXMgYXJlIHNlbnQgb25seSB3 aGVuIHRoZSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtCisgKiB0aHJlc2hvbGQgaXMgZXhjZWVk ZWQuCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0lu Zm8gcykKIHsKIAlib29sCQlmaXJzdF9zZWdtZW50OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAogCWlmIChpbl9zdHJl YW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNU UkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBv biBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBv biB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGlj aCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhl IG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUg YnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5k IHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkvKiBu b3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlv biAqLwogCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTIwMywzNSArMTQw Nyw4MCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAog CS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2 ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24g b2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250ZXh0LiBX ZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFu eQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQg YXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdlIHdvbid0 IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KKwkgKiBGb3IgdGhlIGZpcnN0IHN0 cmVhbSBzdGFydCwgY2hlY2sgaWYgdGhlcmUgaXMgYW55IGZyZWUgcGFyYWxsZWwgYXBwbHkKKwkg KiB3b3JrZXIgd2UgY2FuIHVzZSB0byBwcm9jZXNzIHRoaXMgdHJhbnNhY3Rpb24sIG90aGVyd2lz ZSB0cnkgdG8gc3RhcnQgYQorCSAqIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCiAJICovCi0J aWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwlpZiAoZmly c3Rfc2VnbWVudCkKKwkJcGFyYWxsZWxfYXBwbHlfc3RhcnRfd29ya2VyKHN0cmVhbV94aWQpOwor CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlk LCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCiAJewotCQlNZW1vcnlDb250ZXh0 IG9sZGN0eDsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JCW9sZGN0eCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkJLyoKKwkJCSAqIFN0YXJ0IGEg dHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUKKwkJ CSAqIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5j IHdvcmtlciBpbgorCQkJICogd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBw cm9jZXNzaW5nIGFsbCB0aGUKKwkJCSAqIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZSB0cmFuc2FjdGlv biBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsCisJCQkgKiB1c2VkIGZvciBzZXJpYWxpemluZyB0 aGUgc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAqLworCQkJYmVnaW5fcmVw bGljYXRpb25fc3RlcCgpOwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQg PSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29y a2VyLT5zdHJlYW1fZmlsZXNldCk7CisJCQkvKgorCQkJICogSW5pdGlhbGl6ZSB0aGUgd29ya2Vy J3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMKKwkJCSAqIHdpbGwgYmUg dXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdAor CQkJICogaW4gYSBwZXJtYW5lbnQgY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkg Zmlyc3QKKwkJCSAqIHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55IHRyYW5zYWN0aW9uIGFuZCB0 aGVuIHVzZSBpdCBmb3IgdGhpcworCQkJICogYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlv bnMuIE5vdywgd2UgY291bGQgY3JlYXRlIGEKKwkJCSAqIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9m IHRoZSB3b3JrZXIgYXMgd2VsbCBidXQgdGhlbiB3ZSB3b24ndCBiZQorCQkJICogc3VyZSB0aGF0 IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCQkJICovCisJCQlpZiAoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCQkJeworCQkJCU1lbW9yeUNvbnRleHQgb2xkY3R4 OwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwotCX0KKwkJCQlvbGRjdHggPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIAotCS8qIG9wZW4gdGhlIHNwb29s IGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8KLQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJCU15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsK KwkJCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKIAot CS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1Ynhh Y3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFjdF9pbmZvX3JlYWQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN0eCk7CisJCQl9CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JV Tk5JTkcsIE5VTEwpOworCQkJLyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2Fj dGlvbi4gKi8KKwkJCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg c3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CiAKLQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwor CQkJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3Vi eGFjdCBmaWxlLiAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXN1YnhhY3RfaW5mb19y ZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCisJCQllbmRfcmVw bGljYXRpb25fc3RlcCgpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9U T19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXBhcmFsbGVsX2FwcGx5X3NlbmRf ZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFu Z2VzID0gMDsKKworCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhp cyB0cmFuc2FjdGlvbi4gKi8KKwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSB3aW5mbzsKKwkJCWJy ZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQkvKiBObyBzcGVjaWFsIGhh bmRsaW5nIGlzIHJlcXVpcmVkIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwkJCWJyZWFr OworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcGdz dGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKIH0KIAogLyoKQEAgLTEy NDAsNTggKzE0ODksNzggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMp CiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIHsK KwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBs eV9hY3Rpb247CisKIAlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJy bXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikp KTsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFu ZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxl dmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCWFwcGx5 X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZv KTsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFz c2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJewor CQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBDb21taXQgdGhlIHBlci1zdHJl YW0gdHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8qCisJ CQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6 ZQorCQkJICogaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFu c2FjdGlvbi4KKwkJCSAqLworCQkJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAotCWluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQg dHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAK LQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0UmVzZXQoTG9n aWNhbFN0cmVhbWluZ0NvbnRleHQpOworCQkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5z YWN0aW9uICovCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJLyogUmVzZXQg cGVyLXN0cmVhbSBjb250ZXh0ICovCisJCQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVh bWluZ0NvbnRleHQpOworCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5V TEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoK KwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywg cy0+bGVuLCBzLT5kYXRhKTsKKworCQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5nZXMg aW4gdGhlIHN0cmVhbWluZyBjaHVuayIsCisJCQkJIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyk7 CisKKwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisJCQlwZ3N0YXRfcmVwb3J0X2Fj dGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJB TExFTF9BUFBMWToKKwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNB Q1RJT04sIE5VTEwpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7 CisJCQlicmVhazsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwogCi0J cGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVz c2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlv biB3YXMgc3BpbGxlZCB0byBkaXNrLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCitzZXJpYWxpemVfc3RyZWFtX2Fib3J0KFRyYW5zYWN0 aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsK LQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikK LQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBT VFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQs ICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdz IGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0aGUg ZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQpCi0J ewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQdHIp OwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQp OwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTMxNSw4ICsxNTg0LDYgQEAgYXBwbHlfaGFuZGxl X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJCWNo YXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1 YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9yZXBs aWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCk7CkBAIC0xMzQxLDcgKzE2MDgsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRfcmVw bGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQlyZXNl dF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC0xMzY0 LDYgKzE2MzAsOTYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJ CWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwog CX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZS4KKyAqLworc3RhdGlj IHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQoreworCVRyYW5z YWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCUxvZ2ljYWxSZXBTdHJlYW1B Ym9ydERhdGEgYWJvcnRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJ VHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9W SU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdp dGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyogV2UgcmVjZWl2ZSBhYm9ydCBpbmZvcm1hdGlv biBvbmx5IHdoZW4gd2UgY2FuIGFwcGx5IGluIHBhcmFsbGVsLiAqLworCWxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fYWJvcnQocywgJmFib3J0X2RhdGEsCisJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3Jr ZXItPnBhcmFsbGVsX2FwcGx5KTsKKworCXhpZCA9IGFib3J0X2RhdGEueGlkOworCXN1YnhpZCA9 IGFib3J0X2RhdGEuc3VieGlkOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdWJ4 aWQsIGFib3J0X2RhdGEuYWJvcnRfbHNuKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2Fj dGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24p CisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisKKwkJCS8qCisJCQkgKiBXZSBh cmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVl bgorCQkJICogc2VyaWFsaXplZCB0byBmaWxlLgorCQkJICovCisJCQlzZXJpYWxpemVfc3RyZWFt X2Fib3J0KHhpZCwgc3VieGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NF TkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlpZiAoc3VieGlkID09IHhp ZCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFRoZSBvcmlnaW4gY2FuIGJlIGFjdGl2ZSBvbmx5IGlu IG9uZSBwcm9jZXNzLiBTZWUKKwkJCQkgKiBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdC4KKwkJ CQkgKi8KKwkJCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisJCQl9CisKKwkJ CS8qIFNlbmQgU1RSRUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4gKi8KKwkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRh KTsKKworCQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhp cyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBhdm9p ZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAqIGRl YWRsb2Nrcy4KKwkJCSAqLworCQkJcGFyYWxsZWxfYXBwbHlfd2FpdF9mb3JfeGFjdF9maW5pc2go d2luZm8pOworCisJCQlpZiAoc3VieGlkID09IHhpZCkKKwkJCXsKKwkJCQlwYXJhbGxlbF9hcHBs eV9yZXBsb3JpZ2luX3NldHVwKCk7CisJCQkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIod2lu Zm8sIHhpZCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBTZXQgaW5fcGFy YWxsZWxfYXBwbHlfeGFjdCB0byB0cnVlIGFnYWluIGFzIHdlIG9ubHkgYWJvcnRlZAorCQkJCSAq IHRoZSBzdWJ0cmFuc2FjdGlvbiBhbmQgdGhlIHRvcCB0cmFuc2FjdGlvbiBpcyBzdGlsbCBpbgor CQkJCSAqIHByb2dyZXNzLgorCQkJCSAqLworCQkJCXBhcmFsbGVsX2FwcGx5X3NldF9pbl94YWN0 KHdpbmZvLT5zaGFyZWQsIHRydWUpOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19Q QVJBTExFTF9BUFBMWToKKwkJCXBhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydCgmYWJvcnRfZGF0 YSk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rp b24gZmluaXNoIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQo ZmFsc2UpOworCQkJYnJlYWs7CisJfQogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KCk7CiB9CkBAIC0xNDk1LDYgKzE4NTEsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChT dHJpbmdJbmZvIHMpCiB7CiAJVHJhbnNhY3Rpb25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERh dGEgY29tbWl0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5z QXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTUwNCwxNCArMTg2Miw3OSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVh bV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVk IGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2FjdGlv biA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOwogCi0JYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCXN3aXRjaCAo YXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JYXBw bHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCQkJLyoKKwkJCSAqIFRo ZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwg dGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRf bWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxl X2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVz IHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJYnJlYWs7 CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5m byk7CisKKwkJCS8qCisJCQkgKiBXZSBuZWVkIHRvIHJlc2V0IHRoZSByZXBsaWNhdGlvbiBvcmln aW4gYmVmb3JlIHNlbmRpbmcgdGhlCisJCQkgKiBjb21taXQgbWVzc2FnZSBhbmQgc2V0IGl0IHVw IGFnYWluIGFmdGVyIGNvbmZpcm1pbmcgdGhhdAorCQkJICogcGFyYWxsZWwgd29ya2VyIGhhcyBw cm9jZXNzZWQgdGhlIG1lc3NhZ2UuIFRoaXMgaXMgcmVxdWlyZWQKKwkJCSAqIGJlY2F1c2Ugb3Jp Z2luIGNhbiBiZSBhY3RpdmUgb25seSBpbiBvbmUgcHJvY2VzcyBhdC1hLXRpbWUuCisJCQkgKi8K KwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQoKTsKKworCQkJLyogU2VuZCBTVFJF QU0gQ09NTUlUIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwkJCXBh cmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoK KwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3Nh cnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMg ZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAqIGRlYWRsb2Nrcy4KKwkJ CSAqLworCQkJcGFyYWxsZWxfYXBwbHlfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCQkJ cGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOwogCi0JLyogdW5saW5rIHRoZSBmaWxl cyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvICovCi0Jc3RyZWFtX2Ns ZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKwkJCXBnc3RhdF9y ZXBvcnRfc3RhdChmYWxzZSk7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS5l bmRfbHNuKTsKKwkJCXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCQlwYXJhbGxlbF9hcHBs eV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsKKworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlv biBpcyBlaXRoZXIgbm9uLWVtcHR5IG9yIHNraXBwZWQsIHNvIHdlIGNsZWFyIHRoZQorCQkJICog c3Vic2tpcGxzbi4KKwkJCSAqLworCQkJY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1p dF9kYXRhLmNvbW1pdF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9B UFBMWToKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKKworCQkJYXBwbHlf aGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQlwYXJhbGxlbF9hcHBs eV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCQlz dWJ4YWN0bGlzdCA9IE5JTDsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3QoTXlQYXJh bGxlbFNoYXJlZCwgZmFsc2UpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3Np bmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZh dWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KIAogCS8qIFByb2Nlc3MgYW55 IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKQEAgLTE1NTUsNiArMTk3 OCwxMyBAQCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRh ICpjb21taXRfZGF0YSkKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBj b21taXRfZGF0YS0+Y29tbWl0dGltZTsKIAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCQlpZiAoSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxv Y2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKwogCQlwZ3N0 YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9k YXRhLT5lbmRfbHNuKTsKQEAgLTI0OTIsNyArMjkyMiw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0 ZShTdHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNz YWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChT dHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0 ZShzKTsKQEAgLTI2NjEsNiArMzA5MSwxMCBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVj UHRyIHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBTa2lw IGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93 b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBj b250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAgLTI3 MjUsNiArMzE1OSw3IEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2Vp dmVkKQogCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CiAJZXJy Y2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCWVycm9yX2NvbnRleHRf c3RhY2sgPSAmZXJyY2FsbGJhY2s7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9y X2NvbnRleHRfc3RhY2s7CiAKIAkvKiBUaGlzIG91dGVyIGxvb3AgaXRlcmF0ZXMgb25jZSBwZXIg d2FpdC4gKi8KIAlmb3IgKDs7KQpAQCAtMjkzOSw2ICszMzc0LDcgQEAgTG9naWNhbFJlcEFwcGx5 TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAKIAkvKiBQb3AgdGhlIGVycm9yIGNvbnRl eHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7 CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkv KiBBbGwgZG9uZSAqLwogCXdhbHJjdl9lbmRzdHJlYW1pbmcoTG9nUmVwV29ya2VyV2FsUmN2Q29u biwgJnRsaSk7CkBAIC0zMDM5LDcgKzM0NzUsNyBAQCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIg cmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpCiAvKgogICogUmVyZWFkIHN1 YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRlZC4gTW9zdCBjaGFuZ2VzIHdpbGwgYmUgZXhpdC4KICAq Lwotc3RhdGljIHZvaWQKK3ZvaWQKIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIHsK IAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKQEAgLTMwNjgsMjEgKzM1MDQsMzIgQEAgbWF5YmVfcmVy ZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCSAqLwogCWlmICghbmV3c3ViKQogCXsKLQkJZXJlcG9y dChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCAiCi0JCQkJCQkic3RvcCBiZWNhdXNlIHRoZSBzdWJz Y3JpcHRpb24gd2FzIHJlbW92ZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7Ci0K KwkJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQkJZXJlcG9ydChMT0csCisJCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgorCQkJCQkJCSJzdG9wIGJlY2F1c2UgdGhlIHN1YnNj cmlwdGlvbiB3YXMgcmVtb3ZlZCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJ CWVsc2UKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9u IGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsICIKKwkJCQkJCQkic3Rv cCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQiLAorCQkJCQkJCU15U3Vic2Ny aXB0aW9uLT5uYW1lKSkpOwogCQlwcm9jX2V4aXQoMCk7CiAJfQogCiAJLyogRXhpdCBpZiB0aGUg c3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZC4gKi8KIAlpZiAoIW5ld3N1Yi0+ZW5hYmxlZCkKIAl7 Ci0JCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkg d29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgotCQkJCQkJInN0b3AgYmVjYXVz ZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKKwkJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQkJZXJlcG9ydChM T0csCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29y a2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgorCQkJCQkJCSJzdG9wIGJlY2F1c2Ug dGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5u YW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygibG9naWNhbCBy ZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCAiCisJ CQkJCQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCisJCQkJ CQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAkJcHJvY19leGl0KDApOwogCX0KQEAgLTMw OTUsNyArMzU0Miw5IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAogCS8qCiAJ ICogRXhpdCBpZiBhbnkgcGFyYW1ldGVyIHRoYXQgYWZmZWN0cyB0aGUgcmVtb3RlIGNvbm5lY3Rp b24gd2FzIGNoYW5nZWQuCi0JICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBuZXcgd29ya2Vy LgorCSAqIFRoZSBsYXVuY2hlciB3aWxsIHN0YXJ0IGEgbmV3IHdvcmtlciwgYnV0IG5vdGUgdGhh dCB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgbWF5IG9yIG1heSBub3QgcmVzdGFydCBk ZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIHRoZSBzdHJlYW1pbmcKKwkgKiBvcHRpb24gYW5kIHdo ZXRoZXIgdGhlcmUgd2lsbCBiZSBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KIAkgKi8KIAlpZiAo c3RyY21wKG5ld3N1Yi0+Y29ubmluZm8sIE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbykgIT0gMCB8 fAogCQlzdHJjbXAobmV3c3ViLT5uYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkgIT0gMCB8fApA QCAtMzEwNiw5ICszNTU1LDE0IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAkJ bmV3c3ViLT5vd25lciAhPSBNeVN1YnNjcmlwdGlvbi0+b3duZXIgfHwKIAkJIWVxdWFsKG5ld3N1 Yi0+cHVibGljYXRpb25zLCBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zKSkKIAl7Ci0JCWVy ZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFyYW1l dGVyIGNoYW5nZSIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJaWYgKGFtX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coImxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCisJCQkJCQkJ TXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQko ZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJ CQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCiAJCXByb2NfZXhpdCgwKTsKIAl9CkBAIC0z NTk0LDM3ICs0MDQ4LDE2IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9z KQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3Jr ZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBDb21tb24gaW5pdGlhbGl6YXRpb24gZm9yIGxlYWRl ciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBJbml0aWFs aXplIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uLCBpbi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBu ZWNlc3NhcnkKKyAqIGNvbmZpZyBvcHRpb25zLgorICovCiB2b2lkCi1BcHBseVdvcmtlck1haW4o RGF0dW0gbWFpbl9hcmcpCitJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCkKIHsKLQlpbnQJCQl3 b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwogCU1lbW9yeUNvbnRleHQgb2xk Y3R4OwotCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOwotCVhMb2dSZWNQdHIJb3JpZ2lu X3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0JY2hhcgkgICAqbXlzbG90bmFtZSA9IE5V TEw7Ci0JV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOwotCWludAkJCXNlcnZlcl92ZXJzaW9u OwotCi0JLyogQXR0YWNoIHRvIHNsb3QgKi8KLQlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29y a2VyX3Nsb3QpOwotCi0JLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCi0JcHFzaWduYWwoU0lH SFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdURVJNLCBk aWUpOwotCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwotCi0JLyoKLQkgKiBXZSBk b24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHBy b2Nlc3MsIGJ1dAotCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNz UmVzb3VyY2VPd25lciBoZXJlLgotCSAqLwotCi0JLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNh bmlzaCB2YWx1ZSAqLwotCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxv Z2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5y ZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCi0JLyogTG9hZCB0aGUgbGlicHEt c3BlY2lmaWMgZnVuY3Rpb25zICovCi0JbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFs c2UpOwogCiAJLyogUnVuIGFzIHJlcGxpY2Egc2Vzc2lvbiByZXBsaWNhdGlvbiByb2xlLiAqLwog CVNldENvbmZpZ09wdGlvbigic2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlIiwgInJlcGxpY2EiLApA QCAtMzY1MSwxMCArNDA4NCwxNiBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJ TXlTdWJzY3JpcHRpb24gPSBHZXRTdWJzY3JpcHRpb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgdHJ1ZSk7CiAJaWYgKCFNeVN1YnNjcmlwdGlvbikKIAl7Ci0JCWVyZXBvcnQoTE9HLAotCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRp b24gJXUgd2lsbCBub3QgIgotCQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3 YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCi0JCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkKSkpOworCQlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCQllcmVwb3J0KExP RywKKwkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgZm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCAiCisJCQkJCQkJInN0YXJ0IGJlY2F1c2Ug dGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQkJTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChMT0csCisJCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRp b24gJXUgd2lsbCBub3QgIgorCQkJCQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24g d2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQpKSk7CiAJCXByb2NfZXhpdCgwKTsKIAl9CiAKQEAgLTM2NjMsMTAgKzQxMDIsMTYgQEAg QXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJaWYgKCFNeVN1YnNjcmlwdGlvbi0+ ZW5hYmxlZCkKIAl7Ci0JCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgbm90ICIKLQkJ CQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIGR1cmluZyBz dGFydHVwIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQlpZiAoYW1fcGFyYWxs ZWxfYXBwbHlfd29ya2VyKCkpCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIgd2lsbCBub3QgIgorCQkJCQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2Fz IGRpc2FibGVkIGR1cmluZyBzdGFydHVwIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkp KTsKKwkJZWxzZQorCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgbm90ICIKKwkJ CQkJCQkic3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCBkdXJpbmcg c3RhcnR1cCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAkJcHJvY19leGl0 KDApOwogCX0KQEAgLTM2ODQsMTIgKzQxMjksNTAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1h aW5fYXJnKQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9u IHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIsIHRh YmxlIFwiJXNcIiBoYXMgc3RhcnRlZCIsCiAJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwgZ2V0 X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOworCWVsc2UgaWYgKGFtX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiBoYXMgc3RhcnRlZCIsCisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAllbHNl CiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkg d29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKIAkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lKSkpOwogCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CisK Ky8qIExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBvaW50ICovCit2b2lk CitBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJaW50CQkJd29ya2VyX3Nsb3Qg PSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVO XTsKKwlYTG9nUmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9nUmVjUHRyOworCWNo YXIJICAgKm15c2xvdG5hbWUgPSBOVUxMOworCVdhbFJjdlN0cmVhbU9wdGlvbnMgb3B0aW9uczsK KwlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKKworCS8qIEF0dGFjaCB0byBzbG90ICovCisJbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5k bGluZyAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7 CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25h bHMoKTsKKworCS8qCisJICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55IFJlc291cmNlT3du ZXIgaW4gYSB3YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKKwkgKiBpZiB3ZSBkaWQsIHdlIGNvdWxk IGNhbGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KKwkgKi8KKworCS8qIElu aXRpYWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KKwlNeUxvZ2ljYWxSZXBXb3JrZXIt Pmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJ CU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsK KworCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLworCWxvYWRfZmlsZSgi bGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKKworCUluaXRpYWxpemVBcHBseVdvcmtlcigpOwog CiAJLyogQ29ubmVjdCB0byB0aGUgb3JpZ2luIGFuZCBzdGFydCB0aGUgcmVwbGljYXRpb24uICov CiAJZWxvZyhERUJVRzEsICJjb25uZWN0aW5nIHRvIHB1Ymxpc2hlciB1c2luZyBjb25uZWN0aW9u IHN0cmluZyBcIiVzXCIiLApAQCAtMzcxMiw3ICs0MTk1LDcgQEAgQXBwbHlXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKQogCX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1haW4gYXBwbHkgd29y a2VyICovCisJCS8qIFRoaXMgaXMgbGVhZGVyIGFwcGx5IHdvcmtlciAqLwogCQlSZXBPcmlnaW5J ZCBvcmlnaW5pZDsKIAkJVGltZUxpbmVJRAlzdGFydHBvaW50VExJOwogCQljaGFyCSAgICplcnI7 CkBAIC0zNzc3LDEzICs0MjYwLDM2IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAogCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldh bFJjdkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2Vy dmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxf VkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BS T1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8g TE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RP X1ZFUlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVz ID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwu YmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwu c3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKworCS8qCisJICogQXNzaWduIHRo ZSBhcHByb3ByaWF0ZSBvcHRpb24gdmFsdWUgZm9yIHN0cmVhbWluZyBvcHRpb24gYWNjb3JkaW5n IHRvCisJICogdGhlICdzdHJlYW1pbmcnIG1vZGUgYW5kIHRoZSBwdWJsaXNoZXIncyBhYmlsaXR5 IHRvIHN1cHBvcnQgdGhhdCBtb2RlLgorCSAqLworCWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAw MDAgJiYKKwkJTXlTdWJzY3JpcHRpb24tPnN0cmVhbSA9PSBTVUJTVFJFQU1fUEFSQUxMRUwpCisJ eworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9IHBzdHJkdXAoInBhcmFs bGVsIik7CisJCU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSB0cnVlOworCX0K KwllbHNlIGlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgJiYKKwkJCSBNeVN1YnNjcmlwdGlv bi0+c3RyZWFtICE9IFNVQlNUUkVBTV9PRkYpCisJeworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwu c3RyZWFtaW5nX3N0ciA9IHBzdHJkdXAoIm9uIik7CisJCU15TG9naWNhbFJlcFdvcmtlci0+cGFy YWxsZWxfYXBwbHkgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dp Y2FsLnN0cmVhbWluZ19zdHIgPSBOVUxMOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVs X2FwcGx5ID0gZmFsc2U7CisJfQorCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnR3b3BoYXNlID0g ZmFsc2U7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLm9yaWdpbiA9IHBzdHJkdXAoTXlTdWJzY3Jp cHRpb24tPm9yaWdpbik7CiAKQEAgLTM4ODEsNiArNDM4NywxNSBAQCBJc0xvZ2ljYWxXb3JrZXIo dm9pZCkKIH0KIAogLyoKKyAqIElzIGN1cnJlbnQgcHJvY2VzcyBhIGxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgYXBwbHkgd29ya2VyPworICovCitib29sCitJc0xvZ2ljYWxQYXJhbGxlbEFw cGx5V29ya2VyKHZvaWQpCit7CisJcmV0dXJuIElzTG9naWNhbFdvcmtlcigpICYmIGFtX3BhcmFs bGVsX2FwcGx5X3dvcmtlcigpOworfQorCisvKgogICogU3RhcnQgc2tpcHBpbmcgY2hhbmdlcyBv ZiB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlIGdpdmVuIExTTiBtYXRjaGVzIHRoZQogICogTFNOIHNw ZWNpZmllZCBieSBzdWJzY3JpcHRpb24ncyBza2lwbHNuLgogICovCkBAIC0zOTQyLDcgKzQ0NTcs NyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQog CVhMb2dSZWNQdHIJbXlza2lwbHNuID0gTXlTdWJzY3JpcHRpb24tPnNraXBsc247CiAJYm9vbAkJ c3RhcnRlZF90eCA9IGZhbHNlOwogCi0JaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15 c2tpcGxzbikpKQorCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBsc24pKSB8 fCBhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKIAkJcmV0dXJuOwogCiAJaWYgKCFJc1RyYW5z YWN0aW9uU3RhdGUoKSkKQEAgLTQwMTQsNyArNDUyOSw3IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9z a2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiB9CiAKIC8qIEVycm9yIGNhbGxiYWNrIHRv IGdpdmUgbW9yZSBjb250ZXh0IGluZm8gYWJvdXQgdGhlIGNoYW5nZSBiZWluZyBhcHBsaWVkICov Ci1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogewog CUFwcGx5RXJyb3JDYWxsYmFja0FyZyAqZXJyYXJnID0gJmFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZzsKQEAgLTQwNDIsMjMgKzQ1NTcsNDcgQEAgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KQogCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCiAJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhl cnJhcmctPmZpbmlzaF9sc24pKTsKIAl9Ci0JZWxzZSBpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVt IDwgMCkKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRp b24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRp b24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQg YXQgJVgvJVgiLAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9naWNhbHJl cF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVt b3RlcmVsLm5zcG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAot CQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJn LT5maW5pc2hfbHNuKSk7CiAJZWxzZQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIl c1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVz XCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmct Pm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29t bWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3Rl cmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCi0JCQkJICAgZXJyYXJnLT5yZW1v dGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwl7 CisJCWlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAwKQorCQl7CisJCQlpZiAoWExvZ1JlY1B0 cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInByb2Nlc3Np bmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3Nh Z2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIg aW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJ CSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBl cnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVt b3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQpOworCQkJZWxzZQor CQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9y aWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRh cmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVY LyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVw X21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1l LAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdT KGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhMb2dSZWNQ dHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNz YWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wi IGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmln aW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFu ZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBl cnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVt b3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmct PnJlbW90ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3Rl IGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBc IiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwi JXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJy YXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFy Zy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJ CQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkg ICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5m aW5pc2hfbHNuKSk7CisJCX0KKwl9CiB9CiAKIC8qIFNldCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlv biBvZiBhcHBseSBlcnJvciBjYWxsYmFjayAqLwpAQCAtNDA3OCwzICs0NjE3LDM2IEBAIHJlc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy Zy5yZW1vdGVfYXR0bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChJbnZh bGlkVHJhbnNhY3Rpb25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisvKgorICogUmV0dXJu IHRoZSBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLiAqd2luZm8gaXMg YXNzaWduZWQgdG8KKyAqIHRoZSBkZXN0aW5hdGlvbiBwYXJhbGxlbCB3b3JrZXIgaW5mbyAoaWYg dGhlIGFjdGlvbiBpcworICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwpLCBvdGhlcndp c2UgKndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCisgKi8KK3N0YXRpYyBUcmFuc0FwcGx5QWN0aW9u CitnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQoreworCSp3aW5mbyA9IE5VTEw7CisKKwlpZiAoYW1f cGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJeworCQlyZXR1cm4gVFJBTlNfUEFSQUxMRUxfQVBQ TFk7CisJfQorCWVsc2UgaWYgKGluX3JlbW90ZV90cmFuc2FjdGlvbikKKwl7CisJCXJldHVybiBU UkFOU19MRUFERVJfQVBQTFk7CisJfQorCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vz c2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIg YW5kIGlmIHNvLCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgorCSAqLworCWVsc2Ug aWYgKCgqd2luZm8gPSBwYXJhbGxlbF9hcHBseV9maW5kX3dvcmtlcih4aWQpKSkKKwl7CisJCXJl dHVybiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDsKKwl9CisJZWxzZQorCXsKKwkJcmV0 dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggMmVjYWE1Yi4uYzNhY2NmMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0zNjksNyArMzY5LDcg QEAgcGFyc2Vfb3V0cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpk YXRhKQogCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkp OwogCQkJc3RyZWFtaW5nX2dpdmVuID0gdHJ1ZTsKIAotCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVm R2V0Qm9vbGVhbihkZWZlbCk7CisJCQlkYXRhLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdN b2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29f cGhhc2UiKSA9PSAwKQogCQl7CkBAIC00NjEsMTMgKzQ2MSwyMCBAQCBwZ291dHB1dF9zdGFydHVw KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAog CQkgKiB3ZSBvbmx5IGFsbG93IGl0IHdpdGggc3VmZmljaWVudCB2ZXJzaW9uIG9mIHRoZSBwcm90 b2NvbCwgYW5kIHdoZW4KIAkJICogdGhlIG91dHB1dCBwbHVnaW4gc3VwcG9ydHMgaXQuCiAJCSAq LwotCQlpZiAoIWRhdGEtPnN0cmVhbWluZykKKwkJaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBTVUJT VFJFQU1fT0ZGKQogCQkJY3R4LT5zdHJlYW1pbmcgPSBmYWxzZTsKLQkJZWxzZSBpZiAoZGF0YS0+ cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQor CQllbHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX09OICYmCisJCQkJIGRhdGEt PnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkK IAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAogCQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJvdG9fdmVyc2lvbj0lZCBkb2Vz IG5vdCBzdXBwb3J0IHN0cmVhbWluZywgbmVlZCAlZCBvciBoaWdoZXIiLAogCQkJCQkJCWRhdGEt PnByb3RvY29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKSkp OworCQllbHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX1BBUkFMTEVMICYmCisJ CQkJIGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJB TExFTF9WRVJTSU9OX05VTSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJv dG9fdmVyc2lvbj0lZCBkb2VzIG5vdCBzdXBwb3J0IHBhcmFsbGVsIHN0cmVhbWluZywgbmVlZCAl ZCBvciBoaWdoZXIiLAorCQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNpb24sIExPR0lDQUxSRVBf UFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKSkpOwogCQllbHNlIGlmICghY3R4LT5z dHJlYW1pbmcpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTUxMyw3ICs1MjAsNyBAQCBwZ291dHB1dF9zdGFydHVw KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAog CQkgKiBEaXNhYmxlIHRoZSBzdHJlYW1pbmcgYW5kIHByZXBhcmVkIHRyYW5zYWN0aW9ucyBkdXJp bmcgdGhlIHNsb3QKIAkJICogaW5pdGlhbGl6YXRpb24gbW9kZS4KIAkJICovCi0JCWN0eC0+c3Ry ZWFtaW5nID0gZmFsc2U7CisJCWN0eC0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAkJY3R4 LT50d29waGFzZSA9IGZhbHNlOwogCX0KIH0KQEAgLTE4MzksNiArMTg0Niw4IEBAIHBnb3V0cHV0 X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkg IFhMb2dSZWNQdHIgYWJvcnRfbHNuKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlQ R091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9w cml2YXRlOworCWJvb2wJCXdyaXRlX2Fib3J0X2luZm8gPSAoZGF0YS0+c3RyZWFtaW5nID09IFNV QlNUUkVBTV9QQVJBTExFTCk7CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91 dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAtMTg1Miw3ICsxODYx LDkgQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVhbWVkKHRvcHR4bikpOwogCiAJT3V0cHV0UGx1 Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJv cnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9z dHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLAor CQkJCQkJCQkgIHR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUsIHdyaXRlX2Fib3J0X2luZm8pOwor CiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2Fj aGUodG9wdHhuLT54aWQsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpp bmRleCA3NzY3NjU3Li43YzAwOWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5j CkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L2lwYy5oIgpAQCAtNjU3LDYgKzY1OCw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJ R05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRF WFQpKQogCQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQ cm9jU2lnbmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCisJCUhhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJy dXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK aW5kZXggYTlhMTg1MS4uZjFhYTc5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMzM3OSw2ICszMzc5 LDkgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAogCWlmIChMb2dNZW1vcnlDb250ZXh0UGVu ZGluZykKIAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKKworCWlmIChQYXJh bGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcpCisJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcygp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDky ZjI0YTYuLmRjZmY1OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMK QEAgLTIzMCw2ICsyMzAsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfYWN0aXZpdHkoV2FpdEV2ZW50QWN0 aXZpdHkgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTjoKIAkJCWV2 ZW50X25hbWUgPSAiTG9naWNhbExhdW5jaGVyTWFpbiI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlU X0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTjoKKwkJCWV2ZW50X25hbWUgPSAiTG9n aWNhbFBhcmFsbGVsQXBwbHlNYWluIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfUkVD T1ZFUllfV0FMX1NUUkVBTToKIAkJCWV2ZW50X25hbWUgPSAiUmVjb3ZlcnlXYWxTdHJlYW0iOwog CQkJYnJlYWs7CkBAIC0zODgsNiArMzkxLDkgQEAgcGdzdGF0X2dldF93YWl0X2lwYyhXYWl0RXZl bnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJUOgog CQkJZXZlbnRfbmFtZSA9ICJIYXNoR3Jvd0J1Y2tldHNSZWluc2VydCI7CiAJCQlicmVhazsKKwkJ Y2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFOgorCQkJ ZXZlbnRfbmFtZSA9ICJMb2dpY2FsUGFyYWxsZWxBcHBseVN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFr OwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1lID0g IkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMKaW5kZXggMDVhYjA4Ny4uZjNkZTRmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMKQEAgLTI5NjQsNiArMjk2NCwxOCBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1l c0ludFtdID0KIAl9LAogCiAJeworCQl7Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24iLAorCQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlNDUklCRVJT LAorCQkJZ2V0dGV4dF9ub29wKCJNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzIHBlciBzdWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9LAorCQkmbWF4X3BhcmFsbGVs X2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMiwgMCwgTUFYX0JBQ0tFTkRTLAor CQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdD X1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50 IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0 aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl CmluZGV4IDg2OGQyMWMuLjRkMDFjYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM2MCw2ICszNjAsNyBAQAogI21heF9sb2dpY2FsX3Jl cGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3Nlcwog CQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3Jr ZXJzCisjbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0 YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKIAogCiAjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBiZDliMDY2Li4wMWIyYjYwIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKQEAgLTQ0ODEsNyArNDQ4MSw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkK IAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVhbSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90 ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ2 MTgsOCArNDYxOCwxMCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1 YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJiaW5hcnks ICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGJpbmFyeSA9IHRy dWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiZiIpICE9IDApCisJaWYg KHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9uIik7CisJZWxzZSBpZiAoc3RyY21wKHN1Ymlu Zm8tPnN1YnN0cmVhbSwgInAiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg Iiwgc3RyZWFtaW5nID0gcGFyYWxsZWwiKTsKIAogCWlmIChzdHJjbXAoc3ViaW5mby0+c3VidHdv cGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5oCmluZGV4IDdiOTg3MTQuLjAxNmFmYmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaApAQCAtODAsNyArODAsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2 MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwog CWJvb2wJCXN1YmJpbmFyeTsJCS8qIFRydWUgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyB0aGUK IAkJCQkJCQkJICogcHVibGlzaGVyIHRvIHNlbmQgZGF0YSBpbiBiaW5hcnkgKi8KIAotCWJvb2wJ CXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hh cgkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gU2VlCisJ CQkJCQkJCSAqIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdvcGhh c2VzdGF0ZTsJLyogU3RyZWFtIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTI0LDcg KzEyNSw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7CQkv KiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJYmlu YXJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4KIAkJ CQkJCQkJICogYmluYXJ5IGZvcm1hdCAqLwotCWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJl YW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkvKiBB bGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUg U1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxs b3cgc3RyZWFtaW5nIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxlb25l cnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkg KiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMzcsNiArMTM5 LDIxIEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJCQkJCQkgKiBzcGVjaWZpZWQg b3JpZ2luICovCiB9IFN1YnNjcmlwdGlvbjsKIAorLyogRGlzYWxsb3cgc3RyZWFtaW5nIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKyNkZWZpbmUgU1VCU1RSRUFNX09GRiAnZicKKworLyoK KyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0ZW4gdG8gYSB0 ZW1wb3JhcnkgZmlsZSBhbmQKKyAqIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkIG9uIHVwc3RyZWFtLgorICovCisjZGVmaW5lIFNVQlNUUkVBTV9PTiAndCcK KworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxpZWQg aW1tZWRpYXRlbHkgdmlhIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLworI2RlZmlu ZSBTVUJTVFJFQU1fUEFSQUxMRUwgJ3AnCisKIGV4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1YnNj cmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gdm9pZCBGcmVlU3Vi c2NyaXB0aW9uKFN1YnNjcmlwdGlvbiAqc3ViKTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJzY3Jp cHRpb24oT2lkIHN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJl bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5kZXggNTZkMmJiNi4uZjZiYTVm ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKQEAgLTE1NCw2ICsxNTQsNyBAQCBleHRlcm4gTGlzdCAq ZGVmR2V0UXVhbGlmaWVkTmFtZShEZWZFbGVtICpkZWYpOwogZXh0ZXJuIFR5cGVOYW1lICpkZWZH ZXRUeXBlTmFtZShEZWZFbGVtICpkZWYpOwogZXh0ZXJuIGludAlkZWZHZXRUeXBlTGVuZ3RoKERl ZkVsZW0gKmRlZik7CiBleHRlcm4gTGlzdCAqZGVmR2V0U3RyaW5nTGlzdChEZWZFbGVtICpkZWYp OworZXh0ZXJuIGNoYXIgZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpOwogZXh0ZXJu IHZvaWQgZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oRGVmRWxlbSAqZGVmZWwsIFBhcnNlU3RhdGUg KnBzdGF0ZSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CiAKICNlbmRpZgkJCQkJCQkvKiBERUZS RU1fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAppbmRleCBm MWUyODIxLi5kNTEzZWY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FsbGF1bmNoZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNo ZXIuaApAQCAtMTQsNiArMTQsNyBAQAogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zeW5j X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3Bh cmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQgQXBw bHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1haW4o RGF0dW0gbWFpbl9hcmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRl eCA3ZWFhNGM5Li4xZGE3YjAxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aApAQCAtMzIsMTIgKzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9W RVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIHdpdGgKICAqIHN1cHBv cnQgZm9yIHR3by1waGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHByZXBhcmUgdGltZSkuIEludHJv ZHVjZWQgaW4gUEcxNS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9W RVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uCisgKiB3aGVyZSB3ZSBz dXBwb3J0IGFwcGx5aW5nIGxhcmdlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwu CisgKiBJbnRyb2R1Y2VkIGluIFBHMTYuCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19N SU5fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNIDEK ICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gMgogI2RlZmluZSBM T0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMKLSNkZWZpbmUgTE9HSUNBTFJF UF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9O X05VTQorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05V TSA0CisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBf UFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNCiAKIC8qCiAgKiBMb2dpY2FsIG1lc3Nh Z2UgdHlwZXMKQEAgLTE3NSw2ICsxODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJv bGxiYWNrUHJlcGFyZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2FsUmVw Um9sbGJhY2tQcmVwYXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2NvbCBp bmZvcm1hdGlvbiBmb3Igc3RyZWFtIGFib3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2Fs UmVwU3RyZWFtQWJvcnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25J ZCBzdWJ4aWQ7CisJWExvZ1JlY1B0cglhYm9ydF9sc247CisJVGltZXN0YW1wVHogYWJvcnRfdGlt ZTsKK30gTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF93cml0ZV9iZWdpbihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKIGV4 dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkg IExvZ2ljYWxSZXBCZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAtMjQ2LDkgKzI2MiwxMyBAQCBl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQs IFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJlcF9y ZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxS ZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRl X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJ CQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJ CQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3Vi eGlkLAorCQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJCQkJICBUaW1l c3RhbXBUeiBhYm9ydF90aW1lLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKTsK K2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwK KwkJCQkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJ CQkJCQkgYm9vbCByZWFkX2Fib3J0X2luZm8pOwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfbWVz c2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBM T0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApp bmRleCBjZDFiNmU4Li5kYzY4Y2Q4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdv cmtlci5oCkBAIC0xMiw4ICsxMiwxNiBAQAogI2lmbmRlZiBMT0dJQ0FMV09SS0VSX0gKICNkZWZp bmUgTE9HSUNBTFdPUktFUl9ICiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworZXh0ZXJuIFBHRExM SU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmc7 CisKIGV4dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CitleHRlcm4g dm9pZCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKIGV4dGVybiBi b29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKK2V4dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVs QXBwbHlXb3JrZXIodm9pZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2Fn ZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdl cyh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0LmgKaW5kZXggMDIwMjc1NS4uM2MzMGRhOCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9wZ291dHB1dC5oCkBAIC0yNiw3ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0 RGF0YQogCUxpc3QJICAgKnB1YmxpY2F0aW9uX25hbWVzOwogCUxpc3QJICAgKnB1YmxpY2F0aW9u czsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsK IAlib29sCQltZXNzYWdlczsKIAlib29sCQl0d29fcGhhc2U7CiAJY2hhcgkgICAqb3JpZ2luOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDAyYjU5YTEuLjE1NDkx MTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2ICsz MDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBU eiBjb21taXRfdGltZTsKIAkJVGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBU eiBhYm9ydF90aW1lOwogCX0JCQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjY0LDkgKzY2NSwxMSBA QCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxk KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSBUcmFuc2Fj dGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuLAogCQkJCQkJCQkJIFhMb2dSZWNQ dHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBS ZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVy biB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCBvbGRlc3RSdW5uaW5nWGlkKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7Citl eHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3Rp bWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiAKIGV4dGVybiB2b2lkIFJl b3JkZXJCdWZmZXJTZXRCYXNlU25hcHNob3QoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXggOTMzOWYyOS4u MGM4YmJkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCkBAIC0xODIsNyAr MTgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJCXVpbnQzMgkJcHJvdG9fdmVyc2lvbjsJLyogTG9n aWNhbCBwcm90b2NvbCB2ZXJzaW9uICovCiAJCQlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsJ LyogU3RyaW5nIGxpc3Qgb2YgcHVibGljYXRpb25zICovCiAJCQlib29sCQliaW5hcnk7IC8qIEFz ayBwdWJsaXNoZXIgdG8gdXNlIGJpbmFyeSAqLwotCQkJYm9vbAkJc3RyZWFtaW5nOwkvKiBTdHJl YW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zICovCisJCQljaGFyCSAgICpzdHJlYW1pbmdfc3Ry OwkvKiBTdHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zICovCiAJCQlib29sCQl0d29waGFz ZTsJLyogU3RyZWFtaW5nIG9mIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgYXQKIAkJCQkJCQkJCSAq IHByZXBhcmUgdGltZSAqLwogCQkJY2hhcgkgICAqb3JpZ2luOyAvKiBPbmx5IHB1Ymxpc2ggZGF0 YSBvcmlnaW5hdGluZyBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaAppbmRleCAyYjcxMTRmLi44N2YyZWM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTIgQEAKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZ2RlZnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1 ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmls ZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ht X21xLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fdG9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z cGluLmgiCiAKIApAQCAtNjAsNiArNjQsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdv cmtlcgogCSAqLwogCUZpbGVTZXQgICAgKnN0cmVhbV9maWxlc2V0OwogCisJLyoKKwkgKiBQSUQg b2YgbGVhZGVyIGFwcGx5IHdvcmtlciBpZiB0aGlzIHNsb3QgaXMgdXNlZCBmb3IgYSBwYXJhbGxl bCBhcHBseQorCSAqIHdvcmtlciwgSW52YWxpZFBpZCBvdGhlcndpc2UuCisJICovCisJcGlkX3QJ CWFwcGx5X2xlYWRlcl9waWQ7CisKKwkvKiBJbmRpY2F0ZXMgd2hldGhlciBhcHBseSBjYW4gYmUg cGVyZm9ybWVkIGluIHBhcmFsbGVsLiAqLworCWJvb2wJCXBhcmFsbGVsX2FwcGx5OworCiAJLyog U3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1lc3RhbXBUeiBsYXN0X3NlbmRf dGltZTsKQEAgLTY4LDkgKzgxLDgxIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIK IAlUaW1lc3RhbXBUeiByZXBseV90aW1lOwogfSBMb2dpY2FsUmVwV29ya2VyOwogCisvKiBTdHJ1 Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24g Ki8KK3R5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZworeworCUxvZ2ljYWxSZXBN c2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAqLworCUxvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcmVsOworCisJLyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8KKwlpbnQJCQlyZW1vdGVf YXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCisJVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwor CVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKKwljaGFyCSAgICpvcmlnaW5fbmFtZTsKK30gQXBwbHlF cnJvckNhbGxiYWNrQXJnOworCisvKgorICogU3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0aW9u IGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtl cnMuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKK3sKKwlz bG9ja190CQltdXRleDsKKworCS8qCisJICogRmxhZyB1c2VkIHRvIGVuc3VyZSBjb21taXQgb3Jk ZXJpbmcuCisJICoKKwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgc2V0IGl0IHRv IGZhbHNlIGFmdGVyIGhhbmRsaW5nIHRoZQorCSAqIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5k cyB3aGlsZSB0aGUgYXBwbHkgbGVhZGVyIHdpbGwgd2FpdCBmb3IgaXQgdG8KKwkgKiBiZWNvbWUg ZmFsc2UgYmVmb3JlIHByb2NlZWRpbmcgaW4gdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIChl LmcuCisJICogU1RSRUFNX0NPTU1JVC9TVFJFQU1fQUJPUlQvU1RSRUFNX1BSRVBBUkUpLgorCSAq LworCWJvb2wJCWluX3BhcmFsbGVsX2FwcGx5X3hhY3Q7CisKKwkvKiBJbmZvcm1hdGlvbiBmcm9t IHRoZSBjb3JyZXNwb25kaW5nIExvZ2ljYWxSZXBXb3JrZXIgc2xvdC4gKi8KKwl1aW50MTYJCWxv Z2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisKKwlpbnQJCQlsb2dpY2FscmVwX3dvcmtlcl9z bG90X25vOworfSBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkOworCisvKgorICogSW5mb3JtYXRp b24gd2hpY2ggaXMgdXNlZCB0byBtYW5hZ2UgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlckluZm8KK3sKKwlzaG1fbXFfaGFu ZGxlICptcV9oYW5kbGU7CisKKwkvKgorCSAqIFRoZSBxdWV1ZSB1c2VkIHRvIHRyYW5zZmVyIG1l c3NhZ2VzIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0bworCSAqIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyLgorCSAqLworCXNobV9tcV9oYW5kbGUgKmVycm9yX21xX2hhbmRsZTsKKwor CWRzbV9zZWdtZW50ICpkc21fc2VnOworCisJLyoKKwkgKiBUcnVlIGlmIHRoZSB3b3JrZXIgaXMg YmVpbmcgdXNlZCB0byBwcm9jZXNzIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB0cmFuc2FjdGlvbi4g RmFsc2UgaW5kaWNhdGVzIHRoaXMgd29ya2VyIGlzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgorCSAq LworCWJvb2wJCWluX3VzZTsKKworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsK K30gUGFyYWxsZWxBcHBseVdvcmtlckluZm87CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9y IGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRl cm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQ7CiAKK2V4dGVybiBQR0RM TElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQ7CisKK2V4dGVybiBQR0RM TElNUE9SVCBFcnJvckNvbnRleHRDYWxsYmFjayAqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsK K2V4dGVybiBQR0RMTElNUE9SVCBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2Fs bGJhY2tfYXJnOworCitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBNeVN1YnNjcmlwdGlvblZhbGlk OworCitleHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJh bGxlbFNoYXJlZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIExpc3QgKnN1YnhhY3RsaXN0OworCiAv KiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3Qg V2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwogCkBAIC03OSwxOCArMTY0 LDIzIEBAIGV4dGVybiBQR0RMTElNUE9SVCBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uOwog ZXh0ZXJuIFBHRExMSU1QT1JUIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlcjsK IAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9uOworZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb247CitleHRlcm4gUEdETExJ TVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXI7CiAKIGV4 dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9n aWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxp ZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKIGV4dGVybiBMaXN0ICpsb2dpY2Fs cmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5nKTsKLWV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBj aGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCk7CitleHRlcm4g Ym9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3Qg Y2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQsCisJCQkJCQkJ CQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29y a2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfc3RvcF9ieV9zbG90KGludCBzbG90X25vLCB1aW50MTYgZ2VuZXJhdGlvbik7CiBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOwog ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lk IHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9wYXJhbGxlbF9hcHBseV93b3JrZXJfY291 bnQoT2lkIHN1YmlkKTsKIAogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9n aWNhbFJlcChPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCSAgIGNoYXIgKm9yaWdp bm5hbWUsIFNpemUgc3pvcmlnaW5uYW1lKTsKQEAgLTEwMywxMCArMTkzLDUwIEBAIGV4dGVybiB2 b2lkIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7CiBleHRl cm4gdm9pZCBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzKERhdHVtIGFyZywgaW50IGNh Y2hlaWQsCiAJCQkJCQkJCQkJCXVpbnQzMiBoYXNodmFsdWUpOwogCitleHRlcm4gdm9pZCBhcHBs eV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOworCitleHRlcm4gdm9pZCBtYXliZV9yZXJlYWRfc3Vi c2NyaXB0aW9uKHZvaWQpOworCitleHRlcm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9p ZCk7CisKKy8qIEZ1bmN0aW9uIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLworZXh0ZXJuIHZv aWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKKworLyogUGFyYWxsZWwgYXBwbHkg d29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMgKi8KK2V4dGVybiB2b2lkIHBhcmFsbGVsX2Fw cGx5X3N0YXJ0X3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKnBhcmFsbGVsX2FwcGx5X2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlk KTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3NldF9pbl94YWN0KFBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCQkJCQkgICBib29sIGluX3hhY3QpOworZXh0ZXJu IHZvaWQgcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvLAorCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgcGFy YWxsZWxfYXBwbHlfd2FpdF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YShQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAorCQkJCQkJCQkJIGNvbnN0IHZvaWQg KmRhdGEpOworCitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9zdGFydF9zdWJ0cmFucyhUcmFu c2FjdGlvbklkIGN1cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklkIHRvcF94aWQpOworZXh0ZXJuIHZv aWQgcGFyYWxsZWxfYXBwbHlfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEg KmFib3J0X2RhdGEpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1 cCh2b2lkKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQodm9p ZCk7CisKKyNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5h cHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1f dGFibGVzeW5jX3dvcmtlcih2b2lkKQogewogCXJldHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJl cFdvcmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX2xlYWRlcl9hcHBs eV93b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gKCFPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtl ci0+cmVsaWQpICYmCisJCQkhaXNQYXJhbGxlbEFwcGx5V29ya2VyKE15TG9naWNhbFJlcFdvcmtl cikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcih2 b2lkKQoreworCXJldHVybiBpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2Vy KTsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvY3NpZ25hbC5oCmluZGV4IGVlNjM2OTAuLjkzYTUxZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3Np Z25hbC5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgZW51bQogCVBST0NTSUdfV0FMU05EX0lO SVRfU1RPUFBJTkcsCS8qIGFzayB3YWxzZW5kZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAq LwogCVBST0NTSUdfQkFSUklFUiwJCQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCiAJ UFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVt b3J5IGNvbnRleHRzICovCisJUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAvKiBNZXNz YWdlIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLwogCiAJLyogUmVjb3ZlcnkgY29uZmxp Y3QgcmVhc29ucyAqLwogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmgKaW5kZXggNmYyZDU2MS4uYzY1MWFkMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZl bnQuaApAQCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0NIRUNLUE9J TlRFUl9NQUlOLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOLAogCVdBSVRfRVZFTlRf TE9HSUNBTF9MQVVOQ0hFUl9NQUlOLAorCVdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBM WV9NQUlOLAogCVdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTSwKIAlXQUlUX0VWRU5UX1NZ U0xPR0dFUl9NQUlOLAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4sCkBAIC0xMDUsNiAr MTA2LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExP Q0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRf SEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVM X0FQUExZX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBLAogCVdB SVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX01RX0lOVEVS TkFMLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24u b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGMx M2QyMTguLjBmNjVjYzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vi c2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQKQEAgLTI1NSw5ICsyNTUsOSBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCist LSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBz dHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZh bHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFs bGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRl c3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6 ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBAIC0yNjks NiArMjY5LDE0IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFu dWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHQgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChz dHJlYW1pbmcgPSBwYXJhbGxlbCk7CitcZFJzKworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcCAg ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKygx IHJvdykKKwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWlu ZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90 X25hbWUgPSBOT05FKTsKIFxkUnMrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z dWJzY3JpcHRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbApp bmRleCBlYWVhZGU4Li43OTkxYWJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z dWJzY3JpcHRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5z cWwKQEAgLTE2Nyw3ICsxNjcsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YjsKIAotLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwgLSBz dHJlYW1pbmcgbXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9 IGZvbyk7CiAKIC0tIG5vdyBpdCB3b3JrcwpAQCAtMTc1LDYgKzE3NSwxMCBAQCBDUkVBVEUgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QnIFBVQgogCiBcZFJzKwogCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworCitcZFJzKworCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGQ5YjgzOWMuLjI2Y2U4YmUgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC0xNDcyLDYgKzE0NzIsNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2lj YWxSZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQ cmVwYXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBs ZURhdGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKQEAgLTE2NjMsNiArMTY2NCw5 IEBAIE92ZXJyaWRlU3RhY2tFbnRyeQogT3ZlcnJpZGluZ0tpbmQKIFBBQ0VfSEVBREVSCiBQQUNM CitQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCitQYXJh bGxlbEFwcGx5V29ya2VyU2hhcmVkCiBQQVRICiBQQk9PTAogUEN0eHRIYW5kbGUKQEAgLTI3ODQs NiArMjc4OCw3IEBAIFRyYW5zYWN0aW9uU3RtdEtpbmQKIFRyYW5zZm9ybUluZm8KIFRyYW5zZm9y bUpzb25TdHJpbmdWYWx1ZXNTdGF0ZQogVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZQorVHJhbnNBcHBs eUFjdGlvbgogVHJnbUFyYwogVHJnbUFyY0luZm8KIFRyZ21Cb3VuZAotLSAKMi43LjIud2luZG93 cy4xCgo= --_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v40-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v40-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v40-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=76275; creation-date="Fri, 21 Oct 2022 07:36:00 GMT"; modification-date="Fri, 21 Oct 2022 09:32:17 GMT" Content-Transfer-Encoding: base64 RnJvbSAwNzA1Mzc5OTExNmUyZGU0YTE2MTBkMjQyZDEyZGNmYTM2Y2IyMGNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NDAg Mi82XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMjMyICsrKysr LS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAxNDMg KysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICB8IDIy MSArKysrLS0tCiAuLi4vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAg fCAyMzMgKysrKystLS0KIC4uLi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgICAg ICAgICB8IDEzNCArKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRl LnBsICAgIHwgMzk0ICsrKysrKysrLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhh c2Vfc3RyZWFtLnBsICAgICB8IDU0MCArKysrKysrKysrKy0tLS0tLS0KIDcgZmlsZXMgY2hhbmdl ZCwgMTI1MiBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uNjVmNDNmMDg4MSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTQ5IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9 CisJICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQn OworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1 bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJl YW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3Ig dGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRl c3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2Yg dHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0g Jyc7CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGltZXIgPSBJ UEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVs dCk7CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKwkjIElm ICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVl ZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERF QlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJi b3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7 CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJ TjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxx CisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwg c28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8 MzMzNCksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsK KworCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBT RVQgKGJpbmFyeSA9IG9uKSIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJz Y3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2 NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVt bnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhh dCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8g ZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJs eSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRp bWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCisJIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxf bG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEn KTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNl dCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwog IyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTgwLDEwIEBAICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBw bmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAt NDksODIgKzE5NiwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIp LCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIElu dGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0Ig bGltaXQuCi1teSAkaW4gID0gJyc7Ci1teSAkb3V0ID0gJyc7Ci0KLW15ICR0aW1lciA9IElQQzo6 UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsK LQotbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBc JGluLCBcJG91dCwgJHRpbWVyLAotCW9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0KLSRpbiAuPSBxewot QkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotfTsKLSRoLT5wdW1wX25iOwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKLUNPTU1JVDsKLX0pOwotCi0kaW4g Lj0gcXsKLUNPTU1JVDsKLVxxCi19OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUg bmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8 MzMzNCksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKK3Rl c3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs IDApOwogCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkp OwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKKyk7CiAKLSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMg b24gdGhlIHN1YnNjcmliZXIsCi0jIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1 YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKLSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3Vy ZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRl ciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0 eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCi0pOwotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQp Iik7CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxl bCwgYmluYXJ5ID0gb2ZmKSIpOwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAotCSdjaGVjayBl eHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IGJjMGE5Y2QwNTMu LjAyMGFkOTZkMWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJl YW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwKQEAgLTgsNiArOCw5NCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNr IHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNj ZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNr X3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFy YWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNfcGFyYWxs ZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21l c3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1l dGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0 IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBh Ym91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3Bh cmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3Jp YmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLCA1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAxMDAwKSBzKGkpOworCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgMjAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAy NTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1J VDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAorCQkn Y2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVw IHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9z aXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElP TiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw0MSArMTQxLDI2IEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoICAgIDMsICA1 MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg1MDEsICAxMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLCAgMjAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3 fDE2NjcpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1p bmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBU SU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNo ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJT Q1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1 Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5w bAppbmRleCA4NjZmMTUxMmU0Li5kMmNjNDZkMTgyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTdfc3RyZWFtX2RkbC5wbApAQCAtOCw2ICs4LDEzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2Vy Lgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2Zp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv JHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxs IHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgor IyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJl YW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVh bWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgYSBzbWFsbCAo bm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFi IEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBJZiAi c3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQg dG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJV RzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9z aXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7 CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1M CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIw MDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRy YW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIw MDIpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDJ8 MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4g c3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3Jt ZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEg c2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRv IHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAw MCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1J VDsKKwl9KTsKKworCSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1l ZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdh aW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3Qu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwg LTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7 CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNv dW50KGYpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAw NXwzMDA0fDUpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJv dGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucycKKwkpOworCisJIyBD bGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bv c3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVS IFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGMsIERST1AgQ09MVU1OIGQsIERST1AgQ09MVU1O IGUsIERST1AgQ09MVU1OIGY7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19w YXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNj cmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9k ZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicp OwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsK QEAgLTM3LDYgKzE2OSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAog bXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25u c3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAo c3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxODUsMjYgQEAgbXkgJHJlc3VsdCA9CiAJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRl eHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQg czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwot Q09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBh bmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVH SU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAw MCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBt ZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1J VDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3Rf dGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3 YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBBIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVy Zm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hl bWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMg dG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDAp IHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOwotQ09NTUlUOwot fSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhp cyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byBy ZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0g ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEg d2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsK KworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9y IGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXIt PnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCA1NTFmMTZkZjZkLi43 NTJlNzlhMDI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFt X3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVh bV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTQ1IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29t cGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYg KCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8k cGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFt aW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hl Y2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsK KwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8g czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBz KGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01NSVQ7 CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2lu dCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQg b2Ygb3JkZXIKKwkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAw KSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZF UE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoNzAwMSw3NTAwKSBzKGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJJHJlc3VsdCA9CisJ ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCks CisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3Jp YmVyJyk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJvbGxiYWNrCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBz KGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7CisJUk9MTEJB Q0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQg b24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJ CSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNiw2ICsx NzUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNh dGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9 IG9uKSIKICk7CkBAIC00OCw4MSArMTkxLDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2Ug KHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotU0FW RVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDAp IHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAwKSBzKGkpOwotU0FWRVBP SU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczU7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0 ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8g c2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKLSMgc3VidHJhbnNhY3Rp b24gUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAwMSw1NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKLVJFTEVBU0UgczI7 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwotQ09NTUlUOwotfSk7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAw fDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJz Y3JpYmVyJyk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmli ZXIgcmVjZWl2aW5nIHJvbGxiYWNrCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAx LDEwMDAwKSBzKGkpOwotUk9MTEJBQ0s7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFy YWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJF IGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIK KyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byBy ZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9z dWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5k ZXggNGQ3ZGE4MmI3YS4uOWQ2NzhiMzk5OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDYgKzksOTEg QEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVh bWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5 IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAo JG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15ICRwYXJh bGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBm aW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQor fQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJl bGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJl IHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwg Y2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNl dCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBh cmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8g bG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0 aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1 YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7CisJQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMo aSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9JTlQg czM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIq aSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJQUxURVIgVEFC TEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCisJ CSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVy IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xl YW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBU QUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9k ZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdw dWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICds b2dpY2FsJyk7CkBAIC0zNyw2ICsxMjIsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3Rf dGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJs aXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBf cHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSwzNSArMTM4LDI2IEBAIG15ICRy ZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlz KCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1M IGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMo aSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMy OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwot Uk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxMDAw fDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMzdiYS4uNDI2NWQzYjNmNSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTExLDYgKzEx LDIzOSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUg c3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0 ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworewor CW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkc3RyZWFtaW5nX21vZGUpID0gQF87CisJ bXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5z YWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFs bGVsJykKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxf bWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgor IyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRz dHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2Zmc2V0X0IgPSAwOworCW15ICRvZmZz ZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi KTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIK KwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMg U2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IK KwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJ CVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJz Y3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlf dW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVf QicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRp bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBB TkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0 aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRh IGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQg cHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2Ny aWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxs ZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBw cmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9v ayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUK KwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQor CXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21l c3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfQy0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7CisJJG9mZnNldF9D ID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBl bm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyBUaGVuIDJQQyBQUkVQQVJF CisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRu b2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zm c2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRv ZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9B LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5z ZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNv bHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMs IGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sg dGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQ T0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJv d3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5U LgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyByb2xsYmFjayB0 byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1LiBUaGVuIENP TU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlz IGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAg MSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9IC1zICRub2Rl X0MtPmxvZ2ZpbGU7CisKKwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8g U0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUJFR0lO OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKKwkJU0FW RVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lu bmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwg JHN0cmVhbWluZ19tb2RlKTsKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQywgJG9mZnNldF9D LCAkc3RyZWFtaW5nX21vZGUpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJl cGFyZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwor CisJIyAyUEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQg UFJFUEFSRUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hl Y2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBv biBzdWJzY3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJz Y3JpYmVyKHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBP SU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBi ZSBjb21taXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwor CWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAn Um93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9 ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g dGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93 cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisJJHJlc3VsdCA9CisJ ICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNl bnQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2Rl X0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDI7Iik7CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9C LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9C LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0Mt PnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0 dXAgYSBjYXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMuCiAjIG5vZGVfQSAtPiBub2RlX0IgLT4gbm9k ZV9DCkBAIC0yNjAsMTYwICs0OTMsMTUgQEAgaXMoJHJlc3VsdCwgcXEoMjEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CiAjIDJQQyArIFNUUkVBTUlORyBU RVNUUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiKTsKLQotIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIChzdHJlYW1pbmcgPSBvbikKLQot JG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBvbik7Iik7Ci0kbm9kZV9DLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKLQlTRVQgKHN0 cmVhbWluZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0 aWFsaXphdGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIK LQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFy dCI7Ci0kbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1Qg cGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3Ig ZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1J VCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4K LSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3Vn aCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgVGhlbiAyUEMgUFJFUEFSRQotJG5v ZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1 MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0 X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFt ZV9DLCAnb24nKTsKIAotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwot JHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5z YWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRu b2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0k bm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0gJG5vZGVf Qi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwz MzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJl ciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLSRyZXN1bHQg PSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwot Ci0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRu b2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBUZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5U LgotIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgot IyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgotIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCi0jIDMu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9J TlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCi0jIDUuIFRoZW4gQ09NTUlUIFBSRVBB UkVELgotIwotIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVh dmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNl cHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX0EtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0K LSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKLSRub2Rl X0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7Ci0JU0FWRVBPSU5UIHNwX2lubmVyOwotCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JUFJFUEFSRSBUUkFOU0FDVElP TiAnb3V0ZXInOwotCSIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUg dHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0g ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0j IGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCi0kcmVz dWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2Ny aWJlciBDJyk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVyKHMp LgotIyBBbGwgdGhlIHN0cmVhbWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3Vs ZCBiZSByb2xsZWQgYmFjay4KLSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVk LgotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBx cSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJl c3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zv b2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50 IG9uIHN1YnNjcmliZXIgQycpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgz KSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcg bW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFw cG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIz X3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCA5YjQ1NDEwNmJkLi44MmI1ZTZjMTJlIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTgsNiAr OCwzMDggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhl IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9y dGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sK KwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15 ICRwYXJhbGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2Fj dGlvbiBmaW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7 CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUg Y2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFy YWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkg JG9mZnNldCA9IDA7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0 IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBh cyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMK KwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRl ciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVk IHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERF QlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJi b3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKKwlteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94 YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAn dGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQg b24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dz IGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4g VGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBz dWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBEbyBy b2xsYmFjayBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcg b25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBi ZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwor CQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlv biBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFi b3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJB Q0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmln aW5hbCAyIHJvd3MnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBDaGVjayB0 aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0 YXJ0LgorCSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCisJIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUg MlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJl c3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIworCSMgRXhw ZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBj b21taXQuCisJIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9y ZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9w cmVwYXJlZF90YWInO30pOworCisJJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRlJyk7 CisJJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKworCSRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKwljaGVja19wYXJhbGxlbF9s b2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY29tbWl0 IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBh cmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBS T0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mg d2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFt ZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlz IGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgor CSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dz IG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRh dGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47 CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhl IDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9s ZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBw cmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCisJIyBidXQgdGhl IGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKKwkk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoM3wzfDMpLAorCQknY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBj b3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9u IHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERv IElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJFRC4KKwkj IDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQg b24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4g QSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgor CSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgMlBDIGRhdGEg KyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0ICsgaW5z ZXJ0ZWQgMSA9IDMzMzUpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMg Rmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNh dGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhj ZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdm b29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKKwkJJ1Jvd3MgaW5z ZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor CSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVz dWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisK KwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUg bG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9 IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwpAQCAtNDgsNiArMzUwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0 X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAog CSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiAr MzcwLDMwIEBAIG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15 ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwog aXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3Qg MlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMg YSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBF eHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhl IGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNo ZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRz IGNvbW1pdHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09N TUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks Ci0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBk ZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIu Ci0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVw YXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdp bmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwg ZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0J REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHBy ZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJl IHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVj b2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQg ZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBz ZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0j IDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNj cmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQg c3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJF R0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVy LT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1 YnNjcmliZXItPnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJl cGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMz MzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNj cmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJF UEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlz IGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFD SyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcg b25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0 ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2gg cm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9O ICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJl ZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRz aWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24g c3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBz ZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0K LSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsi KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRo ZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVk IHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFm dGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBp cyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cg SU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8g YSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cg YXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBk YXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRv IGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3Rf cHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRl IG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1p cygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIn KTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2Yg dGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBo b2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJl IHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1 KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi4yMy4wLndp bmRvd3MuMQoK --_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v40-0003-Add-some-checks-before-using-parallel-apply-work.patch" Content-Description: v40-0003-Add-some-checks-before-using-parallel-apply-work.patch Content-Disposition: attachment; filename="v40-0003-Add-some-checks-before-using-parallel-apply-work.patch"; size=50921; creation-date="Fri, 21 Oct 2022 07:36:00 GMT"; modification-date="Fri, 21 Oct 2022 09:32:18 GMT" Content-Transfer-Encoding: base64 RnJvbSA2ODUyY2Q0OGViNmZkYWMzNTk5YTdjMjZlM2FkNjBkNTVmYzkxMDE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHY0MCAzLzZdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgcGFyYWxsZWwgYXBwbHkgd29y a2VyIHRvCiBhcHBseSBjaGFuZ2VzCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdvIHJl cXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBz dWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1 Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rp b25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29rIGZv ciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5jdGlv bnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNvbnN0 cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwpJdCBpcyBiZXR0ZXIgdG8gb25seSBj aGVjayB0aGUgZm9yZWlnbiBrZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0IHRoZQpwdWJsaXNo ZXIgZG9lcyBub3QgaGF2ZSB0aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJzY3JpYmVyIGRvZXMu IEJ1dCB0aGlzCnJlcXVpcmVzIHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBtb3JlIGluZm9ybWF0aW9u LiBJbiBhZGRpdGlvbiwgc2luY2UgZm9yZWlnbiBrZXkKZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4g dGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3JrZXIgYnkgZGVmYXVsdCwgaXQgc2VlbXMgdGhhdApm b3JlaWduIGtleSBkb2VzIG5vdCBoaXQgdGhpcyBFUlJPUiBmcmVxdWVudGx5LiBTbywgb25seSBw ZXJmb3JtIGEgc2ltcGxlIGNoZWNrCmJhc2VkIG9uIHRoZSBzdWJzY3JpYmVyIHNjaGVtYSB3aGVu IGNoZWNraW5nIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gdWVzZCBieQp0cmlnZ2VyLgoKV2l0aG91 dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIG1heSBvY2N1cjoK VGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBsb2NrcyBhIHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sCmFmdGVyIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg dHJpZXMgdG8gbG9jayB0aGUgc2FtZSByb3cgd2hlbiBwcm9jZXNzaW5nCmFub3RoZXIgbm9uLXN0 cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IHdhaXRzCmZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0aGUg bG9jayB0byBiZSByZWxlYXNlZCwgaXQgd29uJ3QKc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2YgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyOwp0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2Ygc3RyZWFt aW5nIHRyYW5zYWN0aW9uCmFuZCBjYW4ndCBmaW5pc2ggdGhpcyB0cmFuc2FjdGlvbi4gTm93IGEg ZGVhZGxvY2sgaGFzIG9jY3VycmVkLCBzbyBib3RoIHdvcmtlcnMKd2lsbCB3YWl0IGluZGVmaW5p dGVseS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAg fCAgIDUgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwg IDQwICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAg ODYgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAx OTkgKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDI0ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAg MTcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICB8ICAgNyAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAgIDkgKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8ICAgOSArLQogLi4uL3N1 YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsICAgIHwgICA4ICsKIC4uLi9zdWJz Y3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAgICB8ICAgOSArLQogLi4uL3QvMDMy X3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgICAgICAgIHwgNjE2ICsrKysrKysrKysrKysr KysrKwogMTcgZmlsZXMgY2hhbmdlZCwgMTAyMSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt aW5nX3BhcmFsbGVsX3NhZmV0eS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKaW5kZXggMDNmYzA0N2FmNC4uNzkyNTBhY2FmNSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI0NSw2ICsyNDUsMTEgQEAgQ1JFQVRFIFNV QlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25h bWU8L3JlcGxhY2VhYmwKICAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUg dGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIGluIGEKICAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3 b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KICAgICAgICAg ICBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgVGhl cmUgYXJlIHR3byBwcmVyZXF1aXNpdGVzIGZvciB1c2luZyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0 ZXJhbD4KKyAgICAgICAgICBtb2RlOiAxKSB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgdGFibGUg b24gdGhlIHN1YnNjcmliZXItc2lkZSBtdXN0CisgICAgICAgICAgYWxzbyBiZSB0aGUgdW5pcXVl IGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZQorICAgICAg ICAgIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNp ZGUgcmVwbGljYXRlZAorICAgICAgICAgIHRhYmxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAg ICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAzMjg2 NzJlM2Y2Li5mNzg3YTUwNDExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMTA5NywzICsxMDk3LDQzIEBAIHBh cmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQodm9pZCkKIAlyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fdGltZXN0YW1wID0gMDsKIH0KKworLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gdGhpcyBy ZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIu CisgKgorICogQWx0aG91Z2ggdGhlIGNvbW1pdCBvcmRlciBpcyBtYWludGFpbmVkIGJ5IG9ubHkg YWxsb3dpbmcgb25lIHByb2Nlc3MgdG8KKyAqIGNvbW1pdCBhdCBhIHRpbWUsIHRoZSBhY2Nlc3Mg b3JkZXIgdG8gdGhlIHJlbGF0aW9uIGhhcyBjaGFuZ2VkLiBUaGlzIGNvdWxkCisgKiBjYXVzZSB1 bmV4cGVjdGVkIHByb2JsZW1zIHdoZW4gYXBwbHlpbmcgdHJhbnNhY3Rpb25zIHVzaW5nIGEgcGFy YWxsZWwKKyAqIGFwcGx5IHdvcmtlciBpZiB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcmVwbGlj YXRlZCB0YWJsZSBpcworICogaW5jb25zaXN0ZW50IHdpdGggdGhlIHB1Ymxpc2hlci1zaWRlLCBv ciBpZiB0aGUgcmVsYXRpb24gY29udGFpbnMKKyAqIG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLgor ICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFw RW50cnkgKnJlbCkKK3sKKwkvKiBTa2lwIGlmIG5vdCBpbiBwYXJhbGxlbCBtb2RlICovCisJaWYg KCFNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5KQorCQlyZXR1cm47CisKKwkvKgor CSAqIFBhcnRpdGlvbiB0YWJsZSBjaGVja3MgYXJlIGRvbmUgbGF0ZXIgaW4gZnVuY3Rpb24KKwkg KiBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZy4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+ cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsK KworCWlmICghcmVsLT5wYXJhbGxlbF9hcHBseV92YWxpZCkKKwkJbG9naWNhbHJlcF9yZWxfbWFy a19wYXJhbGxlbF9hcHBseShyZWwpOworCisJaWYgKHJlbC0+cGFyYWxsZWxfYXBwbHlfZGV0YWls cyAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiB1c2luZyAiCisJCQkJCQkic3Vic2NyaXB0aW9u IHBhcmFtZXRlciAlcyIsCisJCQkJCQlyZWwtPnJlbW90ZXJlbC5uc3BuYW1lLCByZWwtPnJlbW90 ZXJlbC5yZWxuYW1lLAorCQkJCQkJInN0cmVhbWluZyA9IHBhcmFsbGVsIiksCisJCQkJIGVycmRl dGFpbF9pbnRlcm5hbCgiJXMiLCByZWwtPnBhcmFsbGVsX2FwcGx5X2RldGFpbHMpLAorCQkJCSBl cnJoaW50KCJQbGVhc2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICVzLiIs CisJCQkJCQkgInN0cmVhbWluZyA9IG9uIikpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcHJvdG8uYwppbmRleCBkNjE2MGU2NWJjLi5iZDQwNmEwNzVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0yMyw3ICsyMyw4IEBACiAvKgogICogUHJv dG9jb2wgbWVzc2FnZSBmbGFncy4KICAqLwotI2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0Ff SURFTlRJVFkgMQorI2RlZmluZSBBVFRSX0lTX1JFUExJQ0FfSURFTlRJVFkJKDEgPDwgMCkKKyNk ZWZpbmUgQVRUUl9JU19VTklRVUUJCQkJKDEgPDwgMSkKIAogI2RlZmluZSBNRVNTQUdFX1RSQU5T QUNUSU9OQUwgKDE8PDApCiAjZGVmaW5lIFRSVU5DQVRFX0NBU0NBREUJCSgxPDwwKQpAQCAtNDAs NiArNDEsNjYgQEAgc3RhdGljIHZvaWQgbG9naWNhbHJlcF9yZWFkX3R1cGxlKFN0cmluZ0luZm8g aW4sIExvZ2ljYWxSZXBUdXBsZURhdGEgKnR1cGxlKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBf d3JpdGVfbmFtZXNwYWNlKFN0cmluZ0luZm8gb3V0LCBPaWQgbnNwaWQpOwogc3RhdGljIGNvbnN0 IGNoYXIgKmxvZ2ljYWxyZXBfcmVhZF9uYW1lc3BhY2UoU3RyaW5nSW5mbyBpbik7CiAKKy8qCisg KiBSZWxhdGlvbkdldFVuaXF1ZUtleUJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgdW5pcXVlIGF0 dHJpYnV0ZSBudW1iZXJzCisgKgorICogVGhpcyBpcyBzaW1pbGFyIHRvIFJlbGF0aW9uR2V0SWRl bnRpdHlLZXlCaXRtYXAoKSwgYnV0IHJldHVybnMgYSBiaXRtYXAgb2YKKyAqIGluZGV4IGF0dHJp YnV0ZSBudW1iZXJzIGZvciBhbGwgdW5pcXVlIGluZGV4ZXMuCisgKi8KK3N0YXRpYyBCaXRtYXBz ZXQgKgorUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAoUmVsYXRpb24gcmVsKQoreworCUxpc3QJ ICAgKmluZGV4b2lkbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbCAgICppbmRleG9pZHNjYW47CisJQml0 bWFwc2V0ICAqYXR0dW5pcXVlID0gTlVMTDsKKworCWlmICghcmVsLT5yZF9yZWwtPnJlbGhhc2lu ZGV4KQorCQlyZXR1cm4gTlVMTDsKKworCWluZGV4b2lkbGlzdCA9IFJlbGF0aW9uR2V0SW5kZXhM aXN0KHJlbCk7CisKKwlmb3JlYWNoKGluZGV4b2lkc2NhbiwgaW5kZXhvaWRsaXN0KQorCXsKKwkJ T2lkCQkJaW5kZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJCVJlbGF0aW9uCWlu ZGV4UmVsOworCQlpbnQJCQlpOworCisJCS8qIExvb2sgdXAgdGhlIGRlc2NyaXB0aW9uIGZvciBp bmRleCAqLworCQlpbmRleFJlbCA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihpbmRleG9pZCk7CisK KwkJaWYgKCFSZWxhdGlvbklzVmFsaWQoaW5kZXhSZWwpKQorCQkJZWxvZyhFUlJPUiwgImNvdWxk IG5vdCBvcGVuIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgaW5kZXhvaWQpOworCisJCWlmICghaW5k ZXhSZWwtPnJkX2luZGV4LT5pbmRpc3VuaXF1ZSkKKwkJeworCQkJUmVsYXRpb25DbG9zZShpbmRl eFJlbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIEFkZCByZWZlcmVuY2VkIGF0dHJpYnV0 ZXMgdG8gYXR0dW5pcXVlICovCisJCWZvciAoaSA9IDA7IGkgPCBpbmRleFJlbC0+cmRfaW5kZXgt PmluZG5hdHRzOyBpKyspCisJCXsKKwkJCWludAkJCWF0dHJudW0gPSBpbmRleFJlbC0+cmRfaW5k ZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCS8qCisJCQkgKiBXZSBkb24ndCBpbmNsdWRlIG5v bi1rZXkgY29sdW1ucyBpbnRvIGF0dHVuaXF1ZSBiaXRtYXBzLiBTZWUKKwkJCSAqIFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwLgorCQkJICovCisJCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJewor CQkJCWlmIChpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkhYm1z X2lzX21lbWJlcihhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwg YXR0dW5pcXVlKSkKKwkJCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLAor CQkJCQkJCQkJCQkgICBhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl cik7CisJCQl9CisJCX0KKwkJUmVsYXRpb25DbG9zZShpbmRleFJlbCk7CisJfQorCWxpc3RfZnJl ZShpbmRleG9pZGxpc3QpOworCisJcmV0dXJuIGF0dHVuaXF1ZTsKK30KKwogLyoKICAqIENoZWNr IGlmIGEgY29sdW1uIGlzIGNvdmVyZWQgYnkgYSBjb2x1bW4gbGlzdC4KICAqCkBAIC05MzMsNyAr OTk0LDggQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24g cmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1 aW50MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0 bWFwc2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29s CQlyZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTk1 OCw2ICsxMDIwLDkgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVs YXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJaWYgKCFyZXBsaWRlbnRmdWxsKQogCQlp ZGF0dHJzID0gUmVsYXRpb25HZXRJZGVudGl0eUtleUJpdG1hcChyZWwpOwogCisJLyogZmV0Y2gg Yml0bWFwIG9mIFVOSVFVRSBhdHRyaWJ1dGVzICovCisJYXR0dW5pcXVlID0gUmVsYXRpb25HZXRV bmlxdWVLZXlCaXRtYXAocmVsKTsKKwogCS8qIHNlbmQgdGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3Ig KGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzQsNyArMTAzOSwxMSBAQCBs b2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1h cHNldCAqY29sdW1ucykKIAkJaWYgKHJlcGxpZGVudGZ1bGwgfHwKIAkJCWJtc19pc19tZW1iZXIo YXR0LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJ ICBpZGF0dHJzKSkKLQkJCWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWTsK KwkJCWZsYWdzIHw9IEFUVFJfSVNfUkVQTElDQV9JREVOVElUWTsKKworCQlpZiAoYm1zX2lzX21l bWJlcihhdHQtPmF0dG51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJ CQkJCQkgIGF0dHVuaXF1ZSkpCisJCQlmbGFncyB8PSBBVFRSX0lTX1VOSVFVRTsKIAogCQlwcV9z ZW5kYnl0ZShvdXQsIGZsYWdzKTsKIApAQCAtOTg5LDYgKzEwNTgsNyBAQCBsb2dpY2FscmVwX3dy aXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1u cykKIAl9CiAKIAlibXNfZnJlZShpZGF0dHJzKTsKKwlibXNfZnJlZShhdHR1bmlxdWUpOwogfQog CiAvKgpAQCAtMTAwMSw3ICsxMDcxLDggQEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0lu Zm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQogCWludAkJCW5hdHRzOwogCWNoYXIJICAq KmF0dG5hbWVzOwogCU9pZAkJICAgKmF0dHR5cHM7Ci0JQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5V TEw7CisJQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVM TDsKIAogCW5hdHRzID0gcHFfZ2V0bXNnaW50KGluLCAyKTsKIAlhdHRuYW1lcyA9IHBhbGxvYyhu YXR0cyAqIHNpemVvZihjaGFyICopKTsKQEAgLTEwMTQsOSArMTA4NSwxMyBAQCBsb2dpY2FscmVw X3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAKIAkJ LyogQ2hlY2sgZm9yIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1uICovCiAJCWZsYWdzID0gcHFfZ2V0 bXNnYnl0ZShpbik7Ci0JCWlmIChmbGFncyAmIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElU WSkKKwkJaWYgKGZsYWdzICYgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZKQogCQkJYXR0a2V5cyA9 IGJtc19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwogCisJCS8qIENoZWNrIGZvciB1bmlxdWUgY29s dW1uICovCisJCWlmIChmbGFncyAmIEFUVFJfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1z X2FkZF9tZW1iZXIoYXR0dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlh dHRuYW1lc1tpXSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiAr MTEwNSw3IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVw UmVsYXRpb24gKnJlbCkKIAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBz ID0gYXR0dHlwczsKIAlyZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0g YXR0dW5pcXVlOwogCXJlbC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IGU5ODkwNDc2ODEuLjY5NTI0NDExMGIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsx OSwxOSBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9u YW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUg InV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRp YyBNZW1vcnlDb250ZXh0IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkxLDYg Kzk4LDIzIEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogCX0KIH0KIAorLyoKKyAqIFN5c2NhY2hlIGludmFsaWRhdGlvbiBjYWxsYmFjayB0 byByZXNldCBwYXJhbGxlbF9hcHBseV92YWxpZCBmbGFnLgorICovCitzdGF0aWMgdm9pZAorbG9n aWNhbHJlcF9yZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwg dWludDMyIGhhc2h2YWx1ZSkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7CisJTG9naWNh bFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKKworCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwp CisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBMb2dpY2FsUmVwUmVsTWFw KTsKKwl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwp CisJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV92YWxpZCA9IGZhbHNlOworfQorCiAvKgogICogSW5p dGlhbGl6ZSB0aGUgcmVsYXRpb24gbWFwIGNhY2hlLgogICovCkBAIC0xMTYsNiArMTQwLDE2IEBA IGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9u IGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3Jl bG1hcF9pbnZhbGlkYXRlX2NiLAogCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwlpZiAoTXlMb2dp Y2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSkKKwl7CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFBST0NPSUQsCisJCQkJCQkJCQkgIGxvZ2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3Bh cmFsbGVsX2NiLAorCQkJCQkJCQkJICAoRGF0dW0pIDApOworCQlDYWNoZVJlZ2lzdGVyU3lzY2Fj aGVDYWxsYmFjayhUWVBFT0lELAorCQkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9w YXJhbGxlbF9jYiwKKwkJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwl9CiB9CiAKIC8qCkBAIC0xNDIs NiArMTc2LDcgQEAgbG9naWNhbHJlcF9yZWxtYXBfZnJlZV9lbnRyeShMb2dpY2FsUmVwUmVsTWFw RW50cnkgKmVudHJ5KQogCQlwZnJlZShyZW1vdGVyZWwtPmF0dHR5cHMpOwogCX0KIAlibXNfZnJl ZShyZW1vdGVyZWwtPmF0dGtleXMpOworCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsK IAogCWlmIChlbnRyeS0+YXR0cm1hcCkKIAkJZnJlZV9hdHRybWFwKGVudHJ5LT5hdHRybWFwKTsK QEAgLTE5MCw2ICsyMjUsNyBAQCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJl bGF0aW9uICpyZW1vdGVyZWwpCiAJfQogCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVt b3RlcmVsLT5yZXBsaWRlbnQ7CiAJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHko cmVtb3RlcmVsLT5hdHRrZXlzKTsKKwllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19j b3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4 KTsKIH0KIApAQCAtMzEwLDYgKzM0NiwxNjIgQEAgbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFi bGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAl9CiB9CiAKKy8qCisgKiBDaGVjayBp ZiBjaGFuZ2VzIG9uIG9uZSByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVs IGFwcGx5CisgKiB3b3JrZXIgYW5kIGFzc2lnbiB0aGUgJ3BhcmFsbGVsX2FwcGx5X3ZhbGlkJyBm bGFnIGFuZAorICogJ3BhcmFsbGVsX2FwcGx5X2RldGFpbHMnIGZpZWxkLgorICoKKyAqIFRoZXJl IGFyZSB0d28gcmVxdWlyZW1lbnRzIGZvciBhcHBseWluZyBjaGFuZ2VzIHVzaW5nIGEgcGFyYWxs ZWwgYXBwbHkKKyAqIHdvcmtlcjogMSkgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHRhYmxlIG9u IHRoZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28KKyAqIGJlIHRoZSB1bmlxdWUgY29sdW1u IG9uIHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlIGFueQorICogbm9uLWlt bXV0YWJsZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQg dGFibGUuCisgKgorICogV2l0aG91dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5n IHNjZW5hcmlvIG1heSBvY2N1cjogVGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIgbG9ja3Mg YSByb3cgd2hlbiBwcm9jZXNzaW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBhZnRlcgorICog dGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3 aGVuIHByb2Nlc3NpbmcKKyAqIGFub3RoZXIgbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0 aGlzIHRpbWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiB3YWl0cyBmb3IgdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUgcmVsZWFzZWQs CisgKiBpdCB3b24ndCBzZW5kIHN1YnNlcXVlbnQgZGF0YSBvZiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHRvIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyOyB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2YKKyAqIHN0cmVhbWluZyB0cmFu c2FjdGlvbiBhbmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24uIE5vdyBhIGRlYWRsb2Nr IGhhcworICogb2NjdXJyZWQsIHNvIGJvdGggd29ya2VycyB3aWxsIHdhaXQgaW5kZWZpbml0ZWx5 LgorICoKKyAqIFdlIGp1c3QgbWFyayB0aGUgcmVsYXRpb24gZW50cnkgYXMgdmFsaWQgaGVyZS4g SWYgY2hhbmdlcyBvbiBvbmUgcmVsYXRpb24KKyAqIGNhbiBub3QgYmUgYXBwbGllZCB1c2luZyBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgc2F2ZSB0aGUgcmVsYXRlZCBkZXRhaWxzCisgKiBpbiAn cGFyYWxsZWxfYXBwbHlfZGV0YWlscycgYW5kIGxlYXZlIGl0IHRvIHBhcmFsbGVsX2FwcGx5X3Jl bGF0aW9uX2NoZWNrKCkKKyAqIHRvIHRocm93IHRoZSBhY3R1YWwgZXJyb3IgaWYgbmVlZGVkLgor ICovCit2b2lkCitsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5KExvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqZW50cnkpCit7CisJQml0bWFwc2V0ICAqdWtleTsKKwlpbnQJCQlpOworCVR1 cGxlRGVzYwl0dXBkZXNjOworCWludAkJCWF0dG51bTsKKworCS8qIFNraXAgaWYgbm90IGluIHBh cmFsbGVsIG1vZGUgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkp CisJCXJldHVybjsKKworCWVudHJ5LT5wYXJhbGxlbF9hcHBseV92YWxpZCA9IHRydWU7CisKKwkv KgorCSAqIEZpcnN0LCBjaGVjayBpZiB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24g b24gdGhlCisJICogc3Vic2NyaWJlci1zaWRlIGlzIGFsc28gdGhlIHVuaXF1ZSBjb2x1bW4gb24g dGhlIHB1Ymxpc2hlci1zaWRlLgorCSAqLworCXVrZXkgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJp dG1hcChlbnRyeS0+bG9jYWxyZWwsCisJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0tFWSk7 CisKKwlpZiAodWtleSkKKwl7CisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVt YmVyKHVrZXksIGkpKSA+PSAwKQorCQl7CisJCQlhdHRudW0gPSBBdHRyTnVtYmVyR2V0QXR0ck9m ZnNldChpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisKKwkJCWlmIChl bnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8fAorCQkJCSFibXNfaXNfbWVtYmVy KGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIGVudHJ5LT5yZW1vdGVyZWwuYXR0dW5p cXVlKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfZGV0YWlscyA9IF8oIlVuaXF1 ZSBjb2x1bW4gb24gdGhlIHN1YnNjcmliZXItc2lkZSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHVu aXF1ZSBjb2x1bW5zIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4iKTsKKwkJCQlibXNfZnJlZSh1a2V5 KTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQlibXNfZnJlZSh1a2V5KTsKKwl9CisKKwkv KgorCSAqIFRoZW4sIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9u IHVzZWQgYnkgdGhlCisJICogc3Vic2NyaWJlci1zaWRlIHJlbGF0aW9uLiBMb29rIGZvciBmdW5j dGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisJICogYS4gdHJpZ2dlciBmdW5jdGlvbnM7 IGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4KKwkgKiBjb25z dHJhaW50czsgYy4gQ29uc3RyYWludCBleHByZXNzaW9uczsKKwkgKi8KKwkvKiBDaGVjayB0aGUg dHJpZ2dlciBmdW5jdGlvbnMuICovCisJaWYgKGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MgIT0g TlVMTCkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT5u dW10cmlnZ2VyczsgaSsrKQorCQl7CisJCQlUcmlnZ2VyICAgICp0cmlnID0gZW50cnktPmxvY2Fs cmVsLT50cmlnZGVzYy0+dHJpZ2dlcnMgKyBpOworCisJCQlpZiAodHJpZy0+dGdlbmFibGVkICE9 IFRSSUdHRVJfRklSRVNfQUxXQVlTICYmCisJCQkJdHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJf RklSRVNfT05fUkVQTElDQSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGZ1bmNfdm9sYXRpbGUo dHJpZy0+dGdmb2lkKSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCQl7CisJCQkJZW50cnkt PnBhcmFsbGVsX2FwcGx5X2RldGFpbHMgPSBfKCJUcmlnZ2VyIHVzZXMgbm9uLWltbXV0YWJsZSBm dW5jdGlvbi4iKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUg Y29sdW1ucy4gKi8KKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihlbnRyeS0+bG9jYWxyZWwp OworCWZvciAoYXR0bnVtID0gMDsgYXR0bnVtIDwgdHVwZGVzYy0+bmF0dHM7IGF0dG51bSsrKQor CXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRu dW0pOworCQlOb2RlCSAgICpkZWZhdWx0ZXhwciA9IE5VTEw7CisKKwkJLyogV2UgZG9uJ3QgY2hl Y2sgZHJvcHBlZCBvciBnZW5lcmF0ZWQgYXR0cmlidXRlcyAqLworCQlpZiAoYXR0LT5hdHRpc2Ry b3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCisJCQljb250aW51ZTsKKworCQlkZWZhdWx0ZXhw ciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KGVudHJ5LT5sb2NhbHJlbCwgYXR0bnVtICsgMSk7CisJ CWlmIChkZWZhdWx0ZXhwciAmJiBjb250YWluX211dGFibGVfZnVuY3Rpb25zKGRlZmF1bHRleHBy KSkKKwkJeworCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5X2RldGFpbHMgPSBfKCJUaGUgZGVmYXVs dCBleHByZXNzaW9uIG9mIGNvbHVtbiB1c2VzIG5vbi1pbW11dGFibGUgZnVuY3Rpb24uIik7CisJ CQlyZXR1cm47CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgY29sdW1uIGlzIG9mIGEgRE9NQUlO IHR5cGUsIGRldGVybWluZSB3aGV0aGVyIHRoYXQgZG9tYWluCisJCSAqIGhhcyBhbnkgQ0hFQ0sg ZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90IGltbXV0YWJsZS4KKwkJICovCisJCWlmIChnZXRfdHlw dHlwZShhdHQtPmF0dHR5cGlkKSA9PSBUWVBUWVBFX0RPTUFJTikKKwkJeworCQkJTGlzdAkgICAq ZG9tYWluX2NvbnN0cmFpbnRzOworCQkJTGlzdENlbGwgICAqbGM7CisKKwkJCWRvbWFpbl9jb25z dHJhaW50cyA9IEdldERvbWFpbkNvbnN0cmFpbnRzKGF0dC0+YXR0dHlwaWQpOworCisJCQlmb3Jl YWNoKGxjLCBkb21haW5fY29uc3RyYWludHMpCisJCQl7CisJCQkJRG9tYWluQ29uc3RyYWludFN0 YXRlICpjb24gPSAoRG9tYWluQ29uc3RyYWludFN0YXRlICopIGxmaXJzdChsYyk7CisKKwkJCQlp ZiAoY29uLT5jaGVja19leHByICYmIGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKE5vZGUgKikg Y29uLT5jaGVja19leHByKSkKKwkJCQl7CisJCQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9kZXRh aWxzID0gXygiVGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gdXNlcyBub24taW1tdXRh YmxlIGZ1bmN0aW9uLiIpOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJ LyogQ2hlY2sgdGhlIGNvbnN0cmFpbnRzLiAqLworCWlmICh0dXBkZXNjLT5jb25zdHIpCisJewor CQlDb25zdHJDaGVjayAqY2hlY2sgPSB0dXBkZXNjLT5jb25zdHItPmNoZWNrOworCisJCS8qCisJ CSAqIERldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoIGNv bnRhaW5zCisJCSAqIG5vbi1pbW11dGFibGUgZnVuY3Rpb24uCisJCSAqLworCQlmb3IgKGkgPSAw OyBpIDwgdHVwZGVzYy0+Y29uc3RyLT5udW1fY2hlY2s7IGkrKykKKwkJeworCQkJRXhwcgkgICAq Y2hlY2tfZXhwciA9IHN0cmluZ1RvTm9kZShjaGVja1tpXS5jY2Jpbik7CisKKwkJCWlmIChjb250 YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNoZWNrX2V4cHIpKQorCQkJeworCQkJCWVu dHJ5LT5wYXJhbGxlbF9hcHBseV9kZXRhaWxzID0gXygiQ29uc3RyYWludHMgdXNlIG5vbi1pbW11 dGFibGUgZnVuY3Rpb24uIik7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisJfQorCisJZW50cnkt PnBhcmFsbGVsX2FwcGx5X2RldGFpbHMgPSBOVUxMOworfQorCiAvKgogICogT3BlbiB0aGUgbG9j YWwgcmVsYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSByZW1vdGUgb25lLgogICoKQEAgLTQzOCw2 ICs2MzAsOSBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwg TE9DS01PREUgbG9ja21vZGUpCiAJCSAqLwogCQlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJs ZShlbnRyeSk7CiAKKwkJLyogU2V0IGlmIGNoYW5nZXMgY291bGQgYmUgYXBwbGllZCB1c2luZyBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCQlsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVs X2FwcGx5KGVudHJ5KTsKKwogCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAJfQogCkBA IC02NTMsNiArODQ4LDcgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVs TWFwRW50cnkgKnJvb3QsCiAJCX0KIAkJZW50cnktPnJlbW90ZXJlbC5yZXBsaWRlbnQgPSByZW1v dGVyZWwtPnJlcGxpZGVudDsKIAkJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHko cmVtb3RlcmVsLT5hdHRrZXlzKTsKKwkJZW50cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUgPSBibXNf Y29weShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAJfQogCiAJZW50cnktPmxvY2FscmVsID0gcGFy dHJlbDsKQEAgLTY5Niw2ICs4OTIsOSBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkvKiBTZXQgaWYgdGhlIHRhYmxlJ3MgcmVwbGljYSBp ZGVudGl0eSBpcyBlbm91Z2ggdG8gYXBwbHkgdXBkYXRlL2RlbGV0ZS4gKi8KIAlsb2dpY2FscmVw X3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKKwkvKiBTZXQgaWYgY2hhbmdlcyBjb3VsZCBi ZSBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCisJbG9naWNhbHJlcF9y ZWxfbWFya19wYXJhbGxlbF9hcHBseShlbnRyeSk7CisKIAllbnRyeS0+bG9jYWxyZWx2YWxpZCA9 IHRydWU7CiAKIAkvKiBzdGF0ZSBhbmQgc3RhdGVsc24gYXJlIGxlZnQgc2V0IHRvIDAuICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCAxYzFhOGU3 OTE5Li44NzU5NGVhY2YwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFi bGVzeW5jLmMKQEAgLTkyNSw2ICs5MjUsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFy ICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCWxyZWwtPmF0dG5hbWVzID0gcGFsbG9jMChNYXhU dXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihjaGFyICopKTsKIAlscmVsLT5hdHR0eXBzID0g cGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihPaWQpKTsKIAlscmVsLT5h dHRrZXlzID0gTlVMTDsKKwlscmVsLT5hdHR1bmlxdWUgPSBOVUxMOwogCiAJLyoKIAkgKiBTdG9y ZSB0aGUgY29sdW1ucyBhcyBhIGxpc3Qgb2YgbmFtZXMuICBJZ25vcmUgdGhvc2UgdGhhdCBhcmUg bm90CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBmODA0NTYw Y2FhLi44NTM2MzY1MmFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKQEAgLTE1MjQsNiArMTUyNCwxNSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5n SW5mbyBzKQogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJQXNzZXJ0 KHdpbmZvKTsKIAorCQkJLyoKKwkJCSAqIFVubGlrZSBzdHJlYW1fY29tbWl0LCB3ZSBkb24ndCBu ZWVkIHRvIHdhaXQgaGVyZSBmb3IKKwkJCSAqIHN0cmVhbV9zdG9wIHRvIGZpbmlzaC4gQWxsb3dp bmcgdGhlIG90aGVyIHRyYW5zYWN0aW9uIHRvIGJlCisJCQkgKiBhcHBsaWVkIGJlZm9yZSBzdHJl YW1fc3RvcCBpcyBmaW5pc2hlZCBjYW4gbGVhZCB0byBmYWlsdXJlcyBpZgorCQkJICogdGhlIHVu aXF1ZSBpbmRleC9jb25zdHJhaW50IGlzIGRpZmZlcmVudCBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQK KwkJCSAqIHN1YnNjcmliZXIuIEJ1dCBmb3Igc3VjaCBjYXNlcywgd2UgZG9uJ3QgYWxsb3cgc3Ry ZWFtZWQKKwkJCSAqIHRyYW5zYWN0aW9ucyB0byBiZSBhcHBsaWVkIGluIHBhcmFsbGVsLiBTZWUK KwkJCSAqIHBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrLgorCQkJICovCiAJCQlwYXJhbGxl bF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CiAKIAkJCWVsb2coREVC VUcxLCAiYXBwbGllZCAldSBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsiLApAQCAtMjEz MSw2ICsyMTQwLDggQEAgYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJbmZvIHMpCiAJLyogU2V0 IHJlbGF0aW9uIGZvciBlcnJvciBjYWxsYmFjayAqLwogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy Zy5yZWwgPSByZWw7CiAKKwlwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJ LyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRh dGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIyNzQs NiArMjI4NSw4IEBAIGFwcGx5X2hhbmRsZV91cGRhdGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNr IGlmIHdlIGNhbiBkbyB0aGUgdXBkYXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShy ZWwpOwogCisJcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRp YWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9y ZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNDQyLDYgKzI0NTUs OCBAQCBhcHBseV9oYW5kbGVfZGVsZXRlKFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBpZiB3ZSBj YW4gZG8gdGhlIGRlbGV0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRhdGFibGUocmVsKTsKIAor CXBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRo ZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24o cmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjYyNywxMyArMjY0MiwxNCBAQCBh cHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCX0K IAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAorCXBhcnRfZW50cnkgPSBsb2dpY2Fs cmVwX3BhcnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAorCQkJCQkJCQkJCSAgIGF0 dHJtYXApOworCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUgb3IgZGVsZXRlIG9u IHRoZSBsZWFmIHBhcnRpdGlvbi4gKi8KIAlpZiAob3BlcmF0aW9uID09IENNRF9VUERBVEUgfHwg b3BlcmF0aW9uID09IENNRF9ERUxFVEUpCi0JewotCQlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9w YXJ0aXRpb25fb3BlbihyZWxtYXBlbnRyeSwgcGFydHJlbCwKLQkJCQkJCQkJCQkJICAgYXR0cm1h cCk7CiAJCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShwYXJ0X2VudHJ5KTsKLQl9CisKKwlwYXJh bGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhwYXJ0X2VudHJ5KTsKIAogCXN3aXRjaCAob3BlcmF0 aW9uKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IDgwOGY5ZWJkMGQuLjUx MWIyM2QyNjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwpAQCAtMjU0MCw2ICsyNTQw LDIzIEBAIGNvbXBhcmVfdmFsdWVzX29mX2VudW0oVHlwZUNhY2hlRW50cnkgKnRjYWNoZSwgT2lk IGFyZzEsIE9pZCBhcmcyKQogCQlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIEdldERvbWFpbkNvbnN0 cmFpbnRzIC0tLSBnZXQgRG9tYWluQ29uc3RyYWludFN0YXRlIGxpc3Qgb2Ygc3BlY2lmaWVkIGRv bWFpbiB0eXBlCisgKi8KK0xpc3QgKgorR2V0RG9tYWluQ29uc3RyYWludHMoT2lkIHR5cGVfaWQp Cit7CisJVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5OworCUxpc3QJICAgKmNvbnN0cmFpbnRzID0g TklMOworCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBFQ0FDSEVf RE9NQUlOX0NPTlNUUl9JTkZPKTsKKworCWlmICh0eXBlbnRyeS0+ZG9tYWluRGF0YSAhPSBOVUxM KQorCQljb25zdHJhaW50cyA9IHR5cGVudHJ5LT5kb21haW5EYXRhLT5jb25zdHJhaW50czsKKwor CXJldHVybiBjb25zdHJhaW50czsKK30KKwogLyoKICAqIExvYWQgKG9yIHJlLWxvYWQpIHRoZSBl bnVtRGF0YSBtZW1iZXIgb2YgdGhlIHR5cGNhY2hlIGVudHJ5LgogICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IDFkYTdiMDFjYTYuLmQ0YmM5MmM1ZTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBAIC0xMTMsNiArMTEzLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbGF0aW9uCiAJY2hhcgkJcmVwbGlkZW50OwkJLyogcmVw bGljYSBpZGVudGl0eSAqLwogCWNoYXIJCXJlbGtpbmQ7CQkvKiByZW1vdGUgcmVsYXRpb24ga2lu ZCAqLwogCUJpdG1hcHNldCAgKmF0dGtleXM7CQkvKiBCaXRtYXAgb2Yga2V5IGNvbHVtbnMgKi8K KwlCaXRtYXBzZXQgICphdHR1bmlxdWU7CQkvKiBCaXRtYXAgb2YgdW5pcXVlIGNvbHVtbnMgKi8K IH0gTG9naWNhbFJlcFJlbGF0aW9uOwogCiAvKiBUeXBlIG1hcHBpbmcgaW5mbyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAppbmRleCA3OGNkN2U3N2Y1Li40MDAz ODdiNzk3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRp b24uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApAQCAt MzEsNiArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJUmVs YXRpb24JbG9jYWxyZWw7CQkvKiByZWxjYWNoZSBlbnRyeSAoTlVMTCB3aGVuIGNsb3NlZCkgKi8K IAlBdHRyTWFwICAgICphdHRybWFwOwkJLyogbWFwIG9mIGxvY2FsIGF0dHJpYnV0ZXMgdG8gcmVt b3RlIG9uZXMgKi8KIAlib29sCQl1cGRhdGFibGU7CQkvKiBDYW4gYXBwbHkgdXBkYXRlcy9kZWxl dGVzPyAqLworCWJvb2wJCXBhcmFsbGVsX2FwcGx5X3ZhbGlkOwkvKiBDYW4gYXBwbHkgY2hhbmdl cyBpbiBhCisJCQkJCQkJCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyPyAqLworCWNvbnN0IGNo YXIgKnBhcmFsbGVsX2FwcGx5X2RldGFpbHM7CS8qIERldGFpbHMgYWJvdXQgbm90IGJlaW5nIGFi bGUgdG8KKwkJCQkJCQkJCQkgKiBhcHBseSBjaGFuZ2VzIGluIGEgcGFyYWxsZWwgYXBwbHkKKwkJ CQkJCQkJCQkgKiB3b3JrZXIuICovCiAKIAkvKiBTeW5jIHN0YXRlLiAqLwogCWNoYXIJCXN0YXRl OwpAQCAtNDcsNCArNTIsNiBAQCBleHRlcm4gTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpsb2dpY2Fs cmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcgogZXh0ZXJuIHZvaWQg bG9naWNhbHJlcF9yZWxfY2xvc2UoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwsCiAJCQkJCQkJ CSBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVsX21hcmtf cGFyYWxsZWxfYXBwbHkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSk7CisKICNlbmRpZgkJ CQkJCQkvKiBMT0dJQ0FMUkVMQVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaAppbmRleCA4N2YyZWM5ZjcyLi4yZjUxNTIxYThmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjE4LDYgKzIxOCw4IEBAIGV4dGVy biB2b2lkIHBhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnRE YXRhICphYm9ydF9kYXRhKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5f c2V0dXAodm9pZCk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0 KHZvaWQpOwogCitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKnJlbCk7CisKICNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2Vy KHdvcmtlcikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCiAKIHN0 YXRpYyBpbmxpbmUgYm9vbApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKaW5kZXggNDMxYWQ3ZjFiMy4uZWQ3YzJl N2Y0OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy90eXBjYWNoZS5oCkBAIC0xOTksNiArMTk5LDggQEAgZXh0ZXJuIHVpbnQ2 NCBhc3NpZ25fcmVjb3JkX3R5cGVfaWRlbnRpZmllcihPaWQgdHlwZV9pZCwgaW50MzIgdHlwbW9k KTsKIAogZXh0ZXJuIGludAljb21wYXJlX3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0 Y2FjaGUsIE9pZCBhcmcxLCBPaWQgYXJnMik7CiAKK2V4dGVybiBMaXN0ICpHZXREb21haW5Db25z dHJhaW50cyhPaWQgdHlwZV9pZCk7CisKIGV4dGVybiBzaXplX3QgU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnlFc3RpbWF0ZSh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnlJbml0KFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5ICosCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v bWVzb24uYnVpbGQKaW5kZXggODVkMWRkOTI5NS4uYmFhYmZiNGE2YSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi9tZXNvbi5idWlsZApAQCAtMzYsNiArMzYsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMjlf b25fZXJyb3IucGwnLAogICAgICAgJ3QvMDMwX29yaWdpbi5wbCcsCiAgICAgICAndC8wMzFfY29s dW1uX2xpc3QucGwnLAorICAgICAgJ3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwn LAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE1X3N0cmVhbS5wbAppbmRleCA2NWY0M2YwODgxLi42ZDFmZjhkNWU5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTIwNSw4ICsyMDUsMTMgQEAgbXkgJG9sZHBp ZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3Ry ZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFyeSA9IG9mZikiKTsKKyMgInN0cmVhbWluZyA9IHBhcmFs bGVsIiBkb2VzIG5vdCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UK KyMgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRB QkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsK K0FMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmlu YXJ5ID0gb2ZmKTsKK30pOwogCiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKIAkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv biBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwK aW5kZXggMDIwYWQ5NmQxZi4uMGVmYTQxZDkzMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtMTUwLDggKzE1MCwxMyBAQCBteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVhbWluZyA9IHBhcmFsbGVsIiBkb2VzIG5vdCBz dXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0aW9u IGluIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEFM VEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsKK0FMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7Cit9KTsKIAogJG5vZGVfcHVi bGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0gJG9s ZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA0MjY1ZDNiM2Y1Li44OTNmYWFh MGY1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2Fz Y2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2Fk ZS5wbApAQCAtNTAxLDYgKzUwMSwxNCBAQCB0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9C LCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAnb24nKTsKICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3Bh cmFsbGVsJwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyAic3Ry ZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlv bnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBv ZiBjb2x1bW4gImMiLgorJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRB QkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsi KTsKKyRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAoMCk7Iik7CisKIHRlc3Rf c3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICdwYXJhbGxlbCcpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCA4MmI1 ZTZjMTJlLi4yY2Q0NTNjMDNmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190 d29waGFzZV9zdHJlYW0ucGwKQEAgLTM4NCw4ICszODQsMTMgQEAgbXkgJG9sZHBpZCA9ICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgRlJPTSBwZ19z dGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0g cGFyYWxsZWwpIik7CisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3VwcG9ydCBu b24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBpbiB0aGUg ZGVmYXVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xV TU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAoMCk7CitBTFRFUiBTVUJTQ1JJUFRJT04gdGFw X3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworfSk7CiAKICRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uM2FhYTY5OWMwNwotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCkBA IC0wLDAgKzEsNjE2IEBACisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHRoZSBzYWZldHkgY2hlY2tzIG9mIHN0cmVhbWlu ZyBtb2RlICJwYXJhbGxlbCIgaW4gbG9naWNhbCByZXBsaWNhdGlvbi4KKyMgV2l0aG91dCB0aGVz ZSBzYWZldHkgY2hlY2tzLCB0aGUgc3Vic2NyaWJlcidzIGFwcGx5IHdvcmtlciBtYXkgZmFsbCBp bnRvIGFuCisjIGluZmluaXRlIHdhaXQgd2l0aG91dCB0aGUgdXNlciBrbm93aW5nLgorIworIyBG b3Igbm9ybWFsIHRhYmxlcywgd2UgdXNlIGRlYWRsb2NrLXByb2R1Y2luZyB0ZXN0IGNhc2VzIHRv IGVuc3VyZSB0aGF0IGZ1dHVyZQorIyBtb2RpZmljYXRpb25zIGRvIG5vdCBpbnZhbGlkYXRlIGNv bnN0cmFpbnQgY2hlY2tzLgorIworIyBGb3IgcGFydGl0aW9uZWQgdGFibGVzLCB3ZSBqdXN0IHVz ZSB0ZXN0IGNhc2VzIHRvIGNvbmZpcm0gdGhhdCB0aGUgY29uc3RyYWludAorIyBjaGVja3MgYXJl IGFzIGV4cGVjdGVkLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVz dDo6TW9yZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitt eSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxp c2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ J2xvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0 YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNj cmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBTZXR1cCBzdHJ1Y3R1 cmUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q1JFQVRFIFRBQkxFIHRlc3RfdGFiMSAoYSBpbnQpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQpIik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90 YWJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7CisKKyMgU2V0 dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKKyMgV2UgbmVlZCB0byB0ZXN0IG5vcm1hbCB0YWJs ZSBhbmQgcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIxIChhIGludCkiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQp Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRB QkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSBQ QVJUSVRJT04gQlkgUkFOR0UoYSkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gKExJS0UgdGVzdF90 YWJfcGFydGl0aW9uZWQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0 ZXN0X3RhYl9wYXJ0aXRpb24gREVGQVVMVCIKKyk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNh dGlvbgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4g JyBkYm5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfbm9ybWFsIEZPUiBUQUJMRSB0ZXN0X3Rh YjEsIHRlc3RfdGFiMiIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydGl0aW9uZWQgRk9SIFRBQkxFIHRlc3Rf dGFiX3BhcnRpdGlvbmVkIik7CisKK215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIKKwlDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFt ZT0kYXBwbmFtZScKKwlQVUJMSUNBVElPTiB0YXBfcHViX25vcm1hbCwgdGFwX3B1Yl9wYXJ0aXRp b25lZAorCVdJVEggKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBjb3B5X2RhdGEgPSBmYWxzZSkiKTsK KworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBJbnRl cmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxp bWl0LgorbXkgJGluICA9ICcnOworbXkgJG91dCA9ICcnOworCitteSAkdGltZXIgPSBJUEM6OlJ1 bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisK K215ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRp biwgXCRvdXQsICR0aW1lciwKKwlvbl9lcnJvcl9zdG9wID0+IDApOworCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0 aGUgcmVsYXRpb24gb24gdGhlCisjIHN1YnNjcmliZXItc2lkZSBpcyBub3QgdGhlIHVuaXF1ZSBj b2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLiBDaGVjayB0aGUKKyMgZXJyb3IgcmVwb3J0ZWQg YnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor CisjIEZpcnN0IHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5E RVggaWR4X3RhYjEgb24gdGVzdF90YWIxKGEpIik7CisKKyRpbiAuPSBxeworQkVHSU47CitJTlNF UlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMSB2YWx1ZXMoMSkiKTsKKworJGluIC49IHF7 CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRf Zm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJn ZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0 ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1 ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIxIik7CisKKyMgV2Fp dCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBw bHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAx KSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7 CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIp OworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVu IHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggdGVz dF90YWJfYl9wYXJ0aXRpb25faWR4IE9OIHRlc3RfdGFiX3BhcnRpdGlvbiAoYikiKTsKKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfcGFydGl0aW9uZWQgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5u b3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVk IiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkk b2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5v dyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJE Uk9QIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCIpOworCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDAp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsK KworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRyaWdnZXJzIHdoaWNoIGV4ZWN1dGUgbm9uLWlt bXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQgb24gdGhlCisjIHN1YnNjcmliZXIgc2lk ZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNh c2UuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgdHJpZ2dl ciBmdW5jdGlvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIyIG9uIHRlc3RfdGFiMihh KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBV TklRVUUgSU5ERVggaWR4X3RhYjIgb24gdGVzdF90YWIyKGEpIik7CisKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBGVU5DVElPTiB0cmlnZ2Vy X2Z1bmNfdGFiMV91bnNhZmUoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRcJAorICBCRUdJTgorICAg IElOU0VSVCBJTlRPIHB1YmxpYy50ZXN0X3RhYjIgVkFMVUVTIChORVcuKik7CisgICAgUkVUVVJO IE5FVzsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiB0cmlf dGFiMV91bnNhZmUKK0JFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3RfdGFiMQorRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZSgpOworQUxURVIg VEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlOwor CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpIFJFVFVSTlMgVFJJR0dF UiBBUyBcJFwkCisgIEJFR0lOCisgICAgUkFJU0UgTk9USUNFICd0ZXN0IGZvciBzYWZlIHRyaWdn ZXIgZnVuY3Rpb24nOworCVJFVFVSTiBORVc7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3Fs OworQUxURVIgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSBJTU1VVEFCTEU7CitDUkVB VEUgVFJJR0dFUiB0cmlfdGFiMV9zYWZlCitCRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0X3Rh YjEKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZl KCk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsK K0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBWQUxVRVMoNTAwMSk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YjIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+ cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRlc3RfdGFiMSBWQUxVRVMoNTAwMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7Citc cQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24g InB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5n ID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIFVzaW5nIHRyaWdnZXIgd2l0aCBpbW11dGFi bGUgZnVuY3Rpb24sIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBU UklHR0VSIHRyaV90YWIxX3NhZmU7CitEUk9QIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlIE9OIHB1 YmxpYy50ZXN0X3RhYjE7Cit9KTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjEiKTsKK2lzKCRyZXN1bHQsIHFxKDIpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCisjIENsZWFuIHVwIHRlc3Qg ZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcXsKK0RST1AgSU5ERVggaWR4X3RhYjI7CitEUk9QIFRSSUdHRVIgdHJp X3RhYjFfc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJPUCBmdW5jdGlvbiB0cmlnZ2VyX2Z1 bmNfdGFiMV91bnNhZmU7CitEUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxX3NhZmU7Cit9 KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworRFJPUCBJ TkRFWCBpZHhfdGFiMjsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxF IHRlc3RfdGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIHBhcnRpdGlv biB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsK K0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRcJAor ICBCRUdJTgorICAgIFJFVFVSTiBOVUxMOworICBFTkQKK1wkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsK K0NSRUFURSBUUklHR0VSIGluc2VydF90cmlnCitCRUZPUkUgSU5TRVJUIE9OIHRlc3RfdGFiX3Bh cnRpdGlvbgorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygpOwor QUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgaW5z ZXJ0X3RyaWc7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u Ciskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlv bmVkIik7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBb QS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0 X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcg PSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vi c2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24i KTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7 CitpcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IGRyb3BwaW5nIHRyaWdnZXInKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5v dCBhbGxvd2VkIHRoYXQgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlucyBh CisjIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sg dGhlIGVycm9yIHJlcG9ydGVkIGJ5CisjIHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisj ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1 bHQgdmFsdWUgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUg RlVOQ1RJT04gZnVuY19jb3VudF90YWIyKCkgUkVUVVJOUyBJTlQgQVMgXCRcJAorICBCRUdJTgor ICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KCopIEZST00gcHVibGljLnRlc3RfdGFiMik7CisgIEVO RAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT0xV TU4gYiBpbnQgREVGQVVMVCBmdW5jX2NvdW50X3RhYjIoKTsKK30pOworCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIyOworSU5T RVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDAp IHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisKKyRpbiAu PSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUg dGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFy YW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBBbHRlciBkZWZh dWx0IHZhbHVlcyB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi MSBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCAxIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwKKwknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nKTsKKwor IyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1Ag Q09MVU1OIGIiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx eworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyOwor fSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRo ZW4gd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb24gcGFydGl0 aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFM VEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCBy YW5kb20oKSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25l ZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICgg W0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVz dF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5n ID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUg c3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4g YiBEUk9QIERFRkFVTFQiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi X3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7 CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFp biBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlCisjIGZ1bmN0 aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBw YXJhbGxlbAorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK KyMgQmVjYXVzZSB0aGUgY29sdW1uIHR5cGUgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSBtdXN0IGJl IHRoZSBzYW1lIGFzIGl0cyBwYXJlbnQKKyMgdGFibGUsIG9ubHkgdGVzdCBub3JtYWwgdGFibGUg aGVyZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5U TyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIERPTUFJTiB0bXBfZG9tYWluIEFTIGludCBDSEVDSyAo VkFMVUUgPiAtMSk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGEgVFlQRSB0 bXBfZG9tYWluOworfSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcXsKK0NSRUFURSBET01BSU4gdG1wX2RvbWFpbiBBUyBJTlQgQ09OU1RSQUlOVCBkb21h aW5fY2hlY2sgQ0hFQ0sgKFZBTFVFID49IGZ1bmNfY291bnRfdGFiMigpKTsKK0FMVEVSIFRBQkxF IHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYSBUWVBFIHRtcF9kb21haW47Cit9KTsKKworIyBDaGVj ayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFi MjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOwor CiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVw bGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0 aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJv cCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgRE9NQUlOIHRtcF9kb21haW4g RFJPUCBDT05TVFJBSU5UIGRvbWFpbl9jaGVjayIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiMSIpOworaXMoJHJlc3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisKKyMg Q2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBD T0xVTU4gYSBUWVBFIGludCIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBUQUJMRSB0ZXN0 X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0 cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KKyMgb24g dGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVs IHdvcmtlciBpbiB0aGlzCisjIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBGaXJz dCB3ZSBjaGVjayB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3Rh YjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIx X3Vuc2FmZSBDSEVDSyhhID49IGZ1bmNfY291bnRfdGFiMigpKTsKK30pOworCisjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIyOwor SU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUw MDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisKKyRp biAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24g cGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBBbHRlciBj b25zdHJhaW50IGV4cHJlc3Npb24gdG8gaW1tdXRhYmxlIGV4cHJlc3Npb24sIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVS IFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV91bnNhZmU7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29uc3RfdGFiMV9zYWZlIENIRUNLKGEg Pj0gMCk7Cit9KTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBi ZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lz KCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRl ciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBm cm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjFf c2FmZSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitU UlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3 ZSBjaGVjayB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxF IHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24gY2hlY2sgKGEg PiByYW5kb20oKSk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiX3BhcnRp dGlvbmVkIik7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjog KCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50 ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBz dWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlO VCB0ZXN0X3RhYl9jb24iKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi X3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5 IG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvcgorIyByZXBvcnRlZCBieSBw YXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMg Rmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRhYl9u b3B1YmxpYyhhIGludCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjIgQUREIFBSSU1BUlkgS0VZIChh KTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMiBSRVBMSUNBIElERU5USVRZIEZVTEw7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpOworfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIyIEFERCBQUklNQVJZIEtFWSAo YSk7Iik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsK K0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayBGT1JFSUdO IEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiMihhKTsKK1NFTEVDVCAnQUxURVIgVEFCTEUgdGVz dF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgIicgfHwgdGduYW1lIHx8ICciJyBGUk9NIHBn X3RyaWdnZXIgV0hFUkUgdGdyZWxpZCA9ICd0ZXN0X3RhYjEnOjpyZWdjbGFzczo6b2lkIFxcZ2V4 ZWMKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOwor SU5TRVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKTsKK0lOU0VSVCBJTlRPIHRhYl9ub3B1 YmxpYyBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRo LT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVM RVRFIEZST00gdGVzdF90YWIyIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICgg W0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVz dF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVs LywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRo ZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0 X3RhYjFmayIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJl IGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOworaXMo JHJlc3VsdCwgcXEoMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRy b3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRo ZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIy OworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IFRoZW4gd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb25fZiAoYSBpbnQgcHJpbWFyeSBrZXkpOworQUxURVIgVEFCTEUgdGVz dF90YWJfcGFydGl0aW9uIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIEZPUkVJ R04gS0VZKGEpIFJFRkVSRU5DRVMgdGVzdF90YWJfcGFydGl0aW9uX2YoYSk7CitTRUxFQ1QgJ0FM VEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBFTkFCTEUgUkVQTElDQSBUUklHR0VSICInIHx8 IHRnbmFtZSB8fCAnIicgRlJPTSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQgPSAndGVzdF90YWJf cGFydGl0aW9uJzo6cmVnY2xhc3M6Om9pZCBcXGdleGVjCit9KTsKKworIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+ bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5T RVJUIElOVE8gdGVzdF90YWJfcGFydGl0aW9uZWQgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRl IHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKwor IyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRp dGlvbl9mayIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJl IGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0 aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c3RvcDsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7Ci0t IAoyLjIzLjAud2luZG93cy4xCgo= --_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v40-0004-Retrict-parallel-for-partitioned-table.patch" Content-Description: v40-0004-Retrict-parallel-for-partitioned-table.patch Content-Disposition: attachment; filename="v40-0004-Retrict-parallel-for-partitioned-table.patch"; size=18913; creation-date="Fri, 21 Oct 2022 07:36:00 GMT"; modification-date="Fri, 21 Oct 2022 09:32:18 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNGE4YjlkYWM2NzIyOWMyNDU3Y2Q4MmE2NmEwNDg4NDI1ZGJhZmIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IE1vbiwgMTAgT2N0IDIwMjIgMTE6NTU6NTggKzA4MDAKU3ViamVjdDogW1BBVENI IHY0MCA0LzZdIFJldHJpY3QgcGFyYWxsZWwgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCgpEaXNhbGxv dyByZXBsaWNhdGluZyBmcm9tIG9yIHRvIGEgcGFydGl0aW9uZWQgdGFibGUgaW4gcGFyYWxsZWwg c3RyZWFtaW5nCm1vZGUuIFRoaXMgaXMgdG8gYXZvaWQgdGhlIGRlYWRsb2NrIGNhc2VzIHdoZW4g dGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MKc3RydWN0dXJlIGlzIGRpZmZlcmVudCBiZXR3ZWVuIHB1 Ymxpc2hlciBhbmQgc3Vic2NyaWJlci4KLS0tCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAg ICAgICAgICAgICAgICAgICAgfCAgMTEgKysKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNj cmlwdGlvbi5zZ21sICAgICB8ICAgOCArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jIHwgICA3IC0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Byb3RvLmMgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVsYXRpb24uYyAgICB8ICAyNCArKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHBy b3RvLmggICAgICAgIHwgICA2ICstCiAuLi4vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0 eS5wbCAgICAgICAgfCAxMTMgKysrKysrKysrKysrKysrKy0tCiA5IGZpbGVzIGNoYW5nZWQsIDE1 OCBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4IGM2YTBl ODBiM2YuLjA1NjYxNTNlNjIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC02MzUyLDYgKzYzNTIsMTcgQEAg cHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllf U1lTVEVNOyIKICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50ODwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHJlbGF0aW9uIGtpbmQgKHNhbWUg YXMKKyAgICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxraW5kPC9zdHJ1Y3RmaWVsZD4gaW4gPHN0cnVj dG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5hbWU+KS4KKyAgICAgICAgIFRoaXMgZmllbGQgaXMgYXZh aWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24gNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICAgPHZhcmxpc3RlbnRy eT4KICAgICAgICA8dGVybT5JbnQxNjwvdGVybT4KICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDc5MjUwYWNhZjUuLjZhOGM4 MzlkY2EgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0y NDUsMTEgKzI0NSwxNSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgaW4gYQog ICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlIHJl bW90ZSB0cmFuc2FjdGlvbgogICAgICAgICAgIG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUg c2VydmVyIGxvZy4KLSAgICAgICAgICBUaGVyZSBhcmUgdHdvIHByZXJlcXVpc2l0ZXMgZm9yIHVz aW5nIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPgorICAgICAgICAgIFRoZXJlIGFyZSBzb21l IHByZXJlcXVpc2l0ZXMgZm9yIHVzaW5nIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPgogICAg ICAgICAgIG1vZGU6IDEpIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSB0YWJsZSBvbiB0aGUgc3Vi c2NyaWJlci1zaWRlIG11c3QKICAgICAgICAgICBhbHNvIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9u IHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlCiAgICAgICAgICAgYW55IG5v bi1pbW11dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNh dGVkCi0gICAgICAgICAgdGFibGUuCisgICAgICAgICAgdGFibGU7IDMpIENoYW5nZXMgb24gYSBw YXJ0aXRpb25lZCB0YWJsZSAob3Igb24gaXRzIHBhcnRpdGlvbnMpCisgICAgICAgICAgY29udGFp bmVkIGluIHRoZSBwdWJsaWNhdGlvbiBjYW5ub3QgYmUgcHVibGlzaGVkIHVzaW5nIHRoZSBpZGVu dGl0eQorICAgICAgICAgIGFuZCBzY2hlbWEgb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiBBbmQg dGhlIG5vbi1wYXJ0aXRpb25lZCB0YWJsZSBvbgorICAgICAgICAgIHRoZSBwdWJsaXNoZXItc2lk ZSBjYW5ub3QgYmUgYSBwYXJ0aXRpb25lZCB0YWJsZSBvbiB0aGUKKyAgICAgICAgICBzdWJzY3Jp YmVyLXNpZGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAg PC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGY3ODdhNTA0MTEuLmQ2NWRhMmRkZjAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0xMTE2LDEzICsxMTE2LDYgQEAgcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25f Y2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiAJaWYgKCFNeUxvZ2ljYWxSZXBXb3Jr ZXItPnBhcmFsbGVsX2FwcGx5KQogCQlyZXR1cm47CiAKLQkvKgotCSAqIFBhcnRpdGlvbiB0YWJs ZSBjaGVja3MgYXJlIGRvbmUgbGF0ZXIgaW4gZnVuY3Rpb24KLQkgKiBhcHBseV9oYW5kbGVfdHVw bGVfcm91dGluZy4KLQkgKi8KLQlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCi0JCXJldHVybjsKLQogCWlmICghcmVsLT5wYXJh bGxlbF9hcHBseV92YWxpZCkKIAkJbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShy ZWwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3Rv LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggYmQ0MDZh MDc1Zi4uY2RkYTU5MDZmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8u YwpAQCAtNzI4LDcgKzcyOCw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZv IG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogICovCiB2b2lkCiBsb2dp Y2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFJlbGF0 aW9uIHJlbCwKLQkJCQkJIEJpdG1hcHNldCAqY29sdW1ucykKKwkJCQkJIEJpdG1hcHNldCAqY29s dW1ucywgYm9vbCB3cml0ZV9yZWxraW5kKQogewogCWNoYXIJICAgKnJlbG5hbWU7CiAKQEAgLTc0 OSw2ICs3NDksMTAgQEAgbG9naWNhbHJlcF93cml0ZV9yZWwoU3RyaW5nSW5mbyBvdXQsIFRyYW5z YWN0aW9uSWQgeGlkLCBSZWxhdGlvbiByZWwsCiAJLyogc2VuZCByZXBsaWNhIGlkZW50aXR5ICov CiAJcHFfc2VuZGJ5dGUob3V0LCByZWwtPnJkX3JlbC0+cmVscmVwbGlkZW50KTsKIAorCS8qIFNl bmQgcmVsYXRpb24ga2luZCBpZiBuZWVkZWQuICovCisJaWYgKHdyaXRlX3JlbGtpbmQpCisJCXBx X3NlbmRieXRlKG91dCwgcmVsLT5yZF9yZWwtPnJlbGtpbmQpOworCiAJLyogc2VuZCB0aGUgYXR0 cmlidXRlIGluZm8gKi8KIAlsb2dpY2FscmVwX3dyaXRlX2F0dHJzKG91dCwgcmVsLCBjb2x1bW5z KTsKIH0KQEAgLTc1Nyw3ICs3NjEsNyBAQCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZv IG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFJlbGF0aW9uIHJlbCwKICAqIFJlYWQgdGhlIHJlbGF0 aW9uIGluZm8gZnJvbSBzdHJlYW0gYW5kIHJldHVybiBhcyBMb2dpY2FsUmVwUmVsYXRpb24uCiAg Ki8KIExvZ2ljYWxSZXBSZWxhdGlvbiAqCi1sb2dpY2FscmVwX3JlYWRfcmVsKFN0cmluZ0luZm8g aW4pCitsb2dpY2FscmVwX3JlYWRfcmVsKFN0cmluZ0luZm8gaW4sIGJvb2wgcmVhZF9yZWxraW5k KQogewogCUxvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsID0gcGFsbG9jKHNpemVvZihMb2dpY2FsUmVw UmVsYXRpb24pKTsKIApAQCAtNzcwLDYgKzc3NCwxMCBAQCBsb2dpY2FscmVwX3JlYWRfcmVsKFN0 cmluZ0luZm8gaW4pCiAJLyogUmVhZCB0aGUgcmVwbGljYSBpZGVudGl0eS4gKi8KIAlyZWwtPnJl cGxpZGVudCA9IHBxX2dldG1zZ2J5dGUoaW4pOwogCisJLyogUmVhZCB0aGUgcmVsYXRpb24ga2lu ZCBpZiBuZWVkZWQuICovCisJaWYgKHJlYWRfcmVsa2luZCkKKwkJcmVsLT5yZWxraW5kID0gcHFf Z2V0bXNnYnl0ZShpbik7CisKIAkvKiBHZXQgYXR0cmlidXRlIGRlc2NyaXB0aW9uICovCiAJbG9n aWNhbHJlcF9yZWFkX2F0dHJzKGluLCByZWwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggNjk1MjQ0MTEwYi4uZTVlZmRiM2JkNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMjI0LDYgKzIyNCw3IEBA IGxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZShMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkK IAkJZW50cnktPnJlbW90ZXJlbC5hdHR0eXBzW2ldID0gcmVtb3RlcmVsLT5hdHR0eXBzW2ldOwog CX0KIAllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50Owor CWVudHJ5LT5yZW1vdGVyZWwucmVsa2luZCA9IHJlbW90ZXJlbC0+cmVsa2luZDsKIAllbnRyeS0+ cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOwogCWVudHJ5 LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHR1bmlxdWUpOwog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwpAQCAtMzUxLDEwICszNTIsMTEgQEAgbG9n aWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkK ICAqIHdvcmtlciBhbmQgYXNzaWduIHRoZSAncGFyYWxsZWxfYXBwbHlfdmFsaWQnIGZsYWcgYW5k CiAgKiAncGFyYWxsZWxfYXBwbHlfZGV0YWlscycgZmllbGQuCiAgKgotICogVGhlcmUgYXJlIHR3 byByZXF1aXJlbWVudHMgZm9yIGFwcGx5aW5nIGNoYW5nZXMgdXNpbmcgYSBwYXJhbGxlbCBhcHBs eQotICogd29ya2VyOiAxKSB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1 YnNjcmliZXItc2lkZSBzaG91bGQgYWxzbwotICogYmUgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhl IHB1Ymxpc2hlci1zaWRlOyAyKSB0aGVyZSBjYW5ub3QgYmUgYW55Ci0gKiBub24taW1tdXRhYmxl IGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZCB0YWJsZS4K KyAqIFRoZXJlIGFyZSBzb21lIHJlcXVpcmVtZW50cyBmb3IgYXBwbHlpbmcgY2hhbmdlcyB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXI6IDEpIHJlcGxpY2F0ZSBmcm9tIG9yIGludG8g YSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3QgYWxsb3dlZDsgMikgdGhlCisgKiB1bmlxdWUgY29s dW1uIGluIHRoZSB0YWJsZSBvbiB0aGUgc3Vic2NyaWJlci1zaWRlIHNob3VsZCBhbHNvIGJlIHRo ZSB1bmlxdWUKKyAqIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDMpIHRoZXJlIGNhbm5v dCBiZSBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMKKyAqIHVzZWQgYnkgdGhlIHN1YnNjcmli ZXItc2lkZSByZXBsaWNhdGVkIHRhYmxlLgogICoKICAqIFdpdGhvdXQgdGhlc2Ugc2FmZXR5IGNo ZWNrcywgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBtYXkgb2NjdXI6IFRoZSBwYXJhbGxlbAogICog YXBwbHkgd29ya2VyIGxvY2tzIGEgcm93IHdoZW4gcHJvY2Vzc2luZyBhIHN0cmVhbWluZyB0cmFu c2FjdGlvbiwgYWZ0ZXIKQEAgLTM4NSw5ICszODcsMTcgQEAgbG9naWNhbHJlcF9yZWxfbWFya19w YXJhbGxlbF9hcHBseShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogCiAJZW50cnktPnBh cmFsbGVsX2FwcGx5X3ZhbGlkID0gdHJ1ZTsKIAorCS8qIDEpIENoZWNrIGlmIHJlcGxpY2F0ZSBm cm9tIG9yIGludG8gYSBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlpZiAoZW50cnktPnJlbW90ZXJl bC5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgfHwKKwkJZW50cnktPmxvY2Fs cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwl7CisJ CWVudHJ5LT5wYXJhbGxlbF9hcHBseV9kZXRhaWxzID0gXygiUmVwbGljYXRlIGZyb20gb3IgaW50 byBhIHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBhbGxvd2VkLiIpOworCQlyZXR1cm47CisJfQor CiAJLyoKLQkgKiBGaXJzdCwgY2hlY2sgaWYgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0 aW9uIG9uIHRoZQotCSAqIHN1YnNjcmliZXItc2lkZSBpcyBhbHNvIHRoZSB1bmlxdWUgY29sdW1u IG9uIHRoZSBwdWJsaXNoZXItc2lkZS4KKwkgKiAyKSBDaGVjayBpZiB0aGUgdW5pcXVlIGNvbHVt biBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNjcmliZXItc2lkZQorCSAqIGlzIGFsc28gdGhl IHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLgogCSAqLwogCXVrZXkgPSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCiAJCQkJCQkJCQkgIElOREVY X0FUVFJfQklUTUFQX0tFWSk7CkBAIC00MTIsNyArNDIyLDcgQEAgbG9naWNhbHJlcF9yZWxfbWFy a19wYXJhbGxlbF9hcHBseShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogCX0KIAogCS8q Ci0JICogVGhlbiwgY2hlY2sgaWYgdGhlcmUgaXMgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24g dXNlZCBieSB0aGUKKwkgKiAzKSBDaGVjayBpZiB0aGVyZSBpcyBhbnkgbm9uLWltbXV0YWJsZSBm dW5jdGlvbiB1c2VkIGJ5IHRoZQogCSAqIHN1YnNjcmliZXItc2lkZSByZWxhdGlvbi4gTG9vayBm b3IgZnVuY3Rpb25zIGluIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgogCSAqIGEuIHRyaWdnZXIgZnVu Y3Rpb25zOyBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluCiAJ ICogY29uc3RyYWludHM7IGMuIENvbnN0cmFpbnQgZXhwcmVzc2lvbnM7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA4NTM2MzY1MmFjLi4xZmJhNGVmNjY3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIwMjMsNyArMjAy Myw3IEBAIGFwcGx5X2hhbmRsZV9yZWxhdGlvbihTdHJpbmdJbmZvIHMpCiAJaWYgKGhhbmRsZV9z dHJlYW1lZF90cmFuc2FjdGlvbihMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04sIHMpKQogCQlyZXR1 cm47CiAKLQlyZWwgPSBsb2dpY2FscmVwX3JlYWRfcmVsKHMpOworCXJlbCA9IGxvZ2ljYWxyZXBf cmVhZF9yZWwocywgTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSk7CiAJbG9naWNh bHJlcF9yZWxtYXBfdXBkYXRlKHJlbCk7CiAKIAkvKiBBbHNvIHJlc2V0IGFsbCBlbnRyaWVzIGlu IHRoZSBwYXJ0aXRpb24gbWFwIHRoYXQgcmVmZXIgdG8gcmVtb3RlcmVsLiAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggYzNhY2NmMjhlNC4uMGQ3 YWJiZWIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CkBAIC03NDEsNiArNzQxLDggQEAgc2VuZF9yZWxhdGlvbl9hbmRfYXR0cnMoUmVsYXRpb24gcmVs YXRpb24sIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LAogCQkJCQkJQml0bWFwc2V0ICpjb2x1bW5zKQogeworCVBHT3V0cHV0RGF0YSAqZGF0YSA9 IChQR091dHB1dERhdGEgKikgY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisJYm9vbAkJd3Jp dGVfcmVsa2luZCA9IChkYXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX1BBUkFMTEVMKTsKIAlU dXBsZURlc2MJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOwogCWludAkJCWk7CiAK QEAgLTc3Miw3ICs3NzQsNyBAQCBzZW5kX3JlbGF0aW9uX2FuZF9hdHRycyhSZWxhdGlvbiByZWxh dGlvbiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJfQogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRl KGN0eCwgZmFsc2UpOwotCWxvZ2ljYWxyZXBfd3JpdGVfcmVsKGN0eC0+b3V0LCB4aWQsIHJlbGF0 aW9uLCBjb2x1bW5zKTsKKwlsb2dpY2FscmVwX3dyaXRlX3JlbChjdHgtPm91dCwgeGlkLCByZWxh dGlvbiwgY29sdW1ucywgd3JpdGVfcmVsa2luZCk7CiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCBm YWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxw cm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggZDRi YzkyYzVlMi4uZWIxMjYxNDMzNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmgKQEAgLTI0OCw4ICsyNDgsMTAgQEAgZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBfcmVhZF90cnVu Y2F0ZShTdHJpbmdJbmZvIGluLAogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9tZXNzYWdl KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCiAJCQkJ CQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3osIGNv bnN0IGNoYXIgKm1lc3NhZ2UpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9yZWwoU3Ry aW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBC aXRtYXBzZXQgKmNvbHVtbnMpOwotZXh0ZXJuIExvZ2ljYWxSZXBSZWxhdGlvbiAqbG9naWNhbHJl cF9yZWFkX3JlbChTdHJpbmdJbmZvIGluKTsKKwkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgQml0bWFw c2V0ICpjb2x1bW5zLAorCQkJCQkJCQkgYm9vbCB3cml0ZV9yZWxraW5kKTsKK2V4dGVybiBMb2dp Y2FsUmVwUmVsYXRpb24gKmxvZ2ljYWxyZXBfcmVhZF9yZWwoU3RyaW5nSW5mbyBpbiwKKwkJCQkJ CQkJCQkJICAgYm9vbCByZWFkX3JlbGtpbmQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0 ZV90eXAoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkgT2lkIHR5 cG9pZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfdHlwKFN0cmluZ0luZm8gaW4sIExv Z2ljYWxSZXBUeXAgKmx0eXApOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbAppbmRleCAzYWFhNjk5YzA3Li4yMTk1 MDcwNDM0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5n X3BhcmFsbGVsX3NhZmV0eS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3Ry ZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbApAQCAtMzQsNyArMzQsMjAgQEAgJG5vZGVfc3Vic2Ny aWJlci0+c3RhcnQ7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JF QVRFIFRBQkxFIHRlc3RfdGFiMSAoYSBpbnQpIik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQpIik7CiAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDUkVBVEUgVEFCTEUgdGVzdF90YWJf cGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7CisJIkNSRUFURSBU QUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdmFyY2hhcikg UEFSVElUSU9OIEJZIFJBTkdFKGEpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gKExJS0UgdGVzdF90 YWJfcGFydGl0aW9uZWQpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRl c3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9zY2hlbWFfcGFyZW50IChhIGlu dCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFC TEUgdGVzdF90YWJfc2NoZW1hX2NoaWxkMSAoYSBpbnQpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfdmlhcm9vdF9wYXJl bnQgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3ZpYXJvb3RfY2hpbGQx IFBBUlRJVElPTiBPRiB0ZXN0X3RhYl92aWFyb290X3BhcmVudCBERUZBVUxUIik7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3Zp YXJvb3RfY2hpbGQyIChhIGludCkiKTsKIAogIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJl cgogIyBXZSBuZWVkIHRvIHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFibGUuCkBA IC00OSwxOSArNjIsMzMgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVz dF90YWJfcGFydGl0aW9uIERFRkFVTFQiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9zY2hlbWFfcGFyZW50IChhIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfc2NoZW1hX2NoaWxkMSBQQVJUSVRJ T04gT0YgdGVzdF90YWJfc2NoZW1hX3BhcmVudCBERUZBVUxUIik7CisKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3ZpYXJvb3Rf cGFyZW50IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKSIpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfdmlhcm9vdF9j aGlsZDEgUEFSVElUSU9OIE9GIHRlc3RfdGFiX3ZpYXJvb3RfcGFyZW50IEZPUiBWQUxVRVMgRlJP TSAoTUlOVkFMVUUpIFRPICgyKTsiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3ZpYXJvb3RfY2hpbGQyIFBBUlRJVElPTiBP RiB0ZXN0X3RhYl92aWFyb290X3BhcmVudCBGT1IgVkFMVUVTIEZST00gKDIpIFRPIChNQVhWQUxV RSkiKTsKKwogIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCiBteSAkcHVibGlzaGVyX2Nvbm5z dHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1Yl9ub3JtYWwgRk9SIFRBQkxFIHRlc3RfdGFiMSwgdGVzdF90YWIyIik7CiAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFw X3B1Yl9wYXJ0aXRpb25lZCBGT1IgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0 ZXN0X3B1Yl9wYXJ0aXRpb25lZF9zY2hlbWEgRk9SIFRBQkxFIHRlc3RfdGFiX3NjaGVtYV9wYXJl bnQsIHRlc3RfdGFiX3NjaGVtYV9jaGlsZDE7IgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0ZXN0X3B1Yl9wYXJ0aXRpb25l ZF92aWFyb290IEZPUiBUQUJMRSB0ZXN0X3RhYl92aWFyb290X3BhcmVudCwgdGVzdF90YWJfdmlh cm9vdF9jaGlsZDEsIHRlc3RfdGFiX3ZpYXJvb3RfY2hpbGQyIFdJVEggKFBVQkxJU0hfVklBX1BB UlRJVElPTl9ST09UKTsiCispOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCAiCiAJQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViCiAJQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25h bWU9JGFwcG5hbWUnCi0JUFVCTElDQVRJT04gdGFwX3B1Yl9ub3JtYWwsIHRhcF9wdWJfcGFydGl0 aW9uZWQKKwlQVUJMSUNBVElPTiB0YXBfcHViX25vcm1hbCwgdGFwX3B1Yl9wYXJ0aXRpb25lZCwK Kwl0ZXN0X3B1Yl9wYXJ0aXRpb25lZF9zY2hlbWEsIHRlc3RfcHViX3BhcnRpdGlvbmVkX3ZpYXJv b3QKIAlXSVRIIChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgY29weV9kYXRhID0gZmFsc2UpIik7CiAK ICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CkBAIC0xMjksNyAr MTU2LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICk7CiAKICRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKLQlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8g Y2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRp b25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8s CisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0 aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1l dGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAogIyBEcm9wIHRoZSB1bmlx dWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KQEAgLTI1Myw3ICsyODAs NyBAQCAkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRp b25lZCIpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCi0JcXIvRVJST1I6ICgg W0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVz dF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5n ID0gcGFyYWxsZWwvLAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRl IHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbiIgdXNpbmcgc3Vic2Ny aXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKICMg RHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgpAQCAtMzQz LDcgKzM3MCw3IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiApOwog CiAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCi0JcXIvRVJST1I6ICggW0EtWjAtOV0r Oik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFy dGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxs ZWwvLAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCBy ZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBh cmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKICMgRHJvcCBkZWZh dWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCkBAIC00OTgsNyArNTI1 LDcgQEAgJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CiAkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJfcGFydGl0 aW9uZWQiKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAotCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0 ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb24iIHVzaW5nIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCiAj IERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgpAQCAtNTk0 LDcgKzYyMSw3IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiApOwog CiAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCi0JcXIvRVJST1I6ICggW0EtWjAtOV0r Oik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFy dGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxs ZWwvLAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCBy ZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBh cmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKICMgRHJvcCB0aGUg Zm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgpA QCAtNjEwLDYgKzYzNyw3OCBAQCAkcmVzdWx0ID0KIGlzKCRyZXN1bHQsIHFxKDUwMDApLAogCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBr ZXknKTsKIAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQg dGhlIG5vbi1wYXJ0aXRpb25lZCB0YWJsZSBvbiB0aGUgcHVibGlzaGVyLXNpZGUgaXMgYQorIyBw YXJ0aXRpb25lZCB0YWJsZSBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLiBDaGVjayB0aGUgZXJyb3Ig cmVwb3J0ZWQgYnkKKyMgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lO OworSU5TRVJUIElOVE8gdGVzdF90YWJfc2NoZW1hX3BhcmVudCBTRUxFQ1QgaSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgdGVzdF90YWJfc2NoZW1hX2No aWxkMSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBj YW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3NjaGVtYV9w YXJlbnQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwv LAorCSRvZmZzZXQpOworCisjIENoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiBmcm9tICJwYXJh bGxlbCIgdG8gIm9uIiwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoc3RyZWFtaW5n ID0gdHJ1ZSkiCispOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRv IGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3NjaGVt YV9wYXJlbnQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciB1bmlmeWluZyB0aGUgdGFibGUgc2NoZW1hJyk7CisKKyMgUmVzZXQg dGhlIHN0cmVhbWluZyBvcHRpb24uCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJh bGxlbCkiCispOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgSXQgaXMgbm90IGFsbG93ZWQg dGhhdCB0aGUgcGFydGl0aW9uZWQgdGFibGUgb24gdGhlIHB1Ymxpc2hlci1zaWRlIGlzCisjIHB1 Ymxpc2hlZCB3aXRoIHNwZWNpZnlpbmcgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QuIENoZWNr IHRoZSBlcnJvcgorIyByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAu PSBxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYl92aWFyb290X3BhcmVudCBTRUxFQ1Qg aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgdGVzdF90 YWJfdmlhcm9vdF9jaGlsZDIiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5m aW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBb QS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0 X3RhYl92aWFyb290X3BhcmVudCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAk bm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v40-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v40-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v40-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=63349; creation-date="Fri, 21 Oct 2022 07:36:00 GMT"; modification-date="Fri, 21 Oct 2022 09:32:19 GMT" Content-Transfer-Encoding: base64 RnJvbSBiZDRkOWZiN2ExNTAxZTkwNTRiOTE0NDc1YjljMGI5M2I5NjYyODI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjQgQXVnIDIwMjIgMjE6MDc6NDQgKzA4MDAKU3ViamVjdDogW1BBVENI IHY0MCA1LzZdIFJldHJ5IHRvIGFwcGx5IHN0cmVhbWluZyB4YWN0IG9ubHkgaW4gYXBwbHkgd29y a2VyCgpXaGVuIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGlzIHNldCBzdHJlYW1pbmc9cGFy YWxsZWwsIHRoZSBsb2dpYyB0cmllcyB0bwphcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJZiB0aGlzCmZhaWxzIHRoZSBwYXJhbGxl bCB3b3JrZXIgZXhpdHMgd2l0aCBhbiBlcnJvci4KCkluIHRoaXMgY2FzZSwgcmV0cnkgYXBwbHlp bmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbm9ybWFsCnN0cmVhbWluZz1v biBtb2RlLiBUaGlzIGlzIGRvbmUgdG8gYXZvaWQgZ2V0dGluZyBjYXVnaHQgaW4gYSBsb29wIG9m IHRoZSBzYW1lCnJldHJ5IGVycm9ycy4KCkEgbmV3IGZsYWcgZmllbGQgInN1YnJldHJ5IiBoYXMg YmVlbiBpbnRyb2R1Y2VkIHRvIGNhdGFsb2cgInBnX3N1YnNjcmlwdGlvbiIuCklmIHRoZSBzdWJz Y3JpYmVyIGV4aXRzIHdpdGggYW4gZXJyb3IsIHRoaXMgZmxhZyB3aWxsIGJlIHNldCB0cnVlLCBh bmQKd2hlbmV2ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LCB0aGlz IGZsYWcgaXMgcmVzZXQgZmFsc2UuCk5vdywgd2hlbiBkZWNpZGluZyBob3cgdG8gYXBwbHkgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIHRoZSBsb2dpYyBjYW4ga25vdyBpZgp0aGlzIHRyYW5zYWN0 aW9uIGhhcyBwcmV2aW91c2x5IGZhaWxlZCBvciBub3QgKGJ5IGNoZWNraW5nIHRoZSAic3VicmV0 cnkiCmZpZWxkKS4KCkluIGFkZGl0aW9uLCB3aGVuIGludHJvZHVjZWQgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB3ZSBhZGRlZCBzb21lIGxvZyBjaGVja3MgdG8KZW5zdXJlIHRoYXQgc3RyZWFtZWQg dHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KQnV0IHNp bmNlIHdlIGludHJvZHVjZWQgInJldHJ5IiBub3csIHdlIHdpbGwgbm90IGJlIGFibGUgdG8gY29u ZmlybSB3aGV0aGVyCnN0cmVhbWVkIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQgaW4gcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBTbyByZW1vdmVkCnRoZXNlIGxvZyBjaGVja3MuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIGRvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAxMSArLQogZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA1ICsKIHNyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMSArCiAuLi4vcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMTggKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDE4NyArKysrKysrKysrKysrLS0tLS0K IHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgIHwgICA1ICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICB8ICA1NiArLS0tLS0K IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8ICA0NSArLS0t LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgIDUxICst LS0tCiAuLi4vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAgfCAgNTYg Ky0tLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAgICAgfCAg NDYgKy0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8 ICA1NCAtLS0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgICAg IHwgIDY2ICstLS0tLS0KIC4uLi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsICAg ICAgICB8IDE1MCArKysrKysrLS0tLS0tLQogMTggZmlsZXMgY2hhbmdlZCwgMjc1IGluc2VydGlv bnMoKyksIDQ5MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGM1NzY5ZGEyNmIuLjc5 Mjc0OWM1NjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03OTI3LDYgKzc5MjcsMTUgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8 cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0 cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkgY2hhbmdlIGZhaWxlZCwgbmVjZXNz aXRhdGluZyBhIHJldHJ5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnN1YmNvbm5pbmZv PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sCmluZGV4IDllNzUzZmU2ODIuLjYyMjljZWJkNzUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTM0MywxMiArMTM0MywxMSBAQCBDT05URVhUOiAgcHJv Y2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVy aW5nICJJTlNFUgogCiAgIDxwYXJhPgogICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxp dGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgotICAgZmFpbGVkIHRy YW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVj ZXNzYXJ5IHRvCi0gICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAotICAgY2F1c2UgdGhlIHNhbWUg Y29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rp b24gd2lsbAotICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBv ZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKLSAgIGxpbmtlbmQ9InNxbC1hbHRl cnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgotICAgU0tJUDwv Y29tbWFuZD48L2xpbms+LgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dl ZC4gSW4gdGhhdCBjYXNlLCB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uCisgICB3aWxsIGJlIHJldHJp ZWQgaW4gPGxpdGVyYWw+c3RyZWFtaW5nID0gb248L2xpdGVyYWw+IG1vZGUuIElmIGl0IGZhaWxz CisgICBhZ2FpbiwgdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxs IGJlIHdyaXR0ZW4gdG8gdGhlCisgICBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlz aCBMU04sIHBsZWFzZSByZWZlciB0bworICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2Ny aXB0aW9uIj48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFNLSVA8L2NvbW1hbmQ+PC9s aW5rPi4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwKaW5kZXggNmE4YzgzOWRjYS4uNzA2ZGQ2NGNkOSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI1NCw2ICsyNTQsMTEgQEAgQ1JF QVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0 aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICBhbmQgc2NoZW1hIG9mIHRoZSBwYXJ0aXRp b25lZCB0YWJsZS4gQW5kIHRoZSBub24tcGFydGl0aW9uZWQgdGFibGUgb24KICAgICAgICAgICB0 aGUgcHVibGlzaGVyLXNpZGUgY2Fubm90IGJlIGEgcGFydGl0aW9uZWQgdGFibGUgb24gdGhlCiAg ICAgICAgICAgc3Vic2NyaWJlci1zaWRlLgorICAgICAgICAgIFdoZW4gYXBwbHlpbmcgYSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24sIGlmIGVpdGhlciByZXF1aXJlbWVudCBpcyBub3QKKyAgICAgICAg ICBtZXQsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBleGl0IHdpdGggYW4gZXJyb3Iu CisgICAgICAgICAgVGhlIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiBtb2RlIGlzIGRpc3Jl Z2FyZGVkIHdoZW4gcmV0cnlpbmc7CisgICAgICAgICAgaW5zdGVhZCB0aGUgdHJhbnNhY3Rpb24g d2lsbCBiZSBhcHBsaWVkIHVzaW5nIDxsaXRlcmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1v ZGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJs aXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCBhNTA2ZmMz ZWM4Li43MjNiMTQxYzc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAg LTcxLDYgKzcxLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29r KQogCXN1Yi0+c3RyZWFtID0gc3ViZm9ybS0+c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0 ZSA9IHN1YmZvcm0tPnN1YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJm b3JtLT5zdWJkaXNhYmxlb25lcnI7CisJc3ViLT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5Owog CiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBU SU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDJkODEwNGIwOTAu LmMyYzdkOGE4YjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEzMDEs NyArMTMwMSw3IEBAIFJFVk9LRSBBTEwgT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBG Uk9NIHB1YmxpYzsKIFJFVk9LRSBBTEwgT04gcGdfc3Vic2NyaXB0aW9uIEZST00gcHVibGljOwog R1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVy LCBzdWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdv cGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAotICAgICAgICAgICAgICBzdWJzbG90bmFtZSwg c3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBzdWJvcmlnaW4pCisgICAgICAgICAgICAg IHN1YnJldHJ5LCBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBz dWJvcmlnaW4pCiAgICAgT04gcGdfc3Vic2NyaXB0aW9uIFRPIHB1YmxpYzsKIAogQ1JFQVRFIFZJ RVcgcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYwppbmRleCA1YzU4ZmU1ZjM5Li4zODAzZWY0MGI4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC02MzUsNiArNjM1LDcgQEAgQ3JlYXRlU3Vi c2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3Rt dCwKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6CiAJCQkJCSBMT0dJ Q0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJU0FCTEVEKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3ViZGlzYWJsZW9uZXJyIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5kaXNhYmxlb25l cnIpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdl dERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8g LSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0RGF0dW0oY29ubmluZm8pOwogCWlmIChvcHRzLnNsb3Rf bmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMKaW5kZXggZDY1ZGEyZGRmMC4uNDQ2MGFkMDgwNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMK QEAgLTE0Niw2ICsxNDYsMTggQEAgcGFyYWxsZWxfYXBwbHlfY2FuX3N0YXJ0KFRyYW5zYWN0aW9u SWQgeGlkKQogCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxz bikpCiAJCXJldHVybiBmYWxzZTsKIAorCS8qCisJICogRG9uJ3QgdXNlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMgZm9yIHJldHJpZXMsIGJlY2F1c2UgaXQgaXMgcG9zc2libGUKKwkgKiB0aGF0IHRo ZSBsYXN0IHRpbWUgd2UgdHJpZWQgdG8gYXBwbHkgYSB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFs bGVsCisJICogYXBwbHkgd29ya2VyIHRoZSBjaGVja3MgZmFpbGVkIChzZWUgZnVuY3Rpb24KKwkg KiBwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjaykuCisJICovCisJaWYgKE15U3Vic2NyaXB0 aW9uLT5yZXRyeSkKKwl7CisJCWVsb2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBh cmUgbm90IHVzZWQgZm9yIHJldHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCS8qCiAJ ICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCB1c2lu ZyBhIHBhcmFsbGVsCiAJICogYXBwbHkgd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIg dG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYQpAQCAtMTExMyw3ICsxMTI1LDcgQEAgdm9pZAogcGFy YWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiB7 CiAJLyogU2tpcCBpZiBub3QgaW4gcGFyYWxsZWwgbW9kZSAqLwotCWlmICghTXlMb2dpY2FsUmVw V29ya2VyLT5wYXJhbGxlbF9hcHBseSkKKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxs ZWxfYXBwbHkgfHwgTXlTdWJzY3JpcHRpb24tPnJldHJ5KQogCQlyZXR1cm47CiAKIAlpZiAoIXJl bC0+cGFyYWxsZWxfYXBwbHlfdmFsaWQpCkBAIC0xMTI2LDcgKzExMzgsNSBAQCBwYXJhbGxlbF9h cHBseV9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIAkJCQkJCSJz dWJzY3JpcHRpb24gcGFyYW1ldGVyICVzIiwKIAkJCQkJCXJlbC0+cmVtb3RlcmVsLm5zcG5hbWUs IHJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCiAJCQkJCQkic3RyZWFtaW5nID0gcGFyYWxsZWwiKSwK LQkJCQkgZXJyZGV0YWlsX2ludGVybmFsKCIlcyIsIHJlbC0+cGFyYWxsZWxfYXBwbHlfZGV0YWls cyksCi0JCQkJIGVycmhpbnQoIlBsZWFzZSBjaGFuZ2UgdG8gdXNlIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgJXMuIiwKLQkJCQkJCSAic3RyZWFtaW5nID0gb24iKSkpOworCQkJCSBlcnJkZXRhaWxf aW50ZXJuYWwoIiVzIiwgcmVsLT5wYXJhbGxlbF9hcHBseV9kZXRhaWxzKSkpOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMWZiYTRlZjY2Ny4uZmJiM2M1 ZjYxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zOTMs NyArMzkzLDcgQEAgc3RhdGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3Ms IGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KTsKIAogc3RhdGljIHZvaWQgc3RvcmVfZmx1 c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKIAotc3RhdGljIHZvaWQgRGlzYWJs ZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CitzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0 aW9uT25FcnJvcih2b2lkKTsKIAogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBw bHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLApAQCAt NDMzLDYgKzQzMyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8odm9pZCk7CiBzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25f YXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqKndpbmZvKTsKIAorc3RhdGljIHZvaWQgc2V0X3N1YnNjcmlwdGlvbl9y ZXRyeShib29sIHJldHJ5KTsKKwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUg c3Vic2NyaXB0aW9uLgogICoKQEAgLTEwMDIsNiArMTAwNCw5IEBAIGFwcGx5X2hhbmRsZV9jb21t aXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0 X2RhdGEpOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcg c3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29t bWl0X2RhdGEuZW5kX2xzbik7CiAKQEAgLTExMTEsNiArMTExNiw5IEBAIGFwcGx5X2hhbmRsZV9w cmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwog CisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRh LmVuZF9sc24pOwogCkBAIC0xMTY3LDYgKzExNzUsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3By ZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEu ZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0 aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8q IFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxs ZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAK QEAgLTEyMjgsNiArMTIzOSw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJp bmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19l bmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyog UHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxl bC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5k X2xzbik7CiAKQEAgLTEyODIsNiArMTI5Niw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFy ZShTdHJpbmdJbmZvIHMpCiAKIAkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVk IGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCisJCQkvKiBSZXNl dCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwog CQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKQEAgLTEz MDksNiArMTMyNiw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMp CiAJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCQkJc3RvcmVfZmx1c2hfcG9z aXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxh Zy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCQkJYnJlYWs7CiAKIAkJ Y2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKQEAgLTE2NzcsNiArMTY5NywxMCBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCSAqIHNlcmlhbGl6ZWQgdG8gZmls ZS4KIAkJCSAqLwogCQkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CisKKwkJ CS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQkJ c2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTcwNiw2ICsxNzMwLDkgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQl7CiAJCQkJcGFyYWxsZWxfYXBwbHlf cmVwbG9yaWdpbl9zZXR1cCgpOwogCQkJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKHdpbmZv LCB4aWQpOworCisJCQkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCQkJc2V0X3N1YnNj cmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0xODg2LDYgKzE5 MTMsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAkJCS8q IFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5m by4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHhpZCk7CisKKwkJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMOgpAQCAtMTkyMiw2ICsxOTUyLDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9j b21taXQoU3RyaW5nSW5mbyBzKQogCQkJICogc3Vic2tpcGxzbi4KIAkJCSAqLwogCQkJY2xlYXJf c3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQkvKiBS ZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2Up OwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKQEAgLTM5OTQsMjAg KzQwMjcsMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3Ms IGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1p dCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8g YW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1p dEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVy cm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUg d29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uICovCisJCXBnc3RhdF9y ZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwog CQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRp b25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2Vy IGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1 cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFu Ci0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24o KTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5v aWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JF X1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgp OwogCkBAIC00MDMyLDIwICs0MDczLDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2lu X3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJy b3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQor CQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVw b3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUo KTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZh aWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0 aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNf d29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlz YWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVw b3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQot CQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNl bnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3Jp cHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0 aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5E X1RSWSgpOwogfQpAQCAtNDMzMiwzOSArNDM4MCwyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUg c3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5Lgor ICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBz dGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJz Y3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdl LCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUK LQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0 T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lO VEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVy IHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2Ny aXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3Rh Ymxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3Jp cHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkg dGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlm eSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJ CQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBv ZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXByb2NfZXhp dCgwKTsKIH0KIAogLyoKQEAgLTQ2NDAsMyArNDY2OSw2NyBAQCBnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndp bmZvKQogCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKIAl9CiB9CisKKy8qCisgKiBT ZXQgc3VicmV0cnkgb2YgcGdfc3Vic2NyaXB0aW9uIGNhdGFsb2cuCisgKgorICogSWYgcmV0cnkg aXMgdHJ1ZSwgc3Vic2NyaWJlciBpcyBhYm91dCB0byBleGl0IHdpdGggYW4gZXJyb3IuIE90aGVy d2lzZSwgaXQKKyAqIG1lYW5zIHRoYXQgdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHN1Y2Nl c3NmdWxseS4KKyAqLworc3RhdGljIHZvaWQKK3NldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCBy ZXRyeSkKK3sKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlzdGFydGVk X3R4ID0gZmFsc2U7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlib29s CQlyZXBsYWNlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNf cGdfc3Vic2NyaXB0aW9uXTsKKworCS8qIEZhc3QgcGF0aCAtIGlmIG5vIHN0YXRlIGNoYW5nZSB0 aGVuIG5vdGhpbmcgdG8gZG8gKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5 KQorCQlyZXR1cm47CisKKwkvKiBGYXN0IHBhdGggLSBza2lwIGZvciBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisK KwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJLyogTG9vayB1cCB0aGUgc3Vic2Ny aXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25S ZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkx KFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oTXlTdWJzY3JpcHRp b24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1Is ICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgTXlTdWJzY3JpcHRpb24tPm5h bWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBNeVN1YnNj cmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIEZvcm0gYSBu ZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNl dChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2Us IHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOworCXJl cGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJdHVw ID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywg bnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAqLwor CUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENsZWFu dXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7 CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCAwMWIyYjYwMGViLi4xYTRiNGE3OTZjIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1 MDgsOCArNDUwOCw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9 IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2Ug ZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9y aW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBH ZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBz dWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlz IHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lk ID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAi b2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCAwMTZhZmJjMjA0 Li4zNmMxODAxMTUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTg4 LDYgKzg4LDkgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxh dGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJkaXNhYmxlb25l cnI7CS8qIFRydWUgaWYgYSB3b3JrZXIgZXJyb3Igc2hvdWxkIGNhdXNlIHRoZQogCQkJCQkJCQkJ ICogc3Vic2NyaXB0aW9uIHRvIGJlIGRpc2FibGVkICovCiAKKwlib29sCQlzdWJyZXRyeSBCS0lf REVGQVVMVChmKTsJLyogVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkKKwkJCQkJCQkJCQkJICog Y2hhbmdlIGZhaWxlZC4gKi8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUt bGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhl IHB1Ymxpc2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVMTDsKQEAg LTEzMSw2ICsxMzQsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQlkaXNh Ymxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJ CQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCiAJCQkJCQkJ CSAqIG9jY3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgcHJldmlv dXMgYXBwbHkgY2hhbmdlCisJCQkJCQkJCSAqIGZhaWxlZC4gKi8KIAljaGFyCSAgICpjb25uaW5m bzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpz bG90bmFtZTsJCS8qIE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFyCSAgICpz eW5jY29tbWl0OwkJLyogU3luY2hyb25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtlciAqLwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggNmQxZmY4ZDVlOS4uNzQyYmNl MDkxZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDUyICs4LDIy IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBi eSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkg KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFy YWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24g ZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0K LX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSBy ZWxhdGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBi ZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVs IGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgSW50ZXJs ZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1p dC4KIAlteSAkaW4gID0gJyc7CiAJbXkgJG91dCA9ICcnOwogCi0JbXkgJG9mZnNldCA9IDA7Ci0K IAlteSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnRpbWVvdXRfZGVmYXVsdCk7CiAKIAlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAJCW9uX2Vycm9yX3N0b3Ag PT4gMCk7CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBh cmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdlIGhhdmUgdG8g bG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0 aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1 YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQotCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJJGluIC49IHF7CiAJQkVHSU47CiAJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOwpAQCAtNzgsOCArNDgsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCW15 ICRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7CkBAIC05MCw5ICs1OCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIg U0VUIChiaW5hcnkgPSBvbikiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBJ bnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBs aW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXsKQEAg LTEwNSw4ICs3MCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJJHJlc3VsdCA9CiAJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKQEAgLTEyMSwxNiArODQs MTEgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBv Y2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCiAJKTsKIAotCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOwogCiAJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJ JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgogCSk7CkBAIC0xNDEsMTQgKzk5LDYgQEAgc3Vi IHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJv c2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmci KTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlz aGVyIG5vZGUKQEAgLTE5Niw3ICsxNDYsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIxOSw3ICsx NjksNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAg b3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IDBlZmE0MWQ5MzAuLjJiZWI2ODA2 NjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFj dC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwK QEAgLTgsNDIgKzgsMTIgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAotIyBDaGVjayB0aGUgbG9n IHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5 Ci0jIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLXN1YiBjaGVja19wYXJhbGxl bF9sb2cKLXsKLQlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9 IEBfOwotCW15ICRwYXJhbGxlbF9tZXNzYWdlID0KLQkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRo ZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7Ci0KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsK LQkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywg JG9mZnNldCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3Rl cHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKICMgcGFyYW1ldGVyIHNvIHRoZSBz YW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAogIyBzdHJl YW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBf OwotCi0JbXkgJG9mZnNldCA9IDA7Ci0KLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBz cGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K LQkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhh dCwgc28gYnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkK LQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAot CQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOwotCX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyBJbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgogCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKApAQCAtNzMsOCArNDMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcK IAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVj a19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsK LQogCW15ICRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7CkBAIC04NywxMyArNTUsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlp ZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUK QEAgLTE0MSw3ICsxMDIsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwy fDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTE2NCw3ICsxMjUsNyBAQCAk bm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAg ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFu Z2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5z dG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdf c3RyZWFtX2RkbC5wbAppbmRleCBkMmNjNDZkMTgyLi40M2Y5Y2EzM2IzIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbApAQCAtOCwyOCArOCwxMiBAQCB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVz ZSBUZXN0OjpNb3JlOwogCi0jIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNh Y3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgotc3ViIGNoZWNrX3BhcmFsbGVsX2xvZwotewotCW15ICgkbm9kZV9zdWJz Y3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpID0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3Nh Z2UgPQotCSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21t YW5kJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5j YXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAi c3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGgg Zm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1 YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAog CSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCiAJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC00MiwyMCArMjYsNiBAQCBzdWIgdGVzdF9z dHJlYW1pbmcKIAlDT01NSVQ7CiAJfSk7CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBp cyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KLQkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQg dGhhdCwgc28gYnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxl bCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOwotCX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgot CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKIAkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXsKQEAgLTgwLDggKzUwLDYgQEAgc3ViIHRlc3Rfc3Ry ZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog Ci0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCk7Ci0KIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50 KGUpIEZST00gdGVzdF90YWIiKTsKQEAgLTg5LDkgKzU3LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5n CiAJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9k ZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwogCSk7CiAKLQkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKLQogCSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERMIGlzIHBlcmZvcm1lZAogCSMgYWZ0ZXIg RE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0 X3RhYiBzbyB0aGF0CiAJIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2No ZW1hIGFnYWluLgpAQCAtMTE0LDggKzc5LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVz dF90YWIiCiAJKTsKQEAgLTEzMCwxNCArOTMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlBTFRF UiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVN TiBlLCBEUk9QIENPTFVNTiBmOwogCX0pOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNf cGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJz Y3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpAQCAtMTg1 LDcgKzE0MCw3IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDB8MCksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMjAzLDcgKzE1OCw3IEBAICRub2RlX3B1 Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVk IG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNV QlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAk bm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKaW5kZXggNzUyZTc5YTAyOS4uNjdjNzc4ZGNmYSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fi b3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9h Ym9ydC5wbApAQCAtOCw0MiArOCwxMiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNr IHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNj ZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNr X3BhcmFsbGVsX2xvZwotewotCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFy YWxsZWwpID0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQotCSAgJ2ZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKLQotCWlmICgkaXNfcGFyYWxs ZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21l c3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKLQotCSMgSWYgInN0cmVhbWluZyIgcGFyYW1l dGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCi0JIyB0aGF0 IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgotCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBh Ym91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3Bh cmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3Jp YmVyLT5yZWxvYWQ7Ci0JfQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisJbXkgKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCiAJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC02OSw4ICszOSw2IEBAIHN1YiB0ZXN0X3N0cmVh bWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAot CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxs ZWwpOwotCiAJbXkgJHJlc3VsdCA9CiAJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwpA QCAtNzgsOSArNDYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKIAkpOwogCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBs b2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 Ci0KIAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vp dmluZyBvdXQgb2Ygb3JkZXIKIAkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwogCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKApAQCAtMTAxLDE3ICs2NiwxMiBAQCBzdWIgdGVzdF9zdHJlYW1p bmcKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs KTsKLQogCSRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIAlpcygk cmVzdWx0LCBxcSgyNTAwfDApLAogCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyBy ZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwogCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0K IAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vpdmlu ZyByb2xsYmFjawogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBx ewpAQCAtMTI2LDggKzg2LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVzdWx0ID0KIAkg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CkBAIC0xMzcsMTQgKzk1LDYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJ IkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0 eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsK LQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVy IG5vZGUKQEAgLTE5MSw3ICsxNDEsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWlu Zygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwog CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIwOSw3ICsxNTksNyBAQCAkbm9kZV9wdWJsaXNo ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJ UFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVf cHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx OV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXggOWQ2NzhiMzk5OC4uNDFlYzFlODkx NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0 X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1 YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDQyICs5LDEyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29t cGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu Ci1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9Ci0JICAnZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYg KCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8k cGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0KLX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCiAj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFt aW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKLQotCW15ICRvZmZzZXQgPSAwOwotCi0JIyBJZiAic3RyZWFt aW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hl Y2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCi0JIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5Lgot CWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9Ci0KLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsK IAogCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKQEAgLTY4LDggKzM4LDYgQEAgc3Vi IHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQs ICRpc19wYXJhbGxlbCk7Ci0KIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRl c3RfdGFiIik7CkBAIC04NCwxNCArNTIsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlBTFRFUiBU QUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwogCX0pOwogCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5Lgot CWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9k ZQpAQCAtMTM4LDcgKzk4LDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRp YWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotdGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7Cit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAncGFyYWxsZWwnCkBAIC0xNTYsNyArMTE2LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9yIGRpZQogICAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9O IjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxp c2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nh c2NhZGUucGwKaW5kZXggODkzZmFhYTBmNS4uNmVhN2ZjMTRjNSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTExLDIwICsxMSw2IEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRzdHJlYW1pbmdfbW9kZSkgPSBAXzsKLQlteSAkcGFy YWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24g ZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQot CXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdl LywgJG9mZnNldCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qg c3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgcGFyYW1ldGVyCiAjIHNvIHRo ZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJl YW1pbmc9cGFyYWxsZWwKICMgY2FzZXMuCkBAIC0zMyw5ICsxOSw2IEBAIHN1YiB0ZXN0X3N0cmVh bWluZwogCW15ICgkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFt ZV9DLCAkc3RyZWFtaW5nX21vZGUpID0KIAkgIEBfOwogCi0JbXkgJG9mZnNldF9CID0gMDsKLQlt eSAkb2Zmc2V0X0MgPSAwOwotCiAJbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9wc3FsKAog CQkncG9zdGdyZXMnLCAiCiAJCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCkBA IC03NywyMyArNjAsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEV4cGVjdCBhbGwgZGF0YSBp cyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KIAkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBp cyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCi0JIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0 IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5LgotCWlmICgkc3RyZWFtaW5n X21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9CLT5yZWxv YWQ7Ci0KLQkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX0MtPnJlbG9hZDsKLQl9Ci0KLQkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9C LT5sb2dmaWxlOwotCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7Ci0KIAkjIEluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgogCSMgVGhlbiAyUEMgUFJFUEFSRQogCSRub2RlX0EtPnNhZmVfcHNxbCgKQEAgLTEwNyw5ICs3 Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQik7CiAJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKIAotCWNo ZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7Ci0J Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsK LQogCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIocykKIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApA QCAtMTYzLDEwICsxMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEZpcnN0LCBkZWxldGUg dGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCiAJ JG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgot CSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7Ci0JJG9mZnNldF9DID0gLXMgJG5vZGVf Qy0+bG9nZmlsZTsKLQogCSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBT QVZFUE9JTlQKIAkkbm9kZV9BLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsICIKQEAgLTE4Myw5 ICsxNDIsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CiAK LQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUp OwotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9k ZSk7Ci0KIAkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3Jp YmVyKHMpCiAJJHJlc3VsdCA9CiAJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAg LTIzMiwxNiArMTg4LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfQS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKIAkkbm9k ZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWVfQyk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgk c3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5v ZGVfQi0+cmVsb2FkOwotCi0JCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfQy0+cmVsb2FkOwotCX0K IH0KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggMmNkNDUzYzAzZi4uYzQ5Y2Ix MDYxMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0 cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFt LnBsCkBAIC04LDI4ICs4LDEyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhl IGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3Nm dWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFy YWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCkgPSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2lu ZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkK LQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2Fn ZS8sICRvZmZzZXQpOwotCX0KLX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0 IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0 aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMg c3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkg PSBAXzsKLQotCW15ICRvZmZzZXQgPSAwOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KQEAgLTM5LDIwICsy Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCiAJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogCi0JIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lm aWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotCSMg V2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBz byBidW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsK LQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQki bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 Ci0JfQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIGNoZWNrIHRoYXQgMlBDIGdl dHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCiAJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKQEAgLTY1LDggKzM1LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkjIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgog CW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwpAQCAtMTAxLDkgKzY5 LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCi0JIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC0xMTUsOCArODAsNiBAQCBzdWIgdGVz dF9zdHJlYW1pbmcKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlz X3BhcmFsbGVsKTsKLQogCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBz dGF0ZSBvbiBzdWJzY3JpYmVyCiAJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CkBAIC0xNDksOSArMTEyLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJIyBOb3RlOiBib3Ro IHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgogCSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CiAJCUJFR0lOOwpAQCAt MTY2LDggKzEyNiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hlci0+c3Rh cnQ7CiAJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCSMgY29tbWl0IHBvc3Qg dGhlIHJlc3RhcnQKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQki Q09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CkBAIC0xOTUsOSArMTUzLDYg QEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCi0JIyBDaGVj ayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1 YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBl bm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC0yMDksOCArMTY0LDYgQEAgc3ViIHRlc3Rf c3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7Ci0KIAkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3Rh dGUgb24gc3Vic2NyaWJlcgogCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OwpAQCAtMjUzLDkgKzIwNiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBh ID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBUaGVuIGluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgog CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtMjY3LDgg KzIxNyw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9u IGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKIAkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKQEAgLTMwMCwxNCArMjQ4LDYgQEAgc3ViIHRlc3Rfc3RyZWFt aW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgk aXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9z dWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCkBAIC0zNzUsNyArMzE1LDcgQEAgbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBp bml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMzk4LDcgKzMzOCw3IEBAICRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9z dWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCmluZGV4IDIxOTUwNzA0MzQu LmQ2MTlhNjdmMDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJl YW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz Ml9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCkBAIC0xMDUsNyArMTA1LDggQEAgbXkgJGgg PSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91 dCwgJHRpbWVyLAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRo YXQgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZQogIyBzdWJzY3JpYmVy LXNpZGUgaXMgbm90IHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4gQ2hl Y2sgdGhlCi0jIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2Uu CisjIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBh ZnRlciByZXRyeWluZyBpbgorIyBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlz IHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICMgRmly c3Qgd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBub3JtYWwgdGFibGUuCkBAIC0xMzAsNiAr MTMxLDEwIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBb QS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0 X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwv LAogCSRvZmZzZXQpOwogCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJS T1I6ICggW0EtWjAtOV0rOik/IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNv bnN0cmFpbnQgImlkeF90YWIxIi8sCisJJG9mZnNldCk7CisKICMgRHJvcCB0aGUgdW5pcXVlIGlu ZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjEiKTsKIApAQCAtMTM4LDcg KzE0Myw5IEBAICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAK IG15ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwotaXMoJHJlc3VsdCwgcXEoNTAwMSks ICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwor aXMoJHJlc3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIHVuaXF1ZSBpbmRleCB0byByZXRyeSBhcHBseScKKyk7CiAKICMgQ2xlYW4g dXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOwpAQCAtMTU5LDIx ICsxNjYsMjQgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiX3BhcnRpdGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcg PSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRo ZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHgiKTsKLQog IyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRo ZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygk cmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRy b3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB1bmlxdWUgaW5kZXgnKTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3Bh cnRpdGlvbl9pZHgiKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFRyaWdnZXJzIHdoaWNo IGV4ZWN1dGUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQgb24gdGhlCiAj IHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdv cmtlciBpbiB0aGlzIGNhc2UuCisjIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIs IHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5LgogIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rp b24gb24gbm9ybWFsIHRhYmxlLgpAQCAtMTk0LDE3ICsyMDQsNiBAQCBDUkVBVEUgVFJJR0dFUiB0 cmlfdGFiMV91bnNhZmUKIEJFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3RfdGFiMQogRk9SIEVB Q0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZSgpOwogQUxU RVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZl OwotCi1DUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpIFJFVFVSTlMgVFJJ R0dFUiBBUyBcJFwkCi0gIEJFR0lOCi0gICAgUkFJU0UgTk9USUNFICd0ZXN0IGZvciBzYWZlIHRy aWdnZXIgZnVuY3Rpb24nOwotCVJFVFVSTiBORVc7Ci0gIEVORAotXCRcJCBsYW5ndWFnZSBwbHBn c3FsOwotQUxURVIgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSBJTU1VVEFCTEU7Ci1D UkVBVEUgVFJJR0dFUiB0cmlfdGFiMV9zYWZlCi1CRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0 X3RhYjEKLUZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV9z YWZlKCk7CiB9KTsKIAogIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCkBA IC0yMjksMTIgKzIyOCwxMiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9 IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBVc2luZyB0cmlnZ2VyIHdpdGggaW1tdXRhYmxl IGZ1bmN0aW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXF7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJ R0dFUiB0cmlfdGFiMV9zYWZlOwotRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJs aWMudGVzdF90YWIxOwotfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVl IGNvbnN0cmFpbnQgImlkeF90YWIyIi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVl IGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjIiKTsKIAogIyBXYWl0 IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBs eSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwpA QCAtMjQyLDE1ICsyNDEsMTMgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEo MiksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJs ZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJl dHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9t IHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdy ZXMnLCBxcXsKLURST1AgSU5ERVggaWR4X3RhYjI7Ci1EUk9QIFRSSUdHRVIgdHJpX3RhYjFfc2Fm ZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBw dWJsaWMudGVzdF90YWIxOwogRFJPUCBmdW5jdGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmU7 Ci1EUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxX3NhZmU7CiB9KTsKICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewpAQCAtMjgzLDIyICsyODAsMjQgQEAg JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzop PyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRp dGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8s CiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlciwgbm93 IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkRS T1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24iKTsKLQogIyBXYWl0 IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBs eSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog CiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRy aWdnZXInKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHRyaWdnZXInKTsKKworIyBEcm9wIHRoZSB0 cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRp b24iKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQg Y29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlucyBhCiAjIG5vbi1pbW11dGFi bGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9y dGVkIGJ5Ci0jIHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIHBhcmFsbGVsIHdvcmtl ciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNo ZWNrCisjIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgogIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVl IGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgpAQCAtMzM2LDE3ICszMzUsMTQgQEAgJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5u b3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vi c2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAK LSMgQWx0ZXIgZGVmYXVsdCB2YWx1ZXMgdG8gaW1tdXRhYmxlIGV4cHJlc3Npb24sIG5vdyBpdCB3 b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgMSIpOwotCiAjIFdhaXQg Zm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5 IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAK ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0J J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHBy ZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5n IGJlY2F1c2Ugb2YgY29sdW1uIGRlZmF1bHQgdmFsdWUnCispOwogCiAjIENsZWFuIHVwIHRlc3Qg ZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLApAQCAtMzczLDEwICszNjksNiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0 IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uIiB1c2luZyBzdWJzY3JpcHRpb24g cGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRl ZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0 aXRpb24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7Ci0KICMgV2FpdCBmb3IgdGhpcyBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgog JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIApAQCAtMzg0LDEy ICszNzYsMTggQEAgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwog aXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbHVtbiBkZWZhdWx0 IHZhbHVlJworKTsKKworIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIuCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVz dF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwogCiAjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWlu dCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQogIyBmdW5jdGlvbiBvbiB0aGUg c3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwKLSMg d29ya2VyIGluIHRoaXMgY2FzZS4KKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJl dHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGlj YXRlZCBzdWNjZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBCZWNhdXNlIHRo ZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRhYmxlIG11c3QgYmUgdGhlIHNhbWUgYXMg aXRzIHBhcmVudApAQCAtNDMwLDE3ICs0MjgsMTMgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdl dCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkb21haW4gY29u c3RyYWludCBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgRE9NQUlOIHRtcF9kb21haW4gRFJPUCBDT05TVFJB SU5UIGRvbWFpbl9jaGVjayIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi MSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZG9tYWluJyk7CiAKICMg Q2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC00NTMsOSArNDQ3LDEwIEBAIFRSVU5DQVRFIFRB QkxFIHRlc3RfdGFiMjsKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNv bnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KLSMg b24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFs bGVsIHdvcmtlciBpbiB0aGlzCi0jIGNhc2UuCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29u c3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBv biB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxs ZWwKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdv cmtlciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHku CiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3RyYWlu dCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTQ4OCwyNCArNDgzLDE3IEBAICRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fu bm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwog Ci0jIEFsdGVyIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwg bm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHFxewotQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vu c2FmZTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Nh ZmUgQ0hFQ0soYSA+PSAwKTsKLX0pOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWludCcp OwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEg RFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfc2FmZSIpOworCSJBTFRFUiBUQUJMRSB0ZXN0X3Rh YjEgRFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfdW5zYWZlIik7CiAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKIFRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsK QEAgLTUyOCwxMCArNTE2LDYgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBz dHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBjb25zdHJhaW50IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09O U1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCkBAIC01MzksMTEgKzUyMywxNiBAQCAk cmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBx cSgwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29u c3RyYWludCBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWludCcpOworCisjIERyb3AgY29uc3RyYWlu dCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRl c3RfdGFiX2NvbiIpOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93 ZWQgdGhhdCBmb3JlaWduIGtleSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJy b3IKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcmVwb3J0 ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGlu IGFwcGx5CisjIHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNj ZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUg Zm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxlLgpAQCAtNTg1LDkgKzU3NCwxMyBAQCAkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAot IyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxU RVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayIpOworIyBXYWl0 IGZvciBlcnJvciBsb2cgdG8gbWFrZSBzdXJlIHRoZSBkZXBlbmRlbnQgZGF0YSBoYXMgYmVlbiBk ZWxldGVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtB LVowLTldKzopPyBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZXN0X3RhYjEiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlc3RfdGFiMWZrIi8sCisJJG9mZnNldCk7CisKKyMg SW5zZXJ0IGRlcGVuZGVudCBkYXRhIG9uIHRoZSBwdWJsaXNoZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90 YWIyIFZBTFVFUygxKSIpOwogCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CkBAIC01OTUsOSArNTg4LDExIEBAICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWduIGtleScpOwog CiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK IAkncG9zdGdyZXMnLCBxcXsKIFRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKQEAgLTYwOSw2ICs2 MDQsNyBAQCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogQ1JFQVRFIFRBQkxF IHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYl9wYXJ0aXRpb25fZiBTRUxFQ1QgaSAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAw MCkgcyhpKTsKIEFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0 ZXN0X3RhYl9wYXRpdGlvbl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX3Bh cnRpdGlvbl9mKGEpOwogU0VMRUNUICdBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiAiJyB8fCB0Z25hbWUgfHwgJyInIEZST00gcGdfdHJpZ2dlciBX SEVSRSB0Z3JlbGlkID0gJ3Rlc3RfdGFiX3BhcnRpdGlvbic6OnJlZ2NsYXNzOjpvaWQgXFxnZXhl YwogfSk7CkBAIC02MjQsMTAgKzYyMCw2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb24iIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7Ci0K ICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKIApAQCAtNjM1LDcgKzYyNywxMSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi X3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGZvcmVp Z24ga2V5Jyk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vi c2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0 aW9uX2ZrIik7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0 aGF0IHRoZSBub24tcGFydGl0aW9uZWQgdGFibGUgb24gdGhlIHB1Ymxpc2hlci1zaWRlIGlzIGEK LS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_007_OS0PR01MB57163F73F6FA5741F3FF2176942D9OS0PR01MB5716jpnp_--