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 1p550F-0000TB-Hf for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Dec 2022 13:07:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p550E-0000fL-BU for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Dec 2022 13:07:22 +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 1p550D-0000fC-0l for pgsql-hackers@lists.postgresql.org; Tue, 13 Dec 2022 13:07:21 +0000 Received: from esa20.fujitsucc.c3s2.iphmx.com ([216.71.158.65]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p5508-0000hT-5g for pgsql-hackers@lists.postgresql.org; Tue, 13 Dec 2022 13:07:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1670936836; x=1702472836; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=G2dBrWLFczFI+1qm1Ha1KrqQh38aLON3TvSU3I1Gmxc=; b=bNhdmkTfvJnUFs9mg6V/nq6HHe5UdRTywiMVHed8Hd/2FoFbPs6gxvT2 72FU3ehFks7dLjhnCQy0VJdIiIyEZOK5f68NtgWMxT68BIlf5PzWbvmqD 6mv1erSgbMaeMiRSX1EwD9E0ipKG27Od3ZsJVD4sFUK6JI2eoff3LM2Br zXtRAFbbqxOJf8LXh2sq/SzwswLceBNFixqsMT4oZAPCj4/HO0L7QxVGK Vcc6pu2iGZoS4N3cV3w3VkuJ+uB/OxlC67Wrc/Z6GZuPeVyw2sX6LJSFo LnrpPvYy3jGtZc6qQgPeJ5ZL7Eo5lFh+FicCwbiwuFFleh/ufjvLgvyX2 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10559"; a="72240099" X-IronPort-AV: E=Sophos;i="5.96,241,1665414000"; d="scan'208,223";a="72240099" Received: from mail-tycjpn01lp2174.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.174]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2022 22:07:10 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DU/m30vhMlpDITI8JmcPusXkUYVgXRWyoYfZUWDE5rQpR56ac3J51gWLBc/MzyHD1ActL5HbUiDKi12pNTfFTV2wsD+JfF5OCRBQSqER6izuHQdxUWQkjKTjixVWk5gy6LJqDmzVecz/UIsY8iXphGzVDSIqNg2zOUhOtsB+SxgtXwlOVLvRU26Aoce0keaYIEEYxZs7Oki6i/fcAhEKfkd8lNbnhAzpvp0vW/bQJKo2Mjbd2W2x5tKj2aOxzw39eD9Id/e/23oZQhZv46C427TDqZe8SAStgSaRyhyH0n48f8rC9Y7dshWSjcWp1Du1RL5aelFTgOkeciBW5pI8pg== 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=lccZ4nkJt7Qg0K3/sMO7LtGZyqzxe1qNn2qlR70fglU=; b=gumZIGZhdGULCZKLILtZGk1EkGtS6hfpN2HZQXd1V4QarA66EaUR4shmS4j1jpqSxK3ueVJQ2c6WCt8iQFB1fiW9AzfryO2orBdAL6Z7SWCbVfUJ4GOco3CUEw+nB3GSEQbhXOBXr/TEBQ2ADLMXHcksbINb2XrMWq+3lj3mCHEO96vQxT1i72BtWqYP6nvJN/brpmorTZHLOsmYbuLqOUZMc3UfAmeYraSISZn1GP1od/9WE3Y9/3msQcu/9hVcFXX68iTbaUsaIUJEB5EB9f9EzkYE5Bs8kY0YNKkV3sB78K3EqmPZqNn2I2SrqwJD74XNO6jJEFW73Xne9FG4rA== 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 TYAPR01MB5769.jpnprd01.prod.outlook.com (2603:1096:404:8058::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.19; Tue, 13 Dec 2022 13:07:06 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::6bd0:acc4:7596:b8b1]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::6bd0:acc4:7596:b8b1%8]) with mapi id 15.20.5880.019; Tue, 13 Dec 2022 13:07:06 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Dilip Kumar , "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: AQHYSXX5UDTvhwo1UESW8vqRoeLCJazlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCADeB2AIAAPUnQgAEERACAABzggIAF+30AgAHyDYCAEzpGgIANkEmAgAI7xKCABhztAIAFv4zggABYqoCAABRMQIABvKAAgAS+5UCAAVlmEIACxK+AgAIepYCAAy1b4IAA8x6ggAJYuYCABaCt0IACJjmAgAED94CAAgbzAIABr/gAgASdinCAASDJ4IABzHIAgAE3bTCAAIzFAIABQexwgAdnrICAAMImAIAAJirQ Date: Tue, 13 Dec 2022 13:07:06 +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?NTBfQWN0aW9uSWQ9NzRlNDNlZGUtNDA2Ni00MWMwLWFhNDUtZGJhOGM3MjM0?= =?utf-8?B?ZjA2O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0xM1QxMjo1NzoyNVo7TVNJUF9MYWJl?= =?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_|TYAPR01MB5769:EE_ x-ms-office365-filtering-correlation-id: d0328e2b-b3df-466d-d0f5-08dadd0aef53 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WwBi2v/o6TxBri7c3CvzRQ/wwUKyoxYUnwTDlZFjY/6aNlw6/NnpMikEenZqUC6kKHQw+BtV7e1yClP4ywBqRngIhwjhmobPc7LXiBqNr3v8rWQYmHCLIKQACdv2bA4iWgmHDPTUs03VcjeNBg4a0ZMlNfFVeAnHEsspN+6B0uyUyMD8w6lnYGdnfbI19mOMDGCepkeGvlGieKJqf/U7SUziIFR3BP1Rn5pGjdR2McWs/9WcNEgYcxLWVKb3pd0omVWZTn61zqTWk4TkKlTdLUXOGEuItaMeWBbRl0HOIWtZ2/3ZmFXdhVjMb3edaHk3+Ru5T3XXK5+CAskQw4wpLIGNpJdNe/fTo0tmXTVOZd76nuUzldt6cIAqn367D3T8pryHS7NHi21xyeFpK3n+3cGc38o3lHgoaR8vR8FmsHvJfZt6P1P+Q80j6VmhrtxjbyL5Uw2EaeaZk0Iw6gu7lekkBUf/gn2GmZcwIKCfsxhJj+Q63de2edPasOvLgV3cW59CFDQiNt6UyyZwbo1OM4sKdh8ekwL1kCNJdP2DR1/j+DVRmK04hLhGSBn6n4YvY783MYY4GveXLGy0Pcu+/9jgcioGwzjEuLE2IF8a9tHwAfhT5+zVIG7VEuFXJMOyaFwfwamCJQuxUOYPtiLbZNE9DfnchkCpd2SPSWS+oscvuAwSTlxEAiYaV4K4wPJKgV6nYHCe5YUmFX3oZ1qajfwpDkf1V4u+ybR475T6+G8= 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)(376002)(39860400002)(346002)(396003)(136003)(366004)(1590799012)(451199015)(478600001)(71200400001)(99936003)(82960400001)(1580799009)(38070700005)(38100700002)(122000001)(9686003)(55016003)(316002)(86362001)(54906003)(6916009)(66476007)(76116006)(66556008)(66946007)(66446008)(4326008)(8676002)(64756008)(83380400001)(85182001)(5660300002)(7696005)(26005)(53546011)(6506007)(8936002)(33656002)(41300700001)(186003)(2906002)(52536014);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZU9CRVRoV3NQTThVd0l6cytSZk5GMC9UdVFhNS9tZVNSMmdPbnowQUY5eWVa?= =?utf-8?B?RnlDWTVoOE1JTk1LS1FxeE9jT2pSY2N4ZGZhR3ZLeUZYQUl5VWhrVHNBNE1L?= =?utf-8?B?YlppU2V1STJRRVNFWEU1MnFYSW1ka1lGMFpUTTk1MHByZnl4SEprQ25HUGN0?= =?utf-8?B?c1JnZXN1cHY5Y0R2UktWMDc0SG5HcWZmTWYzM25jODBQdlhGNzhLVlcyYnc5?= =?utf-8?B?MFV5WkpCR3ZxZkxZTUdUKytDUmJMWlZRYjVrazlPY3JvTm4rdityQlI3QXlK?= =?utf-8?B?NVBHNHdYUE5EQkxDc2V1cUtiMDBUdVAzWkpsQ3M1eHVwdy9PNnlHTnFHUUNX?= =?utf-8?B?eHJId1Z4NkNCNUNwK0lISFdmTWpBaUwraTM1eGtYSjlMRysvU25LMmJ3N3Uw?= =?utf-8?B?eXF3aUJnaERMWkg2RjZkZU1zemtBMjhwYnBlNzcvSG9keHFhN2J5V0pjR3Fk?= =?utf-8?B?U3JlbnpZdkVDTmNNWFQ4UWlKKzdtaU9KbjU3Vm1ZVDNiMVVnR2pWdGRZN0VT?= =?utf-8?B?TTE5QmNvTmpRbmlkZkZVajhmeFpSdjVRMXV6aGt0TzNLbWM0L1V4OWFJK0xP?= =?utf-8?B?bU0rRnA0WjhJRHcrSklxSC9EbzFDeTdZVGhvbzk2SXRxMi90MFZKVWQzZldZ?= =?utf-8?B?YnQ1ZTArSnpQWTE0U1FjUlpKRUdxb0hIT2NJWk9aQldpckMzWi83YXVmSUNC?= =?utf-8?B?eHJxQStmVCsxMFJmd2l4enY4aHFhVnNUMW1EdzZOOW5heHB0dmYzem9KRTJY?= =?utf-8?B?VENMeUNWSmpVdFFsV3NMZDZBWXRRQ3dXNm4rQ0E4amFHTFJHQWxGSGhUc091?= =?utf-8?B?MDlIOWIySWxlNnNoN21USUttbXpLR2ZZWk80NlRmWDE0aFdCRk5mV0VpRWdy?= =?utf-8?B?WXBHS3drS1YybE1NeDdkNlQwQlhwbllWYnVKR3dpQW5EWkpqTHh2RnZlcU0z?= =?utf-8?B?TnM2TVdVYzg4cTEwa2JQVUltbkhFQlh0Ui9OV1NSUUw1bnlIdnVtT000Ym5r?= =?utf-8?B?c1kyWGZNb2VxamVsOGg1WUFYMzJTdFM4VDdRcXhHWmx3Zy9qZmE1cE1Tb2R6?= =?utf-8?B?QUE5bGtGTXVsNlVoQlg4a2h6RWdpVW9RZTkzRHh4N2V2UHhiT0ZhOGlTNUF6?= =?utf-8?B?ZWQ2RzBuS1krWGxHakxicHNWc28wbmNXQWt2MUhzWjV5Slo2VUVEc242eTF3?= =?utf-8?B?TFUvOVRER1htTGFsYWtCczhXVHYrN21UZWU0aytZWnd5ZFZuZDl1Z1BWVXNu?= =?utf-8?B?LzZvMjE3M2c5YTNIOURWdHd2TnJWV2ZuQWtVMEV4WFRFdjNaZThyQ0VlNW95?= =?utf-8?B?TlIvWXFTOERVaTJhVHkyVFF6bDNzQ0U5NHRnTnpNTmRiWVc3dHhKRHQrVVBP?= =?utf-8?B?K3RRK3RxNEQydGdZczdVVkkyTEp5bEtVUVhqRHRQWUtXQTMydWFRT3V0UE95?= =?utf-8?B?ck04VGY4NFM1dlZlT3lzbnZ4bWpvdFlla0tBdDd6SjZ5RG5BVDBzRkRkbUV0?= =?utf-8?B?THA5WU1tQ1NzcDF1MTljdmJpSVpQSW9EQjl1akxHbnFkb3ZoL3ZRNUlzRk1n?= =?utf-8?B?MzhJRWpZL3ludU1RYmoyMXdNdEwzZ0YrTHpaRk5TbU5JN3A5OUpKK3ZMdTh6?= =?utf-8?B?dnBVcmkrREVjMFQ0QWZKeGp2NFVsdFN4MzJZT3p2eDliNlluekVEeGt5Y2kw?= =?utf-8?B?R1VIZGszSlFVSFhSbSt4NWJoRGJ4RXJjQndCNHZNUEl2MEF0ZGRvUmdmSHQr?= =?utf-8?B?T09iZ1JwQ1BoRkQwS0Jac1dTc0FFb29wNWJBaFhtZnBNdHQzQ09RM3pIei9K?= =?utf-8?B?TEx4Q0VJR1EwTjY5Y0R3NjYrZ20yaEVKTHJUekxSRldWc1lBV1NWYU0zVzd3?= =?utf-8?B?Q2gvcTdKQVhSKzkzNXVNakpuWG5YRXNoQ2xGRHovclNPME0xUWNjTVFRTXFm?= =?utf-8?B?WlNVaEZDTmpIRWdlU1c5TXB6QnVuVU8veVdJZGdrTWZxdHhrZXdSZWFYQ3hz?= =?utf-8?B?aDhIMldTR2c4bU5kZG9NbzJIOGlvR24vcDZVTDk2Mjh0T1hkUHlsQjBkSUVn?= =?utf-8?B?SVF6dmVqS2thMW5ldFA5UUxlRHd5UkVOVVdPdys0OElkUnRRZEkvcE5NSm9S?= =?utf-8?Q?M6RhSmAB6EyfebqRzKObW5ghH?= Content-Type: multipart/mixed; boundary="_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_" 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: d0328e2b-b3df-466d-d0f5-08dadd0aef53 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2022 13:07:06.0380 (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: XKi5CQdt/1Q2GyGy0RInbTCFAZNBcKqMwlzz+MIA6JuzA9dXHDbiOU8rJT34Ea6d5KfsAhv7qTUqmgFIBNHlXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB5769 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlc2RheSwgRGVjZW1iZXIgMTMsIDIwMjIgNjo0MSBQTSBBbWl0IEthcGlsYSA8YW1pdC5r YXBpbGExNkBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gT24gVHVlLCBEZWMgMTMsIDIwMjIgYXQg NDozNiBBTSBQZXRlciBTbWl0aCA8c21pdGhwYjIyNTBAZ21haWwuY29tPg0KPiB3cm90ZToNCj4g Pg0KPiA+IH5+fg0KPiA+DQo+ID4gMy4gcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXINCj4gPg0K PiA+ICsvKg0KPiA+ICsgKiBTZXQgdGhlIHdvcmtlciB0aGF0IHJlcXVpcmVkIHRvIGFwcGx5IHRo ZSBjdXJyZW50IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4NCj4gPiArICovDQo+ID4gK3ZvaWQNCj4g PiArcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvKSB7DQo+ID4gK3N0cmVhbV9hcHBseV93b3JrZXIgPSB3aW5mbzsgfQ0KPiA+DQo+ID4gQ29t bWVudCB3b3JkaW5nIHNlZW1zIHdyb25nLg0KPiA+DQo+IA0KPiBJIHRoaW5rIHNvbWV0aGluZyBs aWtlICJDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uLiINCj4gbWF5 IGJlIG1vcmUgc3VpdGFibGUgaGVyZS4NCg0KQ2hhbmdlZC4NCg0KPiBGZXcgbW9yZSBzaW1pbGFy IGNvc21ldGljIGNvbW1lbnRzOg0KPiAxLg0KPiArIC8qDQo+ICsgKiBVbmxvY2sgdGhlIHNoYXJl ZCBvYmplY3QgbG9jayBzbyB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXINCj4gKyAqIGNh biBjb250aW51ZSB0byByZWNlaXZlIGNoYW5nZXMuDQo+ICsgKi8NCj4gKyBpZiAoIWZpcnN0X3Nl Z21lbnQpDQo+ICsgcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOw0KPiANCj4gVGhpcyBjb21tZW50IGlzIG1pc3NpbmcgaW4gdGhlIG5ldyAo MDAwMikgcGF0Y2guDQoNCkFkZGVkLg0KDQo+IDIuDQo+ICsgaWYgKCF3aW5mby0+c2VyaWFsaXpl X2NoYW5nZXMpDQo+ICsgew0KPiArIGlmICghZmlyc3Rfc2VnbWVudCkNCj4gKyBwYV91bmxvY2tf c3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7DQo+IA0KPiBJ IHRoaW5rIHdlIHNob3VsZCB3cml0ZSBzb21lIGNvbW1lbnRzIG9uIHdoeSB3ZSBhcmUgbm90IHVu bG9ja2luZyB3aGVuDQo+IHNlcmlhbGl6aW5nIGNoYW5nZXMuDQoNCkFkZGVkLg0KDQo+IDMuIFBs ZWFzZSBhZGQgYSBjb21tZW50IGxpa2UgYmVsb3cgaW4gdGhlIHBhdGNoIHRvIG1ha2UgaXQgY2xl YXIgd2h5IGluDQo+IHN0cmVhbV9hYm9ydCBjYXNlIHdlIHBlcmZvcm0gbG9ja2luZyBiZWZvcmUg c2VuZGluZyB0aGUgbWVzc2FnZS4NCj4gLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYw0KPiArKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jDQo+IEBAIC0xODU4LDYgKzE4NTgsMTMgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIHMpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdvcmtlciB3aWxs IHdhaXQgb24gdGhlIGxvY2sgZm9yIHRoZSBuZXh0IHNldCBvZg0KPiBjaGFuZ2VzIGFmdGVyDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAqIHByb2Nlc3NpbmcgdGhlIFNUUkVBTV9BQk9SVCBt ZXNzYWdlIGlmIGl0IGlzIG5vdA0KPiBhbHJlYWR5IHdhaXRpbmcNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICogZm9yIFNUUkVBTV9TVE9QIG1lc3NhZ2UuDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAqDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIEl0IGlzIGltcG9ydGFudCB0 byBwZXJmb3JtIHRoaXMgbG9ja2luZw0KPiBiZWZvcmUgc2VuZGluZyB0aGUNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICogU1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28gdGhhdCB0aGUgbGVhZGVy IGNhbg0KPiBob2xkIHRoZSBsb2NrIGZpcnN0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAq IGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgd2FpdCBmb3INCj4gdGhlIGxlYWRl ciB0byByZWxlYXNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBsb2NrLiBUaGlz IGlzIHRoZSBzYW1lIGFzIHdoYXQgd2UgZG8gaW4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wLiBTZWUgTG9ja2luZw0KPiBDb25zaWRlcmF0aW9u cyBhdG9wDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIGFwcGx5cGFyYWxsZWx3b3JrZXIu Yy4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICghdG9wbGV2ZWxfeGFjdCkNCg0KTWVyZ2VkLg0KDQpBdHRhY2ggdGhlIG5ldyB2ZXJz aW9uIHBhdGNoIHdoaWNoIGFkZHJlc3NlZCBhYm92ZSBjb21tZW50cy4NCkkgYWxzbyBzbGlnaHRs eSByZWZhY3RvcmVkIGxvZ2ljIHJlbGF0ZWQgdG8gcGFfc3Bvb2xlZF9tZXNzYWdlcygpIHNvIHRo YXQNCkl0IGRvZXNuJ3QgbmVlZCB0byB3YWl0IGZvciBhIHRpbWVvdXQgaWYgdGhlcmUgYXJlIHBl bmRpbmcgc3Bvb2xlZCBtZXNzYWdlcy4NCg0KQmVzdCByZWdhcmRzLA0KSG91IHpqDQo= --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v60-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v60-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v60-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8952; creation-date="Tue, 13 Dec 2022 13:05:50 GMT"; modification-date="Tue, 13 Dec 2022 13:06:58 GMT" Content-Transfer-Encoding: base64 RnJvbSA4OTYzM2EyODYyMDk0OTI2MGEwYTU0OGNiYmJjMWFjYTMwNGEwZWE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djYwIDcvN10gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAg ICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyB8IDMy ICsrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICB8ICA2ICsrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 ICAgICAgICB8ICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDI1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDJjNzZlYjUxYTEuLjQ2YjcxNGJlMTgg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE4OSwxMyArMzE4OSwyNCBAQCBTRUxFQ1QgcGlkLCB3 YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdh aXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlk PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAgICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNo cm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK ICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25p emluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFpbiBhcHBseSB3b3JrZXIKKyAgICAgICBtYWlu IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJh PjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMjA1LDcgKzMyMTYsNyBAQCBTRUxFQ1QgcGlk LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJF IHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0g ICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAgICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxs IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMTQsNyArMzIyNSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2 ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwg YXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMy MjMsNyArMzIzNSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZp ZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3 aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAg IFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNl bmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzIsNyArMzI0 NSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVz dF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVw b3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBs b2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKQEAgLTMyNDIsNyArMzI1Niw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwg d2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAg ICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQg bG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdpbiBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAg ICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCmluZGV4IGMyYzdkOGE4YjcuLmYyODI1NzA1ZjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0OSw2ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19z dGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAg ICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFw cGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBzdC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJl Y2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCAwZjgyZGQ0MTM4Li44Mzky ZTYxNTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5j aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBA IC0xMDc3LDcgKzEwNzcsNyBAQCBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0 YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19TVEFU X0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElP Tl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQ R19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJl dHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwpAQCAtMTEwMywxMCArMTEwMyw2IEBA IHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNW YWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJ LyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCi0JCWlmIChpc1Bh cmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0JCQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlk ID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdv cmtlci5zdWJpZCk7CkBAIC0xMTE1LDI2ICsxMTExLDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlw 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 YXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDcxOTU5OTY0OWEuLmNh MzYwYWM0YjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAK ICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAn LCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0 LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAg cHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxh c3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAg cHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFt cHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAn e2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxy ZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1l LGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywK ICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAy NicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFt ZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggZmI5ZjkzNmQ0My4uN2U2 ZWE2MGY5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5 NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5waWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwg U0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAg ICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xz biwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUsCkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19z dGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3Rf ZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3RpbWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlv biBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkg c3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBs YXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9O ICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3Bp ZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGlt ZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9p ZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAg cy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9yX2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v60-0002-Serialize-partial-changes-to-a-file-when-the-att.patch" Content-Description: v60-0002-Serialize-partial-changes-to-a-file-when-the-att.patch Content-Disposition: attachment; filename="v60-0002-Serialize-partial-changes-to-a-file-when-the-att.patch"; size=45075; creation-date="Tue, 13 Dec 2022 13:05:50 GMT"; modification-date="Tue, 13 Dec 2022 13:06:59 GMT" Content-Transfer-Encoding: base64 RnJvbSBkNDEyNTY5NzY5MGQyYzZmNjgxNjI4ZDRiNmQ1Mjc0OGQ5Y2FjYTJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjA4OjE3ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjAgMi8yXSBTZXJpYWxpemUgcGFydGlhbCBjaGFuZ2VzIHRvIGEgZmlsZSB3aGVuIHRoZSBhdHRl bXB0CiB0byBzZW5kIGRhdGEgdGltZXMgb3V0LgoKSW4gcGF0Y2ggMDAwMSBpZiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciB0aW1lcyBvdXQgd2hpbGUgYXR0ZW1wdGluZyB0bwpzZW5kIGEgbWVzc2Fn ZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGl0IHJlc3VsdHMgaW4gYW4gRVJST1IuCgpU aGlzIHBhdGNoICgwMDAyKSBtb2RpZmllcyB0aGF0IGJlaGF2aW91ciwgc28gaW5zdGVhZCBvZiBl cnJvcmluZyBpdAp3aWxsIHN3aXRjaCB0byAicGFydGlhbCBzZXJpYWxpemUiIG1vZGUgLSAgaW4g dGhpcyBtb2RlIHRoZSBsZWFkZXIKc2VyaWFsaXplcyBhbGwgcmVtYWluaW5nIGNoYW5nZXMgdG8g YSBmaWxlIGFuZCBub3RpZmllcyB0aGUgcGFyYWxsZWwKYXBwbHkgd29ya2VycyB0byByZWFkIGFu ZCBhcHBseSB0aGVtIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLgotLS0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyAgICAgIHwgMjI1ICsrKysrKysr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCA1 MTkgKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaCAgICAgICAgICB8ICA1MiArKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgNjUzIGlu c2VydGlvbnMoKyksIDE0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDllYWU5OTguLjJl MmNkMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xMzcsOSArMTM3LDExIEBACiAgKiBjb25jdXJyZW50bHkp LCBpZiB0aGUgc2htX21xIGJ1ZmZlciBiZXR3ZWVuIExBIGFuZCBQQS0yIGlzIGZ1bGwsIExBIGhh cyB0bwogICogd2FpdCB0byBzZW5kIG1lc3NhZ2VzLCBhbmQgdGhpcyB3YWl0IGRvZXNuJ3QgYXBw ZWFyIGluIGxtZ3IuCiAgKgotICogVG8gcmVzb2x2ZSB0aGlzIGlzc3VlLCB3ZSB1c2Ugbm9uLWJs b2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0LiBJZgotICogdGhlIHRpbWVvdXQg aXMgZXhjZWVkZWQsIHRoZSBMQSByZXBvcnRzIGFuIGVycm9yIGFuZCByZXN0YXJ0cyBsb2dpY2Fs Ci0gKiByZXBsaWNhdGlvbi4KKyAqIFRvIGF2b2lkIHRoaXMgd2FpdCwgd2UgdXNlIGEgbm9uLWJs b2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0LiBJZgorICogdGhlIHRpbWVvdXQg aXMgZXhjZWVkZWQsIHRoZSBMQSB3aWxsIHNlcmlhbGl6ZSB0aGUgbWVzc2FnZSB0byBhIGZpbGUg YW5kCisgKiBpbmRpY2F0ZSBQQS0yIHRoYXQgaXQgbmVlZHMgdG8gcmVhZCB0aGF0IGZpbGUgZm9y IHRoZSByZW1haW5pbmcgbWVzc2FnZXMuCisgKiBUaGVuIExBIHdpbGwgc3RhcnQgd2FpdGluZyBm b3IgY29tbWl0IHdoaWNoIHdpbGwgZGV0ZWN0IGRlYWRsb2NrIGlmIGFueS4KKyAqIFNlZSBwYV9z ZW5kX2RhdGEoKSBhbmQgZW51bSBUcmFuc0FwcGx5QWN0aW9uLgogICoKICAqIDQpIExvY2sgdHlw ZXMKICAqCkBAIC0yNTIsNiArMjU0LDcgQEAgc3RhdGljIExpc3QJICAgKnN1YnhhY3RsaXN0ID0g TklMOwogCiBzdGF0aWMgdm9pZCBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbyk7CiBzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlIHBhX2dldF94YWN0X3N0 YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOworc3RhdGljIFBhcnRpYWxG aWxlU2V0U3RhdGUgcGFfZ2V0X2ZpbGVzZXRfc3RhdGUodm9pZCk7CiAKIC8qCiAgKiBSZXR1cm5z IHRydWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGZhbHNl IG90aGVyd2lzZS4KQEAgLTQ5NSw5ICs0OTgsMTEgQEAgcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5z YWN0aW9uSWQgeGlkKQogCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwog CXdpbmZvLT5zaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOwogCXdp bmZvLT5zaGFyZWQtPnhpZCA9IHhpZDsKKwl3aW5mby0+c2hhcmVkLT5maWxlc2V0X3N0YXRlID0g RlNfVU5LTk9XTjsKIAlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKIAog CXdpbmZvLT5pbl91c2UgPSB0cnVlOworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNl OwogCWVudHJ5LT53aW5mbyA9IHdpbmZvOwogCWVudHJ5LT54aWQgPSB4aWQ7CiB9CkBAIC01NzEs OCArNTc2LDE3IEBAIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m bywgVHJhbnNhY3Rpb25JZCB4aWQpCiAJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFfd29y a2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOwogCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOwogCi0JLyogU3RvcCB0aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBl bm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4gKi8KLQlpZiAobmFwcGx5d29ya2VycyA+IChtYXhf cGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpCisJLyoKKwkgKiBT dG9wIHRoZSB3b3JrZXIgaWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJzIGluIHRoZSBwb29sLgor CSAqCisJICogWFhYIFRoZSB3b3JrZXIgaXMgYWxzbyBzdG9wcGVkIGlmIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIG5lZWRlZCB0bworCSAqIHNlcmlhbGl6ZSBwYXJ0IG9mIHRoZSB0cmFuc2FjdGlv biBkYXRhIGR1ZSB0byBhIHNlbmQgdGltZW91dC4gVGhpcyBpcworCSAqIGJlY2F1c2UgdGhlIG1l c3NhZ2UgY291bGQgYmUgcGFydGlhbGx5IHdyaXR0ZW4gdG8gdGhlIHF1ZXVlIGJ1dCB0aGVyZSBp cworCSAqIG5vIHdheSB0byBjbGVhbiB0aGUgcXVldWUgb3RoZXIgdGhhbiByZXNlbmRpbmcgdGhl IG1lc3NhZ2UgdW50aWwgaXQKKwkgKiBzdWNjZWVkcy4gRGlyZWN0bHkgc3RvcHBpbmcgdGhlIHdv cmtlciBhdm9pZHMgbmVlZGluZyB0aGlzIGNvbXBsZXhpdHkuCisJICovCisJaWYgKHdpbmZvLT5z ZXJpYWxpemVfY2hhbmdlcyB8fAorCQluYXBwbHl3b3JrZXJzID4gKG1heF9wYXJhbGxlbF9hcHBs eV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKIAl7CiAJCWludAkJCXNsb3Rfbm87CiAJ CXVpbnQxNgkJZ2VuZXJhdGlvbjsKQEAgLTU5MCwxMSArNjA0LDE1IEBAIHBhX2ZyZWVfd29ya2Vy KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgVHJhbnNhY3Rpb25JZCB4aWQpCiAJfQog CiAJd2luZm8tPmluX3VzZSA9IGZhbHNlOworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZh bHNlOwogCiAJcmV0dXJuIGZhbHNlOwogfQogCi0vKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaW5mb3JtYXRpb24uICovCisvKgorICogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGluZm9ybWF0aW9uIGFuZCB1bmxpbmsgdGhlIGZpbGVzIHdpdGgKKyAqIHNlcmlhbGl6ZWQg Y2hhbmdlcyBpZiBhbnkuCisgKi8KIHN0YXRpYyB2b2lkCiBwYV9mcmVlX3dvcmtlcl9pbmZvKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIHsKQEAgLTYwNiw2ICs2MjQsMTAgQEAgcGFf ZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiAJaWYgKHdp bmZvLT5lcnJvcl9tcV9oYW5kbGUpCiAJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hh bmRsZSk7CiAKKwkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLiAq LworCWlmICh3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpCisJCXN0cmVhbV9jbGVhbnVwX2ZpbGVz KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHdpbmZvLT5zaGFyZWQtPnhpZCk7CisKIAlpZiAo d2luZm8tPmRzbV9zZWcpCiAJCWRzbV9kZXRhY2god2luZm8tPmRzbV9zZWcpOwogCkBAIC02ODUs NiArNzA3LDczIEBAIHBhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpCiB9CiAKIC8qCisgKiBDaGVj ayBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIHBlbmRpbmcgZHVlIHRvIHNwb29sZWQg bWVzc2FnZXMuCisgKi8KK3N0YXRpYyBib29sCitwYV9oYXNfc3Bvb2xlZF9tZXNzYWdlX3BlbmRp bmcoKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZpbGVzZXRf c3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0ZSgpOworCisJaWYgKGZpbGVzZXRfc3RhdGUgIT0g RlNfVU5LTk9XTikKKwkJcmV0dXJuIHRydWU7CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CisK Ky8qCisgKiBSZXBsYXkgdGhlIHNwb29sZWQgbWVzc2FnZXMgaW4gdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpZiB0aGUgbGVhZGVyIGFwcGx5CisgKiB3b3JrZXIgaGFzIGZpbmlzaGVkIHNlcmlh bGl6aW5nIGNoYW5nZXMgdG8gdGhlIGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9zcG9vbGVk X21lc3NhZ2VzKHZvaWQpCit7CisJUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOwor CisJZmlsZXNldF9zdGF0ZSA9IHBhX2dldF9maWxlc2V0X3N0YXRlKCk7CisKKwkvKgorCSAqIElm IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGlzIGJ1c3kgc2VyaWFsaXppbmcgdGhlIHBhcnRpYWwg Y2hhbmdlcyB0aGVuCisJICogYWNxdWlyZSB0aGUgc3RyZWFtIGxvY2sgbm93IGFuZCB3YWl0IGZv ciB0aGUgbGVhZGVyIHdvcmtlciB0byBmaW5pc2gKKwkgKiBzZXJpYWxpemluZyB0aGUgY2hhbmdl cy4gT3RoZXJ3aXNlLCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdvbid0IGdldAorCSAqIGEg Y2hhbmNlIHRvIHJlY2VpdmUgYSBTVFJFQU1fU1RPUCAoYW5kIGFjcXVpcmUgdGhlIHN0cmVhbSBs b2NrKSB1bnRpbAorCSAqIHRoZSBsZWFkZXIgaGFkIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgd2hp Y2ggY2FuIGxlYWQgdG8gdW5kZXRlY3RlZAorCSAqIGRlYWRsb2NrLgorCSAqCisJICogWFhYIEl0 IGlzIHBvc3NpYmxlIHRoYXQgaW1tZWRpYXRlbHkgYWZ0ZXIgd2UgaGF2ZSB3YWl0ZWQgZm9yIGEg bG9jayBpbgorCSAqIHRoZSBGU19TRVJJQUxJWkVfSU5fUFJPR1JFU1Mgc3RhdGUsIHRoZSBmaWxl c2V0IHN0YXRlIGJlY29tZXMKKwkgKiBGU19TRVJJQUxJWkVfRE9ORSBidXQgcmUtY2hlY2tpbmcg aXQgYWdhaW4gZG9lc24ndCBzZWVtIHdvcnRoIGl0LgorCSAqIEFueXdheSwgbmV4dCB0aW1lIHdo ZW4gdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkLCB3ZSB3aWxsIHNldCB0aGUgc3RhdGUKKwkgKiB0 byBGU19SRUFEWS4KKwkgKi8KKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJQUxJWkVfSU5f UFJPR1JFU1MpCisJeworCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFj Y2Vzc1NoYXJlTG9jayk7CisJCXBhX3VubG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlk LCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKworCS8qCisJICogV2UgY2Fubm90IHJlYWQgdGhlIGZp bGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxlYWRlciBoYXMgc2VyaWFsaXplZCBhbGwKKwkgKiBj aGFuZ2VzIHRvIHRoZSBmaWxlIGJlY2F1c2UgdGhlcmUgbWF5IHN0aWxsIGJlIG1lc3NhZ2VzIGlu IHRoZSBtZW1vcnkKKwkgKiBxdWV1ZS4gV2Ugd2lsbCBhcHBseSBhbGwgc3Bvb2xlZCBtZXNzYWdl cyB0aGUgbmV4dCB0aW1lIHdlIGNhbGwgdGhpcworCSAqIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQg ZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG1lc3NhZ2VzIGxlZnQgaW4gdGhlCisJICogbWVtb3J5 IHF1ZXVlLgorCSAqLworCWVsc2UgaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0RP TkUpCisJeworCQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBGU19SRUFE WSk7CisJfQorCWVsc2UgaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfUkVBRFkpCisJeworCQlhcHBs eV9zcG9vbGVkX21lc3NhZ2VzKCZNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0LAorCQkJCQkJCSAg IE15UGFyYWxsZWxTaGFyZWQtPnhpZCwKKwkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0cik7CisJ CXBhX3NldF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIEZTX1VOS05PV04pOworCX0K K30KKworLyoKICAqIEludGVycnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgogICovCiBzdGF0aWMgdm9pZApAQCAtNzY4LDYgKzg1NywxMSBAQCBMb2dp Y2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQogCQkJLyoKIAkJCSAqIEln bm9yZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBsZWFk ZXIKIAkJCSAqIGFwcGx5IHdvcmtlci4KKwkJCSAqCisJCQkgKiBYWFggV2UgY2FuIGF2b2lkIHNl bmRpbmcgdGhlIHN0YXRpc3RpY3MgZmllbGRzIGZyb20gdGhlIGxlYWRlcgorCQkJICogYXBwbHkg d29ya2VyIGJ1dCBmb3IgdGhhdCwgaXQgbmVlZHMgdG8gcmVidWlsZCB0aGUgZW50aXJlCisJCQkg KiBtZXNzYWdlIGJ5IHJlbW92aW5nIHRoZXNlIGZpZWxkcyB3aGljaCBjb3VsZCBiZSBtb3JlIHdv cmsgdGhhbgorCQkJICogc2ltcGx5IGlnbm9yaW5nIHRoZXNlIGZpZWxkcyBpbiB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgogCQkJICovCiAJCQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01FU1NB R0U7CiAKQEAgLTc3NSwxNiArODY5LDI0IEBAIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1f bXFfaGFuZGxlICptcWgpCiAJCX0KIAkJZWxzZSBpZiAoc2htcV9yZXMgPT0gU0hNX01RX1dPVUxE X0JMT0NLKQogCQl7Ci0JCQlpbnQJCQlyYzsKKwkJCS8qIENoZWNrIGlmIGNoYW5nZXMgaGF2ZSBi ZWVuIHNlcmlhbGl6ZWQgdG8gYSBmaWxlLiAqLworCQkJaWYgKHBhX2hhc19zcG9vbGVkX21lc3Nh Z2VfcGVuZGluZygpKQorCQkJeworCQkJCXBhX3Nwb29sZWRfbWVzc2FnZXMoKTsKKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQlpbnQJcmM7CiAKLQkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8K LQkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAgIDEwMDBMLAotCQkJCQkJICAg V0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOworCQkJCS8qIFdhaXQgZm9y IG1vcmUgd29yay4gKi8KKwkJCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkJCSAgIFdM X0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAg IDEwMDBMLAorCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlO KTsKIAotCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQotCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOwor CQkJfQogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTEwMCwxNSArMTIwMiwyNCBAQCBIYW5kbGVQYXJh bGxlbEFwcGx5TWVzc2FnZXModm9pZCkKIC8qCiAgKiBTZW5kIHRoZSBkYXRhIHRvIHRoZSBzcGVj aWZpZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5CiAgKiBxdWV1ZS4K KyAqCisgKiBJZiB0aGUgYXR0ZW1wdCB0byBzZW5kIGRhdGEgdmlhIHNoYXJlZCBtZW1vcnkgdGlt ZXMgb3V0LCB0aGVuIHdlIHdpbGwgc3dpdGNoCisgKiB0byAiUEFSVElBTF9TRVJJQUxJWkUgbW9k ZSIgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIC0tIHRoaXMgbWVhbnMgdGhhdAorICogdGhl IGN1cnJlbnQgZGF0YSBhbmQgYW55IHN1YnNlcXVlbnQgZGF0YSBmb3IgdGhpcyB0cmFuc2FjdGlv biB3aWxsIGJlCisgKiBzZXJpYWxpemVkIHRvIGEgZmlsZS4gVGhpcyBpcyBkb25lIHRvIHByZXZl bnQgcG9zc2libGUgZGVhZGxvY2tzIHdpdGgKKyAqIGFub3RoZXIgcGFyYWxsZWwgYXBwbHkgd29y a2VyIChyZWZlciB0byB0aGUgY29tbWVudHMgYXRvcAorICogYXBwbHlwYXJhbGxlbHdvcmtlci5j IGZvciBkZXRhaWxzKS4KICAqLwogdm9pZAotcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCitwYV9zZW5kX2Rh dGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9p ZCAqZGF0YSwKKwkJCSBib29sIHN0cmVhbV9sb2NrZWQpCiB7CiAJaW50CQkJcmM7CiAJc2htX21x X3Jlc3VsdCByZXN1bHQ7CiAJVGltZXN0YW1wVHogc3RhcnRUaW1lID0gMDsKIAogCUFzc2VydCgh SXNUcmFuc2FjdGlvblN0YXRlKCkpOworCUFzc2VydCghd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2Vz KTsKIAogI2RlZmluZSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUyAxMDAwCiAjZGVmaW5lIFNI TV9TRU5EX1RJTUVPVVRfTVMJCSgxMDAwMCAtIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TKQpA QCAtMTEzOCwxOSArMTI0OSw0NiBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAJCX0KIAotCQkvKgotCQkgKiBJZiB0aGUgYXR0ZW1wdCB0byBzZW5kIGRh dGEgdmlhIHNoYXJlZCBtZW1vcnkgdGltZXMgb3V0LCB3ZSByZXN0YXJ0Ci0JCSAqIHRoZSBsb2dp Y2FsIHJlcGxpY2F0aW9uIHRvIHByZXZlbnQgcG9zc2libGUgZGVhZGxvY2tzIHdpdGggYW5vdGhl cgotCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9w IHRoaXMgZmlsZSBmb3IKLQkJICogZGV0YWlscy4KLQkJICovCiAJCWlmIChzdGFydFRpbWUgPT0g MCkKIAkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAkJZWxzZSBpZiAoVGlt ZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnRUaW1lLCBHZXRDdXJyZW50VGltZXN0YW1wKCks CiAJCQkJCQkJCQkJCVNITV9TRU5EX1RJTUVPVVRfTVMpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLAotCQkJCQkgZXJybXNnKCJ0 ZXJtaW5hdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkdWUg dG8gdGltZW91dCIpKSk7CisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIG1zZzsKKwkJCUxvZ2ljYWxS ZXBNc2dUeXBlIGFjdGlvbjsKKworCQkJLyoKKwkJCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgY291bGQgYmUgc3R1Y2sgZm9yIHNvbWUgcmVhc29uIChzYXkKKwkJCSAqIHdhaXRpbmcgb24g c29tZSBsb2NrIGJ5IG90aGVyIGJhY2tlbmQpLCBzbyBzdG9wIHRyeWluZyB0byBzZW5kCisJCQkg KiBkYXRhIGRpcmVjdGx5IHRvIGl0IGFuZCBpbnN0ZWFkIHN0YXJ0IHRvIHNlcmlhbGl6ZSBkYXRh IHRvCisJCQkgKiBmaWxlIGluc3RlYWQuCisJCQkgKi8KKwkJCXdpbmZvLT5zZXJpYWxpemVfY2hh bmdlcyA9IHRydWU7CisKKwkJCWluaXRTdHJpbmdJbmZvKCZtc2cpOworCQkJYXBwZW5kQmluYXJ5 U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOworCisJCQkvKiBTa2lwIGZpcnN0IGJ5dGUg YW5kIHN0YXRpc3RpY3MgZmllbGRzLiAqLworCQkJbXNnLmN1cnNvciArPSAxICsgU0laRV9TVEFU U19NRVNTQUdFOworCisJCQkvKiBJbml0aWFsaXplIHRoZSBzdHJlYW0gZmlsZXNldC4gKi8KKwkJ CXN0cmVhbV9zdGFydF9pbnRlcm5hbCh3aW5mby0+c2hhcmVkLT54aWQsIHRydWUpOworCisJCQkv KiBXcml0ZSB0aGlzIG1lc3NhZ2UgdG8gYSBmaWxlLiAqLworCQkJYWN0aW9uID0gcHFfZ2V0bXNn Ynl0ZSgmbXNnKTsKKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCAmbXNnKTsKKworCQkJ LyoKKwkJCSAqIEFjcXVpcmVzIHRoZSBzdHJlYW0gbG9jayBpZiBub3QgYWxyZWFkeSB0byBtYWtl IHN1cmUgdGhhdCB0aGUKKwkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9y IHRoZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUKKwkJCSAqIHN0cmVhbSBsb2NrIHVudGlsIHRoZSBl bmQgb2YgdGhlIHRyYW5zYWN0aW9uLgorCQkJICovCisJCQlpZiAoIXN0cmVhbV9sb2NrZWQpCisJ CQkJcGFfbG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2Nr KTsKKworCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFMSVpF X0lOX1BST0dSRVNTKTsKKwkJCWJyZWFrOworCQl9CiAJfQogfQogCkBAIC0xNDA3LDYgKzE1NDUs NDUgQEAgcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2Rh dGEpCiB9CiAKIC8qCisgKiBTZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9yIHRoZSBnaXZlbiBwYXJh bGxlbCBhcHBseSB3b3JrZXIuIFRoZSBmaWxlc2V0CisgKiB3aWxsIGJlIHNldCBvbmNlIHRoZSBs ZWFkZXIgd29ya2VyIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8gdGhlIGZpbGUKKyAqIHNvIHRo YXQgaXQgY2FuIGJlIHVzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lkCitw YV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAor CQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlKQoreworCVNwaW5Mb2NrQWNx dWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPmZpbGVzZXRfc3RhdGUgPSBmaWxlc2V0 X3N0YXRlOworCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0RPTkUpCisJewor CQlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKwkJQXNzZXJ0KE15TG9naWNhbFJl cFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQl3c2hhcmVkLT5maWxlc2V0ID0gKk15TG9naWNh bFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQ7CisJfQorCisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hh cmVkLT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9yIHRoZSBn aXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3N0YXRpYyBQYXJ0aWFsRmlsZVNldFN0 YXRlCitwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUg ZmlsZXNldF9zdGF0ZTsKKworCUFzc2VydChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CisK KwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlmaWxlc2V0X3N0 YXRlID0gTXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldF9zdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2Uo Jk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKworCXJldHVybiBmaWxlc2V0X3N0YXRlOworfQor CisvKgogICogSGVscGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJlIGFuZCByZWxlYXNlIGEgbG9jayBm b3IgZWFjaCBzdHJlYW0gYmxvY2suCiAgKgogICogU2V0IGxvY2t0YWdfZmllbGQ0IHRvIFBBUkFM TEVMX0FQUExZX0xPQ0tfU1RSRUFNIHRvIGluZGljYXRlIHRoYXQgaXQncyBhCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCAzMjcwZDc0Li5mYWViY2ViIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTI1Niw2ICsyNTYsMTgg QEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCiAgKiB3b3JrZXIuIENoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgd2hlbiB0 aGUKICAqIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgogICoKKyAqIFRSQU5TX0xFQURFUl9QQVJUSUFM X1NFUklBTElaRToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCBoYXZlIHNlbnQgc29tZQorICogY2hhbmdlcyBkaXJlY3RseSB0 byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCB0aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJl CisgKiBzZXJpYWxpemVkIHRvIGEgZmlsZSwgZHVlIHRvIHRpbWVvdXQgd2hpbGUgc2VuZGluZyBk YXRhLiBUaGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciB3aWxsIGFwcGx5IHRoZXNlIHNlcmlh bGl6ZWQgY2hhbmdlcyB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqCisgKiBXZSBj YW4ndCB1c2UgVFJBTlNfTEVBREVSX1NFUklBTElaRSBmb3IgdGhpcyBjYXNlIGJlY2F1c2UsIGlu IGFkZGl0aW9uIHRvCisgKiBzZXJpYWxpemluZyBjaGFuZ2VzLCB0aGUgbGVhZGVyIHdvcmtlciBh bHNvIG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKyAqIFNUUkVBTV9YWFggbWVzc2FnZSB0byBhIGZp bGUsIGFuZCB3YWl0IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvCisgKiBmaW5pc2gg dGhlIHRyYW5zYWN0aW9uIHdoZW4gcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNv bW1hbmQuIFNvCisgKiB0aGlzIG5ldyBhY3Rpb24gd2FzIGludHJvZHVjZWQgdG8ga2VlcCB0aGUg Y29kZSBhbmQgbG9naWMgY2xlYXIuCisgKgogICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CiAgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlciBhbmQgbmVlZCB0byBzZW5kCiAgKiB0aGUgY2hhbmdlcyB0byB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgpAQCAtMjcxLDYgKzI4Myw3IEBAIHR5cGVkZWYgZW51bQogCiAJLyogQWN0 aW9ucyBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KIAlUUkFOU19MRUFERVJfU0VSSUFM SVpFLAorCVRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRSwKIAlUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTCwKIAlUUkFOU19QQVJBTExFTF9BUFBMWQogfSBUcmFuc0FwcGx5QWN0aW9u OwpAQCAtMzUzLDcgKzM2Niw2IEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5U3ViWGFjdERhdGEKIHN0 YXRpYyBBcHBseVN1YlhhY3REYXRhIHN1YnhhY3RfZGF0YSA9IHswLCAwLCBJbnZhbGlkVHJhbnNh Y3Rpb25JZCwgTlVMTH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzdWJ4YWN0X2ZpbGVuYW1lKGNo YXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOwotc3RhdGljIGlubGluZSB2 b2lkIGNoYW5nZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklk IHhpZCk7CiAKIC8qCiAgKiBJbmZvcm1hdGlvbiBhYm91dCBzdWJ0cmFuc2FjdGlvbnMgb2YgYSBn aXZlbiB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KQEAgLTM2NiwxMCArMzc4LDkgQEAgc3RhdGljIGlu bGluZSB2b2lkIGNsZWFudXBfc3VieGFjdF9pbmZvKHZvaWQpOwogLyoKICAqIFNlcmlhbGl6ZSBh bmQgZGVzZXJpYWxpemUgY2hhbmdlcyBmb3IgYSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KICAqLwot c3RhdGljIHZvaWQgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklk IHhpZCk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rp b25JZCB4aWQsCiAJCQkJCQkJIGJvb2wgZmlyc3Rfc2VnbWVudCk7Ci1zdGF0aWMgdm9pZCBzdHJl YW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOworc3RhdGljIHZvaWQg c3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShUcmFuc2FjdGlvbklkIHhpZCwgY2hhciBhY3Rp b24sIFN0cmluZ0luZm8gcyk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fY2xvc2VfZmlsZSh2b2lkKTsK IAogc3RhdGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9y Y2UsIGJvb2wgcmVxdWVzdFJlcGx5KTsKQEAgLTQwMSw5ICs0MTIsNiBAQCBzdGF0aWMgdm9pZCBh cHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogLyog Q29tcHV0ZSBHSUQgZm9yIHR3b19waGFzZSB0cmFuc2FjdGlvbnMgKi8KIHN0YXRpYyB2b2lkIFR3 b1BoYXNlVHJhbnNhY3Rpb25HaWQoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAq Z2lkLCBpbnQgc3pnaWQpOwogCi0vKiBDb21tb24gc3RyZWFtaW5nIGZ1bmN0aW9uIHRvIGFwcGx5 IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcyAqLwotc3RhdGljIHZvaWQgYXBwbHlfc3Bvb2xlZF9t ZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwotCiAvKiBGdW5jdGlv bnMgZm9yIHNraXBwaW5nIGNoYW5nZXMgKi8KIHN0YXRpYyB2b2lkIG1heWJlX3N0YXJ0X3NraXBw aW5nX2NoYW5nZXMoWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIHN0YXRpYyB2b2lkIHN0b3Bfc2tp cHBpbmdfY2hhbmdlcyh2b2lkKTsKQEAgLTU2Niw2ICs1NzQsNyBAQCBoYW5kbGVfc3RyZWFtZWRf dHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAJVHJh bnNhY3Rpb25JZCBjdXJyZW50X3hpZDsKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisJU3RyaW5nSW5mb0RhdGEgb3JpZ2lu YWxfbXNnOwogCiAJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihz dHJlYW1feGlkLCAmd2luZm8pOwogCkBAIC01NzYsNiArNTg1LDE0IEBAIGhhbmRsZV9zdHJlYW1l ZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAlB c3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCiAJLyoKKwkgKiBUaGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIG5lZWRzIHRoZSB4aWQgaW4gdGhpcyBtZXNzYWdlIHRvIGRl Y2lkZQorCSAqIHdoZXRoZXIgdG8gZGVmaW5lIGEgc2F2ZXBvaW50LCBzbyBzYXZlIHRoZSBvcmln aW5hbCBtZXNzYWdlIHRoYXQgaGFzIG5vdAorCSAqIG1vdmVkIHRoZSBjdXJzb3IgYWZ0ZXIgdGhl IHhpZC4gV2Ugd2lsbCBzZXJpYWxpemUgdGhpcyBtZXNzYWdlIHRvIGEgZmlsZQorCSAqIGluIFBB UlRJQUxfU0VSSUFMSVpFIG1vZGUuCisJICovCisJb3JpZ2luYWxfbXNnID0gKnM7CisKKwkvKgog CSAqIFdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIFhJRCBvZiB0aGUgc3VieGFjdCBhcyB0aGUgZmly c3QgcGFydCBvZiB0aGUKIAkgKiBtZXNzYWdlLCBzbyBleHRyYWN0IGl0LgogCSAqLwpAQCAtNTk4 LDEwICs2MTUsMTQgQEAgaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dU eXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24s IHMpOwogCQkJcmV0dXJuIHRydWU7CiAKKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJ QUxJWkU6CiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CiAJCQlBc3NlcnQo d2luZm8pOwogCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlp ZiAoYXBwbHlfYWN0aW9uID09IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKQorCQkJCXBh X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhLCBmYWxzZSk7CisJCQllbHNlCisJCQkJ c3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sICZvcmlnaW5hbF9tc2cpOwogCiAJCQkvKgogCQkJ ICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBkb2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9uL3R5 cGUgdXBkYXRlCkBAIC0xMjQ5LDYgKzEyNzAsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBh cmUoU3RyaW5nSW5mbyBzKQogCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKIAlUcmFu c0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAorCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3Jl IGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwor CiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKQEAgLTEyNzMsNyArMTI5Nyw4IEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQkgKiBUaGUgdHJh bnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQog CQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgogCQkJICovCi0JCQlhcHBseV9zcG9vbGVkX21lc3Nh Z2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CisJCQlhcHBs eV9zcG9vbGVkX21lc3NhZ2VzKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsCisJ CQkJCQkJCSAgIHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAK IAkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwogCQkJYXBwbHlfaGFu ZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CkBAIC0xMjg4LDIwICsxMzEzLDIz IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlk KTsKIAkJCWJyZWFrOwogCi0JCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJ CWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgogCQkJQXNzZXJ0KHdpbmZvKTsK IAorCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShwcmVwYXJlX2RhdGEueGlkLAorCQkJ CQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkUsCisJCQkJCQkJCQkJICZvcmln aW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19T RVJJQUxJWkVfRE9ORSk7CisKIAkJCS8qCiAJCQkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmplY3Qg bG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4KLQkJCSAqIGNvbnRpbnVlIHRv IHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJCQkgKiBhcHBseSBzcG9vbGVkIGNoYW5nZXMu CiAJCQkgKi8KIAkJCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKIAotCQkJLyogU2VuZCBTVFJFQU0gUFJFUEFSRSBtZXNzYWdlIHRvIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxl biwgcy0+ZGF0YSk7Ci0KIAkJCS8qCi0JCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiBBZnRlciBzZXJpYWxpemlu ZyB0aGUgU1RSRUFNIFBSRVBBUkUgbWVzc2FnZSB0byBhIGZpbGUsIHdhaXQgZm9yCiAJCQkgKiB0 aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1p dAogCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBk ZXBlbmRlbmNpZXMgYW5kCiAJCQkgKiBkZWFkbG9ja3MuCkBAIC0xMzE1LDcgKzEzNDMsNTEgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCWluX3JlbW90ZV90 cmFuc2FjdGlvbiA9IGZhbHNlOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXBhX3NlbmRfZGF0YSh3aW5m bywgcy0+bGVuLCBzLT5kYXRhLCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxl IHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICog d29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlp ZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJeworCQkJCXN0cmVhbV9zdG9wX2ludGVy bmFsKHdpbmZvLT5zaGFyZWQtPnhpZCk7CisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8t PnNoYXJlZCwgRlNfU0VSSUFMSVpFX0RPTkUpOworCQkJfQorCisJCQkvKgorCQkJICogVW5sb2Nr IHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2Fu CisJCQkgKiBjb250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCQkJICovCisJ CQlwYV91bmxvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9j ayk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBTVFJFQU0gUFJFUEFSRSBtZXNz YWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyLCB3YWl0IGZvciB0aGF0IHdv cmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvCisJCQkgKiBtYWludGFpbiBjb21t aXQgb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbgorCQkJICog ZGVwZW5kZW5jaWVzIGFuZCBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCXBhX3dhaXRfZm9yX3hhY3Rf ZmluaXNoKHdpbmZvKTsKKworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVu ZF9sc24sIHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2VuZCk7CisKKwkJCSh2b2lkKSBwYV9m cmVlX3dvcmtlcih3aW5mbywgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJCWluX3JlbW90ZV90cmFu c2FjdGlvbiA9IGZhbHNlOworCQkJYnJlYWs7CisKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBM WToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlp bmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUgcHJl cGFyaW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxl KCk7CisKIAkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAogCQkJLyogTWFyayB0aGUgdHJh bnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCkBAIC0xMzc4LDYgKzE0NTAsNDcgQEAgYXBwbHlfaGFu ZGxlX29yaWdpbihTdHJpbmdJbmZvIHMpCiB9CiAKIC8qCisgKiBJbml0aWFsaXplIGZpbGVzZXQg KGlmIG5vdCBhbHJlYWR5IGRvbmUpLgorICoKKyAqIENyZWF0ZSBhIG5ldyBmaWxlIHdoZW4gZmly c3Rfc2VnbWVudCBpcyB0cnVlLCBvdGhlcndpc2Ugb3BlbiB0aGUgZXhpc3RpbmcKKyAqIGZpbGUu CisgKi8KK3ZvaWQKK3N0cmVhbV9zdGFydF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwgYm9v bCBmaXJzdF9zZWdtZW50KQoreworCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCS8qCisJ ICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5 ZXQuIFRoaXMgd2lsbCBiZQorCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhl IHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKKwkgKiBjb250ZXh0LiBXZSBjcmVh dGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFueQorCSAq IHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5n IHRyYW5zYWN0aW9ucy4KKwkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhl IHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKKwkgKiB0aGVuIHdlIHdvbid0IGJlIHN1 cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCQlv bGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCQlNeUxvZ2lj YWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7CisJ CUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCisJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKworCS8qIE9wZW4gdGhlIHNwb29sIGZp bGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCB4aWQsIGZpcnN0X3NlZ21lbnQpOworCisJLyogSWYgdGhpcyBpcyBu b3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxlLiAqLworCWlm ICghZmlyc3Rfc2VnbWVudCkKKwkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgeGlkKTsKKworCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7Cit9CisKKy8qCiAgKiBI YW5kbGUgU1RSRUFNIFNUQVJUIG1lc3NhZ2UuCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0xMzg3LDYg KzE1MDAsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAlQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rp b247CiAKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlT dHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKKwogCWlmIChpbl9zdHJlYW1lZF90cmFu c2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09M X1ZJT0xBVElPTiksCkBAIC0xNDE2LDYyICsxNTMyLDUxIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f c3RhcnQoU3RyaW5nSW5mbyBzKQogCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKIAkJ CS8qCi0JCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0cmFu c2FjdGlvbiB3aWxsIGJlCi0JCQkgKiBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVz cyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KLQkJCSAqIHdoaWNoIGNhc2UgaXQgd2lsbCBi ZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlCi0JCQkgKiBtZXNzYWdlcy4gV2Ug bmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxlLAotCQkJICogdXNl ZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCisJ CQkgKiBGdW5jdGlvbiBzdHJlYW1fc3RhcnRfaW50ZXJuYWwgc3RhcnRzIGEgdHJhbnNhY3Rpb24u IFRoaXMKKwkJCSAqIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0g c3RvcCB1bmxlc3MgaXQgaXMgYQorCQkJICogdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNl IGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyCisJCQkgKiBwcm9jZXNzaW5nIGFsbCB0aGUgbWVz c2FnZXMuIFdlIG5lZWQgdGhpcyB0cmFuc2FjdGlvbiBmb3IKKwkJCSAqIGhhbmRsaW5nIHRoZSBC dWZGaWxlLCB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUgc3RyZWFtaW5nIGRhdGEKKwkJCSAqIGFu ZCBzdWJ4YWN0IGluZm8uCiAJCQkgKi8KLQkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJ CXN0cmVhbV9zdGFydF9pbnRlcm5hbChzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCWJy ZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgogCiAJCQkvKgot CQkJICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4n dCB5ZXQuIFRoaXMKLQkJCSAqIHdpbGwgYmUgdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBv ZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdAotCQkJICogaW4gYSBwZXJtYW5lbnQgY29udGV4dC4g V2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3QKLQkJCSAqIHN0cmVhbWluZyBtZXNzYWdl IGZyb20gYW55IHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcwotCQkJICogYW5k IG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuIE5vdywgd2UgY291bGQgY3JlYXRlIGEKLQkJ CSAqIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQgdGhlbiB3 ZSB3b24ndCBiZQotCQkJICogc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCQkJICog VGhlIG1lc3NhZ2Ugc3Bvb2wgZmlsZSB3YXMgYWxyZWFkeSBjcmVhdGVkIHdoZW4gZW50ZXJpbmcK KwkJCSAqIFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUuIFRoZSB0cmFuc2FjdGlvbiBzdGFydGVkIGlu CisJCQkgKiBzdHJlYW1fc3RhcnRfaW50ZXJuYWwgd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0 cmVhbSBzdG9wLgogCQkJICovCi0JCQlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2Zp bGVzZXQpCi0JCQl7Ci0JCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0KLQkJCQlvbGRjdHggPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKLQotCQkJCU15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKLQkJCQlGaWxl U2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKLQotCQkJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwotCQkJfQotCi0JCQkvKiBPcGVuIHRoZSBzcG9vbCBm aWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLwotCQkJc3RyZWFtX29wZW5fZmlsZShNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKLQotCQkJLyog SWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBm aWxlLiAqLwotCQkJaWYgKCFmaXJzdF9zZWdtZW50KQotCQkJCXN1YnhhY3RfaW5mb19yZWFkKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwotCi0JCQllbmRfcmVwbGljYXRp b25fc3RlcCgpOworCQkJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHN0cmVhbV94aWQsIGZhbHNlKTsK KwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVEFSVCwgJm9y aWdpbmFsX21zZyk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BB UkFMTEVMOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAotCQkJLyoKLQkJCSAqIFVubG9jayB0aGUgc2hh cmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgotCQkJICog Y2FuIGNvbnRpbnVlIHRvIHJlY2VpdmUgY2hhbmdlcy4KLQkJCSAqLwotCQkJaWYgKCFmaXJzdF9z ZWdtZW50KQotCQkJCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhLCAh Zmlyc3Rfc2VnbWVudCk7CiAKLQkJCS8qCi0JCQkgKiBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiBz dHJlYW1pbmcgYmxvY2tzIHdhaXRpbmcgdG8gYmUKLQkJCSAqIHByb2Nlc3NlZCBieSBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCi0JCQkgKi8KLQkJCXBhX2luY3JlbWVudF9zdHJlYW1fYmxvY2sod2lu Zm8tPnNoYXJlZCk7CisJCQlpZiAoIXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJCXsKKwkJ CQkvKgorCQkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHdoZW4gbm8gY2hhbmdl IHdhcyBzZXJpYWxpemVkCisJCQkJICogc28gdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGNhbiBjb250aW51ZSB0byByZWNlaXZlCisJCQkJICogY2hhbmdlcy4gTm8gbmVlZCB0byB0YWtl IHRoZSBsb2NrIGlmIHN3aXRjaGVkIHRvIHNlcmlhbGl6ZQorCQkJCSAqIG1vZGUgYmVjYXVzZSB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHNob3VsZCB3YWl0IGZvciB0aGUKKwkJCQkgKiBsZWFk ZXIgdG8gcmVsZWFzZSB0aGUgc3RyZWFtIGxvY2sgdW50aWwgdGhlIGVuZCBvZiB0aGUKKwkJCQkg KiB0cmFuc2FjdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJCXBh X3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsK IAotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCQkJCS8qCisJCQkJ ICogSW5jcmVtZW50IHRoZSBudW1iZXIgb2Ygc3RyZWFtaW5nIGJsb2NrcyB3YWl0aW5nIHRvIGJl CisJCQkJICogcHJvY2Vzc2VkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCQkgKi8KKwkJ CQlwYV9pbmNyZW1lbnRfc3RyZWFtX2Jsb2NrKHdpbmZvLT5zaGFyZWQpOworCQkJfQogCiAJCQkv KiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAq LwogCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8pOwpAQCAtMTQ5Nyw2ICsxNjAy LDMzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogfQogCiAvKgor ICogVXBkYXRlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBhbmQgY2xvc2UgdGhlIGZp bGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHN0cmVh bV9zdGFydF9pbnRlcm5hbCBmdW5jdGlvbiBoYXMKKyAqIGJlZW4gY2FsbGVkLgorICovCit2b2lk CitzdHJlYW1fc3RvcF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwkvKgorCSAqIFNl cmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5z YWN0aW9uLCB0aGVuCisJICogY2xvc2UgdGhlIHN0cmVhbSBtZXNzYWdlcyBzcG9vbCBmaWxlLgor CSAqLworCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQp OworCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkp OworCisJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwlN ZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCisJcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKK30KKworLyoKICAqIEhhbmRsZSBTVFJF QU0gU1RPUCBtZXNzYWdlLgogICovCiBzdGF0aWMgdm9pZApAQCAtMTUxNSwyNCArMTY0NywxMyBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogCXN3aXRjaCAoYXBwbHlf YWN0aW9uKQogCXsKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3N0 b3BfaW50ZXJuYWwoc3RyZWFtX3hpZCk7CisJCQlicmVhazsKIAotCQkJLyoKLQkJCSAqIENsb3Nl IHRoZSBmaWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplCi0JCQkgKiBp bmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgot CQkJICovCi0JCQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg c3RyZWFtX3hpZCk7Ci0JCQlzdHJlYW1fY2xvc2VfZmlsZSgpOwotCi0JCQkvKiBXZSBtdXN0IGJl IGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KLQkJCUFzc2VydChJc1RyYW5zYWN0aW9u U3RhdGUoKSk7Ci0KLQkJCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLwot CQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0KLQkJCS8qIFJlc2V0IHBlci1zdHJlYW0g Y29udGV4dCAqLwotCQkJTWVtb3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0 KTsKLQotCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKwkJY2Fz ZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdl KExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUCwgcyk7CisJCQlzdHJlYW1fc3RvcF9pbnRlcm5h bChzdHJlYW1feGlkKTsKKwkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5VTEwpOwogCQkJ YnJlYWs7CiAKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKQEAgLTE1NDYs NyArMTY2NywxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogCQkJ ICovCiAJCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spOwogCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlw YV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSwgdHJ1ZSk7CisKKwkJCS8qCisJCQkg KiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxs ZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0byBzZXJpYWxpemUgbW9k ZS4KKwkJCSAqLworCQkJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJCQlzdHJlYW1f c3RvcF9pbnRlcm5hbCh3aW5mby0+c2hhcmVkLT54aWQpOwogCiAJCQlwYV9zZXRfc3RyZWFtX2Fw cGx5X3dvcmtlcihOVUxMKTsKIApAQCAtMTY3NSw2ICsxODAzLDkgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9y dF9kYXRhOwogCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0 aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNv bnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCWJvb2wJCXRv cGxldmVsX3hhY3Q7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCkBAIC0xNzA1LDE0 ICsxODM2LDI4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJ c3RyZWFtX2Fib3J0X2ludGVybmFsKHhpZCwgc3VieGlkKTsKIAkJCWJyZWFrOwogCi0JCWNhc2Ug VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJ QUxfU0VSSUFMSVpFOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAogCQkJLyoKLQkJCSAqIFVubG9jayB0 aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgot CQkJICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqIFBhcmFs bGVsIGFwcGx5IHdvcmtlciBtaWdodCBoYXZlIGFwcGxpZWQgc29tZSBjaGFuZ2VzLCBzbyB3cml0 ZQorCQkJICogdGhlIFNUUkVBTV9BQk9SVCBtZXNzYWdlIHNvIHRoYXQgaXQgY2FuIHJvbGxiYWNr IHRoZQorCQkJICogc3VidHJhbnNhY3Rpb24gaWYgbmVlZGVkLgogCQkJICovCi0JCQlwYV91bmxv Y2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQlzdHJlYW1fb3Blbl9hbmRf d3JpdGVfY2hhbmdlKHhpZCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCwKKwkJCQkJCQkJ CQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCWlmICh0b3BsZXZlbF94YWN0KQorCQkJeworCQkJCXBh X3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCQlwYV9zZXRfZmls ZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisJCQkJKHZvaWQp IHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCQkJfQorCisJCQlicmVhazsKKworCQljYXNl IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKIAogCQkJ LyoKIAkJCSAqIEZvciB0aGUgY2FzZSBvZiBhYm9ydGluZyB0aGUgc3VidHJhbnNhY3Rpb24sIHdl IGluY3JlbWVudCB0aGUKQEAgLTE3MzEsMTkgKzE4NzYsNDEgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCWlmICghdG9wbGV2ZWxfeGFjdCkKIAkJ CXsKKwkJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAJCQkJ cGFfaW5jcmVtZW50X3N0cmVhbV9ibG9jayh3aW5mby0+c2hhcmVkKTsKIAkJCQlwYV9sb2NrX3N0 cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCQkJfQogCiAJCQkvKiBTZW5kIFNUUkVB TSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCi0JCQlwYV9z ZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlwYV9zZW5kX2RhdGEod2luZm8s IHMtPmxlbiwgcy0+ZGF0YSwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0 aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdv cmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4KKwkJCSAqLworCQkJaWYg KHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJCQlzdHJlYW1fc3RvcF9pbnRlcm5hbCh3aW5m by0+c2hhcmVkLT54aWQpOwogCiAJCQlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJCXsKKwkJCQlpZiAo d2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5m by0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJCQlwYV91bmxvY2tfc3RyZWFtKHhp ZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAJCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZv LCB4aWQpOworCQkJfQogCiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZ OgorCisJCQkvKgorCQkJICogSWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWlu ZyBzcG9vbGVkIG1lc3NhZ2VzIHRoZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBhYm9y dGluZy4KKwkJCSAqLworCQkJaWYgKHRvcGxldmVsX3hhY3QgJiYgc3RyZWFtX2ZkKQorCQkJCXN0 cmVhbV9jbG9zZV9maWxlKCk7CisKIAkJCXBhX3N0cmVhbV9hYm9ydCgmYWJvcnRfZGF0YSk7CiAK IAkJCS8qCkBAIC0xNzczLDE5ICsxOTQwLDU1IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBzKQogfQogCiAvKgotICogQ29tbW9uIHNwb29sZmlsZSBwcm9jZXNzaW5nLgor ICogRW5zdXJlIHRoYXQgdGhlIHBhc3NlZCBsb2NhdGlvbiBpcyBmaWxlc2V0J3MgZW5kLgogICov CiBzdGF0aWMgdm9pZAotYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pCitlbnN1cmVfbGFzdF9tZXNzYWdlKEZpbGVTZXQgKnN0cmVhbV9maWxl c2V0LCBUcmFuc2FjdGlvbklkIHhpZCwgaW50IGZpbGVubywKKwkJCQkJb2ZmX3Qgb2Zmc2V0KQor eworCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKKwlCdWZGaWxlCSAgICpmZDsKKwlpbnQJCQlsYXN0 X2ZpbGVubzsKKwlvZmZfdAkJbGFzdF9vZmZzZXQ7CisKKwlBc3NlcnQoIUlzVHJhbnNhY3Rpb25T dGF0ZSgpKTsKKworCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWNoYW5nZXNfZmlsZW5h bWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKworCWZkID0gQnVmRmls ZU9wZW5GaWxlU2V0KHN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05MWSwgZmFsc2UpOworCisJ QnVmRmlsZVNlZWsoZmQsIDAsIDAsIFNFRUtfRU5EKTsKKwlCdWZGaWxlVGVsbChmZCwgJmxhc3Rf ZmlsZW5vLCAmbGFzdF9vZmZzZXQpOworCisJQnVmRmlsZUNsb3NlKGZkKTsKKworCWVuZF9yZXBs aWNhdGlvbl9zdGVwKCk7CisKKwlpZiAobGFzdF9maWxlbm8gIT0gZmlsZW5vIHx8IGxhc3Rfb2Zm c2V0ICE9IG9mZnNldCkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbWVzc2FnZSBsZWZ0IGlu IHN0cmVhbWluZyB0cmFuc2FjdGlvbidzIGNoYW5nZXMgZmlsZSBcIiVzXCIiLAorCQkJIHBhdGgp OworfQorCisvKgorICogQ29tbW9uIHNwb29sZmlsZSBwcm9jZXNzaW5nLgorICovCit2b2lkCith cHBseV9zcG9vbGVkX21lc3NhZ2VzKEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlv bklkIHhpZCwKKwkJCQkJICAgWExvZ1JlY1B0ciBsc24pCiB7CiAJU3RyaW5nSW5mb0RhdGEgczI7 CiAJaW50CQkJbmNoYW5nZXM7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCWNoYXIJICAgKmJ1 ZmZlciA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7Ci0JQnVmRmlsZSAgICAqZmQ7CisJ UmVzb3VyY2VPd25lciBvbGRvd25lcjsKKwlpbnQJCQlmaWxlbm87CisJb2ZmX3QJCW9mZnNldDsK IAotCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMobHNuKTsKKwlpZiAoIWFtX3BhcmFsbGVs X2FwcGx5X3dvcmtlcigpKQorCQltYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKGxzbik7CiAK IAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBvcGVuIHRyYW5zYWN0aW9uICovCiAJYmVnaW5fcmVw bGljYXRpb25fc3RlcCgpOwpAQCAtMTgwMSw4ICsyMDA0LDE2IEBAIGFwcGx5X3Nwb29sZWRfbWVz c2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWNoYW5nZXNfZmlsZW5h bWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKIAllbG9nKERFQlVHMSwg InJlcGxheWluZyBjaGFuZ2VzIGZyb20gZmlsZSBcIiVzXCIiLCBwYXRoKTsKIAotCWZkID0gQnVm RmlsZU9wZW5GaWxlU2V0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsIHBhdGgs IE9fUkRPTkxZLAotCQkJCQkJCWZhbHNlKTsKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGUgZmlsZSBp cyBvd25lZCBieSB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgZmlsZQorCSAq IHdpbGwgbm90IGJlIGFjY2lkZW50YWxseSBjbG9zZWQgd2hlbiBhYm9ydGluZyBhIHN1YnRyYW5z YWN0aW9uLgorCSAqLworCW9sZG93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJQ3VycmVu dFJlc291cmNlT3duZXIgPSBUb3BUcmFuc2FjdGlvblJlc291cmNlT3duZXI7CisKKwlzdHJlYW1f ZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoc3RyZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLCBm YWxzZSk7CisKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IG9sZG93bmVyOwogCiAJYnVmZmVyID0g cGFsbG9jKEJMQ0tTWik7CiAJaW5pdFN0cmluZ0luZm8oJnMyKTsKQEAgLTE4MzMsNyArMjA0NCw3 IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIg bHNuKQogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qIHJlYWQgbGVuZ3RoIG9mIHRo ZSBvbi1kaXNrIHJlY29yZCAqLwotCQluYnl0ZXMgPSBCdWZGaWxlUmVhZChmZCwgJmxlbiwgc2l6 ZW9mKGxlbikpOworCQluYnl0ZXMgPSBCdWZGaWxlUmVhZChzdHJlYW1fZmQsICZsZW4sIHNpemVv ZihsZW4pKTsKIAogCQkvKiBoYXZlIHdlIHJlYWNoZWQgZW5kIG9mIHRoZSBmaWxlPyAqLwogCQlp ZiAobmJ5dGVzID09IDApCkBAIC0xODU0LDEyICsyMDY1LDE0IEBAIGFwcGx5X3Nwb29sZWRfbWVz c2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCQlidWZmZXIgPSByZXBh bGxvYyhidWZmZXIsIGxlbik7CiAKIAkJLyogYW5kIGZpbmFsbHkgcmVhZCB0aGUgZGF0YSBpbnRv IHRoZSBidWZmZXIgKi8KLQkJaWYgKEJ1ZkZpbGVSZWFkKGZkLCBidWZmZXIsIGxlbikgIT0gbGVu KQorCQlpZiAoQnVmRmlsZVJlYWQoc3RyZWFtX2ZkLCBidWZmZXIsIGxlbikgIT0gbGVuKQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBl cnJtc2coImNvdWxkIG5vdCByZWFkIGZyb20gc3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdl cyBmaWxlIFwiJXNcIjogJW0iLAogCQkJCQkJCXBhdGgpKSk7CiAKKwkJQnVmRmlsZVRlbGwoc3Ry ZWFtX2ZkLCAmZmlsZW5vLCAmb2Zmc2V0KTsKKwogCQkvKiBjb3B5IHRoZSBidWZmZXIgdG8gdGhl IHN0cmluZ2luZm8gYW5kIGNhbGwgYXBwbHlfZGlzcGF0Y2ggKi8KIAkJcmVzZXRTdHJpbmdJbmZv KCZzMik7CiAJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJnMyLCBidWZmZXIsIGxlbik7CkBAIC0x ODc1LDE1ICsyMDg4LDI0IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuKQogCiAJCW5jaGFuZ2VzKys7CiAKKwkJLyoKKwkJICogSXQgaXMg cG9zc2libGUgdGhlIGZpbGUgaGFzIGJlZW4gY2xvc2VkIGJlY2F1c2Ugd2UgaGF2ZSBwcm9jZXNz ZWQKKwkJICogdGhlIHRyYW5zYWN0aW9uIGVuZCBtZXNzYWdlIGxpa2Ugc3RyZWFtX2NvbW1pdCBp biB3aGljaCBjYXNlIHRoYXQKKwkJICogbXVzdCBiZSB0aGUgbGFzdCBtZXNzYWdlLgorCQkgKi8K KwkJaWYgKCFzdHJlYW1fZmQpCisJCXsKKwkJCWVuc3VyZV9sYXN0X21lc3NhZ2Uoc3RyZWFtX2Zp bGVzZXQsIHhpZCwgZmlsZW5vLCBvZmZzZXQpOworCQkJYnJlYWs7CisJCX0KKwogCQlpZiAobmNo YW5nZXMgJSAxMDAwID09IDApCiAJCQllbG9nKERFQlVHMSwgInJlcGxheWVkICVkIGNoYW5nZXMg ZnJvbSBmaWxlIFwiJXNcIiIsCiAJCQkJIG5jaGFuZ2VzLCBwYXRoKTsKIAl9CiAKLQlCdWZGaWxl Q2xvc2UoZmQpOwotCi0JcGZyZWUoYnVmZmVyKTsKLQlwZnJlZShzMi5kYXRhKTsKKwlpZiAoc3Ry ZWFtX2ZkKQorCQlzdHJlYW1fY2xvc2VfZmlsZSgpOwogCiAJZWxvZyhERUJVRzEsICJyZXBsYXll ZCAlZCAoYWxsKSBjaGFuZ2VzIGZyb20gZmlsZSBcIiVzXCIiLAogCQkgbmNoYW5nZXMsIHBhdGgp OwpAQCAtMTkwMiw2ICsyMTI0LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5n SW5mbyBzKQogCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0 aW9uIGFwcGx5X2FjdGlvbjsKIAorCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNv bnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOworCiAJaWYgKGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKQEAgLTE5MjAsNyArMjE0NSw4IEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJCSAqIFRoZSB0cmFuc2FjdGlvbiBo YXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCiAJCQkgKiBzcG9v bGVkIG9wZXJhdGlvbnMuCiAJCQkgKi8KLQkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoeGlkLCBj b21taXRfZGF0YS5jb21taXRfbHNuKTsKKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgeGlkLAorCQkJCQkJCQkgICBjb21taXRfZGF0 YS5jb21taXRfbHNuKTsKIAogCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0 X2RhdGEpOwogCkBAIC0xOTI4LDIwICsyMTU0LDIyIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29t bWl0KFN0cmluZ0luZm8gcykKIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCk7CiAJCQlicmVhazsKIAotCQljYXNlIFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMOgorCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKIAkJ CUFzc2VydCh3aW5mbyk7CiAKKwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoeGlkLCBM T0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0NPTU1JVCwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7 CisKKwkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9E T05FKTsKKwogCQkJLyoKIAkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRo YXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgotCQkJICogY29udGludWUgdG8gcmVjZWl2ZSBh bmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqIGFwcGx5IHNwb29sZWQgY2hhbmdlcy4KIAkJCSAqLwog CQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCi0JCQkvKiBT ZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAq LwotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOwotCiAJCQkvKgotCQkJ ICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3 YWl0IGZvcgorCQkJICogQWZ0ZXIgc2VyaWFsaXppbmcgdGhlIFNUUkVBTSBDT01NSVQgbWVzc2Fn ZSB0byBhIGZpbGUsIHdhaXQgZm9yCiAJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMg aXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAogCQkJICogb3JkZXIgd2hpY2ggYXZvaWRz IGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCiAJCQkgKiBkZWFk bG9ja3MuCkBAIC0xOTQ5LDEyICsyMTc3LDU0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0 KFN0cmluZ0luZm8gcykKIAkJCXBhX3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvKTsKIAogCQkJ c3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbiwgd2luZm8tPnNoYXJlZC0+ bGFzdF9jb21taXRfZW5kKTsKKwkJCSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsK KworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJ CUFzc2VydCh3aW5mbyk7CisKKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRh LCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGlu ZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8g c3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlpZiAod2luZm8tPnNlcmlhbGl6 ZV9jaGFuZ2VzKQorCQkJeworCQkJCXN0cmVhbV9zdG9wX2ludGVybmFsKHdpbmZvLT5zaGFyZWQt PnhpZCk7CisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFM SVpFX0RPTkUpOworCQkJfQorCisJCQkvKgorCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0 IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCisJCQkgKiBjb250aW51ZSB0 byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCQkJICovCisJCQlwYV91bmxvY2tfc3RyZWFt KHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5n IHRoZSBTVFJFQU0gQ09NTUlUIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3 b3JrZXIsIHdhaXQgZm9yIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3Nhcnkg dG8KKwkJCSAqIG1haW50YWluIGNvbW1pdCBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVl IHRvIHRyYW5zYWN0aW9uCisJCQkgKiBkZXBlbmRlbmNpZXMgYW5kIGRlYWRsb2Nrcy4KKwkJCSAq LworCQkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCisJCQlzdG9yZV9mbHVzaF9w b3NpdGlvbihjb21taXRfZGF0YS5lbmRfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9l bmQpOwogCiAJCQkodm9pZCkgcGFfZnJlZV93b3JrZXIod2luZm8sIHhpZCk7CiAKIAkJCWJyZWFr OwogCiAJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgor CQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIGNvbW1pdHRpbmcuCisJCQkgKi8KKwkJCWlmIChz dHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwogCQkJYXBwbHlfaGFuZGxlX2Nv bW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCiAJCQlNeVBhcmFsbGVsU2hhcmVkLT5sYXN0 X2NvbW1pdF9lbmQgPSBYYWN0TGFzdENvbW1pdEVuZDsKQEAgLTM4NzcsNyArNDE0Nyw3IEBAIHN1 YnhhY3RfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkK IH0KIAogLyogZm9ybWF0IGZpbGVuYW1lIGZvciBmaWxlIGNvbnRhaW5pbmcgc2VyaWFsaXplZCBj aGFuZ2VzICovCi1zdGF0aWMgaW5saW5lIHZvaWQKK3ZvaWQKIGNoYW5nZXNfZmlsZW5hbWUoY2hh ciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAlzbnByaW50ZihwYXRo LCBNQVhQR1BBVEgsICIldS0ldS5jaGFuZ2VzIiwgc3ViaWQsIHhpZCk7CkBAIC0zODkxLDcgKzQx NjEsNyBAQCBjaGFuZ2VzX2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rp b25JZCB4aWQpCiAgKiB0b3BsZXZlbCB0cmFuc2FjdGlvbi4gRWFjaCBzdWJzY3JpcHRpb24gaGFz IGEgc2VwYXJhdGUgc2V0IG9mIGZpbGVzCiAgKiBmb3IgYW55IHRvcGxldmVsIHRyYW5zYWN0aW9u LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1Ymlk LCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CkBAIC0zOTE0 LDkgKzQxODQsNiBAQCBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9u SWQgeGlkKQogICogYnkgc3RyZWFtX3hpZCAoZ2xvYmFsIHZhcmlhYmxlKS4gSWYgaXQncyB0aGUg Zmlyc3QgY2h1bmsgb2Ygc3RyZWFtZWQKICAqIGNoYW5nZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24s IGNyZWF0ZSB0aGUgYnVmZmlsZSwgb3RoZXJ3aXNlIG9wZW4gdGhlCiAgKiBwcmV2aW91c2x5IGNy ZWF0ZWQgZmlsZS4KLSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgYmVnaW5u aW5nIG9mIGEgInN0cmVhbWluZyIgYmxvY2ssIGkuZS4KLSAqIGJldHdlZW4gc3RyZWFtX3N0YXJ0 L3N0cmVhbV9zdG9wIG1lc3NhZ2VzIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBzdGF0aWMgdm9p ZAogc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZp cnN0X3NlZ21lbnQpCkBAIC0zOTI0LDcgKzQxOTEsNiBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBz dWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIAljaGFyCQlwYXRo W01BWFBHUEFUSF07CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKLQlBc3NlcnQoaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24pOwogCUFzc2VydChPaWRJc1ZhbGlkKHN1YmlkKSk7CiAJQXNzZXJ0KFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgPT0gTlVMTCk7CkBA IC0zOTYzLDE1ICs0MjI5LDEwIEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2Fj dGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogLyoKICAqIHN0cmVhbV9jbG9zZV9maWxl CiAgKgkgIENsb3NlIHRoZSBjdXJyZW50bHkgb3BlbiBmaWxlIHdpdGggc3RyZWFtZWQgY2hhbmdl cy4KLSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgc3RyZWFt aW5nIGJsb2NrLCBpLmUuIGF0IHN0cmVhbV9zdG9wCi0gKiBtZXNzYWdlIGZyb20gdGhlIHVwc3Ry ZWFtLgogICovCiBzdGF0aWMgdm9pZAogc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCkKIHsKLQlBc3Nl cnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCUJ1ZkZpbGVD bG9zZShzdHJlYW1fZmQpOwpAQCAtMzk4OCwxMyArNDI0OSwxMSBAQCBzdHJlYW1fY2xvc2VfZmls ZSh2b2lkKQogICogdGhlIGxlbmd0aCksIGFjdGlvbiBjb2RlIChpZGVudGlmeWluZyB0aGUgbWVz c2FnZSB0eXBlKSBhbmQgbWVzc2FnZQogICogY29udGVudHMgKHdpdGhvdXQgdGhlIHN1YnhhY3Qg VHJhbnNhY3Rpb25JZCB2YWx1ZSkuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdHJlYW1fd3Jp dGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7CiAJaW50CQkJbGVuOwogCi0J QXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElz VmFsaWQoc3RyZWFtX3hpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKIAkvKiB0 b3RhbCBvbi1kaXNrIHNpemUsIGluY2x1ZGluZyB0aGUgYWN0aW9uIHR5cGUgY2hhcmFjdGVyICov CkBAIC00MDEzLDYgKzQyNzIsMjMgQEAgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwg U3RyaW5nSW5mbyBzKQogfQogCiAvKgorICogc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZQor ICoJICBTZXJpYWxpemUgYSBtZXNzYWdlIHRvIGEgZmlsZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0 aW9uLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBzdHJlYW1fd3JpdGVfY2hh bmdlIGV4Y2VwdCB0aGF0IGl0IHdpbGwgb3BlbiB0aGUKKyAqIHRhcmdldCBmaWxlIGJlZm9yZSB3 cml0aW5nIHRoZSBtZXNzYWdlIGFuZCBjbG9zZSBmaWxlIGF0IHRoZSBlbmQuCisgKi8KK3N0YXRp YyB2b2lkCitzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKFRyYW5zYWN0aW9uSWQgeGlkLCBj aGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQoreworCUFzc2VydCghaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pOworCisJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHhpZCwgZmFsc2UpOworCXN0cmVhbV93 cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwlzdHJlYW1fc3RvcF9pbnRlcm5hbCh4aWQpOworfQor CisvKgogICogQ2xlYW51cCB0aGUgbWVtb3J5IGZvciBzdWJ4YWN0cyBhbmQgcmVzZXQgdGhlIHJl bGF0ZWQgdmFyaWFibGVzLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKQEAgLTQ2ODMsNyArNDk1 OSw4IEBAIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1lKQog LyoKICAqIFJldHVybiB0aGUgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlv bi4gKndpbmZvIGlzIGFzc2lnbmVkIHRvCiAgKiB0aGUgZGVzdGluYXRpb24gcGFyYWxsZWwgd29y a2VyIGluZm8gKGlmIHRoZSBhY3Rpb24gaXMKLSAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMKSwgb3RoZXJ3aXNlICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgorICogVFJBTlNfTEVBREVS X1NFTkRfVE9fUEFSQUxMRUwgb3IgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFKSwgb3Ro ZXJ3aXNlCisgKiAqd2luZm8gaXMgYXNzaWduZWQgTlVMTC4KICAqLwogc3RhdGljIFRyYW5zQXBw bHlBY3Rpb24KIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQs IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pCkBAIC00NzA1LDEyICs0OTgyLDE2IEBA IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICoqd2luZm8pCiAJICovCiAJKndpbmZvID0gcGFfZmluZF93b3JrZXIo eGlkKTsKIAotCWlmICgqd2luZm8pCisJaWYgKCEqd2luZm8pCiAJewotCQlyZXR1cm4gVFJBTlNf TEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpF OworCX0KKwllbHNlIGlmICgoKndpbmZvKS0+c2VyaWFsaXplX2NoYW5nZXMpCisJeworCQlyZXR1 cm4gVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOwogCX0KIAllbHNlCiAJewotCQlyZXR1 cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RP X1BBUkFMTEVMOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmgKaW5kZXggOTc1M2RmYy4uMjMyZmI5MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1l c3RhbXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9s b2dpY2FscmVsYXRpb24uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NobV9tcS5oIgpAQCAtOTUsNiArOTYsMjIgQEAgdHlwZWRlZiBlbnVtIFBhcmFs bGVsVHJhbnNTdGF0ZQogfSBQYXJhbGxlbFRyYW5zU3RhdGU7CiAKIC8qCisgKiBTdGF0ZSBvZiBm aWxlc2V0IGluIGxlYWRlciBhcHBseSB3b3JrZXIuCisgKgorICogRlNfU0VSSUFMSVpFX0lOX1BS T0dSRVNTIG1lYW5zIHRoYXQgdGhlIGxlYWRlciBpcyBzZXJpYWxpemluZyBjaGFuZ2VzIHRvIHRo ZQorICogZmlsZS4gRlNfU0VSSUFMSVpFX0RPTkUgbWVhbnMgdGhhdCB0aGUgbGVhZGVyIGhhcyBz ZXJpYWxpemVkIGFsbCBjaGFuZ2VzIHRvCisgKiB0aGUgZmlsZS4gRlNfUkVBRFkgbWVhbnMgdGhh dCBpdCBpcyBub3cgb2sgZm9yIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHJlYWQKKyAqIHRoZSBm aWxlLgorICovCit0eXBlZGVmIGVudW0gUGFydGlhbEZpbGVTZXRTdGF0ZQoreworCUZTX1VOS05P V04sCisJRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTLAorCUZTX1NFUklBTElaRV9ET05FLAorCUZT X1JFQURZCit9IFBhcnRpYWxGaWxlU2V0U3RhdGU7CisKKy8qCiAgKiBTdHJ1Y3QgZm9yIHNoYXJp bmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbAog ICogYXBwbHkgd29ya2Vycy4KICAqLwpAQCAtMTM1LDYgKzE1MiwxOSBAQCB0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiAJICogdGhlIGxlYWRlciB3b3JrZXIgc28gaXQg Y2FuIHVwZGF0ZSB0aGUgbHNuX21hcHBpbmdzLgogCSAqLwogCVhMb2dSZWNQdHIJbGFzdF9jb21t aXRfZW5kOworCisJLyoKKwkgKiBBZnRlciBlbnRlcmluZyBQQVJUSUFMX1NFUklBTElaRSBtb2Rl LCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsCisJICogc2VyaWFsaXplIGNoYW5nZXMgdG8g dGhlIGZpbGUsIGFuZCBzaGFyZSB0aGUgZmlsZXNldCB3aXRoIHRoZSBwYXJhbGxlbAorCSAqIGFw cGx5IHdvcmtlciB3aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5k LiBUaGVuIHRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGFwcGx5IGFsbCB0aGUg c3Bvb2xlZCBtZXNzYWdlcy4KKwkgKgorCSAqIEZpbGVTZXQgaXMgdXNlZCBoZXJlIGluc3RlYWQg b2YgU2hhcmVkRmlsZVNldCBiZWNhdXNlIHdlIG5lZWQgaXQgdG8KKwkgKiBzdXJ2aXZlIGFmdGVy IHJlbGVhc2luZyB0aGUgc2hhcmVkIG1lbW9yeSBzbyB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKKwkg KiB3b3JrZXIgY2FuIHJlLXVzZSB0aGUgc2FtZSBmaWxlc2V0IGZvciB0aGUgbmV4dCBzdHJlYW1p bmcgdHJhbnNhY3Rpb24uCisJICovCisJUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRl OworCUZpbGVTZXQJCWZpbGVzZXQ7CiB9IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQ7CiAKIC8q CkBAIC0xNTMsNiArMTgzLDEzIEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvCiAJZHNtX3NlZ21lbnQgKmRzbV9zZWc7CiAKIAkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVy IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKwkgKiByZW1h aW5pbmcgY2hhbmdlcyB0byBhIGZpbGUgZHVlIHRvIHRpbWVvdXQgd2hlbiBhdHRlbXB0aW5nIHRv IHNlbmQgZGF0YQorCSAqIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZCBt ZW1vcnkuCisJICovCisJYm9vbAkJc2VyaWFsaXplX2NoYW5nZXM7CisKKwkvKgogCSAqIFRydWUg aWYgdGhlIHdvcmtlciBpcyBiZWluZyB1c2VkIHRvIHByb2Nlc3MgYSBwYXJhbGxlbCBhcHBseQog CSAqIHRyYW5zYWN0aW9uLiBGYWxzZSBpbmRpY2F0ZXMgdGhpcyB3b3JrZXIgaXMgYXZhaWxhYmxl IGZvciByZS11c2UuCiAJICovCkBAIC0yMDUsMTAgKzI0MiwyMSBAQCBleHRlcm4gdm9pZCBwcm9j ZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQg aW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBjYWNoZWlkLAog CQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgc3RyZWFtX3N0YXJ0 X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpOworZXh0ZXJu IHZvaWQgc3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQpOworCisvKiBDb21t b24gc3RyZWFtaW5nIGZ1bmN0aW9uIHRvIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcyAq LworZXh0ZXJuIHZvaWQgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhGaWxlU2V0ICpzdHJlYW1fZmls ZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbHNuKTsKKwog ZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKIAogZXh0ZXJuIHZvaWQg bWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKIAorZXh0ZXJuIHZvaWQgY2hhbmdlc19m aWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVy biB2b2lkIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcyk7Citl eHRlcm4gdm9pZCBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQg eGlkKTsKKwogZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpOwogCiAvKiBG dW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTIyMyw3ICsyNzEsNyBAQCBl eHRlcm4gdm9pZCBwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFf c3RvcF9pZGxlX3dvcmtlcnModm9pZCk7CiAKIGV4dGVybiB2b2lkIHBhX3NlbmRfZGF0YShQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAotCQkJCQkJIGNvbnN0IHZv aWQgKmRhdGEpOworCQkJCQkJIGNvbnN0IHZvaWQgKmRhdGEsIGJvb2wgc3RyZWFtX2xvY2tlZCk7 CiBleHRlcm4gdm9pZCBwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd3NoYXJlZCk7CiAKIGV4dGVybiB2b2lkIHBhX3NldF94YWN0X3N0YXRlKFBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCkBAIC0yMzMsNiArMjgxLDggQEAgZXh0ZXJuIHZv aWQgcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvKTsKIGV4dGVybiB2b2lkIHBhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVu dF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hpZCk7CiBleHRlcm4gdm9pZCBwYV9yZXNldF9zdWJ0 cmFucyh2b2lkKTsKIGV4dGVybiB2b2lkIHBhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFt QWJvcnREYXRhICphYm9ydF9kYXRhKTsKK2V4dGVybiB2b2lkIHBhX3NldF9maWxlc2V0X3N0YXRl KFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCQkJCSBQYXJ0aWFsRmls ZVNldFN0YXRlIGZpbGVzZXRfc3RhdGUpOwogCiBleHRlcm4gdm9pZCBwYV9sb2NrX3N0cmVhbShU cmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIHZvaWQgcGFfdW5s b2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAppbmRleCA0MmM1YzRkLi4xOTYyNmZlIDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtMTM4OSw2ICsxMzg5LDcgQEAgTGFnVHJhY2tlcgogTGFyZ2VPYmplY3RE ZXNjCiBMYXN0QXR0bnVtSW5mbwogTGF0Y2gKK1BhcnRpYWxGaWxlU2V0U3RhdGUKIExlcnBGdW5j CiBMZXhEZXNjcgogTGV4ZW1lRW50cnkKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v60-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v60-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v60-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=198563; creation-date="Tue, 13 Dec 2022 13:05:50 GMT"; modification-date="Tue, 13 Dec 2022 13:07:01 GMT" Content-Transfer-Encoding: base64 RnJvbSBiYjMwYTcwNzAwMGMyZjQ3ZjAyYjc2ZmE2NDI2NzMwZmMzYmM2Y2UzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY2MCAxLzJdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0 aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3Ig dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZXMgaW4gbW9z dCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCBpZgp0aGVyZSBpcyBubyB3b3JrZXIgYXZh aWxhYmxlLgoKVGhpcyBwYXRjaCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFt aW5nJyBwYXJhbWV0ZXIgc28gdGhhdCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIg b3Igc3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1p bmcgcGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVl ICdwYXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLCBpZiBhdmFpbGFibGUuIFRoZSBwYXJhbWV0ZXIgdmFsdWUKJ29u JyBtZWFucyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3BpbGxlZCB0byBkaXNr LiBUaGUgZGVmYXVsdCB2YWx1ZQppcyAnb2ZmJyAoc2FtZSBhcyBjdXJyZW50IGJlaGF2aW91ciku CgpJbiBhZGRpdGlvbiwgdGhlIHBhdGNoIGV4dGVuZHMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g U1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28KdGhhdCBhYm9ydF90aW1lIGFuZCBhYm9ydF9sc24gY2Fu IGFsc28gYmUgc2VudCB3aGljaCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlCnJlcGxpY2F0aW9u IG9yaWdpbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGlzCmFib3J0ZWQuIEJlY2F1c2UgdGhpcyBtZXNzYWdlIGV4dGVuc2lvbiBpcyBuZWVk ZWQgdG8gc3VwcG9ydCBwYXJhbGxlbApzdHJlYW1pbmcsIHBhcmFsbGVsIHN0cmVhbWluZyBpcyBu b3Qgc3VwcG9ydGVkIGZvciBwdWJsaWNhdGlvbnMgb24gc2VydmVycyA8ClBHMTYuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICst CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAgICAg IHwgICAyNSArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMgICAgICAgICAgICB8ICAgNjggKy0KIHNyYy9iYWNrZW5kL2xpYnBx L3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMgICAgICAgICAgICAgICAgIHwgICAgNSArLQogLi4u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgICAgICAgfCAgICA2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgICAgICB8ICAg IDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAg fCAxNTIxICsrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYyAgICAgICAgIHwgIDIyNSArKy0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jICAgICAgICAgICB8ICAgMjYgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICAgICAgIHwgICAzNyArLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgfCAgICA1ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgICAgICB8ICAg MjUgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAg IHwgMTAyNyArKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jICAgICAgICB8ICAgMjIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYyAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jICAgICAgICAgICAgICAgICAgICB8ICAgNDYgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICAgICAgIHwgICAgNiArCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvbG9ja2Z1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICAgICAgIHwgICAxMiArCiBzcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgICAgICB8ICAgIDEgKwog c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2 ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMjEgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAg ICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oICAg ICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hl ci5oICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaCAgICAgICAgICAgICB8ICAgMjggKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWx3b3JrZXIuaCAgICAgICAgICAgIHwgICAgOCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v cmlnaW4uaCAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAgICAgfCAgICA0ICstCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgICAgIHwgIDE1OSArLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1 ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxNyArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5v dXQgICAgICAgICB8ICAgNDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5z cWwgICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIDUwIGZpbGVzIGNoYW5nZWQsIDMyMTIgaW5z ZXJ0aW9ucygrKSwgMzM5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bAppbmRleCA5MzE2YjgxLi40NGNkYTE1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzkxMywxMSArNzkx MywxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0 OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5i b29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8 dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgSWYg dHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFsbG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVz cwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAgIENvbnRyb2xzIGhvdyB0byBoYW5kbGUgdGhl IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnM6CisgICAgICAgPGxpdGVyYWw+ ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVyYWw+ID0gc3BpbGwgdGhlIGNoYW5nZXMgb2Yg aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAgICAgZGlzayBhbmQgYXBwbHkgYXQgb25j ZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHRoZQorICAgICAgIHB1Ymxp c2hlciwKKyAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IGFwcGx5IGNoYW5nZXMgZGlyZWN0 bHkgdXNpbmcgYSBwYXJhbGxlbCBhcHBseQorICAgICAgIHdvcmtlciBpZiBhdmFpbGFibGUgKHNh bWUgYXMgJ3QnIGlmIG5vIHdvcmtlciBpcyBhdmFpbGFibGUpCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBi L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCA4ZTQxNDU5Li44OWM4MTdjIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sCkBAIC00OTY4LDcgKzQ5NjgsOCBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAg PGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgogICAgICAgICBTcGVjaWZpZXMgbWF4aW11bSBudW1i ZXIgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzLiBUaGlzIGluY2x1ZGVzCi0gICAgICAg IGJvdGggYXBwbHkgd29ya2VycyBhbmQgdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlcnMuCisg ICAgICAgIGxlYWRlciBhcHBseSB3b3JrZXJzLCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBhbmQg dGFibGUgc3luY2hyb25pemF0aW9uCisgICAgICAgIHdvcmtlcnMuCiAgICAgICAgPC9wYXJhPgog ICAgICAgIDxwYXJhPgogICAgICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMgYXJlIHRh a2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQpAQCAtNTAwOCw2ICs1MDA5LDMxIEBAIEFOWSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LXBhcmFsbGVsLWFwcGx5LXdvcmtl cnMtcGVyLXN1YnNjcmlwdGlvbiIgeHJlZmxhYmVsPSJtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9wYXJhbGxlbF9h cHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X3Bh cmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT4gY29uZmlndXJh dGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVy bT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgTWF4aW11bSBudW1i ZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisgICAg ICAgIHBhcmFtZXRlciBjb250cm9scyB0aGUgYW1vdW50IG9mIHBhcmFsbGVsaXNtIGZvciBzdHJl YW1pbmcgb2YKKyAgICAgICAgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHdpdGggc3Vic2NyaXB0 aW9uIHBhcmFtZXRlcgorICAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0 ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5CisgICAg ICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+Lgor ICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUg aXMgMi4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZQorICAgICAgICA8Zmls ZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyIGNv bW1hbmQKKyAgICAgICAgbGluZS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3Qy PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIv ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA3ZmRmMDhiLi5hN2Jk OWJlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE0OTcsNiArMTQ5 NywxNiBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24g b3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgbWlnaHQgbm90IHZpb2xhdGUgYW55 IGNvbnN0cmFpbnQuICBUaGlzIGNhbiBlYXNpbHkgbWFrZSB0aGUgc3Vic2NyaWJlcgogICAgaW5j b25zaXN0ZW50LgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBXaGVuIHRoZSBzdHJlYW1pbmcg bW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCisg ICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0 IG1heSBiZSBuZWNlc3NhcnkgdG8KKyAgIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxp dGVyYWw+b248L2xpdGVyYWw+IG9yIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4gYW5kCisgICBjYXVz ZSB0aGUgc2FtZSBjb25mbGljdHMgYWdhaW4gc28gdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxl ZCB0cmFuc2FjdGlvbiB3aWxsCisgICBiZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3Ig dGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSByZWZlciB0byA8bGluaworICAgbGlua2Vu ZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4u CisgICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisgIDwvcGFyYT4KICA8L3NlY3QxPgogCiAgPHNl Y3QxIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXJlc3RyaWN0aW9ucyI+CkBAIC0xNjc4LDcgKzE2 ODgsOCBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24g b3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgc3Vic2NyaXB0aW9uLiAgQSBkaXNh YmxlZCBzdWJzY3JpcHRpb24gb3IgYSBjcmFzaGVkIHN1YnNjcmlwdGlvbiB3aWxsIGhhdmUKICAg IHplcm8gcm93cyBpbiB0aGlzIHZpZXcuICBJZiB0aGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXph dGlvbiBvZiBhbnkKICAgIHRhYmxlIGlzIGluIHByb2dyZXNzLCB0aGVyZSB3aWxsIGJlIGFkZGl0 aW9uYWwgd29ya2VycyBmb3IgdGhlIHRhYmxlcwotICAgYmVpbmcgc3luY2hyb25pemVkLgorICAg YmVpbmcgc3luY2hyb25pemVkLiBNb3Jlb3ZlciwgaWYgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv biBpcyBhcHBsaWVkIGluCisgICBwYXJhbGxlbCwgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdv cmtlcnMuCiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCkBAIC0xODA1LDggKzE4MTYsOSBAQCBDT05U RVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18x NjM5NSIgZHVyaW5nICJJTlNFUgogCiAgICA8cGFyYT4KICAgICA8bGluayBsaW5rZW5kPSJndWMt bWF4LWxvZ2ljYWwtcmVwbGljYXRpb24td29ya2VycyI+PHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVw bGljYXRpb25fd29ya2VyczwvdmFybmFtZT48L2xpbms+Ci0gICAgbXVzdCBiZSBzZXQgdG8gYXQg bGVhc3QgdGhlIG51bWJlciBvZiBzdWJzY3JpcHRpb25zIChmb3IgYXBwbHkgd29ya2VycyksIHBs dXMKLSAgICBzb21lIHJlc2VydmUgZm9yIHRoZSB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vy cy4KKyAgICBtdXN0IGJlIHNldCB0byBhdCBsZWFzdCB0aGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlv bnMgKGZvciBsZWFkZXIgYXBwbHkKKyAgICB3b3JrZXJzKSwgcGx1cyBzb21lIHJlc2VydmUgZm9y IHRoZSB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2VycyBhbmQKKyAgICBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTE4MjQsNiArMTgzNiwxMyBA QCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2lu ICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KKyAgICA8 bGluayBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLWFwcGx5LXdvcmtlcnMtcGVyLXN1YnNjcmlw dGlvbiI+PHZhcm5hbWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlv bjwvdmFybmFtZT48L2xpbms+CisgICAgIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgcGFyYWxsZWxp c20gZm9yIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcworICAgICB0cmFuc2FjdGlvbnMgd2l0aCBz dWJzY3JpcHRpb24gcGFyYW1ldGVyCisgICAgIDxsaXRlcmFsPnN0cmVhbWluZyA9IHBhcmFsbGVs PC9saXRlcmFsPi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CiAgICAgTG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXJzIGFyZSBhbHNvIGFmZmVjdGVkIGJ5CiAgICAgPGxpbmsgbGlua2VuZD0iZ3Vj LXdhbC1yZWNlaXZlci10aW1lb3V0Ij48dmFybmFtZT53YWxfcmVjZWl2ZXJfdGltZW91dDwvdmFy bmFtZT48L2xpbms+LAogICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy13YWwtcmVjZWl2ZXItc3RhdHVz LWludGVydmFsIj48dmFybmFtZT53YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsPC92YXJuYW1l PjwvbGluaz4gYW5kCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIv ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxMWE4ZWJlLi4yYzc2ZWI1IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwKQEAgLTE4NTIsNiArMTg1MiwxMSBAQCBwb3N0Z3JlcyAgIDI3MDkzICAw LjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6 IHNlcgogICAgICAgPGVudHJ5PldhaXRpbmcgdG8gYWNxdWlyZSBhbiBhZHZpc29yeSB1c2VyIGxv Y2suPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVy YWw+YXBwbHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PldhaXRp bmcgdG8gYWNxdWlyZSBhIGxvY2sgb24gYSByZW1vdGUgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGll ZAorICAgICAgYnkgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+ZXh0ZW5kPC9saXRl cmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+V2FpdGluZyB0byBleHRlbmQgYSByZWxhdGlvbi48 L2VudHJ5PgogICAgICA8L3Jvdz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5z Z21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggNWZkZDQyOS4uYzZhMGU4MCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3Byb3RvY29sLnNnbWwKQEAgLTMxMDIsNyArMzEwMiw3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3Jl cyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgIDxsaXN0 aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFByb3RvY29sIHZlcnNpb24uIEN1cnJlbnRseSB2 ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFsPiwgPGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0gICAg ICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCisgICAgICAgPGxpdGVy YWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD40PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVkLgog ICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4yPC9s aXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTQKQEAgLTMxMTIs NiArMzExMiwxMSBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2Ui IC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgIFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0ZXJh bD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE1CiAgICAgICAgYW5kIGFi b3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWluZyBvZiB0d28tcGhhc2UgY29tbWl0cy4KICAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0ZXJh bD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE2CisgICAgICAgYW5kIGFi b3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbXMgb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zIHRvCisgICAgICAgYmUgYXBwbGllZCBpbiBwYXJhbGxlbC4KKyAgICAgIDwvcGFyYT4KICAg ICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtNjg4Miw2ICs2ODg3LDI4 IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5U SUZZX1NZU1RFTTsiCiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgogICAgICAg PC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50 NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+ CisgICAgICAgICBUaGUgTFNOIG9mIHRoZSBhYm9ydC4gVGhpcyBmaWVsZCBpcyBhdmFpbGFibGUg c2luY2UgcHJvdG9jb2wgdmVyc2lvbgorICAgICAgICAgNC4KKyAgICAgICAgPC9wYXJhPgorICAg ICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoVGltZXN0YW1wVHopPC90ZXJtPgorICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBBYm9ydCB0aW1lc3RhbXAgb2YgdGhl IHRyYW5zYWN0aW9uLiBUaGUgdmFsdWUgaXMgaW4gbnVtYmVyCisgICAgICAgICBvZiBtaWNyb3Nl Y29uZHMgc2luY2UgUG9zdGdyZVNRTCBlcG9jaCAoMjAwMC0wMS0wMSkuIFRoaXMgZmllbGQgaXMK KyAgICAgICAgIGF2YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uIDQuCisgICAgICAgIDwv cGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAg PC92YXJpYWJsZWxpc3Q+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBmOWExNzc2Li5mMTcz YTA5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjI4 LDEzICsyMjgsMjkgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAogICAgICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0 cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAgICAg PHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+ZW51bTwvdHlwZT4pPC90 ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICBTcGVj aWZpZXMgd2hldGhlciB0byBlbmFibGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0 aW9ucwotICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4gIEJ5IGRlZmF1bHQsIGFsbCB0 cmFuc2FjdGlvbnMKLSAgICAgICAgICBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVy IGFuZCBvbmx5IHRoZW4gc2VudCB0byB0aGUKLSAgICAgICAgICBzdWJzY3JpYmVyIGFzIGEgd2hv bGUuCisgICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUg aXMgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiwKKyAgICAgICAgICBtZWFuaW5nIGFsbCB0cmFuc2Fj dGlvbnMgYXJlIGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seQorICAgICAg ICAgIHRoZW4gc2VudCB0byB0aGUgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgPC9w YXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248 L2xpdGVyYWw+LCB0aGUgaW5jb21pbmcgY2hhbmdlcyBhcmUgd3JpdHRlbiB0bworICAgICAgICAg IHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0 aW9uIGlzCisgICAgICAgICAgY29tbWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIHJlY2VpdmVk IGJ5IHRoZSBzdWJzY3JpYmVyLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4K KyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCBpbmNvbWlu ZyBjaGFuZ2VzIGFyZSBkaXJlY3RseQorICAgICAgICAgIGFwcGxpZWQgdmlhIG9uZSBvZiB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VycywgaWYgYXZhaWxhYmxlLiBJZiBubworICAgICAgICAgIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBpcyBmcmVlIHRvIGhhbmRsZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b25zIHRoZW4KKyAgICAgICAgICB0aGUgY2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3Jhcnkg ZmlsZXMgYW5kIGFwcGxpZWQgYWZ0ZXIgdGhlCisgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkLiBOb3RlIHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCisgICAgICAgICAgcGFy YWxsZWwgYXBwbHkgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0 aW9uCisgICAgICAgICAgbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgog ICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVu dHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IDE0M2FlNWIuLjg0MjhlZTcgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lz dGVtLXZpZXdzLnNnbWwKQEAgLTEzNzksOCArMTM3OSw5IEBACiAgICAgICAgPGxpdGVyYWw+dmly dHVhbHhpZDwvbGl0ZXJhbD4sCiAgICAgICAgPGxpdGVyYWw+c3BlY3Rva2VuPC9saXRlcmFsPiwK ICAgICAgICA8bGl0ZXJhbD5vYmplY3Q8L2xpdGVyYWw+LAotICAgICAgIDxsaXRlcmFsPnVzZXJs b2NrPC9saXRlcmFsPiwgb3IKLSAgICAgICA8bGl0ZXJhbD5hZHZpc29yeTwvbGl0ZXJhbD4uCisg ICAgICAgPGxpdGVyYWw+dXNlcmxvY2s8L2xpdGVyYWw+LAorICAgICAgIDxsaXRlcmFsPmFkdmlz b3J5PC9saXRlcmFsPiwgb3IKKyAgICAgICA8bGl0ZXJhbD5hcHBseXRyYW5zYWN0aW9uPC9saXRl cmFsPi4KICAgICAgICAoU2VlIGFsc28gPHhyZWYgbGlua2VuZD0id2FpdC1ldmVudC1sb2NrLXRh YmxlIi8+LikKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hhY3QuYwppbmRleCA4MDg2Yjg1Li4wMzBjNjNhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGFjdC5jCkBAIC0xNzEyLDYgKzE3MTIsNyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJv b2wgaXNTdWJYYWN0KQogCWludAkJCW5jaGlsZHJlbjsKIAlUcmFuc2FjdGlvbklkICpjaGlsZHJl bjsKIAlUaW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJcmVwbG9yaWdpbjsKIAogCS8qCiAJ ICogSWYgd2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJRCwgbm9ib2R5IHdpbGwgY2FyZSB3 aGV0aGVyIHdlIGFib3J0ZWQKQEAgLTE3NDIsNiArMTc0MywxMyBAQCBSZWNvcmRUcmFuc2FjdGlv bkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQllbG9nKFBBTklDLCAiY2Fubm90IGFib3J0IHRyYW5z YWN0aW9uICV1LCBpdCB3YXMgYWxyZWFkeSBjb21taXR0ZWQiLAogCQkJIHhpZCk7CiAKKwkvKgor CSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBmZWF0dXJlPyAgT3IsIGlu IG90aGVyIHdvcmRzLCBhcmUKKwkgKiB3ZSByZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/CisJICov CisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBP cmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxp Y2F0ZUlkKTsKKwogCS8qIEZldGNoIHRoZSBkYXRhIHdlIG5lZWQgZm9yIHRoZSBhYm9ydCByZWNv cmQgKi8KIAlucmVscyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhmYWxzZSwgJnJlbHMpOwogCW5j aGlsZHJlbiA9IHhhY3RHZXRDb21taXR0ZWRDaGlsZHJlbigmY2hpbGRyZW4pOwpAQCAtMTc2NSw2 ICsxNzczLDExIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCQkJ CSAgIE15WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJICAgTlVMTCk7CiAK KwlpZiAocmVwbG9yaWdpbikKKwkJLyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMgcmVwbGlj YXRpb24gb3JpZ2luICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5f c2Vzc2lvbl9vcmlnaW5fbHNuLAorCQkJCQkJCQkgICBYYWN0TGFzdFJlY0VuZCk7CisKIAkvKgog CSAqIFJlcG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExTTiwgc28gdGhhdCB0aGUgV0FMIHdy aXRlciBrbm93cyB0bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQuIFRoZXJlJ3Mgbm90aGluZyB0byBi ZSBnYWluZWQgYnkgZGVsYXlpbmcgdGhpcywgc2luY2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYwppbmRleCBkNjczNTU3Li4wY2VjYmM3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1 Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQliaW5hcnk7 Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29waGFzZTsK IAlib29sCQlkaXNhYmxlb25lcnI7CiAJY2hhcgkgICAqb3JpZ2luOwpAQCAtMTAwLDcgKzEwMCw2 IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2R1cGxpY2F0ZXNfaW5fcHVibGlzdChMaXN0ICpwdWJsaXN0 LCBEYXR1bSAqZGF0dW1zKTsKIHN0YXRpYyBMaXN0ICptZXJnZV9wdWJsaWNhdGlvbnMoTGlzdCAq b2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsIGNvbnN0IGNoYXIgKnN1 Ym5hbWUpOwogc3RhdGljIHZvaWQgUmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpyc3Rh dGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLCBjaGFyICplcnIpOwogCi0KIC8qCiAgKiBD b21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24gZm9yIENSRUFURSBhbmQgQUxURVIgU1VCU0NS SVBUSU9OIGNvbW1hbmRzLgogICoKQEAgLTEzOCw3ICsxMzcsNyBAQCBwYXJzZV9zdWJzY3JpcHRp b25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAo SXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBm YWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlv cHRzLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gTE9HSUNBTFJFUF9T VFJFQU1fT0ZGOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NP TU1JVCkpCiAJCW9wdHMtPnR3b3BoYXNlID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9v cHRzLCBTVUJPUFRfRElTQUJMRV9PTl9FUlIpKQpAQCAtMjQxLDcgKzI0MCw3IEBAIHBhcnNlX3N1 YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25z LAogCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRz LT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5n ID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJl YW1pbmdNb2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUs ICJ0d29fcGhhc2UiKSA9PSAwKQogCQl7CkBAIC02MjksNyArNjI4LDcgQEAgQ3JlYXRlU3Vic2Ny aXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwK IAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0 RGF0dW0ob3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0g MV0gPSBCb29sR2V0RGF0dW0ob3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3ViYmluYXJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRz LnN0cmVhbWluZyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFd ID0gQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3VidHdvcGhhc2VzdGF0ZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhh c2UgPwogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwOTgs NyArMTA5Nyw3IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJT dWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRz LCBTVUJPUFRfU1RSRUFNSU5HKSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJzdHJlYW0gLSAxXSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcp OworCQkJCQkJQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApAQCAtMjEy MiwzICsyMTIxLDYwIEBAIG1lcmdlX3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0 ICpuZXdwdWJsaXN0LCBib29sIGFkZHB1YiwgY29uc3QgY2hhciAqCiAKIAlyZXR1cm4gb2xkcHVi bGlzdDsKIH0KKworLyoKKyAqIEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVlIGZyb20g YSBEZWZFbGVtLiAgVGhpcyBpcyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFsc28gYWNj ZXB0cyB0aGUgc3BlY2lhbCB2YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitjaGFyCitkZWZHZXRT dHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2 YWx1ZSBnaXZlbiwgYXNzdW1lICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoIWRlZi0+YXJn KQorCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEs ICJmYWxzZSIsICJ0cnVlIiwgIm9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0 Y2ggKG5vZGVUYWcoZGVmLT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2gg KGludFZhbChkZWYtPmFyZykpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gTE9HSUNB TFJFUF9TVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RS RUFNX09OOworCQkJCWRlZmF1bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJlbG93 ICovCisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJ Y2hhcgkgICAqc3ZhbCA9IGRlZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUg c2V0IG9mIHN0cmluZ3MgYWNjZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJ CQkgKiBncmFtbWFyJ3Mgb3B0X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICov CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19z dHJjYXNlY21wKHN2YWwsICJvZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJF QU1fT0ZGOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJ CQlwZ19zdHJjYXNlY21wKHN2YWwsICJvbiIpID09IDApCisJCQkJCXJldHVybiBMT0dJQ0FMUkVQ X1NUUkVBTV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAw KQorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJCQlicmVh azsKKwl9CisKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJIGVycm1zZygiJXMgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yIFwicGFyYWxs ZWxcIiIsCisJCQkJCWRlZi0+ZGVmbmFtZSkpKTsKKwlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1f T0ZGOwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCmluZGV4IDRkMDQxNWUu LjYzOTg0NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMv YmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTEzLDExICsxMywxMyBAQAogCiAjaW5jbHVkZSAicG9z dGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImxpYnBx L2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9w cW1xLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHBy b3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCkBAIC0xNjIsOSArMTY0LDE5IEBA IG1xX3B1dG1lc3NhZ2UoY2hhciBtc2d0eXBlLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQog CQlyZXN1bHQgPSBzaG1fbXFfc2VuZHYocHFfbXFfaGFuZGxlLCBpb3YsIDIsIHRydWUsIHRydWUp OwogCiAJCWlmIChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkICE9IDApCi0JCQlTZW5kUHJvY1Np Z25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAotCQkJCQkJICAgUFJPQ1NJR19QQVJBTExF TF9NRVNTQUdFLAotCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOwor CQl7CisJCQlpZiAoSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcigpKQorCQkJCVNlbmRQcm9j U2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJB TExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNr ZW5kX2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsK KwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJCSAg IFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKKwkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFk ZXJfYmFja2VuZF9pZCk7CisJCQl9CisJCX0KIAogCQlpZiAocmVzdWx0ICE9IFNITV9NUV9XT1VM RF9CTE9DSykKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9i Z3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDBkNzJk ZTIuLjJkZmE5YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2ICsxMjgs OSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtlck1haW4iLCBB cHBseVdvcmtlck1haW4KKwl9LAorCXsKKwkJIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIiwgUGFy YWxsZWxBcHBseVdvcmtlck1haW4KIAl9CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2ludGVycnVwdC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQu YwppbmRleCAxYWVkMmUyLi5lNjQwMjlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2ludGVycnVwdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMK QEAgLTk4LDggKzk4LDkgQEAgU2lnbmFsSGFuZGxlckZvckNyYXNoRXhpdChTSUdOQUxfQVJHUykK ICAqIHNodXQgZG93biBhbmQgZXhpdC4KICAqCiAgKiBUeXBpY2FsbHksIHRoaXMgaGFuZGxlciB3 b3VsZCBiZSB1c2VkIGZvciBTSUdURVJNLCBidXQgc29tZSBwcm9jZXNzZXMgdXNlCi0gKiBvdGhl ciBzaWduYWxzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2hlY2twb2ludGVyIGV4aXRzIG9uIFNJR1VT UjIsIGFuZCB0aGUKLSAqIFdBTCB3cml0ZXIgZXhpdHMgb24gZWl0aGVyIFNJR0lOVCBvciBTSUdU RVJNLgorICogb3RoZXIgc2lnbmFscy4gSW4gcGFydGljdWxhciwgdGhlIGNoZWNrcG9pbnRlciBl eGl0cyBvbiBTSUdVU1IyLCBhbmQgdGhlIFdBTAorICogd3JpdGVyIGFuZCB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdHMgb24gZWl0aGVyCisgKiBTSUdJ TlQgb3IgU0lHVEVSTS4KICAqCiAgKiBTaHV0ZG93blJlcXVlc3RQZW5kaW5nIHNob3VsZCBiZSBj aGVja2VkIGF0IGEgY29udmVuaWVudCBwbGFjZSB3aXRoaW4gdGhlCiAgKiBtYWluIGxvb3AsIG9y IGVsc2UgdGhlIG1haW4gbG9vcCBzaG91bGQgY2FsbCBIYW5kbGVNYWluTG9vcEludGVycnVwdHMu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xp YnBxd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2 ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IDdmNjk3YjAuLjIyNWRhODEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3 YWxyZWNlaXZlci5jCkBAIC00NDMsOSArNDQzLDkgQEAgbGlicHFyY3Zfc3RhcnRzdHJlYW1pbmco V2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJwcm90b192 ZXJzaW9uICcldSciLAogCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lv bik7CiAKLQkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nICYmCi0JCQlQUXNl cnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTQwMDAwKQotCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmY21kLCAiLCBzdHJlYW1pbmcgJ29uJyIpOworCQlpZiAob3B0aW9ucy0+cHJv dG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyKQorCQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiLCBz dHJlYW1pbmcgJyVzJyIsCisJCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5n X3N0cik7CiAKIAkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgJiYKIAkJCVBR c2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNTAwMDApCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCBjNGUyZmRlLi4yZGMyNWUzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAgaW5j bHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogb3ZlcnJpZGUgQ1BQRkxB R1MgOj0gLUkkKHNyY2RpcikgJChDUFBGTEFHUykKIAogT0JKUyA9IFwKKwlhcHBseXBhcmFsbGVs d29ya2VyLm8gXAogCWRlY29kZS5vIFwKIAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWFlOTk4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKQEAgLTAsMCArMSwxNTIxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGFwcGx5 cGFyYWxsZWx3b3JrZXIuYworICoJICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFj dCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04K KyAqCSAgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGNvZGUgdG8gbGF1bmNoLCBzZXQgdXAs IGFuZCB0ZWFyZG93biBhIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIgd2hpY2ggcmVjZWl2ZXMg dGhlIGNoYW5nZXMgZnJvbSB0aGUgbGVhZGVyIHdvcmtlciBhbmQgaW52b2tlcyByb3V0aW5lcwor ICogdG8gYXBwbHkgdGhvc2Ugb24gdGhlIHN1YnNjcmliZXIgZGF0YWJhc2UuCisgKgorICogVGhp cyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0 dGluZyB1cCwgdXNpbmcKKyAqIGFuZCB0ZWFyaW5nIGRvd24gYSBQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyB3aGljaCBpcyByZXF1aXJlZCBzbyB0aGUgbGVhZGVyCisgKiB3b3JrZXIgYW5kIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgY2FuIGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlci4KKyAqCisg KiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgYXNzaWduZWQgKGlmIGF2YWlsYWJsZSkg YXMgc29vbiBhcyB4YWN0J3MKKyAqIGZpcnN0IHN0cmVhbSBpcyByZWNlaXZlZCBmb3Igc3Vic2Ny aXB0aW9ucyB0aGF0IGhhdmUgc2V0IHRoZWlyICdzdHJlYW1pbmcnCisgKiBvcHRpb24gYXMgcGFy YWxsZWwuIFRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMg bmV3CisgKiB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFdlIGtlZXAgdGhpcyB3b3JrZXIgYXNz aWduZWQgdGlsbCB0aGUgdHJhbnNhY3Rpb24KKyAqIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxz byB3YWl0IGZvciB0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMKKyAqIHByZXNl cnZlcyBjb21taXQgb3JkZXJpbmcgYW5kIGF2b2lkIGZpbGUgSS9PIGluIG1vc3QgY2FzZXMsIGFs dGhvdWdoIHdlCisgKiBzdGlsbCBuZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVyZSBpcyBu byB3b3JrZXIgYXZhaWxhYmxlLiBTZWUgY29tbWVudHMKKyAqIGF0b3AgbG9naWNhbC93b3JrZXIg dG8ga25vdyBtb3JlIGFib3V0IHN0cmVhbWVkIHhhY3RzIHdob3NlIGNoYW5nZXMgYXJlCisgKiBz cGlsbGVkIHRvIGRpc2suIEl0IGlzIGltcG9ydGFudCB0byBtYWludGFpbiBjb21taXQgb3JkZXIg dG8gYXZvaWQgZmFpbHVyZXMKKyAqIGR1ZSB0bzogKGEpIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2ll cyAtIHNheSBpZiB3ZSBpbnNlcnQgYSByb3cgaW4gdGhlIGZpcnN0CisgKiB0cmFuc2FjdGlvbiBh bmQgdXBkYXRlIGl0IGluIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gb24gcHVibGlzaGVyIHRoZW4K KyAqIGFsbG93aW5nIHRoZSBzdWJzY3JpYmVyIHRvIGFwcGx5IGJvdGggaW4gcGFyYWxsZWwgY2Fu IGxlYWQgdG8gZmFpbHVyZSBpbiB0aGUKKyAqIHVwZGF0ZTsgKGIpIGRlYWRsb2NrcyAtIGFsbG93 aW5nIHRyYW5zYWN0aW9ucyB0aGF0IHVwZGF0ZSB0aGUgc2FtZSBzZXQgb2YKKyAqIHJvd3MvdGFi bGVzIGluIHRoZSBvcHBvc2l0ZSBvcmRlciB0byBiZSBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBs ZWFkIHRvCisgKiBkZWFkbG9ja3MuCisgKgorICogQSB3b3JrZXIgcG9vbCBpcyB1c2VkIHRvIGF2 b2lkIHJlc3RhcnRpbmcgd29ya2VycyBmb3IgZWFjaCBzdHJlYW1pbmcKKyAqIHRyYW5zYWN0aW9u LiBXZSBtYWludGFpbiBlYWNoIHdvcmtlcidzIGluZm9ybWF0aW9uIChQYXJhbGxlbEFwcGx5V29y a2VySW5mbykKKyAqIGluIHRoZSBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbC4gQWZ0ZXIgc3VjY2Vz c2Z1bGx5IGxhdW5jaGluZyBhIG5ldyB3b3JrZXIsCisgKiBpdHMgaW5mb3JtYXRpb24gaXMgYWRk ZWQgdG8gdGhlIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLiBPbmNlIHRoZSB3b3JrZXIKKyAqIGZp bmlzaGVzIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbiwgaXQgaXMgbWFya2VkIGFzIGF2YWlsYWJs ZSBmb3IgcmUtdXNlLgorICogTm93LCBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgd29ya2VyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlCisgKiBjaGVjayB0aGUgbGlzdCBmb3Ig YW55IGF2YWlsYWJsZSB3b3JrZXIuIE5vdGUgdGhhdCB3ZSByZXRhaW4gYSBtYXhpbXVtIG9mCisg KiBoYWxmIHRoZSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIHdv cmtlcnMgaW4gdGhlIHBvb2wgYW5kCisgKiBhZnRlciB0aGF0LCB3ZSBzaW1wbHkgZXhpdCB0aGUg d29ya2VyIGFmdGVyIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbi4KKyAqCisgKiBYWFggVGhpcyB3 b3JrZXIgcG9vbCB0aHJlc2hvbGQgaXMgYXJiaXRyYXJ5IGFuZCB3ZSBjYW4gcHJvdmlkZSBhIEdV QworICogdmFyaWFibGUgZm9yIHRoaXMgaW4gdGhlIGZ1dHVyZSBpZiByZXF1aXJlZC4KKyAqCisg KiBUaGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsIGNyZWF0ZSBhIHNlcGFyYXRlIGR5bmFtaWMg c2hhcmVkIG1lbW9yeSBzZWdtZW50CisgKiB3aGVuIGVhY2ggcGFyYWxsZWwgYXBwbHkgd29ya2Vy IHN0YXJ0cy4gVGhlIHJlYXNvbiBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdAorICogd2UgY2Fubm90 IHByZWRpY3QgaG93IG1hbnkgd29ya2VycyB3aWxsIGJlIG5lZWRlZC4gSXQgbWF5IGJlIHBvc3Np YmxlIHRvCisgKiBhbGxvY2F0ZSBlbm91Z2ggc2hhcmVkIG1lbW9yeSBpbiBvbmUgc2VnbWVudCBi YXNlZCBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2YKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg KG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pLCBidXQKKyAqIHRo aXMgd291bGQgd2FzdGUgbWVtb3J5IGlmIG5vIHByb2Nlc3MgaXMgYWN0dWFsbHkgc3RhcnRlZC4K KyAqCisgKiBUaGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgY29udGFpbnM6IChhKSBh IHNobV9tcSB0aGF0IGlzIHVzZWQgdG8KKyAqIHNlbmQgY2hhbmdlcyBpbiB0aGUgdHJhbnNhY3Rp b24gZnJvbSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXI7 IChiKSBhbm90aGVyIHNobV9tcSB0aGF0IGlzIHVzZWQgdG8gc2VuZCBlcnJvcnMgKGFuZCBvdGhl ciBtZXNzYWdlcworICogcmVwb3J0ZWQgdmlhIGVsb2cvZXJlcG9ydCkgZnJvbSB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIHRvIGxlYWRlciBhcHBseQorICogd29ya2VyOyAoYykgbmVjZXNzYXJ5 IGluZm9ybWF0aW9uIHRvIGJlIHNoYXJlZCBhbW9uZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisg KiBhbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgKGkuZS4gbWVtYmVycyBvZiBQYXJhbGxlbEFw cGx5V29ya2VyU2hhcmVkKS4KKyAqCisgKiBMb2NraW5nIENvbnNpZGVyYXRpb25zCisgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTaW5jZSB0aGUgZGF0YWJhc2Ugc3RydWN0dXJlIChzY2hl bWEgb2Ygc3Vic2NyaXB0aW9uIHRhYmxlcywgY29uc3RyYWludHMsCisgKiBldGMuKSBvZiB0aGUg cHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGNvdWxkIGJlIGRpZmZlcmVudCwgYXBwbHlpbmcKKyAq IHRyYW5zYWN0aW9ucyBpbiBwYXJhbGxlbCBtb2RlIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUgY2Fu IGNhdXNlIHNvbWUKKyAqIGRlYWRsb2NrcyB0aGF0IGRvIG5vdCBvY2N1ciBvbiB0aGUgcHVibGlz aGVyIHNpZGUuIFRoaXMgY2FuIGhhcHBlbiBldmVuCisgKiB3aXRob3V0IHBhcmFsbGVsIG1vZGUg d2hlbiB0aGVyZSBhcmUgY29uY3VycmVudCBvcGVyYXRpb25zIG9uIHRoZQorICogc3Vic2NyaWJl ci4gSW4gb3JkZXIgdG8gZGV0ZWN0IHRoZSBkZWFkbG9ja3MgYW1vbmcgbGVhZGVyIGFuZCBwYXJh bGxlbCBhcHBseQorICogd29ya2Vycywgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSB3YWl0IHVz aW5nIGxtZ3IgbG9ja3MuIEFuIGFsdGVybmF0aXZlCisgKiBhcHByb2FjaCBjb3VsZCBiZSB0byBu b3QgYWxsb3cgcGFyYWxsZWxpc20gd2hlbiB0aGUgc2NoZW1hIG9mIHRhYmxlcyBpcworICogZGlm ZmVyZW50IGJldHdlZW4gdGhlIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBidXQgdGhhdCB3b3Vs ZCBiZSB0b28KKyAqIHJlc3RyaWN0aXZlIGFuZCB3b3VsZCByZXF1aXJlIHRoZSBwdWJsaXNoZXIg dG8gc2VuZCBtdWNoIG1vcmUgaW5mb3JtYXRpb24KKyAqIHRoYW4gaXQgaXMgY3VycmVudGx5IHNl bmRpbmcuCisgKgorICogQ29uc2lkZXIgYSBjYXNlIHdoZXJlIHRoZSBzdWJzY3JpYmVkIHRhYmxl IGRvZXMgbm90IGhhdmUgYSB1bmlxdWUga2V5IG9uIHRoZQorICogcHVibGlzaGVyIGFuZCBoYXMg YSB1bmlxdWUga2V5IG9uIHRoZSBzdWJzY3JpYmVyLgorICoKKyAqIDEpIERlYWRsb2NrIGJldHdl ZW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisg KgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAoUEEpIGlzIGV4ZWN1dGluZyBUWC0xIGFu ZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorICogKExBKSBpcyBleGVjdXRpbmcgVFgtMiBjb25j dXJyZW50bHkgb24gdGhlIHN1YnNjcmliZXIuIE5vdywgTEEgaXMgd2FpdGluZworICogZm9yIFBB IGJlY2F1c2Ugb2YgdGhlIHVuaXF1ZSBrZXkgb2YgdGhlIHN1YnNjcmliZWQgdGFibGUgd2hpbGUg UEEgaXMgd2FpdGluZworICogZm9yIExBIHRvIHNlbmQgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5n ZXMgb3IgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQKKyAqIG1lc3NhZ2UuCisgKgorICogSW4g b3JkZXIgZm9yIGxtZ3IgdG8gZGV0ZWN0IHRoaXMsIHdlIGhhdmUgTEEgYWNxdWlyZSBhIHNlc3Np b24gbG9jayBvbiB0aGUKKyAqIHJlbW90ZSB0cmFuc2FjdGlvbiAoYnkgcGFfbG9ja19zdHJlYW0o KSkgYW5kIGhhdmUgUEEgd2FpdCBvbiB0aGUgbG9jayBiZWZvcmUKKyAqIHRyeWluZyB0byByZWNl aXZlIHRoZSBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIExBIHdpbGwgYWNx dWlyZQorICogdGhlIGxvY2sgYmVmb3JlIHNlbmRpbmcgdGhlIFNUUkVBTV9TVE9QIGFuZCB3aWxs IHJlbGVhc2UgaXQgaWYgYWxyZWFkeQorICogYWNxdWlyZWQgYmVmb3JlIHNlbmRpbmcgdGhlIFNU UkVBTV9TVEFSVCwgU1RSRUFNX0FCT1JUIChmb3IgdG9wbGV2ZWwKKyAqIHRyYW5zYWN0aW9uKSwg U1RSRUFNX1BSRVBBUkUsIGFuZCBTVFJFQU1fQ09NTUlULiBUaGUgUEEgd2lsbCBhY3F1aXJlIHRo ZQorICogbG9jayBhZnRlciBwcm9jZXNzaW5nIFNUUkVBTV9TVE9QIGFuZCBTVFJFQU1fQUJPUlQg KGZvciBzdWJ0cmFuc2FjdGlvbikgYW5kCisgKiB0aGVuIHJlbGVhc2UgdGhlIGxvY2sgaW1tZWRp YXRlbHkgYWZ0ZXIgYWNxdWlyaW5nIGl0LgorICoKKyAqIFRoZSBsb2NrIGdyYXBoIGZvciB0aGUg YWJvdmUgZXhhbXBsZSB3aWxsIGxvb2sgYXMgZm9sbG93czoKKyAqIExBICh3YWl0aW5nIHRvIGFj cXVpcmUgdGhlIGxvY2sgb24gdGhlIHVuaXF1ZSBpbmRleCkgLT4gUEEgKHdhaXRpbmcgdG8KKyAq IGFjcXVpcmUgdGhlIHN0cmVhbSBsb2NrKSAtPiBMQQorICoKKyAqIFRoaXMgd2F5LCB3aGVuIFBB IGlzIHdhaXRpbmcgZm9yIExBIGZvciB0aGUgbmV4dCBzdHJlYW0gb2YgY2hhbmdlcywgd2UgY2Fu CisgKiBoYXZlIGEgd2FpdC1lZGdlIGZyb20gUEEgdG8gTEEgaW4gbG1nciwgd2hpY2ggd2lsbCBt YWtlIHVzIGRldGVjdCB0aGUKKyAqIGRlYWRsb2NrIGJldHdlZW4gTEEgYW5kIFBBLgorICoKKyAq IDIpIERlYWRsb2NrIGJldHdlZW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMKKyAqCisgKiBUaGlzIHNjZW5hcmlvIGlzIHNpbWlsYXIgdG8gdGhlIGZp cnN0IGNhc2UgYnV0IFRYLTEgYW5kIFRYLTIgYXJlIGV4ZWN1dGVkIGJ5CisgKiB0d28gcGFyYWxs ZWwgYXBwbHkgd29ya2VycyAoUEEtMSBhbmQgUEEtMiByZXNwZWN0aXZlbHkpLiBJbiB0aGlzIHNj ZW5hcmlvLAorICogUEEtMiBpcyB3YWl0aW5nIGZvciBQQS0xIHRvIGNvbXBsZXRlIGl0cyB0cmFu c2FjdGlvbiB3aGlsZSBQQS0xIGlzIHdhaXRpbmcKKyAqIGZvciBzdWJzZXF1ZW50IGlucHV0IGZy b20gTEEuIEFsc28sIExBIGlzIHdhaXRpbmcgZm9yIFBBLTIgdG8gY29tcGxldGUgaXRzCisgKiB0 cmFuc2FjdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyLiBUaGVyZSBp cyBhIGRlYWRsb2NrIGFtb25nCisgKiB0aGUgdGhyZWUgcHJvY2Vzc2VzLgorICoKKyAqIEluIG9y ZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0aGlzLCB3ZSBoYXZlIFBBIGFjcXVpcmUgYSBzZXNzaW9u IGxvY2sgKHRoaXMgaXMKKyAqIGEgZGlmZmVyZW50IGxvY2sgdGhhbiByZWZlcnJlZCBpbiBwcmV2 aW91cyBjYXNlLCBzZWUKKyAqIHBhX2xvY2tfdHJhbnNhY3Rpb24oKSkgb24gdGhlIHRyYW5zYWN0 aW9uIGJlaW5nIGFwcGxpZWQgYW5kIGhhdmUgTEEgd2FpdCBvbgorICogdGhlIGxvY2sgYmVmb3Jl IHByb2NlZWRpbmcgaW4gdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcy4gU3BlY2lmaWNh bGx5LAorICogUEEgd2lsbCBhY3F1aXJlIHRoaXMgbG9jayBpbiBTaGFyZSBtb2RlIGJlZm9yZSBl eGVjdXRpbmcgdGhlIGZpcnN0IG1lc3NhZ2UKKyAqIG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQgcmVs ZWFzZSBpdCBhdCB0aGUgeGFjdCBlbmQuIExBIHdpbGwgYWNxdWlyZSB0aGlzIGxvY2sKKyAqIGlu IEFjY2Vzc0V4Y2x1c2l2ZSBtb2RlIGF0IHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyAoU1RS RUFNX0NPTU1JVCBhbmQKKyAqIFNUUkVBTV9QUkVQQVJFKSBhbmQgcmVsZWFzZSBpdCBpbW1lZGlh dGVseS4KKyAqCisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBs b29rIGFzIGZvbGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSB0cmFuc2FjdGlv biBsb2NrKSAtPiBQQS0yICh3YWl0aW5nIHRvIGFjcXVpcmUgdGhlCisgKiBsb2NrIGR1ZSB0byB1 bmlxdWUgaW5kZXggY29uc3RyYWludCkgLT4gUEEtMSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBz dHJlYW0KKyAqIGxvY2spIC0+IExBCisgKgorICogVGhpcyB3YXkgd2hlbiBMQSBpcyB3YWl0aW5n IHRvIGZpbmlzaCB0aGUgdHJhbnNhY3Rpb24gZW5kIGNvbW1hbmQgdG8gcHJlc2VydmUKKyAqIHRo ZSBjb21taXQgb3JkZXIsIHdlIHdpbGwgYmUgYWJsZSB0byBkZXRlY3QgZGVhZGxvY2ssIGlmIGFu eS4KKyAqCisgKiBPbmUgbWlnaHQgdGhpbmsgd2UgY2FuIHVzZSBYYWN0TG9ja1RhYmxlV2FpdCgp LCBidXQgWGFjdExvY2tUYWJsZVdhaXQoKQorICogY29uc2lkZXJzIFBSRVBBUkVEIFRSQU5TQUNU SU9OIGFzIHN0aWxsIGluIHByb2dyZXNzIHdoaWNoIG1lYW5zIHRoZSBsb2NrCisgKiB3b24ndCBi ZSByZWxlYXNlZCBldmVuIGFmdGVyIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIHByZXBh cmVkIHRoZQorICogdHJhbnNhY3Rpb24uCisgKgorICogMykgRGVhZGxvY2sgd2hlbiB0aGUgc2ht X21xIGJ1ZmZlciBpcyBmdWxsCisgKgorICogSW4gdGhlIHByZXZpb3VzIHNjZW5hcmlvIChpZS4g UEEtMSBhbmQgUEEtMiBhcmUgZXhlY3V0aW5nIHRyYW5zYWN0aW9ucworICogY29uY3VycmVudGx5 KSwgaWYgdGhlIHNobV9tcSBidWZmZXIgYmV0d2VlbiBMQSBhbmQgUEEtMiBpcyBmdWxsLCBMQSBo YXMgdG8KKyAqIHdhaXQgdG8gc2VuZCBtZXNzYWdlcywgYW5kIHRoaXMgd2FpdCBkb2Vzbid0IGFw cGVhciBpbiBsbWdyLgorICoKKyAqIFRvIHJlc29sdmUgdGhpcyBpc3N1ZSwgd2UgdXNlIG5vbi1i bG9ja2luZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEgdGltZW91dC4gSWYKKyAqIHRoZSB0aW1lb3V0 IGlzIGV4Y2VlZGVkLCB0aGUgTEEgcmVwb3J0cyBhbiBlcnJvciBhbmQgcmVzdGFydHMgbG9naWNh bAorICogcmVwbGljYXRpb24uCisgKgorICogNCkgTG9jayB0eXBlcworICoKKyAqIEJvdGggdGhl IHN0cmVhbSBsb2NrIGFuZCB0aGUgdHJhbnNhY3Rpb24gbG9jayBtZW50aW9uZWQgYWJvdmUgYXJl CisgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGJlY2F1c2UgYm90aCBsb2NrcyBjb3VsZCBiZSBhY3F1 aXJlZCBvdXRzaWRlIHRoZQorICogdHJhbnNhY3Rpb24sIGFuZCB0aGUgc3RyZWFtIGxvY2sgaW4g dGhlIGxlYWRlciBuZWVkcyB0byBwZXJzaXN0IGFjcm9zcworICogdHJhbnNhY3Rpb24gYm91bmRh cmllcyBpLmUuIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVk ZSAibGlicHEvcHFmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCisjaW5jbHVkZSAi cGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisj aW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKyNkZWZpbmUgUEdfTE9HSUNBTF9BUFBMWV9TSE1f TUFHSUMgMHg3ODdjYTA2NworCisvKgorICogRFNNIGtleXMgZm9yIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4gIFVubGlrZSBvdGhlciBwYXJhbGxlbCBleGVjdXRpb24gY29kZSwKKyAqIHNpbmNlIHdl IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgRFNNIGtleXMgY29uZmxpY3Rpbmcgd2l0aCBwbGFu X25vZGVfaWQgd2UKKyAqIGNhbiB1c2Ugc21hbGwgaW50ZWdlcnMuCisgKi8KKyNkZWZpbmUgUEFS QUxMRUxfQVBQTFlfS0VZX1NIQVJFRAkJMQorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfTVEJ CQkyCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRQkzCisKKy8qIFF1ZXVl IHNpemUgb2YgRFNNLCAxNiBNQiBmb3Igbm93LiAqLworI2RlZmluZSBEU01fUVVFVUVfU0laRQko MTYgKiAxMDI0ICogMTAyNCkKKworLyoKKyAqIEVycm9yIHF1ZXVlIHNpemUgb2YgRFNNLiBJdCBp cyBkZXNpcmFibGUgdG8gbWFrZSBpdCBsYXJnZSBlbm91Z2ggdGhhdCBhCisgKiB0eXBpY2FsIEVy cm9yUmVzcG9uc2UgY2FuIGJlIHNlbnQgd2l0aG91dCBibG9ja2luZy4gIFRoYXQgd2F5LCBhIHdv cmtlciB0aGF0CisgKiBlcnJvcnMgb3V0IGNhbiB3cml0ZSB0aGUgd2hvbGUgbWVzc2FnZSBpbnRv IHRoZSBxdWV1ZSBhbmQgdGVybWluYXRlIHdpdGhvdXQKKyAqIHdhaXRpbmcgZm9yIHRoZSB1c2Vy IGJhY2tlbmQuCisgKi8KKyNkZWZpbmUgRFNNX0VSUk9SX1FVRVVFX1NJWkUJCQkoMTYgKiAxMDI0 KQorCisvKgorICogVGhlcmUgYXJlIHRocmVlIGZpZWxkcyBpbiBlYWNoIG1lc3NhZ2UgcmVjZWl2 ZWQgYnkgdGhlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXI6IHN0YXJ0X2xzbiwgZW5kX2xzbiBh bmQgc2VuZF90aW1lLiBCZWNhdXNlIHdlIGhhdmUgdXBkYXRlZCB0aGVzZQorICogc3RhdGlzdGlj cyBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwgd2UgY2FuIGlnbm9yZSB0aGVzZSBmaWVsZHMg aW4gdGhlCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKHNlZSBmdW5jdGlvbiBMb2dpY2FsUmVw QXBwbHlMb29wKS4KKyAqLworI2RlZmluZSBTSVpFX1NUQVRTX01FU1NBR0UgKDIgKiBzaXplb2Yo WExvZ1JlY1B0cikgKyBzaXplb2YoVGltZXN0YW1wVHopKQorCisvKgorICogVGhlIHR5cGUgb2Yg c2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxv Z2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxf QVBQTFlfTE9DS19TVFJFQU0JMAorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QJMQor CisvKgorICogSGFzaCB0YWJsZSBlbnRyeSB0byBtYXAgeGlkIHRvIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgc3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJF bnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkJCS8qIEhhc2gga2V5IC0tIG11c3QgYmUgZmly c3QgKi8KKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87Cit9IFBhcmFsbGVsQXBwbHlX b3JrZXJFbnRyeTsKKworLyoKKyAqIEEgaGFzaCB0YWJsZSB1c2VkIHRvIGNhY2hlIHRoZSBzdGF0 ZSBvZiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaW5nIGFwcGxpZWQKKyAqIGJ5IHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXJzLgorICovCitzdGF0aWMgSFRBQiAqUGFyYWxsZWxBcHBseVR4bkhh c2ggPSBOVUxMOworCisvKgorKiBBIGxpc3QgKHBvb2wpIG9mIGFjdGl2ZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzLiBUaGUgaW5mb3JtYXRpb24gZm9yCisqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVk IHRvIHRoZSBsaXN0IGFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQorKiBsaXN0 IGVudHJ5IGlzIHJlbW92ZWQgaWYgdGhlcmUgYXJlIGFscmVhZHkgZW5vdWdoIHdvcmtlcnMgaW4g dGhlIHdvcmtlcgorKiBwb29sIGVpdGhlciBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbiBv ciB3aGlsZSB0cnlpbmcgdG8gZmluZCBhIGZyZWUKKyogd29ya2VyIGZvciBhcHBseWluZyB0aGUg dHJhbnNhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIKKyogcG9v bCwgc2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorICovCitzdGF0aWMgTGlzdCAqUGFyYWxs ZWxBcHBseVdvcmtlclBvb2wgPSBOSUw7CisKKy8qCisgKiBJbmZvcm1hdGlvbiBzaGFyZWQgYmV0 d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8K K1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQgPSBOVUxMOworCisv KgorICogSXMgdGhlcmUgYSBtZXNzYWdlIHNlbnQgYnkgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg dGhhdCB0aGUgbGVhZGVyIGFwcGx5CisgKiB3b3JrZXIgbmVlZHMgdG8gcmVjZWl2ZT8KKyAqLwor dm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNl OworCisvKgorICogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiBy ZXF1aXJlZCBmb3IgYXBwbHlpbmcgdGhlCisgKiBjdXJyZW50IHN0cmVhbWluZyB0cmFuc2FjdGlv bi4gSXQgaXMgdXNlZCB0byBzYXZlIHRoZSBjb3N0IG9mIHNlYXJjaGluZyB0aGUKKyAqIGhhc2gg dGFibGUgd2hlbiBhcHBseWluZyB0aGUgY2hhbmdlcyBiZXR3ZWVuIFNUUkVBTV9TVEFSVCBhbmQg U1RSRUFNX1NUT1AuCisgKi8KK3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqc3RyZWFt X2FwcGx5X3dvcmtlciA9IE5VTEw7CisKKy8qIEEgbGlzdCB0byBtYWludGFpbiBzdWJ0cmFuc2Fj dGlvbnMsIGlmIGFueS4gKi8KK3N0YXRpYyBMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKwor c3RhdGljIHZvaWQgcGFfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8pOworc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZSBwYV9nZXRfeGFjdF9zdGF0ZShQYXJh bGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKTsKKworLyoKKyAqIFJldHVybnMgdHJ1ZSBp ZiBpdCBpcyBPSyB0byBzdGFydCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgZmFsc2Ugb3RoZXJ3 aXNlLgorICovCitzdGF0aWMgYm9vbAorcGFfY2FuX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKQor eworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKKworCS8qCisJICogRG9uJ3Qg c3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMg bm90CisJICogdXNpbmcgcGFyYWxsZWwgc3RyZWFtaW5nIG1vZGUsIG9yIGlmIHRoZSBwdWJsaXNo ZXIgZG9lcyBub3Qgc3VwcG9ydAorCSAqIHBhcmFsbGVsIGFwcGx5LgorCSAqLworCWlmICghTXlM b2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyog T25seSBsZWFkZXIgYXBwbHkgd29ya2VycyBjYW4gc3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2Vy cy4gKi8KKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOwor CisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCB3b3JrZXIgaWYgdXNlciBoYXMg c2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdGhleSB3YW50IHRvIHNraXAg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yIHN0cmVhbWluZworCSAqIHRyYW5zYWN0aW9u cywgd2UgbmVlZCB0byBzZXJpYWxpemUgdGhlIHRyYW5zYWN0aW9uIHRvIGEgZmlsZSBzbyB0aGF0 IHdlCisJICogY2FuIGdldCB0aGUgbGFzdCBMU04gb2YgdGhlIHRyYW5zYWN0aW9uIHRvIGp1ZGdl IHdoZXRoZXIgdG8gc2tpcCBiZWZvcmUKKwkgKiBzdGFydGluZyB0byBhcHBseSB0aGUgY2hhbmdl LgorCSAqLworCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxz bikpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlv bnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsCisJICogYXBwbHkgd29y a2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYQor CSAqIHJlbGF0aW9uIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2VlCisJICogc2hv dWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxf bHNuIGJ5IHRoYXQKKwkgKiB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgdGhlIG5ldyBwYXJhbGxl bCBhcHBseSB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAqLworCWlmICghQWxsVGFibGVzeW5jc1Jl YWR5KCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogU2V0 IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEg Y29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBhIGZpeGVkLXNpemUgd29ya2VyIGluZm8KKyAq IChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSwgYSBtZXNzYWdlIHF1ZXVlLCBhbmQgYW4gZXJy b3IgcXVldWUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1 cmUuCisgKi8KK3N0YXRpYyBib29sCitwYV9zZXR1cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvKQoreworCXNobV90b2NfZXN0aW1hdG9yIGU7CisJU2l6ZQkJc2Vnc2l6ZTsKKwlk c21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsKKwlQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkICpzaGFyZWQ7CisJc2htX21xCSAgICptcTsKKwlTaXplCQlxdWV1ZV9zaXplID0gRFNN X1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJyb3JfcXVldWVfc2l6ZSA9IERTTV9FUlJPUl9RVUVVRV9T SVpFOworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cgbXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5lZWQu CisJICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFjaGluZXJ5IG1heSBjaG9vc2UgdG8gaW5zZXJ0 IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiByZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0ZSBl YWNoIGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVnaXN0 ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIsIGFuZCB0d28gb3RoZXIKKwkgKiBrZXlzIHRv IHRyYWNrIHRoZSBsb2NhdGlvbnMgb2YgdGhlIG1lc3NhZ2UgcXVldWUgYW5kIHRoZSBlcnJvciBt ZXNzYWdlCisJICogcXVldWUuCisJICovCisJc2htX3RvY19pbml0aWFsaXplX2VzdGltYXRvcigm ZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBxdWV1ZV9zaXplKTsKKwlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBlcnJvcl9xdWV1ZV9zaXplKTsKKworCXNobV90b2Nf ZXN0aW1hdGVfa2V5cygmZSwgMyk7CisJc2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOwor CisJLyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRh YmxlIG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgm ZSksIDApOworCWlmICghc2VnKQorCQlyZXR1cm4gZmFsc2U7CisKKwl0b2MgPSBzaG1fdG9jX2Ny ZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcp LAorCQkJCQkJIHNlZ3NpemUpOworCisJLyogU2V0IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLwor CXNoYXJlZCA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCkpOworCVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5tdXRleCk7CisKKwlzaGFyZWQtPnhh Y3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOworCXNoYXJlZC0+cGVuZGluZ19zdHJl YW1fY291bnQgPSAwOworCXNoYXJlZC0+cGFfd2FpdF9mb3Jfc3RyZWFtID0gZmFsc2U7CisJc2hh cmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCXNobV90b2NfaW5z ZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1 cCBtZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShz aG1fdG9jX2FsbG9jYXRlKHRvYywgcXVldWVfc2l6ZSksIHF1ZXVlX3NpemUpOworCXNobV90b2Nf aW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBtcSk7CisJc2htX21xX3NldF9zZW5k ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlLiAqLworCXdpbmZvLT5tcV9o YW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogU2V0IHVwIGVycm9y IHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2Fs bG9jYXRlKHRvYywgZXJyb3JfcXVldWVfc2l6ZSksCisJCQkJCSAgIGVycm9yX3F1ZXVlX3NpemUp OworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBt cSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUg cXVldWUuICovCisJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNl ZywgTlVMTCk7CisKKwkvKiBSZXR1cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJd2luZm8tPmRz bV9zZWcgPSBzZWc7CisJd2luZm8tPnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVybiB0cnVlOwor fQorCisvKgorICogVHJ5IHRvIGdldCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmcm9tIHRoZSBw b29sLiBJZiBub25lIGlzIGF2YWlsYWJsZSB0aGVuCisgKiBzdGFydCBhIG5ldyBvbmUuCisgKi8K K3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqCitwYV9sYXVuY2hfcGFyYWxsZWxfd29y a2VyKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCWJvb2wJCWxhdW5jaGVk OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlMaXN0CSAgICphY3RpdmVfd29y a2VycyA9IGxpc3RfY29weShQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCk7CisJTGlzdENlbGwgICAq bGM7CisKKwkvKiBUcnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg ZnJvbSB0aGUgd29ya2VyIHBvb2wuICovCisJZm9yZWFjaChsYywgYWN0aXZlX3dvcmtlcnMpCisJ eworCQl3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJ CS8qCisJCSAqIFdlIGZpcnN0IHRyeSB0byBmcmVlIHRoZSB3b3JrZXIgdG8gaW1wcm92ZSBvdXIg Y2hhbmNlcyBvZiBmaW5kaW5nCisJCSAqIG9uZSB0aGF0IGlzIG5vdCBpbiB1c2UuIE5vcm1hbGx5 LCB3ZSBmcmVlIHRoZSB3b3JrZXIgYWZ0ZXIgZW5zdXJpbmcKKwkJICogdGhhdCB0aGUgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIGJ5IHRoZSBwYXJhbGxlbCB3b3JrZXIgYnV0IGZvcgorCQkgKiBy b2xsYmFja3MsIHdlIGRvbid0IHdhaXQgZm9yIHRoZSB0cmFuc2FjdGlvbiB0byBmaW5pc2ggc28g Y2FuJ3QKKwkJICogZnJlZSB0aGUgd29ya2VyIGluZm9ybWF0aW9uIGltbWVkaWF0ZWx5LgorCQkg Ki8KKwkJaWYgKHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB3aW5mby0+c2hhcmVkLT54aWQpKQorCQkJ Y29udGludWU7CisKKwkJaWYgKCF3aW5mby0+aW5fdXNlKQorCQkJcmV0dXJuIHdpbmZvOworCX0K KworCS8qCisJICogU3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAqCisJICog VGhlIHdvcmtlciBpbmZvIGNhbiBiZSB1c2VkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHdvcmtl ciBwcm9jZXNzLCBzbworCSAqIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudCBjb250ZXh0LgorCSAq LworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwor CXdpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvKSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlm ICghcGFfc2V0dXBfZHNtKHdpbmZvKSkKKwl7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj b250ZXh0KTsKKwkJcGZyZWUod2luZm8pOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlsYXVuY2hl ZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxvZ2ljYWxSZXBXb3JrZXItPmRiaWQsCisJ CQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKKwkJCQkJCQkJCQlJ bnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hhbmRsZSh3aW5mby0+ZHNtX3NlZykp OworCisJaWYgKGxhdW5jaGVkKQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlclBvb2wgPSBsYXBw ZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLCB3aW5mbyk7CisJfQorCWVsc2UKKwl7CisJCXBh X2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCQl3aW5mbyA9IE5VTEw7CisJfQorCisJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIHdpbmZvOworfQorCisvKgor ICogQWxsb2NhdGUgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdGhhdCB3aWxsIGJlIHVzZWQgZm9y IHRoZSBzcGVjaWZpZWQgeGlkLgorICoKKyAqIFdlIGZpcnN0IHRyeSB0byBnZXQgYW4gYXZhaWxh YmxlIHdvcmtlciBmcm9tIHRoZSBwb29sLCBpZiBhbnkgYW5kIHRoZW4gdHJ5CisgKiB0byBsYXVu Y2ggYSBuZXcgd29ya2VyLiBPbiBzdWNjZXNzZnVsIGFsbG9jYXRpb24sIHJlbWVtYmVyIHRoZSB3 b3JrZXIKKyAqIGluZm9ybWF0aW9uIGluIHRoZSBoYXNoIHRhYmxlIHNvIHRoYXQgd2UgY2FuIGdl dCBpdCBsYXRlciBmb3IgcHJvY2Vzc2luZyB0aGUKKyAqIHN0cmVhbWluZyBjaGFuZ2VzLgorICov Cit2b2lkCitwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJYm9vbAkJ Zm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsKKwlQYXJhbGxl bEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJaWYgKCFwYV9jYW5fc3RhcnQoeGlkKSkKKwkJ cmV0dXJuOworCisJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBzdGF0ZSBoYXNodGFibGUuICovCisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFz aCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkp OworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKKwkJY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkpOworCQljdGwuaGN4dCA9IEFwcGx5 Q29udGV4dDsKKworCQlQYXJhbGxlbEFwcGx5VHhuSGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2Fs IHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCIsCisJCQkJCQkJCQkJCSAg IDE2LCAmY3RsLAorCQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9D T05URVhUKTsKKwl9CisKKwl3aW5mbyA9IHBhX2xhdW5jaF9wYXJhbGxlbF93b3JrZXIoKTsKKwlp ZiAoIXdpbmZvKQorCQlyZXR1cm47CisKKwkvKiBDcmVhdGUgYW4gZW50cnkgZm9yIHRoZSByZXF1 ZXN0ZWQgdHJhbnNhY3Rpb24uICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5 VHhuSGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2co RVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJLyogSW5pdGlhbGl6ZSBzaGFyZWQg bWVtb3J5IGFyZWEuICovCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7 CisJd2luZm8tPnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CisJ d2luZm8tPnNoYXJlZC0+eGlkID0geGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJl ZC0+bXV0ZXgpOworCisJd2luZm8tPmluX3VzZSA9IHRydWU7CisJZW50cnktPndpbmZvID0gd2lu Zm87CisJZW50cnktPnhpZCA9IHhpZDsKK30KKworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVkIHdv cmtlciBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICoKK3BhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJv b2wJCWZvdW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKCFQYXJhbGxl bEFwcGx5VHhuSGFzaCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBSZXR1cm4gdGhlIGNhY2hlZCBw YXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgdmFsaWQuICovCisJaWYgKHN0cmVhbV9hcHBseV93b3Jr ZXIpCisJCXJldHVybiBzdHJlYW1fYXBwbHlfd29ya2VyOworCisJLyogRmluZCBhbiBlbnRyeSBm b3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBh cmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKGZvdW5k KQorCXsKKwkJLyogVGhlIHdvcmtlciBtdXN0IG5vdCBoYXZlIGV4aXRlZC4gICovCisJCUFzc2Vy dChlbnRyeS0+d2luZm8tPmluX3VzZSk7CisJCXJldHVybiBlbnRyeS0+d2luZm87CisJfQorCisJ cmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3Ig cmV1c2UuCisgKgorICogVGhpcyByZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50 cnkgZnJvbSB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IGl0CisgKiBjYW4ndCBiZSB1c2VkLiBJZiB0 aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wsIGl0IHN0b3BzIHRoZSB3b3JrZXIK KyAqIGFuZCBmcmVlcyB0aGUgY29ycmVzcG9uZGluZyBpbmZvLiBPdGhlcndpc2UgaXQganVzdCBt YXJrcyB0aGUgd29ya2VyIGFzCisgKiBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAqIEZvciBt b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIgcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3Ag dGhpcyBmaWxlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd29ya2VyIGlzIHN0b3BwZWQs IGZhbHNlIG90aGVyd2lzZS4KKyAqLworYm9vbAorcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlpbnQJCQluYXBwbHl3 b3JrZXJzOworCisJQXNzZXJ0KCFhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CisKKwkvKiBX b3JrZXIgaXMgYWxyZWFkeSBhdmFpbGFibGUgZm9yIHJldXNlLiAqLworCWlmICghd2luZm8tPmlu X3VzZSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBmcmVlIHRoZSB3b3JrZXIg aWYgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSB3b3JrZXIgaXMgc3RpbGwgaW4KKwkgKiBwcm9ncmVz cy4gVGhpcyBjb3VsZCBoYXBwZW4gYXMgd2UgZG9uJ3Qgd2FpdCBmb3IgdGhlIGFwcGx5IG9mIHJv bGxiYWNrCisJICogdG8gZmluaXNoLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5m by0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJcmV0dXJuIGZhbHNlOwor CisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9SRU1P VkUsIE5VTEwpKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCUxX TG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29y a2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQpOworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCisJLyogU3RvcCB0 aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4gKi8KKwlp ZiAobmFwcGx5d29ya2VycyA+IChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uIC8gMikpCisJeworCQlpbnQJCQlzbG90X25vOworCQl1aW50MTYJCWdlbmVyYXRpb247 CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJCWdlbmVyYXRp b24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCQlzbG90 X25vID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKKwkJU3Bpbkxv Y2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwkJbG9naWNhbHJlcF9wYV93b3Jr ZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdp bmZvKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisK KwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIEZyZWUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBp bmZvcm1hdGlvbi4gKi8KK3N0YXRpYyB2b2lkCitwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlBc3NlcnQod2luZm8pOworCisJaWYgKHdpbmZv LT5tcV9oYW5kbGUpCisJCXNobV9tcV9kZXRhY2god2luZm8tPm1xX2hhbmRsZSk7CisKKwlpZiAo d2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFf aGFuZGxlKTsKKworCWlmICh3aW5mby0+ZHNtX3NlZykKKwkJZHNtX2RldGFjaCh3aW5mby0+ZHNt X3NlZyk7CisKKwkvKiBSZW1vdmUgZnJvbSB0aGUgd29ya2VyIHBvb2wuICovCisJUGFyYWxsZWxB cHBseVdvcmtlclBvb2wgPSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxBcHBseVdvcmtlclBvb2ws IHdpbmZvKTsKKworCXBmcmVlKHdpbmZvKTsKK30KKworLyoKKyAqIERldGFjaCBmcm9tIHRoZSBl cnJvcl9tcV9oYW5kbGUgZm9yIGVhY2ggcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lk CitwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlm b3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCVBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMp OworCisJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisJCXdpbmZvLT5l cnJvcl9tcV9oYW5kbGUgPSBOVUxMOworCX0KK30KKworLyoKKyAqIFRyeSB0byBzdG9wIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgdGhhdCBhcmUgbm90IGluIHVzZSB0byBrZWVwIHRoZSBudW1iZXIg b2YKKyAqIHdvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxfYXBwbHlf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLgorICovCit2b2lkCitwYV9zdG9wX2lkbGVfd29ya2Vy cyh2b2lkKQoreworCUxpc3RDZWxsICAgKmxjOworCUxpc3QJICAgKmFjdGl2ZV93b3JrZXJzOwor CWludAkJCW5hcHBseXdvcmtlcnM7CisKKwlhY3RpdmVfd29ya2VycyA9IGxpc3RfY29weShQYXJh bGxlbEFwcGx5V29ya2VyUG9vbCk7CisKKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykKKwl7 CisJCWludAkJCXNsb3Rfbm87CisJCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKwkJUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChs Yyk7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsK KwkJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQpOworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK KworCQlpZiAobmFwcGx5d29ya2VycyA8PSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uIC8gMikKKwkJCXJldHVybjsKKworCQkvKgorCQkgKiBXZSBmaXJzdCB0cnkg dG8gZnJlZSB0aGUgd29ya2VyIHRoYXQgbWF5IGJlIGluIHVzZS4gTm9ybWFsbHksIHdlCisJCSAq IGZyZWUgdGhlIHdvcmtlciBhZnRlciBlbnN1cmluZyB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBj b21taXR0ZWQgYnkKKwkJICogdGhlIHBhcmFsbGVsIHdvcmtlciBidXQgZm9yIHJvbGxiYWNrcywg d2UgZG9uJ3Qgd2FpdCBmb3IgdGhlCisJCSAqIHRyYW5zYWN0aW9uIHRvIGZpbmlzaCBzbyBjYW4n dCBmcmVlIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24KKwkJICogaW1tZWRpYXRlbHkuCisJCSAqLwor CQlpZiAocGFfZnJlZV93b3JrZXIod2luZm8sIHdpbmZvLT5zaGFyZWQtPnhpZCkpCisJCQljb250 aW51ZTsKKworCQlpZiAod2luZm8tPmluX3VzZSkKKwkJCWNvbnRpbnVlOworCisJCVNwaW5Mb2Nr QWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCQlnZW5lcmF0aW9uID0gd2luZm8tPnNo YXJlZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbjsKKwkJc2xvdF9ubyA9IHdpbmZvLT5z aGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87CisJCVNwaW5Mb2NrUmVsZWFzZSgmd2lu Zm8tPnNoYXJlZC0+bXV0ZXgpOworCisJCWxvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3Aoc2xvdF9u bywgZ2VuZXJhdGlvbik7CisKKwkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5mbyk7CisJfQorCisJ bGlzdF9mcmVlKGFjdGl2ZV93b3JrZXJzKTsKK30KKworLyoKKyAqIEludGVycnVwdCBoYW5kbGVy IGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitzdGF0aWMgdm9p ZAorUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKHZvaWQpCit7CisJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKKworCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCXsKKwkJZXJlcG9y dChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGZpbmlzaGVkIiwKKwkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lKSkpOworCisJCXByb2NfZXhpdCgwKTsKKwl9CisKKwlpZiAoQ29uZmln UmVsb2FkUGVuZGluZykKKwl7CisJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJUHJv Y2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJfQorfQorCisvKiBQYXJhbGxlbCBhcHBseSB3 b3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQKK0xvZ2ljYWxQYXJhbGxlbEFwcGx5TG9v cChzaG1fbXFfaGFuZGxlICptcWgpCit7CisJc2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlFcnJv ckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IEN1 cnJlbnRNZW1vcnlDb250ZXh0OworCisJLyoKKwkgKiBJbml0IHRoZSBBcHBseU1lc3NhZ2VDb250 ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVwbGljYXRpb24KKwkgKiBwcm90b2Nv bCBtZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRD cmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVzc2FnZUNvbnRleHQiLAor CQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgorCSAqIFB1c2ggYXBw bHkgZXJyb3IgY29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmlsbGVkIHdoaWxlIGFw cGx5aW5nCisJICogYSBjaGFuZ2UuCisJICovCisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBs eV9lcnJvcl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRf c3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCWZvciAoOzsp CisJeworCQl2b2lkCSAgICpkYXRhOworCQlTaXplCQlsZW47CisKKwkJUHJvY2Vzc1BhcmFsbGVs QXBwbHlJbnRlcnJ1cHRzKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRh IGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBw bHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2ZShtcWgsICZs ZW4sICZkYXRhLCB0cnVlKTsKKworCQlpZiAoc2htcV9yZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJ CXsKKwkJCVN0cmluZ0luZm9EYXRhIHM7CisJCQlpbnQJCQljOworCisJCQlpZiAobGVuID09IDAp CisJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgbWVzc2FnZSBsZW5ndGgiKTsKKworCQkJcy5jdXJz b3IgPSAwOworCQkJcy5tYXhsZW4gPSAtMTsKKwkJCXMuZGF0YSA9IChjaGFyICopIGRhdGE7CisJ CQlzLmxlbiA9IGxlbjsKKworCQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2Vz IHNlbnQgZnJvbSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvCisJCQkgKiBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzIGNhbiBvbmx5IGJlICd3Jy4KKwkJCSAqLworCQkJYyA9IHBxX2dldG1zZ2J5dGUoJnMp OworCQkJaWYgKGMgIT0gJ3cnKQorCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2Ug XCIlY1wiIiwgYyk7CisKKwkJCS8qCisJCQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhh dCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVyCisJCQkgKiBhcHBseSB3b3JrZXIuCisJ CQkgKi8KKwkJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNfTUVTU0FHRTsKKworCQkJYXBwbHlfZGlz cGF0Y2goJnMpOworCQl9CisJCWVsc2UgaWYgKHNobXFfcmVzID09IFNITV9NUV9XT1VMRF9CTE9D SykKKwkJeworCQkJaW50CQkJcmM7CisKKwkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8KKwkJ CXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwMDBMLAorCQkJCQkJICAgV0FJ VF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOworCisJCQlpZiAocmMgJiBXTF9M QVRDSF9TRVQpCisJCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CUFzc2VydChzaG1xX3JlcyA9PSBTSE1fTVFfREVUQUNIRUQpOworCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0 aW9uIGFwcGx5IHdvcmtlciIpKSk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlN ZXNzYWdlQ29udGV4dCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KKwor CS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjay4gKi8KKwllcnJvcl9jb250ZXh0X3N0YWNr ID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0 KTsKK30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0 byByZWFkIGZyb20gb3VyIGVycm9yIHF1ZXVlIG9uZSBtb3JlCisgKiB0aW1lLiBUaGlzIGd1YXJk cyBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHdlIGV4aXQgdW5jbGVhbmx5IHdpdGhvdXQgc2VuZGlu ZworICogYW4gRXJyb3JSZXNwb25zZSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBzb21lIGNvZGUgY2Fs bHMgcHJvY19leGl0IGRpcmVjdGx5LgorICovCitzdGF0aWMgdm9pZAorcGFfc2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKK3sKKwlTZW5kUHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXIt PmFwcGx5X2xlYWRlcl9waWQsCisJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdF LAorCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQg KikgRGF0dW1HZXRQb2ludGVyKGFyZykpOworfQorCisvKgorICogUGFyYWxsZWwgYXBwbHkgd29y a2VyIGVudHJ5IHBvaW50LgorICovCit2b2lkCitQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKK3sKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJZHNt X2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJ c2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJc2htX21xX2hhbmRsZSAqZXJy b3JfbXFoOworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0 dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisK KwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcuICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxI YW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJG b3JTaHV0ZG93blJlcXVlc3QpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3Vu ZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1p YyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSwgYW5kCisJICog ZmluZCBpdHMgdGFibGUgb2YgY29udGVudHMuCisJICoKKwkgKiBMaWtlIHBhcmFsbGVsIHF1ZXJ5 LCB3ZSBkb24ndCBuZWVkIHJlc291cmNlIG93bmVyIGJ5IHRoaXMgdGltZS4gU2VlCisJICogUGFy YWxsZWxXb3JrZXJNYWluLgorCSAqLworCW1lbWNweSgmaGFuZGxlLCBNeUJnd29ya2VyRW50cnkt PmJnd19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlzZWcgPSBkc21fYXR0YWNoKGhhbmRs ZSk7CisJaWYgKCFzZWcpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRv IG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9j X2F0dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhz ZWcpKTsKKwlpZiAoIXRvYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFn aWMgbnVtYmVyIGluIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9y ZV9zaG1lbV9leGl0KHBhX3NodXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2VnKSk7CisKKwkvKiBM b29rIHVwIHRoZSBzaGFyZWQgaW5mb3JtYXRpb24uICovCisJc2hhcmVkID0gc2htX3RvY19sb29r dXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBmYWxzZSk7CisJTXlQYXJhbGxlbFNo YXJlZCA9IHNoYXJlZDsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgor CSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIGZh bHNlKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCW1xaCA9IHNobV9tcV9h dHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKgorCSAqIFByaW1hcnkgaW5pdGlhbGl6YXRpb24g aXMgY29tcGxldGUuIE5vdywgd2UgY2FuIGF0dGFjaCB0byBvdXIgc2xvdC4KKwkgKiBUaGlzIGlz IHRvIGVuc3VyZSB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGRvZXMgbm90IHdyaXRlIGRh dGEgdG8KKwkgKiB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcXVldWUuCisJICovCisJbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQ YXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29y a2VyX2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmdlbmVyYXRpb247CisJTXlQYXJh bGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubyA9IHdvcmtlcl9zbG90OworCVNw aW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJLyoKKwkgKiBBdHRh Y2ggdG8gdGhlIGVycm9yIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3NlbmRl cihtcSwgTXlQcm9jKTsKKwllcnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwp OworCisJcHFfcmVkaXJlY3RfdG9fc2htX21xKHNlZywgZXJyb3JfbXFoKTsKKwlwcV9zZXRfcGFy YWxsZWxfbGVhZGVyKE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJ CSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRf dGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnJlcGx5X3RpbWUgPSAwOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CisK KwkvKiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4gdHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwlSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vi c2NyaXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgICBvcmlnaW5uYW1lLCBzaXpl b2Yob3JpZ2lubmFtZSkpOworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5h bWUsIGZhbHNlKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkb2Vzbid0 IG5lZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uCisJICogb3JpZ2luIHdoaWNoIHdh cyBhbHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KKwkgKi8KKwlyZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVh ZGVyX3BpZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lz Y2FjaGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUg c3Vic2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNp bmdfdGFibGVfc3RhdGVzLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwlzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9vcmlnaW4ob3JpZ2lubmFtZSk7CisKKwlMb2dpY2FsUGFyYWxsZWxBcHBseUxv b3AobXFoKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtdXN0IG5vdCBn ZXQgaGVyZSBiZWNhdXNlIHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3aWxsIG9ubHkg c3RvcCB3aGVuIGl0IHJlY2VpdmVzIGEgU0lHVEVSTSBvciBTSUdJTlQgZnJvbSB0aGUKKwkgKiBs ZWFkZXIsIGRldGVjdHMgYSBjaGFuZ2UgaW4gc3Vic2NyaXB0aW9uIGluZm9ybWF0aW9uLCBvciB3 aGVuIHRoZXJlCisJICogdGhlcmUgaXMgYW4gZXJyb3IuIE5vbmUgb2YgdGhlc2UgY2FzZXMgd2ls bCBhbGxvdyB0aGUgY29kZSB0byByZWFjaAorCSAqIGhlcmUuCisJICovCisJQXNzZXJ0KGZhbHNl KTsKK30KKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5n IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3NhZ2UuCisgKgorICogTm90ZTogdGhpcyBpcyBj YWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIhIEFsbCB3ZSBjYW4gZG8gaXMgc2V0IGEgZmxh ZworICogdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8g aW52b2tlCisgKiBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKS4KKyAqLwordm9pZAorSGFu ZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKK3sKKwlJbnRlcnJ1cHRQZW5k aW5nID0gdHJ1ZTsKKwlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSB0cnVlOworCVNldExh dGNoKE15TGF0Y2gpOworfQorCisvKgorICogSGFuZGxlIGEgc2luZ2xlIHByb3RvY29sIG1lc3Nh Z2UgcmVjZWl2ZWQgZnJvbSBhIHNpbmdsZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyLgorICov CitzdGF0aWMgdm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2UoUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvLCBTdHJpbmdJbmZvIG1zZykKK3sKKwljaGFyCQltc2d0eXBlOworCisJ bXNndHlwZSA9IHBxX2dldG1zZ2J5dGUobXNnKTsKKworCXN3aXRjaCAobXNndHlwZSkKKwl7CisJ CWNhc2UgJ0UnOgkJCQkvKiBFcnJvclJlc3BvbnNlICovCisJCQl7CisJCQkJRXJyb3JEYXRhCWVk YXRhOworCisJCQkJLyogUGFyc2UgRXJyb3JSZXNwb25zZS4gKi8KKwkJCQlwcV9wYXJzZV9lcnJv cm5vdGljZShtc2csICZlZGF0YSk7CisKKwkJCQkvKgorCQkJCSAqIElmIGRlc2lyZWQsIGFkZCBh IGNvbnRleHQgbGluZSB0byBzaG93IHRoYXQgdGhpcyBpcyBhCisJCQkJICogbWVzc2FnZSBwcm9w YWdhdGVkIGZyb20gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIE90aGVyd2lzZSwKKwkJCQkgKiBp dCBjYW4gc29tZXRpbWVzIGJlIGNvbmZ1c2luZyB0byB1bmRlcnN0YW5kIHdoYXQgYWN0dWFsbHkK KwkJCQkgKiBoYXBwZW5lZC4KKwkJCQkgKi8KKwkJCQlpZiAoZWRhdGEuY29udGV4dCkKKwkJCQkJ ZWRhdGEuY29udGV4dCA9IHBzcHJpbnRmKCIlc1xuJXMiLCBlZGF0YS5jb250ZXh0LAorCQkJCQkJ CQkJCQkgXygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7CisJ CQkJZWxzZQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHN0cmR1cChfKCJsb2dpY2FsIHJlcGxpY2F0 aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKworCQkJCS8qCisJCQkJICogQ29udGV4dCBi ZXlvbmQgdGhhdCBzaG91bGQgdXNlIHRoZSBlcnJvciBjb250ZXh0IGNhbGxiYWNrcworCQkJCSAq IHRoYXQgd2VyZSBpbiBlZmZlY3QgaW4gTG9naWNhbFJlcEFwcGx5TG9vcCgpLgorCQkJCSAqLwor CQkJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrOworCisJ CQkJLyoKKwkJCQkgKiBUaGUgYWN0dWFsIGVycm9yIG11c3QgaGF2ZSBiZWVuIHJlcG9ydGVkIGJ5 IHRoZSBwYXJhbGxlbAorCQkJCSAqIGFwcGx5IHdvcmtlci4KKwkJCQkgKi8KKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBleGl0ZWQgZHVlIHRvIGVycm9yIiksCisJCQkJCQkgZXJyY29udGV4dCgiJXMi LCBlZGF0YS5jb250ZXh0KSkpOworCQkJfQorCisJCQkvKgorCQkJICogRG9uJ3QgbmVlZCB0byBk byBhbnl0aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBhbmQKKwkJCSAqIE5vdGlmeVJlc3BvbnNl IGFzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBkb2Vzbid0IG5lZWQKKwkJCSAqIHRv IHNlbmQgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJCSAqLworCQljYXNlICdOJzoKKwkJY2Fz ZSAnQSc6CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFs bGVsIGFwcGx5IHdvcmtlcjogJWMgKG1lc3NhZ2UgbGVuZ3RoICVkIGJ5dGVzKSIsCisJCQkJIG1z Z3R5cGUsIG1zZy0+bGVuKTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgYW55IHF1ZXVlZCBwcm90 b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8K K3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQoreworCUxpc3RDZWxsICAg KmxjOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCXN0YXRpYyBNZW1vcnlDb250ZXh0 IGhwYW1fY29udGV4dCA9IE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaXMgaW52b2tlZCBmcm9tIFBy b2Nlc3NJbnRlcnJ1cHRzKCksIGFuZCBzaW5jZSBzb21lIG9mIHRoZQorCSAqIGZ1bmN0aW9ucyBp dCBjYWxscyBjb250YWluIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHRoZXJlIGlzIGEgcG90ZW50 aWFsCisJICogZm9yIHJlY3Vyc2l2ZSBjYWxscyBpZiBtb3JlIHNpZ25hbHMgYXJlIHJlY2VpdmVk IHdoaWxlIHRoaXMgcnVucy4gSXQncworCSAqIHVuY2xlYXIgdGhhdCByZWN1cnNpdmUgZW50cnkg d291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1c2VmdWwKKwkgKiBldmVuIGlmIGl0 IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMgdW50aWwgZG9uZS4KKwkgKi8KKwlI T0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogTW9yZW92ZXIsIEN1cnJlbnRNZW1vcnlDb250 ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVyZS4gV2UKKwkgKiBkb24ndCB3YW50 IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywgc28gbGV0J3Mg ZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQgd2UgY2FuIHJl c2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmICghaHBhbV9jb250ZXh0KQkJCS8qIGZpcnN0IHRp bWUgdGhyb3VnaD8gKi8KKwkJaHBhbV9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRv cE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSAiSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2Vz IiwKKwkJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCWVsc2UKKwkJTWVtb3J5 Q29udGV4dFJlc2V0KGhwYW1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7CisKKwlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcg PSBmYWxzZTsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKQorCXsKKwkJ c2htX21xX3Jlc3VsdCByZXM7CisJCVNpemUJCW5ieXRlczsKKwkJdm9pZAkgICAqZGF0YTsKKwkJ UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogVGhlIGxlYWRlciB3aWxsIGRldGFjaCBmcm9t IHRoZSBlcnJvciBxdWV1ZSBhbmQgc2V0IGl0IHRvIE5VTEwKKwkJICogYmVmb3JlIHByZXBhcmlu ZyB0byBzdG9wIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBzbyB3ZSBkb24ndAorCQkgKiBu ZWVkIHRvIGhhbmRsZSBlcnJvciBtZXNzYWdlcyBhbnltb3JlLiBTZWUKKwkJICogbG9naWNhbHJl cF93b3JrZXJfZGV0YWNoLgorCQkgKi8KKwkJaWYgKCF3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKQor CQkJY29udGludWU7CisKKwkJcmVzID0gc2htX21xX3JlY2VpdmUod2luZm8tPmVycm9yX21xX2hh bmRsZSwgJm5ieXRlcywgJmRhdGEsIHRydWUpOworCisJCWlmIChyZXMgPT0gU0hNX01RX1dPVUxE X0JMT0NLKQorCQkJY29udGludWU7CisJCWVsc2UgaWYgKHJlcyA9PSBTSE1fTVFfU1VDQ0VTUykK KwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCisJCQlpbml0U3RyaW5nSW5mbygmbXNnKTsK KwkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJm1zZywgZGF0YSwgbmJ5dGVzKTsKKwkJCUhhbmRs ZVBhcmFsbGVsQXBwbHlNZXNzYWdlKHdpbmZvLCAmbXNnKTsKKwkJCXBmcmVlKG1zZy5kYXRhKTsK KwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25u ZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIp KSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogTWln aHQgYXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAqLworCU1lbW9yeUNv bnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVSUlVQVFMoKTsKK30KKwor LyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICovCit2b2lkCitwYV9zZW5kX2RhdGEo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAq ZGF0YSkKK3sKKwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKKwlUaW1lc3RhbXBU eiBzdGFydFRpbWUgPSAwOworCisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisKKyNk ZWZpbmUgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMgMTAwMAorI2RlZmluZSBTSE1fU0VORF9U SU1FT1VUX01TCQkoMTAwMDAgLSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUykKKworCWZvciAo OzspCisJeworCQlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5mby0+bXFfaGFuZGxlLCBuYnl0ZXMs IGRhdGEsIHRydWUsIHRydWUpOworCisJCWlmIChyZXN1bHQgPT0gU0hNX01RX1NVQ0NFU1MpCisJ CQlicmVhazsKKwkJZWxzZSBpZiAocmVzdWx0ID09IFNITV9NUV9ERVRBQ0hFRCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRvIHNoYXJlZC1t ZW1vcnkgcXVldWUiKSkpOworCisJCUFzc2VydChyZXN1bHQgPT0gU0hNX01RX1dPVUxEX0JMT0NL KTsKKworCQkvKiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8KKwkJcmMgPSBXYWl0TGF0Y2goTXlM YXRjaCwKKwkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAorCQkJCQkgICBXQUlU X0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQlpZiAocmMg JiBXTF9MQVRDSF9TRVQpCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGF0dGVtcHQgdG8gc2Vu ZCBkYXRhIHZpYSBzaGFyZWQgbWVtb3J5IHRpbWVzIG91dCwgd2UgcmVzdGFydAorCQkgKiB0aGUg bG9naWNhbCByZXBsaWNhdGlvbiB0byBwcmV2ZW50IHBvc3NpYmxlIGRlYWRsb2NrcyB3aXRoIGFu b3RoZXIKKwkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBSZWZlciB0byB0aGUgY29tbWVudHMg YXRvcCB0aGlzIGZpbGUgZm9yCisJCSAqIGRldGFpbHMuCisJCSAqLworCQlpZiAoc3RhcnRUaW1l ID09IDApCisJCQlzdGFydFRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJCWVsc2UgaWYg KFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVudFRpbWVzdGFt cCgpLAorCQkJCQkJCQkJCQlTSE1fU0VORF9USU1FT1VUX01TKSkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKKwkJCQkJIGVycm1z ZygidGVybWluYXRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIg ZHVlIHRvIHRpbWVvdXQiKSkpOworCX0KK30KKworLyoKKyAqIFdhaXQgdW50aWwgdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlcidzIHRyYW5zYWN0aW9uIHN0YXRlIGhhcyByZWFjaGVkIG9yCisgKiBl eGNlZWRlZCB0aGUgZ2l2ZW4geGFjdF9zdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3dhaXRf Zm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkgICBQ YXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlmb3IgKDs7KQorCXsKKwkJLyoKKwkJ ICogU3RvcCBpZiB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaGFzIHJlYWNoZWQgb3IgZXhjZWVkZWQg dGhlIGdpdmVuCisJCSAqIHhhY3Rfc3RhdGUuCisJCSAqLworCQlpZiAocGFfZ2V0X3hhY3Rfc3Rh dGUod2luZm8tPnNoYXJlZCkgPj0geGFjdF9zdGF0ZSkKKwkJCWJyZWFrOworCisJCS8qIFdhaXQg dG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkg V0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkg MTBMLAorCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFO R0UpOworCisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3 aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQor fQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNh Y3Rpb24gZmluaXNoZXMuCisgKi8KK3ZvaWQKK3BhX3dhaXRfZm9yX3hhY3RfZmluaXNoKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwkvKgorCSAqIFdhaXQgdW50aWwgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBzZXQgdGhlIHN0YXRlIHRvCisJICogUEFSQUxMRUxfVFJBTlNf U1RBUlRFRCB3aGljaCBtZWFucyBpdCBoYXMgYWNxdWlyZWQgdGhlIHRyYW5zYWN0aW9uCisJICog bG9jay4gVGhpcyBpcyB0byBwcmV2ZW50IGxlYWRlciBhcHBseSB3b3JrZXIgZnJvbSBhY3F1aXJp bmcgdGhlCisJICogdHJhbnNhY3Rpb24gbG9jayBlYXJsaWVyIHRoYW4gdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKwkgKi8KKwlwYV93YWl0X2Zvcl94YWN0X3N0YXRlKHdpbmZvLCBQQVJBTExF TF9UUkFOU19TVEFSVEVEKTsKKworCS8qCisJICogV2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIGxv Y2sgdG8gYmUgcmVsZWFzZWQuIFRoaXMgaXMgcmVxdWlyZWQgdG8gZGV0ZWN0CisJICogZGVhZGxv Y2sgYW1vbmcgbGVhZGVyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBSZWZlciB0byB0aGUg Y29tbWVudHMKKwkgKiBhdG9wIHRoaXMgZmlsZS4KKwkgKi8KKwlwYV9sb2NrX3RyYW5zYWN0aW9u KHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJcGFfdW5sb2NrX3Ry YW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkv KgorCSAqIENoZWNrIGlmIHRoZSBzdGF0ZSBiZWNvbWVzIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVE IGluIGNhc2UgdGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBs eWluZyBjaGFuZ2VzIGNhdXNpbmcgdGhlIGxvY2sgdG8gYmUKKwkgKiByZWxlYXNlZC4KKwkgKi8K KwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgIT0gUEFSQUxMRUxfVFJBTlNf RklOSVNIRUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9u IHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKSk7Cit9 CisKKy8qCisgKiBTZXQgYW4gZW51bSBpbmRpY2F0aW5nIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBm b3IgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3Nl dF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJICBQ YXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFy ZWQtPm11dGV4KTsKKwl3c2hhcmVkLT54YWN0X3N0YXRlID0geGFjdF9zdGF0ZTsKKwlTcGluTG9j a1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdldCBhbiBlbnVtIGluZGlj YXRpbmcgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGZvciB0aGUgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkK KyAqIHdvcmtlci4KKyAqLworc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZQorcGFfZ2V0X3hhY3Rf c3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCkKK3sKKwlQYXJhbGxlbFRy YW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgp OworCXhhY3Rfc3RhdGUgPSB3c2hhcmVkLT54YWN0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgm d3NoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIHhhY3Rfc3RhdGU7Cit9CisKKy8qCisgKiBDYWNo ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uLgorICovCit2b2lkCitwYV9z ZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7 CisJc3RyZWFtX2FwcGx5X3dvcmtlciA9IHdpbmZvOworfQorCisvKgorICogRm9ybSBhIHVuaXF1 ZSBzYXZlcG9pbnQgbmFtZSBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqCisgKiBO b3RlIHRoYXQgZGlmZmVyZW50IHN1YnNjcmlwdGlvbnMgZm9yIHB1YmxpY2F0aW9ucyBvbiBkaWZm ZXJlbnQgbm9kZXMgY2FuCisgKiByZWNlaXZlIHNhbWUgcmVtb3RlIHhpZCwgc28gd2UgbmVlZCB0 byB1c2Ugc3Vic2NyaXB0aW9uIGlkIGFsb25nIHdpdGggaXQuCisgKgorICogUmV0dXJuIHRoZSBu YW1lIGluIHRoZSBzdXBwbGllZCBidWZmZXIuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9zYXZlcG9p bnRfbmFtZShPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqc3BuYW1lLCBTaXpl IHN6c3ApCit7CisJc25wcmludGYoc3BuYW1lLCBzenNwLCAicGdfc3BfJXVfJXUiLCBzdWJvaWQs IHhpZCk7Cit9CisKKy8qCisgKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpbiBw YXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgbmVlZGVkLgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgY2FuIGZpZ3VyZSBvdXQgaWYgYSBuZXcgc3VidHJhbnNhY3Rpb24gd2FzCisgKiBz dGFydGVkIGJ5IGNoZWNraW5nIGlmIHRoZSBuZXcgY2hhbmdlIGFycml2ZWQgd2l0aCBhIGRpZmZl cmVudCB4aWQuIEluIHRoYXQKKyAqIGNhc2UgZGVmaW5lIGEgbmFtZWQgc2F2ZXBvaW50LCBzbyB0 aGF0IHdlIGFyZSBhYmxlIHRvIHJvbGxiYWNrIHRvIGl0CisgKiBpZiByZXF1aXJlZC4KKyAqLwor dm9pZAorcGFfc3RhcnRfc3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNh Y3Rpb25JZCB0b3BfeGlkKQoreworCWlmIChjdXJyZW50X3hpZCAhPSB0b3BfeGlkICYmCisJCSFs aXN0X21lbWJlcl94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRfeGlkKSkKKwl7CisJCU1lbW9yeUNv bnRleHQgb2xkY3R4OworCQljaGFyCQlzcG5hbWVbTkFNRURBVEFMRU5dOworCisJCXBhX3NhdmVw b2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQsIGN1cnJlbnRfeGlkLAorCQkJCQkJICBzcG5h bWUsIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERFQlVHMSwgImRlZmluaW5nIHNhdmVwb2lu dCAlcyBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIsIHNwbmFt ZSk7CisKKwkJLyogV2UgbXVzdCBiZSBpbiB0cmFuc2FjdGlvbiBibG9jayB0byBkZWZpbmUgdGhl IFNBVkVQT0lOVC4gKi8KKwkJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJaWYg KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CisJCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCQl9CisKKwkJRGVmaW5lU2F2ZXBvaW50KHNwbmFtZSk7CisKKwkJLyoKKwkJICogQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kIGlzIG5lZWRlZCB0byBzdGFydCBhIHN1YnRyYW5zYWN0aW9u IGFmdGVyCisJCSAqIGlzc3VpbmcgYSBTQVZFUE9JTlQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxv Y2sgKHNlZQorCQkgKiBTdGFydFN1YlRyYW5zYWN0aW9uKCkpLgorCQkgKi8KKwkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRv cFRyYW5zYWN0aW9uQ29udGV4dCk7CisJCXN1YnhhY3RsaXN0ID0gbGFwcGVuZF94aWQoc3VieGFj dGxpc3QsIGN1cnJlbnRfeGlkKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJ fQorfQorCisvKiBSZXNldCB0aGUgbGlzdCB0aGF0IG1haW50YWlucyBzdWJ0cmFuc2FjdGlvbnMu ICovCit2b2lkCitwYV9yZXNldF9zdWJ0cmFucyh2b2lkKQoreworCS8qCisJICogV2UgZG9uJ3Qg bmVlZCB0byBmcmVlIHRoaXMgZXhwbGljaXRseSBhcyB0aGUgYWxsb2NhdGVkIG1lbW9yeSB3aWxs IGJlCisJICogZnJlZWQgYXQgdGhlIHRyYW5zYWN0aW9uIGVuZC4KKwkgKi8KKwlzdWJ4YWN0bGlz dCA9IE5JTDsKK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRo ZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBpbiBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIu CisgKi8KK3ZvaWQKK3BhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICph Ym9ydF9kYXRhKQoreworCVRyYW5zYWN0aW9uSWQgeGlkID0gYWJvcnRfZGF0YS0+eGlkOworCVRy YW5zYWN0aW9uSWQgc3VieGlkID0gYWJvcnRfZGF0YS0+c3VieGlkOworCisJLyoKKwkgKiBVcGRh dGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3Qg cG9zaXRpb24KKwkgKiBpbiBjYXNlIG9mIGNyYXNoLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW5fbHNuID0gYWJvcnRfZGF0YS0+YWJvcnRfbHNuOworCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS0+YWJvcnRfdGltZTsKKworCS8qCisJICog SWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxl dmVsIHhhY3QsIHNvCisJICoganVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4KKwkgKi8KKwlpZiAo c3VieGlkID09IHhpZCkKKwl7CisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIGxvY2sgYXMgd2UgbWln aHQgYmUgcHJvY2Vzc2luZyBhbiBlbXB0eSBzdHJlYW1pbmcKKwkJICogdHJhbnNhY3Rpb24gaW4g d2hpY2ggY2FzZSB0aGUgbG9jayB3b24ndCBiZSByZWxlYXNlZCBkdXJpbmcKKwkJICogdHJhbnNh Y3Rpb24gcm9sbGJhY2suCisJCSAqLworCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nl c3NTaGFyZUxvY2spOworCisJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJaWYgKElz VHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsK KwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJcGFfcmVzZXRfc3VidHJh bnMoKTsKKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCisJ CXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklT SEVEKTsKKwl9CisJZWxzZQorCXsKKwkJLyogT0ssIHNvIGl0J3MgYSBzdWJ4YWN0LiBSb2xsYmFj ayB0byB0aGUgc2F2ZXBvaW50LiAqLworCQlpbnQJCQlpOworCQljaGFyCQlzcG5hbWVbTkFNRURB VEFMRU5dOworCisJCXBhX3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQsIHN1Ynhp ZCwgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJyb2xsaW5nIGJh Y2sgdG8gc2F2ZXBvaW50ICVzIGluIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkg d29ya2VyIiwgc3BuYW1lKTsKKworCQkvKgorCQkgKiBTZWFyY2ggdGhlIHN1YnhhY3RsaXN0LCBk ZXRlcm1pbmUgdGhlIG9mZnNldCB0cmFja2VkIGZvciB0aGUKKwkJICogc3VieGFjdCwgYW5kIHRy dW5jYXRlIHRoZSBsaXN0LgorCQkgKgorCQkgKiBOb3RlIHRoYXQgSWYgaXQncyBhbiBlbXB0eSBz dWItdHJhbnNhY3Rpb24gdGhlbiB3ZSB3aWxsIG5vdCBmaW5kCisJCSAqIHRoZSBzdWJ4aWQgaGVy ZS4KKwkJICovCisJCWZvciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3RsaXN0KSAtIDE7IGkgPj0g MDsgaS0tKQorCQl7CisJCQlUcmFuc2FjdGlvbklkIHhpZF90bXAgPSBsZmlyc3RfeGlkKGxpc3Rf bnRoX2NlbGwoc3VieGFjdGxpc3QsIGkpKTsKKworCQkJaWYgKHhpZF90bXAgPT0gc3VieGlkKQor CQkJeworCQkJCVJvbGxiYWNrVG9TYXZlcG9pbnQoc3BuYW1lKTsKKwkJCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwkJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUoc3VieGFjdGxp c3QsIGkgKyAxKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCXBnc3RhdF9yZXBvcnRfYWN0 aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCX0KK30KKworLyoKKyAqIEhl bHBlciBmdW5jdGlvbnMgdG8gYWNxdWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggc3Ry ZWFtIGJsb2NrLgorICoKKyAqIFNldCBsb2NrdGFnX2ZpZWxkNCB0byBQQVJBTExFTF9BUFBMWV9M T0NLX1NUUkVBTSB0byBpbmRpY2F0ZSB0aGF0IGl0J3MgYQorICogc3RyZWFtIGxvY2suCisgKgor ICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlIHRvIHNlZSBob3cgdGhlIHN0 cmVhbSBsb2NrIGlzIHVzZWQuCisgKi8KK3ZvaWQKK3BhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9u SWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNl c3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkgICBQQVJBTExF TF9BUFBMWV9MT0NLX1NUUkVBTSwgbG9ja21vZGUpOworfQorCit2b2lkCitwYV91bmxvY2tfc3Ry ZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlVbmxvY2tBcHBs eVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJ CQkJCQkJCQkgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0sIGxvY2ttb2RlKTsKK30KKworLyoK KyAqIEhlbHBlciBmdW5jdGlvbnMgdG8gYWNxdWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVh Y2ggbG9jYWwgdHJhbnNhY3Rpb24KKyAqIGFwcGx5LgorICoKKyAqIFNldCBsb2NrdGFnX2ZpZWxk NCB0byBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QgdG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEKKyAq IHRyYW5zYWN0aW9uIGxvY2suCisgKgorICogTm90ZSB0aGF0IGFsbCB0aGUgY2FsbGVycyBtdXN0 IHBhc3MgYSByZW1vdGUgdHJhbnNhY3Rpb24gSUQgaW5zdGVhZCBvZiBhCisgKiBsb2NhbCB0cmFu c2FjdGlvbiBJRCBhcyB4aWQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24g SUQgd2lsbAorICogb25seSBiZSBhc3NpZ25lZCB3aGlsZSBhcHBseWluZyB0aGUgZmlyc3QgY2hh bmdlIGluIHRoZSBwYXJhbGxlbCBhcHBseSBidXQKKyAqIGl0J3MgcG9zc2libGUgdGhhdCB0aGUg Zmlyc3QgY2hhbmdlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYmxvY2tlZAorICog YnkgYSBjb25jdXJyZW50bHkgZXhlY3V0aW5nIHRyYW5zYWN0aW9uIGluIGFub3RoZXIgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLiBXZQorICogY2FuIG9ubHkgY29tbXVuaWNhdGUgdGhlIGxvY2FsIHRy YW5zYWN0aW9uIGlkIHRvIHRoZSBsZWFkZXIgYWZ0ZXIgYXBwbHlpbmcKKyAqIHRoZSBmaXJzdCBj aGFuZ2Ugc28gaXQgd29uJ3QgYmUgYWJsZSB0byB3YWl0IGFmdGVyIHNlbmRpbmcgdGhlIHhhY3Qg ZmluaXNoCisgKiBjb21tYW5kIHVzaW5nIHRoaXMgbG9jay4KKyAqCisgKiBSZWZlciB0byB0aGUg Y29tbWVudHMgYXRvcCB0aGlzIGZpbGUgdG8gc2VlIGhvdyB0aGUgdHJhbnNhY3Rpb24gbG9jayBp cworICogdXNlZC4KKyAqLwordm9pZAorcGFfbG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklk IHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNz aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJICAgUEFSQUxMRUxf QVBQTFlfTE9DS19YQUNULCBsb2NrbW9kZSk7Cit9CisKK3ZvaWQKK3BhX3VubG9ja190cmFuc2Fj dGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJVW5sb2NrQXBw bHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAor CQkJCQkJCQkJIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCwgbG9ja21vZGUpOworfQorCisvKgor ICogSW5jcmVtZW50IHRoZSBudW1iZXIgb2YgcGVuZGluZyBzdHJlYW1pbmcgYmxvY2tzLgorICov Cit2b2lkCitwYV9pbmNyZW1lbnRfc3RyZWFtX2Jsb2NrKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFy ZWQgKndzaGFyZWQpCit7CisJd2hpbGUgKDEpCisJeworCQlTcGluTG9ja0FjcXVpcmUoJndzaGFy ZWQtPm11dGV4KTsKKworCQkvKgorCQkgKiBEb24ndCB0cnkgdG8gaW5jcmVtZW50IHRoZSBjb3Vu dCBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzCisJCSAqIHRha2luZyB0aGUgc3RyZWFt IGxvY2suIE90aGVyd2lzZSwgdGhlcmUgd291bGQgYmUgYSByYWNlIGNvbmRpdGlvbgorCQkgKiB0 aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2hlY2tzIHRoZXJlIGlzIG5vIHBlbmRpbmcg c3RyZWFtaW5nCisJCSAqIGJsb2NrIGFuZCBiZWZvcmUgaXQgYWN0dWFsbHkgc3RhcnRzIHdhaXRp bmcgb24gYSBsb2NrLCB0aGUgbGVhZGVyCisJCSAqIHNlbmRzIGFub3RoZXIgc3RyZWFtaW5nIGJs b2NrIGFuZCB0YWtlIHRoZSBzdHJlYW0gbG9jayBhZ2Fpbi4gSW4KKwkJICogdGhpcyBjYXNlLCB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgc3RhcnQgd2FpdGluZyBmb3IgdGhlIG5leHQK KwkJICogc3RyZWFtaW5nIGJsb2NrIHdoZXJlYXMgdGhlcmUgaXMgYWN0dWFsbHkgYSBwZW5kaW5n IHN0cmVhbWluZyBibG9jaworCQkgKiBhdmFpbGFibGUuCisJCSAqLworCQlpZiAoIXdzaGFyZWQt PnBhX3dhaXRfZm9yX3N0cmVhbSkKKwkJeworCQkJd3NoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291 bnQrKzsKKwkJCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworCQkJYnJlYWs7CisJ CX0KKworCQlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKKwl9Cit9CisKKy8qCisg KiBEZWNyZW1lbnQgdGhlIG51bWJlciBvZiBwZW5kaW5nIHN0cmVhbWluZyBibG9ja3MgYW5kIHdh aXQgb24gdGhlIHN0cmVhbSBsb2NrCisgKiBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIGJsb2NrIGF2 YWlsYWJsZS4KKyAqLwordm9pZAorcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2soUGFyYWxs ZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCkKK3sKKwlBc3NlcnQoYW1fcGFyYWxsZWxfYXBw bHlfd29ya2VyKCkpOworCisJLyoKKwkgKiBTZXQgdGhlIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB3 ZSBhcmUgZ29pbmcgdG8gdGFrZSB0aGUgc3RyZWFtIGxvY2suCisJICovCisJU3BpbkxvY2tBY3F1 aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJQXNzZXJ0KCF3c2hhcmVkLT5wYV93YWl0X2Zvcl9zdHJl YW0pOworCXdzaGFyZWQtPnBhX3dhaXRfZm9yX3N0cmVhbSA9IHRydWU7CisJU3BpbkxvY2tSZWxl YXNlKCZ3c2hhcmVkLT5tdXRleCk7CisKKwlpZiAoLS13c2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9j b3VudCA9PSAwKQorCXsKKwkJcGFfbG9ja19zdHJlYW0od3NoYXJlZC0+eGlkLCBBY2Nlc3NTaGFy ZUxvY2spOworCQlwYV91bmxvY2tfc3RyZWFtKHdzaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwl9CisKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl3c2hhcmVkLT5w YV93YWl0X2Zvcl9zdHJlYW0gPSBmYWxzZTsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11 dGV4KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVj b2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDJj YzBhYzkuLjMzZmRiZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUu YwpAQCAtODIyLDEwICs4MjIsMTEgQEAgRGVjb2RlQWJvcnQoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJCWZvciAoaSA9IDA7IGkgPCBwYXJzZWQt Pm5zdWJ4YWN0czsgaSsrKQogCQl7CiAJCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVy LCBwYXJzZWQtPnN1YnhhY3RzW2ldLAotCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIp OworCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsIGFib3J0X3RpbWUpOwogCQl9CiAK LQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5k UmVjUHRyKTsKKwkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJl Y29yZC0+RW5kUmVjUHRyLAorCQkJCQkJICAgYWJvcnRfdGltZSk7CiAJfQogCiAJLyogdXBkYXRl IHRoZSBkZWNvZGluZyBzdGF0cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s YXVuY2hlci5jCmluZGV4IDczNTk0YzYuLjBmODJkZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTU1LDYgKzU1LDcgQEAKIC8qIEdVQyB2YXJpYWJs ZXMgKi8KIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJ bWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9wYXJhbGxl bF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOwogCiBMb2dpY2FsUmVwV29ya2Vy ICpNeUxvZ2ljYWxSZXBXb3JrZXIgPSBOVUxMOwogCkBAIC0xNTIsOCArMTUzLDEwIEBAIGdldF9z dWJzY3JpcHRpb25fbGlzdCh2b2lkKQogICoKICAqIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIGNs ZWFuaW5nIHVwIHRoZSBzaGFyZWQgbWVtb3J5IGluIGNhc2UgdGhlIHdvcmtlcgogICogZmFpbHMg dG8gYXR0YWNoLgorICoKKyAqIFJldHVybiB3aGV0aGVyIHRoZSBhdHRhY2ggd2FzIHN1Y2Nlc3Nm dWwuCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogV2FpdEZvclJlcGxpY2F0aW9uV29y a2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCQkJCQkgICB1aW50MTYgZ2Vu ZXJhdGlvbiwKIAkJCQkJCQkgICBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0x NjksMTEgKzE3MiwxMSBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJl cFdvcmtlciAqd29ya2VyLAogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ss IExXX1NIQVJFRCk7CiAKLQkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkOyBu byBuZWVkIHRvIGRvIGFueXRoaW5nLiAqLworCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFz IHN0YXJ0ZWQuIFJldHVybiBmYWxzZSBpZiBkaWVkLiAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNl IHx8IHdvcmtlci0+cHJvYykKIAkJewogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gd29ya2VyLT5pbl91c2U7CiAJCX0KIAogCQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTE4OCw3ICsxOTEsNyBAQCBX YWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAog CQkJaWYgKGdlbmVyYXRpb24gPT0gd29ya2VyLT5nZW5lcmF0aW9uKQogCQkJCWxvZ2ljYWxyZXBf d29ya2VyX2NsZWFudXAod29ya2VyKTsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtl ckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKIAkJLyoKQEAgLTIx MCw2ICsyMTMsOCBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdv cmtlciAqd29ya2VyLAogLyoKICAqIFdhbGtzIHRoZSB3b3JrZXJzIGFycmF5IGFuZCBzZWFyY2hl cyBmb3Igb25lIHRoYXQgbWF0Y2hlcyBnaXZlbgogICogc3Vic2NyaXB0aW9uIGlkIGFuZCByZWxp ZC4KKyAqCisgKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIG9yIHRhYmxlIHN5bmMgd29ya2VyLgogICovCiBMb2dpY2FsUmVwV29ya2VyICoKIGxvZ2lj YWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5n KQpAQCAtMjI0LDYgKzIyOSwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwg T2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKIAl7CiAJCUxvZ2ljYWxSZXBXb3JrZXIgKncg PSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKIAorCQkvKiBTa2lwIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMuICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQljb250aW51 ZTsKKwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09 IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpAQCAtMjYwLDEx ICsyNjksMTMgQEAgbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlf cnVubmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwg aWYgcG9zc2libGUuCisgKiBTdGFydCBuZXcgbG9naWNhbCByZXBsaWNhdGlvbiBiYWNrZ3JvdW5k IHdvcmtlciwgaWYgcG9zc2libGUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZh bHNlIG9uIGZhaWx1cmUuCiAgKi8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5j aChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAot CQkJCQkJIE9pZCByZWxpZCkKKwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2Vy X2RzbSkKIHsKIAlCYWNrZ3JvdW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxl ICpiZ3dfaGFuZGxlOwpAQCAtMjczLDcgKzI4NCwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVu Y2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwK IAlpbnQJCQlzbG90ID0gMDsKIAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWlu dAkJCW5zeW5jd29ya2VyczsKKwlpbnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0 YW1wVHogbm93OworCWJvb2wJCWlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA9IChzdWJ3b3JrZXJf ZHNtICE9IERTTV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2sgLSB0YWJsZXN5 bmMgd29ya2VyIGNhbm5vdCBiZSBhIHN1YndvcmtlciAqLworCUFzc2VydCghKGlzX3BhcmFsbGVs X2FwcGx5X3dvcmtlciAmJiBPaWRJc1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEs CiAJCQkoZXJybXNnX2ludGVybmFsKCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtl ciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiIsCkBAIC0zNTEsNyArMzY3LDI2IEBAIHJldHJ5Ogog CWlmIChPaWRJc1ZhbGlkKHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCW5wYXJhbGxlbGFwcGx5 d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KHN1YmlkKTsKKworCS8qCisJICog UmV0dXJuIGZhbHNlIGlmIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyByZWFj aGVkIHRoZSBsaW1pdAorCSAqIHBlciBzdWJzY3JpcHRpb24uCisJICovCisJaWYgKGlzX3BhcmFs bGVsX2FwcGx5X3dvcmtlciAmJgorCQlucGFyYWxsZWxhcHBseXdvcmtlcnMgPj0gbWF4X3BhcmFs bGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKKwl7CisJCUxXTG9ja1JlbGVhc2Uo TG9naWNhbFJlcFdvcmtlckxvY2spOworCisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJjb2RlKEVS UkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCisJCQkJIGVycm1zZygib3V0IG9m IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMiKSwKKwkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQg dG8gaW5jcmVhc2UgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbi4i KSkpOworCisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY1LDcgKzQwMCw3IEBAIHJl dHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCks CiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiks CiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3Jl cGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQog CiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zODAsNiArNDE1LDggQEAgcmV0 cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+ cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNl dCA9IE5VTEw7CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0gaXNfcGFyYWxsZWxfYXBwbHlf d29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5 ID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsK IAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NywxOSAr NDM0LDM0IEBAIHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047 CiAJYmd3LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwog CXNucHJpbnRmKGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsK LQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtl ck1haW4iKTsKKworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJn dy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWlu Iik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4s ICJBcHBseVdvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmlu dGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNl IGlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwg QkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29y a2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQogCQlzbnByaW50ZihiZ3cu Ymd3X25hbWUsIEJHV19NQVhMRU4sCi0JCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwotCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdX X01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CisJCQkJICJsb2dpY2FsIHJl cGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCisJ aWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd190eXBlLCBC R1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwllbHNl CisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJU OwogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0g SW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJ CW1lbWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUp KTsKKwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hh bmRsZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUg d29ya2VyIHNsb3QuICovCkBAIC00MjIsMzMgKzQ3NCwyMyBAQCByZXRyeToKIAkJCQkoZXJyY29k ZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91 dCBvZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJ CXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8K LQlXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3df aGFuZGxlKTsKKwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwg Z2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCi0gKiBTdG9wIHRoZSBsb2dpY2FsIHJl cGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueSwgYW5kIHdhaXQgdW50aWwK LSAqIGl0IGRldGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBz dG9wIHRoZSB3b3JrZXIgYW5kIHdhaXQgdW50aWwgaXQgZGV0YWNoZXMgZnJvbSB0aGUKKyAqIHNs b3QuCiAgKi8KLXZvaWQKLWxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVs aWQpCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdubykKIHsKLQlMb2dpY2FsUmVwV29ya2VyICp3b3Jr ZXI7CiAJdWludDE2CQlnZW5lcmF0aW9uOwogCi0JTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29y a2VyTG9jaywgTFdfU0hBUkVEKTsKLQotCXdvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQo c3ViaWQsIHJlbGlkLCBmYWxzZSk7Ci0KLQkvKiBObyB3b3JrZXIsIG5vdGhpbmcgdG8gZG8uICov Ci0JaWYgKCF3b3JrZXIpCi0JewotCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2Nr KTsKLQkJcmV0dXJuOwotCX0KKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoTG9naWNhbFJl cFdvcmtlckxvY2ssIExXX1NIQVJFRCkpOwogCiAJLyoKIAkgKiBSZW1lbWJlciB3aGljaCBnZW5l cmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3aGF0IHdlIHNlZQpAQCAt NDg2LDEwICs1MjgsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJl bGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIgaGFz IHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXIt PmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dpY2Fs UmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFzc2ln bmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpAQCAt NDk3LDcgKzUzNiw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVs aWQpCiAJfQogCiAJLyogTm93IHRlcm1pbmF0ZSB0aGUgd29ya2VyIC4uLiAqLwotCWtpbGwod29y a2VyLT5wcm9jLT5waWQsIFNJR1RFUk0pOworCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIHNpZ25v KTsKIAogCS8qIC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLiAqLwogCWZvciAoOzspCkBAIC01 MjMsNiArNTYyLDUzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVs aWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsK IAl9Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Ig c3ViaWQvcmVsaWQsIGlmIGFueS4KKyAqLwordm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcChP aWQgc3ViaWQsIE9pZCByZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlM V0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2Vy ID0gbG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKKworCWlmICh3 b3JrZXIpCisJeworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKwkJ bG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJR1RFUk0pOworCX0KKwor CUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogU3RvcCB0 aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY29ycmVzcG9uZGlu ZyB0byB0aGUKKyAqIGlucHV0IHNsb3QgbnVtYmVyLgorICoKKyAqIE5vZGUgdGhhdCB0aGUgZnVu Y3Rpb24gc2VuZHMgU0lHSU5UIGluc3RlYWQgb2YgU0lHVEVSTSB0byB0aGUgcGFyYWxsZWwgYXBw bHkKKyAqIHdvcmtlciBzbyB0aGF0IHRoZSB3b3JrZXIgZXhpdHMgY2xlYW5seS4KKyAqLwordm9p ZAorbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRp b24pCit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJQXNzZXJ0KHNsb3Rfbm8gPj0g MCAmJiBzbG90X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycyk7CisKKwlMV0xv Y2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0g JkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisJQXNzZXJ0KGlzUGFyYWxsZWxBcHBs eVdvcmtlcih3b3JrZXIpKTsKKworCS8qCisJICogT25seSBzdG9wIHRoZSB3b3JrZXIgaWYgdGhl IGdlbmVyYXRpb24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBhbGl2ZS4KKwkgKi8KKwlpZiAo d29ya2VyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYgd29ya2VyLT5wcm9jKQorCQlsb2dp Y2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lHSU5UKTsKIAogCUxXTG9ja1Jl bGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQpAQCAtNTk1LDExICs2ODEsNDAgQEAgbG9n aWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogfQogCiAvKgotICogRGV0YWNoIHRoZSB3 b3JrZXIgKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgorICogU3RvcCB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VycyBpZiBhbnksIGFuZCBkZXRhY2ggdGhlIGxlYWRlciBhcHBseSB3b3JrZXIK KyAqIChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KICAqLwogc3RhdGljIHZvaWQKIGxvZ2lj YWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qIFN0b3AgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMuICovCisJaWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwl7CisJCUxpc3QJ ICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIERldGFjaCBmcm9t IHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisJCSAq IGJlZm9yZSB0ZXJtaW5hdGluZyB0aGVtLiBUaGlzIHByZXZlbnRzIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIGZyb20KKwkJICogcmVjZWl2aW5nIHRoZSB3b3JrZXIgdGVybWluYXRpb24gbWVzc2Fn ZSBhbmQgc2VuZGluZyBpdCB0byBsb2dzIHdoZW4KKwkJICogdGhlIHNhbWUgaXMgYWxyZWFkeSBk b25lIGJ5IHRoZSBwYXJhbGxlbCB3b3JrZXIuCisJCSAqLworCQlwYV9kZXRhY2hfYWxsX2Vycm9y X21xKCk7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVE KTsKKworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2lj YWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlp ZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Bf aW50ZXJuYWwodywgU0lHVEVSTSk7CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBX b3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xv Y2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjIs NiArNzM3LDggQEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJ bnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlf bGVhZGVyX3BpZCA9IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNl OwogfQogCiAvKgpAQCAtNjUzLDYgKzc3MCwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQo aW50IGNvZGUsIERhdHVtIGFyZykKIAlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCAhPSBOVUxMKQogCQlGaWxlU2V0RGVsZXRlQWxsKE15TG9naWNhbFJlcFdvcmtlci0+c3Ry ZWFtX2ZpbGVzZXQpOwogCisJLyoKKwkgKiBTZXNzaW9uIGxldmVsIGxvY2tzIG1heSBiZSBhY3F1 aXJlZCBvdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwKKwkgKiBhcHBseSBtb2Rl IGFuZCB3aWxsIG5vdCBiZSByZWxlYXNlZCB3aGVuIHRoZSB3b3JrZXIgdGVybWluYXRlcywgc28K KwkgKiBtYW51YWxseSByZWxlYXNlIGFsbCBsb2NrcyBiZWZvcmUgdGhlIHdvcmtlciBleGl0cy4K KwkgKi8KKwlMb2NrUmVsZWFzZUFsbChERUZBVUxUX0xPQ0tNRVRIT0QsIHRydWUpOworCiAJQXBw bHlMYXVuY2hlcldha2V1cCgpOwogfQogCkBAIC02ODEsNiArODA1LDMzIEBAIGxvZ2ljYWxyZXBf c3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKQogfQogCiAvKgorICogQ291bnQgdGhlIG51bWJl ciBvZiByZWdpc3RlcmVkIChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBhcmFsbGVsIGFw cGx5CisgKiB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2FscmVw X3BhX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAw OworCisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkv KgorCSAqIFNjYW4gYWxsIGF0dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkgY291 bnRpbmcgdGhvc2Ugd2hpY2gKKwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJ ICovCisJZm9yIChpID0gMDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkr KykKKwl7CisJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tp XTsKKworCQlpZiAody0+c3ViaWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcp KQorCQkJcmVzKys7CisJfQorCisJcmV0dXJuIHJlczsKK30KKworLyoKICAqIEFwcGx5TGF1bmNo ZXJTaG1lbVNpemUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1 bmNoZXIgc2hhcmVkIG1lbW9yeQogICovCkBAIC04NjksNyArMTAyMCw3IEBAIEFwcGx5TGF1bmNo ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQkJCQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0 cnlfaW50ZXJ2YWw7CiAKIAkJCQkJbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwg c3ViLT5vaWQsIHN1Yi0+bmFtZSwKLQkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQp OworCQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElE KTsKIAkJCQl9CiAJCQl9CiAKQEAgLTk1Miw2ICsxMTAzLDEwIEBAIHBnX3N0YXRfZ2V0X3N1YnNj cmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29y a2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKKwkJLyogU2tpcCBpZiB0aGlzIGlz IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIo JndvcmtlcikpCisJCQljb250aW51ZTsKKwogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2MtPnBp ZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAppbmRleCA3NzM1ODNhLi4y NmJmYzBlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29u LmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQK QEAgLTEsNCArMSw1IEBACiBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCisgICdhcHBseXBhcmFs bGVsd29ya2VyLmMnLAogICAnZGVjb2RlLmMnLAogICAnbGF1bmNoZXIuYycsCiAgICdsb2dpY2Fs LmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4u YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggZjEzNGU0 NC4uOGIwODM3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9v cmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBA IC0xMDc1LDEyICsxMDc1LDIwIEBAIFJlcGxpY2F0aW9uT3JpZ2luRXhpdENsZWFudXAoaW50IGNv ZGUsIERhdHVtIGFyZykKICAqIGFycmF5IGRvZXNuJ3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3aGVu IGNhbGxpbmcKICAqIHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKCkuCiAgKgotICogT2J2aW91 c2x5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5k IHRoZSBjdXJyZW50Ci0gKiBjYWNoZWQgdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFmdGVy IHRoZSBwcmV2aW91cyB2YWx1ZSBpcyB0b3JuIGRvd24KLSAqIHdpdGggcmVwbG9yaWdpbl9zZXNz aW9uX3Jlc2V0KCkuCisgKiBOb3JtYWxseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2Fu IGV4aXN0IHBlciBwcm9jZXNzIHNvIHRoZSBjYWNoZWQKKyAqIHZhbHVlIGNhbiBvbmx5IGJlIHNl dCBhZ2FpbiBhZnRlciB0aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duIHdpdGgKKyAqIHJl cGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpLiBGb3IgdGhpcyBub3JtYWwgY2FzZSBwYXNzIGFjcXVp cmVkX2J5ID0gMAorICogKG1lYW5pbmcgdGhlIHNsb3QgaXMgbm90IGFsbG93ZWQgdG8gYmUgYWxy ZWFkeSBhY3F1aXJlZCBieSBhbm90aGVyIHByb2Nlc3MpLgorICoKKyAqIEhvd2V2ZXIsIHNvbWV0 aW1lcyBtdWx0aXBsZSBwcm9jZXNzZXMgY2FuIHNhZmVseSByZS11c2UgdGhlIHNhbWUgb3JpZ2lu IHNsb3QKKyAqIChmb3IgZXhhbXBsZSwgbXVsdGlwbGUgcGFyYWxsZWwgYXBwbHkgcHJvY2Vzc2Vz IGNhbiBzYWZlbHkgdXNlIHRoZSBzYW1lCisgKiBvcmlnaW4sIHByb3ZpZGVkIHRoZXkgbWFpbnRh aW4gY29tbWl0IG9yZGVyIGJ5IGFsbG93aW5nIG9ubHkgb25lIHByb2Nlc3MgdG8KKyAqIGNvbW1p dCBhdCBhIHRpbWUpLiBGb3IgdGhpcyBjYXNlIHRoZSBmaXJzdCBwcm9jZXNzIG11c3QgcGFzcyBh Y3F1aXJlZF9ieSA9CisgKiAwLCBhbmQgdGhlbiB0aGUgb3RoZXIgcHJvY2Vzc2VzIHNoYXJpbmcg dGhhdCBzYW1lIG9yaWdpbiBjYW4gcGFzcworICogYWNxdWlyZWRfYnkgPSBQSUQgb2YgdGhlIGZp cnN0IHByb2Nlc3MuCiAgKi8KIHZvaWQKLXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmln aW5JZCBub2RlKQorcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGlu dCBhY3F1aXJlZF9ieSkKIHsKIAlzdGF0aWMgYm9vbCByZWdpc3RlcmVkX2NsZWFudXA7CiAJaW50 CQkJaTsKQEAgLTExMjIsNyArMTEzMCw3IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBP cmlnaW5JZCBub2RlKQogCQlpZiAoY3Vyc3RhdGUtPnJvaWRlbnQgIT0gbm9kZSkKIAkJCWNvbnRp bnVlOwogCi0JCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwKQorCQllbHNlIGlm IChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCAmJiBhY3F1aXJlZF9ieSA9PSAwKQogCQl7CiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0UpLApA QCAtMTE1Myw3ICsxMTYxLDExIEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5J ZCBub2RlKQogCiAJQXNzZXJ0KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJvaWRlbnQgIT0g SW52YWxpZFJlcE9yaWdpbklkKTsKIAotCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVp cmVkX2J5ID0gTXlQcm9jUGlkOworCWlmIChhY3F1aXJlZF9ieSA9PSAwKQorCQlzZXNzaW9uX3Jl cGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9IE15UHJvY1BpZDsKKwllbHNlIGlmIChzZXNz aW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSAhPSBhY3F1aXJlZF9ieSkKKwkJZWxv ZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIHJlcGxpY2F0aW9uIHN0YXRlIHNsb3QgZm9yIHJlcGxp Y2F0aW9uIG9yaWdpbiB3aXRoIE9JRCAldSB3aGljaCB3YXMgYWNxdWlyZWQgYnkgJWQiLAorCQkJ IG5vZGUsIGFjcXVpcmVkX2J5KTsKIAogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25PcmlnaW5M b2NrKTsKIApAQCAtMTMzNyw3ICsxMzQ5LDcgQEAgcGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Np b25fc2V0dXAoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoKHRl eHQgKikgRGF0dW1HZXRQb2ludGVyKFBHX0dFVEFSR19EQVRVTSgwKSkpOwogCW9yaWdpbiA9IHJl cGxvcmlnaW5fYnlfbmFtZShuYW1lLCBmYWxzZSk7Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVw KG9yaWdpbik7CisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbiwgMCk7CiAKIAlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMKaW5kZXggZjVmMmJjMi4uNzIzYmE0NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTE2NCwxMCArMTE2NCwxNCBAQCBsb2dpY2FscmVw X3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwQ29tbWl0RGF0YSAq Y29tbWl0X2RhdGEpCiAvKgogICogV3JpdGUgU1RSRUFNIEFCT1JUIHRvIHRoZSBvdXRwdXQgc3Ry ZWFtLiBOb3RlIHRoYXQgeGlkIGFuZCBzdWJ4aWQgd2lsbCBiZQogICogc2FtZSBmb3IgdGhlIHRv cC1sZXZlbCB0cmFuc2FjdGlvbiBhYm9ydC4KKyAqCisgKiBJZiB3cml0ZV9hYm9ydF9pbmZvIGlz IHRydWUsIHNlbmQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhl cndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0 cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQg c3VieGlkKQorCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgYWJvcnRf bHNuLAorCQkJCQkJCSAgVGltZXN0YW1wVHogYWJvcnRfdGltZSwgYm9vbCB3cml0ZV9hYm9ydF9p bmZvKQogewogCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7 CiAKQEAgLTExNzYsMTkgKzExODAsNDAgQEAgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCS8qIHRyYW5zYWN0aW9uIElEICov CiAJcHFfc2VuZGludDMyKG91dCwgeGlkKTsKIAlwcV9zZW5kaW50MzIob3V0LCBzdWJ4aWQpOwor CisJaWYgKHdyaXRlX2Fib3J0X2luZm8pCisJeworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF9s c24pOworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF90aW1lKTsKKwl9CiB9CiAKIC8qCiAgKiBS ZWFkIFNUUkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgorICoKKyAqIElmIHJlYWRf YWJvcnRfaW5mbyBpcyB0cnVlLCByZWFkIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmll bGRzLAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lkCi1sb2dpY2FscmVwX3JlYWRfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkgVHJh bnNhY3Rpb25JZCAqc3VieGlkKQorbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIGluLAorCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAor CQkJCQkJCSBib29sIHJlYWRfYWJvcnRfaW5mbykKIHsKLQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7 CisJQXNzZXJ0KGFib3J0X2RhdGEpOworCisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50 KGluLCA0KTsKKwlhYm9ydF9kYXRhLT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwogCi0J KnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwg NCk7CisJaWYgKHJlYWRfYWJvcnRfaW5mbykKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9 IHBxX2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dldG1z Z2ludDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gSW52 YWxpZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAwOworCX0KIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1 ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMK aW5kZXggYjU2N2I4Yi4uOGQ1YmJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4NzAsNyArMjg3MCw4IEBAIFJlb3JkZXJCdWZm ZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAg KiBkaXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9ydChS ZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJ CSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwog CkBAIC0yODgxLDYgKzI4ODIsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwp CiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOwor CiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFi b3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA5NGU4MTNhLi5k YWVlYTZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK QEAgLTE0LDcgKzE0LDcgQEAKICAqCSAgVGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24g aXMgZG9uZSBzZXBhcmF0ZWx5IGZvciBlYWNoIHRhYmxlLAogICoJICBpbiBhIHNlcGFyYXRlIGFw cGx5IHdvcmtlciB0aGF0IG9ubHkgZmV0Y2hlcyB0aGUgaW5pdGlhbCBzbmFwc2hvdCBkYXRhCiAg KgkgIGZyb20gdGhlIHB1Ymxpc2hlciBhbmQgdGhlbiBzeW5jaHJvbml6ZXMgdGhlIHBvc2l0aW9u IGluIHRoZSBzdHJlYW0gd2l0aAotICoJICB0aGUgbWFpbiBhcHBseSB3b3JrZXIuCisgKgkgIHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyLgogICoKICAqCSAgVGhlcmUgYXJlIHNldmVyYWwgcmVhc29u cyBmb3IgZG9pbmcgdGhlIHN5bmNocm9uaXphdGlvbiB0aGlzIHdheToKICAqCSAgIC0gSXQgYWxs b3dzIHVzIHRvIHBhcmFsbGVsaXplIHRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uCkBA IC0xNTMsNyArMTUzLDcgQEAgZmluaXNoX3N5bmNfd29ya2VyKHZvaWQpCiAJCQkJCWdldF9yZWxf bmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAotCS8qIEZpbmQgdGhlIG1haW4gYXBwbHkgd29ya2VyIGFuZCBzaWduYWwgaXQu ICovCisJLyogRmluZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFsIGl0LiAqLwog CWxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBJbnZh bGlkT2lkKTsKIAogCS8qIFN0b3AgZ3JhY2VmdWxseSAqLwpAQCAtNjA5LDcgKzYwOSw4IEBAIHBy b2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJ CQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlw dGlvbi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJ CQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAor CQkJCQkJCQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3Rh cnRfdGltZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAgLTYzMCw2ICs2MzEsMTQgQEAgcHJvY2Vz c19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHZvaWQK IHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHsKKwkvKgor CSAqIFNraXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB0aGV5IG9ubHkgb3Bl cmF0ZSBvbiB0YWJsZXMgdGhhdAorCSAqIGFyZSBpbiBhIFJFQURZIHN0YXRlLiBTZWUgcGFfY2Fu X3N0YXJ0KCkgYW5kCisJICogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCgpLgorCSAqLwor CWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJaWYgKGFtX3Rh Ymxlc3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJy ZW50X2xzbik7CiAJZWxzZQpAQCAtMTI0Nyw3ICsxMjU2LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJs ZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAogCS8qCiAJICogSGVyZSB3ZSB1 c2UgdGhlIHNsb3QgbmFtZSBpbnN0ZWFkIG9mIHRoZSBzdWJzY3JpcHRpb24gbmFtZSBhcyB0aGUK LQkgKiBhcHBsaWNhdGlvbl9uYW1lLCBzbyB0aGF0IGl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBt YWluIGFwcGx5IHdvcmtlciwKKwkgKiBhcHBsaWNhdGlvbl9uYW1lLCBzbyB0aGF0IGl0IGlzIGRp ZmZlcmVudCBmcm9tIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLAogCSAqIHNvIHRoYXQgc3luY2hy b25vdXMgcmVwbGljYXRpb24gY2FuIGRpc3Rpbmd1aXNoIHRoZW0uCiAJICovCiAJTG9nUmVwV29y a2VyV2FsUmN2Q29ubiA9CkBAIC0xMjk1LDcgKzEzMDQsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxl U3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkgKiB0aW1lIHRoaXMgdGFibGVz eW5jIHdhcyBsYXVuY2hlZC4KIAkJICovCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1l KG9yaWdpbm5hbWUsIGZhbHNlKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlk KTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdp bl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQkqb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9y aWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAKQEAgLTE0MDYsNyArMTQxNSw3IEBA IExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJ CQkJCQkgICB0cnVlIC8qIGdvIGJhY2t3YXJkICovICwgdHJ1ZSAvKiBXQUwgbG9nICovICk7CiAJ CVVubG9ja1JlbGF0aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25JZCwgUm93RXhjbHVz aXZlTG9jayk7CiAKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVw bG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9u X29yaWdpbiA9IG9yaWdpbmlkOwogCX0KIAllbHNlCkBAIC0xNDYxLDggKzE0NzAsOCBAQCBjb3B5 X3RhYmxlX2RvbmU6CiAJU3BpbkxvY2tSZWxlYXNlKCZNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbG11 dGV4KTsKIAogCS8qCi0JICogRmluYWxseSwgd2FpdCB1bnRpbCB0aGUgbWFpbiBhcHBseSB3b3Jr ZXIgdGVsbHMgdXMgdG8gY2F0Y2ggdXAgYW5kIHRoZW4KLQkgKiByZXR1cm4gdG8gbGV0IExvZ2lj YWxSZXBBcHBseUxvb3AgZG8gaXQuCisJICogRmluYWxseSwgd2FpdCB1bnRpbCB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciB0ZWxscyB1cyB0byBjYXRjaCB1cCBhbmQKKwkgKiB0aGVuIHJldHVybiB0 byBsZXQgTG9naWNhbFJlcEFwcGx5TG9vcCBkbyBpdC4KIAkgKi8KIAl3YWl0X2Zvcl93b3JrZXJf c3RhdGVfY2hhbmdlKFNVQlJFTF9TVEFURV9DQVRDSFVQKTsKIAlyZXR1cm4gc2xvdG5hbWU7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA5Njc3MmU0Li4zMjcw ZDc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIyLDgg KzIyLDEyIEBACiAgKiBTVFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICogU3RyZWFtZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlvbnMgZXhjZWVk aW5nIGEgbWVtb3J5IGxpbWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBub3QgYXBwbGllZCBp bW1lZGlhdGVseSwgYnV0IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRlbXBv cmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0 IGFycml2ZXMuCisgKiB1cHN0cmVhbSkgYXJlIGFwcGxpZWQgdXNpbmcgb25lIG9mIHR3byBhcHBy b2FjaGVzOgorICoKKyAqIDEpIFdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hl biB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAqCisgKiBUaGlzIGFwcHJvYWNoIGlzIHVzZWQg d2hlbiB0aGUgdXNlciBoYXMgc2V0IHRoZSBzdWJzY3JpcHRpb24ncyBzdHJlYW1pbmcKKyAqIG9w dGlvbiBhcyBvbi4KICAqCiAgKiBVbmxpa2UgdGhlIHJlZ3VsYXIgKG5vbi1zdHJlYW1lZCkgY2Fz ZSwgaGFuZGxpbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGhhcwogICogdG8gaGFuZGxlIGFib3J0 cyBvZiBib3RoIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBhbmQgc3VidHJhbnNhY3Rpb25zLiBU aGlzCkBAIC01MCw2ICs1NCwxMiBAQAogICogdGhlIGZpbGUgd2UgZGVzaXJlZCBhY3Jvc3MgbXVs dGlwbGUgc3RyZWFtLW9wZW4gY2FsbHMgZm9yIHRoZSBzYW1lCiAgKiB0cmFuc2FjdGlvbi4KICAq CisgKiAyKSBQYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICoKKyAqIFRoaXMgYXBwcm9hY2ggaXMg dXNlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZXQgdGhlIHN1YnNjcmlwdGlvbidzIHN0cmVhbWluZwor ICogb3B0aW9uIGFzIHBhcmFsbGVsLiBTZWUgbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMg Zm9yIGluZm9ybWF0aW9uIGFib3V0CisgKiB0aGlzIGFwcHJvYWNoLgorICoKICAqIFRXT19QSEFT RSBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFR3byBwaGFzZSB0 cmFuc2FjdGlvbnMgYXJlIHJlcGxheWVkIGF0IHByZXBhcmUgYW5kIHRoZW4gY29tbWl0dGVkIG9y CkBAIC0xNTAsNiArMTYwLDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmgiCiAjaW5jbHVkZSAiZnVuY2Fw aS5oIgorI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQu aCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgi CkBAIC0yMzMsNyArMjQ0LDM5IEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0Fy ZwogCWNoYXIJICAgKm9yaWdpbl9uYW1lOwogfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CiAKLXN0 YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KKy8q CisgKiBXaGF0IGFjdGlvbiB0byB0YWtlIGZvciB0aGUgdHJhbnNhY3Rpb24uCisgKgorICogVFJB TlNfTEVBREVSX0FQUExZOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMgb2YgdGhlCisgKiB0cmFuc2FjdGlvbiBh cmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29ya2VyLgorICoKKyAqIFRSQU5TX0xFQURFUl9T RVJJQUxJWkU6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jCisgKiB3b3JrZXIuIENoYW5nZXMgYXJlIHdyaXR0 ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgd2hlbiB0aGUKKyAqIGZpbmFs IGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgor ICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgYW5kIG5lZWQgdG8gc2VuZAorICogdGhlIGNoYW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4KKyAqCisgKiBUUkFOU19QQVJBTExFTF9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1l YW5zIHRoYXQgd2UgYXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMg b2YKKyAqIHRoZSB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29ya2Vy LgorICovCit0eXBlZGVmIGVudW0KK3sKKwkvKiBUaGUgYWN0aW9uIGZvciBub24tc3RyZWFtaW5n IHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfQVBQTFksCisKKwkvKiBBY3Rpb25zIGZv ciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9TRVJJQUxJWkUsCisJ VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwsCisJVFJBTlNfUEFSQUxMRUxfQVBQTFkKK30g VHJhbnNBcHBseUFjdGlvbjsKKworLyogZXJyY29udGV4dCB0cmFja2VyICovCitBcHBseUVycm9y Q2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KIHsKIAkuY29tbWFuZCA9IDAs CiAJLnJlbCA9IE5VTEwsCkBAIC0yNDMsNyArMjg2LDkgQEAgc3RhdGljIEFwcGx5RXJyb3JDYWxs YmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogCS5vcmlnaW5fbmFtZSA9IE5VTEws CiB9OwogCi1zdGF0aWMgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsK K0Vycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gTlVMTDsK KworTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRl eHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNjMsMTYgKzMwOCwyNSBAQCBzdGF0aWMgYm9vbCBp bl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwogc3RhdGljIFRyYW5zYWN0aW9uSWQgc3Ry ZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAvKgorICogVGhlIG51bWJlciBvZiBj aGFuZ2VzIGFwcGxpZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGR1cmluZyBvbmUgc3RyZWFt aW5nCisgKiBibG9jay4KKyAqLworc3RhdGljIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNoYW5n ZXMgPSAwOworCisvKgogICogV2UgZW5hYmxlIHNraXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlv biBjaGFuZ2VzIChJTlNFUlQsIFVQREFURSwgZXRjLikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9u IGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNr aXBsc24uCiAgKiBPbmNlIHdlIHN0YXJ0IHNraXBwaW5nIGNoYW5nZXMsIHdlIGRvbid0IHN0b3Ag aXQgdW50aWwgd2Ugc2tpcCBhbGwgY2hhbmdlcyBvZgogICogdGhlIHRyYW5zYWN0aW9uIGV2ZW4g aWYgcGdfc3Vic2NyaXB0aW9uIGlzIHVwZGF0ZWQgYW5kIE15U3Vic2NyaXB0aW9uLT5za2lwbHNu Ci0gKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiBjYXNlcywgd2UKLSAqIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9v bGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKKyAqIGdldHMg Y2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIGNhc2VzIChzdHJlYW1pbmcgPSBvbiksCisgKiB3ZSBkb24ndCBza2lwIHJlY2VpdmluZyBh bmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CiAg KiB0byBza2lwIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIHdoZW4gc3RhcnRpbmcgdG8gYXBwbHkgY2hh bmdlcy4gVGhlIHN1YnNraXBsc24gaXMKICAqIGNsZWFyZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNr aXBwaW5nIHRoZSB0cmFuc2FjdGlvbiBvciBhcHBseWluZyBub24tZW1wdHkKICAqIHRyYW5zYWN0 aW9uLiBUaGUgbGF0dGVyIHByZXZlbnRzIHRoZSBtaXN0YWtlbmx5IHNwZWNpZmllZCBzdWJza2lw bHNuIGZyb20KLSAqIGJlaW5nIGxlZnQuCisgKiBiZWluZyBsZWZ0LiBOb3RlIHRoYXQgd2UgY2Fu bm90IHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgd2hlbiB1c2luZworICogcGFyYWxs ZWwgYXBwbHkgd29ya2VycyBiZWNhdXNlIHdlIGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04gYmVm b3JlIGFwcGx5aW5nCisgKiB0aGUgY2hhbmdlcy4gU28sIHdlIGRvbid0IHN0YXJ0IHBhcmFsbGVs IGFwcGx5IHdvcmtlciB3aGVuIGZpbmlzaCBMU04gaXMgc2V0CisgKiBieSB0aGUgdXNlci4KICAq Lwogc3RhdGljIFhMb2dSZWNQdHIgc2tpcF94YWN0X2ZpbmlzaF9sc24gPSBJbnZhbGlkWExvZ1Jl Y1B0cjsKICNkZWZpbmUgaXNfc2tpcHBpbmdfY2hhbmdlcygpICh1bmxpa2VseSghWExvZ1JlY1B0 cklzSW52YWxpZChza2lwX3hhY3RfZmluaXNoX2xzbikpKQpAQCAtMzIwLDE1ICszNzQsMTAgQEAg c3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRf ZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBs eSk7CiAKLXN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3Rl X2xzbik7Ci0KLXN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7Citz dGF0aWMgdm9pZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhM b2dSZWNQdHIgbG9jYWxfbHNuKTsKIAogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFu ZEV4aXQodm9pZCk7CiAKLS8qIHByb3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29t bWl0ICovCi1zdGF0aWMgdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0 aWMgdm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRh ICpjb21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFs KEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJl bGluZm8sCkBAIC0zNjEsMTAgKzQxMCwyNiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2No YW5nZXModm9pZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExv Z1JlY1B0ciBmaW5pc2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxs YmFjayAqLwotc3RhdGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0 YXRpYyBpbmxpbmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRf dHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJ CSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKTsKKworLyoKKyAqIFJldHVybiB0aGUg bmFtZSBvZiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKi8KK3N0YXRpYyBjb25z dCBjaGFyICoKK2dldF93b3JrZXJfbmFtZSh2b2lkKQoreworCWlmIChhbV90YWJsZXN5bmNfd29y a2VyKCkpCisJCXJldHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXph dGlvbiB3b3JrZXIiKTsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJ cmV0dXJuIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIik7CisJ ZWxzZQorCQlyZXR1cm4gXygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKTsKK30K KwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUgc3Vic2NyaXB0aW9uLgogICoK QEAgLTM5NCwxOSArNDU5LDQzIEBAIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAo T2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogICoKICAqIFRoaXMgaXMgbWFpbmx5IG5lZWRlZCBmb3Ig aW5pdGlhbCByZWxhdGlvbiBkYXRhIHN5bmMgYXMgdGhhdCBydW5zIGluCiAgKiBzZXBhcmF0ZSB3 b3JrZXIgcHJvY2VzcyBydW5uaW5nIGluIHBhcmFsbGVsIGFuZCB3ZSBuZWVkIHNvbWUgd2F5IHRv IHNraXAKLSAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciBkdXJpbmcg dGhlIHN5bmMgb2YgYSB0YWJsZS4KKyAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgogICoKICAqIE5vdGUgd2UgbmVl ZCB0byBkbyBzbWFsbGVyIG9yIGVxdWFscyBjb21wYXJpc29uIGZvciBTWU5DRE9ORSBzdGF0ZSBi ZWNhdXNlCiAgKiBpdCBtaWdodCBob2xkIHBvc2l0aW9uIG9mIGVuZCBvZiBpbml0aWFsIHNsb3Qg Y29uc2lzdGVudCBwb2ludCBXQUwKICAqIHJlY29yZCArIDEgKGllIHN0YXJ0IG9mIG5leHQgcmVj b3JkKSBhbmQgbmV4dCByZWNvcmQgY2FuIGJlIENPTU1JVCBvZgogICogdHJhbnNhY3Rpb24gd2Ug YXJlIG5vdyBwcm9jZXNzaW5nICh3aGljaCBpcyB3aGF0IHdlIHNldCByZW1vdGVfZmluYWxfbHNu CiAgKiB0byBpbiBhcHBseV9oYW5kbGVfYmVnaW4pLgorICoKKyAqIE5vdGUgdGhhdCBmb3Igc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIHRoZSBwYXJhbGxl bAorICogYXBwbHkgd29ya2VyLCB3ZSBkaXNhbGxvdyBhcHBseWluZyBjaGFuZ2VzIGlmIHRoZSB0 YXJnZXQgdGFibGUgaW4gdGhlCisgKiBzdWJzY3JpcHRpb24gaXMgbm90IGluIHRoZSBSRUFEWSBz dGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8KKyAqIGFwcGx5IHRoZSBj aGFuZ2UgYXMgd2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4KKyAq CisgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyBpbiBwYV9jYW5fc3RhcnQoKSBiZWZvcmUgYXNz aWduaW5nIHRoZQorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBwYXJhbGxlbCB3b3Jr ZXIsIGJ1dCBpdCBhbHNvIG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhlcmUgYmVjYXVzZSBpZiB0 aGUgdXNlciBleGVjdXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gKKyAqIFBVQkxJ Q0FUSU9OIGluIHBhcmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBhZGRlZCB0byBwZ19zdWJz Y3JpcHRpb25fcmVsCisgKiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5zYWN0aW9uLgogICovCiBz dGF0aWMgYm9vbAogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2FsUmVwUmVsTWFw RW50cnkgKnJlbCkKIHsKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlyZXR1cm4gTXlM b2dpY2FsUmVwV29ya2VyLT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lkOworCWVsc2UgaWYgKGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJLyogV2UgZG9uJ3Qgc3luY2hyb25pemUg cmVsJ3MgdGhhdCBhcmUgaW4gdW5rbm93biBzdGF0ZS4gKi8KKwkJaWYgKHJlbC0+c3RhdGUgIT0g U1VCUkVMX1NUQVRFX1JFQURZICYmCisJCQlyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9VTktO T1dOKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3Rv cCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDYW5u b3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9ucyB1c2luZyBwYXJhbGxl bCBhcHBseSB3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC4i KSkpOworCisJCXJldHVybiByZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWTsKKwl9CiAJ ZWxzZQogCQlyZXR1cm4gKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZIHx8CiAJCQkJ KHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1NZTkNET05FICYmCkBAIC00NTIsNDMgKzU0MSw4 OCBAQCBlbmRfcmVwbGljYXRpb25fc3RlcCh2b2lkKQogfQogCiAvKgotICogSGFuZGxlIHN0cmVh bWVkIHRyYW5zYWN0aW9ucy4KKyAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgZm9yIGJv dGggdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZQorICogcGFyYWxsZWwgYXBwbHkgd29y a2Vycy4KICAqCi0gKiBJZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Yg c3RyZWFtZWQgdHJhbnNhY3Rpb24pLCB3ZQotICogc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmls ZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKyAqIEluIHRoZSBzdHJlYW1p bmcgY2FzZSAocmVjZWl2aW5nIGEgYmxvY2sgb2YgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwg Zm9yCisgKiBzZXJpYWxpemUgbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3Ig dGhlIHByb3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgcGFyYWxsZWwgbW9k ZSwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBzZW5kIHRoZQorICogY2hhbmdlcyB0byBw YXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwg ZGVmaW5lCisgKiBzYXZlcG9pbnRzIGlmIG5lZWRlZC4gKExPR0lDQUxfUkVQX01TR19SRUxBVElP TiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRQorICogbWVzc2FnZXMgd2lsbCBiZSBhcHBsaWVkIGJ5 IGJvdGggbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMp LgogICoKLSAqIFJldHVybnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBv dGhlcndpc2UgKHJlZ3VsYXIgbW9kZSkuCisgKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRy YW5zYWN0aW9ucyAod2hlbiB0aGUgY2hhbmdlIGlzIGVpdGhlciBzZXJpYWxpemVkCisgKiB0byBm aWxlIG9yIHNlbnQgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyKSwgZmFsc2Ugb3RoZXJ3aXNlIChy ZWd1bGFyIG1vZGUgb3IKKyAqIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIpLgorICoKKyAqIEV4Y2VwdGlvbjogSWYgdGhlIG1lc3NhZ2UgYmVpbmcgcHJvY2Vz c2VkIGlzIExPR0lDQUxfUkVQX01TR19SRUxBVElPTgorICogb3IgTE9HSUNBTF9SRVBfTVNHX1RZ UEUsIHJldHVybiBmYWxzZSBldmVuIGlmIHRoZSBtZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQKKyAq IHRvIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgogICovCiBzdGF0aWMgYm9vbAogaGFuZGxlX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBz KQogewotCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQ7CisJ UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlf YWN0aW9uOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihz dHJlYW1feGlkLCAmd2luZm8pOwogCiAJLyogbm90IGluIHN0cmVhbWluZyBtb2RlICovCi0JaWYg KCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoYXBwbHlfYWN0aW9uID09IFRSQU5TX0xF QURFUl9BUFBMWSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxM KTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCiAJLyoKIAkg KiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhlIGZpcnN0 IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4KIAkgKi8KLQl4aWQgPSBw cV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CiAK LQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYgKCFUcmFuc2FjdGlvbklkSXNW YWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFsaWQgdHJh bnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24iKSkpOwogCi0J LyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJl KS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJ eworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlBc3NlcnQoc3RyZWFtX2ZkKTsK KworCQkJLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5 IHRoZXJlKS4gKi8KKwkJCXN1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQpOworCisJCQkvKiBX cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KKwkJCXN0cmVhbV93cml0ZV9j aGFuZ2UoYWN0aW9uLCBzKTsKKwkJCXJldHVybiB0cnVlOworCisJCWNhc2UgVFJBTlNfTEVBREVS X1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOwogCi0JLyogd3JpdGUgdGhlIGNo YW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCi0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24s IHMpOworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgor CQkJICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBkb2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9u L3R5cGUgdXBkYXRlCisJCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbGVhZGVyIGFw cGx5IHdvcmtlci4gU2VlIGZ1bmN0aW9uCisJCQkgKiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgor CQkJICovCisJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gJiYK KwkJCQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19UWVBFKTsKIAotCXJldHVybiB0cnVlOwor CQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2Vz ICs9IDE7CisKKwkJCS8qIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGlmIG5lZWRl ZC4gKi8KKwkJCXBhX3N0YXJ0X3N1YnRyYW5zKGN1cnJlbnRfeGlkLCBzdHJlYW1feGlkKTsKKwkJ CXJldHVybiBmYWxzZTsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCXJldHVy biBmYWxzZTsJCS8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyAqLworCX0KIH0KIAogLyoKQEAg LTkyNiw4ICsxMDYwLDExIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKExvZ2ljYWxS ZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdpblRyYW5zYWN0aW9uQmxv Y2sgaXMgbmVjZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKIAkgKiBj YWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4KIAkgKi8KLQlC ZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyog Q29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwlpZiAoIUlzVHJhbnNh Y3Rpb25CbG9jaygpKQorCXsKKwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21t YW5kLiAqLworCX0KIAogCS8qCiAJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVz dGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCkBAIC05NzQsNyArMTExMSw3IEBA IGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9z aXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBh cmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAKIAlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKIApAQCAtOTk2LDYgKzExMzMsMTIgQEAgYXBwbHlfaGFuZGxlX3ByZXBh cmUoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9mIGEg cHJldmlvdXNseSBQUkVQQVJFRCB0cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9u J3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBh CisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5 IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3Ry ZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGlu IHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8K KyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0 aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX2Nv bW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCkBAIC0xMDI1LDcgKzExNjgsNyBAQCBhcHBseV9o YW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9z aXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBh cmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0 aW9uID0gZmFsc2U7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3lu Y2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwpAQCAtMTAzOSw2ICsxMTgyLDEyIEBAIGFwcGx5X2hh bmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgUk9M TEJBQ0sgUFJFUEFSRUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgorICoK KyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rp b24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSW4gdGhhdCBj YXNlLCB3ZSBoYXZlIGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICogdG8gZmluaXNo IGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFsbCB0 aGUKKyAqIG9wZXJhdGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGluIHRo ZSBzdWJzY3JpYmVyLCBzbyBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY2F1c2Ug ZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2 b2lkCiBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTA4 MCw3ICsxMjI5LDcgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8g cykKIAogCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlv bihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9u KHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWlu X3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRo YXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTEwOTIsMTUgKzEy NDEsMTMgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAog LyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFy dHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsg dGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5k bGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4 bkRhdGEgcHJlcGFyZV9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlU cmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbikKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExMTYsMjQgKzEyNjMsODQgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFt X3ByZXBhcmUocywgJnByZXBhcmVfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFj dChwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhE RUJVRzEsICJyZWNlaXZlZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHBy ZXBhcmVfZGF0YS54aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9h Y3Rpb24ocHJlcGFyZV9kYXRhLnhpZCwgJndpbmZvKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNw b29sZWQgb3BlcmF0aW9ucy4gKi8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0 YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24p CisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBNYXJrIHRoZSB0cmFu c2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KLQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgm cHJlcGFyZV9kYXRhKTsKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2Vy aWFsaXplZCB0byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRp b25zLgorCQkJICovCisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQs IHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlf aGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CiAKLQlwZ3N0YXRfcmVwb3J0 X3N0YXQoZmFsc2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlzdG9yZV9m bHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCQlzdG9yZV9mbHVzaF9wb3Np dGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCi0JaW5fcmVt b3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKKworCQkJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQg c3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJ CSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGNhbgorCQkJICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4K KwkJCSAqLworCQkJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOworCisJCQkvKiBTZW5kIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8gdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVu LCBzLT5kYXRhKTsKKworCQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZp bmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3 aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQK KwkJCSAqIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2lu Zm8pOworCisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgd2lu Zm8tPnNoYXJlZC0+bGFzdF9jb21taXRfZW5kKTsKKworCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2Vy KHdpbmZvLCBwcmVwYXJlX2RhdGEueGlkKTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0g ZmFsc2U7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJYmVn aW5fcmVwbGljYXRpb25fc3RlcCgpOwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlh bGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVz KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCQkJLyogTWFy ayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFy ZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsK KworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCU15UGFyYWxsZWxTaGFyZWQt Pmxhc3RfY29tbWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCisJCQlwYV9zZXRfeGFjdF9z dGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91 bmxvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2sp OworCisJCQlwYV9yZXNldF9zdWJ0cmFucygpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVk IHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBQUkVQQVJFIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJ CWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3Jl cG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWlu ZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhw cmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0xMTc3LDIxICsxMzg0LDE0IEBAIHN0YXRpYyB2b2lk CiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIHsKIAlib29sCQlmaXJz dF9zZWdtZW50OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5 QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiks CiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikp KTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMg dHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5s ZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBi ZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRo ZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2Vy aWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8K LQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMg d2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTIwNSwzNiArMTQwNSw5NSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hh Y3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCi0JLyoKLQkgKiBJbml0aWFsaXpl IHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxs IGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNy ZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRo ZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0JICogdHJhbnNhY3Rpb24g YW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25z LgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhl IHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdp bGwgZXZlciBiZSB1c2VkLgotCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9m aWxlc2V0ID09IE5VTEwpCisJLyogVHJ5IHRvIGFsbG9jYXRlIGEgd29ya2VyIGZvciB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCWlmIChmaXJzdF9zZWdtZW50KQorCQlwYV9hbGxvY2F0 ZV93b3JrZXIoc3RyZWFtX3hpZCk7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25f YXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5X2FjdGlv bikKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJ QUxJWkU6CiAKLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7 CisJCQkvKgorCQkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMg dHJhbnNhY3Rpb24gd2lsbCBiZQorCQkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0gc3RvcCB1 bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCisJCQkgKiB3aGljaCBjYXNlIGl0IHdp bGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZQorCQkJICogbWVzc2FnZXMu IFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwKKwkJCSAq IHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZv LgorCQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJTXlMb2dpY2FsUmVw V29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxl U2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJCS8qCisJCQkg KiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHll dC4gVGhpcworCQkJICogd2lsbCBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRo ZSB3b3JrZXIgc28gY3JlYXRlIGl0CisJCQkgKiBpbiBhIHBlcm1hbmVudCBjb250ZXh0LiBXZSBj cmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdAorCQkJICogc3RyZWFtaW5nIG1lc3NhZ2UgZnJv bSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzCisJCQkgKiBhbmQgb3Ro ZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVhdGUgYQorCQkJICog ZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdv bid0IGJlCisJCQkgKiBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJCQkgKi8KKwkJ CWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKKwkJCXsKKwkJCQlNZW1v cnlDb250ZXh0IG9sZGN0eDsKIAotCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKLQl9 CisJCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKLQkv KiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29w ZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdt ZW50KTsKKwkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNp emVvZihGaWxlU2V0KSk7CisJCQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCk7CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3Bl biBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1Ynhh Y3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQkJfQogCi0JcGdzdGF0X3JlcG9ydF9h Y3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKKwkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUg Zm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOwogCi0JZW5kX3JlcGxp Y2F0aW9uX3N0ZXAoKTsKKwkJCS8qIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBv cGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZS4gKi8KKwkJCWlmICghZmlyc3Rfc2VnbWVudCkKKwkJ CQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlk KTsKKworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJB TlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgor CQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyCisJCQkgKiBjYW4gY29udGludWUgdG8gcmVjZWl2ZSBjaGFuZ2VzLgorCQkJ ICovCisJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+ c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKgorCQkJICogSW5jcmVt ZW50IHRoZSBudW1iZXIgb2Ygc3RyZWFtaW5nIGJsb2NrcyB3YWl0aW5nIHRvIGJlCisJCQkgKiBw cm9jZXNzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9pbmNyZW1l bnRfc3RyZWFtX2Jsb2NrKHdpbmZvLT5zaGFyZWQpOworCisJCQlwYV9zZW5kX2RhdGEod2luZm8s IHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtl cih3aW5mbyk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJ aWYgKGZpcnN0X3NlZ21lbnQpCisJCQl7CisJCQkJLyogSG9sZCB0aGUgbG9jayB1bnRpbCB0aGUg ZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV9sb2NrX3RyYW5zYWN0aW9uKE15UGFy YWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQlwYV9zZXRfeGFjdF9zdGF0 ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKwkJCX0KKworCQkJ cGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJ CQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0 eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKIH0KIAogLyoKQEAgLTEyNDMsNTggKzE1MDIsOTcgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiBzdGF0aWMgdm9pZAogYXBw bHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIHsKKwlQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKIAlpZiAo IWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJF QU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKIAotCS8qCi0JICogQ2xv c2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3Jt YXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgot CSAqLwotCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJl YW1feGlkKTsKLQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFu c2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIAotCS8qIFdlIG11c3Qg YmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9u U3RhdGUoKSk7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURF Ul9TRVJJQUxJWkU6CiAKLQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8K LQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8qCisJCQkgKiBDbG9zZSB0aGUgZmls ZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZQorCQkJICogaW5mb3JtYXRp b24gYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkJCSAqLwor CQkJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94 aWQpOworCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9u ID0gZmFsc2U7CisJCQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUg Ki8KKwkJCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKLQkvKiBSZXNldCBwZXItc3Ry ZWFtIGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRl eHQpOworCQkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0 ICovCisJCQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCisJ CQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisK KwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7 CisKKwkJCS8qCisJCQkgKiBMb2NrIGJlZm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RPUCBtZXNz YWdlIHNvIHRoYXQgdGhlIGxlYWRlcgorCQkJICogY2FuIGhvbGQgdGhlIGxvY2sgZmlyc3QgYW5k IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCB3YWl0CisJCQkgKiBmb3IgbGVhZGVyIHRv IHJlbGVhc2UgdGhlIGxvY2suIFNlZSBMb2NraW5nIENvbnNpZGVyYXRpb25zIGF0b3AKKwkJCSAq IGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KKwkJCSAqLworCQkJcGFfbG9ja19zdHJlYW0od2luZm8t PnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfc2VuZF9kYXRhKHdp bmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihO VUxMKTsKKworCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQllbG9nKERFQlVHMSwg ImFwcGxpZWQgJXUgY2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rIiwKKwkJCQkgcGFyYWxs ZWxfc3RyZWFtX25jaGFuZ2VzKTsKKworCQkJLyoKKwkJCSAqIEJ5IHRoZSB0aW1lIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBpcyBwcm9jZXNzaW5nIHRoZSBjaGFuZ2VzIGluCisJCQkgKiB0aGUgY3Vy cmVudCBzdHJlYW1pbmcgYmxvY2ssIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG1heSBoYXZlCisJ CQkgKiBzZW50IG11bHRpcGxlIHN0cmVhbWluZyBibG9ja3MuIFRoaXMgY2FuIGxlYWQgdG8gcGFy YWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciBzdGFydCB3YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBh cmUgbW9yZSBjaHVuayBvZiBzdHJlYW1zCisJCQkgKiBpbiB0aGUgcXVldWUuIFNvLCB0cnkgdG8g bG9jayBvbmx5IGlmIHRoZXJlIGlzIG5vIG1lc3NhZ2UgbGVmdAorCQkJICogaW4gdGhlIHF1ZXVl LiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29y a2VyLmMuCisJCQkgKi8KKwkJCXBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKE15UGFyYWxs ZWxTaGFyZWQpOworCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5T QUNUSU9OLCBOVUxMKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2Up OworCQkJYnJlYWs7CisJfQorCisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAot CXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1l c3NhZ2UuCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rp b24gd2FzIHNlcmlhbGl6ZWQgdG8gZmlsZS4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRs ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorc3RyZWFtX2Fib3J0X2ludGVybmFsKFRyYW5z YWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlvbklkIHhp ZDsKLQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlv bikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xB VElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91 dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4 aWQsICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBp dCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0 aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQp Ci0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQ dHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4 aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTMxOCw4ICsxNjE2LDYgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJ CWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9y ZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHhpZCk7CkBAIC0xMzQ0LDcgKzE2NDAsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRf cmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQly ZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC0x MzY3LDYgKzE2NjIsMTEyIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBz KQogCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKIAl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0 YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlU cmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3Ry ZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv OworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCWJvb2wJCXRvcGxldmVsX3hhY3Q7 CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJu YWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyog V2UgcmVjZWl2ZSBhYm9ydCBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gd2UgY2FuIGFwcGx5IGluIHBh cmFsbGVsLiAqLworCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJmFib3J0X2RhdGEs CisJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5KTsKKworCXhpZCA9 IGFib3J0X2RhdGEueGlkOworCXN1YnhpZCA9IGFib3J0X2RhdGEuc3VieGlkOworCXRvcGxldmVs X3hhY3QgPSAoeGlkID09IHN1YnhpZCk7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHN1YnhpZCwgYWJvcnRfZGF0YS5hYm9ydF9sc24pOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3Ry YW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5X2Fj dGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKworCQkJLyoKKwkJCSAq IFdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhh cyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisJCQkgKi8KKwkJCXN0cmVhbV9hYm9y dF9pbnRlcm5hbCh4aWQsIHN1YnhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURF Ul9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFVu bG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGNhbgorCQkJICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAq LworCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkv KgorCQkJICogRm9yIHRoZSBjYXNlIG9mIGFib3J0aW5nIHRoZSBzdWJ0cmFuc2FjdGlvbiwgd2Ug aW5jcmVtZW50IHRoZQorCQkJICogbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3MgYW5kIHRha2Ug dGhlIGxvY2sgYWdhaW4gYmVmb3JlCisJCQkgKiBzZW5kaW5nIHRoZSBTVFJFQU1fQUJPUlQgdG8g ZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2lsbCB3YWl0IG9u IHRoZSBsb2NrIGZvciB0aGUgbmV4dCBzZXQgb2YgY2hhbmdlcyBhZnRlcgorCQkJICogcHJvY2Vz c2luZyB0aGUgU1RSRUFNX0FCT1JUIG1lc3NhZ2UgaWYgaXQgaXMgbm90IGFscmVhZHkgd2FpdGlu ZworCQkJICogZm9yIFNUUkVBTV9TVE9QIG1lc3NhZ2UuCisJCQkgKgorCQkJICogSXQgaXMgaW1w b3J0YW50IHRvIHBlcmZvcm0gdGhpcyBsb2NraW5nIGJlZm9yZSBzZW5kaW5nIHRoZQorCQkJICog U1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28gdGhhdCB0aGUgbGVhZGVyIGNhbiBob2xkIHRoZSBsb2Nr IGZpcnN0CisJCQkgKiBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9y IHRoZSBsZWFkZXIgdG8KKwkJCSAqIHJlbGVhc2UgdGhlIGxvY2suIFRoaXMgaXMgdGhlIHNhbWUg YXMgd2hhdCB3ZSBkbyBpbgorCQkJICogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wLiBTZWUgTG9j a2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJ CQkgKi8KKwkJCWlmICghdG9wbGV2ZWxfeGFjdCkKKwkJCXsKKwkJCQlwYV9pbmNyZW1lbnRfc3Ry ZWFtX2Jsb2NrKHdpbmZvLT5zaGFyZWQpOworCQkJCXBhX2xvY2tfc3RyZWFtKHhpZCwgQWNjZXNz RXhjbHVzaXZlTG9jayk7CisJCQl9CisKKwkJCS8qIFNlbmQgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ug dG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywg cy0+bGVuLCBzLT5kYXRhKTsKKworCQkJaWYgKHRvcGxldmVsX3hhY3QpCisJCQkJKHZvaWQpIHBh X2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BB UkFMTEVMX0FQUExZOgorCQkJcGFfc3RyZWFtX2Fib3J0KCZhYm9ydF9kYXRhKTsKKworCQkJLyoK KwkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNzaW5nIHJvbGxiYWNrIHRvIHNhdmVw b2ludCBmb3IgdGhlCisJCQkgKiBuZXh0IHNldCBvZiBjaGFuZ2VzLgorCQkJICoKKwkJCSAqIEJ5 IHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBwcm9jZXNzaW5nIHRoZSBjaGFuZ2Vz IGluCisJCQkgKiB0aGUgY3VycmVudCBzdHJlYW1pbmcgYmxvY2ssIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIG1heSBoYXZlCisJCQkgKiBzZW50IG11bHRpcGxlIHN0cmVhbWluZyBibG9ja3MuIFRo aXMgY2FuIGxlYWQgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciBzdGFydCB3YWl0aW5n IGV2ZW4gd2hlbiB0aGVyZSBhcmUgbW9yZSBjaHVuayBvZiBzdHJlYW1zCisJCQkgKiBpbiB0aGUg cXVldWUuIFNvLCB0cnkgdG8gbG9jayBvbmx5IGlmIHRoZXJlIGlzIG5vIG1lc3NhZ2UgbGVmdAor CQkJICogaW4gdGhlIHF1ZXVlLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkg KiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8KKwkJCWlmICghdG9wbGV2ZWxfeGFjdCkK KwkJCQlwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayhNeVBhcmFsbGVsU2hhcmVkKTsKKwor CQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQUJPUlQgY29t bWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQli cmVhazsKKwl9CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KQEAgLTE0 OTgsNiArMTg5OSw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykK IHsKIAlUcmFuc2FjdGlvbklkIHhpZDsKIAlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0 YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBh cHBseV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQo RVJST1IsCkBAIC0xNTA3LDE0ICsxOTEwLDY3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0 KFN0cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChzLCAm Y29tbWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBjb21taXRf ZGF0YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBz dHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5z YWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CiAKLQlhcHBseV9zcG9vbGVkX21lc3Nh Z2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24p CisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQlhcHBseV9oYW5kbGVfY29t bWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9u IGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNw b29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQs IGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVy bmFsKCZjb21taXRfZGF0YSk7CisKKwkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVz KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRS QU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoK KwkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGNhbgorCQkJICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdl cy4KKwkJCSAqLworCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sp OworCisJCQkvKiBTZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyLiAqLworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOwor CisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlz IG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBm YWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxv Y2tzLgorCQkJICovCisJCQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisKKwkJCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLmVuZF9sc24sIHdpbmZvLT5zaGFyZWQtPmxh c3RfY29tbWl0X2VuZCk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBj aGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZv LCB4aWQpOworCisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJ YXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQlNeVBhcmFs bGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBYYWN0TGFzdENvbW1pdEVuZDsKKworCQkJcGFf c2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQp OworCQkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQkJ cGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNz aW5nIHRoZSBTVFJFQU0gQ09NTUlUIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6 CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQogCiAJLyogUHJvY2VzcyBhbnkgdGFi bGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNz X3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwpAQCAtMTU1OCw5ICsyMDE0LDE2 IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNv bW1pdF9kYXRhKQogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1p dF9kYXRhLT5jb21taXR0aW1lOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJ CWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhm YWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCiAJCXBnc3RhdF9y ZXBvcnRfc3RhdChmYWxzZSk7CiAKLQkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEt PmVuZF9sc24pOworCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbiwg WGFjdExhc3RDb21taXRFbmQpOwogCX0KIAllbHNlCiAJewpAQCAtMjUxMSw3ICsyOTc0LDcgQEAg YXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0luZm8gcykKIC8qCiAgKiBMb2dpY2FsIHJlcGxp Y2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4KICAqLwotc3RhdGljIHZvaWQKK3Zv aWQKIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwTXNnVHlwZSBh Y3Rpb24gPSBwcV9nZXRtc2dieXRlKHMpOwpAQCAtMjY3NiwxNiArMzEzOSwyMyBAQCBnZXRfZmx1 c2hfcG9zaXRpb24oWExvZ1JlY1B0ciAqd3JpdGUsIFhMb2dSZWNQdHIgKmZsdXNoLAogICogU3Rv cmUgY3VycmVudCByZW1vdGUvbG9jYWwgbHNuIHBhaXIgaW4gdGhlIHRyYWNraW5nIGxpc3QuCiAg Ki8KIHN0YXRpYyB2b2lkCi1zdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9s c24pCitzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQ dHIgbG9jYWxfbHNuKQogewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCisJLyoKKwkgKiBT a2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBiZWNhdXNlIHRoZSBsc25fbWFwcGluZyBp cyBtYWludGFpbmVkCisJICogYnkgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCisJICovCisJaWYg KGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAkvKiBOZWVkIHRvIGRv IHRoaXMgaW4gcGVybWFuZW50IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBw bHlDb250ZXh0KTsKIAogCS8qIFRyYWNrIGNvbW1pdCBsc24gICovCiAJZmx1c2hwb3MgPSAoRmx1 c2hQb3NpdGlvbiAqKSBwYWxsb2Moc2l6ZW9mKEZsdXNoUG9zaXRpb24pKTsKLQlmbHVzaHBvcy0+ bG9jYWxfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisJZmx1c2hwb3MtPmxvY2FsX2VuZCA9IGxv Y2FsX2xzbjsKIAlmbHVzaHBvcy0+cmVtb3RlX2VuZCA9IHJlbW90ZV9sc247CiAKIAlkbGlzdF9w dXNoX3RhaWwoJmxzbl9tYXBwaW5nLCAmZmx1c2hwb3MtPm5vZGUpOwpAQCAtMjc0NCw2ICszMjE0 LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJy Y2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFjay5w cmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZl cnJjYWxsYmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9z dGFjazsKIAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVyYXRlcyBvbmNlIHBlciB3YWl0LiAqLwog CWZvciAoOzspCkBAIC0yODk2LDYgKzMzNjcsMTMgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9n UmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCXsKIAkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxz ZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCisJCQkvKgorCQkJICogVHJ5 IHRvIHN0b3AgZnJlZSB3b3JrZXJzIGluIHRoZSBwb29sIGluIGNhc2UgdGhlCisJCQkgKiBtYXhf cGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIGlzIGNoYW5nZWQgdG8gYQor CQkJICogbG93ZXIgdmFsdWUuCisJCQkgKi8KKwkJCXBhX3N0b3BfaWRsZV93b3JrZXJzKCk7CiAJ CX0KIAogCQlpZiAocmMgJiBXTF9USU1FT1VUKQpAQCAtMjk1OCw2ICszNDM2LDcgQEAgTG9naWNh bFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAKIAkvKiBQb3AgdGhlIGVy cm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2su cHJldmlvdXM7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3Rh Y2s7CiAKIAkvKiBBbGwgZG9uZSAqLwogCXdhbHJjdl9lbmRzdHJlYW1pbmcoTG9nUmVwV29ya2Vy V2FsUmN2Q29ubiwgJnRsaSk7CkBAIC0zMDU2LDkgKzM1MzUsMzEgQEAgc2VuZF9mZWVkYmFjayhY TG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KQogfQogCiAv KgotICogUmVyZWFkIHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRlZC4gTW9zdCBjaGFuZ2VzIHdp bGwgYmUgZXhpdC4KKyAqIEV4aXQgcm91dGluZSBmb3IgYXBwbHkgd29ya2VycyBkdWUgdG8gc3Vi c2NyaXB0aW9uIHBhcmFtZXRlciBjaGFuZ2VzLgogICovCiBzdGF0aWMgdm9pZAorYXBwbHlfd29y a2VyX2V4aXQodm9pZCkKK3sKKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJewor CQkvKgorCQkgKiBEb24ndCBzdG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYXMgdGhlIGxl YWRlciB3aWxsIGRldGVjdCB0aGUKKwkJICogc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBjaGFuZ2Ug YW5kIHJlc3RhcnQgbG9naWNhbCByZXBsaWNhdGlvbiBsYXRlcgorCQkgKiBhbnl3YXkuIFRoaXMg YWxzbyBwcmV2ZW50cyB0aGUgbGVhZGVyIGZyb20gcmVwb3J0aW5nIGVycm9ycyB3aGVuCisJCSAq IHRyeWluZyB0byBjb21tdW5pY2F0ZSB3aXRoIGEgc3RvcHBlZCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIsIHdoaWNoCisJCSAqIHdvdWxkIGFjY2lkZW50YWxseSBkaXNhYmxlIHN1YnNjcmlwdGlvbnMg aWYgZGlzYWJsZV9vbl9lcnJvciB3YXMKKwkJICogc2V0LgorCQkgKi8KKwkJcmV0dXJuOworCX0K KworCXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIFJlcmVhZCBzdWJzY3JpcHRpb24gaW5mbyBp ZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3aWxsIGJlIGV4aXQuCisgKi8KK3ZvaWQKIG1heWJlX3Jl cmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIHsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKQEAgLTMw ODgsOSArMzU4OSw5IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAlpZiAoIW5l d3N1YikKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRp b24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgotCQkJCQkJInN0 b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIiwKLQkJCQkJCU15U3Vic2Ny aXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBv ZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJl bW92ZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkp OwogCiAJCXByb2NfZXhpdCgwKTsKIAl9CkBAIC0zMDk5LDExICszNjAwLDExIEBAIG1heWJlX3Jl cmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAlpZiAoIW5ld3N1Yi0+ZW5hYmxlZCkKIAl7CiAJCWVy ZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgotCQkJCQkJInN0b3AgYmVjYXVzZSB0aGUg c3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkp KTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBs aWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNc IiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCisJCQkJ CQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19l eGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAogCS8qICFzbG90bmFtZSBzaG91 bGQgbmV2ZXIgaGFwcGVuIHdoZW4gZW5hYmxlZCBpcyB0cnVlLiAqLwpAQCAtMzExNCw3ICszNjE1 LDEwIEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAogCS8qCiAJICogRXhpdCBp ZiBhbnkgcGFyYW1ldGVyIHRoYXQgYWZmZWN0cyB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gd2FzIGNo YW5nZWQuCi0JICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBuZXcgd29ya2VyLgorCSAqIFRo ZSBsYXVuY2hlciB3aWxsIHN0YXJ0IGEgbmV3IHdvcmtlciBidXQgbm90ZSB0aGF0IHRoZSBwYXJh bGxlbCBhcHBseQorCSAqIHdvcmtlciB3b24ndCByZXN0YXJ0IGlmIHRoZSBzdHJlYW1pbmcgb3B0 aW9uJ3MgdmFsdWUgaXMgY2hhbmdlZCBmcm9tCisJICogJ3BhcmFsbGVsJyB0byBhbnkgb3RoZXIg dmFsdWUgb3IgdGhlIHNlcnZlciBkZWNpZGVzIG5vdCB0byBzdHJlYW0gdGhlCisJICogaW4tcHJv Z3Jlc3MgdHJhbnNhY3Rpb24uCiAJICovCiAJaWYgKHN0cmNtcChuZXdzdWItPmNvbm5pbmZvLCBN eVN1YnNjcmlwdGlvbi0+Y29ubmluZm8pICE9IDAgfHwKIAkJc3RyY21wKG5ld3N1Yi0+bmFtZSwg TXlTdWJzY3JpcHRpb24tPm5hbWUpICE9IDAgfHwKQEAgLTMxMjUsMTEgKzM2MjksMTcgQEAgbWF5 YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCQluZXdzdWItPm93bmVyICE9IE15U3Vic2Ny aXB0aW9uLT5vd25lciB8fAogCQkhZXF1YWwobmV3c3ViLT5wdWJsaWNhdGlvbnMsIE15U3Vic2Ny aXB0aW9uLT5wdWJsaWNhdGlvbnMpKQogCXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygi bG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIg d2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKLQkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lKSkpOworCQlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJ CQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2Ug b2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsK KwkJZWxzZQorCQkJZXJlcG9ydChMT0csCisJCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0 aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCQkoZXJybXNnKCIl cyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVzZSBvZiBhIHBhcmFt ZXRlciBjaGFuZ2UiLAorCQkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9leGl0KCk7CiAJfQog CiAJLyogQ2hlY2sgZm9yIG90aGVyIGNoYW5nZXMgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHRv by4gKi8KQEAgLTM2MTMsMzcgKzQxMjMsMTYgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmln aW5fc3RhcnRwb3MpCiAJUEdfRU5EX1RSWSgpOwogfQogCi0vKiBMb2dpY2FsIFJlcGxpY2F0aW9u IEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLworLyoKKyAqIENvbW1vbiBpbml0aWFsaXphdGlv biBmb3IgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoK KyAqIEluaXRpYWxpemUgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24sIGluLW1lbW9yeSBzdWJzY3Jp cHRpb24gYW5kIG5lY2Vzc2FyeQorICogY29uZmlnIG9wdGlvbnMuCisgKi8KIHZvaWQKLUFwcGx5 V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK0luaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKQog ewotCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CiAJTWVtb3J5 Q29udGV4dCBvbGRjdHg7Ci0JY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JWExvZ1Jl Y1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQljaGFyCSAgICpteXNs b3RuYW1lID0gTlVMTDsKLQlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7Ci0JaW50CQkJc2Vy dmVyX3ZlcnNpb247Ci0KLQkvKiBBdHRhY2ggdG8gc2xvdCAqLwotCWxvZ2ljYWxyZXBfd29ya2Vy X2F0dGFjaCh3b3JrZXJfc2xvdCk7Ci0KLQkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlw cXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFs KFNJR1RFUk0sIGRpZSk7Ci0JQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7Ci0KLQkv KgotCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2Fs cmVjZWl2ZXIgcHJvY2VzcywgYnV0Ci0JICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0 ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCi0JICovCi0KLQkvKiBJbml0aWFsaXNlIHN0 YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCi0JTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRf dGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQotCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0KLQkvKiBMb2Fk IHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KLQlsb2FkX2ZpbGUoImxpYnBxd2FscmVj ZWl2ZXIiLCBmYWxzZSk7CiAKIAkvKiBSdW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0aW9u IHJvbGUuICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAi cmVwbGljYSIsCkBAIC0zNjcxLDkgKzQxNjAsMTAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1h aW5fYXJnKQogCWlmICghTXlTdWJzY3JpcHRpb24pCiAJewogCQllcmVwb3J0KExPRywKLQkJCQko ZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u ICV1IHdpbGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2Fz IHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAotCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCkpKTsKKwkJLyogdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwg bm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3Rh cnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCkpKTsKKwogCQlwcm9jX2V4aXQoMCk7CiAJfQogCkBAIC0zNjgzLDExICs0MTczLDExIEBAIEFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAoIU15U3Vic2NyaXB0aW9uLT5lbmFi bGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBub3QgIgotCQkJCQkJ InN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0YXJ0 dXAiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZp cnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJ KGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBub3Qgc3RhcnQgYmVjYXVz ZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQln ZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19leGl0 KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAogCS8qIFNldHVwIHN5bmNocm9ub3Vz IGNvbW1pdCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyB3aXNoZXMgKi8KQEAgLTM3MDIsMTMgKzQx OTIsNDkgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlmIChhbV90YWJsZXN5 bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNc IiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1l LCBnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CisJCQkJCQlNeVN1 YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCWdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXIt PnJlbGlkKSkpKTsKIAllbHNlCiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwg cmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFy dGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBm aXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJ CShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJ CWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdv cmtlciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KQoreworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hh cgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3Mg PSBJbnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKKwlXYWxS Y3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKiBB dHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7 CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25h bEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFj a2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIFdlIGRvbid0IGN1cnJl bnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0 CisJICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93 bmVyIGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVl ICovCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdv cmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUg PSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBm dW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CisKKwlJ bml0aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENvbm5lY3QgdG8gdGhlIG9yaWdpbiBhbmQg c3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2coREVCVUcxLCAiY29ubmVjdGluZyB0byBw dWJsaXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcgXCIlc1wiIiwKQEAgLTM3MTgsMjAgKzQy NDQsMTUgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCXsKIAkJc3RhcnRfdGFi bGVfc3luYygmb3JpZ2luX3N0YXJ0cG9zLCAmbXlzbG90bmFtZSk7CiAKLQkJLyoKLQkJICogQWxs b2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29u dGV4dAotCQkgKiBtZXNzYWdlLgotCQkgKi8KIAkJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9n aWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCSAgIE15TG9naWNhbFJlcFdv cmtlci0+cmVsaWQsCiAJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSwKIAkJCQkJCQkJCQkgICBzaXpl b2Yob3JpZ2lubmFtZSkpOwotCQlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUg PSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCQkgICBv cmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5hbWUp OwogCX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1haW4gYXBwbHkgd29ya2VyICovCisJCS8q IFRoaXMgaXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgKi8KIAkJUmVwT3JpZ2luSWQgb3JpZ2lu aWQ7CiAJCVRpbWVMaW5lSUQJc3RhcnRwb2ludFRMSTsKIAkJY2hhcgkgICAqZXJyOwpAQCAtMzc1 NSw3ICs0Mjc2LDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmlnaW5p ZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJc1Zh bGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFt ZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4g PSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9w cm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtMzc3Mywx MiArNDI5NCw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJICovCiAJCSh2 b2lkKSB3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sICZzdGFy dHBvaW50VExJKTsKIAotCQkvKgotCQkgKiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9u Zy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0Ci0JCSAqIG1lc3NhZ2UuCi0JCSAqLwot CQlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3Ry ZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5hbWUpOwogCX0KIAogCS8qCkBAIC0z Nzk2LDEzICs0MzEyLDM2IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNl cnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNv bm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3Zl cnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lP Tl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RX T1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNB TFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJ T05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlT dWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5 ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFt aW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKworCS8qCisJICogQXNzaWduIHRoZSBhcHBy b3ByaWF0ZSBvcHRpb24gdmFsdWUgZm9yIHN0cmVhbWluZyBvcHRpb24gYWNjb3JkaW5nIHRvCisJ ICogdGhlICdzdHJlYW1pbmcnIG1vZGUgYW5kIHRoZSBwdWJsaXNoZXIncyBhYmlsaXR5IHRvIHN1 cHBvcnQgdGhhdCBtb2RlLgorCSAqLworCWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgJiYK KwkJTXlTdWJzY3JpcHRpb24tPnN0cmVhbSA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCkK Kwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gInBhcmFsbGVsIjsK KwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IHRydWU7CisJfQorCWVsc2Ug aWYgKHNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCAmJgorCQkJIE15U3Vic2NyaXB0aW9uLT5zdHJl YW0gIT0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dpY2Fs LnN0cmVhbWluZ19zdHIgPSAib24iOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2Fw cGx5ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJl YW1pbmdfc3RyID0gTlVMTDsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9 IGZhbHNlOworCX0KKwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOwog CW9wdGlvbnMucHJvdG8ubG9naWNhbC5vcmlnaW4gPSBwc3RyZHVwKE15U3Vic2NyaXB0aW9uLT5v cmlnaW4pOwogCkBAIC0zOTAwLDYgKzQ0MzksMTUgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiB9 CiAKIC8qCisgKiBJcyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFs bGVsIGFwcGx5IHdvcmtlcj8KKyAqLworYm9vbAorSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtl cih2b2lkKQoreworCXJldHVybiBJc0xvZ2ljYWxXb3JrZXIoKSAmJiBhbV9wYXJhbGxlbF9hcHBs eV93b3JrZXIoKTsKK30KKworLyoKICAqIFN0YXJ0IHNraXBwaW5nIGNoYW5nZXMgb2YgdGhlIHRy YW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0aGUKICAqIExTTiBzcGVjaWZpZWQg Ynkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KICAqLwpAQCAtMzk2MSw3ICs0NTA5LDcgQEAgY2xl YXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIAlYTG9nUmVj UHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNuOwogCWJvb2wJCXN0YXJ0ZWRf dHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBsc24p KSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkgfHwgYW1fcGFy YWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2FjdGlvblN0 YXRlKCkpCkBAIC00MDMzLDcgKzQ1ODEsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24o WExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBnaXZlIG1v cmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwotc3RhdGlj IHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlBcHBseUVy cm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7CkBAIC00 MDYxLDIzICs0NjA5LDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJCQkJ ICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5m aW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCi0J CWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdp biBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdl dCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVY IiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2Fn ZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5u c3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBl cnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNo X2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3Ig cmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3Ig cmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRy YW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5f bmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAot CQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRu YW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwK LQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJeworCQlpZiAo ZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90 ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUg XCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5z YWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dp Y2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5y ZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJj b250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIl c1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVs YXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJ CQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdl X3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwu bnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJ CSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmct PmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChYTG9nUmVjUHRySXNJbnZh bGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1v dGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBl IFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4g XCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUs CisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJ CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5h dHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVf eGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZv ciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZv ciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4g dHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3Jp Z2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1h bmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAg ZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xz bikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gb2YgYXBw bHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQwOTcsMyArNDY2OSw0OCBAQCByZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3Rl X2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5z YWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIEFsbG9jYXRlIHRoZSBv cmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQgbWVzc2Fn ZS4KKyAqLwordm9pZAorc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9yaWdp bm5hbWUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5 Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1l KTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSBnaXZlbiB0 cmFuc2FjdGlvbi4gKndpbmZvIGlzIGFzc2lnbmVkIHRvCisgKiB0aGUgZGVzdGluYXRpb24gcGFy YWxsZWwgd29ya2VyIGluZm8gKGlmIHRoZSBhY3Rpb24gaXMKKyAqIFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMKSwgb3RoZXJ3aXNlICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgorICovCitz dGF0aWMgVHJhbnNBcHBseUFjdGlvbgorZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFu c2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKK3sKKwkqd2lu Zm8gPSBOVUxMOworCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJcmV0 dXJuIFRSQU5TX1BBUkFMTEVMX0FQUExZOworCX0KKwllbHNlIGlmIChpbl9yZW1vdGVfdHJhbnNh Y3Rpb24pCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX0FQUExZOworCX0KKworCS8qCisJICog Q2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFs bGVsIGFwcGx5CisJICogd29ya2VyLgorCSAqLworCSp3aW5mbyA9IHBhX2ZpbmRfd29ya2VyKHhp ZCk7CisKKwlpZiAoKndpbmZvKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BB UkFMTEVMOworCX0KKwllbHNlCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsK Kwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRl eCBjYTQ2ZmJhLi40MGM0NGJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5o IgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMjkwLDcgKzI5MSw3IEBAIHBhcnNl X291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAli b29sCQlvcmlnaW5fb3B0aW9uX2dpdmVuID0gZmFsc2U7CiAKIAlkYXRhLT5iaW5hcnkgPSBmYWxz ZTsKLQlkYXRhLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwlkYXRhLT5zdHJlYW1pbmcgPSBMT0dJQ0FM UkVQX1NUUkVBTV9PRkY7CiAJZGF0YS0+bWVzc2FnZXMgPSBmYWxzZTsKIAlkYXRhLT50d29fcGhh c2UgPSBmYWxzZTsKIApAQCAtMzY5LDcgKzM3MCw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJz KExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJCQkJCSBlcnJtc2coImNvbmZs aWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKIAkJCXN0cmVhbWluZ19naXZlbiA9IHRy dWU7CiAKLQkJCWRhdGEtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJZGF0 YS0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBp ZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNDYx LDEzICs0NjIsMjAgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAkJICogd2Ugb25seSBhbGxvdyBpdCB3aXRo IHN1ZmZpY2llbnQgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3aGVuCiAJCSAqIHRoZSBv dXRwdXQgcGx1Z2luIHN1cHBvcnRzIGl0LgogCQkgKi8KLQkJaWYgKCFkYXRhLT5zdHJlYW1pbmcp CisJCWlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGKQogCQkJY3R4 LT5zdHJlYW1pbmcgPSBmYWxzZTsKLQkJZWxzZSBpZiAoZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8 IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQorCQllbHNlIGlmIChkYXRhLT5z dHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fT04gJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xf dmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CiAJCQkJCSBlcnJtc2coInJlcXVlc3RlZCBwcm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBv cnQgc3RyZWFtaW5nLCBuZWVkICVkIG9yIGhpZ2hlciIsCiAJCQkJCQkJZGF0YS0+cHJvdG9jb2xf dmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pKSk7CisJCWVsc2Ug aWYgKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAmJgorCQkJ CSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxM RUxfVkVSU0lPTl9OVU0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3Rv X3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBwYXJhbGxlbCBzdHJlYW1pbmcsIG5lZWQgJWQg b3IgaGlnaGVyIiwKKwkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BS T1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSkpKTsKIAkJZWxzZSBpZiAoIWN0eC0+c3Ry ZWFtaW5nKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCkBAIC0xODQxLDYgKzE4NDksOCBAQCBwZ291dHB1dF9zdHJlYW1f YWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVj UHRyIGFib3J0X2xzbikKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXRE YXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsK Kwlib29sCQl3cml0ZV9hYm9ydF9pbmZvID0gKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQ X1NUUkVBTV9QQVJBTExFTCk7CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91 dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAtMTg1NCw3ICsxODY0 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 cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L2xtZ3IuYwppbmRleCAxMDQzMDY4Li4yZjE3MWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMK QEAgLTExMTcsNiArMTExNyw0NSBAQCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBj bGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJpZCwKIAlMb2NrUmVsZWFzZSgmdGFnLCBs b2NrbW9kZSwgdHJ1ZSk7CiB9CiAKKy8qCisgKgkJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNz aW9uCisgKgorICogT2J0YWluIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24g YmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuIFNl ZSBMb2NrUmVsYXRpb25JZEZvclNlc3Npb24gZm9yIG5vdGVzIGFib3V0CisgKiBzZXNzaW9uLWxl dmVsIGxvY2tzLgorICovCit2b2lkCitMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lk IHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkgICBMT0NL TU9ERSBsb2NrbW9kZSkKK3sKKwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBMWV9U UkFOU0FDVElPTih0YWcsCisJCQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1Ym9p ZCwKKwkJCQkJCQkJICB4aWQsCisJCQkJCQkJCSAgb2JqaWQpOworCisJKHZvaWQpIExvY2tBY3F1 aXJlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKKy8qCisgKgkJVW5sb2NrQXBw bHlUcmFuc2FjdGlvbkZvclNlc3Npb24KKyAqLwordm9pZAorVW5sb2NrQXBwbHlUcmFuc2FjdGlv bkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwK KwkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9M T0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJ CQkJCQkJCSAgc3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwlM b2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7Cit9CiAKIC8qCiAgKiBBcHBlbmQgYSBk ZXNjcmlwdGlvbiBvZiBhIGxvY2thYmxlIG9iamVjdCB0byBidWYuCkBAIC0xMjAyLDYgKzEyNDEs MTMgQEAgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcp CiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVs ZDQpOwogCQkJYnJlYWs7CisJCWNhc2UgTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTjoKKwkJCWFw cGVuZFN0cmluZ0luZm8oYnVmLAorCQkJCQkJCSBfKCJyZW1vdGUgdHJhbnNhY3Rpb24gJXUgb2Yg c3Vic2NyaXB0aW9uICV1IG9mIGRhdGFiYXNlICV1IiksCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19m aWVsZDMsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDIsCisJCQkJCQkJIHRhZy0+bG9ja3Rh Z19maWVsZDEpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwKIAkJCQkJCQkgXygidW5yZWNvZ25pemVkIGxvY2t0YWcgdHlwZSAlZCIpLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IGY4ODA4ZDIuLjVjYWYwMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzksNiAr MzM3OSw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4 dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAo UGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2Fn ZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRl eCBiMmFiZDc1Li4xZmFiNDVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jCkBAIC0yMzAsNiArMjMwLDkgQEAgcGdzdGF0X2dldF93YWl0X2FjdGl2aXR5KFdhaXRFdmVu dEFjdGl2aXR5IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU46CiAJ CQlldmVudF9uYW1lID0gIkxvZ2ljYWxMYXVuY2hlck1haW4iOwogCQkJYnJlYWs7CisJCWNhc2Ug V0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU46CisJCQlldmVudF9uYW1lID0g IkxvZ2ljYWxQYXJhbGxlbEFwcGx5TWFpbiI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5U X1JFQ09WRVJZX1dBTF9TVFJFQU06CiAJCQlldmVudF9uYW1lID0gIlJlY292ZXJ5V2FsU3RyZWFt IjsKIAkJCWJyZWFrOwpAQCAtMzg4LDYgKzM5MSw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2Fp dEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VS VDoKIAkJCWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7 CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRToK KwkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlTdGF0ZUNoYW5nZSI7CisJCQli cmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFt ZSA9ICJMb2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNz LmMKaW5kZXggZjliMzI0ZS4uM2JmMDQ4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2xvY2tmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwpA QCAtMzcsMTAgKzM3LDExIEBAIGNvbnN0IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXSA9 IHsKIAkic3BlY3Rva2VuIiwKIAkib2JqZWN0IiwKIAkidXNlcmxvY2siLAotCSJhZHZpc29yeSIK KwkiYWR2aXNvcnkiLAorCSJhcHBseXRyYW5zYWN0aW9uIgogfTsKIAotU3RhdGljQXNzZXJ0RGVj bChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19BRFZJU09SWSArIDEpLAor U3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19M QVNUX1RZUEUgKyAxKSwKIAkJCQkgImFycmF5IGxlbmd0aCBtaXNtYXRjaCIpOwogCiAvKiBUaGlz IG11c3QgbWF0Y2ggZW51bSBQcmVkaWNhdGVMb2NrVGFyZ2V0VHlwZSAocHJlZGljYXRlX2ludGVy bmFscy5oKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCAxYmYxNGVlLi45 MWYwNDc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjk4Miw2ICsyOTgy LDE4IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCX0sCiAKIAl7 CisJCXsibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQ R0NfU0lHSFVQLAorCQkJUkVQTElDQVRJT05fU1VCU0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3Ao Ik1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlv bi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uLAorCQkyLCAwLCBNQVhfUEFSQUxMRUxfV09SS0VSX0xJTUlULAorCQlOVUxM LCBOVUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hV UCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRp bWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0aW9uLiIp LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4 IDA0Mzg2NDUuLjIyYjAyZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKQEAgLTM1OSw2ICszNTksNyBAQAogI21heF9sb2dpY2FsX3JlcGxpY2F0 aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogCQkJCQkj IChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCisj bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBm cm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKIAogCiAjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwppbmRleCA0NGQ5NTdjLi5mNDU0YjMxIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAg LTQ1MzMsNyArNDUzMyw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAo Zm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICIgJ2YnIEFTIHN1YnN0cmVhbSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNp b24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ2NzAsOCAr NDY3MCwxMCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlw dGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0Iikg PT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsK IAotCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNt cChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICIsIHN0cmVhbWluZyA9IG9uIik7CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1 YnN0cmVhbSwgInAiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3Ry ZWFtaW5nID0gcGFyYWxsZWwiKTsKIAogCWlmIChzdHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2Vz dGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggZGYxNjYzNi4uMjY1YjI4ZCAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKQEAgLTY1MDIsMTEgKzY1MDIsMjQgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7CiAJCS8qIEJpbmFyeSBtb2RlIGFu ZCBzdHJlYW1pbmcgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHYxNCBhbmQgaGlnaGVyICovCiAJCWlm IChwc2V0LnN2ZXJzaW9uID49IDE0MDAwMCkKKwkJewogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwKLQkJCQkJCQkgICIsIHN1YmJpbmFyeSBBUyBcIiVzXCJcbiIKLQkJCQkJCQkgICIsIHN1YnN0 cmVhbSBBUyBcIiVzXCJcbiIsCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkJpbmFyeSIpLAotCQkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQkJCQkJICAiLCBzdWJiaW5hcnkg QVMgXCIlc1wiXG4iLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJCaW5hcnkiKSk7CisKKwkJCWlm IChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJCQkgICIsIChDQVNFIHN1YnN0cmVhbVxuIgorCQkJCQkJCQkgICIgICAgV0hFTiAnZicg VEhFTiAnb2ZmJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAndCcgVEhFTiAnb24nXG4iCisJCQkJ CQkJCSAgIiAgICBXSEVOICdwJyBUSEVOICdwYXJhbGxlbCdcbiIKKwkJCQkJCQkJICAiICAgRU5E KSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJ CQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCBzdWJzdHJl YW0gQVMgXCIlc1wiXG4iLAorCQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOwor CQl9CiAKIAkJLyogVHdvX3BoYXNlIGFuZCBkaXNhYmxlX29uX2Vycm9yIGFyZSBvbmx5IHN1cHBv cnRlZCBpbiB2MTUgYW5kIGhpZ2hlciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDAp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCA3Yjk4NzE0Li41YjllNWEz IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAg Q0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lf U0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRo ZSBzdWJzY3JpcHRpb24gd2FudHMgdGhlCiAJCQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRh dGEgaW4gYmluYXJ5ICovCiAKLQlib29sCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jl c3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMuIFNlZQorCQkJCQkJCQkgKiBTVUJTVFJFQU1feHh4IGNvbnN0YW50 cy4gKi8KIAogCWNoYXIJCXN1YnR3b3BoYXNlc3RhdGU7CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJh bnNhY3Rpb25zICovCiAKQEAgLTEyNCw3ICsxMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3Jp cHRpb24KIAlib29sCQllbmFibGVkOwkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24g aXMgZW5hYmxlZCAqLwogCWJvb2wJCWJpbmFyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNj cmlwdGlvbiB3YW50cyBkYXRhIGluCiAJCQkJCQkJCSAqIGJpbmFyeSBmb3JtYXQgKi8KLQlib29s CQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4g Ki8KKwljaGFyCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5z YWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCWNo YXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0cmVhbWluZyB0d28tcGhhc2UgdHJhbnNhY3Rp b25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlw dGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdv cmtlciBlcnJvcgpAQCAtMTM3LDYgKzEzOSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRp b24KIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdpbiAqLwogfSBTdWJzY3JpcHRpb247CiAKKy8q IERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisjZGVmaW5l IExPR0lDQUxSRVBfU1RSRUFNX09GRiAnZicKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVz cyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQKKyAqIGFw cGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHVwc3RyZWFt LgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX09OICd0JworCisvKgorICogU3RyZWFt aW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgYXBwbGllZCBpbW1lZGlhdGVseSB2aWEg YSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RS RUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24o T2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlv bihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9p ZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25j bWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKaW5kZXggMmNi ZTdkNy4uNzc5NDc0ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaApA QCAtMjYsNCArMjYsNiBAQCBleHRlcm4gdm9pZCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3Jp cHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3Mg QWx0ZXJTdWJzY3JpcHRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3T3duZXJJZCk7 CiBleHRlcm4gdm9pZCBBbHRlclN1YnNjcmlwdGlvbk93bmVyX29pZChPaWQgc3ViaWQsIE9pZCBu ZXdPd25lcklkKTsKIAorZXh0ZXJuIGNoYXIgZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpk ZWYpOworCiAjZW5kaWYJCQkJCQkJLyogU1VCU0NSSVBUSU9OQ01EU19IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4MjEuLmQ1MTNlZjUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xNCw2ICsxNCw3 IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uOwogCiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIo dm9pZCk7CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZyk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IDFlYjdkZGEuLjRmYTJiZDMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBAIC0zMiwxMiArMzIsMTcg QEAKICAqCiAgKiBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIGlzIHRoZSBt aW5pbXVtIHByb3RvY29sIHZlcnNpb24gd2l0aAogICogc3VwcG9ydCBmb3IgdHdvLXBoYXNlIGNv bW1pdCBkZWNvZGluZyAoYXQgcHJlcGFyZSB0aW1lKS4gSW50cm9kdWNlZCBpbiBQRzE1LgorICoK KyAqIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIGlzIHRoZSBt aW5pbXVtIHByb3RvY29sIHZlcnNpb24KKyAqIHdoZXJlIHdlIHN1cHBvcnQgYXBwbHlpbmcgbGFy Z2Ugc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbiBwYXJhbGxlbC4KKyAqIEludHJvZHVjZWQgaW4g UEcxNi4KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01JTl9WRVJTSU9OX05VTSAxCiAj ZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQ X1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVFdP UEhBU0VfVkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9O X05VTSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNCisjZGVmaW5lIExPR0lD QUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDQKKyNkZWZpbmUgTE9HSUNB TFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxM RUxfVkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0eXBlcwpAQCAtMTc1LDYg KzE4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRh dGEKIAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhu RGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29sIGluZm9ybWF0aW9uIGZvciBzdHJl YW0gYWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEK K3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlYTG9nUmVj UHRyCWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOworfSBMb2dpY2FsUmVwU3Ry ZWFtQWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2JlZ2luKFN0cmlu Z0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF9yZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCSAgTG9naWNhbFJlcEJlZ2luRGF0 YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEzIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxy ZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAq dHhuCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChT dHJpbmdJbmZvIGluLAogCQkJCQkJCQkJCQkJICAgTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1p dF9kYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmlu Z0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQg c3VieGlkKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICpz dWJ4aWQpOworCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQsCisJCQkJCQkJCQkJICBY TG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkJCQkgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUs CisJCQkJCQkJCQkJICBib29sIHdyaXRlX2Fib3J0X2luZm8pOworZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJCQkJCSBMb2dpY2Fs UmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCQkJCSBib29sIHJlYWRfYWJv cnRfaW5mbyk7CiBleHRlcm4gY2hhciAqbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoTG9naWNhbFJl cE1zZ1R5cGUgYWN0aW9uKTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxfUFJPVE9fSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IGNkMWI2ZTguLmRjNjhj ZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTEyLDggKzEy LDE2IEBACiAjaWZuZGVmIExPR0lDQUxXT1JLRVJfSAogI2RlZmluZSBMT0dJQ0FMV09SS0VSX0gK IAorI2luY2x1ZGUgPHNpZ25hbC5oPgorCitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2ln X2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKKwogZXh0ZXJuIHZvaWQgQXBw bHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVybiB2b2lkIFBhcmFsbGVsQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wgSXNMb2dpY2FsV29ya2Vy KHZvaWQpOworZXh0ZXJuIGJvb2wgSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKTsK K2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpOwor ZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpOwogCiAjZW5kaWYJ CQkJCQkJLyogTE9HSUNBTFdPUktFUl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCmluZGV4 IDJhNTBkMTAuLmM3YjFhZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29y aWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC01Myw3ICs1 Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fZ2V0X3Byb2dyZXNzKFJlcE9yaWdp bklkIG5vZGUsIGJvb2wgZmx1c2gpOwogCiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25f YWR2YW5jZShYTG9nUmVjUHRyIHJlbW90ZV9jb21taXQsCiAJCQkJCQkJCQkgICBYTG9nUmVjUHRy IGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVw T3JpZ2luSWQgbm9kZSk7CitleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVw T3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5f c2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fc2Vzc2lv bl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVzaCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5o CmluZGV4IDAyMDI3NTUuLjNjMzBkYTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaApA QCAtMjYsNyArMjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBQR091dHB1dERhdGEKIAlMaXN0CSAgICpw dWJsaWNhdGlvbl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CiAJYm9vbAkJYmluYXJ5 OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJbWVzc2FnZXM7 CiAJYm9vbAkJdHdvX3BoYXNlOwogCWNoYXIJICAgKm9yaWdpbjsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCBjNzAwYjU1Li5mMGViNmM0IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0zMDgsNiArMzA4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJVGltZXN0YW1wVHogY29tbWl0X3RpbWU7CiAJ CVRpbWVzdGFtcFR6IHByZXBhcmVfdGltZTsKKwkJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKIAl9 CQkJeGFjdF90aW1lOwogCiAJLyoKQEAgLTY3MCw3ICs2NzEsOCBAQCBleHRlcm4gdm9pZCBSZW9y ZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxkKFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExv Z1JlY1B0ciBjb21taXRfbHNuLAogCQkJCQkJCQkJIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJ CQkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RSdW5uaW5n WGlkKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBleHRlcm4gdm9pZCBSZW9yZGVy QnVmZmVySW52YWxpZGF0ZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDkz MzlmMjkuLjBjOGJiZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAt MTgyLDcgKzE4Miw3IEBAIHR5cGVkZWYgc3RydWN0CiAJCQl1aW50MzIJCXByb3RvX3ZlcnNpb247 CS8qIExvZ2ljYWwgcHJvdG9jb2wgdmVyc2lvbiAqLwogCQkJTGlzdAkgICAqcHVibGljYXRpb25f bmFtZXM7CS8qIFN0cmluZyBsaXN0IG9mIHB1YmxpY2F0aW9ucyAqLwogCQkJYm9vbAkJYmluYXJ5 OyAvKiBBc2sgcHVibGlzaGVyIHRvIHVzZSBiaW5hcnkgKi8KLQkJCWJvb2wJCXN0cmVhbWluZzsJ LyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLworCQkJY2hhcgkgICAqc3RyZWFt aW5nX3N0cjsJLyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9vbAkJ dHdvcGhhc2U7CS8qIFN0cmVhbWluZyBvZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJCQkJ CQkJCQkgKiBwcmVwYXJlIHRpbWUgKi8KIAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBwdWJs aXNoIGRhdGEgb3JpZ2luYXRpbmcgZnJvbSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmgKaW5kZXggMmI3MTE0Zi4uOTc1M2RmYyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3LDEyIEBACiAjaW5jbHVkZSAi YWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIK ICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJzdG9y YWdlL3NobV9tcS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX3RvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc3Bpbi5oIgogCiAKQEAgLTYwLDYgKzY0LDE1IEBAIHR5cGVkZWYgc3RydWN0IExvZ2lj YWxSZXBXb3JrZXIKIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qCisJ ICogUElEIG9mIGxlYWRlciBhcHBseSB3b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGEg cGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqLwor CXBpZF90CQlhcHBseV9sZWFkZXJfcGlkOworCisJLyogSW5kaWNhdGVzIHdoZXRoZXIgYXBwbHkg Y2FuIGJlIHBlcmZvcm1lZCBpbiBwYXJhbGxlbC4gKi8KKwlib29sCQlwYXJhbGxlbF9hcHBseTsK KwogCS8qIFN0YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFz dF9zZW5kX3RpbWU7CkBAIC02OCw5ICs4MSw5NSBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVw V29ya2VyCiAJVGltZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAor LyoKKyAqIFN0YXRlIG9mIHRoZSB0cmFuc2FjdGlvbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisgKgorICogVGhlIGVudW0gdmFsdWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBvcmRlciBhcyB0aGUg dHJhbnNhY3Rpb24gc3RhdGUKKyAqIHRyYW5zaXRpb25zLgorICovCit0eXBlZGVmIGVudW0gUGFy YWxsZWxUcmFuc1N0YXRlCit7CisJUEFSQUxMRUxfVFJBTlNfVU5LTk9XTiwKKwlQQVJBTExFTF9U UkFOU19TVEFSVEVELAorCVBBUkFMTEVMX1RSQU5TX0ZJTklTSEVECit9IFBhcmFsbGVsVHJhbnNT dGF0ZTsKKworLyoKKyAqIFN0cnVjdCBmb3Igc2hhcmluZyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzLgorICovCit0 eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCit7CisJc2xvY2tfdAkJbXV0 ZXg7CisKKwlUcmFuc2FjdGlvbklkIHhpZDsKKworCS8qCisJICogU3RhdGUgdXNlZCB0byBlbnN1 cmUgY29tbWl0IG9yZGVyaW5nLgorCSAqCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3 aWxsIHNldCBpdCB0byBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCBhZnRlcgorCSAqIGhhbmRsaW5n IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgd2hpbGUgdGhlIGFwcGx5IGxlYWRlciB3 aWxsCisJICogd2FpdCBmb3IgaXQgdG8gYmVjb21lIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGJl Zm9yZSBwcm9jZWVkaW5nIGluCisJICogdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIChlLmcu IFNUUkVBTV9DT01NSVQvU1RSRUFNX1BSRVBBUkUpLgorCSAqLworCVBhcmFsbGVsVHJhbnNTdGF0 ZSB4YWN0X3N0YXRlOworCisJLyogSW5mb3JtYXRpb24gZnJvbSB0aGUgY29ycmVzcG9uZGluZyBM b2dpY2FsUmVwV29ya2VyIHNsb3QuICovCisJdWludDE2CQlsb2dpY2FscmVwX3dvcmtlcl9nZW5l cmF0aW9uOworCWludAkJCWxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87CisKKwkvKgorCSAqIElu ZGljYXRlcyB3aGV0aGVyIHRoZXJlIGFyZSBwZW5kaW5nIHN0cmVhbWluZyBibG9ja3MgaW4gdGhl IHF1ZXVlLiBUaGUKKwkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBjaGVjayBpdCBiZWZv cmUgc3RhcnRpbmcgdG8gd2FpdC4KKwkgKi8KKwlpbnQJCXBlbmRpbmdfc3RyZWFtX2NvdW50Owor CisJLyoKKwkgKiBUcnVlIGlmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZ29pbmcgdG8g dGFrZSBvciBpcyB0YWtpbmcgdGhlCisJICogc3RyZWFtIGxvY2ssIGZhbHNlIG90aGVyd2lzZS4K KwkgKi8KKwlib29sCXBhX3dhaXRfZm9yX3N0cmVhbTsKKworCS8qCisJICogWGFjdExhc3RDb21t aXRFbmQgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGlzIGlzIHJlcXVpcmVkIGJ5 CisJICogdGhlIGxlYWRlciB3b3JrZXIgc28gaXQgY2FuIHVwZGF0ZSB0aGUgbHNuX21hcHBpbmdz LgorCSAqLworCVhMb2dSZWNQdHIJbGFzdF9jb21taXRfZW5kOworfSBQYXJhbGxlbEFwcGx5V29y a2VyU2hhcmVkOworCisvKgorICogSW5mb3JtYXRpb24gd2hpY2ggaXMgdXNlZCB0byBtYW5hZ2Ug dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxB cHBseVdvcmtlckluZm8KK3sKKwlzaG1fbXFfaGFuZGxlICptcV9oYW5kbGU7CisKKwkvKgorCSAq IFRoZSBxdWV1ZSB1c2VkIHRvIHRyYW5zZmVyIGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIHBhcmFs bGVsIGFwcGx5CisJICogd29ya2VyIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLgorCSAqLwor CXNobV9tcV9oYW5kbGUgKmVycm9yX21xX2hhbmRsZTsKKworCWRzbV9zZWdtZW50ICpkc21fc2Vn OworCisJLyoKKwkgKiBUcnVlIGlmIHRoZSB3b3JrZXIgaXMgYmVpbmcgdXNlZCB0byBwcm9jZXNz IGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB0cmFuc2FjdGlvbi4gRmFsc2UgaW5kaWNhdGVzIHRoaXMg d29ya2VyIGlzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgorCSAqLworCWJvb2wJCWluX3VzZTsKKwor CVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKK30gUGFyYWxsZWxBcHBseVdvcmtl ckluZm87CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFu ZW50IGR1cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5 Q29udGV4dCBBcHBseUNvbnRleHQ7CiAKK2V4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0 IEFwcGx5TWVzc2FnZUNvbnRleHQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBFcnJvckNvbnRleHRD YWxsYmFjayAqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsKKworZXh0ZXJuIFBHRExMSU1QT1JU IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQ7CisKIC8qIGxpYnBx cmVjZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBXYWxSZWNl aXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CiAKQEAgLTg0LDEzICsxODMsMTYgQEAg ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBM b2dpY2FsUmVwV29ya2VyICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJl bGlkLAogCQkJCQkJCQkJCQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxvZ2lj YWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0 IGNoYXIgKnN1Ym5hbWUsCi0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4dGVy biBib29sIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25z dCBjaGFyICpzdWJuYW1lLAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJCQkJ CQkJCSBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVw X3BhX3dvcmtlcl9zdG9wKGludCBzbG90X25vLCB1aW50MTYgZ2VuZXJhdGlvbik7CiBleHRlcm4g dm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1 YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoT2lkIHN1YmlkKTsK IAogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChPaWQgc3Vi b2lkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCSAgIGNoYXIgKm9yaWdpbm5hbWUsIFNpemUgc3pv cmlnaW5uYW1lKTsKQEAgLTEwMywxMCArMjA1LDYzIEBAIGV4dGVybiB2b2lkIHByb2Nlc3Nfc3lu Y2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7CiBleHRlcm4gdm9pZCBpbnZhbGlk YXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzKERhdHVtIGFyZywgaW50IGNhY2hlaWQsCiAJCQkJCQkJ CQkJCXVpbnQzMiBoYXNodmFsdWUpOwogCitleHRlcm4gdm9pZCBhcHBseV9kaXNwYXRjaChTdHJp bmdJbmZvIHMpOworCitleHRlcm4gdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQp OworCitleHRlcm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7CisKKy8qIEZ1bmN0 aW9uIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLworZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3Jf Y2FsbGJhY2sodm9pZCAqYXJnKTsKK2V4dGVybiB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0 X29yaWdpbihjaGFyICpvcmlnaW5uYW1lKTsKKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNl dHVwIGFuZCBpbnRlcmFjdGlvbnMgKi8KK2V4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihU cmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2Zp bmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIHBhX2ZyZWVfd29ya2Vy KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0 ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKK2V4dGVybiB2b2lkIHBhX3N0 b3BfaWRsZV93b3JrZXJzKHZvaWQpOworCitleHRlcm4gdm9pZCBwYV9zZW5kX2RhdGEoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywKKwkJCQkJCSBjb25zdCB2b2lk ICpkYXRhKTsKK2V4dGVybiB2b2lkIHBhX3dhaXRfZm9yX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3c2hhcmVkKTsKKworZXh0ZXJuIHZvaWQgcGFfc2V0X3hhY3Rfc3RhdGUo UGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkgIFBhcmFsbGVsVHJh bnNTdGF0ZSBpbl94YWN0KTsKK2V4dGVybiB2b2lkIHBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2Vy KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CisKK2V4dGVybiB2b2lkIHBhX3N0YXJ0 X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hp ZCk7CitleHRlcm4gdm9pZCBwYV9yZXNldF9zdWJ0cmFucyh2b2lkKTsKK2V4dGVybiB2b2lkIHBh X3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKTsKKwor ZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxv Y2ttb2RlKTsKK2V4dGVybiB2b2lkIHBhX3VubG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQs IExPQ0tNT0RFIGxvY2ttb2RlKTsKKworZXh0ZXJuIHZvaWQgcGFfbG9ja190cmFuc2FjdGlvbihU cmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOworZXh0ZXJuIHZvaWQgcGFfdW5s b2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CisK K2V4dGVybiB2b2lkIHBhX2luY3JlbWVudF9zdHJlYW1fYmxvY2soUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCAqd3NoYXJlZCk7CitleHRlcm4gdm9pZCBwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9i bG9jayhQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKTsKKworI2RlZmluZSBpc1Bh cmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFwcGx5X2xlYWRlcl9waWQgIT0g SW52YWxpZFBpZCkKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZv aWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9 CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fbGVhZGVyX2FwcGx5X3dvcmtlcih2b2lkKQorewor CXJldHVybiAoIU9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkgJiYKKwkJCSFp c1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKSk7Cit9CisKK3N0YXRpYyBp bmxpbmUgYm9vbAorYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKHZvaWQpCit7CisJcmV0dXJuIGlz UGFyYWxsZWxBcHBseVdvcmtlcihNeUxvZ2ljYWxSZXBXb3JrZXIpOworfQorCiAjZW5kaWYJCQkJ CQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvbG1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5kZXggYmUxZDJjOS4uNWEz YmQwMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTEwNyw2ICsxMDcsMTEgQEAgZXh0ZXJuIHZvaWQgTG9j a1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9i anN1YmlkLAogZXh0ZXJuIHZvaWQgVW5sb2NrU2hhcmVkT2JqZWN0Rm9yU2Vzc2lvbihPaWQgY2xh c3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiAJCQkJCQkJCQkJIExPQ0tNT0RFIGxv Y2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9p ZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCQkJICAg TE9DS01PREUgbG9ja21vZGUpOworZXh0ZXJuIHZvaWQgVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZv clNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJ CQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKKwogLyogRGVzY3JpYmUgYSBsb2NrdGFnIGZv ciBlcnJvciBtZXNzYWdlcyAqLwogZXh0ZXJuIHZvaWQgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0lu Zm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCmluZGV4IGU0ZTE0OTUu Ljc3NjYxMjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCkBAIC0xNDksMTAgKzE0OSwxMiBAQCB0eXBlZGVmIGVu dW0gTG9ja1RhZ1R5cGUKIAlMT0NLVEFHX1NQRUNVTEFUSVZFX1RPS0VOLAkvKiBzcGVjdWxhdGl2 ZSBpbnNlcnRpb24gWGlkIGFuZCB0b2tlbiAqLwogCUxPQ0tUQUdfT0JKRUNULAkJCQkvKiBub24t cmVsYXRpb24gZGF0YWJhc2Ugb2JqZWN0ICovCiAJTE9DS1RBR19VU0VSTE9DSywJCQkvKiByZXNl cnZlZCBmb3Igb2xkIGNvbnRyaWIvdXNlcmxvY2sgY29kZSAqLwotCUxPQ0tUQUdfQURWSVNPUlkJ CQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RBR19BRFZJU09SWSwJCQkvKiBhZHZp c29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTgkvKiB0cmFuc2Fj dGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorCQkJCQkJCQkgKiByZXBsaWNhdGlvbiBz dWJzY3JpYmVyICovCiB9IExvY2tUYWdUeXBlOwogCi0jZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBF CUxPQ0tUQUdfQURWSVNPUlkKKyNkZWZpbmUgTE9DS1RBR19MQVNUX1RZUEUJTE9DS1RBR19BUFBM WV9UUkFOU0FDVElPTgogCiBleHRlcm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgTG9j a1RhZ1R5cGVOYW1lc1tdOwogCkBAIC0yNzgsNiArMjgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExP Q0tUQUcKIAkgKGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdfQURWSVNPUlksIFwKIAkg KGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhvZGlkID0gVVNFUl9MT0NLTUVUSE9EKQogCisvKgor ICogSUQgaW5mbyBmb3IgYSByZW1vdGUgdHJhbnNhY3Rpb24gb24gYSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHN1YnNjcmliZXIgaXM6IERCCisgKiBPSUQgKyBTVUJTQ1JJUFRJT04gT0lEICsgVFJBTlNB Q1RJT04gSUQgKyBPQkpJRAorICovCisjZGVmaW5lIFNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNU SU9OKGxvY2t0YWcsZGJvaWQsc3Vib2lkLHhpZCxvYmppZCkgXAorCSgobG9ja3RhZykubG9ja3Rh Z19maWVsZDEgPSAoZGJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMiA9IChzdWJv aWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMyA9ICh4aWQpLCBcCisJIChsb2NrdGFn KS5sb2NrdGFnX2ZpZWxkNCA9IChvYmppZCksIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9 IExPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04sIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21l dGhvZGlkID0gREVGQVVMVF9MT0NLTUVUSE9EKQogCiAvKgogICogUGVyLWxvY2tlZC1vYmplY3Qg bG9jayBpbmZvcm1hdGlvbjoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3Np Z25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggZWU2MzY5MC4u OTNhNTFmNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlw ZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRl cnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGds b2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwg LyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX1BB UkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9EQVRBQkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dh aXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCAwYjIxMDBi Li43NjNmYmVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Miw2ICs0Miw3IEBAIHR5cGVk ZWYgZW51bQogCVdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJ Q0FMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4sCisJV0FJ VF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9SRUNPVkVS WV9XQUxfU1RSRUFNLAogCVdBSVRfRVZFTlRfU1lTTE9HR0VSX01BSU4sCiAJV0FJVF9FVkVOVF9X QUxfUkVDRUlWRVJfTUFJTiwKQEAgLTEwNSw2ICsxMDYsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlU X0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRfRVZFTlRfSEFTSF9HUk9X X0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVCwK KwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFLAogCVdBSVRf RVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVf Q0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggYzEzZDIxOC4uMWVkNmY0YyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE3LDcgKzExNyw3IEBAIEhJ TlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRo ZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jl c3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBE Uk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIzOwpAQCAtMTM4LDcgKzEzOCw3IEBAIEVS Uk9SOiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3NpbmcgIj0iIGFmdGVy ICJmb29iYXIiIGluIGNvbm5lY3RpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0cHViMiwgdGVzdHB1YjMgV0lUSCAocmVmcmVzaCA9IGZh bHNlKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNLSVAgKGxzbiA9ICcwLzEyMzQ1Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzEyMzQ1CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAg ICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qy IHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9ORQpAQCAtMTcwLDcg KzE3MCw3IEBAIEVSUk9SOiAgaW52YWxpZCBXQUwgbG9jYXRpb24gKExTTik6IDAvMAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAg UHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAtMjA1LDcgKzIw NSw3IEBAIEhJTlQ6ICBBdmFpbGFibGUgdmFsdWVzOiBsb2NhbCwgcmVtb3RlX3dyaXRlLCByZW1v dGVfYXBwbHksIG9uLCBvZmYuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgICBOYW1lICAgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30g fCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdDIgfCAwLzAKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBz aW1wbGUKQEAgLTI0Miw3ICsyNDIsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24s IHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgdCAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGJpbmFyeSA9IGZhbHNlKTsKQEAg LTI1MSwxMyArMjUxLDEzIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzbG90X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFt aW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBV QkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28p OwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlCitFUlJPUjogIHN0 cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFsbGVsIgogLS0gbm93IGl0 IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29u bmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24g d2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBAIC0yNjYsNyArMjY2LDE1IEBAIEhJ TlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRo ZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorKDEgcm93KQorCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworXGRScysKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg U2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzdHJlYW1pbmcgPSBmYWxzZSk7CkBAIC0yNzUsNyArMjgzLDcgQEAgQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAt IHB1YmxpY2F0aW9uIGFscmVhZHkgZXhpc3RzCkBAIC0yOTMsNyArMzAxLDcgQEAgRVJST1I6ICBw dWJsaWNhdGlvbiAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNz X3Rlc3RzdWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAgfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0 cHViMn0gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gdXNlZCBt b3JlIHRoZW4gb25jZQpAQCAtMzExLDcgKzMxOSw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVm CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwog ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93 KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CkBAIC0zNTAsNyArMzU4LDcg QEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVh dGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAt LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAg ICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFz ZSBvcHRpb24gbm90IHN1cHBvcnRlZC4KQEAgLTM2Miw3ICszNzAsNyBAQCBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC0z NzUsNyArMzgzLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBt YW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg U2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IHQgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTM5MSw3ICsz OTksNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5 IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg ZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKQEAgLTM5OSw3ICs0 MDcsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoZGlzYWJsZV9v bl9lcnJvciA9IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwK aW5kZXggZWFlYWRlOC4uNzk5MWFiZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24u c3FsCkBAIC0xNjcsNyArMTY3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0g c3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcg PSBmb28pOwogCiAtLSBub3cgaXQgd29ya3MKQEAgLTE3NSw2ICsxNzUsMTAgQEAgQ1JFQVRFIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0JyBQVUIKIAogXGRScysKIAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKKworXGRScysKKwogQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIApkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2MGM3MWQwLi40MmM1YzRkIDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMTQ3Miw2ICsxNDcyLDcgQEAgTG9naWNhbFJlcFJlbElkCiBMb2dp Y2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxiYWNr UHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2FsUmVwVHVw bGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCkBAIC0xNjYzLDYgKzE2NjQs OSBAQCBPdmVycmlkZVN0YWNrRW50cnkKIE92ZXJyaWRpbmdLaW5kCiBQQUNFX0hFQURFUgogUEFD TAorUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5CitQYXJhbGxlbEFwcGx5V29ya2VySW5mbworUGFy YWxsZWxBcHBseVdvcmtlclNoYXJlZAogUEFUSAogUEJPT0wKIFBDdHh0SGFuZGxlCkBAIC0xODk0 LDYgKzE4OTgsNyBAQCBQYXJhbGxlbFNsb3RSZXN1bHRIYW5kbGVyCiBQYXJhbGxlbFN0YXRlCiBQ YXJhbGxlbFRhYmxlU2NhbkRlc2MKIFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGEKK1BhcmFsbGVs VHJhbnNTdGF0ZQogUGFyYWxsZWxWYWN1dW1TdGF0ZQogUGFyYWxsZWxXb3JrZXJDb250ZXh0CiBQ YXJhbGxlbFdvcmtlckluZm8KQEAgLTI3ODMsNiArMjc4OCw3IEBAIFRyYW5zYWN0aW9uU3RtdEtp bmQKIFRyYW5zZm9ybUluZm8KIFRyYW5zZm9ybUpzb25TdHJpbmdWYWx1ZXNTdGF0ZQogVHJhbnNp dGlvbkNhcHR1cmVTdGF0ZQorVHJhbnNBcHBseUFjdGlvbgogVHJnbUFyYwogVHJnbUFyY0luZm8K IFRyZ21Cb3VuZAotLSAKMi43LjIud2luZG93cy4xCgo= --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v60-0003-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v60-0003-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v60-0003-Test-streaming-parallel-option-in-tap-test.patch"; size=81988; creation-date="Tue, 13 Dec 2022 13:05:50 GMT"; modification-date="Tue, 13 Dec 2022 13:07:02 GMT" Content-Transfer-Encoding: base64 RnJvbSBmZDExNzA2YjJhYzYzOWVkZDE4NDc5Mjc0MjM5YzAwNDVhOTNiMDljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NjAg My83XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICB8IDIzMiArKysrKy0t LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgMTQzICsr Ky0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCAgICAgfCAyMjEg KysrKy0tLQogLi4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICAgICAgICAgIHwg MjMzICsrKysrLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAg ICAgfCAxMzQgKysrKy0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5w bCAgICB8IDM5MyArKysrKysrKy0tLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNl X3N0cmVhbS5wbCAgICAgfCA1NDAgKysrKysrKysrKystLS0tLS0tCiAuLi4vdC8wMzJfc3RyZWFt X3BhcmFsbGVsX2NvbmZsaWN0LnBsICAgICAgICAgfCAxNTIgKysrKysKIDkgZmlsZXMgY2hhbmdl ZCwgMTQwNCBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5w bAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCA4NWQxZGQ5Mjk1Li5iOTUxZDk3NGFj IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC0zNiw2ICszNiw3IEBAIHRlc3RzICs9 IHsKICAgICAgICd0LzAyOV9vbl9lcnJvci5wbCcsCiAgICAgICAndC8wMzBfb3JpZ2luLnBsJywK ICAgICAgICd0LzAzMV9jb2x1bW5fbGlzdC5wbCcsCisgICAgICAndC8wMzJfc3RyZWFtX3BhcmFs bGVsX2NvbmZsaWN0LnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uMzg5NDFm ZmMwMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTQ5 IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBi eSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkg KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisK KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9n KAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNU UkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0 ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1p bmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhl IHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rf c3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJh bnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0gJyc7 CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGltZXIgPSBJUEM6 OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7 CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKwkjIElmICJz dHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0 byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVH MSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3Np dHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxxCisJ fTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28g aWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0 LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor CisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUg NjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwor CWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBv ZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNo ZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZh bHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBi ZWhhdmUKKwkjIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNF VCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgor CSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFs bGVsLCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJv bSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlp cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRh CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OwpAQCAtMzcsNiArMTgwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRI IChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksODIgKzE5NiwyNSBAQCBteSAkcmVzdWx0ID0K IAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9u cywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCi1teSAkaW4gID0gJyc7Ci1teSAkb3V0 ID0gJyc7Ci0KLW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKLQotbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAotCW9uX2Vycm9y X3N0b3AgPT4gMCk7Ci0KLSRpbiAuPSBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotfTsKLSRoLT5wdW1wX25iOwot Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4g NTAwMDsKLUNPTU1JVDsKLX0pOwotCi0kaW4gLj0gcXsKLUNPTU1JVDsKLVxxCi19OwotJGgtPmZp bmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVt IGhlcmUKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot JHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksICdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBp biBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwgJ2NoZWNr IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFy YWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBp ZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyk7CiAKLSMgQ2hhbmdlIHRoZSBsb2NhbCB2 YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCi0jIHVwZGF0ZSBw dWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQK LSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rp b25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIg U0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyci Ci0pOwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIpOwogCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfcHVibGlzaGVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdo aWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBU SU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1 NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwgcXEo NjY2N3w2NjY3fDY2NjcpLAotCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBj aGFuZ2VkIGRhdGEnKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVf cHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2 X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9z dWJ4YWN0LnBsCmluZGV4IGJjMGE5Y2QwNTMuLjM2YTE4MDMwMmIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTgsNiArOCw5NCBAQCB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRp c19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFy L0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5 cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRo ZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBw YXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1p bmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWlu ZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAk aXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWlu ZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNr CisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBt ZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK KwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAxMDAwKSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMjsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgMjAwMCkgcyhpKTsKKwlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyMDAxLCAyNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDE2 Njd8MTY2N3wxNjY3KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGlu IHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn CisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMiki KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBS ZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30K KwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTI1LDEwIEBAICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3Vi JzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04g dGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0k YXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpA QCAtNDksNDEgKzE0MSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwy fDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0j IEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNB VkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAwKSBz KGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0 ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDE2Njd8MTY2N3wxNjY3KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCki KTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisg IG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQg YWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmli ZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE3X3N0cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MTJlNC4uNWU3MTY4MjhjZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCwxMzggQEAg dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ CQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFN ICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFs bCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIK KyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3Ry ZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJl YW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIGEgc21hbGwg KG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOworCUNPTU1JVDsKKwl9KTsKKworCSMgSWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVk IHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5n IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVC VUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERN TAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lO OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAy MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoy MDAyKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3Vs dCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgQSBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERM IGlzIHBlcmZvcm1lZAorCSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUg dGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0CisJIyB0aGUgbmV4dCB0cmFuc2Fj dGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMjAwMyw1MDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJ TlQ7CisJQ09NTUlUOworCX0pOworCisJIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3Qg Z2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKKwkjIHNlbmQgdGhl IHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJl dmlvdXMgdGVzdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppLCA0KmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1MDA1KSBzKGkp OworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVz dWx0LCBxcSg1MDA1fDUwMDJ8NDAwNXwzMDA0fDUpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGMsIERST1Ag Q09MVU1OIGQsIERST1AgQ09MVU1OIGUsIERST1AgQ09MVU1OIGY7CisJfSk7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1 Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE2OSwxMCBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxODUs MjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxsIChub24t c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xV TU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQs IG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwg KG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioy MDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQp LCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAw MnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5n IG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAw KTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4g T25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3 ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUg bmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVy YXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdv bid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQg dGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUg cHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCks IC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7 Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNv dW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMw MDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0 cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGls KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9y dC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bAppbmRleCA1NTFmMTZkZjZkLi5iNDA0ZmVkNGI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTQ1IEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAor CQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVB TSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBh bGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmci CisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0 cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3Ry ZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5h bWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3Ry ZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8g Y2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEg bG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5 LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVy IGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBS T0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsK KwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sg VE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAw KSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFj ayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciBy ZWNlaXZpbmcgb3V0IG9mIG9yZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDQwMDEsNDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDAp IHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQ T0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODAwMSw4NTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09N TUlUJyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3 YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNl aXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUw MSwxMDAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQUJPUlQnKTsKKworCSRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDAp LCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENs ZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1 Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYgKzE3NSwxMCBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ4LDgxICsxOTEs MjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdp dGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEs MTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOwotUk9M TEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMwMDEsMzUw MCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOwotQ09NTUlU OwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSgyMDAwfDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBv biBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7 CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2 aW5nIG91dCBvZiBvcmRlcgotIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0 NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDYwMDEsNjUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNzAwMSw3NTAwKSBzKGkpOwotUkVMRUFTRSBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkp OwotUk9MTEJBQ0sgVE8gczE7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1ST0xMQkFDSzsK LX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0k cmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo MjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlf c3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCA0ZDdkYTgyYjdhLi5jMDVkODgyMDUy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3Rf ZGRsX2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3Vi eGFjdF9kZGxfYWJvcnQucGwKQEAgLTksNiArOSw5MSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwog CisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBs ZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor c3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0 LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkk b2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVw cyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNh bWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVh bWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87 CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNw ZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor CSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0 LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUw MCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5U OworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhp KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCVJPTExCQUNLIFRPIHMx OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVs X2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsK KworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgxMDAwfDUwMCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2Fz IHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCX0p OworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJl c2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21l c3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjIsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC00OSwzNSArMTM4LDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7 Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMo aSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMz OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwg LTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0 ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwx MDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7Ci1pcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVw b2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJh bGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1 YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMzdiYS4u NDkwMjI2M2Q2NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNl X2Nhc2NhZGUucGwKQEAgLTExLDYgKzExLDIzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk c3RyZWFtaW5nX21vZGUsICR0eXBlKSA9IEBfOworCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAn cGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIv REVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlw ZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhl IGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFt ZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWlu Zz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5n Cit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2Zmc2V0X0IgPSAwOworCW15 ICRvZmZzZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJ CSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJ V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsK KworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVf Qi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0Mt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZv ciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxf cXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0Ig RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVy eV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAx LiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBj b21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAi cGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9u IHdhcyBwcmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUg dG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1 cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxs ZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9D LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7CisJJG9m ZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyBUaGVuIDJQQyBQ UkVQQVJFCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsK KwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsK KworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9C LCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSwgJ1BSRVBBUkUnKTsKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfQywgJG9mZnNldF9DLCAkc3RyZWFtaW5nX21vZGUsICdQUkVQQVJFJyk7CisK KwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy KHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJl c3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9C KTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQg PSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgz MzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJ KTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMo JHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2 ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKwor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0 aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJl dmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJv dy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJl YW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0 IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3Mg KD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAo ZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldF9CID0gLXMgJG5vZGVfQi0+bG9n ZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dmaWxlOworCisJIyAyUEMgUFJFUEFS RSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn b3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSwgJ1BSRVBBUkUnKTsK KworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIo cykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRu b2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7 CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBz dGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vi c2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7CisK KwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFsbCB0 aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxl ZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRyZXN1 bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwg J1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQg PQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAn Zm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVz ZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVz dWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycp OworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0EtPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9DKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1p bmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9CLT5y ZWxvYWQ7CisKKwkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorfQorCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVwIGEgY2FzY2FkZSBvZiBwdWIv c3ViIG5vZGVzLgogIyBub2RlX0EgLT4gbm9kZV9CIC0+IG5vZGVfQwpAQCAtMjYwLDE2MCArNDky LDE1IEBAIGlzKCRyZXN1bHQsIHFxKDIxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9u IHN1YnNjcmliZXIgQycpOwogIyAyUEMgKyBTVFJFQU1JTkcgVEVTVFMKICMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAKLW15ICRvbGRwaWRfQiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwot bXkgJG9sZHBpZF9DID0gJG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxF Q1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci0KLSMgU2V0dXAgbG9n aWNhbCByZXBsaWNhdGlvbiAoc3RyZWFtaW5nID0gb24pCi0KLSRub2RlX0ItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgotCVNFVCAoc3Ry ZWFtaW5nID0gb24pOyIpOwotJG5vZGVfQy0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCi0JU0VUIChzdHJlYW1pbmcgPSBvbikiKTsKLQot IyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KLQotJG5vZGVf QS0+cG9sbF9xdWVyeV91bnRpbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xk cGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwotJG5vZGVfQi0+cG9sbF9x dWVyeV91bnRpbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0MgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERh dGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0 IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3Jp YmVyKHMpIGFmdGVyIHRoZSBjb21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCi0jIFRoZW4gMlBDIFBSRVBBUkUKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwg JG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ29uJyk7CiAKLSMgY2hl Y2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRy ZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9D LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBv biBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9k ZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVt bnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93 cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0 cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLQotIyBjaGVjayB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgaXMgZW5kZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMo JHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBD Jyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFS RSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVC4KLSMgMC4gQ2xlYW51cCBmcm9t IHByZXZpb3VzIHRlc3QgbGVhdmluZyBvbmx5IDIgcm93cy4KLSMgMS4gSW5zZXJ0IG9uZSBtb3Jl IHJvdy4KLSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5ULgotIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KLSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJl YW1lZCBpbnNlcnRzLgotIyA1LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IGRh dGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0g MiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0 ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIDJQQyBQUkVQQVJFIHdpdGgg YSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgIgotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OSwg J2Zvb2JhcicpOwotCVNBVkVQT0lOVCBzcF9pbm5lcjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUk9MTEJBQ0sgVE8gU0FW RVBPSU5UIHNwX2lubmVyOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ291dGVyJzsKLQkiKTsKLQot JG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy IEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSks ICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09N TUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0 ZXInOyIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVf Qi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rp b24gc3RhdGUgaXMgZW5kZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNj cmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIGNoZWNr IGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KLSMgQWxsIHRoZSBzdHJlYW1l ZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCi0j ICg5OTk5LCAnZm9vYmFyJykgc2hvdWxkIGJlIGNvbW1pdHRlZC4KLSRyZXN1bHQgPSAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIg d2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRl ZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMo JHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVy IEInKTsKLSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3Vs dCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsK LSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiOyIpOwotaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBh cmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdwYXJhbGxlbCcp OwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xl YW51cApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0 cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwK aW5kZXggOWI0NTQxMDZiZC4uYzk2NmFjOTRkYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC04LDYgKzgsMzA4IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFs bGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6 ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21t YW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRl ciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJh bGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEu IERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNv bW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBz dWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMg InBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgcHJlcGFyZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZl IHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAg dXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9k ZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK KwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMg JG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwlteSAk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMo JHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFS RSAvIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIg cm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBz dHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KKwkjCisJIyBF eHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUg ZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1 YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAorCQknUm93cyBpbnNlcnRlZCBieSAy UEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycKKwkp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQ UkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCisJIyAxLiBpbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1p dC4KKwkjIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkLgorCSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5k aW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIE5vdGU6 IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47 CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNo ZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9k ZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNvbW1pdCBwb3N0 IHRoZSByZXN0YXJ0CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZp c2libGUKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRl ZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJB Q0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNo IGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRl ciB0aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjCisJ IyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0 aGUgc3Vic2NyaWJlcgorCSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQ QVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUg b24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJl cicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUg b2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3Rp bGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBh cmF0ZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKwor CSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWIn OyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCisJIyBi dXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0 ZWQKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7CisJaXMoJHJlc3VsdCwgcXEoM3wzfDMpLAorCQknY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0 IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9y dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJF RC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxp Y2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgor CSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQ QVJFLgorCSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgMlBD IGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0 ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJ T04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJl ciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5z YWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVy ZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJ IyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtl IHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNv bW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01N SVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNXwzMzM1fDMz MzUpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQp IGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4g bG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9u IHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJewor CQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJs b2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVwCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszNTAsMTAgQEAgJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBt b2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1YgpAQCAtNjQsMjM2ICszNzAsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0KICRub2RlX3N1 YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNlX3F1ZXJ5KQog ICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIGVuYWJs ZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBG Uk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRh dGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0 YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQg cHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3Rh Yic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3Jp YmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQg b24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlv bl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQu Ci0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMu IERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZp bmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwg YmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwogCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRz IGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExC QUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwg MiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwot Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBDIENPTU1J VCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0jIDEuIGlu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5k aW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIE5vdGU6IGJv dGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3Rf cHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRlJyk7 Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0IHBvc3QgdGhlIHJl c3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQ UkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBj b21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5T RVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jIDEu IFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIEEgc2lu Z2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KLSMgNC4g VGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJv bGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIG9y aWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJl cGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBS RVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0 aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlz IHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3Jk IChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhl IDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMg aW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5 LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwg d2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91dHNpZGUg aW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBh Ym9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJFUEFS RUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxp Y2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0j IDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFS RS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQQyBkYXRh ICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0ICsgaW5z ZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZp cnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRl ZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUgMlBDIHRy YW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQg aXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29i YXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOwogCi0jIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBv dXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxf cXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04i OwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVh bnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFs bGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJh bGxlbF9jb25mbGljdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4x MGVmZDJkMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbApAQCAtMCwwICsxLDE1MiBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVz dCBmb3IgZGVhZGxvY2sgaW4gc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJl cGxpY2F0aW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAk bm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwn KTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xv Z2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0 OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmli ZXItPmluaXQ7CisKKyMgQ2hlY2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJlIGFwcGxpZWQg dXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyMgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cKKyMg dmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisKKyRub2RlX3N1YnNjcmliZXItPnN0 YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50KSIpOwor CisjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRF WCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlv bgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBk Ym5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElP TiB0YXBfcHViCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNl KSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0 a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn LCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlciBjYW4gYmUgZGV0 ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQgYmVmb3JlIHRoZQorIyBsZWFkZXIg d29ya2VyLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtB LVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsv LAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOwor XHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBp ZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lz KCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBw bHkgd29ya2VycyBjYW4gYmUgZGV0ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9Owor JGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIGZpcnN0IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQKKyMgYmVmb3JlIHRoZSBzZWNvbmQgb25l LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsvLAorCSRv ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFk bG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsK LS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v60-0004-Allow-streaming-every-change-without-waiting-til.patch" Content-Description: v60-0004-Allow-streaming-every-change-without-waiting-til.patch Content-Disposition: attachment; filename="v60-0004-Allow-streaming-every-change-without-waiting-til.patch"; size=5441; creation-date="Tue, 13 Dec 2022 13:05:50 GMT"; modification-date="Tue, 13 Dec 2022 13:07:03 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNjFlMmZkZWQwZGI2OGJmMmNhN2M1YjRjMWIzZjQzMjc3ZDA4OGZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGkgWXUgPHNoaXkuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog TW9uLCAyNCBPY3QgMjAyMiAxNTo1MjoxNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjYwIDQvN10g QWxsb3cgc3RyZWFtaW5nIGV2ZXJ5IGNoYW5nZSB3aXRob3V0IHdhaXRpbmcgdGlsbAogbG9naWNh bF9kZWNvZGluZ193b3JrX21lbS4KCkFkZCBhIG5ldyBHVUMgZm9yY2Vfc3RyZWFtX21vZGUsIHdo ZW4gaXQgaXMgc2V0IG9uLCBzZW5kIHRoZSBjaGFuZ2UgdG8Kb3V0cHV0IHBsdWdpbiBpbW1lZGlh dGVseSBpbiBzdHJlYW1pbmcgbW9kZS4gT3RoZXJ3aXNlLCBzZW5kIHVudGlsCmxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gaXMgZXhjZWVkZWQuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s ICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKwogLi4uL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMzEgKysrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgMTAgKysrKysrCiBz cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgMSArCiA0IGZp bGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmlu ZGV4IDg5YzgxN2MyYTkuLjY0NTQ1NzNhMGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTExNjAwLDYgKzExNjAw LDIyIEBAIExPRzogIENsZWFuVXBMb2NrOiBkZWxldGluZzogbG9jaygweGI3YWNkODQ0KSBpZCgy NDY4OCwyNDY5NiwwLDAsMCwxKQogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWZvcmNlLXN0cmVhbS1tb2RlIiB4cmVm bGFiZWw9ImZvcmNlX3N0cmVhbV9tb2RlIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmZvcmNlX3N0 cmVhbV9tb2RlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0 ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmZvcmNlX3N0cmVhbV9tb2RlPC92YXJuYW1l PiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgor ICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBT cGVjaWZpZXMgd2hlYXRoZXIgdG8gZm9yY2Ugc2VuZGluZyB0aGUgY2hhbmdlcyB0byBvdXRwdXQg cGx1Z2luCisgICAgICAgIGltbWVkaWF0ZWx5IGluIHN0cmVhbWluZyBtb2RlLiBJZiBzZXQgdG8g PGxpdGVyYWw+b2ZmPC9saXRlcmFsPiAodGhlCisgICAgICAgIGRlZmF1bHQpLCBzZW5kIHVudGls IDx2YXJuYW1lPmxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW08L3Zhcm5hbWU+IGlzCisgICAgICAg IGV4Y2VlZGVkLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvc2VjdDE+CiAgIDxzZWN0MSBp ZD0icnVudGltZS1jb25maWctc2hvcnQiPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA4ZDViYmFhZGIxLi40ODFhMDMxMjY5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAt MjA5LDYgKzIwOSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyRGlza0NoYW5nZQog aW50CQkJbG9naWNhbF9kZWNvZGluZ193b3JrX21lbTsKIHN0YXRpYyBjb25zdCBTaXplIG1heF9j aGFuZ2VzX2luX21lbW9yeSA9IDQwOTY7IC8qIFhYWCBmb3IgcmVzdG9yZSBvbmx5ICovCiAKKy8q CisgKiBXaGVhdGhlciB0byBzZW5kIHRoZSBjaGFuZ2UgdG8gb3V0cHV0IHBsdWdpbiBpbW1lZGlh dGVseSBpbiBzdHJlYW1pbmcgbW9kZS4KKyAqIFdoZW4gaXQgaXMgb2ZmLCB3YWl0IHVudGlsIGxv Z2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gaXMgZXhjZWVkZWQuCisgKi8KK2Jvb2wJCWZvcmNlX3N0 cmVhbV9tb2RlOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqIHByaW1hcnkgcmVvcmRlcmJ1ZmZlciBzdXBwb3J0IHJvdXRpbmVzCiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM1NTUsMjAgKzM1NjEsMjkgQEAgUmVv cmRlckJ1ZmZlckNoZWNrTWVtb3J5TGltaXQoUmVvcmRlckJ1ZmZlciAqcmIpCiB7CiAJUmVvcmRl ckJ1ZmZlclRYTiAqdHhuOwogCi0JLyogYmFpbCBvdXQgaWYgd2UgaGF2ZW4ndCBleGNlZWRlZCB0 aGUgbWVtb3J5IGxpbWl0ICovCi0JaWYgKHJiLT5zaXplIDwgbG9naWNhbF9kZWNvZGluZ193b3Jr X21lbSAqIDEwMjRMKQorCS8qCisJICogU3RyZWFtIHRoZSBjaGFuZ2VzIGltbWVkaWF0ZWx5IGlm IGZvcmNlX3N0cmVhbV9tb2RlIGlzIG9uIGFuZCB0aGUgb3V0cHV0CisJICogcGx1Z2luIHN1cHBv cnRzIHN0cmVhbWluZy4gT3RoZXJ3aXNlIHdhaXQgdW50aWwgc2l6ZSBleGNlZWRzCisJICogbG9n aWNhbF9kZWNvZGluZ193b3JrX21lbS4KKwkgKi8KKwlib29sIGZvcmNlX3N0cmVhbSA9IChmb3Jj ZV9zdHJlYW1fbW9kZSAmJiBSZW9yZGVyQnVmZmVyQ2FuU3RyZWFtKHJiKSk7CisKKwkvKiBiYWls IG91dCBpZiBmb3JjZV9zdHJlYW0gaXMgZmFsc2UgYW5kIHdlIGhhdmVuJ3QgZXhjZWVkZWQgdGhl IG1lbW9yeSBsaW1pdCAqLworCWlmICghZm9yY2Vfc3RyZWFtICYmIHJiLT5zaXplIDwgbG9naWNh bF9kZWNvZGluZ193b3JrX21lbSAqIDEwMjRMKQogCQlyZXR1cm47CiAKIAkvKgotCSAqIExvb3Ag dW50aWwgd2UgcmVhY2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4gIE9uZSBtaWdodCB0aGluayB0 aGF0IGp1c3QKLQkgKiBieSBldmljdGluZyB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5zYWN0aW9uIHdl IHdpbGwgY29tZSB1bmRlciB0aGUgbWVtb3J5Ci0JICogbGltaXQgYmFzZWQgb24gYXNzdW1wdGlv biB0aGF0IHRoZSBzZWxlY3RlZCB0cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcwotCSAqIGxhcmdl IGFzIHRoZSBtb3N0IHJlY2VudCBjaGFuZ2UgKHdoaWNoIGNhdXNlZCB1cyB0byBnbyBvdmVyIHRo ZSBtZW1vcnkKLQkgKiBsaW1pdCkuIEhvd2V2ZXIsIHRoYXQgaXMgbm90IHRydWUgYmVjYXVzZSBh IHVzZXIgY2FuIHJlZHVjZSB0aGUKKwkgKiBJZiBmb3JjZV9zdHJlYW0gaXMgdHJ1ZSwgbG9vcCB1 bnRpbCB0aGVyZSdzIG5vIGNoYW5nZS4gT3RoZXJ3aXNlLCBsb29wCisJICogdW50aWwgd2UgcmVh Y2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4gT25lIG1pZ2h0IHRoaW5rIHRoYXQganVzdCBieQor CSAqIGV2aWN0aW5nIHRoZSBsYXJnZXN0IChzdWIpdHJhbnNhY3Rpb24gd2Ugd2lsbCBjb21lIHVu ZGVyIHRoZSBtZW1vcnkgbGltaXQKKwkgKiBiYXNlZCBvbiBhc3N1bXB0aW9uIHRoYXQgdGhlIHNl bGVjdGVkIHRyYW5zYWN0aW9uIGlzIGF0IGxlYXN0IGFzIGxhcmdlIGFzCisJICogdGhlIG1vc3Qg cmVjZW50IGNoYW5nZSAod2hpY2ggY2F1c2VkIHVzIHRvIGdvIG92ZXIgdGhlIG1lbW9yeSBsaW1p dCkuCisJICogSG93ZXZlciwgdGhhdCBpcyBub3QgdHJ1ZSBiZWNhdXNlIGEgdXNlciBjYW4gcmVk dWNlIHRoZQogCSAqIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gdG8gYSBzbWFsbGVyIHZhbHVl IGJlZm9yZSB0aGUgbW9zdCByZWNlbnQKIAkgKiBjaGFuZ2UuCiAJICovCi0Jd2hpbGUgKHJiLT5z aXplID49IGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gKiAxMDI0TCkKKwl3aGlsZSAoKCFmb3Jj ZV9zdHJlYW0gJiYgcmItPnNpemUgPj0gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSAqIDEwMjRM KSB8fAorCQkgICAoZm9yY2Vfc3RyZWFtICYmIHJiLT5zaXplID4gMCkpCiAJewogCQkvKgogCQkg KiBQaWNrIHRoZSBsYXJnZXN0IHRyYW5zYWN0aW9uIChvciBzdWJ0cmFuc2FjdGlvbikgYW5kIGV2 aWN0IGl0IGZyb20KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggOTFmMDQ3OTE5 NC4uMjFiMTI1ZmIyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEyNDcs NiArMTI0NywxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQog CQlmYWxzZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7ImZvcmNlX3N0cmVhbV9t b2RlIiwgUEdDX1VTRVJTRVQsIERFVkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJG b3JjZSBzZW5kaW5nIHRoZSBjaGFuZ2VzIHRvIG91dHB1dCBwbHVnaW4gaW1tZWRpYXRlbHkgaWYg c3RyZWFtaW5nIGlzIHN1cHBvcnRlZCwgd2l0aG91dCB3YWl0aW5nIHRpbGwgbG9naWNhbF9kZWNv ZGluZ193b3JrX21lbS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfTk9UX0lOX1NBTVBMRQorCQl9LAor CQkmZm9yY2Vfc3RyZWFtX21vZGUsCisJCWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwK IAogCXsKIAkJeyJsb2dfZHVyYXRpb24iLCBQR0NfU1VTRVQsIExPR0dJTkdfV0hBVCwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCBmMGViNmM0Zjc0Li5mMjRjODg2 ZTFiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0xOCw2ICsx OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgbG9naWNhbF9kZWNvZGluZ193b3JrX21lbTsKK2V4dGVybiBQR0RMTElNUE9SVCBib29s IGZvcmNlX3N0cmVhbV9tb2RlOwogCiAvKiBhbiBpbmRpdmlkdWFsIHR1cGxlLCBzdG9yZWQgaW4g b25lIGNodW5rIG9mIG1lbW9yeSAqLwogdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclR1cGxl QnVmCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v60-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v60-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v60-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=14196; creation-date="Tue, 13 Dec 2022 13:05:50 GMT"; modification-date="Tue, 13 Dec 2022 13:07:04 GMT" Content-Transfer-Encoding: base64 RnJvbSA0Zjc2YjM0Yjc2ZTA4NjAyMGQyNWJiNTUxYjJjODJkYzVkYjA3MjFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjExOjUzICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjAgNS83XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJp YWxpemluZyBtZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICB8ICAzMiArKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMgfCAgNTQgKysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAgMTQgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAgNCArCiAuLi4vdC8wMzJfc3RyZWFtX3BhcmFsbGVs X2NvbmZsaWN0LnBsICAgICAgICAgfCAxNDEgKysrKysrKysrKysrKysrKystCiA2IGZpbGVzIGNo YW5nZWQsIDIzMCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXgg NjQ1NDU3M2EwYi4uODBlNDJmOGY5OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTE2MTYsNiArMTE2MTYsMzgg QEAgTE9HOiAgQ2xlYW5VcExvY2s6IGRlbGV0aW5nOiBsb2NrKDB4YjdhY2Q4NDQpIGlkKDI0Njg4 LDI0Njk2LDAsMCwwLDEpCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc3RyZWFtLXNlcmlhbGl6ZS10aHJlc2hvbGQi IHhyZWZsYWJlbD0ic3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQiPgorICAgICAgPHRlcm0+PHZh cm5hbWU+c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2Vy PC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c3Ry ZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVy PC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlz dGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdv cmtlciB0byBzZXJpYWxpemUgbWVzc2FnZXMgdG8gZmlsZXMgYWZ0ZXIKKyAgICAgICAgc2VuZGlu ZyBzcGVjaWZpZWQgYW1vdW50IG9mIHN0cmVhbWluZyBjaHVua3MgdG8gdGhlIHBhcmFsbGVsIGFw cGx5CisgICAgICAgIHdvcmtlci4gU2V0dGluZyB0aGlzIHRvIHplcm8gc2VyaWFsaXplIGFsbCBt ZXNzYWdlcy4gQSB2YWx1ZSBvZgorICAgICAgICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4gKHRoZSBk ZWZhdWx0KSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFRoaXMgaXMKKyAgICAgICAgaW50ZW5kZWQg dG8gdGVzdCBzZXJpYWxpemF0aW9uIHRvIGZpbGVzIHdpdGgKKyAgICAgICAgPGxpdGVyYWw+c3Ry ZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxw YXJhPgorICAgICAgICBXaGVuIGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaXB0aW9uIDxsaXRl cmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4KKyAgICAgICAgcGFyYW1ldGVyIGlzIHNldCB0byA8bGl0 ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgICAgICAg IHNlbmRzIG1lc3NhZ2VzIHRvIHBhcmFsbGVsIHdvcmtlcnMgd2l0aCBhIHRpbWVvdXQuIEJ5IGRl ZmF1bHQsIHRoZQorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VyaWFsaXplIHRo ZSByZW1haW5pbmcgbWVzc2FnZXMgdG8gZmlsZXMgaWYKKyAgICAgICAgdGhlIHRpbWVvdXQgaXMg ZXhjZWVkZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBhbnkgdmFsdWUgb3RoZXIgdGhhbgor ICAgICAgICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4sIHNlcmlhbGl6ZSB0byBmaWxlcyBldmVuIHdp dGhvdXQgdGltZW91dC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAg VGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZSA8ZmlsZW5hbWU+cG9zdGdyZXNx bC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQg bGluZS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgIDwvdmFyaWFibGVsaXN0PgogICA8L3NlY3QxPgogICA8c2VjdDEgaWQ9InJ1 bnRpbWUtY29uZmlnLXNob3J0Ij4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggMmUyY2QwZDUzNS4uMzJkMDAzZTEy NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMKQEAgLTI1Miw2ICsyNTIsOSBAQCBzdGF0aWMgUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogLyogQSBsaXN0IHRvIG1haW50 YWluIHN1YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLwogc3RhdGljIExpc3QJICAgKnN1YnhhY3Rs aXN0ID0gTklMOwogCisvKiBHVUMgdmFyaWFibGUgKi8KK2ludAkJc3RyZWFtX3NlcmlhbGl6ZV90 aHJlc2hvbGQgPSAtMTsKKwogc3RhdGljIHZvaWQgcGFfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8pOwogc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZSBwYV9n ZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKTsKIHN0YXRp YyBQYXJ0aWFsRmlsZVNldFN0YXRlIHBhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQpOwpAQCAtMTIy NiwzMiArMTIyOSw0MyBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAogCWZvciAoOzspCiAJewotCQly ZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5mby0+bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEsIHRydWUs IHRydWUpOworCQlib29sIGZvcmNlX3NlcmlhbGl6ZSA9IChzdHJlYW1fc2VyaWFsaXplX3RocmVz aG9sZCAhPSAtMSAmJgorCQkJCQkJCQkoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPT0gMCB8 fAorCQkJCQkJCQkgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPCBwYXJhbGxlbF9zdHJlYW1f bmNodW5rcykpOwogCi0JCWlmIChyZXN1bHQgPT0gU0hNX01RX1NVQ0NFU1MpCi0JCQlicmVhazsK LQkJZWxzZSBpZiAocmVzdWx0ID09IFNITV9NUV9ERVRBQ0hFRCkKLQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAotCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRvIHNoYXJlZC1tZW1vcnkgcXVl dWUiKSkpOworCQlpZiAoIWZvcmNlX3NlcmlhbGl6ZSkKKwkJeworCQkJcmVzdWx0ID0gc2htX21x X3NlbmQod2luZm8tPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCB0cnVlLCB0cnVlKTsKIAotCQlB c3NlcnQocmVzdWx0ID09IFNITV9NUV9XT1VMRF9CTE9DSyk7CisJCQlpZiAocmVzdWx0ID09IFNI TV9NUV9TVUNDRVNTKQorCQkJCWJyZWFrOworCQkJZWxzZSBpZiAocmVzdWx0ID09IFNITV9NUV9E RVRBQ0hFRCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg c2VuZCBkYXRhIHRvIHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOwogCi0JCS8qIFdhaXQgYmVmb3Jl IHJldHJ5aW5nLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRD SF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgU0hNX1NF TkRfUkVUUllfSU5URVJWQUxfTVMsCi0JCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExF TF9BUFBMWV9TVEFURV9DSEFOR0UpOworCQkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1fTVFfV09VTERf QkxPQ0spOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJewotCQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKLQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCQkvKiBXYWl0IGJlZm9yZSBy ZXRyeWluZy4gKi8KKwkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkgICBXTF9MQVRD SF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIFNITV9T RU5EX1JFVFJZX0lOVEVSVkFMX01TLAorCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFM TEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJ CXsKKwkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisJCQl9CisKKwkJCWlmIChzdGFydFRpbWUgPT0gMCkKKwkJCQlzdGFydFRpbWUgPSBHZXRDdXJy ZW50VGltZXN0YW1wKCk7CiAJCX0KKwkJZWxzZSBpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hv bGQgIT0gMCkKKwkJCXBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzID0gMDsKIAotCQlpZiAoc3RhcnRU aW1lID09IDApCi0JCQlzdGFydFRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0JCWVsc2Ug aWYgKFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVudFRpbWVz dGFtcCgpLAorCQlpZiAoZm9yY2Vfc2VyaWFsaXplIHx8CisJCQlUaW1lc3RhbXBEaWZmZXJlbmNl RXhjZWVkcyhzdGFydFRpbWUsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSwKIAkJCQkJCQkJCQkJU0hN X1NFTkRfVElNRU9VVF9NUykpCiAJCXsKIAkJCVN0cmluZ0luZm9EYXRhIG1zZzsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGI5YzlmN2ZkNTAuLjZmZTJjYjVm MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzI2LDYg KzMyNiwxMiBAQCBzdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiAgKi8KIHN0YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0g MDsKIAorLyoKKyAqIFRoZSBudW1iZXIgb2Ygc3RyZWFtaW5nIGNodW5rcyBzZW50IGJ5IGxlYWRl ciBhcHBseSB3b3JrZXIgZHVyaW5nIG9uZQorICogc3RyZWFtZWQgdHJhbnNhY3Rpb24uIFRoaXMg aXMgb25seSB1c2VkIHdoZW4gc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPiAwLgorICovCit1 aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaHVua3MgPSAwOworCiAvKgogICogV2UgZW5hYmxlIHNr aXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNFUlQsIFVQREFURSwgZXRj LikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24ncyBm aW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNraXBsc24uCkBAIC0xNTU2LDYgKzE1NjIsOSBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJY2FzZSBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKKwkJCWlmIChzdHJlYW1f c2VyaWFsaXplX3RocmVzaG9sZCA+IDApCisJCQkJcGFyYWxsZWxfc3RyZWFtX25jaHVua3MrKzsK KwogCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEsICFmaXJzdF9zZWdtZW50 KTsKIAogCQkJaWYgKCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCmluZGV4IDIxYjEyNWZiMjYuLmRmMGUzMGIzNWUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbGFyZ2Vfb2JqZWN0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wZ19zaG1lbS5oIgpAQCAt MzAwMyw2ICszMDA0LDE5IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10g PQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJzdHJlYW1fc2VyaWFsaXplX3Ro cmVzaG9sZCIsIFBHQ19TSUdIVVAsIERFVkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29w KCJGb3JjZXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gc2VyaWFsaXplIG1lc3NhZ2VzICIK KwkJCQkJCSAidG8gZmlsZXMgYWZ0ZXIgc2VuZGluZyBzcGVjaWZpZWQgYW1vdW50IG9mIHN0cmVh bWluZyAiCisJCQkJCQkgImNodW5rcyBpbiBzdHJlYW1pbmcgcGFyYWxsZWwgbW9kZS4iKSwKKwkJ CWdldHRleHRfbm9vcCgiQSB2YWx1ZSBvZiAtMSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIiksCisJ CQlHVUNfTk9UX0lOX1NBTVBMRQorCQl9LAorCQkmc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQs CisJCS0xLCAtMSwgSU5UX01BWCwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsi bG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19TSUdIVVAsIExPR0dJTkdfV0hFUkUsCiAJCQlnZXR0ZXh0 X25vb3AoIlNldHMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZvcmNpbmcgIgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCAyMzJmYjkyNjcw Li44NGM1OWMzNWQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aApAQCAtMjE2LDYgKzIxNiwxMCBAQCBleHRlcm4gUEdETExJTVBPUlQgTG9naWNhbFJlcFdvcmtl ciAqTXlMb2dpY2FsUmVwV29ya2VyOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBpbl9yZW1v dGVfdHJhbnNhY3Rpb247CiAKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgc3RyZWFtX3NlcmlhbGl6 ZV90aHJlc2hvbGQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCB1aW50MzIgcGFyYWxsZWxfc3RyZWFt X25jaHVua3M7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xv dCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQg c3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxp Y3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZs aWN0LnBsCmluZGV4IDEwZWZkMmQzNzYuLjU5ZTdlNzUzNGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbApAQCAt MTMsOCArMTMsMTEgQEAgbXkgJG9mZnNldCA9IDA7CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQog bXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJs aXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dp Y2FsJyk7Ci0kbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAot CSdsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5h cHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCisJbG9naWNhbF9kZWNvZGluZ193 b3JrX21lbSA9IDY0a0IKKwltYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAKKykpOwogJG5v ZGVfcHVibGlzaGVyLT5zdGFydDsKIAogIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCkBAIC0yNCw3 ICsyNywxMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT5pbml0OwogIyBDaGVjayBpZiBhbnkgc3RyZWFt aW5nIGNodW5rcyBhcmUgYXBwbGllZCB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBX ZQogIyBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQs IHNvIGJ1bXAgdXAgdGhlIGxvZwogIyB2ZXJib3NpdHkuCi0kbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgK Kwlsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxCisJbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9 IDEwCispKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKQEAgLTQ3LDcgKzU0LDcgQEAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1 YgogCUNPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBu YW1lJwogCVBVQkxJQ0FUSU9OIHRhcF9wdWIKLQlXSVRIIChzdHJlYW1pbmcgPSBwYXJhbGxlbCwg Y29weV9kYXRhID0gZmFsc2UpIik7CisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIHR3b19w aGFzZSA9IG9uLCBjb3B5X2RhdGEgPSBmYWxzZSkiKTsKIAogJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIApAQCAtMTQ2LDYgKzE1MywxMzIgQEAgJHJlc3VsdCA9 CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDEwMDAwKSwgJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CiAKKyMgQ2xlYW4gdXAg dGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyMgVGVzdCBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrCisjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworIyBTZXQgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgdG8gemVybywgc28gdGhlIG1l c3NhZ2VzIHdpbGwgYmUgc2VyaWFsaXplZCB0byBkaXNrLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJJ0FMVEVSIFNZU1RFTSBTRVQgc3RyZWFtX3NlcmlhbGl6ZV90 aHJlc2hvbGQgPSAwOycpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIFNlcmlhbGl6 ZSB0aGUgQ09NTUlUIHRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiKTsKKworIyBFbnN1 cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipc LmNoYW5nZXMiIGZvciBzdHJlYW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xlYW4gdXAgdGVz dCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUgUFJFUEFSRSB0 cmFuc2FjdGlvbi4KKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKKwlQUkVQQVJF IFRSQU5TQUNUSU9OICd4YWN0JzsKKwl9KTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMg YXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVC VUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1l ZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXInKTsKKworIyBDaGVjayB0aGF0IDJQQyBnZXRzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDT01NSVQgUFJFUEFS RUQgJ3hhY3QnOyIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwg J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRv IGRpc2snKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVz dF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyMgU2VyaWFsaXplIHRoZSBBQk9SVCB0b3AtdHJhbnNhY3Rpb24uCisjIENoZWNrIHRoZSBzdWJz Y3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxewor CUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKyMgRW5zdXJlIHRoYXQgdGhl IG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9n KAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBm b3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBh Ym9ydGVkIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Citpcygk cmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6 aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUg ZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJV TkNBVEUgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBBQk9SVCBzdWItdHJhbnNhY3Rpb24uCisj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CisJU0FWRVBPSU5UIHNwOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAw KSBzKGkpOworCVJPTExCQUNLIFRPIHNwOworCUNPTU1JVDsKKwl9KTsKKworIyBFbnN1cmUgdGhh dCB0aGUgbWVzc2FnZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5n ZXMiIGZvciBzdHJlYW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IG9ubHkgc3ViLXRy YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlci4KKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKwogJG5vZGVfc3Vic2Ny aWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIAotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v60-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v60-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v60-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=23202; creation-date="Tue, 13 Dec 2022 13:05:50 GMT"; modification-date="Tue, 13 Dec 2022 13:07:04 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMTdlNDQ1NjhhMjhjMTlmYzQ5ODhlMTFkOWQxMzhiM2ZhNjM3ZTE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjAgNi83XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDEw ICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAxMSAr LQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA1ICsK IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMSArCiAuLi4v cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMzAgKysrCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxODIgKysrKysrKysr KysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8 ICAgNyArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAg IDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgICA4 ICsKIC4uLi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwgICAgICAgICB8ICA2OSAr KysrKystCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCA0NGNkYTE1MzgzLi43NTkwODMxM2U1IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbApAQCAtNzk0OCw2ICs3OTQ4LDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZs dDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnJldHJ5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9v bDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgcHJl dmlvdXMgY2hhbmdlIGZhaWxlZCB0byBiZSBhcHBsaWVkIHdoaWxlIHRoZXJlIHdlcmUgYW55Cisg ICAgICAgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG5lY2Vzc2l0YXRpbmcgYSByZXRy eS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVjdGZpZWxk PiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggYTdiZDliZTk1NC4uYTYzZmExNTQ5YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCkBAIC0xNTAwLDEyICsxNTAwLDExIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90 ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAK ICAgPHBhcmE+CiAgICBXaGVuIHRoZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxl bDwvbGl0ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCi0gICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1h eSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KLSAg IGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IG9yIDxs aXRlcmFsPm9mZjwvbGl0ZXJhbD4gYW5kCi0gICBjYXVzZSB0aGUgc2FtZSBjb25mbGljdHMgYWdh aW4gc28gdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsCi0gICBi ZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04s IHBsZWFzZSByZWZlciB0byA8bGluawotICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9u Ij48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uCi0gICBTS0lQPC9jb21tYW5kPjwvbGlu az4uCisgICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNh c2UsIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24KKyAgIHdpbGwgYmUgcmV0cmllZCBpbiA8bGl0ZXJh bD5zdHJlYW1pbmcgPSBvbjwvbGl0ZXJhbD4gbW9kZS4gSWYgaXQgZmFpbHMKKyAgIGFnYWluLCB0 aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwgYmUgd3JpdHRlbiB0 byB0aGUKKyAgIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNl IHJlZmVyIHRvCisgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21t YW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gU0tJUDwvY29tbWFuZD48L2xpbms+LgogICA8L3Bh cmE+CiAgPC9zZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bAppbmRleCBmMTczYTA5MDM3Li42NGQ1ODAyYWRkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjUxLDYgKzI1MSwxMSBAQCBDUkVBVEUgU1VCU0NSSVBU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVw bGFjZWFibAogICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlm IGFuIGVycm9yIGhhcHBlbnMgaW4gYQogICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwg dGhlIGZpbmlzaCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgogICAgICAgICAgIG1pZ2h0 IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KKyAgICAgICAgICBXaGVuIGFwcGx5 aW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMsIGlmIGEgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQsIHRo ZQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGV4aXQgd2l0aCBhbiBlcnJv ci4gVGhlCisgICAgICAgICAgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+IG1vZGUgaXMgZGlz cmVnYXJkZWQgd2hlbiByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRoZSB0cmFuc2FjdGlv biB3aWxsIGJlIGFwcGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+CisgICAgICAgICAg bW9kZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zh cmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGE1MDZm YzNlYzguLjcyM2IxNDFjNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpA QCAtNzEsNiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdf b2spCiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0 YXRlID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1 YmZvcm0tPnN1YmRpc2FibGVvbmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3VicmV0cnk7 CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJ UFRJT05PSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggMmQ4MTA0YjA5 MC4uYzJjN2Q4YThiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTMw MSw3ICsxMzAxLDcgQEAgUkVWT0tFIEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVz IEZST00gcHVibGljOwogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7 CiBHUkFOVCBTRUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3du ZXIsIHN1YmVuYWJsZWQsCiAgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0 d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1l LCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAg ICAgc3VicmV0cnksIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMs IHN1Ym9yaWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUg VklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCmluZGV4IDBjZWNiYzczOTAuLmY3MjI3YWFkM2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTYzNCw2ICs2MzQsNyBAQCBDcmVhdGVT dWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpz dG10LAogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExP R0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVv bmVycik7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29s R2V0RGF0dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5m byAtIDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xv dF9uYW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYwppbmRleCAzMmQwMDNlMTI2Li41ZTAwZGZlYjI0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YwpAQCAtMjk5LDYgKzI5OSwxNyBAQCBwYV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJ aWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoKKwkgKiBE b24ndCB1c2UgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBmb3IgcmV0cmllcywgYmVjYXVzZSBpdCBp cyBwb3NzaWJsZQorCSAqIHRoYXQgYSBkZWFkbG9jayB3YXMgZGV0ZWN0ZWQgdGhlIGxhc3QgdGlt ZSB3ZSB0cmllZCB0byBhcHBseSBhCisJICogdHJhbnNhY3Rpb24gdXNpbmcgYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSkKKwl7CisJCWVs b2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJp ZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCXJldHVybiB0cnVlOwogfQogCkBAIC0xNzEw LDMgKzE3MjEsMjIgQEAgcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2soUGFyYWxsZWxBcHBs eVdvcmtlclNoYXJlZCAqd3NoYXJlZCkKIAl3c2hhcmVkLT5wYV93YWl0X2Zvcl9zdHJlYW0gPSBm YWxzZTsKIAlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKIH0KKworLyogQ2hlY2sg aWYgYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworYm9vbAorcGFfaGF2ZV9h Y3RpdmVfd29ya2VyKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp0 bXBfd2luZm87CisKKwkJdG1wX3dpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxm aXJzdChsYyk7CisKKwkJaWYgKHRtcF93aW5mby0+aW5fdXNlKQorCQkJcmV0dXJuIHRydWU7CisJ fQorCisJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMKaW5kZXggNmZlMmNiNWYzMy4uYTI0ZDUzNjBmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIHZvaWQgc2Vu ZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJl cGx5KTsKIAogc3RhdGljIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1v dGVfbHNuLCBYTG9nUmVjUHRyIGxvY2FsX2xzbik7CiAKLXN0YXRpYyB2b2lkIERpc2FibGVTdWJz Y3JpcHRpb25BbmRFeGl0KHZvaWQpOworc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbk9u RXJyb3Iodm9pZCk7CiAKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwo TG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hh bmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKQEAgLTQzMCw2 ICs0MzAsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9p bmZvKHZvaWQpOwogc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKip3aW5mbyk7CiAKK3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnko Ym9vbCByZXRyeSk7CisKIC8qCiAgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxvZ2ljYWwgcmVw bGljYXRpb24gd29ya2VyLgogICovCkBAIC0xMDM2LDYgKzEwMzgsOSBAQCBhcHBseV9oYW5kbGVf Y29tbWl0KFN0cmluZ0luZm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVp bmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMo Y29tbWl0X2RhdGEuZW5kX2xzbik7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlz ZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHko U1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9 CkBAIC0xMTQyLDYgKzExNDcsOSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMp CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRy eSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2Vz cyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8K IAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTE5 OCw2ICsxMjA2LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMp CiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29t bWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyog UHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxl bC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApA QCAtMTI1OSw2ICsxMjcwLDkgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmlu Z0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2Vu ZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0 cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNo cm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNr X2RhdGEucm9sbGJhY2tfZW5kX2xzbik7CiAKQEAgLTE0MTgsNiArMTQzMiw5IEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAl9CiAKKwkvKiBS ZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsK KwogCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMg dGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwpAQCAtMTk0NCw2ICsx OTYxLDEwIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJYnJl YWs7CiAJfQogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJaWYgKHRvcGxldmVsX3hh Y3QpCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJcmVzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9pbmZvKCk7CiB9CiAKQEAgLTIyNTMsNiArMjI3NCw5IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhh dCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2lu Z190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxh Zy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRf YWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X2luZm8oKTsKQEAgLTQzNTEsMjAgKzQzNzUsMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVj UHRyICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgp OwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJv bSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9J TlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygp OworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25p emF0aW9uICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0 aW9uLT5vaWQsIGZhbHNlKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikK LQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJ CSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9u LiBBYm9ydAotCQkJICogdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMg bWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9y dE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vy cm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25P bkVycm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBm bGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgw KTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC00Mzg5LDIwICs0NDIxLDI3IEBAIHN0YXJ0X2Fw cGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJ LyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJy b3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRT KCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigp OworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8q IFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBn c3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJ CQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQot CQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5n IGNoYW5nZXMuIEFib3J0IHRoZQotCQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRo ZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8K LQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3Jp cHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7 CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwot CQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRy eSh0cnVlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogfQpAQCAtNDY3OCwzOSArNDcxNywyMCBAQCBB cHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciBy ZWNvdmVyeSwgZGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0g KiBhbmQgZXhpdCBjbGVhbmx5LgorICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3 IHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4 aXQodm9pZCkKK0Rpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBF bWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0 byBhbiBpZGxlCi0JICogc3RhdGUKLQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRF cnJvclJlcG9ydCgpOwotCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JT dGF0ZSgpOwotCi0JUkVTVU1FX0lOVEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2Vy IGZhaWxlZCBkdXJpbmcgZWl0aGVyIHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwot CXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsCi0JCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRo ZSBzdWJzY3JpcHRpb24gKi8KIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVT dWJzY3JpcHRpb24oTXlTdWJzY3JpcHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CiAKLQkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBh bmQgZXhpdCAqLworCS8qIE5vdGlmeSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVk ICovCiAJZXJlcG9ydChMT0csCiAJCQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJl ZW4gZGlzYWJsZWQgYmVjYXVzZSBvZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24t Pm5hbWUpKTsKLQotCXByb2NfZXhpdCgwKTsKIH0KIAogLyoKQEAgLTUwMDMsMyArNTAyMyw3MSBA QCBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQogCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9f UEFSQUxMRUw7CiAJfQogfQorCisvKgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlwdGlv biBjYXRhbG9nLgorICoKKyAqIElmIHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJvdXQg dG8gZXhpdCB3aXRoIGFuIGVycm9yLiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRoZSB0 cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lkCitz ZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVsOworCUhl YXBUdXBsZQl0dXA7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxzW05h dHRzX3BnX3N1YnNjcmlwdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2NyaXB0 aW9uXTsKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwkvKiBGYXN0 IHBhdGggLSBpZiBubyBzdGF0ZSBjaGFuZ2UgdGhlbiBub3RoaW5nIHRvIGRvICovCisJaWYgKE15 U3Vic2NyaXB0aW9uLT5yZXRyeSA9PSByZXRyeSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRo IC0gc2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLworCWlmIChhbV9wYXJhbGxlbF9h cHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBzZXQgcmV0 cnkgaWYgbm8gYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAocmV0cnkgJiYg IXBhX2hhdmVfYWN0aXZlX3dvcmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rp b25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90 eCA9IHRydWU7CisJfQorCisJLyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBjYXRh bG9nICovCisJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9JRCwK KwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24gXCIl c1wiIGRvZXMgbm90IGV4aXN0IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1NoYXJl ZE9iamVjdChTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAwLAor CQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJbWVt c2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2UsIHNp emVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNlcykp OworCisJLyogU2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVw bGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVw bGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0 ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9mcmVl dHVwbGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRlZF90 eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBmNDU0 YjMxYzU4Li40OWY4MzVlZWRjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1NjAsOCArNDU2MCw5IEBAIGdl dFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwog CiAJLyoKLQkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJz a2lwbHNuIGluIHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMg dmFsdWUgbWF5IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZp ZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRo ZSBkdW1wIGFzIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25n ZXIgYmUKKwkgKiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywg InRhYmxlb2lkIik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCA1YjllNWEzOTlhLi5kM2IxNThmMGMwIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4LDExIEBAIENBVEFM T0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJF RF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEg d29ya2VyIGVycm9yIHNob3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0 byBiZSBkaXNhYmxlZCAqLwogCisJYm9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRy dWUgaWYgcHJldmlvdXMgY2hhbmdlIGZhaWxlZAorCQkJCQkJCQkJCQkgKiB0byBiZSBhcHBsaWVk IHdoaWxlIHRoZXJlIHdlcmUKKwkJCQkJCQkJCQkJICogYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBs eQorCQkJCQkJCQkJCQkgKiB3b3JrZXJzICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8q IHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3Ry aW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9U X05VTEw7CkBAIC0xMzEsNiArMTM2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJ Ym9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91 bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJv cgogCQkJCQkJCQkgKiBvY2N1cnMgKi8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYg cHJldmlvdXMgY2hhbmdlIGZhaWxlZCB0byBiZQorCQkJCQkJCQkgKiBhcHBsaWVkIHVzaW5nIGEg cGFyYWxsZWwgYXBwbHkgd29ya2VyICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0 aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBO YW1lIG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8q IFN5bmNocm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggODRjNTljMzVkNC4uZDM5YmIyZjllNCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTI5Nyw2ICsy OTcsOCBAQCBleHRlcm4gdm9pZCBwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIHBhX2luY3JlbWVudF9zdHJlYW1f YmxvY2soUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CiBleHRlcm4gdm9pZCBw YV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayhQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3 c2hhcmVkKTsKIAorZXh0ZXJuIGJvb2wgcGFfaGF2ZV9hY3RpdmVfd29ya2VyKHZvaWQpOworCiAj ZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICgod29ya2VyKS0+YXBwbHlfbGVh ZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQogCiBzdGF0aWMgaW5saW5lIGJvb2wKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDM4OTQxZmZjMDEuLjg5MGZhODhkMjkgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtODcsOCArODcsMTYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnKTsKIAogCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJbXkgJG9sZHBp ZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKTsKIAkkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAo YmluYXJ5ID0gb24pIik7CisJJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKKwkgICkKKwkgIG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKIAkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KIAkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz Ml9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCmluZGV4IDU5ZTdlNzUzNGYuLmIwZTdiNjcy MmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxs ZWxfY29uZmxpY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9w YXJhbGxlbF9jb25mbGljdC5wbApAQCAtMTAsNiArMTAsMjAgQEAgdXNlIFRlc3Q6Ok1vcmU7CiAK IG15ICRvZmZzZXQgPSAwOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRp c19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFy L0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5 cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBu b2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g J2xvZ2ljYWwnKTsKQEAgLTI0LDkgKzM4LDkgQEAgJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKIG15 ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNj cmliZXInKTsKICRub2RlX3N1YnNjcmliZXItPmluaXQ7CiAKLSMgQ2hlY2sgaWYgYW55IHN0cmVh bWluZyBjaHVua3MgYXJlIGFwcGxpZWQgdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4g V2UKLSMgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0 LCBzbyBidW1wIHVwIHRoZSBsb2cKLSMgdmVyYm9zaXR5LgorIyBDaGVjayBpZiBhbnkgc3RyZWFt aW5nIGNodW5rcyBhcmUgYXBwbGllZCB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor IyBBbmQgY2hlY2sgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmYWlsZWQgdG8gc3RhcnQu IFdlIGhhdmUgdG8gbG9vayBmb3IKKyMgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhh dCwgc28gYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KICRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKAogCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKIAlsb2dfbWluX21lc3NhZ2VzID0gZGVi dWcxCkBAIC0yNzksNiArMjkzLDU1IEBAICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CiBp cygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNl cmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKIAorIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJv bSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHJlLWFw cGx5IGEgZmFpbGVkIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbGVhZGVyIGFwcGx5 CisjIHdvcmtlciBhbmQgYXBwbHkgc3Vic2VxdWVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNp bmcgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlciBhZnRlciB0aGlzIHJldHJ5IHN1Y2NlZWRz LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVzdF90YWIoYSki KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CitJTlNFUlQgSU5UTyB0ZXN0 X3RhYiB2YWx1ZXMoMSk7CitDT01NSVQ7fSk7CisKKyMgQ2hlY2sgaWYgdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBpcyBub3Qgc3RhcnRlZCBiZWNhdXNlIHRoZSBhYm92ZQorIyB0cmFuc2FjdGlv biBmYWlsZWQgdG8gYmUgYXBwbGllZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygK Kwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgbm90 IHVzZWQgZm9yIHJldHJpZXMvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRl eCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIiKTsKKworIyBXYWl0IGZvciB0 aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3Jr ZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCisjIEFmdGVy IHN1Y2Nlc3NmdWxseSByZXRyeWluZyB0byBhcHBseSBhIGZhaWxlZCBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24sIGFwcGx5CisjIHRoZSBmb2xsb3dpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5n IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoNTAwMSwgMTAwMDApIHMoaSkiKTsKKworY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsIDEsICdDT01NSVQnKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDEwMDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXInKTsKKwogJG5vZGVfc3Vic2Ny aWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIAotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_008_OS0PR01MB5716E43EC7E3E8194EC3501A94E39OS0PR01MB5716jpnp_--